@ -4,7 +4,7 @@ List of things to implement following the "release" of the minimum viable produc
|
|||||||
|
|
||||||
## Creeps
|
## Creeps
|
||||||
|
|
||||||
- [ ] Elemental resistances/attunement
|
- [x] Elemental resistances/attunement
|
||||||
- [x] Proper animation via PNG sequence
|
- [x] Proper animation via PNG sequence
|
||||||
- [x] More variety in Creeps
|
- [x] More variety in Creeps
|
||||||
- [x] Health bar
|
- [x] Health bar
|
||||||
@ -29,4 +29,4 @@ List of things to implement following the "release" of the minimum viable produc
|
|||||||
- [ ] Add sound effects
|
- [ ] Add sound effects
|
||||||
- [ ] Tutorial image/mission
|
- [ ] Tutorial image/mission
|
||||||
- [ ] Pause menu
|
- [ ] Pause menu
|
||||||
- [ ] Score screen when winning/losing map
|
- [x] Score screen when winning/losing map
|
||||||
|
@ -2,11 +2,10 @@
|
|||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<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" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<link rel="stylesheet" href="style.css" />
|
<link rel="stylesheet" href="style.css" />
|
||||||
<link href="https://fonts.googleapis.com/css?family=Aclonica" rel="stylesheet" />
|
<link href="https://fonts.googleapis.com/css?family=Aclonica" rel="stylesheet" />
|
||||||
<title>Bastion App</title>
|
<title>Bastion: The Watcher's Lament</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<script type="module" src="/src/main.ts"></script>
|
<script type="module" src="/src/main.ts"></script>
|
||||||
|
BIN
public/TiledTDThree64.png
Normal file
After Width: | Height: | Size: 143 KiB |
@ -1,4 +1,4 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?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">
|
<tileset version="1.10" tiledversion="1.11.0" name="TiledTDThree64" tilewidth="64" tileheight="64" tilecount="140" columns="14">
|
||||||
<image source="../../../../dumping/tiles/TiledTDThree64.png" width="896" height="640"/>
|
<image source="./TiledTDThree64.png" width="896" height="640"/>
|
||||||
</tileset>
|
</tileset>
|
||||||
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 9.7 KiB After Width: | Height: | Size: 9.7 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 9.7 KiB After Width: | Height: | Size: 9.7 KiB |
Before Width: | Height: | Size: 9.1 KiB After Width: | Height: | Size: 9.1 KiB |
Before Width: | Height: | Size: 9.3 KiB After Width: | Height: | Size: 9.3 KiB |
Before Width: | Height: | Size: 9.3 KiB After Width: | Height: | Size: 9.3 KiB |
Before Width: | Height: | Size: 9.3 KiB After Width: | Height: | Size: 9.3 KiB |
Before Width: | Height: | Size: 9.3 KiB After Width: | Height: | Size: 9.3 KiB |
Before Width: | Height: | Size: 9.3 KiB After Width: | Height: | Size: 9.3 KiB |
Before Width: | Height: | Size: 9.1 KiB After Width: | Height: | Size: 9.1 KiB |
BIN
public/assets/creeps/cloaker/0.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
public/assets/creeps/cloaker/1.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
public/assets/creeps/cloaker/10.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
public/assets/creeps/cloaker/11.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
public/assets/creeps/cloaker/2.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
public/assets/creeps/cloaker/3.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
public/assets/creeps/cloaker/4.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
public/assets/creeps/cloaker/5.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
public/assets/creeps/cloaker/6.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
public/assets/creeps/cloaker/7.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
public/assets/creeps/cloaker/8.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
public/assets/creeps/cloaker/9.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
public/assets/creeps/demon/0.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
public/assets/creeps/demon/1.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
public/assets/creeps/demon/2.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
public/assets/creeps/demon/3.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
public/assets/creeps/demon/4.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
public/assets/creeps/demon/5.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
public/assets/creeps/demon/6.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
public/assets/creeps/demon/7.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
public/assets/creeps/maker/1.png
Normal file
After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
BIN
public/assets/creeps/maker/2.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
public/assets/creeps/maker/3.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
public/assets/creeps/maker/4.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
public/assets/creeps/maker/5.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
public/assets/creeps/maker/6.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
public/assets/creeps/maker/7.png
Normal file
After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
@ -5,7 +5,7 @@
|
|||||||
"textureArrayLength": 12,
|
"textureArrayLength": 12,
|
||||||
"stats": {
|
"stats": {
|
||||||
"health": 5,
|
"health": 5,
|
||||||
"speed": 6,
|
"speed": 4,
|
||||||
"special": null,
|
"special": null,
|
||||||
"resistance": {
|
"resistance": {
|
||||||
"physical": 0,
|
"physical": 0,
|
||||||
@ -19,10 +19,10 @@
|
|||||||
{
|
{
|
||||||
"name": "quick",
|
"name": "quick",
|
||||||
"textures": [],
|
"textures": [],
|
||||||
"textureArrayLength": 12,
|
"textureArrayLength": 8,
|
||||||
"stats": {
|
"stats": {
|
||||||
"health": 7,
|
"health": 2,
|
||||||
"speed": 2.4,
|
"speed": 6,
|
||||||
"special": null,
|
"special": null,
|
||||||
"resistance": {
|
"resistance": {
|
||||||
"physical": 0,
|
"physical": 0,
|
||||||
@ -38,8 +38,8 @@
|
|||||||
"textures": [],
|
"textures": [],
|
||||||
"textureArrayLength": 12,
|
"textureArrayLength": 12,
|
||||||
"stats": {
|
"stats": {
|
||||||
"health": 7,
|
"health": 12,
|
||||||
"speed": 2.4,
|
"speed": 2,
|
||||||
"special": null,
|
"special": null,
|
||||||
"resistance": {
|
"resistance": {
|
||||||
"physical": 0,
|
"physical": 0,
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
{
|
{
|
||||||
"name": "Fire Gem",
|
"name": "Fire Gem",
|
||||||
"description": "Forged from molten lava, the Fire Gem imbues your tower's attacks and adds 50% extra fire damage. It can be merged with any gem and is common. This text shouldn't be long.",
|
"description": "Forged from molten lava, the Fire Gem imbues your tower's attacks and adds 50% extra fire damage. It can be merged with any gem and is common. This text shouldn't be long.",
|
||||||
|
"color": "red",
|
||||||
"type": "Fire",
|
"type": "Fire",
|
||||||
"totalLevels": 2,
|
"totalLevels": 2,
|
||||||
"textures": [],
|
"textures": [],
|
||||||
@ -11,7 +12,7 @@
|
|||||||
"genericImprovements": [
|
"genericImprovements": [
|
||||||
{
|
{
|
||||||
"damageUp": 2,
|
"damageUp": 2,
|
||||||
"attackSpeedUp": 100,
|
"attackSpeedUp": 10,
|
||||||
"rangeUp": 0.5,
|
"rangeUp": 0.5,
|
||||||
"timeToLiveUp": 0,
|
"timeToLiveUp": 0,
|
||||||
"pierceUp": 1,
|
"pierceUp": 1,
|
||||||
@ -19,7 +20,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"damageUp": 2,
|
"damageUp": 2,
|
||||||
"attackSpeedUp": 100,
|
"attackSpeedUp": 10,
|
||||||
"rangeUp": 0.5,
|
"rangeUp": 0.5,
|
||||||
"timeToLiveUp": 0,
|
"timeToLiveUp": 0,
|
||||||
"pierceUp": 1,
|
"pierceUp": 1,
|
||||||
@ -30,14 +31,14 @@
|
|||||||
{
|
{
|
||||||
"physical": 0,
|
"physical": 0,
|
||||||
"divine": 0,
|
"divine": 0,
|
||||||
"fire": 0.5,
|
"fire": 0.25,
|
||||||
"ice": 0,
|
"ice": 0,
|
||||||
"frostfire": 0
|
"frostfire": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"physical": 0,
|
"physical": 0,
|
||||||
"divine": 0,
|
"divine": 0,
|
||||||
"fire": 0.5,
|
"fire": 0.25,
|
||||||
"ice": 0,
|
"ice": 0,
|
||||||
"frostfire": 0
|
"frostfire": 0
|
||||||
}
|
}
|
||||||
@ -46,6 +47,7 @@
|
|||||||
{
|
{
|
||||||
"name": "Yeti Gem",
|
"name": "Yeti Gem",
|
||||||
"description": "Yeti gem description. Something something, write this while drunk or something.",
|
"description": "Yeti gem description. Something something, write this while drunk or something.",
|
||||||
|
"color": "#32e4fc",
|
||||||
"type": "Yeti",
|
"type": "Yeti",
|
||||||
"totalLevels": 2,
|
"totalLevels": 2,
|
||||||
"textures": [],
|
"textures": [],
|
||||||
@ -55,7 +57,7 @@
|
|||||||
"genericImprovements": [
|
"genericImprovements": [
|
||||||
{
|
{
|
||||||
"damageUp": 2,
|
"damageUp": 2,
|
||||||
"attackSpeedUp": 100,
|
"attackSpeedUp": 10,
|
||||||
"rangeUp": 0.5,
|
"rangeUp": 0.5,
|
||||||
"timeToLiveUp": 0,
|
"timeToLiveUp": 0,
|
||||||
"pierceUp": 1,
|
"pierceUp": 1,
|
||||||
@ -63,7 +65,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"damageUp": 2,
|
"damageUp": 2,
|
||||||
"attackSpeedUp": 100,
|
"attackSpeedUp": 10,
|
||||||
"rangeUp": 0.5,
|
"rangeUp": 0.5,
|
||||||
"timeToLiveUp": 0,
|
"timeToLiveUp": 0,
|
||||||
"pierceUp": 1,
|
"pierceUp": 1,
|
||||||
@ -90,6 +92,7 @@
|
|||||||
{
|
{
|
||||||
"name": "Titalium Gem",
|
"name": "Titalium Gem",
|
||||||
"description": "Titalium gem description. Something something zombie creeps working for you something something.",
|
"description": "Titalium gem description. Something something zombie creeps working for you something something.",
|
||||||
|
"color": "pink",
|
||||||
"type": "Titalium",
|
"type": "Titalium",
|
||||||
"totalLevels": 3,
|
"totalLevels": 3,
|
||||||
"textures": [],
|
"textures": [],
|
||||||
@ -99,7 +102,7 @@
|
|||||||
"genericImprovements": [
|
"genericImprovements": [
|
||||||
{
|
{
|
||||||
"damageUp": 2,
|
"damageUp": 2,
|
||||||
"attackSpeedUp": 100,
|
"attackSpeedUp": 10,
|
||||||
"rangeUp": 0.5,
|
"rangeUp": 0.5,
|
||||||
"timeToLiveUp": 0,
|
"timeToLiveUp": 0,
|
||||||
"pierceUp": 1,
|
"pierceUp": 1,
|
||||||
@ -107,7 +110,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"damageUp": 2,
|
"damageUp": 2,
|
||||||
"attackSpeedUp": 100,
|
"attackSpeedUp": 10,
|
||||||
"rangeUp": 0,
|
"rangeUp": 0,
|
||||||
"timeToLiveUp": 0,
|
"timeToLiveUp": 0,
|
||||||
"pierceUp": 1,
|
"pierceUp": 1,
|
||||||
@ -115,7 +118,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"damageUp": 2,
|
"damageUp": 2,
|
||||||
"attackSpeedUp": 100,
|
"attackSpeedUp": 10,
|
||||||
"rangeUp": 0,
|
"rangeUp": 0,
|
||||||
"timeToLiveUp": 0,
|
"timeToLiveUp": 0,
|
||||||
"pierceUp": 1,
|
"pierceUp": 1,
|
||||||
@ -149,6 +152,7 @@
|
|||||||
{
|
{
|
||||||
"name": "Soulforge Gem",
|
"name": "Soulforge Gem",
|
||||||
"description": "Soulforge gem description, have to write later.",
|
"description": "Soulforge gem description, have to write later.",
|
||||||
|
"color": "gray",
|
||||||
"type": "Soulforge",
|
"type": "Soulforge",
|
||||||
"totalLevels": 2,
|
"totalLevels": 2,
|
||||||
"textures": [],
|
"textures": [],
|
||||||
@ -158,7 +162,7 @@
|
|||||||
"genericImprovements": [
|
"genericImprovements": [
|
||||||
{
|
{
|
||||||
"damageUp": 2,
|
"damageUp": 2,
|
||||||
"attackSpeedUp": 100,
|
"attackSpeedUp": 10,
|
||||||
"rangeUp": 0.5,
|
"rangeUp": 0.5,
|
||||||
"timeToLiveUp": 0,
|
"timeToLiveUp": 0,
|
||||||
"pierceUp": 1,
|
"pierceUp": 1,
|
||||||
@ -166,7 +170,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"damageUp": 2,
|
"damageUp": 2,
|
||||||
"attackSpeedUp": 100,
|
"attackSpeedUp": 10,
|
||||||
"rangeUp": 0.5,
|
"rangeUp": 0.5,
|
||||||
"timeToLiveUp": 0,
|
"timeToLiveUp": 0,
|
||||||
"pierceUp": 1,
|
"pierceUp": 1,
|
||||||
|
@ -9,26 +9,30 @@
|
|||||||
"description": "The building block of society, nothing more basic exists.",
|
"description": "The building block of society, nothing more basic exists.",
|
||||||
"stats": {
|
"stats": {
|
||||||
"damage": 2,
|
"damage": 2,
|
||||||
"cooldown": 60,
|
"cooldown": 120,
|
||||||
"gemSlotsAmount": 2,
|
"gemSlotsAmount": 2,
|
||||||
"cost": 100,
|
"cost": 100,
|
||||||
"range": 3
|
"range": 3,
|
||||||
|
"timeToLive": 120,
|
||||||
|
"pierce": 1
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Circle Tower",
|
"name": "Circle Tower",
|
||||||
"behaviour": "BasicTowerBehaviour",
|
"behaviour": "CircleTowerBehaviour",
|
||||||
"sprite": "circle_tower",
|
"sprite": "circle_tower",
|
||||||
"texture": null,
|
"texture": null,
|
||||||
"projectileTextures": [],
|
"projectileTextures": [],
|
||||||
"projectileTexturesArrayLength": 4,
|
"projectileTexturesArrayLength": 4,
|
||||||
"description": "If you feel a little circular.",
|
"description": "If you feel a little circular.",
|
||||||
"stats": {
|
"stats": {
|
||||||
"damage": 6,
|
"damage": 2,
|
||||||
"cooldown": 180,
|
"cooldown": 120,
|
||||||
"gemSlotsAmount": 3,
|
"gemSlotsAmount": 3,
|
||||||
"cost": 125,
|
"cost": 125,
|
||||||
"range": 3
|
"range": 2,
|
||||||
|
"timeToLive": 8,
|
||||||
|
"pierce": 30
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
BIN
public/assets/maps/01_first_steps.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
public/assets/maps/02_the_turn.png
Normal file
After Width: | Height: | Size: 116 KiB |
BIN
public/assets/maps/03_fork_in_the_road.png
Normal file
After Width: | Height: | Size: 75 KiB |
BIN
public/assets/maps/04_crossroads.png
Normal file
After Width: | Height: | Size: 131 KiB |
BIN
public/assets/maps/05_the_maze.png
Normal file
After Width: | Height: | Size: 183 KiB |
BIN
public/assets/maps/06_multiple_fronts.png
Normal file
After Width: | Height: | Size: 146 KiB |
BIN
public/assets/maps/07_final_stretch.png
Normal file
After Width: | Height: | Size: 141 KiB |
Before Width: | Height: | Size: 120 KiB |
76
public/assets/missions/01_first_steps.json
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
{
|
||||||
|
"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]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"firstCreepSpawnTick": 4000,
|
||||||
|
"spawnIntervalTicks": 1000,
|
||||||
|
"creeps": [0, 0, 0, 0]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"offeredGems": [0, 1]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
128
public/assets/missions/02_the_turn.json
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
{
|
||||||
|
"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": 1000,
|
||||||
|
"creeps": [0, 0, 0, 0, 0]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"offeredGems": [0, 0, 0, 0]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"waves": [
|
||||||
|
{
|
||||||
|
"firstCreepSpawnTick": 500,
|
||||||
|
"spawnIntervalTicks": 1000,
|
||||||
|
"creeps": [1, 1, 1, 1, 1]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"offeredGems": [0, 1, 2, 3]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"waves": [
|
||||||
|
{
|
||||||
|
"firstCreepSpawnTick": 500,
|
||||||
|
"spawnIntervalTicks": 1000,
|
||||||
|
"creeps": [2, 2, 2, 2, 2]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"offeredGems": [0, 1, 2, 3]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
141
public/assets/missions/03_fork_in_the_road.json
Normal file
@ -0,0 +1,141 @@
|
|||||||
|
{
|
||||||
|
"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]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
169
public/assets/missions/04_crossroads.json
Normal file
@ -0,0 +1,169 @@
|
|||||||
|
{
|
||||||
|
"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]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
263
public/assets/missions/05_the_maze.json
Normal file
@ -0,0 +1,263 @@
|
|||||||
|
{
|
||||||
|
"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]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
199
public/assets/missions/06_multiple_fronts.json
Normal file
@ -0,0 +1,199 @@
|
|||||||
|
{
|
||||||
|
"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]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
223
public/assets/missions/07_final_stretch.json
Normal file
@ -0,0 +1,223 @@
|
|||||||
|
{
|
||||||
|
"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]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -1,128 +0,0 @@
|
|||||||
{
|
|
||||||
"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, 0, 0, 0]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"waves": [
|
|
||||||
{
|
|
||||||
"firstCreepSpawnTick": 500,
|
|
||||||
"spawnIntervalTicks": 1000,
|
|
||||||
"creeps": [1, 1, 1, 1, 1]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"offeredGems": [0, 1, 2, 3]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"waves": [
|
|
||||||
{
|
|
||||||
"firstCreepSpawnTick": 500,
|
|
||||||
"spawnIntervalTicks": 1000,
|
|
||||||
"creeps": [2, 2, 2, 2, 2]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"offeredGems": [0, 1, 2, 3]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
BIN
public/favicon.ico
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
public/favicon.png
Normal file
After Width: | Height: | Size: 9.6 KiB |
@ -3,9 +3,11 @@
|
|||||||
"height": 4300,
|
"height": 4300,
|
||||||
"width": 2
|
"width": 2
|
||||||
},
|
},
|
||||||
"activeFile": "Mission011.tmx",
|
"activeFile": "tiled/07_final_stretch.tmx",
|
||||||
"expandedProjectPaths": [
|
"expandedProjectPaths": [
|
||||||
"."
|
".",
|
||||||
|
"tiled",
|
||||||
|
"assets/missions"
|
||||||
],
|
],
|
||||||
"file.lastUsedOpenFilter": "All Files (*)",
|
"file.lastUsedOpenFilter": "All Files (*)",
|
||||||
"fileStates": {
|
"fileStates": {
|
||||||
@ -16,7 +18,7 @@
|
|||||||
"scaleInDock": 0.33,
|
"scaleInDock": 0.33,
|
||||||
"scaleInEditor": 1
|
"scaleInEditor": 1
|
||||||
},
|
},
|
||||||
"/home/koneko/dumping/tiles/TiledTDThree64.tmx": {
|
"C:/home/koneko/dumping/tiles/TiledTDThree64.tmx": {
|
||||||
"scale": 0.187625,
|
"scale": 0.187625,
|
||||||
"selectedLayer": 0,
|
"selectedLayer": 0,
|
||||||
"viewCenter": {
|
"viewCenter": {
|
||||||
@ -36,31 +38,118 @@
|
|||||||
"scale": 0.5,
|
"scale": 0.5,
|
||||||
"selectedLayer": 0,
|
"selectedLayer": 0,
|
||||||
"viewCenter": {
|
"viewCenter": {
|
||||||
"x": 570,
|
"x": 959,
|
||||||
"y": 448
|
"y": 543
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Tileset.tsx": {
|
"Tileset.tsx": {
|
||||||
"scaleInDock": 0.5,
|
"scaleInDock": 0.75,
|
||||||
"scaleInEditor": 1
|
"scaleInEditor": 1
|
||||||
|
},
|
||||||
|
"tiled/01_first_steps..tmx": {
|
||||||
|
"scale": 1,
|
||||||
|
"selectedLayer": 0,
|
||||||
|
"viewCenter": {
|
||||||
|
"x": 975,
|
||||||
|
"y": 640.5
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"tiled/01_first_steps.tmx": {
|
||||||
|
"scale": 0.33,
|
||||||
|
"selectedLayer": 0,
|
||||||
|
"viewCenter": {
|
||||||
|
"x": 639.3939393939394,
|
||||||
|
"y": 433.33333333333326
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tiled/02_the_turn.tmx": {
|
||||||
|
"scale": 0.33,
|
||||||
|
"selectedLayer": 0,
|
||||||
|
"viewCenter": {
|
||||||
|
"x": 869.6969696969697,
|
||||||
|
"y": 203.03030303030323
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tiled/03_fork_in_the_road.tmx": {
|
||||||
|
"scale": 0.33,
|
||||||
|
"selectedLayer": 0,
|
||||||
|
"viewCenter": {
|
||||||
|
"x": 2693.9393939393935,
|
||||||
|
"y": 239.3939393939395
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tiled/04_crossroads.tmx": {
|
||||||
|
"scale": 1,
|
||||||
|
"selectedLayer": 0,
|
||||||
|
"viewCenter": {
|
||||||
|
"x": 646.5,
|
||||||
|
"y": 543
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tiled/05_the_maze.tmx": {
|
||||||
|
"scale": 0.5,
|
||||||
|
"selectedLayer": 0,
|
||||||
|
"viewCenter": {
|
||||||
|
"x": 896,
|
||||||
|
"y": 406
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tiled/06_multiple_fronts.tmx": {
|
||||||
|
"scale": 0.75,
|
||||||
|
"selectedLayer": 0,
|
||||||
|
"viewCenter": {
|
||||||
|
"x": 873.3333333333333,
|
||||||
|
"y": 474.6666666666666
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tiled/07_final_stretch.tmx": {
|
||||||
|
"scale": 0.5,
|
||||||
|
"selectedLayer": 0,
|
||||||
|
"viewCenter": {
|
||||||
|
"x": 971,
|
||||||
|
"y": 270
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tiled/Mission01.tmx": {
|
||||||
|
"scale": 1,
|
||||||
|
"selectedLayer": 0,
|
||||||
|
"viewCenter": {
|
||||||
|
"x": 833,
|
||||||
|
"y": 629
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"last.exportedFilePath": "C:/Work/Projects/Matej/towerdefense/public/tiled",
|
||||||
"last.externalTilesetPath": "/home/koneko/Programing/js/towerdefense/public",
|
"last.externalTilesetPath": "/home/koneko/Programing/js/towerdefense/public",
|
||||||
"map.height": 17,
|
"map.height": 17,
|
||||||
|
"map.lastUsedExportFilter": "All Files (*)",
|
||||||
"map.lastUsedFormat": "tmx",
|
"map.lastUsedFormat": "tmx",
|
||||||
"map.tileHeight": 64,
|
"map.tileHeight": 64,
|
||||||
"map.tileWidth": 64,
|
"map.tileWidth": 64,
|
||||||
"map.width": 30,
|
"map.width": 25,
|
||||||
"openFiles": [
|
"openFiles": [
|
||||||
"Tileset.tsx",
|
"tiled/04_crossroads.tmx",
|
||||||
"Mission011.tmx"
|
"tiled/05_the_maze.tmx",
|
||||||
|
"tiled/01_first_steps.tmx",
|
||||||
|
"tiled/02_the_turn.tmx",
|
||||||
|
"tiled/03_fork_in_the_road.tmx",
|
||||||
|
"tiled/06_multiple_fronts.tmx",
|
||||||
|
"tiled/07_final_stretch.tmx"
|
||||||
],
|
],
|
||||||
"project": "maps.tiled-project",
|
"project": "maps.tiled-project",
|
||||||
"recentFiles": [
|
"recentFiles": [
|
||||||
"Tileset.tsx",
|
"tiled/04_crossroads.tmx",
|
||||||
|
"tiled/05_the_maze.tmx",
|
||||||
|
"tiled/01_first_steps.tmx",
|
||||||
|
"tiled/02_the_turn.tmx",
|
||||||
|
"tiled/03_fork_in_the_road.tmx",
|
||||||
|
"tiled/06_multiple_fronts.tmx",
|
||||||
|
"tiled/07_final_stretch.tmx",
|
||||||
|
"tiled/Mission01.tmx",
|
||||||
|
"tiled/01_first_steps..tmx",
|
||||||
"Mission011.tmx",
|
"Mission011.tmx",
|
||||||
"Mission01.tmx",
|
"Tileset.tsx",
|
||||||
"/home/koneko/dumping/tiles/TiledTDThree64.tmx"
|
"Mission01.tmx"
|
||||||
],
|
],
|
||||||
"tileset.lastUsedFilter": "Tiled tileset files (*.tsx *.xml)"
|
"tileset.lastUsedFilter": "Tiled tileset files (*.tsx *.xml)"
|
||||||
}
|
}
|
||||||
|
25
public/tiled/01_first_steps.tmx
Normal file
@ -0,0 +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">
|
||||||
|
<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,
|
||||||
|
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,4,4,4,4,4,4,4,4,4,4,4,4,
|
||||||
|
18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
|
||||||
|
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
|
||||||
|
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,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
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
</map>
|
25
public/tiled/02_the_turn.tmx
Normal file
@ -0,0 +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">
|
||||||
|
<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
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
</map>
|
25
public/tiled/03_fork_in_the_road.tmx
Normal file
@ -0,0 +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">
|
||||||
|
<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,
|
||||||
|
15,15,15,15,15,15,15,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
|
||||||
|
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,
|
||||||
|
15,15,15,15,15,15,15,17,18,6,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
|
||||||
|
15,15,15,15,15,15,15,17,18,19,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||||
|
4,4,4,4,4,4,4,21,18,19,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||||
|
18,18,18,18,18,18,18,18,18,19,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||||
|
32,32,32,32,32,32,32,7,18,19,15,15,15,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,15,15,15,15,15,15,15,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,4,
|
||||||
|
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,
|
||||||
|
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,
|
||||||
|
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
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
</map>
|
25
public/tiled/04_crossroads.tmx
Normal file
@ -0,0 +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">
|
||||||
|
<data encoding="csv">
|
||||||
|
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,15,15,15,15,15,3,4,4,4,4,4,4,21,18,19,15,15,15,15,15,15,15,15,15,
|
||||||
|
15,15,15,15,15,15,17,18,18,18,18,18,18,18,18,19,15,15,15,15,15,15,15,15,15,
|
||||||
|
15,15,15,15,15,15,17,18,6,32,32,32,32,32,32,33,15,15,15,15,15,15,15,15,15,
|
||||||
|
15,15,15,15,15,15,17,18,20,4,4,4,4,5,15,15,15,15,15,15,15,15,15,15,15,
|
||||||
|
15,15,15,15,15,15,17,18,18,18,18,18,18,19,15,15,15,15,15,3,4,4,4,4,4,
|
||||||
|
15,15,15,15,15,15,31,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,20,4,4,4,4,4,21,18,19,15,15,15,
|
||||||
|
15,15,15,15,15,15,15,15,15,15,15,17,18,18,18,18,18,18,18,18,18,19,15,15,15,
|
||||||
|
15,15,15,15,15,15,15,15,15,15,15,31,32,32,7,18,6,32,32,32,32,33,15,15,15,
|
||||||
|
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,
|
||||||
|
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,
|
||||||
|
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
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
</map>
|
25
public/tiled/05_the_maze.tmx
Normal file
@ -0,0 +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">
|
||||||
|
<data encoding="csv">
|
||||||
|
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,15,15,15,15,15,15,
|
||||||
|
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,
|
||||||
|
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,7,18,19,15,15,15,15,15,15,
|
||||||
|
15,3,4,4,4,4,4,4,4,4,4,4,4,4,4,5,17,18,19,15,15,15,15,15,15,
|
||||||
|
15,17,18,18,18,18,18,18,18,18,18,18,18,18,18,19,17,18,19,15,15,15,15,15,15,
|
||||||
|
15,17,18,6,32,32,32,32,32,32,32,32,32,7,18,19,17,18,19,15,15,15,15,15,15,
|
||||||
|
15,17,18,19,15,15,15,15,15,15,15,15,15,17,18,20,21,18,20,4,4,4,4,5,15,
|
||||||
|
15,17,18,19,15,15,15,15,15,15,15,15,15,17,18,18,18,18,18,18,18,18,18,20,4,
|
||||||
|
15,17,18,19,3,4,4,4,4,4,4,5,15,17,18,6,7,18,6,32,32,7,18,18,18,
|
||||||
|
15,17,18,19,17,18,18,18,18,18,18,19,15,17,18,19,17,18,19,15,15,31,32,32,32,
|
||||||
|
15,17,18,19,17,18,6,32,32,7,18,20,4,21,18,19,17,18,19,15,15,15,15,15,15,
|
||||||
|
15,17,18,19,17,18,19,15,15,17,18,18,18,18,18,19,17,18,19,15,15,15,15,15,15,
|
||||||
|
15,17,18,19,17,18,19,15,15,31,32,32,32,32,32,33,17,18,19,15,15,15,15,15,15,
|
||||||
|
15,17,18,19,17,18,20,4,4,4,4,4,4,4,4,4,21,18,19,15,15,15,15,15,15,
|
||||||
|
4,21,18,19,17,18,18,18,18,18,18,18,18,18,18,18,18,18,19,15,15,15,15,15,15,
|
||||||
|
18,18,18,19,31,32,32,32,32,32,32,32,32,32,32,32,32,32,33,15,15,15,15,15,15,
|
||||||
|
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
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
</map>
|
25
public/tiled/06_multiple_fronts.tmx
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<map version="1.10" tiledversion="1.11.1" 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">
|
||||||
|
<data encoding="csv">
|
||||||
|
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,3,4,4,21,18,19,15,15,15,15,15,3,4,4,4,4,4,4,4,4,4,5,15,15,
|
||||||
|
15,17,18,18,18,18,19,15,15,15,15,15,17,18,18,18,18,18,18,18,18,18,19,15,15,
|
||||||
|
15,17,18,6,32,32,33,15,15,15,15,15,17,18,6,32,32,32,32,32,7,18,19,15,15,
|
||||||
|
15,17,18,19,15,15,15,15,15,15,15,15,17,18,19,15,15,15,15,15,17,18,20,4,4,
|
||||||
|
15,17,18,20,4,4,4,4,4,4,4,4,21,18,19,15,15,15,15,15,17,18,18,18,18,
|
||||||
|
15,17,18,18,18,18,18,18,18,18,18,18,18,18,19,15,15,15,15,15,31,32,32,32,32,
|
||||||
|
15,31,32,32,32,32,32,32,32,32,32,32,32,32,33,15,15,15,15,15,15,15,15,15,15,
|
||||||
|
4,4,4,5,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||||
|
18,18,18,19,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||||
|
32,7,18,19,15,15,15,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,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,15,3,4,4,4,4,4,4,4,5,15,15,15,15,15,15,
|
||||||
|
15,17,18,19,15,15,15,15,15,15,17,18,18,18,18,18,18,18,20,4,4,4,4,4,4,
|
||||||
|
15,17,18,20,4,4,4,4,4,4,21,18,6,32,32,32,7,18,18,18,18,18,18,18,18,
|
||||||
|
15,17,18,18,18,18,18,18,18,18,18,18,19,15,15,15,31,32,32,32,32,32,32,32,32,
|
||||||
|
15,31,32,32,32,32,32,32,32,32,32,32,33,15,15,15,15,15,15,15,15,15,15,15,15
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
</map>
|
25
public/tiled/07_final_stretch.tmx
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<map version="1.10" tiledversion="1.11.1" 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">
|
||||||
|
<data encoding="csv">
|
||||||
|
15,17,18,19,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,17,18,19,15,
|
||||||
|
15,17,18,19,15,3,4,4,4,4,4,5,15,3,4,4,4,4,4,5,15,17,18,19,15,
|
||||||
|
15,17,18,19,15,17,18,18,18,18,18,19,15,17,18,18,18,18,18,19,15,17,18,19,15,
|
||||||
|
15,17,18,19,15,17,18,6,32,7,18,19,15,17,18,6,32,7,18,19,15,17,18,19,15,
|
||||||
|
15,17,18,19,15,17,18,19,15,17,18,19,15,17,18,19,15,17,18,19,15,17,18,19,15,
|
||||||
|
15,17,18,19,15,17,18,19,15,17,18,19,15,17,18,19,15,17,18,19,15,17,18,19,15,
|
||||||
|
15,17,18,19,15,17,18,19,15,17,18,19,15,17,18,19,15,17,18,19,15,17,18,19,15,
|
||||||
|
15,17,18,19,15,17,18,19,15,17,18,19,15,17,18,19,15,17,18,19,15,17,18,19,15,
|
||||||
|
15,17,18,19,15,17,18,19,15,17,18,19,15,17,18,19,15,17,18,19,15,17,18,19,15,
|
||||||
|
15,17,18,19,15,17,18,19,15,17,18,19,15,17,18,19,15,17,18,19,15,17,18,19,15,
|
||||||
|
15,17,18,19,15,17,18,19,15,17,18,19,15,17,18,19,15,17,18,19,15,17,18,19,15,
|
||||||
|
15,17,18,19,15,17,18,19,15,17,18,19,15,17,18,19,15,17,18,19,15,17,18,19,15,
|
||||||
|
15,17,18,19,15,17,18,19,15,17,18,19,15,17,18,19,15,17,18,19,15,17,18,19,15,
|
||||||
|
15,17,18,20,4,21,18,19,15,17,18,20,4,21,18,19,15,17,18,20,4,21,18,19,15,
|
||||||
|
15,17,18,18,18,18,18,19,15,17,18,18,18,18,18,19,15,17,18,18,18,18,18,19,15,
|
||||||
|
15,31,32,32,32,32,32,33,15,31,32,32,32,32,32,33,15,31,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
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
</map>
|
@ -24,6 +24,7 @@ export default class GameAssets {
|
|||||||
public static SwordsTexture: PIXI.Texture;
|
public static SwordsTexture: PIXI.Texture;
|
||||||
public static TitleTexture: PIXI.Texture;
|
public static TitleTexture: PIXI.Texture;
|
||||||
public static BannerGemsmith: PIXI.Texture;
|
public static BannerGemsmith: PIXI.Texture;
|
||||||
|
public static EndScreenDialog: PIXI.Texture;
|
||||||
|
|
||||||
public static PlayIconTexture: PIXI.Texture;
|
public static PlayIconTexture: PIXI.Texture;
|
||||||
public static PauseIconTexture: PIXI.Texture;
|
public static PauseIconTexture: PIXI.Texture;
|
||||||
@ -34,7 +35,7 @@ export default class GameAssets {
|
|||||||
public static PlusIconTexture: PIXI.Texture;
|
public static PlusIconTexture: PIXI.Texture;
|
||||||
public static GemAmountIcons: PIXI.Texture[] = [];
|
public static GemAmountIcons: PIXI.Texture[] = [];
|
||||||
|
|
||||||
public static Missions: MissionDefinition[];
|
public static Missions: MissionDefinition[] = [];
|
||||||
public static MissionBackgrounds: PIXI.Texture[] = [];
|
public static MissionBackgrounds: PIXI.Texture[] = [];
|
||||||
public static Towers: TowerDefinition[];
|
public static Towers: TowerDefinition[];
|
||||||
public static Creeps: CreepDefinition[];
|
public static Creeps: CreepDefinition[];
|
||||||
@ -96,6 +97,7 @@ export default class GameAssets {
|
|||||||
this.Load('./assets/gui/frame_green.png').then((texture) => (this.GreenBackground = texture)),
|
this.Load('./assets/gui/frame_green.png').then((texture) => (this.GreenBackground = texture)),
|
||||||
this.Load('./assets/gui/frame_blue.png').then((texture) => (this.BlueBackground = texture)),
|
this.Load('./assets/gui/frame_blue.png').then((texture) => (this.BlueBackground = texture)),
|
||||||
this.Load('./assets/gui/banner_01.png').then((texture) => (this.BannerGemsmith = texture)),
|
this.Load('./assets/gui/banner_01.png').then((texture) => (this.BannerGemsmith = texture)),
|
||||||
|
this.Load('./assets/gui/note.png').then((texture) => (this.EndScreenDialog = texture)),
|
||||||
this.Load('./assets/gui/heart.png').then((texture) => (this.HealthTexture = texture)),
|
this.Load('./assets/gui/heart.png').then((texture) => (this.HealthTexture = texture)),
|
||||||
this.Load('./assets/gui/money.png').then((texture) => (this.GoldTexture = texture)),
|
this.Load('./assets/gui/money.png').then((texture) => (this.GoldTexture = texture)),
|
||||||
this.Load('./assets/gui/wave.png').then((texture) => (this.WaveTexture = texture)),
|
this.Load('./assets/gui/wave.png').then((texture) => (this.WaveTexture = texture)),
|
||||||
@ -150,7 +152,13 @@ export default class GameAssets {
|
|||||||
|
|
||||||
private static async LoadMissions() {
|
private static async LoadMissions() {
|
||||||
// When adding missions, make sure to keep order.
|
// When adding missions, make sure to keep order.
|
||||||
GameAssets.Missions = [await this.LoadMission('./assets/missions/mission_01.json')];
|
await this.LoadMission('./assets/missions/01_first_steps.json');
|
||||||
|
await this.LoadMission('./assets/missions/02_the_turn.json');
|
||||||
|
await this.LoadMission('./assets/missions/03_fork_in_the_road.json');
|
||||||
|
await this.LoadMission('./assets/missions/04_crossroads.json');
|
||||||
|
await this.LoadMission('./assets/missions/05_the_maze.json');
|
||||||
|
await this.LoadMission('./assets/missions/06_multiple_fronts.json');
|
||||||
|
await this.LoadMission('./assets/missions/07_final_stretch.json');
|
||||||
}
|
}
|
||||||
|
|
||||||
private static async LoadTowers() {
|
private static async LoadTowers() {
|
||||||
@ -170,13 +178,8 @@ export default class GameAssets {
|
|||||||
private static async LoadMission(missionUrl: string) {
|
private static async LoadMission(missionUrl: string) {
|
||||||
const res = await fetch(missionUrl);
|
const res = await fetch(missionUrl);
|
||||||
const mission = await res.json();
|
const mission = await res.json();
|
||||||
await this.LoadBackground(mission.mapImage.url);
|
console.log(`Loading mission: ${missionUrl} [${mission.name} / ${mission.mapImage.url}]`);
|
||||||
return mission;
|
GameAssets.Missions.push(mission);
|
||||||
}
|
GameAssets.MissionBackgrounds.push(await this.Load(mission.mapImage.url));
|
||||||
|
|
||||||
private static async LoadBackground(backgroundUrl: string) {
|
|
||||||
let index = this.MissionBackgrounds.length - 1;
|
|
||||||
if (index == -1) index = 0;
|
|
||||||
this.MissionBackgrounds[index] = await this.Load(backgroundUrl);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,7 @@ export class Engine {
|
|||||||
public static NotificationManager: NotificationManager;
|
public static NotificationManager: NotificationManager;
|
||||||
public static GameScene: GameScene;
|
public static GameScene: GameScene;
|
||||||
public static latestCommit: string;
|
public static latestCommit: string;
|
||||||
|
public static latestGemId = 0;
|
||||||
|
|
||||||
public static GridCellSize: number = 64;
|
public static GridCellSize: number = 64;
|
||||||
public static GridColumns: number = 25;
|
public static GridColumns: number = 25;
|
||||||
@ -30,9 +31,12 @@ export class Engine {
|
|||||||
public static MouseY: number = 0;
|
public static MouseY: number = 0;
|
||||||
|
|
||||||
public static TestSuite() {
|
public static TestSuite() {
|
||||||
|
let params = new URLSearchParams(location.href);
|
||||||
|
if (params.entries().next().value[1] != 'game') return;
|
||||||
|
|
||||||
Engine.NotificationManager.Notify('Loaded testing suite.', 'danger');
|
Engine.NotificationManager.Notify('Loaded testing suite.', 'danger');
|
||||||
Engine.TowerManager.ToggleChoosingTowerLocation('RESET');
|
Engine.TowerManager.ToggleChoosingTowerLocation('RESET');
|
||||||
Engine.TowerManager.PlaceTower(GameAssets.Towers[1], 8, 10, GameAssets.Towers[0].behaviour, true);
|
Engine.TowerManager.PlaceTower(GameAssets.Towers[1], 6, 10, GameAssets.Towers[1].behaviour, true);
|
||||||
for (let i = 0; i < 29; i++) {
|
for (let i = 0; i < 29; i++) {
|
||||||
this.GameScene.MissionStats.giveGem(new Gem(i % 4), true);
|
this.GameScene.MissionStats.giveGem(new Gem(i % 4), true);
|
||||||
}
|
}
|
||||||
@ -41,7 +45,6 @@ export class Engine {
|
|||||||
|
|
||||||
export default class GameMaster {
|
export default class GameMaster {
|
||||||
public currentScene: Scene;
|
public currentScene: Scene;
|
||||||
private GameObjects: GameObject[] = [];
|
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
Engine.GameMaster = this;
|
Engine.GameMaster = this;
|
||||||
@ -61,9 +64,6 @@ export default class GameMaster {
|
|||||||
if (this.currentScene) {
|
if (this.currentScene) {
|
||||||
this.currentScene.destroy();
|
this.currentScene.destroy();
|
||||||
}
|
}
|
||||||
this.GameObjects.forEach((element) => {
|
|
||||||
element.destroy();
|
|
||||||
});
|
|
||||||
this.currentScene = newScene;
|
this.currentScene = newScene;
|
||||||
this.currentScene.init();
|
this.currentScene.init();
|
||||||
}
|
}
|
||||||
|
@ -68,11 +68,14 @@ export type TowerStatsDefinition = {
|
|||||||
gemSlotsAmount: number;
|
gemSlotsAmount: number;
|
||||||
cost: number;
|
cost: number;
|
||||||
range: number;
|
range: number;
|
||||||
|
timeToLive: number;
|
||||||
|
pierce: number;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type GemDefinition = {
|
export type GemDefinition = {
|
||||||
name: string;
|
name: string;
|
||||||
description: string;
|
description: string;
|
||||||
|
color: PIXI.ColorSource;
|
||||||
type: GemType;
|
type: GemType;
|
||||||
totalLevels: number;
|
totalLevels: number;
|
||||||
textures: PIXI.Texture[];
|
textures: PIXI.Texture[];
|
||||||
@ -92,7 +95,7 @@ export type GenericGemImprovement = {
|
|||||||
gemValueUp: number;
|
gemValueUp: number;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type PathDefinition = [[row: number, column: number]];
|
export type PathDefinition = [[column: number, row: number]];
|
||||||
|
|
||||||
export enum TerrainType {
|
export enum TerrainType {
|
||||||
Restricted = 0,
|
Restricted = 0,
|
||||||
|
@ -24,6 +24,7 @@ export default abstract class GameObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public copyContainerToBB() {
|
public copyContainerToBB() {
|
||||||
|
if (this.container == null) return null;
|
||||||
this.bb.x = this.container.x;
|
this.bb.x = this.container.x;
|
||||||
this.bb.y = this.container.y;
|
this.bb.y = this.container.y;
|
||||||
this.bb.width = this.container.width;
|
this.bb.width = this.container.width;
|
||||||
|