Compare commits
No commits in common. "main" and "v1.0.0" have entirely different histories.
@ -12,7 +12,3 @@ The [design document](/docs/design.md) contains the starting idea which was init
|
||||
## Todos
|
||||
|
||||
Todos are available [here](/docs/todos.md) which contain self-made tasks which should get done or are already done.
|
||||
|
||||
## Extra documentation
|
||||
|
||||
Extra documentation is available [here](/docs)
|
||||
|
@ -1,5 +0,0 @@
|
||||
# Assets
|
||||
|
||||
List of assets used in the project, all purchased.
|
||||
https://assetstore.unity.com/packages/2d/gui/icons/gui-megapack-101517
|
||||
https://magory.itch.io/ultimate-gem-collections
|
@ -1,24 +0,0 @@
|
||||
# How to add new content to the game
|
||||
|
||||
A small guide so other people also understand how to add content.
|
||||
|
||||
## Tower
|
||||
|
||||
1. Update Towers.json by adding to the end of the array.
|
||||
2. Update TowerType in Defintions.ts
|
||||
3. Based of the Tower.sprite value, add projectile folder with appropriate projectiles as .png.
|
||||
4. Based of the Tower.sprite value, add the tower sprite into towers folder as a .png.
|
||||
5. Add appropriate behaviour in Tower.ts (if statement in update).
|
||||
6. Add way to spawn via TowerTab.ts button.
|
||||
|
||||
## Creep
|
||||
|
||||
1. Update Creeps.json by adding to the end of the array.
|
||||
2. Update CreepType in Defintions.ts
|
||||
3. Based of the Creep.name value, add creep's walking animations to the same named subfolder in creeps folder.
|
||||
4. When using creeps in waves, reference them by their index in the CreepType enum.
|
||||
|
||||
## Gem
|
||||
|
||||
1. Update Gems.json by adding to the end of the array.
|
||||
2. Update GemType in Defintions.ts and make sure Gem.type is CaSe sensitively the same.
|
@ -1,44 +0,0 @@
|
||||
Generated by: `find ./src -name '*.ts' | xargs wc -l`
|
||||
92 ./src/main.ts
|
||||
1 ./src/vite-env.d.ts
|
||||
17 ./src/classes/GameUIConstants.ts
|
||||
217 ./src/classes/gui/TowerTab.ts
|
||||
375 ./src/classes/gui/TowerPanel.ts
|
||||
52 ./src/classes/gui/TextInput.ts
|
||||
211 ./src/classes/gui/ModalDialog.ts
|
||||
51 ./src/classes/gui/Sidebar.ts
|
||||
122 ./src/classes/gui/HighScoreDialog.ts
|
||||
70 ./src/classes/gui/Button.ts
|
||||
60 ./src/classes/gui/Gemsmith.ts
|
||||
154 ./src/classes/gui/EndGameDialog.ts
|
||||
220 ./src/classes/gui/GemTab.ts
|
||||
59 ./src/classes/gui/GamePausedDialog.ts
|
||||
36 ./src/classes/gui/MessageBox.ts
|
||||
205 ./src/classes/gui/Tooltip.ts
|
||||
133 ./src/classes/Definitions.ts
|
||||
77 ./src/classes/game/WaveManager.ts
|
||||
264 ./src/classes/game/Grid.ts
|
||||
51 ./src/classes/game/Gem.ts
|
||||
324 ./src/classes/game/TowerBehaviours.ts
|
||||
192 ./src/classes/game/Tower.ts
|
||||
180 ./src/classes/game/MissionStats.ts
|
||||
100 ./src/classes/game/AnimationManager.ts
|
||||
239 ./src/classes/game/Creep.ts
|
||||
47 ./src/classes/game/KeyboardManager.ts
|
||||
251 ./src/classes/game/Projectile.ts
|
||||
86 ./src/classes/game/NotificationManager.ts
|
||||
40 ./src/classes/game/DebrisManager.ts
|
||||
135 ./src/classes/game/TowerManager.ts
|
||||
71 ./src/classes/game/HighScoreManager.ts
|
||||
76 ./src/classes/GuiObject.ts
|
||||
209 ./src/classes/Assets.ts
|
||||
52 ./src/classes/GameObject.ts
|
||||
71 ./src/classes/Bastion.ts
|
||||
31 ./src/classes/Events.ts
|
||||
37 ./src/scenes/Scene.ts
|
||||
17 ./src/scenes/Settings.ts
|
||||
67 ./src/scenes/HowToPlay.ts
|
||||
59 ./src/scenes/Main.ts
|
||||
352 ./src/scenes/Game.ts
|
||||
27 ./src/scenes/MissionPicker.ts
|
||||
`5130 total`
|
@ -2,31 +2,4 @@
|
||||
|
||||
List of things to implement following the "release" of the minimum viable product (simple browser tower defense game).
|
||||
|
||||
## Creeps
|
||||
|
||||
- [x] Elemental resistances/attunement
|
||||
- [x] Proper animation via PNG sequence
|
||||
- [x] More variety in Creeps
|
||||
- [x] Health bar
|
||||
|
||||
## Towers
|
||||
|
||||
- [x] Extend projectile into seperate defintion + json file
|
||||
- [x] Make tower react with slotted gems
|
||||
- [x] Alter damage based on attunement from slotted gems
|
||||
- [x] Tower info on click
|
||||
- [x] Animate projectiles
|
||||
- [x] Better mouseover tracking when placing tower and showing radius
|
||||
- [x] Sell tower button
|
||||
|
||||
## Gems
|
||||
|
||||
- [x] Create Gem definitions
|
||||
- [x] Make gems affect towers
|
||||
|
||||
## Other
|
||||
|
||||
- [ ] Add sound effects
|
||||
- [x] Tutorial image/mission
|
||||
- [x] Pause menu
|
||||
- [x] Score screen when winning/losing map
|
||||
## WILL WRITE AFTER MVP IS DONE.
|
||||
|
16
index.html
@ -2,21 +2,11 @@
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<link rel="stylesheet" href="style.css" />
|
||||
<title>Bastion: The Watchers Lament</title>
|
||||
<meta property="og:title" content="Bastion: The Watchers Lament" />
|
||||
<meta
|
||||
property="og:description"
|
||||
content="A free, open source, browser based, tower defense game inspired by GemCraft: Frostborn Wrath. Playable NOW on PC!"
|
||||
/>
|
||||
<meta property="og:image" content="https://bastion.overflow.fun/favicon.png" />
|
||||
<meta property="og:url" content="https://bastion.overflow.fun" />
|
||||
<meta name="twitter:title" content="Bastion: The Watchers Lament" />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content="A free, open source, browser based, tower defense game inspired by GemCraft: Frostborn Wrath. Playable NOW on PC!"
|
||||
/>
|
||||
<link href="https://fonts.googleapis.com/css?family=Aclonica" rel="stylesheet" />
|
||||
<title>Bastion App</title>
|
||||
</head>
|
||||
<body>
|
||||
<script type="module" src="/src/main.ts"></script>
|
||||
|
584
package-lock.json
generated
@ -8,7 +8,6 @@
|
||||
"name": "bastion",
|
||||
"version": "0.0.0",
|
||||
"dependencies": {
|
||||
"pixi-spine": "^4.0.4",
|
||||
"pixi-viewport": "^6.0.3",
|
||||
"pixi.js": "^8.4.0"
|
||||
},
|
||||
@ -408,268 +407,12 @@
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/@pixi-spine/base": {
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@pixi-spine/base/-/base-4.0.3.tgz",
|
||||
"integrity": "sha512-0bunaWebaDswLFtYZ6whV+ZvgLQ7oANcvbPmIOoVpS/1pOY3Y/GAnWOFbgp3qt9Q/ntLYqNjGve6xq0IqpsTAA==",
|
||||
"peerDependencies": {
|
||||
"@pixi/core": "^7.0.0",
|
||||
"@pixi/display": "^7.0.0",
|
||||
"@pixi/graphics": "^7.0.0",
|
||||
"@pixi/mesh": "^7.0.0",
|
||||
"@pixi/mesh-extras": "^7.0.0",
|
||||
"@pixi/sprite": "^7.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@pixi-spine/loader-base": {
|
||||
"version": "4.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@pixi-spine/loader-base/-/loader-base-4.0.4.tgz",
|
||||
"integrity": "sha512-Grgu+PxiUpgYWpuMRr3h5jrN3ZTnwyXfu3HuYdFb6mbJTTMub4xBPALeui+O+tw0k9RNRAr99pUzu9Rc9XTbAw==",
|
||||
"peerDependencies": {
|
||||
"@pixi-spine/base": "^4.0.0",
|
||||
"@pixi/assets": " ^7.0.0",
|
||||
"@pixi/core": "^7.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@pixi-spine/loader-uni": {
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@pixi-spine/loader-uni/-/loader-uni-4.0.3.tgz",
|
||||
"integrity": "sha512-tfhTJrnuog8ObKbbiSG1wV/nIUc3O98WfwS6lCmewaupoMIKF0ujg21MCqXUXJvljQJzU9tbURI+DWu4w9dnnA==",
|
||||
"peerDependencies": {
|
||||
"@pixi-spine/base": "^4.0.0",
|
||||
"@pixi-spine/loader-base": "^4.0.0",
|
||||
"@pixi-spine/runtime-3.7": "^4.0.0",
|
||||
"@pixi-spine/runtime-3.8": "^4.0.0",
|
||||
"@pixi-spine/runtime-4.1": "^4.0.0",
|
||||
"@pixi/assets": " ^7.0.0",
|
||||
"@pixi/core": "^7.0.0",
|
||||
"@pixi/display": "^7.0.0",
|
||||
"@pixi/graphics": "^7.0.0",
|
||||
"@pixi/mesh": "^7.0.0",
|
||||
"@pixi/mesh-extras": "^7.0.0",
|
||||
"@pixi/sprite": "^7.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@pixi-spine/runtime-3.7": {
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@pixi-spine/runtime-3.7/-/runtime-3.7-4.0.3.tgz",
|
||||
"integrity": "sha512-zuopKtSqjRc37wjW5xJ64j9DbiBB7rkPMFeldeWBPCbfZiCcFcwSZwZnrcgC+f4HIGo0NeviAvJGM8Hcf3AyeA==",
|
||||
"license": "SEE SPINE-LICENSE",
|
||||
"peerDependencies": {
|
||||
"@pixi-spine/base": "^4.0.0",
|
||||
"@pixi/core": "^7.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@pixi-spine/runtime-3.8": {
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@pixi-spine/runtime-3.8/-/runtime-3.8-4.0.3.tgz",
|
||||
"integrity": "sha512-lIhb4jOTon+FVYLO9AIgcB6jf9hC+RLEn8PesaDRibDocQ1htVCkEIhCIU3Mc00fuqIby7lMBsINeS/Th0q3bw==",
|
||||
"license": "SEE SPINE-LICENSE",
|
||||
"peerDependencies": {
|
||||
"@pixi-spine/base": "^4.0.0",
|
||||
"@pixi/core": "^7.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@pixi-spine/runtime-4.0": {
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@pixi-spine/runtime-4.0/-/runtime-4.0-4.0.3.tgz",
|
||||
"integrity": "sha512-2Y8qhxRkg/yH/9VylGsRVAd5W+dXVPhHTjFk0RR9wEUzTCkdZ17pE+56s2nESi2X3sYNKkz8FowfaqIvXnVGxw==",
|
||||
"license": "SEE SPINE-LICENSE",
|
||||
"peerDependencies": {
|
||||
"@pixi-spine/base": "^4.0.0",
|
||||
"@pixi/core": "^7.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@pixi-spine/runtime-4.1": {
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@pixi-spine/runtime-4.1/-/runtime-4.1-4.0.3.tgz",
|
||||
"integrity": "sha512-jK433snCQMC4FUPiDgyIcxhiatvRNSxqgs0CgHjjQ0l8GlY6gPpkkdThQ6GsFNme1SUZ4uvnWwawXFIGjW1IpQ==",
|
||||
"license": "SEE SPINE-LICENSE",
|
||||
"peerDependencies": {
|
||||
"@pixi-spine/base": "^4.0.0",
|
||||
"@pixi/core": "^7.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@pixi/assets": {
|
||||
"version": "7.4.2",
|
||||
"resolved": "https://registry.npmjs.org/@pixi/assets/-/assets-7.4.2.tgz",
|
||||
"integrity": "sha512-anxho59H9egZwoaEdM5aLvYyxoz6NCy3CaQIvNHD1bbGg8L16Ih0e26QSBR5fu53jl8OjT6M7s+p6n7uu4+fGA==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@types/css-font-loading-module": "^0.0.12"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@pixi/core": "7.4.2"
|
||||
}
|
||||
},
|
||||
"node_modules/@pixi/color": {
|
||||
"version": "7.4.2",
|
||||
"resolved": "https://registry.npmjs.org/@pixi/color/-/color-7.4.2.tgz",
|
||||
"integrity": "sha512-av1LOvhHsiaW8+T4n/FgnOKHby55/w7VcA1HzPIHRBtEcsmxvSCDanT1HU2LslNhrxLPzyVx18nlmalOyt5OBg==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@pixi/colord": "^2.9.6"
|
||||
}
|
||||
},
|
||||
"node_modules/@pixi/colord": {
|
||||
"version": "2.9.6",
|
||||
"resolved": "https://registry.npmjs.org/@pixi/colord/-/colord-2.9.6.tgz",
|
||||
"integrity": "sha512-nezytU2pw587fQstUu1AsJZDVEynjskwOL+kibwcdxsMBFqPsFFNA7xl0ii/gXuDi6M0xj3mfRJj8pBSc2jCfA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@pixi/constants": {
|
||||
"version": "7.4.2",
|
||||
"resolved": "https://registry.npmjs.org/@pixi/constants/-/constants-7.4.2.tgz",
|
||||
"integrity": "sha512-N9vn6Wpz5WIQg7ugUg2+SdqD2u2+NM0QthE8YzLJ4tLH2Iz+/TrnPKUJzeyIqbg3sxJG5ZpGGPiacqIBpy1KyA==",
|
||||
"license": "MIT",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/@pixi/core": {
|
||||
"version": "7.4.2",
|
||||
"resolved": "https://registry.npmjs.org/@pixi/core/-/core-7.4.2.tgz",
|
||||
"integrity": "sha512-UbMtgSEnyCOFPzbE6ThB9qopXxbZ5GCof2ArB4FXOC5Xi/83MOIIYg5kf5M8689C5HJMhg2SrJu3xLKppF+CMg==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@pixi/color": "7.4.2",
|
||||
"@pixi/constants": "7.4.2",
|
||||
"@pixi/extensions": "7.4.2",
|
||||
"@pixi/math": "7.4.2",
|
||||
"@pixi/runner": "7.4.2",
|
||||
"@pixi/settings": "7.4.2",
|
||||
"@pixi/ticker": "7.4.2",
|
||||
"@pixi/utils": "7.4.2"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/pixijs"
|
||||
}
|
||||
},
|
||||
"node_modules/@pixi/display": {
|
||||
"version": "7.4.2",
|
||||
"resolved": "https://registry.npmjs.org/@pixi/display/-/display-7.4.2.tgz",
|
||||
"integrity": "sha512-DaD0J7gIlNlzO0Fdlby/0OH+tB5LtCY6rgFeCBKVDnzmn8wKW3zYZRenWBSFJ0Psx6vLqXYkSIM/rcokaKviIw==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"peerDependencies": {
|
||||
"@pixi/core": "7.4.2"
|
||||
}
|
||||
},
|
||||
"node_modules/@pixi/extensions": {
|
||||
"version": "7.4.2",
|
||||
"resolved": "https://registry.npmjs.org/@pixi/extensions/-/extensions-7.4.2.tgz",
|
||||
"integrity": "sha512-Hmx2+O0yZ8XIvgomHM9GZEGcy9S9Dd8flmtOK5Aa3fXs/8v7xD08+ANQpN9ZqWU2Xs+C6UBlpqlt2BWALvKKKA==",
|
||||
"license": "MIT",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/@pixi/graphics": {
|
||||
"version": "7.4.2",
|
||||
"resolved": "https://registry.npmjs.org/@pixi/graphics/-/graphics-7.4.2.tgz",
|
||||
"integrity": "sha512-jH4/Tum2RqWzHGzvlwEr7HIVduoLO57Ze705N2zQPkUD57TInn5911aGUeoua7f/wK8cTLGzgB9BzSo2kTdcHw==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"peerDependencies": {
|
||||
"@pixi/core": "7.4.2",
|
||||
"@pixi/display": "7.4.2",
|
||||
"@pixi/sprite": "7.4.2"
|
||||
}
|
||||
},
|
||||
"node_modules/@pixi/math": {
|
||||
"version": "7.4.2",
|
||||
"resolved": "https://registry.npmjs.org/@pixi/math/-/math-7.4.2.tgz",
|
||||
"integrity": "sha512-7jHmCQoYk6e0rfSKjdNFOPl0wCcdgoraxgteXJTTHv3r0bMNx2pHD9FJ0VvocEUG7XHfj55O3+u7yItOAx0JaQ==",
|
||||
"license": "MIT",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/@pixi/mesh": {
|
||||
"version": "7.4.2",
|
||||
"resolved": "https://registry.npmjs.org/@pixi/mesh/-/mesh-7.4.2.tgz",
|
||||
"integrity": "sha512-mEkKyQvvMrYXC3pahvH5WBIKtrtB63WixRr91ANFI7zXD+ESG6Ap6XtxMCJmXDQPwBDNk7SWVMiCflYuchG7kA==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"peerDependencies": {
|
||||
"@pixi/core": "7.4.2",
|
||||
"@pixi/display": "7.4.2"
|
||||
}
|
||||
},
|
||||
"node_modules/@pixi/mesh-extras": {
|
||||
"version": "7.4.2",
|
||||
"resolved": "https://registry.npmjs.org/@pixi/mesh-extras/-/mesh-extras-7.4.2.tgz",
|
||||
"integrity": "sha512-vNR/7wjxjs7sv9fGoKkHyU91ZAD+7EnMHBS5F3CVISlOIFxLi96NNZCB81oUIdky/90pHw40johd/4izR5zTyw==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"peerDependencies": {
|
||||
"@pixi/core": "7.4.2",
|
||||
"@pixi/mesh": "7.4.2"
|
||||
}
|
||||
},
|
||||
"node_modules/@pixi/runner": {
|
||||
"version": "7.4.2",
|
||||
"resolved": "https://registry.npmjs.org/@pixi/runner/-/runner-7.4.2.tgz",
|
||||
"integrity": "sha512-LPBpwym4vdyyDY5ucF4INQccaGyxztERyLTY1YN6aqJyyMmnc7iqXlIKt+a0euMBtNoLoxy6MWMvIuZj0JfFPA==",
|
||||
"license": "MIT",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/@pixi/settings": {
|
||||
"version": "7.4.2",
|
||||
"resolved": "https://registry.npmjs.org/@pixi/settings/-/settings-7.4.2.tgz",
|
||||
"integrity": "sha512-pMN+L6aWgvUbwhFIL/BTHKe2ShYGPZ8h9wlVBnFHMtUcJcFLMF1B3lzuvCayZRepOphs6RY0TqvnDvVb585JhQ==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@pixi/constants": "7.4.2",
|
||||
"@types/css-font-loading-module": "^0.0.12",
|
||||
"ismobilejs": "^1.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@pixi/sprite": {
|
||||
"version": "7.4.2",
|
||||
"resolved": "https://registry.npmjs.org/@pixi/sprite/-/sprite-7.4.2.tgz",
|
||||
"integrity": "sha512-Ccf/OVQsB+HQV0Fyf5lwD+jk1jeU7uSIqEjbxenNNssmEdB7S5qlkTBV2EJTHT83+T6Z9OMOHsreJZerydpjeg==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"peerDependencies": {
|
||||
"@pixi/core": "7.4.2",
|
||||
"@pixi/display": "7.4.2"
|
||||
}
|
||||
},
|
||||
"node_modules/@pixi/ticker": {
|
||||
"version": "7.4.2",
|
||||
"resolved": "https://registry.npmjs.org/@pixi/ticker/-/ticker-7.4.2.tgz",
|
||||
"integrity": "sha512-cAvxCh/KI6IW4m3tp2b+GQIf+DoSj9NNmPJmsOeEJ7LzvruG8Ps7SKI6CdjQob5WbceL1apBTDbqZ/f77hFDiQ==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@pixi/extensions": "7.4.2",
|
||||
"@pixi/settings": "7.4.2",
|
||||
"@pixi/utils": "7.4.2"
|
||||
}
|
||||
},
|
||||
"node_modules/@pixi/utils": {
|
||||
"version": "7.4.2",
|
||||
"resolved": "https://registry.npmjs.org/@pixi/utils/-/utils-7.4.2.tgz",
|
||||
"integrity": "sha512-aU/itcyMC4TxFbmdngmak6ey4kC5c16Y5ntIYob9QnjNAfD/7GTsYIBnP6FqEAyO1eq0MjkAALxdONuay1BG3g==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@pixi/color": "7.4.2",
|
||||
"@pixi/constants": "7.4.2",
|
||||
"@pixi/settings": "7.4.2",
|
||||
"@types/earcut": "^2.1.0",
|
||||
"earcut": "^2.2.4",
|
||||
"eventemitter3": "^4.0.0",
|
||||
"url": "^0.11.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@pixi/utils/node_modules/eventemitter3": {
|
||||
"version": "4.0.7",
|
||||
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
|
||||
"integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
|
||||
"license": "MIT",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/@rollup/rollup-android-arm-eabi": {
|
||||
"version": "4.21.3",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.3.tgz",
|
||||
@ -928,91 +671,12 @@
|
||||
"node": ">=10.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/call-bind-apply-helpers": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz",
|
||||
"integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"es-errors": "^1.3.0",
|
||||
"function-bind": "^1.1.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/call-bound": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz",
|
||||
"integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"call-bind-apply-helpers": "^1.0.1",
|
||||
"get-intrinsic": "^1.2.6"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/dunder-proto": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
|
||||
"integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"call-bind-apply-helpers": "^1.0.1",
|
||||
"es-errors": "^1.3.0",
|
||||
"gopd": "^1.2.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/earcut": {
|
||||
"version": "2.2.4",
|
||||
"resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz",
|
||||
"integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==",
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/es-define-property": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
|
||||
"integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/es-errors": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
|
||||
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/es-object-atoms": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
|
||||
"integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"es-errors": "^1.3.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/esbuild": {
|
||||
"version": "0.21.5",
|
||||
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
|
||||
@ -1073,110 +737,12 @@
|
||||
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/function-bind": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
|
||||
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/get-intrinsic": {
|
||||
"version": "1.2.7",
|
||||
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz",
|
||||
"integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"call-bind-apply-helpers": "^1.0.1",
|
||||
"es-define-property": "^1.0.1",
|
||||
"es-errors": "^1.3.0",
|
||||
"es-object-atoms": "^1.0.0",
|
||||
"function-bind": "^1.1.2",
|
||||
"get-proto": "^1.0.0",
|
||||
"gopd": "^1.2.0",
|
||||
"has-symbols": "^1.1.0",
|
||||
"hasown": "^2.0.2",
|
||||
"math-intrinsics": "^1.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/get-proto": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
|
||||
"integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"dunder-proto": "^1.0.1",
|
||||
"es-object-atoms": "^1.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/gopd": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
|
||||
"integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/has-symbols": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
|
||||
"integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/hasown": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
|
||||
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"function-bind": "^1.1.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/ismobilejs": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ismobilejs/-/ismobilejs-1.1.1.tgz",
|
||||
"integrity": "sha512-VaFW53yt8QO61k2WJui0dHf4SlL8lxBofUuUmwBo0ljPk0Drz2TiuDW4jo3wDcv41qy/SxrJ+VAzJ/qYqsmzRw==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/math-intrinsics": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
|
||||
"integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/nanoid": {
|
||||
"version": "3.3.7",
|
||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
|
||||
@ -1196,19 +762,6 @@
|
||||
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/object-inspect": {
|
||||
"version": "1.13.4",
|
||||
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
|
||||
"integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/parse-svg-path": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/parse-svg-path/-/parse-svg-path-0.1.2.tgz",
|
||||
@ -1222,30 +775,6 @@
|
||||
"dev": true,
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/pixi-spine": {
|
||||
"version": "4.0.4",
|
||||
"resolved": "https://registry.npmjs.org/pixi-spine/-/pixi-spine-4.0.4.tgz",
|
||||
"integrity": "sha512-XRq1yARVoi4av7RXnd9+P37SWI9+e4/f5yTScZPJGB+sY5VcRYN6BYkBQ+y8nUKI1aJIjlms9z+pGxqikm+eFQ==",
|
||||
"license": "SEE SPINE-LICENSE",
|
||||
"dependencies": {
|
||||
"@pixi-spine/base": "^4.0.3",
|
||||
"@pixi-spine/loader-base": "^4.0.4",
|
||||
"@pixi-spine/loader-uni": "^4.0.3",
|
||||
"@pixi-spine/runtime-3.7": "^4.0.3",
|
||||
"@pixi-spine/runtime-3.8": "^4.0.3",
|
||||
"@pixi-spine/runtime-4.0": "^4.0.3",
|
||||
"@pixi-spine/runtime-4.1": "^4.0.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@pixi/assets": "^7.0.0",
|
||||
"@pixi/core": "^7.0.0",
|
||||
"@pixi/display": "^7.0.0",
|
||||
"@pixi/graphics": "^7.0.0",
|
||||
"@pixi/mesh": "^7.0.0",
|
||||
"@pixi/mesh-extras": "^7.0.0",
|
||||
"@pixi/sprite": "^7.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/pixi-viewport": {
|
||||
"version": "6.0.3",
|
||||
"resolved": "https://registry.npmjs.org/pixi-viewport/-/pixi-viewport-6.0.3.tgz",
|
||||
@ -1301,29 +830,6 @@
|
||||
"node": "^10 || ^12 || >=14"
|
||||
}
|
||||
},
|
||||
"node_modules/punycode": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
|
||||
"integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
|
||||
"license": "MIT",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/qs": {
|
||||
"version": "6.14.0",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz",
|
||||
"integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==",
|
||||
"license": "BSD-3-Clause",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"side-channel": "^1.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.6"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/rollup": {
|
||||
"version": "4.21.3",
|
||||
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.3.tgz",
|
||||
@ -1360,82 +866,6 @@
|
||||
"fsevents": "~2.3.2"
|
||||
}
|
||||
},
|
||||
"node_modules/side-channel": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
|
||||
"integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"es-errors": "^1.3.0",
|
||||
"object-inspect": "^1.13.3",
|
||||
"side-channel-list": "^1.0.0",
|
||||
"side-channel-map": "^1.0.1",
|
||||
"side-channel-weakmap": "^1.0.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/side-channel-list": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
|
||||
"integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"es-errors": "^1.3.0",
|
||||
"object-inspect": "^1.13.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/side-channel-map": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
|
||||
"integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"call-bound": "^1.0.2",
|
||||
"es-errors": "^1.3.0",
|
||||
"get-intrinsic": "^1.2.5",
|
||||
"object-inspect": "^1.13.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/side-channel-weakmap": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
|
||||
"integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"call-bound": "^1.0.2",
|
||||
"es-errors": "^1.3.0",
|
||||
"get-intrinsic": "^1.2.5",
|
||||
"object-inspect": "^1.13.3",
|
||||
"side-channel-map": "^1.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/source-map-js": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
|
||||
@ -1460,20 +890,6 @@
|
||||
"node": ">=14.17"
|
||||
}
|
||||
},
|
||||
"node_modules/url": {
|
||||
"version": "0.11.4",
|
||||
"resolved": "https://registry.npmjs.org/url/-/url-0.11.4.tgz",
|
||||
"integrity": "sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"punycode": "^1.4.1",
|
||||
"qs": "^6.12.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/vite": {
|
||||
"version": "5.4.5",
|
||||
"resolved": "https://registry.npmjs.org/vite/-/vite-5.4.5.tgz",
|
||||
|
@ -4,7 +4,7 @@
|
||||
"version": "0.0.0",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite --host",
|
||||
"dev": "vite",
|
||||
"build": "tsc && vite build",
|
||||
"preview": "vite preview"
|
||||
},
|
||||
@ -13,7 +13,6 @@
|
||||
"vite": "^5.4.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"pixi-spine": "^4.0.4",
|
||||
"pixi-viewport": "^6.0.3",
|
||||
"pixi.js": "^8.4.0"
|
||||
}
|
||||
|
@ -1,25 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<map version="1.10" tiledversion="1.11.2" orientation="orthogonal" renderorder="right-down" width="25" height="17" tilewidth="64" tileheight="64" infinite="0" nextlayerid="2" nextobjectid="1">
|
||||
<tileset firstgid="1" source="../Tileset.tsx"/>
|
||||
<layer id="1" name="Tile Layer 1" width="25" height="17">
|
||||
<map version="1.10" tiledversion="1.11.0" orientation="orthogonal" renderorder="right-down" width="30" height="17" tilewidth="64" tileheight="64" infinite="0" nextlayerid="2" nextobjectid="1">
|
||||
<tileset firstgid="1" source="Tileset.tsx"/>
|
||||
<layer id="1" name="Tile Layer 1" width="30" height="17">
|
||||
<data encoding="csv">
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
4,4,4,4,4,4,4,4,4,4,4,4,4,5,15,15,15,15,15,15,15,15,15,15,15,
|
||||
18,18,18,18,18,18,18,18,18,18,18,18,18,19,15,15,15,15,15,3,4,4,4,4,4,
|
||||
32,32,32,32,32,32,32,32,32,32,32,7,18,19,15,15,15,15,15,17,18,18,18,18,18,
|
||||
15,15,15,15,15,15,15,15,15,15,15,17,18,19,15,15,15,15,15,17,18,6,32,32,32,
|
||||
15,15,15,15,15,15,15,15,15,15,15,17,18,19,15,15,15,15,15,17,18,19,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,17,18,19,15,15,15,15,15,17,18,19,15,15,15,
|
||||
15,15,3,4,4,4,4,4,4,4,4,21,18,19,15,15,15,15,15,17,18,19,15,15,15,
|
||||
15,15,17,18,18,18,18,18,18,18,18,18,18,19,15,15,15,15,15,17,18,19,15,15,15,
|
||||
15,15,17,18,6,32,32,32,32,32,32,32,32,33,15,15,15,15,15,17,18,19,15,15,15,
|
||||
15,15,17,18,19,15,15,15,15,15,15,15,15,15,15,15,15,15,15,17,18,19,15,15,15,
|
||||
15,15,17,18,20,4,4,4,4,4,4,4,4,4,4,4,4,4,4,21,18,19,15,15,15,
|
||||
15,15,17,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,19,15,15,15,
|
||||
15,15,31,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,33,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
4,4,4,4,4,4,4,4,4,4,4,4,4,5,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
18,18,18,18,18,18,18,18,18,18,18,18,18,19,15,15,15,15,15,3,4,4,4,4,4,4,4,4,4,4,
|
||||
32,32,32,32,32,32,32,32,32,32,32,7,18,19,15,15,15,15,15,17,18,18,18,18,18,18,18,18,18,18,
|
||||
15,15,15,15,15,15,15,15,15,15,15,17,18,19,15,15,15,15,15,17,18,6,32,32,32,32,32,32,32,32,
|
||||
15,15,15,15,15,15,15,15,15,15,15,17,18,19,15,15,15,15,15,17,18,19,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,17,18,19,15,15,15,15,15,17,18,19,15,15,15,15,15,15,15,15,
|
||||
15,15,3,4,4,4,4,4,4,4,4,21,18,19,15,15,15,15,15,17,18,19,15,15,15,15,15,15,15,15,
|
||||
15,15,17,18,18,18,18,18,18,18,18,18,18,19,15,15,15,15,15,17,18,19,15,15,15,15,15,15,15,15,
|
||||
15,15,17,18,6,32,32,32,32,32,32,32,32,33,15,15,15,15,15,17,18,19,15,15,15,15,15,15,15,15,
|
||||
15,15,17,18,19,15,15,15,15,15,15,15,15,15,15,15,15,15,15,17,18,19,15,15,15,15,15,15,15,15,
|
||||
15,15,17,18,20,4,4,4,4,4,4,4,4,4,4,4,4,4,4,21,18,19,15,15,15,15,15,15,15,15,
|
||||
15,15,17,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,19,15,15,15,15,15,15,15,15,
|
||||
15,15,31,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,33,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15
|
||||
</data>
|
||||
</layer>
|
||||
</map>
|
Before Width: | Height: | Size: 143 KiB |
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<tileset version="1.10" tiledversion="1.11.0" name="TiledTDThree64" tilewidth="64" tileheight="64" tilecount="140" columns="14">
|
||||
<image source="./TiledTDThree64.png" width="896" height="640"/>
|
||||
<image source="../../../../dumping/tiles/TiledTDThree64.png" width="896" height="640"/>
|
||||
</tileset>
|
||||
|
14
public/assets/CreepStats.json
Normal file
@ -0,0 +1,14 @@
|
||||
[
|
||||
{
|
||||
"health": 2,
|
||||
"speed": 0.04,
|
||||
"special": null,
|
||||
"resistance": {
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
}
|
||||
}
|
||||
]
|
15
public/assets/Towers.json
Normal file
@ -0,0 +1,15 @@
|
||||
[
|
||||
{
|
||||
"name": "Basic Tower",
|
||||
"behaviour": "BasicTowerBehaviour",
|
||||
"sprite": "basic_tower",
|
||||
"description": "The building block of society, nothing more basic exists.",
|
||||
"stats": {
|
||||
"damage": 2,
|
||||
"cooldown": 60,
|
||||
"gemSlotsAmount": 2,
|
||||
"cost": 100,
|
||||
"range": 3
|
||||
}
|
||||
}
|
||||
]
|
BIN
public/assets/creeps/basic.jpg
Normal file
After Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 94 KiB |
Before Width: | Height: | Size: 82 KiB |
Before Width: | Height: | Size: 88 KiB |
@ -1,20 +0,0 @@
|
||||
|
||||
const fs = require('fs');
|
||||
const { exec, execSync } = require('child_process');
|
||||
let dir = fs.readdirSync('.');
|
||||
// dir.forEach((item) => {
|
||||
// const itemPath = `./${item}`;
|
||||
// if (fs.lstatSync(itemPath).isDirectory()) {
|
||||
// let subDir = fs.readdirSync(itemPath);
|
||||
// subDir.forEach(async (subItem) => {
|
||||
// const subItemPath = `${itemPath}/${subItem}`;
|
||||
// if (fs.lstatSync(subItemPath).isFile() && subItem.endsWith('.png')) {
|
||||
// const outputFilePath = `${itemPath}/${subItem.replace('.png', 's.png')}`;
|
||||
// await execSync(`convert -resize 128x128 -quality 80 ${subItemPath} ${outputFilePath}`);
|
||||
// fs.unlinkSync(subItemPath);
|
||||
// fs.renameSync(outputFilePath, subItemPath);
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
// });
|
||||
// Disabled for now, dont need to optimize assets.
|
Before Width: | Height: | Size: 79 KiB |
Before Width: | Height: | Size: 79 KiB |
Before Width: | Height: | Size: 82 KiB |
Before Width: | Height: | Size: 92 KiB |
Before Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 97 KiB |
Before Width: | Height: | Size: 7.3 KiB |
Before Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 6.9 KiB |
Before Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 52 KiB |
BIN
public/assets/gui/background_01.png
Executable file
After Width: | Height: | Size: 281 KiB |
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 244 KiB |
BIN
public/assets/gui/banner_02.png
Executable file
After Width: | Height: | Size: 61 KiB |
Before Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 9.0 KiB |
Before Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 70 KiB |
Before Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 3.1 KiB |
BIN
public/assets/gui/gui_01_button_01.png
Executable file
After Width: | Height: | Size: 49 KiB |
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 7.8 KiB |
Before Width: | Height: | Size: 7.6 KiB |
Before Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 9.7 KiB |
Before Width: | Height: | Size: 6.5 KiB |
Before Width: | Height: | Size: 7.0 KiB |
Before Width: | Height: | Size: 5.6 KiB |
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 112 KiB |
Before Width: | Height: | Size: 851 KiB |
BIN
public/assets/gui/shield_01.png
Executable file
After Width: | Height: | Size: 38 KiB |
BIN
public/assets/gui/shield_02.png
Executable file
After Width: | Height: | Size: 226 KiB |
BIN
public/assets/gui/star.png
Executable file
After Width: | Height: | Size: 69 KiB |
BIN
public/assets/gui/star_empty.png
Executable file
After Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 28 KiB |
@ -1,174 +0,0 @@
|
||||
[
|
||||
{
|
||||
"name": "basic",
|
||||
"sprite": "wood",
|
||||
"tint": "0xffffff",
|
||||
"textures": [],
|
||||
"textureArrayLength": 12,
|
||||
"stats": {
|
||||
"health": 2,
|
||||
"speed": 3,
|
||||
"special": null,
|
||||
"resistance": {
|
||||
"physical": 0.05,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "quick",
|
||||
"sprite": "zombie",
|
||||
"tint": "0xffffff",
|
||||
"textures": [],
|
||||
"textureArrayLength": 8,
|
||||
"stats": {
|
||||
"health": 1,
|
||||
"speed": 5,
|
||||
"special": null,
|
||||
"resistance": {
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "tank",
|
||||
"sprite": "skeleton",
|
||||
"tint": "0xffffff",
|
||||
"textures": [],
|
||||
"textureArrayLength": 12,
|
||||
"stats": {
|
||||
"health": 5,
|
||||
"speed": 2,
|
||||
"special": null,
|
||||
"resistance": {
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "cloaker",
|
||||
"sprite": "hood",
|
||||
"tint": "0xffffff",
|
||||
"textures": [],
|
||||
"textureArrayLength": 12,
|
||||
"stats": {
|
||||
"health": 7,
|
||||
"speed": 3,
|
||||
"special": null,
|
||||
"resistance": {
|
||||
"physical": 0,
|
||||
"divine": 1,
|
||||
"fire": 1,
|
||||
"ice": 1,
|
||||
"frostfire": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "demon",
|
||||
"sprite": "demon",
|
||||
"tint": "0xffffff",
|
||||
"textures": [],
|
||||
"textureArrayLength": 8,
|
||||
"stats": {
|
||||
"health": 5,
|
||||
"speed": 3,
|
||||
"special": null,
|
||||
"resistance": {
|
||||
"physical": 1,
|
||||
"divine": -0.25,
|
||||
"fire": 1,
|
||||
"ice": 1,
|
||||
"frostfire": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "maker",
|
||||
"sprite": "pumpkin",
|
||||
"tint": "0xffffff",
|
||||
"textures": [],
|
||||
"textureArrayLength": 11,
|
||||
"stats": {
|
||||
"health": 5,
|
||||
"speed": 3,
|
||||
"special": null,
|
||||
"resistance": {
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"name": "monster",
|
||||
"sprite": "green",
|
||||
"tint": "0xffffff",
|
||||
"textures": [],
|
||||
"textureArrayLength": 12,
|
||||
"stats": {
|
||||
"health": 30,
|
||||
"speed": 1,
|
||||
"special": null,
|
||||
"resistance": {
|
||||
"physical": 0.05,
|
||||
"divine": 0.05,
|
||||
"fire": -0.25,
|
||||
"ice": 0.05,
|
||||
"frostfire": 0.05
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "remaker",
|
||||
"sprite": "orange",
|
||||
"tint": "0xffffff",
|
||||
"textures": [],
|
||||
"textureArrayLength": 12,
|
||||
"stats": {
|
||||
"health": 2,
|
||||
"speed": 3,
|
||||
"special": null,
|
||||
"resistance": {
|
||||
"physical": 0.05,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "elite",
|
||||
"sprite": "phood",
|
||||
"tint": "0xffffff",
|
||||
"textures": [],
|
||||
"textureArrayLength": 12,
|
||||
"stats": {
|
||||
"health": 2,
|
||||
"speed": 3,
|
||||
"special": null,
|
||||
"resistance": {
|
||||
"physical": 0.05,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
@ -1,601 +0,0 @@
|
||||
[
|
||||
{
|
||||
"name": "Fire Gem",
|
||||
"description": "Forged from molten lava, the Fire Gem imbues your tower's attacks and add extra fire damage. Well researched and common.",
|
||||
"color": "red",
|
||||
"type": "Fire",
|
||||
"totalLevels": 9,
|
||||
"textures": [],
|
||||
"cantCombineWith": [],
|
||||
"specialCombine": [],
|
||||
"initialGemValue": 75,
|
||||
"genericImprovements": [
|
||||
{
|
||||
"damageUp": 1,
|
||||
"attackSpeedUp": 0,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 0,
|
||||
"gemValueUp": 100
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 0,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
"gemValueUp": 150
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 0,
|
||||
"rangeUp": 2,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 0,
|
||||
"gemValueUp": 250
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 0,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
"gemValueUp": 400
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 0,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 0,
|
||||
"gemValueUp": 650
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 100,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
"gemValueUp": 750
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 0,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 0,
|
||||
"gemValueUp": 900
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 0,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
"gemValueUp": 1000
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 250,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
"gemValueUp": 1200
|
||||
}
|
||||
],
|
||||
"gemResistanceModifications": [
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"fire": 0.05,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"fire": 0.1,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"fire": 0.15,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"fire": 0.2,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"fire": 0.25,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"fire": 0.3,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"fire": 0.35,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"fire": 0.4,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"fire": 0.45,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Yeti Gem",
|
||||
"description": "Crafted from the essence of the frozen bears, the Yeti Gem enhances your tower's attacks with the chilling power of ice. It gives ice damage and is known for its rarity.",
|
||||
"color": "#32e4fc",
|
||||
"type": "Yeti",
|
||||
"totalLevels": 8,
|
||||
"textures": [],
|
||||
"cantCombineWith": [],
|
||||
"specialCombine": [],
|
||||
"initialGemValue": 80,
|
||||
"genericImprovements": [
|
||||
{
|
||||
"damageUp": 1,
|
||||
"attackSpeedUp": 0,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 0,
|
||||
"gemValueUp": 100
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 0,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
"gemValueUp": 150
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 0,
|
||||
"rangeUp": 2,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 0,
|
||||
"gemValueUp": 250
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 0,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
"gemValueUp": 400
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 0,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 0,
|
||||
"gemValueUp": 650
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 0,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
"gemValueUp": 750
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 0,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 0,
|
||||
"gemValueUp": 900
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 100,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
"gemValueUp": 1000
|
||||
}
|
||||
],
|
||||
"gemResistanceModifications": [
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0.05,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0.1,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0.15,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0.2,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0.25,
|
||||
"frostfire": 0.1
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0.3,
|
||||
"frostfire": 0.1
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0.35,
|
||||
"frostfire": 0.2
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0.4,
|
||||
"frostfire": 0.25
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Titalium Gem",
|
||||
"description": "Created from distilled creep eyes, the Titalium gem is known for boosting tower range, at the sacrifice for other stats.",
|
||||
"color": "pink",
|
||||
"type": "Titalium",
|
||||
"totalLevels": 7,
|
||||
"textures": [],
|
||||
"cantCombineWith": [],
|
||||
"specialCombine": [],
|
||||
"initialGemValue": 100,
|
||||
"genericImprovements": [
|
||||
{
|
||||
"damageUp": 1,
|
||||
"attackSpeedUp": 0,
|
||||
"rangeUp": 1,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 0,
|
||||
"gemValueUp": 200
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 0,
|
||||
"rangeUp": 1,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
"gemValueUp": 350
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 0,
|
||||
"rangeUp": 1,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 2,
|
||||
"gemValueUp": 450
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 200,
|
||||
"rangeUp": 1,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
"gemValueUp": 600
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 0,
|
||||
"rangeUp": 1,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 0,
|
||||
"gemValueUp": 850
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 0,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 0,
|
||||
"gemValueUp": 900
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 0,
|
||||
"rangeUp": 2,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 0,
|
||||
"gemValueUp": 900
|
||||
}
|
||||
],
|
||||
"gemResistanceModifications": [
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0.05,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0.1,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0.1,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0.15,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0.2,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0.25,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0.3,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Soulforge Gem",
|
||||
"description": "Made from the wandering souls of the damned, the Soulforge gem accelerates your towers cooldowns and acts as a repellant for all things unholy.",
|
||||
"color": "gray",
|
||||
"type": "Soulforge",
|
||||
"totalLevels": 7,
|
||||
"textures": [],
|
||||
"cantCombineWith": [],
|
||||
"specialCombine": [],
|
||||
"initialGemValue": 150,
|
||||
"genericImprovements": [
|
||||
{
|
||||
"damageUp": 0,
|
||||
"attackSpeedUp": 100,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 0,
|
||||
"gemValueUp": 200
|
||||
},
|
||||
{
|
||||
"damageUp": 0,
|
||||
"attackSpeedUp": 100,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
"gemValueUp": 350
|
||||
},
|
||||
{
|
||||
"damageUp": 0,
|
||||
"attackSpeedUp": 150,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 0,
|
||||
"gemValueUp": 450
|
||||
},
|
||||
{
|
||||
"damageUp": 0,
|
||||
"attackSpeedUp": 100,
|
||||
"rangeUp": 1,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 0,
|
||||
"gemValueUp": 600
|
||||
},
|
||||
{
|
||||
"damageUp": 0,
|
||||
"attackSpeedUp": 250,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
"gemValueUp": 850
|
||||
},
|
||||
{
|
||||
"damageUp": 0,
|
||||
"attackSpeedUp": 400,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 0,
|
||||
"gemValueUp": 900
|
||||
},
|
||||
{
|
||||
"damageUp": 0,
|
||||
"attackSpeedUp": 500,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 0,
|
||||
"gemValueUp": 900
|
||||
}
|
||||
],
|
||||
"gemResistanceModifications": [
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0.2,
|
||||
"fire": 0,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0.3,
|
||||
"fire": 0,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0.4,
|
||||
"fire": 0,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0.5,
|
||||
"fire": 0,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0.6,
|
||||
"fire": 0,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0.7,
|
||||
"fire": 0,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0.75,
|
||||
"fire": 0,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0.8,
|
||||
"fire": 0,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Golden Gem",
|
||||
"description": "An inherently useless gem, providing no tower buffs, but high in monetary value. Highly sought after by all rich people.",
|
||||
"color": "gold",
|
||||
"type": "Gold",
|
||||
"totalLevels": 1,
|
||||
"textures": [],
|
||||
"cantCombineWith": [],
|
||||
"specialCombine": [],
|
||||
"initialGemValue": 250,
|
||||
"genericImprovements": [
|
||||
{
|
||||
"damageUp": 0,
|
||||
"attackSpeedUp": 0,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 0,
|
||||
"gemValueUp": 0
|
||||
}
|
||||
],
|
||||
"gemResistanceModifications": [
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Artifact",
|
||||
"description": "An insanely rare gem of unknown origin, packed with power. No one knows how it works, yet your towers oddly resonate stronger with it.",
|
||||
"color": "blue",
|
||||
"type": "Artifact",
|
||||
"totalLevels": 1,
|
||||
"textures": [],
|
||||
"cantCombineWith": [],
|
||||
"specialCombine": [],
|
||||
"initialGemValue": 1000,
|
||||
"genericImprovements": [
|
||||
{
|
||||
"damageUp": 10,
|
||||
"attackSpeedUp": 100,
|
||||
"rangeUp": 2,
|
||||
"timeToLiveUp": 200,
|
||||
"pierceUp": 3,
|
||||
"gemValueUp": 0
|
||||
}
|
||||
],
|
||||
"gemResistanceModifications": [
|
||||
{
|
||||
"physical": 0.25,
|
||||
"divine": 0.25,
|
||||
"fire": 0.25,
|
||||
"ice": 0.25,
|
||||
"frostfire": 0.25
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
@ -1,154 +0,0 @@
|
||||
[
|
||||
{
|
||||
"name": "Basic Tower",
|
||||
"behaviour": "BasicTowerBehaviour",
|
||||
"sprite": "basic_tower",
|
||||
"texture": null,
|
||||
"projectile": "white",
|
||||
"projectileTextures": [],
|
||||
"projectileTexturesArrayLength": 5,
|
||||
"description": "The building block of society, nothing more basic exists.",
|
||||
"stats": {
|
||||
"damage": 1,
|
||||
"cooldown": 1500,
|
||||
"gemSlotsAmount": 1,
|
||||
"cost": 25,
|
||||
"range": 3,
|
||||
"timeToLive": 20,
|
||||
"pierce": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Circle Tower",
|
||||
"behaviour": "CircleTowerBehaviour",
|
||||
"sprite": "circle_tower",
|
||||
"texture": null,
|
||||
"projectile": "blue",
|
||||
"projectileTextures": [],
|
||||
"projectileTexturesArrayLength": 4,
|
||||
"description": "Shoots 8 projectiles in a circle, they may miss.",
|
||||
"stats": {
|
||||
"damage": 1,
|
||||
"cooldown": 2000,
|
||||
"gemSlotsAmount": 2,
|
||||
"cost": 55,
|
||||
"range": 3,
|
||||
"timeToLive": 18,
|
||||
"pierce": 5
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Electric Tower",
|
||||
"behaviour": "ElectricTowerBehaviour",
|
||||
"sprite": "electric_tower",
|
||||
"texture": null,
|
||||
"projectile": "yellow",
|
||||
"projectileTextures": [],
|
||||
"projectileTexturesArrayLength": 4,
|
||||
"description": "Zap zap zap! This towers shots connect to other enemies!",
|
||||
"stats": {
|
||||
"damage": 2,
|
||||
"cooldown": 3500,
|
||||
"gemSlotsAmount": 2,
|
||||
"cost": 110,
|
||||
"range": 3,
|
||||
"timeToLive": 12,
|
||||
"pierce": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Buff Tower",
|
||||
"behaviour": "BuffTowerBehaviour",
|
||||
"sprite": "buff_tower",
|
||||
"texture": null,
|
||||
"projectile": "blue",
|
||||
"projectileTextures": [],
|
||||
"projectileTexturesArrayLength": 4,
|
||||
"description": "Doesn't shoot, instead buffs other towers with some of its power.",
|
||||
"stats": {
|
||||
"damage": 3,
|
||||
"cooldown": 1000,
|
||||
"gemSlotsAmount": 3,
|
||||
"cost": 200,
|
||||
"range": 2.5,
|
||||
"timeToLive": 15,
|
||||
"pierce": 5
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Strong Tower",
|
||||
"behaviour": "StrongTowerBehaviour",
|
||||
"sprite": "strong_tower",
|
||||
"texture": null,
|
||||
"projectile": "white",
|
||||
"projectileTextures": [],
|
||||
"projectileTexturesArrayLength": 5,
|
||||
"description": "Behaves like the Basic Tower, only its shots stop creeps in their tracks!",
|
||||
"stats": {
|
||||
"damage": 2,
|
||||
"cooldown": 2200,
|
||||
"gemSlotsAmount": 2,
|
||||
"cost": 80,
|
||||
"range": 3.25,
|
||||
"timeToLive": 12,
|
||||
"pierce": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Rail Tower",
|
||||
"behaviour": "RailTowerBehaviour",
|
||||
"sprite": "rail_tower",
|
||||
"texture": null,
|
||||
"projectile": "red",
|
||||
"projectileTextures": [],
|
||||
"projectileTexturesArrayLength": 4,
|
||||
"description": "Shoots a quick, high pierce rail projectile at creeps.",
|
||||
"stats": {
|
||||
"damage": 5,
|
||||
"cooldown": 5020,
|
||||
"gemSlotsAmount": 3,
|
||||
"cost": 134,
|
||||
"range": 2.5,
|
||||
"timeToLive": 12,
|
||||
"pierce": 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Trapper Tower",
|
||||
"behaviour": "TrapperTowerBehaviour",
|
||||
"sprite": "trapper_tower",
|
||||
"texture": null,
|
||||
"projectile": "stone",
|
||||
"projectileTextures": [],
|
||||
"projectileTexturesArrayLength": 1,
|
||||
"description": "Randomly places expiring traps on the track, instead of attacking creeps.",
|
||||
"stats": {
|
||||
"damage": 2,
|
||||
"cooldown": 2000,
|
||||
"gemSlotsAmount": 3,
|
||||
"cost": 150,
|
||||
"range": 3,
|
||||
"timeToLive": 400,
|
||||
"pierce": 3
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Debuff Tower",
|
||||
"behaviour": "DebuffTowerBehaviour",
|
||||
"sprite": "debuff_tower",
|
||||
"texture": null,
|
||||
"projectile": "red",
|
||||
"projectileTextures": [],
|
||||
"projectileTexturesArrayLength": 4,
|
||||
"description": "On top of a regular attack, this tower gives creeps a debuff, making them take more damage.",
|
||||
"stats": {
|
||||
"damage": 2,
|
||||
"cooldown": 1750,
|
||||
"gemSlotsAmount": 3,
|
||||
"cost": 200,
|
||||
"range": 2.5,
|
||||
"timeToLive": 12,
|
||||
"pierce": 2
|
||||
}
|
||||
}
|
||||
]
|
Before Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 116 KiB |
Before Width: | Height: | Size: 75 KiB |
Before Width: | Height: | Size: 131 KiB |
Before Width: | Height: | Size: 183 KiB |
Before Width: | Height: | Size: 146 KiB |
Before Width: | Height: | Size: 141 KiB |
BIN
public/assets/maps/mission_01.png
Normal file
After Width: | Height: | Size: 120 KiB |
@ -1,91 +0,0 @@
|
||||
{
|
||||
"name": "First Steps",
|
||||
"description": "Welcome to your first defense mission. Protect the exit from basic invaders.",
|
||||
"mapImage": {
|
||||
"url": "/assets/maps/01_first_steps.png"
|
||||
},
|
||||
"gameMap": {
|
||||
"rows": 17,
|
||||
"columns": 25,
|
||||
"cells": [
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
|
||||
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
|
||||
],
|
||||
"paths": [
|
||||
[
|
||||
[0, 8],
|
||||
[1, 8],
|
||||
[2, 8],
|
||||
[3, 8],
|
||||
[4, 8],
|
||||
[5, 8],
|
||||
[6, 8],
|
||||
[7, 8],
|
||||
[8, 8],
|
||||
[9, 8],
|
||||
[10, 8],
|
||||
[11, 8],
|
||||
[12, 8],
|
||||
[13, 8],
|
||||
[14, 8],
|
||||
[15, 8],
|
||||
[16, 8],
|
||||
[17, 8],
|
||||
[18, 8],
|
||||
[19, 8],
|
||||
[20, 8],
|
||||
[21, 8],
|
||||
[22, 8],
|
||||
[23, 8],
|
||||
[24, 8]
|
||||
]
|
||||
]
|
||||
},
|
||||
"rounds": [
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 1000,
|
||||
"creeps": [0, 0, 0, 0, 0]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 4000,
|
||||
"spawnIntervalTicks": 1000,
|
||||
"creeps": [0, 0, 0, 0, 0]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 0, 1]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 1000,
|
||||
"creeps": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 1000,
|
||||
"spawnIntervalTicks": 1000,
|
||||
"creeps": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 0, 1]
|
||||
}
|
||||
]
|
||||
}
|
@ -1,153 +0,0 @@
|
||||
{
|
||||
"name": "The Turn",
|
||||
"description": "Start using some better strategies for this one.",
|
||||
"mapImage": {
|
||||
"url": "/assets/maps/02_the_turn.png"
|
||||
},
|
||||
"gameMap": {
|
||||
"rows": 17,
|
||||
"columns": 25,
|
||||
"cells": [
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0],
|
||||
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 1, 1, 1, 1, 1, 0, 9, 9, 9, 9, 9],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 9, 0, 1, 1, 1, 1, 1, 0, 9, 0, 0, 0, 0],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 9, 0, 1, 1, 1, 1, 1, 0, 9, 0, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 9, 0, 1, 1, 1, 1, 1, 0, 9, 0, 1, 1, 1],
|
||||
[1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 1, 1, 1, 1, 1, 0, 9, 0, 1, 1, 1],
|
||||
[1, 1, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 1, 1, 1, 1, 1, 0, 9, 0, 1, 1, 1],
|
||||
[1, 1, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 9, 0, 1, 1, 1],
|
||||
[1, 1, 0, 9, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 9, 0, 1, 1, 1],
|
||||
[1, 1, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 1, 1, 1],
|
||||
[1, 1, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 1, 1, 1],
|
||||
[1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
|
||||
],
|
||||
"paths": [
|
||||
[
|
||||
[0, 4],
|
||||
[1, 4],
|
||||
[2, 4],
|
||||
[3, 4],
|
||||
[4, 4],
|
||||
[5, 4],
|
||||
[6, 4],
|
||||
[7, 4],
|
||||
[8, 4],
|
||||
[9, 4],
|
||||
[10, 4],
|
||||
[11, 4],
|
||||
[12, 4],
|
||||
[12, 5],
|
||||
[12, 6],
|
||||
[12, 7],
|
||||
[12, 8],
|
||||
[12, 9],
|
||||
[12, 10],
|
||||
[11, 10],
|
||||
[10, 10],
|
||||
[9, 10],
|
||||
[8, 10],
|
||||
[7, 10],
|
||||
[6, 10],
|
||||
[5, 10],
|
||||
[4, 10],
|
||||
[3, 10],
|
||||
[3, 11],
|
||||
[3, 12],
|
||||
[3, 13],
|
||||
[3, 14],
|
||||
[4, 14],
|
||||
[5, 14],
|
||||
[6, 14],
|
||||
[7, 14],
|
||||
[8, 14],
|
||||
[9, 14],
|
||||
[10, 14],
|
||||
[11, 14],
|
||||
[12, 14],
|
||||
[13, 14],
|
||||
[14, 14],
|
||||
[15, 14],
|
||||
[16, 14],
|
||||
[17, 14],
|
||||
[18, 14],
|
||||
[19, 14],
|
||||
[20, 14],
|
||||
[20, 13],
|
||||
[20, 12],
|
||||
[20, 11],
|
||||
[20, 10],
|
||||
[20, 9],
|
||||
[20, 8],
|
||||
[20, 7],
|
||||
[20, 6],
|
||||
[20, 5],
|
||||
[21, 5],
|
||||
[22, 5],
|
||||
[23, 5],
|
||||
[24, 5]
|
||||
]
|
||||
]
|
||||
},
|
||||
"rounds": [
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 500,
|
||||
"creeps": [0]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 0, 0, 0]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 1000,
|
||||
"creeps": [0, 0, 1, 1, 1, 4, 5, 5, 5, 1, 1, 0, 0]
|
||||
}
|
||||
],
|
||||
"offeredGems": [1, 1, 1, 0]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 1000,
|
||||
"creeps": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 500,
|
||||
"creeps": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 2, 2, 3]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 100,
|
||||
"creeps": [1, 1, 1, 1, 1, 1, 1, 1, 1]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 2, 2, 3]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 1000,
|
||||
"creeps": [2, 2, 2, 2, 2]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 3, 3]
|
||||
}
|
||||
]
|
||||
}
|
@ -1,141 +0,0 @@
|
||||
{
|
||||
"name": "Fork in the Road",
|
||||
"description": "Multiple paths and heavily armored tank units test your defensive strategy.",
|
||||
"mapImage": {
|
||||
"url": "/assets/maps/03_fork_in_the_road.png"
|
||||
},
|
||||
"gameMap": {
|
||||
"rows": 17,
|
||||
"columns": 25,
|
||||
"cells": [
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
[1, 1, 1, 1, 1, 1, 1, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
|
||||
[1, 1, 1, 1, 1, 1, 1, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
[1, 1, 1, 1, 1, 1, 1, 0, 9, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 0, 9, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
[1, 1, 1, 1, 1, 1, 1, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
|
||||
[1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
|
||||
],
|
||||
"paths": [
|
||||
[
|
||||
[0, 8],
|
||||
[1, 8],
|
||||
[2, 8],
|
||||
[3, 8],
|
||||
[4, 8],
|
||||
[5, 8],
|
||||
[6, 8],
|
||||
[7, 8],
|
||||
[8, 8],
|
||||
[8, 7],
|
||||
[8, 6],
|
||||
[8, 5],
|
||||
[8, 4],
|
||||
[9, 4],
|
||||
[10, 4],
|
||||
[11, 4],
|
||||
[12, 4],
|
||||
[13, 4],
|
||||
[14, 4],
|
||||
[15, 4],
|
||||
[16, 4],
|
||||
[17, 4],
|
||||
[18, 4],
|
||||
[19, 4],
|
||||
[20, 4],
|
||||
[21, 4],
|
||||
[22, 4],
|
||||
[23, 4],
|
||||
[24, 4]
|
||||
],
|
||||
[
|
||||
[0, 8],
|
||||
[1, 8],
|
||||
[2, 8],
|
||||
[3, 8],
|
||||
[4, 8],
|
||||
[5, 8],
|
||||
[6, 8],
|
||||
[7, 8],
|
||||
[8, 8],
|
||||
[8, 9],
|
||||
[8, 10],
|
||||
[8, 11],
|
||||
[8, 12],
|
||||
[9, 12],
|
||||
[10, 12],
|
||||
[11, 12],
|
||||
[12, 12],
|
||||
[13, 12],
|
||||
[14, 12],
|
||||
[15, 12],
|
||||
[16, 12],
|
||||
[17, 12],
|
||||
[18, 12],
|
||||
[19, 12],
|
||||
[20, 12],
|
||||
[21, 12],
|
||||
[22, 12],
|
||||
[23, 12],
|
||||
[24, 12]
|
||||
]
|
||||
]
|
||||
},
|
||||
"rounds": [
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 1000,
|
||||
"creeps": [0, 0, 0, 0, 0]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 6000,
|
||||
"spawnIntervalTicks": 800,
|
||||
"creeps": [1, 1, 1, 1]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 900,
|
||||
"creeps": [2, 0, 0, 2]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 5000,
|
||||
"spawnIntervalTicks": 700,
|
||||
"creeps": [1, 1, 2, 1, 1]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 800,
|
||||
"creeps": [2, 1, 0, 2, 1, 0]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 6000,
|
||||
"spawnIntervalTicks": 600,
|
||||
"creeps": [2, 2, 1, 1, 2, 2]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
}
|
||||
]
|
||||
}
|
@ -1,169 +0,0 @@
|
||||
{
|
||||
"name": "Crossroads",
|
||||
"description": "Multiple entry points and intersecting paths require careful tower placement and strategy.",
|
||||
"mapImage": {
|
||||
"url": "/assets/maps/04_crossroads.png"
|
||||
},
|
||||
"gameMap": {
|
||||
"rows": 17,
|
||||
"columns": 25,
|
||||
"cells": [
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 9, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 0, 9, 9, 9, 9, 9, 9, 9, 9, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 0, 9, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 0, 9, 9, 9, 9, 9, 9, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0],
|
||||
[1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 9, 0, 1, 1, 1, 1, 1, 0, 9, 9, 9, 9, 9],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 9, 0, 1, 1, 1, 1, 1, 0, 9, 0, 0, 0, 0],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 9, 0, 1, 1, 1, 1, 1, 0, 9, 0, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 1, 1, 1],
|
||||
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
|
||||
],
|
||||
"paths": [
|
||||
[
|
||||
[0, 13],
|
||||
[1, 13],
|
||||
[2, 13],
|
||||
[3, 13],
|
||||
[4, 13],
|
||||
[5, 13],
|
||||
[6, 13],
|
||||
[7, 13],
|
||||
[8, 13],
|
||||
[9, 13],
|
||||
[10, 13],
|
||||
[11, 13],
|
||||
[12, 13],
|
||||
[13, 13],
|
||||
[14, 13],
|
||||
[15, 13],
|
||||
[15, 12],
|
||||
[15, 11],
|
||||
[15, 10],
|
||||
[16, 10],
|
||||
[17, 10],
|
||||
[18, 10],
|
||||
[19, 10],
|
||||
[20, 10],
|
||||
[20, 9],
|
||||
[20, 8],
|
||||
[20, 7],
|
||||
[20, 6],
|
||||
[21, 6],
|
||||
[22, 6],
|
||||
[23, 6],
|
||||
[24, 6]
|
||||
],
|
||||
[
|
||||
[14, 0],
|
||||
[14, 1],
|
||||
[14, 2],
|
||||
[13, 2],
|
||||
[12, 2],
|
||||
[11, 2],
|
||||
[10, 2],
|
||||
[9, 2],
|
||||
[8, 2],
|
||||
[7, 2],
|
||||
[7, 3],
|
||||
[7, 4],
|
||||
[7, 5],
|
||||
[8, 5],
|
||||
[9, 5],
|
||||
[10, 5],
|
||||
[11, 5],
|
||||
[12, 5],
|
||||
[12, 6],
|
||||
[12, 7],
|
||||
[12, 8],
|
||||
[12, 9],
|
||||
[12, 10],
|
||||
[13, 10],
|
||||
[14, 10],
|
||||
[15, 10],
|
||||
[16, 10],
|
||||
[17, 10],
|
||||
[18, 10],
|
||||
[19, 10],
|
||||
[20, 10],
|
||||
[20, 9],
|
||||
[20, 8],
|
||||
[20, 7],
|
||||
[20, 6],
|
||||
[21, 6],
|
||||
[22, 6],
|
||||
[23, 6],
|
||||
[24, 6]
|
||||
]
|
||||
]
|
||||
},
|
||||
"rounds": [
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 1000,
|
||||
"creeps": [0, 0, 1, 0, 0]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 6000,
|
||||
"spawnIntervalTicks": 800,
|
||||
"creeps": [1, 1, 2, 1, 1]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 0]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 800,
|
||||
"creeps": [2, 0, 2, 0, 2, 0]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 5000,
|
||||
"spawnIntervalTicks": 600,
|
||||
"creeps": [1, 2, 1, 2, 1, 2]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 700,
|
||||
"creeps": [2, 1, 0, 2, 1, 0, 2]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 6000,
|
||||
"spawnIntervalTicks": 500,
|
||||
"creeps": [2, 2, 1, 1, 2, 2, 1]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 600,
|
||||
"creeps": [2, 2, 2, 1, 1, 1, 0, 0]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 7000,
|
||||
"spawnIntervalTicks": 400,
|
||||
"creeps": [2, 2, 2, 2, 1, 1, 1, 1]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
}
|
||||
]
|
||||
}
|
@ -1,263 +0,0 @@
|
||||
{
|
||||
"name": "The Maze",
|
||||
"description": "A complex network of paths requires masterful tower placement and timing.",
|
||||
"mapImage": {
|
||||
"url": "/assets/maps/05_the_maze.png"
|
||||
},
|
||||
"gameMap": {
|
||||
"rows": 17,
|
||||
"columns": 25,
|
||||
"cells": [
|
||||
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1],
|
||||
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 1, 1, 1, 1, 1, 1],
|
||||
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 1, 1, 1, 1, 1, 1],
|
||||
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 1, 1, 1, 1, 1, 1],
|
||||
[1, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 0, 9, 0, 1, 1, 1, 1, 1, 1],
|
||||
[1, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 9, 0, 1, 1, 1, 1, 1, 1],
|
||||
[1, 0, 9, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 9, 0, 0, 9, 0, 0, 0, 0, 0, 0, 1],
|
||||
[1, 0, 9, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 0],
|
||||
[1, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 9, 0, 0, 9, 0, 0, 0, 0, 9, 9, 9],
|
||||
[1, 0, 9, 0, 0, 9, 9, 9, 9, 9, 9, 0, 1, 0, 9, 0, 0, 9, 0, 1, 1, 0, 0, 0, 0],
|
||||
[1, 0, 9, 0, 0, 9, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 9, 0, 1, 1, 1, 1, 1, 1],
|
||||
[1, 0, 9, 0, 0, 9, 0, 1, 1, 0, 9, 9, 9, 9, 9, 0, 0, 9, 0, 1, 1, 1, 1, 1, 1],
|
||||
[1, 0, 9, 0, 0, 9, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 1, 1, 1, 1, 1, 1],
|
||||
[1, 0, 9, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 1, 1, 1, 1, 1, 1],
|
||||
[0, 0, 9, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 1, 1, 1, 1, 1, 1],
|
||||
[9, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1],
|
||||
[0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
|
||||
],
|
||||
"paths": [
|
||||
[
|
||||
[0, 1],
|
||||
[1, 1],
|
||||
[2, 1],
|
||||
[3, 1],
|
||||
[4, 1],
|
||||
[5, 1],
|
||||
[6, 1],
|
||||
[7, 1],
|
||||
[8, 1],
|
||||
[9, 1],
|
||||
[10, 1],
|
||||
[11, 1],
|
||||
[12, 1],
|
||||
[13, 1],
|
||||
[14, 1],
|
||||
[15, 1],
|
||||
[16, 1],
|
||||
[17, 1],
|
||||
[17, 2],
|
||||
[17, 3],
|
||||
[17, 4],
|
||||
[17, 5],
|
||||
[17, 6],
|
||||
[17, 7],
|
||||
[17, 8],
|
||||
[17, 9],
|
||||
[17, 10],
|
||||
[17, 11],
|
||||
[17, 12],
|
||||
[17, 13],
|
||||
[17, 14],
|
||||
[16, 14],
|
||||
[15, 14],
|
||||
[14, 14],
|
||||
[13, 14],
|
||||
[12, 14],
|
||||
[11, 14],
|
||||
[10, 14],
|
||||
[9, 14],
|
||||
[8, 14],
|
||||
[7, 14],
|
||||
[6, 14],
|
||||
[5, 14],
|
||||
[5, 13],
|
||||
[5, 12],
|
||||
[5, 11],
|
||||
[5, 10],
|
||||
[5, 9],
|
||||
[6, 9],
|
||||
[7, 9],
|
||||
[8, 9],
|
||||
[9, 9],
|
||||
[10, 9],
|
||||
[10, 10],
|
||||
[10, 11],
|
||||
[11, 11],
|
||||
[12, 11],
|
||||
[13, 11],
|
||||
[14, 11],
|
||||
[14, 10],
|
||||
[14, 9],
|
||||
[14, 8],
|
||||
[14, 7],
|
||||
[15, 7],
|
||||
[16, 7],
|
||||
[17, 7],
|
||||
[18, 7],
|
||||
[19, 7],
|
||||
[20, 7],
|
||||
[21, 7],
|
||||
[22, 7],
|
||||
[22, 8],
|
||||
[23, 8],
|
||||
[24, 8]
|
||||
],
|
||||
[
|
||||
[0, 15],
|
||||
[1, 15],
|
||||
[2, 15],
|
||||
[2, 14],
|
||||
[2, 13],
|
||||
[2, 12],
|
||||
[2, 11],
|
||||
[2, 10],
|
||||
[2, 9],
|
||||
[2, 8],
|
||||
[2, 7],
|
||||
[2, 6],
|
||||
[2, 5],
|
||||
[2, 4],
|
||||
[3, 4],
|
||||
[4, 4],
|
||||
[5, 4],
|
||||
[6, 4],
|
||||
[7, 4],
|
||||
[8, 4],
|
||||
[9, 4],
|
||||
[10, 4],
|
||||
[11, 4],
|
||||
[12, 4],
|
||||
[13, 4],
|
||||
[14, 4],
|
||||
[14, 5],
|
||||
[14, 6],
|
||||
[14, 7],
|
||||
[14, 8],
|
||||
[14, 9],
|
||||
[14, 10],
|
||||
[14, 11],
|
||||
[13, 11],
|
||||
[12, 11],
|
||||
[11, 11],
|
||||
[10, 11],
|
||||
[10, 10],
|
||||
[10, 9],
|
||||
[9, 9],
|
||||
[8, 9],
|
||||
[7, 9],
|
||||
[6, 9],
|
||||
[5, 9],
|
||||
[5, 10],
|
||||
[5, 11],
|
||||
[5, 12],
|
||||
[5, 13],
|
||||
[5, 14],
|
||||
[6, 14],
|
||||
[7, 14],
|
||||
[8, 14],
|
||||
[9, 14],
|
||||
[10, 14],
|
||||
[11, 14],
|
||||
[12, 14],
|
||||
[13, 14],
|
||||
[14, 14],
|
||||
[15, 14],
|
||||
[16, 14],
|
||||
[17, 14],
|
||||
[17, 13],
|
||||
[17, 12],
|
||||
[17, 11],
|
||||
[17, 10],
|
||||
[17, 9],
|
||||
[17, 8],
|
||||
[17, 7],
|
||||
[18, 7],
|
||||
[19, 7],
|
||||
[20, 7],
|
||||
[21, 7],
|
||||
[22, 7],
|
||||
[22, 8],
|
||||
[23, 8],
|
||||
[24, 8]
|
||||
]
|
||||
]
|
||||
},
|
||||
"rounds": [
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 800,
|
||||
"creeps": [0, 1, 0, 1, 0, 1]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 5000,
|
||||
"spawnIntervalTicks": 600,
|
||||
"creeps": [1, 1, 2, 1, 1, 2]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 700,
|
||||
"creeps": [2, 0, 2, 1, 2, 0, 2]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 6000,
|
||||
"spawnIntervalTicks": 500,
|
||||
"creeps": [2, 1, 2, 1, 2, 1, 2]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 600,
|
||||
"creeps": [2, 2, 1, 1, 0, 2, 2, 1]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 6000,
|
||||
"spawnIntervalTicks": 400,
|
||||
"creeps": [2, 2, 2, 1, 1, 1, 2, 2]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 500,
|
||||
"creeps": [2, 2, 1, 1, 2, 2, 1, 1, 2]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 7000,
|
||||
"spawnIntervalTicks": 300,
|
||||
"creeps": [2, 2, 2, 1, 1, 1, 2, 2, 2]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 400,
|
||||
"creeps": [2, 2, 2, 2, 1, 1, 1, 1, 2, 2]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 8000,
|
||||
"spawnIntervalTicks": 250,
|
||||
"creeps": [2, 2, 2, 2, 2, 1, 1, 1, 1, 1]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
}
|
||||
]
|
||||
}
|
@ -1,199 +0,0 @@
|
||||
{
|
||||
"name": "Multi-Defense",
|
||||
"description": "Multiple exits must be defended simultaneously against increasingly difficult waves.",
|
||||
"mapImage": {
|
||||
"url": "/assets/maps/06_multiple_fronts.png"
|
||||
},
|
||||
"gameMap": {
|
||||
"rows": 17,
|
||||
"columns": 25,
|
||||
"cells": [
|
||||
[1, 1, 1, 1, 0, 9, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 0, 0, 0, 0, 9, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1],
|
||||
[1, 0, 9, 9, 9, 9, 0, 1, 1, 1, 1, 1, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 1, 1],
|
||||
[1, 0, 9, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 0, 1, 1],
|
||||
[1, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 1, 1, 1, 1, 1, 0, 9, 0, 0, 0],
|
||||
[1, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 1, 1, 1, 1, 1, 0, 9, 9, 9, 9],
|
||||
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[9, 9, 9, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[0, 0, 9, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 0, 9, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 0, 9, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1],
|
||||
[1, 0, 9, 0, 1, 1, 1, 1, 1, 1, 0, 9, 9, 9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 0],
|
||||
[1, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9],
|
||||
[1, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
|
||||
],
|
||||
"paths": [
|
||||
[
|
||||
[5, 0],
|
||||
[5, 1],
|
||||
[5, 2],
|
||||
[4, 2],
|
||||
[3, 2],
|
||||
[2, 2],
|
||||
[2, 3],
|
||||
[2, 4],
|
||||
[2, 5],
|
||||
[3, 5],
|
||||
[4, 5],
|
||||
[5, 5],
|
||||
[6, 5],
|
||||
[7, 5],
|
||||
[8, 5],
|
||||
[9, 5],
|
||||
[10, 5],
|
||||
[11, 5],
|
||||
[12, 5],
|
||||
[13, 5],
|
||||
[13, 4],
|
||||
[13, 3],
|
||||
[13, 2],
|
||||
[14, 2],
|
||||
[15, 2],
|
||||
[16, 2],
|
||||
[17, 2],
|
||||
[18, 2],
|
||||
[19, 2],
|
||||
[20, 2],
|
||||
[21, 2],
|
||||
[21, 3],
|
||||
[21, 4],
|
||||
[21, 5],
|
||||
[22, 5],
|
||||
[23, 5],
|
||||
[24, 5]
|
||||
],
|
||||
[
|
||||
[0, 9],
|
||||
[1, 9],
|
||||
[2, 9],
|
||||
[2, 10],
|
||||
[2, 11],
|
||||
[2, 12],
|
||||
[2, 13],
|
||||
[2, 14],
|
||||
[2, 15],
|
||||
[3, 15],
|
||||
[4, 15],
|
||||
[5, 15],
|
||||
[6, 15],
|
||||
[7, 15],
|
||||
[8, 15],
|
||||
[9, 15],
|
||||
[10, 15],
|
||||
[11, 15],
|
||||
[11, 14],
|
||||
[11, 13],
|
||||
[12, 13],
|
||||
[13, 13],
|
||||
[14, 13],
|
||||
[15, 13],
|
||||
[16, 13],
|
||||
[17, 13],
|
||||
[17, 14],
|
||||
[18, 14],
|
||||
[19, 14],
|
||||
[20, 14],
|
||||
[21, 14],
|
||||
[22, 14],
|
||||
[23, 14],
|
||||
[24, 14]
|
||||
]
|
||||
]
|
||||
},
|
||||
"rounds": [
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 700,
|
||||
"creeps": [0, 1, 0, 1, 0, 1, 0]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 5000,
|
||||
"spawnIntervalTicks": 500,
|
||||
"creeps": [1, 1, 2, 1, 1, 2, 1]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 600,
|
||||
"creeps": [2, 1, 2, 1, 2, 1, 2, 1]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 6000,
|
||||
"spawnIntervalTicks": 400,
|
||||
"creeps": [2, 2, 1, 1, 2, 2, 1, 1]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 500,
|
||||
"creeps": [2, 2, 1, 1, 2, 2, 1, 1, 2]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 6000,
|
||||
"spawnIntervalTicks": 300,
|
||||
"creeps": [2, 2, 2, 1, 1, 1, 2, 2, 2]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 400,
|
||||
"creeps": [2, 2, 2, 1, 1, 1, 2, 2, 2, 1]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 7000,
|
||||
"spawnIntervalTicks": 250,
|
||||
"creeps": [2, 2, 2, 2, 1, 1, 1, 1, 2, 2]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 300,
|
||||
"creeps": [2, 2, 2, 2, 1, 1, 1, 1, 2, 2, 2]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 7000,
|
||||
"spawnIntervalTicks": 200,
|
||||
"creeps": [2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 250,
|
||||
"creeps": [2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 8000,
|
||||
"spawnIntervalTicks": 150,
|
||||
"creeps": [2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
}
|
||||
]
|
||||
}
|
@ -1,223 +0,0 @@
|
||||
{
|
||||
"name": "Final Stretch",
|
||||
"description": "The final map, the longest map, the 7th map.",
|
||||
"mapImage": {
|
||||
"url": "/assets/maps/07_final_stretch.png"
|
||||
},
|
||||
"gameMap": {
|
||||
"rows": 17,
|
||||
"columns": 25,
|
||||
"cells": [
|
||||
[1, 0, 9, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 9, 0, 1],
|
||||
[1, 0, 9, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 9, 0, 1],
|
||||
[1, 0, 9, 0, 1, 0, 9, 9, 9, 9, 9, 0, 1, 0, 9, 9, 9, 9, 9, 0, 1, 0, 9, 0, 1],
|
||||
[1, 0, 9, 0, 1, 0, 9, 0, 0, 0, 9, 0, 1, 0, 9, 0, 0, 0, 9, 0, 1, 0, 9, 0, 1],
|
||||
[1, 0, 9, 0, 1, 0, 9, 0, 1, 0, 9, 0, 1, 0, 9, 0, 1, 0, 9, 0, 1, 0, 9, 0, 1],
|
||||
[1, 0, 9, 0, 1, 0, 9, 0, 1, 0, 9, 0, 1, 0, 9, 0, 1, 0, 9, 0, 1, 0, 9, 0, 1],
|
||||
[1, 0, 9, 0, 1, 0, 9, 0, 1, 0, 9, 0, 1, 0, 9, 0, 1, 0, 9, 0, 1, 0, 9, 0, 1],
|
||||
[1, 0, 9, 0, 1, 0, 9, 0, 1, 0, 9, 0, 1, 0, 9, 0, 1, 0, 9, 0, 1, 0, 9, 0, 1],
|
||||
[1, 0, 9, 0, 1, 0, 9, 0, 1, 0, 9, 0, 1, 0, 9, 0, 1, 0, 9, 0, 1, 0, 9, 0, 1],
|
||||
[1, 0, 9, 0, 1, 0, 9, 0, 1, 0, 9, 0, 1, 0, 9, 0, 1, 0, 9, 0, 1, 0, 9, 0, 1],
|
||||
[1, 0, 9, 0, 1, 0, 9, 0, 1, 0, 9, 0, 1, 0, 9, 0, 1, 0, 9, 0, 1, 0, 9, 0, 1],
|
||||
[1, 0, 9, 0, 1, 0, 9, 0, 1, 0, 9, 0, 1, 0, 9, 0, 1, 0, 9, 0, 1, 0, 9, 0, 1],
|
||||
[1, 0, 9, 0, 1, 0, 9, 0, 1, 0, 9, 0, 1, 0, 9, 0, 1, 0, 9, 0, 1, 0, 9, 0, 1],
|
||||
[1, 0, 9, 0, 0, 0, 9, 0, 1, 0, 9, 0, 0, 0, 9, 0, 1, 0, 9, 0, 0, 0, 9, 0, 1],
|
||||
[1, 0, 9, 9, 9, 9, 9, 0, 1, 0, 9, 9, 9, 9, 9, 0, 1, 0, 9, 9, 9, 9, 9, 0, 1],
|
||||
[1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
|
||||
],
|
||||
"paths": [
|
||||
[
|
||||
[2, 0],
|
||||
[2, 1],
|
||||
[2, 2],
|
||||
[2, 3],
|
||||
[2, 4],
|
||||
[2, 5],
|
||||
[2, 6],
|
||||
[2, 7],
|
||||
[2, 8],
|
||||
[2, 9],
|
||||
[2, 10],
|
||||
[2, 11],
|
||||
[2, 12],
|
||||
[2, 13],
|
||||
[2, 14],
|
||||
[3, 14],
|
||||
[4, 14],
|
||||
[5, 14],
|
||||
[6, 14],
|
||||
[6, 13],
|
||||
[6, 12],
|
||||
[6, 11],
|
||||
[6, 10],
|
||||
[6, 9],
|
||||
[6, 8],
|
||||
[6, 7],
|
||||
[6, 6],
|
||||
[6, 5],
|
||||
[6, 4],
|
||||
[6, 3],
|
||||
[6, 2],
|
||||
[7, 2],
|
||||
[8, 2],
|
||||
[9, 2],
|
||||
[10, 2],
|
||||
[10, 3],
|
||||
[10, 4],
|
||||
[10, 5],
|
||||
[10, 6],
|
||||
[10, 7],
|
||||
[10, 8],
|
||||
[10, 9],
|
||||
[10, 10],
|
||||
[10, 11],
|
||||
[10, 12],
|
||||
[10, 13],
|
||||
[10, 14],
|
||||
[11, 14],
|
||||
[12, 14],
|
||||
[13, 14],
|
||||
[14, 14],
|
||||
[14, 13],
|
||||
[14, 12],
|
||||
[14, 11],
|
||||
[14, 10],
|
||||
[14, 9],
|
||||
[14, 8],
|
||||
[14, 7],
|
||||
[14, 6],
|
||||
[14, 5],
|
||||
[14, 4],
|
||||
[14, 3],
|
||||
[14, 2],
|
||||
[15, 2],
|
||||
[16, 2],
|
||||
[17, 2],
|
||||
[18, 2],
|
||||
[18, 3],
|
||||
[18, 4],
|
||||
[18, 5],
|
||||
[18, 6],
|
||||
[18, 7],
|
||||
[18, 8],
|
||||
[18, 9],
|
||||
[18, 10],
|
||||
[18, 11],
|
||||
[18, 12],
|
||||
[18, 13],
|
||||
[18, 14],
|
||||
[19, 14],
|
||||
[20, 14],
|
||||
[21, 14],
|
||||
[22, 14],
|
||||
[22, 13],
|
||||
[22, 12],
|
||||
[22, 11],
|
||||
[22, 10],
|
||||
[22, 9],
|
||||
[22, 8],
|
||||
[22, 7],
|
||||
[22, 6],
|
||||
[22, 5],
|
||||
[22, 4],
|
||||
[22, 3],
|
||||
[22, 2],
|
||||
[22, 1],
|
||||
[22, 0]
|
||||
]
|
||||
]
|
||||
},
|
||||
"rounds": [
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 700,
|
||||
"creeps": [0, 1, 0, 1, 0, 1, 0]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 5000,
|
||||
"spawnIntervalTicks": 500,
|
||||
"creeps": [1, 1, 2, 1, 1, 2, 1]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 600,
|
||||
"creeps": [2, 1, 2, 1, 2, 1, 2, 1]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 6000,
|
||||
"spawnIntervalTicks": 400,
|
||||
"creeps": [2, 2, 1, 1, 2, 2, 1, 1]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 500,
|
||||
"creeps": [2, 2, 1, 1, 2, 2, 1, 1, 2]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 6000,
|
||||
"spawnIntervalTicks": 300,
|
||||
"creeps": [2, 2, 2, 1, 1, 1, 2, 2, 2]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 400,
|
||||
"creeps": [2, 2, 2, 1, 1, 1, 2, 2, 2, 1]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 7000,
|
||||
"spawnIntervalTicks": 250,
|
||||
"creeps": [2, 2, 2, 2, 1, 1, 1, 1, 2, 2]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 300,
|
||||
"creeps": [2, 2, 2, 2, 1, 1, 1, 1, 2, 2, 2]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 7000,
|
||||
"spawnIntervalTicks": 200,
|
||||
"creeps": [2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 250,
|
||||
"creeps": [2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 8000,
|
||||
"spawnIntervalTicks": 150,
|
||||
"creeps": [2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
}
|
||||
]
|
||||
}
|
128
public/assets/missions/mission_01.json
Normal file
@ -0,0 +1,128 @@
|
||||
{
|
||||
"name": "Mission 1",
|
||||
"description": "This is the first mission",
|
||||
"mapImage": {
|
||||
"url": "/assets/maps/mission_01.png"
|
||||
},
|
||||
"gameMap": {
|
||||
"rows": 17,
|
||||
"columns": 25,
|
||||
"cells": [
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
|
||||
],
|
||||
"paths": [
|
||||
[
|
||||
[4, 0],
|
||||
[4, 1],
|
||||
[4, 2],
|
||||
[4, 3],
|
||||
[4, 4],
|
||||
[4, 5],
|
||||
[4, 6],
|
||||
[4, 7],
|
||||
[4, 8],
|
||||
[4, 9],
|
||||
[4, 10],
|
||||
[4, 11],
|
||||
[4, 12],
|
||||
[5, 12],
|
||||
[6, 12],
|
||||
[7, 12],
|
||||
[8, 12],
|
||||
[9, 12],
|
||||
[10, 12],
|
||||
[10, 11],
|
||||
[10, 10],
|
||||
[10, 9],
|
||||
[10, 8],
|
||||
[10, 7],
|
||||
[10, 6],
|
||||
[10, 5],
|
||||
[10, 4],
|
||||
[10, 3],
|
||||
[11, 3],
|
||||
[12, 3],
|
||||
[13, 3],
|
||||
[14, 3],
|
||||
[14, 4],
|
||||
[14, 5],
|
||||
[14, 6],
|
||||
[14, 7],
|
||||
[14, 8],
|
||||
[14, 9],
|
||||
[14, 10],
|
||||
[14, 11],
|
||||
[14, 12],
|
||||
[14, 13],
|
||||
[14, 14],
|
||||
[14, 15],
|
||||
[14, 16],
|
||||
[14, 17],
|
||||
[14, 18],
|
||||
[14, 19],
|
||||
[14, 20],
|
||||
[13, 20],
|
||||
[12, 20],
|
||||
[11, 20],
|
||||
[10, 20],
|
||||
[9, 20],
|
||||
[8, 20],
|
||||
[7, 20],
|
||||
[6, 20],
|
||||
[5, 20],
|
||||
[5, 21],
|
||||
[5, 22],
|
||||
[5, 23],
|
||||
[5, 24]
|
||||
]
|
||||
]
|
||||
},
|
||||
"rounds": [
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 1000,
|
||||
"creeps": [0, 0, 0, 0, 0]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 1000,
|
||||
"creeps": [0]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 1000,
|
||||
"creeps": [0, 0]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
}
|
||||
]
|
||||
}
|
BIN
public/assets/projectiles/basic_tower.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 11 KiB |