├── .gitignore ├── server └── server_v1.1.9.jar ├── document └── document_v1.3.pdf ├── visualizer ├── index.html ├── style.css └── displayBuilder.js ├── run.py └── maps ├── 3_v1.1.2.map ├── 1_v1.1.2.map ├── 2_v1.1.2.map ├── final3.map ├── final2.map ├── map4.map ├── final1.map ├── map6.map └── map7.map /.gitignore: -------------------------------------------------------------------------------- 1 | .idea -------------------------------------------------------------------------------- /server/server_v1.1.9.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SharifAIChallenge/AIC20-Game/HEAD/server/server_v1.1.9.jar -------------------------------------------------------------------------------- /document/document_v1.3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SharifAIChallenge/AIC20-Game/HEAD/document/document_v1.3.pdf -------------------------------------------------------------------------------- /visualizer/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 |
17 | 18 |
19 |
Haste
20 |
Damage
21 |
Heal
22 |
Teleport
23 |
Duplicate
24 |
Poison
25 |
26 |
27 | 28 |
29 | 30 | 31 | 32 |
33 | 34 | 35 | 36 |
37 | 38 |
39 | 40 | 41 | -------------------------------------------------------------------------------- /visualizer/style.css: -------------------------------------------------------------------------------- 1 | .positioned { 2 | position: relative; 3 | } 4 | 5 | table { 6 | position: absolute; 7 | top: 0; 8 | left: 0; 9 | } 10 | 11 | table { 12 | border-collapse: collapse; 13 | } 14 | 15 | table, 16 | td { 17 | padding: 0; 18 | border: 1px solid black; 19 | } 20 | 21 | td { 22 | position: relative; 23 | width: 40px; 24 | height: 40px; 25 | padding: 0; 26 | } 27 | 28 | .path-cell { 29 | opacity: 0.2; 30 | position: absolute; 31 | top: 0; 32 | left: 0; 33 | } 34 | 35 | .path-0 { 36 | background-color: #607D8B; 37 | } 38 | 39 | .path-1 { 40 | background-color: #8BC34A; 41 | } 42 | 43 | .path-2 { 44 | background-color: #795548; 45 | } 46 | 47 | .path-3 { 48 | background-color: #FF5722; 49 | } 50 | 51 | .path-4 { 52 | background-color: #009688; 53 | } 54 | 55 | .path-5 { 56 | background-color: #673AB7; 57 | } 58 | 59 | .path-6 { 60 | background-color: #E91E63; 61 | } 62 | 63 | td>div { 64 | width: 100%; 65 | height: 100%; 66 | } 67 | 68 | #main-table td>div>div { 69 | opacity: 0.7; 70 | box-sizing: border-box; 71 | } 72 | 73 | #main-table td>div { 74 | position: absolute; 75 | top: 0; 76 | left: 0; 77 | } 78 | 79 | #main-table td>div.king>div { 80 | width: 100%; 81 | height: 100%; 82 | } 83 | 84 | #main-table td>div.units { 85 | display: grid; 86 | grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); 87 | grid-template-rows: minmax(0, 1fr) minmax(0, 1fr); 88 | } 89 | 90 | #main-table td>div>div { 91 | vertical-align: middle; 92 | text-align: center; 93 | user-select: none; 94 | } 95 | 96 | #main-table td .player-0 { 97 | background-color: #2196F3; 98 | } 99 | 100 | #main-table td .player-1 { 101 | background-color: #F44336; 102 | color: white; 103 | } 104 | 105 | #main-table td .player-2 { 106 | background-color: #4CAF50; 107 | } 108 | 109 | #main-table td .player-3 { 110 | background-color: #FFEB3B; 111 | } 112 | 113 | .spell { 114 | border-style: dashed; 115 | border-width: 2px; 116 | border-radius: 2px; 117 | } 118 | 119 | .spell-0 { 120 | border-color: #651FFF; 121 | } 122 | 123 | .spell-1 { 124 | border-color: #B2FF59; 125 | } 126 | 127 | .spell-2 { 128 | border-color: #795548; 129 | } 130 | 131 | .spell-3 { 132 | border-color: #64FFDA; 133 | } 134 | 135 | .spell-4 { 136 | border-color: #FFAB00; 137 | } 138 | 139 | .spell-5 { 140 | border-color: #FFFFFF; 141 | } -------------------------------------------------------------------------------- /run.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import os 3 | import subprocess 4 | import subprocess 5 | import threading 6 | import time 7 | 8 | # initial data 9 | clients = [] 10 | logs_number = [1, 3, 2, 4] 11 | n = len(sys.argv) 12 | n -= 1 13 | 14 | # initial clients list with correct order 15 | if n < 3: 16 | print('arguments not enough.') 17 | exit() 18 | elif n == 3: 19 | clients = [ sys.argv[3], sys.argv[3], sys.argv[3], sys.argv[3]] 20 | elif n == 4: 21 | clients = [ sys.argv[3], sys.argv[4], sys.argv[4], sys.argv[4]] 22 | elif n == 5: 23 | clients = [ sys.argv[3], sys.argv[5], sys.argv[4], sys.argv[5]] 24 | elif n == 6: 25 | clients = [ sys.argv[3], sys.argv[5], sys.argv[4], sys.argv[6]] 26 | else: 27 | print('too many arguments.') 28 | exit() 29 | 30 | # create clients' logs path 31 | base = 'Log' 32 | if not os.path.exists(base): os.mkdir(base) 33 | base += '/clients' 34 | if not os.path.exists(base): os.mkdir(base) 35 | 36 | # set map 37 | os.environ['AICMap'] = sys.argv[2] 38 | 39 | # define function to write output to file 40 | def write_to_file(log_des, output): 41 | with open(log_des, 'w+') as f: 42 | f.write(str(output) ) 43 | f.flush() 44 | 45 | # functions for compiling and running different clients 46 | def server(): 47 | subprocess.run(['java', '-jar', sys.argv[1]], check=True) 48 | 49 | def python(address, log_des): 50 | process = subprocess.run(['python3', os.path.join(address, 'controller.py')], check=True, stdout=subprocess.PIPE, universal_newlines=True) 51 | output = process.stdout 52 | write_to_file(log_des, output) 53 | 54 | def java(address, log_des): 55 | java_files = [] 56 | for (dirpath, dirnames, filenames) in os.walk(address): 57 | p = [os.path.join(dirpath, f) for f in filenames if f[-5:] == '.java'] 58 | java_files.extend(p) 59 | subprocess.run(['javac', '-classpath', os.path.join(address, 'src', 'gson-2.8.5.jar:')] + java_files, check=True, stdout=subprocess.PIPE, universal_newlines=True) 60 | process = subprocess.run(['java', '-classpath', os.path.join(address, 'src:' + address, 'src', 'gson-2.8.5.jar:'), os.path.join('Client', 'Main')], check=True, stdout=subprocess.PIPE, universal_newlines=True) 61 | output = process.stdout 62 | write_to_file(log_des, output) 63 | 64 | 65 | def cpp(address, log_des): 66 | build_dir = os.path.join(address, 'build') 67 | if not os.path.exists(build_dir): os.mkdir(build_dir) 68 | subprocess.run(['cmake', '-S', address, '-B', build_dir], check=True, stdout=subprocess.PIPE, universal_newlines=True) 69 | subprocess.run(['make', '-C', build_dir], check=True, stdout=subprocess.PIPE, universal_newlines=True) 70 | process = subprocess.run([os.path.join('.', build_dir, 'client', 'client')], check=True, stdout=subprocess.PIPE, universal_newlines=True) 71 | output = process.stdout 72 | write_to_file(log_des, output) 73 | 74 | 75 | def go(address, log_des): 76 | goadd = os.path.join('.', address, 'src', 'client') 77 | process = subprocess.run(['go', 'run', goadd], check=True, stdout=subprocess.PIPE, universal_newlines=True) 78 | output = process.stdout 79 | write_to_file(log_des, output) 80 | 81 | # determining given clients kind 82 | client_function = [None, None, None, None] 83 | for i, client in enumerate(clients): 84 | for (dirpath, dirnames, filenames) in os.walk(client): 85 | p = [f for f in filenames if f[-3:] == '.py'] 86 | if len(p) != 0: 87 | client_function[i] = python 88 | break 89 | p = [f for f in filenames if f[-5:] == '.java'] 90 | if len(p) != 0: 91 | client_function[i] = java 92 | break 93 | p = [f for f in filenames if f[-4:] == '.cpp'] 94 | if len(p) != 0: 95 | client_function[i] = cpp 96 | break 97 | p = [f for f in filenames if f[-3:] == '.go'] 98 | if len(p) != 0: 99 | client_function[i] = go 100 | break 101 | else: 102 | print('client not supported.') 103 | exit() 104 | 105 | # running clients 106 | for i in range(4): 107 | log_des = os.path.join(base, 'client_' + str(logs_number[i]) + '.log') 108 | threading.Thread(target=client_function[i], args=(clients[i], log_des)).start() 109 | time.sleep(0.2) 110 | 111 | # running server 112 | log_des = os.path.join(base, 'server.log') 113 | threading.Thread(target=server).start() 114 | -------------------------------------------------------------------------------- /visualizer/displayBuilder.js: -------------------------------------------------------------------------------- 1 | let mainTable; 2 | let cellLocationLabel; 3 | 4 | window.onload = () => { 5 | mainTable = document.getElementById("main-table"); 6 | cellLocationLabel = document.getElementById("cell-location") 7 | }; 8 | 9 | let graphicLog; 10 | 11 | function loadLog(log) { 12 | graphicLog = log; 13 | let rowsCount = log.init.graphicMap.row; 14 | let colsCount = log.init.graphicMap.col; 15 | 16 | let pathsInCells = new Array(rowsCount); 17 | for (let i = 0; i < rowsCount; i++) { 18 | pathsInCells[i] = new Array(colsCount); 19 | } 20 | 21 | for (path of log.init.graphicMap.paths) 22 | for (cell of path.cells) { 23 | let inCell = pathsInCells[cell.row][cell.col]; 24 | if (inCell == undefined) inCell = new Array(); 25 | inCell.push(path.pathId); 26 | pathsInCells[cell.row][cell.col] = inCell; 27 | } 28 | 29 | const pathTable = document.getElementById("path-table"); 30 | 31 | for (let i = 0; i < rowsCount; i++) { 32 | const row = document.createElement("tr"); 33 | for (let j = 0; j < colsCount; j++) { 34 | const cell = document.createElement("td"); 35 | if (pathsInCells[i][j]) { 36 | for (pathId of pathsInCells[i][j]) { 37 | const tile = document.createElement("div"); 38 | tile.className = `path-cell path-${pathId}`; 39 | cell.appendChild(tile); 40 | } 41 | } 42 | row.appendChild(cell); 43 | } 44 | pathTable.appendChild(row); 45 | } 46 | 47 | mainTable.innerHTML = ""; 48 | for (let i = 0; i < rowsCount; i++) { 49 | const row = document.createElement("tr"); 50 | for (let j = 0; j < colsCount; j++) { 51 | const cell = document.createElement("td"); 52 | cell.onmouseover = () => { 53 | cellLocationLabel.innerText = `(row: ${i}, col: ${j})`; 54 | } 55 | row.appendChild(cell); 56 | } 57 | mainTable.appendChild(row); 58 | } 59 | } 60 | 61 | function viewTurn(turnIndex) { 62 | let turn = graphicLog.turns[turnIndex]; 63 | 64 | let rowsCount = graphicLog.init.graphicMap.row; 65 | let colsCount = graphicLog.init.graphicMap.col; 66 | 67 | let unitsInCells = new Array(rowsCount); 68 | for (let i = 0; i < rowsCount; i++) { 69 | unitsInCells[i] = new Array(colsCount); 70 | } 71 | 72 | const spellsOnUnits = {}; 73 | 74 | for (let i = 0; i < turn.playerTurnEvents.length; i++) { 75 | const playerTurnEvent = turn.playerTurnEvents[i]; 76 | const turnEvent = playerTurnEvent.turnEvent; 77 | if (turnEvent.isAlive) { 78 | const king = graphicLog.init.graphicMap.kings[i]; 79 | for (let x = -1; x <= 1; x++) 80 | for (let y = -1; y <= 1; y++) { 81 | let inCell = unitsInCells[king.row + y][king.col + x]; 82 | if (inCell == undefined) inCell = new Array([], [], [], [], []); 83 | inCell[4].push({ pId: playerTurnEvent.pId, hp: turnEvent.hp }); 84 | unitsInCells[king.row + y][king.col + x] = inCell; 85 | } 86 | } 87 | for (const unit of turnEvent.units) { 88 | let inCell = unitsInCells[unit.row][unit.col]; 89 | if (inCell == undefined) inCell = new Array([], [], [], [], []); 90 | inCell[playerTurnEvent.pId].push(unit); 91 | unitsInCells[unit.row][unit.col] = inCell; 92 | } 93 | 94 | for (const spell of turnEvent.mapSpells) 95 | for (const unitId of spell.unitIds) { 96 | if (spellsOnUnits[unitId] == undefined) { 97 | spellsOnUnits[unitId] = new Array(); 98 | } 99 | spellsOnUnits[unitId].push(spell); 100 | } 101 | } 102 | 103 | const attacks = {} 104 | for (const attack of turn.turnAttacks) { 105 | 106 | const key = attack.attackerId.toString(); 107 | if (!(key in attacks)) 108 | attacks[key] = [] 109 | 110 | attacks[key].push(attack.defenderId) 111 | } 112 | 113 | let row = mainTable.firstChild; 114 | for (let i = 0; i < rowsCount; i++) { 115 | let cell = row.firstChild; 116 | for (let j = 0; j < colsCount; j++) { 117 | cell.innerHTML = ""; 118 | let inCell = unitsInCells[i][j]; 119 | if (inCell != undefined) { 120 | if (inCell[4].length > 0) { 121 | const cellDiv = document.createElement("div"); 122 | const innerCell = document.createElement("div"); 123 | cellDiv.className = "king"; 124 | const king = inCell[4][0]; 125 | innerCell.innerText = king.pId; 126 | innerCell.title = JSON.stringify(king); 127 | innerCell.className = "player-" + king.pId; 128 | cellDiv.appendChild(innerCell); 129 | cell.appendChild(cellDiv); 130 | } 131 | if (inCell.some((value, index) => index < 4 && value.length > 0)) { 132 | const cellDiv = document.createElement("div"); 133 | cellDiv.className = "units"; 134 | for (let k = 0; k < 4; k++) { 135 | const innerCell = document.createElement("div"); 136 | if (inCell[k].length > 0) { 137 | const allSpellsTypeIds = new Set(); 138 | for (const unit of inCell[k]) { 139 | const spellsOnUnit = spellsOnUnits[unit.id]; 140 | if (spellsOnUnit != undefined) { 141 | unit.spells = spellsOnUnit; 142 | for (const spell of spellsOnUnit) 143 | allSpellsTypeIds.add(spell.typeId); 144 | } 145 | 146 | if (unit.id.toString() in attacks) 147 | unit.attackTargets = attacks[unit.id.toString()] 148 | } 149 | for (const spellTypeId of allSpellsTypeIds) 150 | innerCell.classList.add("spell", `spell-${spellTypeId}`); 151 | 152 | innerCell.title = JSON.stringify(inCell[k], null, 2); 153 | innerCell.innerText = inCell[k].length; 154 | innerCell.classList.add("player-" + k); 155 | } 156 | cellDiv.appendChild(innerCell); 157 | } 158 | cell.appendChild(cellDiv); 159 | } 160 | } 161 | cell = cell.nextSibling; 162 | } 163 | row = row.nextSibling; 164 | } 165 | } 166 | 167 | let currentTurnIndex = -1; 168 | let currentTurn = undefined; 169 | function showNextTurn() { 170 | viewTurn(++currentTurnIndex); 171 | currentTurn = graphicLog.turns[currentTurnIndex]; 172 | document.getElementById("turn-num").innerText = currentTurn.turnNum; 173 | } 174 | 175 | function showPreviousTurn() { 176 | viewTurn(--currentTurnIndex); 177 | currentTurn = graphicLog.turns[currentTurnIndex]; 178 | document.getElementById("turn-num").innerText = currentTurn.turnNum; 179 | } 180 | 181 | function handleFiles(files) { 182 | const reader = new FileReader(); 183 | reader.onload = function (e) { 184 | loadLog(JSON.parse(e.target.result)); 185 | }; 186 | reader.readAsText(files[0]); 187 | } 188 | -------------------------------------------------------------------------------- /maps/3_v1.1.2.map: -------------------------------------------------------------------------------- 1 | { 2 | "gameConstants": { 3 | "maxAP": 10, 4 | "maxTurns": 100, 5 | "turnTimeout": 400, 6 | "pickTimeout": 400, 7 | "turnsToUpgrade": 23, 8 | "turnsToSpell": 10, 9 | "damageUpgradeAddition": 3, 10 | "rangeUpgradeAddition": 1, 11 | "deckSize": 9, 12 | "handSize": 5, 13 | "apAddition": 2 14 | }, 15 | "map": { 16 | "rows": 20, 17 | "cols": 10, 18 | "kings": [ 19 | { 20 | "playerId": 0, 21 | "center": { 22 | "row": 2, 23 | "col": 2 24 | }, 25 | "hp": 90, 26 | "attack": 10, 27 | "range": 6 28 | }, 29 | { 30 | "playerId": 1, 31 | "center": { 32 | "row": 17, 33 | "col": 7 34 | }, 35 | "hp": 90, 36 | "attack": 10, 37 | "range": 6 38 | }, 39 | { 40 | "playerId": 2, 41 | "center": { 42 | "row": 2, 43 | "col": 7 44 | }, 45 | "hp": 90, 46 | "attack": 10, 47 | "range": 6 48 | }, 49 | { 50 | "playerId": 3, 51 | "center": { 52 | "row": 17, 53 | "col": 2 54 | }, 55 | "hp": 90, 56 | "attack": 10, 57 | "range": 6 58 | } 59 | ], 60 | "paths": [ 61 | { 62 | "cells": [ 63 | { 64 | "col":7, 65 | "row":2 66 | }, 67 | { 68 | "col":7, 69 | "row":3 70 | }, 71 | { 72 | "col":7, 73 | "row":4 74 | }, 75 | { 76 | "col":7, 77 | "row":5 78 | }, 79 | { 80 | "col":7, 81 | "row":6 82 | }, 83 | { 84 | "col":7, 85 | "row":7 86 | }, 87 | { 88 | "col":7, 89 | "row":8 90 | }, 91 | { 92 | "col":7, 93 | "row":9 94 | }, 95 | { 96 | "col":7, 97 | "row":10 98 | }, 99 | { 100 | "col":7, 101 | "row":11 102 | }, 103 | { 104 | "col":7, 105 | "row":12 106 | }, 107 | { 108 | "col":7, 109 | "row":13 110 | }, 111 | { 112 | "col":7, 113 | "row":14 114 | }, 115 | { 116 | "col":7, 117 | "row":15 118 | }, 119 | { 120 | "col":7, 121 | "row":16 122 | }, 123 | { 124 | "col":7, 125 | "row":17 126 | } 127 | ], 128 | "id": 0 129 | }, 130 | { 131 | "cells": [ 132 | { 133 | "col":2, 134 | "row":2 135 | }, 136 | { 137 | "col":2, 138 | "row":3 139 | }, 140 | { 141 | "col":2, 142 | "row":4 143 | }, 144 | { 145 | "col":2, 146 | "row":5 147 | }, 148 | { 149 | "col":2, 150 | "row":6 151 | }, 152 | { 153 | "col":2, 154 | "row":7 155 | }, 156 | { 157 | "col":2, 158 | "row":8 159 | }, 160 | { 161 | "col":2, 162 | "row":9 163 | }, 164 | { 165 | "col":2, 166 | "row":10 167 | }, 168 | { 169 | "col":2, 170 | "row":11 171 | }, 172 | { 173 | "col":2, 174 | "row":12 175 | }, 176 | { 177 | "col":2, 178 | "row":13 179 | }, 180 | { 181 | "col":2, 182 | "row":14 183 | }, 184 | { 185 | "col":2, 186 | "row":15 187 | }, 188 | { 189 | "col":2, 190 | "row":16 191 | }, 192 | { 193 | "col":2, 194 | "row":17 195 | } 196 | ], 197 | "id": 1 198 | }, 199 | { 200 | "cells": [ 201 | { 202 | "col":2, 203 | "row":2 204 | }, 205 | { 206 | "col":2, 207 | "row":3 208 | }, 209 | { 210 | "col":2, 211 | "row":4 212 | }, 213 | { 214 | "col":2, 215 | "row":5 216 | }, 217 | { 218 | "col":2, 219 | "row":6 220 | }, 221 | { 222 | "col":3, 223 | "row":6 224 | }, 225 | { 226 | "col":4, 227 | "row":6 228 | }, 229 | { 230 | "col":5, 231 | "row":6 232 | }, 233 | { 234 | "col":6, 235 | "row":6 236 | }, 237 | { 238 | "col":7, 239 | "row":6 240 | }, 241 | { 242 | "col":7, 243 | "row":5 244 | }, 245 | { 246 | "col":7, 247 | "row":4 248 | }, 249 | { 250 | "col":7, 251 | "row":3 252 | }, 253 | { 254 | "col":7, 255 | "row":2 256 | } 257 | ], 258 | "id": 2 259 | }, 260 | { 261 | "cells": [ 262 | { 263 | "col":7, 264 | "row":17 265 | }, 266 | { 267 | "col":7, 268 | "row":16 269 | }, 270 | { 271 | "col":7, 272 | "row":15 273 | }, 274 | { 275 | "col":7, 276 | "row":14 277 | }, 278 | { 279 | "col":7, 280 | "row":13 281 | }, 282 | { 283 | "col":6, 284 | "row":13 285 | }, 286 | { 287 | "col":5, 288 | "row":13 289 | }, 290 | { 291 | "col":4, 292 | "row":13 293 | }, 294 | { 295 | "col":3, 296 | "row":13 297 | }, 298 | { 299 | "col":2, 300 | "row":13 301 | }, 302 | { 303 | "col":2, 304 | "row":14 305 | }, 306 | { 307 | "col":2, 308 | "row":15 309 | }, 310 | { 311 | "col":2, 312 | "row":16 313 | }, 314 | { 315 | "col":2, 316 | "row":17 317 | } 318 | ], 319 | "id": 4 320 | } 321 | ] 322 | }, 323 | "baseUnits": [ 324 | { 325 | "typeId": 0, 326 | "maxHP": 15, 327 | "baseAttack": 15, 328 | "baseRange": 4, 329 | "target": "BOTH" , 330 | "isFlying": false, 331 | "isMultiple": false, 332 | "ap": 4 333 | }, 334 | { 335 | "typeId": 1, 336 | "maxHP": 30, 337 | "baseAttack": 5, 338 | "baseRange": 4, 339 | "target": "GROUND", 340 | "isFlying": false, 341 | "isMultiple": true, 342 | "ap": 3 343 | }, 344 | { 345 | "typeId": 2, 346 | "maxHP": 20, 347 | "baseAttack": 10, 348 | "baseRange": 4, 349 | "target": "AIR", 350 | "isFlying": false, 351 | "isMultiple": true, 352 | "ap": 4 353 | }, 354 | { 355 | "typeId": 3, 356 | "maxHP": 25, 357 | "baseAttack": 12, 358 | "baseRange": 1, 359 | "target": "GROUND", 360 | "isFlying": false, 361 | "isMultiple": false, 362 | "ap": 6 363 | }, 364 | { 365 | "typeId": 4, 366 | "maxHP": 50, 367 | "baseAttack": 10, 368 | "baseRange": 1, 369 | "target": "GROUND", 370 | "isFlying": false, 371 | "isMultiple": true, 372 | "ap": 10 373 | }, 374 | { 375 | "typeId": 5, 376 | "maxHP": 30, 377 | "baseAttack": 5, 378 | "baseRange": 1, 379 | "target": "AIR", 380 | "isFlying": true, 381 | "isMultiple": false, 382 | "ap": 3 383 | }, 384 | { 385 | "typeId": 6, 386 | "maxHP": 15, 387 | "baseAttack": 5, 388 | "baseRange": 4, 389 | "target": "BOTH", 390 | "isFlying": true, 391 | "isMultiple": false, 392 | "ap": 2 393 | }, 394 | { 395 | "typeId": 7, 396 | "maxHP": 30, 397 | "baseAttack": 8, 398 | "baseRange": 2, 399 | "target": "GROUND", 400 | "isFlying": true, 401 | "isMultiple": true, 402 | "ap": 5 403 | }, 404 | { 405 | "typeId": 8, 406 | "maxHP": 20, 407 | "baseAttack": 15, 408 | "baseRange": 2, 409 | "target": "BOTH", 410 | "isFlying": true, 411 | "isMultiple": false, 412 | "ap": 6 413 | } 414 | ], 415 | "spells": [ 416 | { 417 | "type": "HASTE", 418 | "typeId": 0, 419 | "priority": 3, 420 | "duration": 2, 421 | "range": 1, 422 | "power": 1, 423 | "target": "ALLIED" 424 | }, 425 | { 426 | "type": "HP", 427 | "typeId": 1, 428 | "priority": 0, 429 | "duration": 1, 430 | "range": 1, 431 | "power": -4, 432 | "target": "ENEMY" 433 | }, 434 | { 435 | "type": "HP", 436 | "typeId": 2, 437 | "priority": 1, 438 | "duration": 1, 439 | "range": 1, 440 | "power": 3, 441 | "target": "ALLIED" 442 | }, 443 | { 444 | "type": "TELE", 445 | "typeId": 3, 446 | "priority": 2, 447 | "duration": 1, 448 | "range": null, 449 | "power": null, 450 | "target": "SELF" 451 | }, 452 | { 453 | "type": "DUPLICATE", 454 | "typeId": 4, 455 | "priority": 4, 456 | "duration": 3, 457 | "range": 0, 458 | "power": 2, 459 | "target": "ALLIED" 460 | }, 461 | { 462 | "type": "HP", 463 | "typeId": 5, 464 | "priority": 0, 465 | "duration": 3, 466 | "range": 1, 467 | "power": -2, 468 | "target": "ENEMY" 469 | } 470 | ] 471 | } -------------------------------------------------------------------------------- /maps/1_v1.1.2.map: -------------------------------------------------------------------------------- 1 | { 2 | "gameConstants": { 3 | "maxAP": 10, 4 | "maxTurns": 100, 5 | "turnTimeout": 400, 6 | "pickTimeout": 400, 7 | "turnsToUpgrade": 23, 8 | "turnsToSpell": 10, 9 | "damageUpgradeAddition": 3, 10 | "rangeUpgradeAddition": 1, 11 | "deckSize": 9, 12 | "handSize": 5, 13 | "apAddition": 2 14 | }, 15 | "map": { 16 | "rows": 20, 17 | "cols": 20, 18 | "kings": [ 19 | { 20 | "playerId": 0, 21 | "center": { 22 | "row": 2, 23 | "col": 2 24 | }, 25 | "hp": 90, 26 | "attack": 10, 27 | "range": 6 28 | }, 29 | { 30 | "playerId": 1, 31 | "center": { 32 | "row": 17, 33 | "col": 17 34 | }, 35 | "hp": 90, 36 | "attack": 10, 37 | "range": 6 38 | }, 39 | { 40 | "playerId": 2, 41 | "center": { 42 | "row": 2, 43 | "col": 17 44 | }, 45 | "hp": 90, 46 | "attack": 10, 47 | "range": 6 48 | }, 49 | { 50 | "playerId": 3, 51 | "center": { 52 | "row": 17, 53 | "col": 2 54 | }, 55 | "hp": 90, 56 | "attack": 10, 57 | "range": 6 58 | } 59 | ], 60 | "paths": [ 61 | { 62 | "cells": [{"col":2,"row":2},{"col":3,"row":2},{"col":4,"row":2},{"col":5,"row":2},{"col":6,"row":2},{"col":7,"row":2},{"col":8,"row":2},{"col":9,"row":2},{"col":10,"row":2},{"col":11,"row":2},{"col":12,"row":2},{"col":13,"row":2},{"col":14,"row":2},{"col":15,"row":2},{"col":16,"row":2},{"col":17,"row":2}], 63 | "id": 0 64 | }, 65 | { 66 | "cells": [{"col":2,"row":17},{"col":3,"row":17},{"col":4,"row":17},{"col":5,"row":17},{"col":6,"row":17},{"col":7,"row":17},{"col":8,"row":17},{"col":9,"row":17},{"col":10,"row":17},{"col":11,"row":17},{"col":12,"row":17},{"col":13,"row":17},{"col":14,"row":17},{"col":15,"row":17},{"col":16,"row":17},{"col":17,"row":17}], 67 | "id": 1 68 | }, 69 | { 70 | "cells": [{"col":17,"row":2},{"col":17,"row":3},{"col":17,"row":4},{"col":17,"row":5},{"col":17,"row":6},{"col":17,"row":7},{"col":17,"row":8},{"col":17,"row":9},{"col":16,"row":9},{"col":15,"row":9},{"col":14,"row":9},{"col":13,"row":9},{"col":12,"row":9},{"col":11,"row":9},{"col":10,"row":9},{"col":9,"row":9},{"col":8,"row":9},{"col":7,"row":9},{"col":6,"row":9},{"col":5,"row":9},{"col":4,"row":9},{"col":3,"row":9},{"col":2,"row":9},{"col":2,"row":10},{"col":2,"row":11},{"col":2,"row":12},{"col":2,"row":13},{"col":2,"row":14},{"col":2,"row":15},{"col":2,"row":16},{"col":2,"row":17}], 71 | "id": 2 72 | }, 73 | { 74 | "cells": [{ 75 | "col":2, 76 | "row":2 77 | }, 78 | { 79 | "col":2, 80 | "row":3 81 | }, 82 | { 83 | "col":2, 84 | "row":4 85 | }, 86 | { 87 | "col":2, 88 | "row":5 89 | }, 90 | { 91 | "col":2, 92 | "row":6 93 | }, 94 | { 95 | "col":2, 96 | "row":7 97 | }, 98 | { 99 | "col":2, 100 | "row":8 101 | }, 102 | { 103 | "col":2, 104 | "row":9 105 | }, 106 | { 107 | "col":3, 108 | "row":9 109 | }, 110 | { 111 | "col":4, 112 | "row":9 113 | }, 114 | { 115 | "col":5, 116 | "row":9 117 | }, 118 | { 119 | "col":6, 120 | "row":9 121 | }, 122 | { 123 | "col":7, 124 | "row":9 125 | }, 126 | { 127 | "col":8, 128 | "row":9 129 | }, 130 | { 131 | "col":9, 132 | "row":9 133 | }, 134 | { 135 | "col":10, 136 | "row":9 137 | }, 138 | { 139 | "col":11, 140 | "row":9 141 | }, 142 | { 143 | "col":12, 144 | "row":9 145 | }, 146 | { 147 | "col":13, 148 | "row":9 149 | }, 150 | { 151 | "col":14, 152 | "row":9 153 | }, 154 | { 155 | "col":15, 156 | "row":9 157 | }, 158 | { 159 | "col":16, 160 | "row":9 161 | }, 162 | { 163 | "col":17, 164 | "row":9 165 | }, 166 | { 167 | "col":17, 168 | "row":10 169 | }, 170 | { 171 | "col":17, 172 | "row":11 173 | }, 174 | { 175 | "col":17, 176 | "row":12 177 | }, 178 | { 179 | "col":17, 180 | "row":13 181 | }, 182 | { 183 | "col":17, 184 | "row":14 185 | }, 186 | { 187 | "col":17, 188 | "row":15 189 | }, 190 | { 191 | "col":17, 192 | "row":16 193 | }, 194 | { 195 | "col":17, 196 | "row":17 197 | } 198 | ], 199 | "id": 3 200 | }, 201 | { 202 | "cells": [ 203 | { 204 | "col":17, 205 | "row":2 206 | }, 207 | { 208 | "col":16, 209 | "row":2 210 | }, 211 | { 212 | "col":15, 213 | "row":2 214 | }, 215 | { 216 | "col":14, 217 | "row":2 218 | }, 219 | { 220 | "col":13, 221 | "row":2 222 | }, 223 | { 224 | "col":12, 225 | "row":2 226 | }, 227 | { 228 | "col":11, 229 | "row":2 230 | }, 231 | { 232 | "col":10, 233 | "row":2 234 | }, 235 | { 236 | "col":10, 237 | "row":3 238 | }, 239 | { 240 | "col":10, 241 | "row":4 242 | }, 243 | { 244 | "col":10, 245 | "row":5 246 | }, 247 | { 248 | "col":10, 249 | "row":6 250 | }, 251 | { 252 | "col":10, 253 | "row":7 254 | }, 255 | { 256 | "col":10, 257 | "row":8 258 | }, 259 | { 260 | "col":10, 261 | "row":9 262 | }, 263 | { 264 | "col":10, 265 | "row":10 266 | }, 267 | { 268 | "col":10, 269 | "row":11 270 | }, 271 | { 272 | "col":10, 273 | "row":12 274 | }, 275 | { 276 | "col":10, 277 | "row":13 278 | }, 279 | { 280 | "col":10, 281 | "row":14 282 | }, 283 | { 284 | "col":10, 285 | "row":15 286 | }, 287 | { 288 | "col":10, 289 | "row":16 290 | }, 291 | { 292 | "col":10, 293 | "row":17 294 | }, 295 | { 296 | "col":9, 297 | "row":17 298 | }, 299 | { 300 | "col":8, 301 | "row":17 302 | }, 303 | { 304 | "col":7, 305 | "row":17 306 | }, 307 | { 308 | "col":6, 309 | "row":17 310 | }, 311 | { 312 | "col":5, 313 | "row":17 314 | }, 315 | { 316 | "col":4, 317 | "row":17 318 | }, 319 | { 320 | "col":3, 321 | "row":17 322 | }, 323 | { 324 | "col":2, 325 | "row":17 326 | } 327 | ], 328 | "id": 4 329 | } 330 | ] 331 | }, 332 | "baseUnits": [ 333 | { 334 | "typeId": 0, 335 | "maxHP": 15, 336 | "baseAttack": 15, 337 | "baseRange": 4, 338 | "target": "BOTH" , 339 | "isFlying": false, 340 | "isMultiple": false, 341 | "ap": 4 342 | }, 343 | { 344 | "typeId": 1, 345 | "maxHP": 30, 346 | "baseAttack": 5, 347 | "baseRange": 4, 348 | "target": "GROUND", 349 | "isFlying": false, 350 | "isMultiple": true, 351 | "ap": 3 352 | }, 353 | { 354 | "typeId": 2, 355 | "maxHP": 20, 356 | "baseAttack": 10, 357 | "baseRange": 4, 358 | "target": "AIR", 359 | "isFlying": false, 360 | "isMultiple": true, 361 | "ap": 4 362 | }, 363 | { 364 | "typeId": 3, 365 | "maxHP": 25, 366 | "baseAttack": 12, 367 | "baseRange": 1, 368 | "target": "GROUND", 369 | "isFlying": false, 370 | "isMultiple": false, 371 | "ap": 6 372 | }, 373 | { 374 | "typeId": 4, 375 | "maxHP": 50, 376 | "baseAttack": 10, 377 | "baseRange": 1, 378 | "target": "GROUND", 379 | "isFlying": false, 380 | "isMultiple": true, 381 | "ap": 10 382 | }, 383 | { 384 | "typeId": 5, 385 | "maxHP": 30, 386 | "baseAttack": 5, 387 | "baseRange": 1, 388 | "target": "AIR", 389 | "isFlying": true, 390 | "isMultiple": false, 391 | "ap": 3 392 | }, 393 | { 394 | "typeId": 6, 395 | "maxHP": 15, 396 | "baseAttack": 5, 397 | "baseRange": 4, 398 | "target": "BOTH", 399 | "isFlying": true, 400 | "isMultiple": false, 401 | "ap": 2 402 | }, 403 | { 404 | "typeId": 7, 405 | "maxHP": 30, 406 | "baseAttack": 8, 407 | "baseRange": 2, 408 | "target": "GROUND", 409 | "isFlying": true, 410 | "isMultiple": true, 411 | "ap": 5 412 | }, 413 | { 414 | "typeId": 8, 415 | "maxHP": 20, 416 | "baseAttack": 15, 417 | "baseRange": 2, 418 | "target": "BOTH", 419 | "isFlying": true, 420 | "isMultiple": false, 421 | "ap": 6 422 | } 423 | ], 424 | "spells": [ 425 | { 426 | "type": "HASTE", 427 | "typeId": 0, 428 | "priority": 3, 429 | "duration": 2, 430 | "range": 1, 431 | "power": 1, 432 | "target": "ALLIED" 433 | }, 434 | { 435 | "type": "HP", 436 | "typeId": 1, 437 | "priority": 0, 438 | "duration": 1, 439 | "range": 1, 440 | "power": -4, 441 | "target": "ENEMY" 442 | }, 443 | { 444 | "type": "HP", 445 | "typeId": 2, 446 | "priority": 1, 447 | "duration": 1, 448 | "range": 1, 449 | "power": 3, 450 | "target": "ALLIED" 451 | }, 452 | { 453 | "type": "TELE", 454 | "typeId": 3, 455 | "priority": 2, 456 | "duration": 1, 457 | "range": null, 458 | "power": null, 459 | "target": "SELF" 460 | }, 461 | { 462 | "type": "DUPLICATE", 463 | "typeId": 4, 464 | "priority": 4, 465 | "duration": 3, 466 | "range": 0, 467 | "power": 2, 468 | "target": "ALLIED" 469 | }, 470 | { 471 | "type": "HP", 472 | "typeId": 5, 473 | "priority": 0, 474 | "duration": 3, 475 | "range": 1, 476 | "power": -2, 477 | "target": "ENEMY" 478 | } 479 | ] 480 | } -------------------------------------------------------------------------------- /maps/2_v1.1.2.map: -------------------------------------------------------------------------------- 1 | { 2 | "gameConstants": { 3 | "maxAP": 10, 4 | "maxTurns": 100, 5 | "turnTimeout": 400, 6 | "pickTimeout": 400, 7 | "turnsToUpgrade": 23, 8 | "turnsToSpell": 10, 9 | "damageUpgradeAddition": 3, 10 | "rangeUpgradeAddition": 1, 11 | "deckSize": 9, 12 | "handSize": 5, 13 | "apAddition": 2 14 | }, 15 | "map": { 16 | "rows": 40, 17 | "cols": 20, 18 | "kings": [ 19 | { 20 | "playerId": 0, 21 | "center": { 22 | "row": 3, 23 | "col": 16 24 | }, 25 | "hp": 90, 26 | "attack": 10, 27 | "range": 6 28 | }, 29 | { 30 | "playerId": 1, 31 | "center": { 32 | "row": 36, 33 | "col": 3 34 | }, 35 | "hp": 90, 36 | "attack": 10, 37 | "range": 6 38 | }, 39 | { 40 | "playerId": 2, 41 | "center": { 42 | "row": 3, 43 | "col": 3 44 | }, 45 | "hp": 90, 46 | "attack": 10, 47 | "range": 6 48 | }, 49 | { 50 | "playerId": 3, 51 | "center": { 52 | "row": 36, 53 | "col": 16 54 | }, 55 | "hp": 90, 56 | "attack": 10, 57 | "range": 6 58 | } 59 | ], 60 | "paths": [ 61 | { 62 | "cells": [ 63 | { 64 | "col":16, 65 | "row":3 66 | }, 67 | { 68 | "col":16, 69 | "row":4 70 | }, 71 | { 72 | "col":16, 73 | "row":5 74 | }, 75 | { 76 | "col":15, 77 | "row":5 78 | }, 79 | { 80 | "col":15, 81 | "row":6 82 | }, 83 | { 84 | "col":15, 85 | "row":7 86 | }, 87 | { 88 | "col":14, 89 | "row":7 90 | }, 91 | { 92 | "col":14, 93 | "row":8 94 | }, 95 | { 96 | "col":14, 97 | "row":9 98 | }, 99 | { 100 | "col":13, 101 | "row":9 102 | }, 103 | { 104 | "col":13, 105 | "row":10 106 | }, 107 | { 108 | "col":13, 109 | "row":11 110 | }, 111 | { 112 | "col":12, 113 | "row":11 114 | }, 115 | { 116 | "col":12, 117 | "row":12 118 | }, 119 | { 120 | "col":12, 121 | "row":13 122 | }, 123 | { 124 | "col":11, 125 | "row":13 126 | }, 127 | { 128 | "col":11, 129 | "row":14 130 | }, 131 | { 132 | "col":11, 133 | "row":15 134 | }, 135 | { 136 | "col":10, 137 | "row":15 138 | }, 139 | { 140 | "col":10, 141 | "row":16 142 | }, 143 | { 144 | "col":10, 145 | "row":17 146 | }, 147 | { 148 | "col":9, 149 | "row":17 150 | }, 151 | { 152 | "col":9, 153 | "row":18 154 | }, 155 | { 156 | "col":9, 157 | "row":19 158 | }, 159 | { 160 | "col":8, 161 | "row":19 162 | }, 163 | { 164 | "col":8, 165 | "row":20 166 | }, 167 | { 168 | "col":8, 169 | "row":21 170 | }, 171 | { 172 | "col":7, 173 | "row":21 174 | }, 175 | { 176 | "col":7, 177 | "row":22 178 | }, 179 | { 180 | "col":7, 181 | "row":23 182 | }, 183 | { 184 | "col":6, 185 | "row":23 186 | }, 187 | { 188 | "col":6, 189 | "row":24 190 | }, 191 | { 192 | "col":6, 193 | "row":25 194 | }, 195 | { 196 | "col":5, 197 | "row":25 198 | }, 199 | { 200 | "col":5, 201 | "row":26 202 | }, 203 | { 204 | "col":5, 205 | "row":27 206 | }, 207 | { 208 | "col":4, 209 | "row":27 210 | }, 211 | { 212 | "col":4, 213 | "row":28 214 | }, 215 | { 216 | "col":4, 217 | "row":29 218 | }, 219 | { 220 | "col":3, 221 | "row":29 222 | }, 223 | { 224 | "col":3, 225 | "row":30 226 | }, 227 | { 228 | "col":3, 229 | "row":31 230 | }, 231 | { 232 | "col":3, 233 | "row":32 234 | }, 235 | { 236 | "col":3, 237 | "row":33 238 | }, 239 | { 240 | "col":3, 241 | "row":34 242 | }, 243 | { 244 | "col":3, 245 | "row":35 246 | }, 247 | { 248 | "col":3, 249 | "row":36 250 | } 251 | ], 252 | "id": 0 253 | }, 254 | { 255 | "cells": [ 256 | { 257 | "col":16, 258 | "row":36 259 | }, 260 | { 261 | "col":16, 262 | "row":35 263 | }, 264 | { 265 | "col":16, 266 | "row":34 267 | }, 268 | { 269 | "col":15, 270 | "row":34 271 | }, 272 | { 273 | "col":15, 274 | "row":33 275 | }, 276 | { 277 | "col":15, 278 | "row":32 279 | }, 280 | { 281 | "col":14, 282 | "row":32 283 | }, 284 | { 285 | "col":14, 286 | "row":31 287 | }, 288 | { 289 | "col":14, 290 | "row":30 291 | }, 292 | { 293 | "col":13, 294 | "row":30 295 | }, 296 | { 297 | "col":13, 298 | "row":29 299 | }, 300 | { 301 | "col":13, 302 | "row":28 303 | }, 304 | { 305 | "col":12, 306 | "row":28 307 | }, 308 | { 309 | "col":12, 310 | "row":27 311 | }, 312 | { 313 | "col":12, 314 | "row":26 315 | }, 316 | { 317 | "col":11, 318 | "row":26 319 | }, 320 | { 321 | "col":11, 322 | "row":25 323 | }, 324 | { 325 | "col":11, 326 | "row":24 327 | }, 328 | { 329 | "col":10, 330 | "row":24 331 | }, 332 | { 333 | "col":10, 334 | "row":23 335 | }, 336 | { 337 | "col":10, 338 | "row":22 339 | }, 340 | { 341 | "col":9, 342 | "row":22 343 | }, 344 | { 345 | "col":9, 346 | "row":21 347 | }, 348 | { 349 | "col":9, 350 | "row":20 351 | }, 352 | { 353 | "col":8, 354 | "row":20 355 | }, 356 | { 357 | "col":8, 358 | "row":19 359 | }, 360 | { 361 | "col":8, 362 | "row":18 363 | }, 364 | { 365 | "col":7, 366 | "row":18 367 | }, 368 | { 369 | "col":7, 370 | "row":17 371 | }, 372 | { 373 | "col":7, 374 | "row":16 375 | }, 376 | { 377 | "col":6, 378 | "row":16 379 | }, 380 | { 381 | "col":6, 382 | "row":15 383 | }, 384 | { 385 | "col":6, 386 | "row":14 387 | }, 388 | { 389 | "col":5, 390 | "row":14 391 | }, 392 | { 393 | "col":5, 394 | "row":13 395 | }, 396 | { 397 | "col":5, 398 | "row":12 399 | }, 400 | { 401 | "col":4, 402 | "row":12 403 | }, 404 | { 405 | "col":4, 406 | "row":11 407 | }, 408 | { 409 | "col":4, 410 | "row":10 411 | }, 412 | { 413 | "col":3, 414 | "row":10 415 | }, 416 | { 417 | "col":3, 418 | "row":9 419 | }, 420 | { 421 | "col":3, 422 | "row":8 423 | }, 424 | { 425 | "col":3, 426 | "row":7 427 | }, 428 | { 429 | "col":3, 430 | "row":6 431 | }, 432 | { 433 | "col":3, 434 | "row":5 435 | }, 436 | { 437 | "col":3, 438 | "row":4 439 | }, 440 | { 441 | "col":3, 442 | "row":3 443 | } 444 | ], 445 | "id": 1 446 | }, 447 | { 448 | "cells": [ 449 | { 450 | "col":3, 451 | "row":3 452 | }, 453 | { 454 | "col":4, 455 | "row":3 456 | }, 457 | { 458 | "col":5, 459 | "row":3 460 | }, 461 | { 462 | "col":6, 463 | "row":3 464 | }, 465 | { 466 | "col":7, 467 | "row":3 468 | }, 469 | { 470 | "col":8, 471 | "row":3 472 | }, 473 | { 474 | "col":9, 475 | "row":3 476 | }, 477 | { 478 | "col":10, 479 | "row":3 480 | }, 481 | { 482 | "col":11, 483 | "row":3 484 | }, 485 | { 486 | "col":12, 487 | "row":3 488 | }, 489 | { 490 | "col":13, 491 | "row":3 492 | }, 493 | { 494 | "col":14, 495 | "row":3 496 | }, 497 | { 498 | "col":15, 499 | "row":3 500 | }, 501 | { 502 | "col":16, 503 | "row":3 504 | } 505 | ], 506 | "id": 2 507 | }, 508 | { 509 | "cells": [ 510 | { 511 | "col":3, 512 | "row":36 513 | }, 514 | { 515 | "col":4, 516 | "row":36 517 | }, 518 | { 519 | "col":5, 520 | "row":36 521 | }, 522 | { 523 | "col":6, 524 | "row":36 525 | }, 526 | { 527 | "col":7, 528 | "row":36 529 | }, 530 | { 531 | "col":8, 532 | "row":36 533 | }, 534 | { 535 | "col":9, 536 | "row":36 537 | }, 538 | { 539 | "col":10, 540 | "row":36 541 | }, 542 | { 543 | "col":11, 544 | "row":36 545 | }, 546 | { 547 | "col":12, 548 | "row":36 549 | }, 550 | { 551 | "col":13, 552 | "row":36 553 | }, 554 | { 555 | "col":14, 556 | "row":36 557 | }, 558 | { 559 | "col":15, 560 | "row":36 561 | }, 562 | { 563 | "col":16, 564 | "row":36 565 | } 566 | ], 567 | "id": 3 568 | } 569 | ] 570 | }, 571 | "baseUnits": [ 572 | { 573 | "typeId": 0, 574 | "maxHP": 15, 575 | "baseAttack": 15, 576 | "baseRange": 4, 577 | "target": "BOTH" , 578 | "isFlying": false, 579 | "isMultiple": false, 580 | "ap": 4 581 | }, 582 | { 583 | "typeId": 1, 584 | "maxHP": 30, 585 | "baseAttack": 5, 586 | "baseRange": 4, 587 | "target": "GROUND", 588 | "isFlying": false, 589 | "isMultiple": true, 590 | "ap": 3 591 | }, 592 | { 593 | "typeId": 2, 594 | "maxHP": 20, 595 | "baseAttack": 10, 596 | "baseRange": 4, 597 | "target": "AIR", 598 | "isFlying": false, 599 | "isMultiple": true, 600 | "ap": 4 601 | }, 602 | { 603 | "typeId": 3, 604 | "maxHP": 25, 605 | "baseAttack": 12, 606 | "baseRange": 1, 607 | "target": "GROUND", 608 | "isFlying": false, 609 | "isMultiple": false, 610 | "ap": 6 611 | }, 612 | { 613 | "typeId": 4, 614 | "maxHP": 50, 615 | "baseAttack": 10, 616 | "baseRange": 1, 617 | "target": "GROUND", 618 | "isFlying": false, 619 | "isMultiple": true, 620 | "ap": 10 621 | }, 622 | { 623 | "typeId": 5, 624 | "maxHP": 30, 625 | "baseAttack": 5, 626 | "baseRange": 1, 627 | "target": "AIR", 628 | "isFlying": true, 629 | "isMultiple": false, 630 | "ap": 3 631 | }, 632 | { 633 | "typeId": 6, 634 | "maxHP": 15, 635 | "baseAttack": 5, 636 | "baseRange": 4, 637 | "target": "BOTH", 638 | "isFlying": true, 639 | "isMultiple": false, 640 | "ap": 2 641 | }, 642 | { 643 | "typeId": 7, 644 | "maxHP": 30, 645 | "baseAttack": 8, 646 | "baseRange": 2, 647 | "target": "GROUND", 648 | "isFlying": true, 649 | "isMultiple": true, 650 | "ap": 5 651 | }, 652 | { 653 | "typeId": 8, 654 | "maxHP": 20, 655 | "baseAttack": 15, 656 | "baseRange": 2, 657 | "target": "BOTH", 658 | "isFlying": true, 659 | "isMultiple": false, 660 | "ap": 6 661 | } 662 | ], 663 | "spells": [ 664 | { 665 | "type": "HASTE", 666 | "typeId": 0, 667 | "priority": 3, 668 | "duration": 2, 669 | "range": 1, 670 | "power": 1, 671 | "target": "ALLIED" 672 | }, 673 | { 674 | "type": "HP", 675 | "typeId": 1, 676 | "priority": 0, 677 | "duration": 1, 678 | "range": 1, 679 | "power": -4, 680 | "target": "ENEMY" 681 | }, 682 | { 683 | "type": "HP", 684 | "typeId": 2, 685 | "priority": 1, 686 | "duration": 1, 687 | "range": 1, 688 | "power": 3, 689 | "target": "ALLIED" 690 | }, 691 | { 692 | "type": "TELE", 693 | "typeId": 3, 694 | "priority": 2, 695 | "duration": 1, 696 | "range": null, 697 | "power": null, 698 | "target": "SELF" 699 | }, 700 | { 701 | "type": "DUPLICATE", 702 | "typeId": 4, 703 | "priority": 4, 704 | "duration": 3, 705 | "range": 0, 706 | "power": 2, 707 | "target": "ALLIED" 708 | }, 709 | { 710 | "type": "HP", 711 | "typeId": 5, 712 | "priority": 0, 713 | "duration": 3, 714 | "range": 1, 715 | "power": -2, 716 | "target": "ENEMY" 717 | } 718 | ] 719 | } -------------------------------------------------------------------------------- /maps/final3.map: -------------------------------------------------------------------------------- 1 | { 2 | "map": { 3 | "rows": 20, 4 | "cols": 20, 5 | "kings": [ 6 | { 7 | "playerId": 0, 8 | "center": { 9 | "row": 3, 10 | "col": 2 11 | }, 12 | "hp": 90, 13 | "attack": 10, 14 | "range": 6 15 | }, 16 | { 17 | "playerId": 1, 18 | "center": { 19 | "row": 14, 20 | "col": 15 21 | }, 22 | "hp": 90, 23 | "attack": 10, 24 | "range": 6 25 | }, 26 | { 27 | "playerId": 2, 28 | "center": { 29 | "row": 14, 30 | "col": 4 31 | }, 32 | "hp": 90, 33 | "attack": 10, 34 | "range": 6 35 | }, 36 | { 37 | "playerId": 3, 38 | "center": { 39 | "row": 3, 40 | "col": 17 41 | }, 42 | "hp": 90, 43 | "attack": 10, 44 | "range": 6 45 | } 46 | ], 47 | "paths": [ 48 | { 49 | "cells": [ 50 | { 51 | "row": 3, 52 | "col": 2 53 | }, 54 | { 55 | "row": 4, 56 | "col": 2 57 | }, 58 | { 59 | "row": 5, 60 | "col": 2 61 | }, 62 | { 63 | "row": 6, 64 | "col": 2 65 | }, 66 | { 67 | "row": 7, 68 | "col": 2 69 | }, 70 | { 71 | "row": 8, 72 | "col": 2 73 | }, 74 | { 75 | "row": 9, 76 | "col": 2 77 | }, 78 | { 79 | "row": 10, 80 | "col": 2 81 | }, 82 | { 83 | "row": 11, 84 | "col": 2 85 | }, 86 | { 87 | "row": 12, 88 | "col": 2 89 | }, 90 | { 91 | "row": 13, 92 | "col": 2 93 | }, 94 | { 95 | "row": 14, 96 | "col": 2 97 | }, 98 | { 99 | "row": 14, 100 | "col": 3 101 | }, 102 | { 103 | "row": 14, 104 | "col": 4 105 | } 106 | ], 107 | "id": 0 108 | }, 109 | { 110 | "cells": [ 111 | { 112 | "row": 3, 113 | "col": 17 114 | }, 115 | { 116 | "row": 4, 117 | "col": 17 118 | }, 119 | { 120 | "row": 5, 121 | "col": 17 122 | }, 123 | { 124 | "row": 6, 125 | "col": 17 126 | }, 127 | { 128 | "row": 7, 129 | "col": 17 130 | }, 131 | { 132 | "row": 8, 133 | "col": 17 134 | }, 135 | { 136 | "row": 9, 137 | "col": 17 138 | }, 139 | { 140 | "row": 10, 141 | "col": 17 142 | }, 143 | { 144 | "row": 11, 145 | "col": 17 146 | }, 147 | { 148 | "row": 12, 149 | "col": 17 150 | }, 151 | { 152 | "row": 13, 153 | "col": 17 154 | }, 155 | { 156 | "row": 14, 157 | "col": 17 158 | }, 159 | { 160 | "row": 14, 161 | "col": 16 162 | }, 163 | { 164 | "row": 14, 165 | "col": 15 166 | } 167 | ], 168 | "id": 1 169 | }, 170 | { 171 | "cells": [ 172 | { 173 | "row": 3, 174 | "col": 2 175 | }, 176 | { 177 | "row": 3, 178 | "col": 3 179 | }, 180 | { 181 | "row": 3, 182 | "col": 4 183 | }, 184 | { 185 | "row": 3, 186 | "col": 5 187 | }, 188 | { 189 | "row": 3, 190 | "col": 6 191 | }, 192 | { 193 | "row": 3, 194 | "col": 7 195 | }, 196 | { 197 | "row": 3, 198 | "col": 8 199 | }, 200 | { 201 | "row": 3, 202 | "col": 9 203 | }, 204 | { 205 | "row": 3, 206 | "col": 10 207 | }, 208 | { 209 | "row": 3, 210 | "col": 11 211 | }, 212 | { 213 | "row": 3, 214 | "col": 12 215 | }, 216 | { 217 | "row": 3, 218 | "col": 13 219 | }, 220 | { 221 | "row": 3, 222 | "col": 14 223 | }, 224 | { 225 | "row": 3, 226 | "col": 15 227 | }, 228 | { 229 | "row": 3, 230 | "col": 16 231 | }, 232 | { 233 | "row": 3, 234 | "col": 17 235 | } 236 | ], 237 | "id": 2 238 | }, 239 | { 240 | "cells": [ 241 | { 242 | "row": 14, 243 | "col": 4 244 | }, 245 | { 246 | "row": 14, 247 | "col": 5 248 | }, 249 | { 250 | "row": 14, 251 | "col": 6 252 | }, 253 | { 254 | "row": 14, 255 | "col": 7 256 | }, 257 | { 258 | "row": 13, 259 | "col": 7 260 | }, 261 | { 262 | "row": 12, 263 | "col": 7 264 | }, 265 | { 266 | "row": 11, 267 | "col": 7 268 | }, 269 | { 270 | "row": 10, 271 | "col": 7 272 | }, 273 | { 274 | "row": 9, 275 | "col": 7 276 | }, 277 | { 278 | "row": 8, 279 | "col": 7 280 | }, 281 | { 282 | "row": 7, 283 | "col": 7 284 | }, 285 | { 286 | "row": 6, 287 | "col": 7 288 | }, 289 | { 290 | "row": 5, 291 | "col": 7 292 | }, 293 | { 294 | "row": 4, 295 | "col": 7 296 | }, 297 | { 298 | "row": 3, 299 | "col": 7 300 | }, 301 | { 302 | "row": 3, 303 | "col": 8 304 | }, 305 | { 306 | "row": 3, 307 | "col": 9 308 | }, 309 | { 310 | "row": 3, 311 | "col": 10 312 | }, 313 | { 314 | "row": 3, 315 | "col": 11 316 | }, 317 | { 318 | "row": 3, 319 | "col": 12 320 | }, 321 | { 322 | "row": 3, 323 | "col": 13 324 | }, 325 | { 326 | "row": 3, 327 | "col": 14 328 | }, 329 | { 330 | "row": 3, 331 | "col": 15 332 | }, 333 | { 334 | "row": 3, 335 | "col": 16 336 | }, 337 | { 338 | "row": 3, 339 | "col": 17 340 | } 341 | ], 342 | "id": 3 343 | }, 344 | { 345 | "cells": [ 346 | { 347 | "row": 14, 348 | "col": 15 349 | }, 350 | { 351 | "row": 14, 352 | "col": 14 353 | }, 354 | { 355 | "row": 14, 356 | "col": 13 357 | }, 358 | { 359 | "row": 14, 360 | "col": 12 361 | }, 362 | { 363 | "row": 13, 364 | "col": 12 365 | }, 366 | { 367 | "row": 12, 368 | "col": 12 369 | }, 370 | { 371 | "row": 11, 372 | "col": 12 373 | }, 374 | { 375 | "row": 10, 376 | "col": 12 377 | }, 378 | { 379 | "row": 9, 380 | "col": 12 381 | }, 382 | { 383 | "row": 8, 384 | "col": 12 385 | }, 386 | { 387 | "row": 7, 388 | "col": 12 389 | }, 390 | { 391 | "row": 6, 392 | "col": 12 393 | }, 394 | { 395 | "row": 5, 396 | "col": 12 397 | }, 398 | { 399 | "row": 4, 400 | "col": 12 401 | }, 402 | { 403 | "row": 3, 404 | "col": 12 405 | }, 406 | { 407 | "row": 3, 408 | "col": 11 409 | }, 410 | { 411 | "row": 3, 412 | "col": 10 413 | }, 414 | { 415 | "row": 3, 416 | "col": 9 417 | }, 418 | { 419 | "row": 3, 420 | "col": 8 421 | }, 422 | { 423 | "row": 3, 424 | "col": 7 425 | }, 426 | { 427 | "row": 3, 428 | "col": 6 429 | }, 430 | { 431 | "row": 3, 432 | "col": 5 433 | }, 434 | { 435 | "row": 3, 436 | "col": 4 437 | }, 438 | { 439 | "row": 3, 440 | "col": 3 441 | }, 442 | { 443 | "row": 3, 444 | "col": 2 445 | } 446 | ], 447 | "id": 4 448 | }, 449 | { 450 | "cells": [ 451 | { 452 | "row": 14, 453 | "col": 15 454 | }, 455 | { 456 | "row": 15, 457 | "col": 15 458 | }, 459 | { 460 | "row": 16, 461 | "col": 15 462 | }, 463 | { 464 | "row": 17, 465 | "col": 15 466 | }, 467 | { 468 | "row": 18, 469 | "col": 15 470 | }, 471 | { 472 | "row": 18, 473 | "col": 14 474 | }, 475 | { 476 | "row": 18, 477 | "col": 13 478 | }, 479 | { 480 | "row": 18, 481 | "col": 12 482 | }, 483 | { 484 | "row": 18, 485 | "col": 11 486 | }, 487 | { 488 | "row": 18, 489 | "col": 10 490 | }, 491 | { 492 | "row": 18, 493 | "col": 9 494 | }, 495 | { 496 | "row": 18, 497 | "col": 8 498 | }, 499 | { 500 | "row": 18, 501 | "col": 7 502 | }, 503 | { 504 | "row": 18, 505 | "col": 6 506 | }, 507 | { 508 | "row": 18, 509 | "col": 5 510 | }, 511 | { 512 | "row": 18, 513 | "col": 4 514 | }, 515 | { 516 | "row": 17, 517 | "col": 4 518 | }, 519 | { 520 | "row": 16, 521 | "col": 4 522 | }, 523 | { 524 | "row": 15, 525 | "col": 4 526 | }, 527 | { 528 | "row": 14, 529 | "col": 4 530 | } 531 | ], 532 | "id": 5 533 | } 534 | ] 535 | }, 536 | "gameConstants": { 537 | "maxAP": 20, 538 | "maxTurns": 180, 539 | "turnTimeout": 800, 540 | "pickTimeout": 5000, 541 | "turnsToUpgrade": 23, 542 | "turnsToSpell": 10, 543 | "damageUpgradeAddition": 3, 544 | "rangeUpgradeAddition": 1, 545 | "deckSize": 9, 546 | "handSize": 5, 547 | "apAddition": 2 548 | }, 549 | "baseUnits": [ 550 | { 551 | "typeId": 0, 552 | "maxHP": 16, 553 | "baseAttack": 15, 554 | "baseRange": 3, 555 | "target": "BOTH", 556 | "isFlying": false, 557 | "isMultiple": false, 558 | "ap": 5 559 | }, 560 | { 561 | "typeId": 1, 562 | "maxHP": 25, 563 | "baseAttack": 5, 564 | "baseRange": 4, 565 | "target": "GROUND", 566 | "isFlying": false, 567 | "isMultiple": true, 568 | "ap": 4 569 | }, 570 | { 571 | "typeId": 2, 572 | "maxHP": 15, 573 | "baseAttack": 10, 574 | "baseRange": 3, 575 | "target": "AIR", 576 | "isFlying": false, 577 | "isMultiple": true, 578 | "ap": 4 579 | }, 580 | { 581 | "typeId": 3, 582 | "maxHP": 25, 583 | "baseAttack": 15, 584 | "baseRange": 1, 585 | "target": "GROUND", 586 | "isFlying": false, 587 | "isMultiple": false, 588 | "ap": 5 589 | }, 590 | { 591 | "typeId": 4, 592 | "maxHP": 55, 593 | "baseAttack": 10, 594 | "baseRange": 1, 595 | "target": "GROUND", 596 | "isFlying": false, 597 | "isMultiple": true, 598 | "ap": 6 599 | }, 600 | { 601 | "typeId": 5, 602 | "maxHP": 27, 603 | "baseAttack": 5, 604 | "baseRange": 1, 605 | "target": "AIR", 606 | "isFlying": true, 607 | "isMultiple": false, 608 | "ap": 3 609 | }, 610 | { 611 | "typeId": 6, 612 | "maxHP": 15, 613 | "baseAttack": 5, 614 | "baseRange": 4, 615 | "target": "BOTH", 616 | "isFlying": true, 617 | "isMultiple": false, 618 | "ap": 3 619 | }, 620 | { 621 | "typeId": 7, 622 | "maxHP": 25, 623 | "baseAttack": 10, 624 | "baseRange": 2, 625 | "target": "GROUND", 626 | "isFlying": true, 627 | "isMultiple": true, 628 | "ap": 5 629 | }, 630 | { 631 | "typeId": 8, 632 | "maxHP": 20, 633 | "baseAttack": 20, 634 | "baseRange": 2, 635 | "target": "BOTH", 636 | "isFlying": true, 637 | "isMultiple": false, 638 | "ap": 6 639 | } 640 | ], 641 | "spells": [ 642 | { 643 | "type": "HASTE", 644 | "typeId": 0, 645 | "priority": 3, 646 | "duration": 2, 647 | "range": 1, 648 | "power": 1, 649 | "target": "ALLIED" 650 | }, 651 | { 652 | "type": "HP", 653 | "typeId": 1, 654 | "priority": 0, 655 | "duration": 1, 656 | "range": 1, 657 | "power": -4, 658 | "target": "ENEMY" 659 | }, 660 | { 661 | "type": "HP", 662 | "typeId": 2, 663 | "priority": 1, 664 | "duration": 1, 665 | "range": 1, 666 | "power": 3, 667 | "target": "ALLIED" 668 | }, 669 | { 670 | "type": "TELE", 671 | "typeId": 3, 672 | "priority": 2, 673 | "duration": 1, 674 | "range": null, 675 | "power": null, 676 | "target": "SELF" 677 | }, 678 | { 679 | "type": "DUPLICATE", 680 | "typeId": 4, 681 | "priority": 4, 682 | "duration": 3, 683 | "range": 0, 684 | "power": 2, 685 | "target": "ALLIED" 686 | }, 687 | { 688 | "type": "HP", 689 | "typeId": 5, 690 | "priority": 0, 691 | "duration": 3, 692 | "range": 1, 693 | "power": -2, 694 | "target": "ENEMY" 695 | } 696 | ] 697 | } 698 | -------------------------------------------------------------------------------- /maps/final2.map: -------------------------------------------------------------------------------- 1 | { 2 | "map": { 3 | "rows": 20, 4 | "cols": 20, 5 | "kings": [ 6 | { 7 | "playerId": 0, 8 | "center": { 9 | "row": 2, 10 | "col": 9 11 | }, 12 | "hp": 90, 13 | "attack": 10, 14 | "range": 6 15 | }, 16 | { 17 | "playerId": 1, 18 | "center": { 19 | "row": 9, 20 | "col": 2 21 | }, 22 | "hp": 90, 23 | "attack": 10, 24 | "range": 6 25 | }, 26 | { 27 | "playerId": 2, 28 | "center": { 29 | "row": 17, 30 | "col": 9 31 | }, 32 | "hp": 90, 33 | "attack": 10, 34 | "range": 6 35 | }, 36 | { 37 | "playerId": 3, 38 | "center": { 39 | "row": 9, 40 | "col": 17 41 | }, 42 | "hp": 90, 43 | "attack": 10, 44 | "range": 6 45 | } 46 | ], 47 | "paths": [ 48 | { 49 | "cells": [ 50 | { 51 | "row": 2, 52 | "col": 9 53 | }, 54 | { 55 | "row": 3, 56 | "col": 9 57 | }, 58 | { 59 | "row": 4, 60 | "col": 9 61 | }, 62 | { 63 | "row": 5, 64 | "col": 9 65 | }, 66 | { 67 | "row": 6, 68 | "col": 9 69 | }, 70 | { 71 | "row": 7, 72 | "col": 9 73 | }, 74 | { 75 | "row": 8, 76 | "col": 9 77 | }, 78 | { 79 | "row": 9, 80 | "col": 9 81 | }, 82 | { 83 | "row": 10, 84 | "col": 9 85 | }, 86 | { 87 | "row": 11, 88 | "col": 9 89 | }, 90 | { 91 | "row": 12, 92 | "col": 9 93 | }, 94 | { 95 | "row": 13, 96 | "col": 9 97 | }, 98 | { 99 | "row": 14, 100 | "col": 9 101 | }, 102 | { 103 | "row": 15, 104 | "col": 9 105 | }, 106 | { 107 | "row": 16, 108 | "col": 9 109 | }, 110 | { 111 | "row": 17, 112 | "col": 9 113 | } 114 | ], 115 | "id": 0 116 | }, 117 | { 118 | "cells": [ 119 | { 120 | "row": 9, 121 | "col": 2 122 | }, 123 | { 124 | "row": 9, 125 | "col": 3 126 | }, 127 | { 128 | "row": 9, 129 | "col": 4 130 | }, 131 | { 132 | "row": 9, 133 | "col": 5 134 | }, 135 | { 136 | "row": 9, 137 | "col": 6 138 | }, 139 | { 140 | "row": 9, 141 | "col": 7 142 | }, 143 | { 144 | "row": 9, 145 | "col": 8 146 | }, 147 | { 148 | "row": 9, 149 | "col": 9 150 | }, 151 | { 152 | "row": 9, 153 | "col": 10 154 | }, 155 | { 156 | "row": 9, 157 | "col": 11 158 | }, 159 | { 160 | "row": 9, 161 | "col": 12 162 | }, 163 | { 164 | "row": 9, 165 | "col": 13 166 | }, 167 | { 168 | "row": 9, 169 | "col": 14 170 | }, 171 | { 172 | "row": 9, 173 | "col": 15 174 | }, 175 | { 176 | "row": 9, 177 | "col": 16 178 | }, 179 | { 180 | "row": 9, 181 | "col": 17 182 | } 183 | ], 184 | "id": 1 185 | }, 186 | { 187 | "cells": [ 188 | { 189 | "row": 17, 190 | "col": 9 191 | }, 192 | { 193 | "row": 17, 194 | "col": 10 195 | }, 196 | { 197 | "row": 17, 198 | "col": 11 199 | }, 200 | { 201 | "row": 17, 202 | "col": 12 203 | }, 204 | { 205 | "row": 17, 206 | "col": 13 207 | }, 208 | { 209 | "row": 17, 210 | "col": 14 211 | }, 212 | { 213 | "row": 17, 214 | "col": 15 215 | }, 216 | { 217 | "row": 17, 218 | "col": 16 219 | }, 220 | { 221 | "row": 17, 222 | "col": 17 223 | }, 224 | { 225 | "row": 16, 226 | "col": 17 227 | }, 228 | { 229 | "row": 15, 230 | "col": 17 231 | }, 232 | { 233 | "row": 14, 234 | "col": 17 235 | }, 236 | { 237 | "row": 13, 238 | "col": 17 239 | }, 240 | { 241 | "row": 12, 242 | "col": 17 243 | }, 244 | { 245 | "row": 11, 246 | "col": 17 247 | }, 248 | { 249 | "row": 10, 250 | "col": 17 251 | }, 252 | { 253 | "row": 9, 254 | "col": 17 255 | } 256 | ], 257 | "id": 2 258 | }, 259 | { 260 | "cells": [ 261 | { 262 | "row": 2, 263 | "col": 9 264 | }, 265 | { 266 | "row": 2, 267 | "col": 10 268 | }, 269 | { 270 | "row": 2, 271 | "col": 11 272 | }, 273 | { 274 | "row": 2, 275 | "col": 12 276 | }, 277 | { 278 | "row": 2, 279 | "col": 13 280 | }, 281 | { 282 | "row": 2, 283 | "col": 14 284 | }, 285 | { 286 | "row": 2, 287 | "col": 15 288 | }, 289 | { 290 | "row": 2, 291 | "col": 16 292 | }, 293 | { 294 | "row": 2, 295 | "col": 17 296 | }, 297 | { 298 | "row": 3, 299 | "col": 17 300 | }, 301 | { 302 | "row": 4, 303 | "col": 17 304 | }, 305 | { 306 | "row": 5, 307 | "col": 17 308 | }, 309 | { 310 | "row": 6, 311 | "col": 17 312 | }, 313 | { 314 | "row": 7, 315 | "col": 17 316 | }, 317 | { 318 | "row": 8, 319 | "col": 17 320 | }, 321 | { 322 | "row": 9, 323 | "col": 17 324 | } 325 | ], 326 | "id": 3 327 | }, 328 | { 329 | "cells": [ 330 | { 331 | "row": 17, 332 | "col": 9 333 | }, 334 | { 335 | "row": 17, 336 | "col": 8 337 | }, 338 | { 339 | "row": 17, 340 | "col": 7 341 | }, 342 | { 343 | "row": 17, 344 | "col": 6 345 | }, 346 | { 347 | "row": 17, 348 | "col": 5 349 | }, 350 | { 351 | "row": 17, 352 | "col": 4 353 | }, 354 | { 355 | "row": 17, 356 | "col": 3 357 | }, 358 | { 359 | "row": 17, 360 | "col": 2 361 | }, 362 | { 363 | "row": 16, 364 | "col": 2 365 | }, 366 | { 367 | "row": 15, 368 | "col": 2 369 | }, 370 | { 371 | "row": 14, 372 | "col": 2 373 | }, 374 | { 375 | "row": 13, 376 | "col": 2 377 | }, 378 | { 379 | "row": 12, 380 | "col": 2 381 | }, 382 | { 383 | "row": 11, 384 | "col": 2 385 | }, 386 | { 387 | "row": 10, 388 | "col": 2 389 | }, 390 | { 391 | "row": 9, 392 | "col": 2 393 | } 394 | ], 395 | "id": 4 396 | }, 397 | { 398 | "cells": [ 399 | { 400 | "row": 2, 401 | "col": 9 402 | }, 403 | { 404 | "row": 2, 405 | "col": 8 406 | }, 407 | { 408 | "row": 2, 409 | "col": 7 410 | }, 411 | { 412 | "row": 2, 413 | "col": 6 414 | }, 415 | { 416 | "row": 2, 417 | "col": 5 418 | }, 419 | { 420 | "row": 2, 421 | "col": 4 422 | }, 423 | { 424 | "row": 2, 425 | "col": 3 426 | }, 427 | { 428 | "row": 2, 429 | "col": 2 430 | }, 431 | { 432 | "row": 3, 433 | "col": 2 434 | }, 435 | { 436 | "row": 4, 437 | "col": 2 438 | }, 439 | { 440 | "row": 5, 441 | "col": 2 442 | }, 443 | { 444 | "row": 6, 445 | "col": 2 446 | }, 447 | { 448 | "row": 7, 449 | "col": 2 450 | }, 451 | { 452 | "row": 8, 453 | "col": 2 454 | }, 455 | { 456 | "row": 9, 457 | "col": 2 458 | } 459 | ], 460 | "id": 5 461 | }, 462 | { 463 | "cells": [ 464 | { 465 | "row": 17, 466 | "col": 9 467 | }, 468 | { 469 | "row": 16, 470 | "col": 9 471 | }, 472 | { 473 | "row": 15, 474 | "col": 9 475 | }, 476 | { 477 | "row": 14, 478 | "col": 9 479 | }, 480 | { 481 | "row": 13, 482 | "col": 9 483 | }, 484 | { 485 | "row": 12, 486 | "col": 9 487 | }, 488 | { 489 | "row": 11, 490 | "col": 9 491 | }, 492 | { 493 | "row": 10, 494 | "col": 9 495 | }, 496 | { 497 | "row": 9, 498 | "col": 9 499 | }, 500 | { 501 | "row": 9, 502 | "col": 10 503 | }, 504 | { 505 | "row": 9, 506 | "col": 11 507 | }, 508 | { 509 | "row": 9, 510 | "col": 12 511 | }, 512 | { 513 | "row": 9, 514 | "col": 13 515 | }, 516 | { 517 | "row": 9, 518 | "col": 14 519 | }, 520 | { 521 | "row": 9, 522 | "col": 15 523 | }, 524 | { 525 | "row": 9, 526 | "col": 16 527 | }, 528 | { 529 | "row": 9, 530 | "col": 17 531 | } 532 | ], 533 | "id": 6 534 | }, 535 | { 536 | "cells": [ 537 | { 538 | "row": 2, 539 | "col": 9 540 | }, 541 | { 542 | "row": 3, 543 | "col": 9 544 | }, 545 | { 546 | "row": 4, 547 | "col": 9 548 | }, 549 | { 550 | "row": 5, 551 | "col": 9 552 | }, 553 | { 554 | "row": 6, 555 | "col": 9 556 | }, 557 | { 558 | "row": 7, 559 | "col": 9 560 | }, 561 | { 562 | "row": 8, 563 | "col": 9 564 | }, 565 | { 566 | "row": 9, 567 | "col": 9 568 | }, 569 | { 570 | "row": 9, 571 | "col": 10 572 | }, 573 | { 574 | "row": 9, 575 | "col": 11 576 | }, 577 | { 578 | "row": 9, 579 | "col": 12 580 | }, 581 | { 582 | "row": 9, 583 | "col": 13 584 | }, 585 | { 586 | "row": 9, 587 | "col": 14 588 | }, 589 | { 590 | "row": 9, 591 | "col": 15 592 | }, 593 | { 594 | "row": 9, 595 | "col": 16 596 | }, 597 | { 598 | "row": 9, 599 | "col": 17 600 | } 601 | ], 602 | "id": 7 603 | }, 604 | { 605 | "cells": [ 606 | { 607 | "row": 17, 608 | "col": 9 609 | }, 610 | { 611 | "row": 16, 612 | "col": 9 613 | }, 614 | { 615 | "row": 15, 616 | "col": 9 617 | }, 618 | { 619 | "row": 14, 620 | "col": 9 621 | }, 622 | { 623 | "row": 13, 624 | "col": 9 625 | }, 626 | { 627 | "row": 12, 628 | "col": 9 629 | }, 630 | { 631 | "row": 11, 632 | "col": 9 633 | }, 634 | { 635 | "row": 10, 636 | "col": 9 637 | }, 638 | { 639 | "row": 9, 640 | "col": 9 641 | }, 642 | { 643 | "row": 9, 644 | "col": 8 645 | }, 646 | { 647 | "row": 9, 648 | "col": 7 649 | }, 650 | { 651 | "row": 9, 652 | "col": 6 653 | }, 654 | { 655 | "row": 9, 656 | "col": 5 657 | }, 658 | { 659 | "row": 9, 660 | "col": 4 661 | }, 662 | { 663 | "row": 9, 664 | "col": 3 665 | }, 666 | { 667 | "row": 9, 668 | "col": 2 669 | } 670 | ], 671 | "id": 8 672 | }, 673 | { 674 | "cells": [ 675 | { 676 | "row": 2, 677 | "col": 9 678 | }, 679 | { 680 | "row": 3, 681 | "col": 9 682 | }, 683 | { 684 | "row": 4, 685 | "col": 9 686 | }, 687 | { 688 | "row": 5, 689 | "col": 9 690 | }, 691 | { 692 | "row": 6, 693 | "col": 9 694 | }, 695 | { 696 | "row": 7, 697 | "col": 9 698 | }, 699 | { 700 | "row": 8, 701 | "col": 9 702 | }, 703 | { 704 | "row": 9, 705 | "col": 9 706 | }, 707 | { 708 | "row": 9, 709 | "col": 8 710 | }, 711 | { 712 | "row": 9, 713 | "col": 7 714 | }, 715 | { 716 | "row": 9, 717 | "col": 6 718 | }, 719 | { 720 | "row": 9, 721 | "col": 5 722 | }, 723 | { 724 | "row": 9, 725 | "col": 4 726 | }, 727 | { 728 | "row": 9, 729 | "col": 3 730 | }, 731 | { 732 | "row": 9, 733 | "col": 2 734 | } 735 | ], 736 | "id": 9 737 | } 738 | ] 739 | }, 740 | "gameConstants": { 741 | "maxAP": 20, 742 | "maxTurns": 180, 743 | "turnTimeout": 800, 744 | "pickTimeout": 5000, 745 | "turnsToUpgrade": 23, 746 | "turnsToSpell": 10, 747 | "damageUpgradeAddition": 3, 748 | "rangeUpgradeAddition": 1, 749 | "deckSize": 9, 750 | "handSize": 5, 751 | "apAddition": 2 752 | }, 753 | "baseUnits": [ 754 | { 755 | "typeId": 0, 756 | "maxHP": 16, 757 | "baseAttack": 15, 758 | "baseRange": 3, 759 | "target": "BOTH", 760 | "isFlying": false, 761 | "isMultiple": false, 762 | "ap": 5 763 | }, 764 | { 765 | "typeId": 1, 766 | "maxHP": 25, 767 | "baseAttack": 5, 768 | "baseRange": 4, 769 | "target": "GROUND", 770 | "isFlying": false, 771 | "isMultiple": true, 772 | "ap": 4 773 | }, 774 | { 775 | "typeId": 2, 776 | "maxHP": 15, 777 | "baseAttack": 10, 778 | "baseRange": 3, 779 | "target": "AIR", 780 | "isFlying": false, 781 | "isMultiple": true, 782 | "ap": 4 783 | }, 784 | { 785 | "typeId": 3, 786 | "maxHP": 25, 787 | "baseAttack": 15, 788 | "baseRange": 1, 789 | "target": "GROUND", 790 | "isFlying": false, 791 | "isMultiple": false, 792 | "ap": 5 793 | }, 794 | { 795 | "typeId": 4, 796 | "maxHP": 55, 797 | "baseAttack": 10, 798 | "baseRange": 1, 799 | "target": "GROUND", 800 | "isFlying": false, 801 | "isMultiple": true, 802 | "ap": 6 803 | }, 804 | { 805 | "typeId": 5, 806 | "maxHP": 27, 807 | "baseAttack": 5, 808 | "baseRange": 1, 809 | "target": "AIR", 810 | "isFlying": true, 811 | "isMultiple": false, 812 | "ap": 3 813 | }, 814 | { 815 | "typeId": 6, 816 | "maxHP": 15, 817 | "baseAttack": 5, 818 | "baseRange": 4, 819 | "target": "BOTH", 820 | "isFlying": true, 821 | "isMultiple": false, 822 | "ap": 3 823 | }, 824 | { 825 | "typeId": 7, 826 | "maxHP": 25, 827 | "baseAttack": 10, 828 | "baseRange": 2, 829 | "target": "GROUND", 830 | "isFlying": true, 831 | "isMultiple": true, 832 | "ap": 5 833 | }, 834 | { 835 | "typeId": 8, 836 | "maxHP": 20, 837 | "baseAttack": 20, 838 | "baseRange": 2, 839 | "target": "BOTH", 840 | "isFlying": true, 841 | "isMultiple": false, 842 | "ap": 6 843 | } 844 | ], 845 | "spells": [ 846 | { 847 | "type": "HASTE", 848 | "typeId": 0, 849 | "priority": 3, 850 | "duration": 2, 851 | "range": 1, 852 | "power": 1, 853 | "target": "ALLIED" 854 | }, 855 | { 856 | "type": "HP", 857 | "typeId": 1, 858 | "priority": 0, 859 | "duration": 1, 860 | "range": 1, 861 | "power": -4, 862 | "target": "ENEMY" 863 | }, 864 | { 865 | "type": "HP", 866 | "typeId": 2, 867 | "priority": 1, 868 | "duration": 1, 869 | "range": 1, 870 | "power": 3, 871 | "target": "ALLIED" 872 | }, 873 | { 874 | "type": "TELE", 875 | "typeId": 3, 876 | "priority": 2, 877 | "duration": 1, 878 | "range": null, 879 | "power": null, 880 | "target": "SELF" 881 | }, 882 | { 883 | "type": "DUPLICATE", 884 | "typeId": 4, 885 | "priority": 4, 886 | "duration": 3, 887 | "range": 0, 888 | "power": 2, 889 | "target": "ALLIED" 890 | }, 891 | { 892 | "type": "HP", 893 | "typeId": 5, 894 | "priority": 0, 895 | "duration": 3, 896 | "range": 1, 897 | "power": -2, 898 | "target": "ENEMY" 899 | } 900 | ] 901 | } 902 | -------------------------------------------------------------------------------- /maps/map4.map: -------------------------------------------------------------------------------- 1 | { 2 | "map": { 3 | "rows": 20, 4 | "cols": 20, 5 | "kings": [ 6 | { 7 | "playerId": 0, 8 | "center": { 9 | "row": 1, 10 | "col": 18 11 | }, 12 | "hp": 90, 13 | "attack": 10, 14 | "range": 6 15 | }, 16 | { 17 | "playerId": 1, 18 | "center": { 19 | "row": 18, 20 | "col": 18 21 | }, 22 | "hp": 90, 23 | "attack": 10, 24 | "range": 6 25 | }, 26 | { 27 | "playerId": 2, 28 | "center": { 29 | "row": 1, 30 | "col": 1 31 | }, 32 | "hp": 90, 33 | "attack": 10, 34 | "range": 6 35 | }, 36 | { 37 | "playerId": 3, 38 | "center": { 39 | "row": 18, 40 | "col": 1 41 | }, 42 | "hp": 90, 43 | "attack": 10, 44 | "range": 6 45 | } 46 | ], 47 | "paths": [ 48 | { 49 | "cells": [ 50 | { 51 | "row": 1, 52 | "col": 18 53 | }, 54 | { 55 | "row": 2, 56 | "col": 18 57 | }, 58 | { 59 | "row": 3, 60 | "col": 18 61 | }, 62 | { 63 | "row": 4, 64 | "col": 18 65 | }, 66 | { 67 | "row": 4, 68 | "col": 17 69 | }, 70 | { 71 | "row": 4, 72 | "col": 16 73 | }, 74 | { 75 | "row": 4, 76 | "col": 15 77 | }, 78 | { 79 | "row": 5, 80 | "col": 15 81 | }, 82 | { 83 | "row": 6, 84 | "col": 15 85 | }, 86 | { 87 | "row": 7, 88 | "col": 15 89 | }, 90 | { 91 | "row": 8, 92 | "col": 15 93 | }, 94 | { 95 | "row": 9, 96 | "col": 15 97 | }, 98 | { 99 | "row": 10, 100 | "col": 15 101 | }, 102 | { 103 | "row": 11, 104 | "col": 15 105 | }, 106 | { 107 | "row": 12, 108 | "col": 15 109 | }, 110 | { 111 | "row": 13, 112 | "col": 15 113 | }, 114 | { 115 | "row": 14, 116 | "col": 15 117 | }, 118 | { 119 | "row": 15, 120 | "col": 15 121 | }, 122 | { 123 | "row": 15, 124 | "col": 16 125 | }, 126 | { 127 | "row": 15, 128 | "col": 17 129 | }, 130 | { 131 | "row": 15, 132 | "col": 18 133 | }, 134 | { 135 | "row": 16, 136 | "col": 18 137 | }, 138 | { 139 | "row": 17, 140 | "col": 18 141 | }, 142 | { 143 | "row": 18, 144 | "col": 18 145 | } 146 | ], 147 | "id": 0 148 | }, 149 | { 150 | "cells": [ 151 | { 152 | "row": 18, 153 | "col": 1 154 | }, 155 | { 156 | "row": 17, 157 | "col": 1 158 | }, 159 | { 160 | "row": 16, 161 | "col": 1 162 | }, 163 | { 164 | "row": 15, 165 | "col": 1 166 | }, 167 | { 168 | "row": 15, 169 | "col": 2 170 | }, 171 | { 172 | "row": 15, 173 | "col": 3 174 | }, 175 | { 176 | "row": 15, 177 | "col": 4 178 | }, 179 | { 180 | "row": 14, 181 | "col": 4 182 | }, 183 | { 184 | "row": 13, 185 | "col": 4 186 | }, 187 | { 188 | "row": 12, 189 | "col": 4 190 | }, 191 | { 192 | "row": 11, 193 | "col": 4 194 | }, 195 | { 196 | "row": 10, 197 | "col": 4 198 | }, 199 | { 200 | "row": 9, 201 | "col": 4 202 | }, 203 | { 204 | "row": 8, 205 | "col": 4 206 | }, 207 | { 208 | "row": 7, 209 | "col": 4 210 | }, 211 | { 212 | "row": 6, 213 | "col": 4 214 | }, 215 | { 216 | "row": 5, 217 | "col": 4 218 | }, 219 | { 220 | "row": 4, 221 | "col": 4 222 | }, 223 | { 224 | "row": 4, 225 | "col": 3 226 | }, 227 | { 228 | "row": 4, 229 | "col": 2 230 | }, 231 | { 232 | "row": 4, 233 | "col": 1 234 | }, 235 | { 236 | "row": 3, 237 | "col": 1 238 | }, 239 | { 240 | "row": 2, 241 | "col": 1 242 | }, 243 | { 244 | "row": 1, 245 | "col": 1 246 | } 247 | ], 248 | "id": 1 249 | }, 250 | { 251 | "cells": [ 252 | { 253 | "row": 1, 254 | "col": 18 255 | }, 256 | { 257 | "row": 1, 258 | "col": 17 259 | }, 260 | { 261 | "row": 1, 262 | "col": 16 263 | }, 264 | { 265 | "row": 1, 266 | "col": 15 267 | }, 268 | { 269 | "row": 2, 270 | "col": 15 271 | }, 272 | { 273 | "row": 3, 274 | "col": 15 275 | }, 276 | { 277 | "row": 4, 278 | "col": 15 279 | }, 280 | { 281 | "row": 5, 282 | "col": 15 283 | }, 284 | { 285 | "row": 6, 286 | "col": 15 287 | }, 288 | { 289 | "row": 7, 290 | "col": 15 291 | }, 292 | { 293 | "row": 8, 294 | "col": 15 295 | }, 296 | { 297 | "row": 9, 298 | "col": 15 299 | }, 300 | { 301 | "row": 10, 302 | "col": 15 303 | }, 304 | { 305 | "row": 10, 306 | "col": 14 307 | }, 308 | { 309 | "row": 10, 310 | "col": 13 311 | }, 312 | { 313 | "row": 10, 314 | "col": 12 315 | }, 316 | { 317 | "row": 11, 318 | "col": 12 319 | }, 320 | { 321 | "row": 12, 322 | "col": 12 323 | }, 324 | { 325 | "row": 12, 326 | "col": 11 327 | }, 328 | { 329 | "row": 12, 330 | "col": 10 331 | }, 332 | { 333 | "row": 12, 334 | "col": 9 335 | }, 336 | { 337 | "row": 12, 338 | "col": 8 339 | }, 340 | { 341 | "row": 12, 342 | "col": 7 343 | }, 344 | { 345 | "row": 11, 346 | "col": 7 347 | }, 348 | { 349 | "row": 10, 350 | "col": 7 351 | }, 352 | { 353 | "row": 10, 354 | "col": 6 355 | }, 356 | { 357 | "row": 10, 358 | "col": 5 359 | }, 360 | { 361 | "row": 10, 362 | "col": 4 363 | }, 364 | { 365 | "row": 9, 366 | "col": 4 367 | }, 368 | { 369 | "row": 8, 370 | "col": 4 371 | }, 372 | { 373 | "row": 7, 374 | "col": 4 375 | }, 376 | { 377 | "row": 6, 378 | "col": 4 379 | }, 380 | { 381 | "row": 5, 382 | "col": 4 383 | }, 384 | { 385 | "row": 4, 386 | "col": 4 387 | }, 388 | { 389 | "row": 3, 390 | "col": 4 391 | }, 392 | { 393 | "row": 2, 394 | "col": 4 395 | }, 396 | { 397 | "row": 1, 398 | "col": 4 399 | }, 400 | { 401 | "row": 1, 402 | "col": 3 403 | }, 404 | { 405 | "row": 1, 406 | "col": 2 407 | }, 408 | { 409 | "row": 1, 410 | "col": 1 411 | } 412 | ], 413 | "id": 2 414 | }, 415 | { 416 | "cells": [ 417 | { 418 | "row": 18, 419 | "col": 1 420 | }, 421 | { 422 | "row": 18, 423 | "col": 2 424 | }, 425 | { 426 | "row": 18, 427 | "col": 3 428 | }, 429 | { 430 | "row": 18, 431 | "col": 4 432 | }, 433 | { 434 | "row": 17, 435 | "col": 4 436 | }, 437 | { 438 | "row": 16, 439 | "col": 4 440 | }, 441 | { 442 | "row": 15, 443 | "col": 4 444 | }, 445 | { 446 | "row": 14, 447 | "col": 4 448 | }, 449 | { 450 | "row": 13, 451 | "col": 4 452 | }, 453 | { 454 | "row": 12, 455 | "col": 4 456 | }, 457 | { 458 | "row": 11, 459 | "col": 4 460 | }, 461 | { 462 | "row": 10, 463 | "col": 4 464 | }, 465 | { 466 | "row": 9, 467 | "col": 4 468 | }, 469 | { 470 | "row": 9, 471 | "col": 5 472 | }, 473 | { 474 | "row": 9, 475 | "col": 6 476 | }, 477 | { 478 | "row": 9, 479 | "col": 7 480 | }, 481 | { 482 | "row": 8, 483 | "col": 7 484 | }, 485 | { 486 | "row": 7, 487 | "col": 7 488 | }, 489 | { 490 | "row": 7, 491 | "col": 8 492 | }, 493 | { 494 | "row": 7, 495 | "col": 9 496 | }, 497 | { 498 | "row": 7, 499 | "col": 10 500 | }, 501 | { 502 | "row": 7, 503 | "col": 11 504 | }, 505 | { 506 | "row": 7, 507 | "col": 12 508 | }, 509 | { 510 | "row": 8, 511 | "col": 12 512 | }, 513 | { 514 | "row": 9, 515 | "col": 12 516 | }, 517 | { 518 | "row": 9, 519 | "col": 13 520 | }, 521 | { 522 | "row": 9, 523 | "col": 14 524 | }, 525 | { 526 | "row": 9, 527 | "col": 15 528 | }, 529 | { 530 | "row": 10, 531 | "col": 15 532 | }, 533 | { 534 | "row": 11, 535 | "col": 15 536 | }, 537 | { 538 | "row": 12, 539 | "col": 15 540 | }, 541 | { 542 | "row": 13, 543 | "col": 15 544 | }, 545 | { 546 | "row": 14, 547 | "col": 15 548 | }, 549 | { 550 | "row": 15, 551 | "col": 15 552 | }, 553 | { 554 | "row": 16, 555 | "col": 15 556 | }, 557 | { 558 | "row": 17, 559 | "col": 15 560 | }, 561 | { 562 | "row": 18, 563 | "col": 15 564 | }, 565 | { 566 | "row": 18, 567 | "col": 16 568 | }, 569 | { 570 | "row": 18, 571 | "col": 17 572 | }, 573 | { 574 | "row": 18, 575 | "col": 18 576 | } 577 | ], 578 | "id": 3 579 | }, 580 | { 581 | "cells": [ 582 | { 583 | "row": 1, 584 | "col": 18 585 | }, 586 | { 587 | "row": 2, 588 | "col": 18 589 | }, 590 | { 591 | "row": 3, 592 | "col": 18 593 | }, 594 | { 595 | "row": 4, 596 | "col": 18 597 | }, 598 | { 599 | "row": 4, 600 | "col": 17 601 | }, 602 | { 603 | "row": 4, 604 | "col": 16 605 | }, 606 | { 607 | "row": 4, 608 | "col": 15 609 | }, 610 | { 611 | "row": 4, 612 | "col": 14 613 | }, 614 | { 615 | "row": 4, 616 | "col": 13 617 | }, 618 | { 619 | "row": 4, 620 | "col": 12 621 | }, 622 | { 623 | "row": 4, 624 | "col": 11 625 | }, 626 | { 627 | "row": 4, 628 | "col": 10 629 | }, 630 | { 631 | "row": 4, 632 | "col": 9 633 | }, 634 | { 635 | "row": 5, 636 | "col": 9 637 | }, 638 | { 639 | "row": 6, 640 | "col": 9 641 | }, 642 | { 643 | "row": 7, 644 | "col": 9 645 | }, 646 | { 647 | "row": 7, 648 | "col": 8 649 | }, 650 | { 651 | "row": 7, 652 | "col": 7 653 | }, 654 | { 655 | "row": 8, 656 | "col": 7 657 | }, 658 | { 659 | "row": 9, 660 | "col": 7 661 | }, 662 | { 663 | "row": 10, 664 | "col": 7 665 | }, 666 | { 667 | "row": 11, 668 | "col": 7 669 | }, 670 | { 671 | "row": 12, 672 | "col": 7 673 | }, 674 | { 675 | "row": 12, 676 | "col": 8 677 | }, 678 | { 679 | "row": 12, 680 | "col": 9 681 | }, 682 | { 683 | "row": 13, 684 | "col": 9 685 | }, 686 | { 687 | "row": 14, 688 | "col": 9 689 | }, 690 | { 691 | "row": 15, 692 | "col": 9 693 | }, 694 | { 695 | "row": 15, 696 | "col": 8 697 | }, 698 | { 699 | "row": 15, 700 | "col": 7 701 | }, 702 | { 703 | "row": 15, 704 | "col": 6 705 | }, 706 | { 707 | "row": 15, 708 | "col": 5 709 | }, 710 | { 711 | "row": 15, 712 | "col": 4 713 | }, 714 | { 715 | "row": 15, 716 | "col": 3 717 | }, 718 | { 719 | "row": 15, 720 | "col": 2 721 | }, 722 | { 723 | "row": 15, 724 | "col": 1 725 | }, 726 | { 727 | "row": 16, 728 | "col": 1 729 | }, 730 | { 731 | "row": 17, 732 | "col": 1 733 | }, 734 | { 735 | "row": 18, 736 | "col": 1 737 | } 738 | ], 739 | "id": 4 740 | }, 741 | { 742 | "cells": [ 743 | { 744 | "row": 1, 745 | "col": 1 746 | }, 747 | { 748 | "row": 2, 749 | "col": 1 750 | }, 751 | { 752 | "row": 3, 753 | "col": 1 754 | }, 755 | { 756 | "row": 4, 757 | "col": 1 758 | }, 759 | { 760 | "row": 4, 761 | "col": 2 762 | }, 763 | { 764 | "row": 4, 765 | "col": 3 766 | }, 767 | { 768 | "row": 4, 769 | "col": 4 770 | }, 771 | { 772 | "row": 4, 773 | "col": 5 774 | }, 775 | { 776 | "row": 4, 777 | "col": 6 778 | }, 779 | { 780 | "row": 4, 781 | "col": 7 782 | }, 783 | { 784 | "row": 4, 785 | "col": 8 786 | }, 787 | { 788 | "row": 4, 789 | "col": 9 790 | }, 791 | { 792 | "row": 4, 793 | "col": 10 794 | }, 795 | { 796 | "row": 5, 797 | "col": 10 798 | }, 799 | { 800 | "row": 6, 801 | "col": 10 802 | }, 803 | { 804 | "row": 7, 805 | "col": 10 806 | }, 807 | { 808 | "row": 7, 809 | "col": 11 810 | }, 811 | { 812 | "row": 7, 813 | "col": 12 814 | }, 815 | { 816 | "row": 8, 817 | "col": 12 818 | }, 819 | { 820 | "row": 9, 821 | "col": 12 822 | }, 823 | { 824 | "row": 10, 825 | "col": 12 826 | }, 827 | { 828 | "row": 11, 829 | "col": 12 830 | }, 831 | { 832 | "row": 12, 833 | "col": 12 834 | }, 835 | { 836 | "row": 12, 837 | "col": 11 838 | }, 839 | { 840 | "row": 12, 841 | "col": 10 842 | }, 843 | { 844 | "row": 13, 845 | "col": 10 846 | }, 847 | { 848 | "row": 14, 849 | "col": 10 850 | }, 851 | { 852 | "row": 15, 853 | "col": 10 854 | }, 855 | { 856 | "row": 15, 857 | "col": 11 858 | }, 859 | { 860 | "row": 15, 861 | "col": 12 862 | }, 863 | { 864 | "row": 15, 865 | "col": 13 866 | }, 867 | { 868 | "row": 15, 869 | "col": 14 870 | }, 871 | { 872 | "row": 15, 873 | "col": 15 874 | }, 875 | { 876 | "row": 15, 877 | "col": 16 878 | }, 879 | { 880 | "row": 15, 881 | "col": 17 882 | }, 883 | { 884 | "row": 15, 885 | "col": 18 886 | }, 887 | { 888 | "row": 16, 889 | "col": 18 890 | }, 891 | { 892 | "row": 17, 893 | "col": 18 894 | }, 895 | { 896 | "row": 18, 897 | "col": 18 898 | } 899 | ], 900 | "id": 5 901 | } 902 | ] 903 | }, 904 | "gameConstants": { 905 | "maxAP": 20, 906 | "maxTurns": 180, 907 | "turnTimeout": 800, 908 | "pickTimeout": 5000, 909 | "turnsToUpgrade": 23, 910 | "turnsToSpell": 10, 911 | "damageUpgradeAddition": 3, 912 | "rangeUpgradeAddition": 1, 913 | "deckSize": 9, 914 | "handSize": 5, 915 | "apAddition": 2 916 | }, 917 | "baseUnits": [ 918 | { 919 | "typeId": 0, 920 | "maxHP": 16, 921 | "baseAttack": 15, 922 | "baseRange": 3, 923 | "target": "BOTH", 924 | "isFlying": false, 925 | "isMultiple": false, 926 | "ap": 5 927 | }, 928 | { 929 | "typeId": 1, 930 | "maxHP": 25, 931 | "baseAttack": 5, 932 | "baseRange": 4, 933 | "target": "GROUND", 934 | "isFlying": false, 935 | "isMultiple": true, 936 | "ap": 4 937 | }, 938 | { 939 | "typeId": 2, 940 | "maxHP": 15, 941 | "baseAttack": 10, 942 | "baseRange": 3, 943 | "target": "AIR", 944 | "isFlying": false, 945 | "isMultiple": true, 946 | "ap": 4 947 | }, 948 | { 949 | "typeId": 3, 950 | "maxHP": 25, 951 | "baseAttack": 15, 952 | "baseRange": 1, 953 | "target": "GROUND", 954 | "isFlying": false, 955 | "isMultiple": false, 956 | "ap": 5 957 | }, 958 | { 959 | "typeId": 4, 960 | "maxHP": 55, 961 | "baseAttack": 10, 962 | "baseRange": 1, 963 | "target": "GROUND", 964 | "isFlying": false, 965 | "isMultiple": true, 966 | "ap": 6 967 | }, 968 | { 969 | "typeId": 5, 970 | "maxHP": 27, 971 | "baseAttack": 5, 972 | "baseRange": 1, 973 | "target": "AIR", 974 | "isFlying": true, 975 | "isMultiple": false, 976 | "ap": 3 977 | }, 978 | { 979 | "typeId": 6, 980 | "maxHP": 15, 981 | "baseAttack": 5, 982 | "baseRange": 4, 983 | "target": "BOTH", 984 | "isFlying": true, 985 | "isMultiple": false, 986 | "ap": 3 987 | }, 988 | { 989 | "typeId": 7, 990 | "maxHP": 25, 991 | "baseAttack": 10, 992 | "baseRange": 2, 993 | "target": "GROUND", 994 | "isFlying": true, 995 | "isMultiple": true, 996 | "ap": 5 997 | }, 998 | { 999 | "typeId": 8, 1000 | "maxHP": 20, 1001 | "baseAttack": 20, 1002 | "baseRange": 2, 1003 | "target": "BOTH", 1004 | "isFlying": true, 1005 | "isMultiple": false, 1006 | "ap": 6 1007 | } 1008 | ], 1009 | "spells": [ 1010 | { 1011 | "type": "HASTE", 1012 | "typeId": 0, 1013 | "priority": 3, 1014 | "duration": 2, 1015 | "range": 1, 1016 | "power": 1, 1017 | "target": "ALLIED" 1018 | }, 1019 | { 1020 | "type": "HP", 1021 | "typeId": 1, 1022 | "priority": 0, 1023 | "duration": 1, 1024 | "range": 1, 1025 | "power": -4, 1026 | "target": "ENEMY" 1027 | }, 1028 | { 1029 | "type": "HP", 1030 | "typeId": 2, 1031 | "priority": 1, 1032 | "duration": 1, 1033 | "range": 1, 1034 | "power": 3, 1035 | "target": "ALLIED" 1036 | }, 1037 | { 1038 | "type": "TELE", 1039 | "typeId": 3, 1040 | "priority": 2, 1041 | "duration": 1, 1042 | "range": null, 1043 | "power": null, 1044 | "target": "SELF" 1045 | }, 1046 | { 1047 | "type": "DUPLICATE", 1048 | "typeId": 4, 1049 | "priority": 4, 1050 | "duration": 3, 1051 | "range": 0, 1052 | "power": 2, 1053 | "target": "ALLIED" 1054 | }, 1055 | { 1056 | "type": "HP", 1057 | "typeId": 5, 1058 | "priority": 0, 1059 | "duration": 3, 1060 | "range": 1, 1061 | "power": -2, 1062 | "target": "ENEMY" 1063 | } 1064 | ] 1065 | } 1066 | -------------------------------------------------------------------------------- /maps/final1.map: -------------------------------------------------------------------------------- 1 | { 2 | "map": { 3 | "cols": 20, 4 | "rows": 40, 5 | "kings": [ 6 | { 7 | "playerId": 0, 8 | "center": { 9 | "row": 2, 10 | "col": 10 11 | }, 12 | "hp": 90, 13 | "attack": 10, 14 | "range": 6 15 | }, 16 | { 17 | "playerId": 1, 18 | "center": { 19 | "row": 37, 20 | "col": 10 21 | }, 22 | "hp": 90, 23 | "attack": 10, 24 | "range": 6 25 | }, 26 | { 27 | "playerId": 2, 28 | "center": { 29 | "row": 10, 30 | "col": 10 31 | }, 32 | "hp": 90, 33 | "attack": 10, 34 | "range": 6 35 | }, 36 | { 37 | "playerId": 3, 38 | "center": { 39 | "row": 29, 40 | "col": 10 41 | }, 42 | "hp": 90, 43 | "attack": 10, 44 | "range": 6 45 | } 46 | ], 47 | "paths": [ 48 | { 49 | "cells": [ 50 | { 51 | "col": 10, 52 | "row": 2 53 | }, 54 | { 55 | "col": 10, 56 | "row": 3 57 | }, 58 | { 59 | "col": 10, 60 | "row": 4 61 | }, 62 | { 63 | "col": 10, 64 | "row": 5 65 | }, 66 | { 67 | "col": 10, 68 | "row": 6 69 | }, 70 | { 71 | "col": 10, 72 | "row": 7 73 | }, 74 | { 75 | "col": 10, 76 | "row": 8 77 | }, 78 | { 79 | "col": 10, 80 | "row": 9 81 | }, 82 | { 83 | "col": 10, 84 | "row": 10 85 | } 86 | ], 87 | "id": 0 88 | }, 89 | { 90 | "cells": [ 91 | { 92 | "col": 10, 93 | "row": 37 94 | }, 95 | { 96 | "col": 10, 97 | "row": 36 98 | }, 99 | { 100 | "col": 10, 101 | "row": 35 102 | }, 103 | { 104 | "col": 10, 105 | "row": 34 106 | }, 107 | { 108 | "col": 10, 109 | "row": 33 110 | }, 111 | { 112 | "col": 10, 113 | "row": 32 114 | }, 115 | { 116 | "col": 10, 117 | "row": 31 118 | }, 119 | { 120 | "col": 10, 121 | "row": 30 122 | }, 123 | { 124 | "col": 10, 125 | "row": 29 126 | } 127 | ], 128 | "id": 1 129 | }, 130 | { 131 | "cells": [ 132 | { 133 | "col": 10, 134 | "row": 10 135 | }, 136 | { 137 | "col": 10, 138 | "row": 11 139 | }, 140 | { 141 | "col": 10, 142 | "row": 12 143 | }, 144 | { 145 | "col": 10, 146 | "row": 13 147 | }, 148 | { 149 | "col": 10, 150 | "row": 14 151 | }, 152 | { 153 | "col": 10, 154 | "row": 15 155 | }, 156 | { 157 | "col": 10, 158 | "row": 16 159 | }, 160 | { 161 | "col": 10, 162 | "row": 17 163 | }, 164 | { 165 | "col": 10, 166 | "row": 18 167 | }, 168 | { 169 | "col": 10, 170 | "row": 19 171 | }, 172 | { 173 | "col": 10, 174 | "row": 20 175 | }, 176 | { 177 | "col": 10, 178 | "row": 21 179 | }, 180 | { 181 | "col": 10, 182 | "row": 22 183 | }, 184 | { 185 | "col": 10, 186 | "row": 23 187 | }, 188 | { 189 | "col": 10, 190 | "row": 24 191 | }, 192 | { 193 | "col": 10, 194 | "row": 25 195 | }, 196 | { 197 | "col": 10, 198 | "row": 26 199 | }, 200 | { 201 | "col": 10, 202 | "row": 27 203 | }, 204 | { 205 | "col": 10, 206 | "row": 28 207 | }, 208 | { 209 | "col": 10, 210 | "row": 29 211 | } 212 | ], 213 | "id": 2 214 | }, 215 | { 216 | "cells": [ 217 | { 218 | "col": 10, 219 | "row": 2 220 | }, 221 | { 222 | "col": 11, 223 | "row": 2 224 | }, 225 | { 226 | "col": 12, 227 | "row": 2 228 | }, 229 | { 230 | "col": 13, 231 | "row": 2 232 | }, 233 | { 234 | "col": 13, 235 | "row": 3 236 | }, 237 | { 238 | "col": 13, 239 | "row": 4 240 | }, 241 | { 242 | "col": 13, 243 | "row": 5 244 | }, 245 | { 246 | "col": 13, 247 | "row": 6 248 | }, 249 | { 250 | "col": 13, 251 | "row": 7 252 | }, 253 | { 254 | "col": 13, 255 | "row": 8 256 | }, 257 | { 258 | "col": 13, 259 | "row": 9 260 | }, 261 | { 262 | "col": 13, 263 | "row": 10 264 | }, 265 | { 266 | "col": 13, 267 | "row": 11 268 | }, 269 | { 270 | "col": 13, 271 | "row": 12 272 | }, 273 | { 274 | "col": 13, 275 | "row": 13 276 | }, 277 | { 278 | "col": 13, 279 | "row": 14 280 | }, 281 | { 282 | "col": 13, 283 | "row": 15 284 | }, 285 | { 286 | "col": 13, 287 | "row": 16 288 | }, 289 | { 290 | "col": 13, 291 | "row": 17 292 | }, 293 | { 294 | "col": 13, 295 | "row": 18 296 | }, 297 | { 298 | "col": 13, 299 | "row": 19 300 | }, 301 | { 302 | "col": 13, 303 | "row": 20 304 | }, 305 | { 306 | "col": 13, 307 | "row": 21 308 | }, 309 | { 310 | "col": 13, 311 | "row": 22 312 | }, 313 | { 314 | "col": 13, 315 | "row": 23 316 | }, 317 | { 318 | "col": 13, 319 | "row": 24 320 | }, 321 | { 322 | "col": 13, 323 | "row": 25 324 | }, 325 | { 326 | "col": 13, 327 | "row": 26 328 | }, 329 | { 330 | "col": 13, 331 | "row": 27 332 | }, 333 | { 334 | "col": 13, 335 | "row": 28 336 | }, 337 | { 338 | "col": 13, 339 | "row": 29 340 | }, 341 | { 342 | "col": 13, 343 | "row": 30 344 | }, 345 | { 346 | "col": 13, 347 | "row": 31 348 | }, 349 | { 350 | "col": 13, 351 | "row": 32 352 | }, 353 | { 354 | "col": 13, 355 | "row": 33 356 | }, 357 | { 358 | "col": 13, 359 | "row": 34 360 | }, 361 | { 362 | "col": 13, 363 | "row": 35 364 | }, 365 | { 366 | "col": 13, 367 | "row": 36 368 | }, 369 | { 370 | "col": 13, 371 | "row": 37 372 | }, 373 | { 374 | "col": 12, 375 | "row": 37 376 | }, 377 | { 378 | "col": 11, 379 | "row": 37 380 | }, 381 | { 382 | "col": 10, 383 | "row": 37 384 | } 385 | ], 386 | "id": 3 387 | }, 388 | { 389 | "cells": [ 390 | { 391 | "col": 10, 392 | "row": 2 393 | }, 394 | { 395 | "col": 9, 396 | "row": 2 397 | }, 398 | { 399 | "col": 8, 400 | "row": 2 401 | }, 402 | { 403 | "col": 7, 404 | "row": 2 405 | }, 406 | { 407 | "col": 7, 408 | "row": 3 409 | }, 410 | { 411 | "col": 7, 412 | "row": 4 413 | }, 414 | { 415 | "col": 7, 416 | "row": 5 417 | }, 418 | { 419 | "col": 7, 420 | "row": 6 421 | }, 422 | { 423 | "col": 7, 424 | "row": 7 425 | }, 426 | { 427 | "col": 7, 428 | "row": 8 429 | }, 430 | { 431 | "col": 7, 432 | "row": 9 433 | }, 434 | { 435 | "col": 7, 436 | "row": 10 437 | }, 438 | { 439 | "col": 7, 440 | "row": 11 441 | }, 442 | { 443 | "col": 7, 444 | "row": 12 445 | }, 446 | { 447 | "col": 7, 448 | "row": 13 449 | }, 450 | { 451 | "col": 7, 452 | "row": 14 453 | }, 454 | { 455 | "col": 7, 456 | "row": 15 457 | }, 458 | { 459 | "col": 7, 460 | "row": 16 461 | }, 462 | { 463 | "col": 7, 464 | "row": 17 465 | }, 466 | { 467 | "col": 7, 468 | "row": 18 469 | }, 470 | { 471 | "col": 7, 472 | "row": 19 473 | }, 474 | { 475 | "col": 7, 476 | "row": 20 477 | }, 478 | { 479 | "col": 7, 480 | "row": 21 481 | }, 482 | { 483 | "col": 7, 484 | "row": 22 485 | }, 486 | { 487 | "col": 7, 488 | "row": 23 489 | }, 490 | { 491 | "col": 7, 492 | "row": 24 493 | }, 494 | { 495 | "col": 7, 496 | "row": 25 497 | }, 498 | { 499 | "col": 7, 500 | "row": 26 501 | }, 502 | { 503 | "col": 7, 504 | "row": 27 505 | }, 506 | { 507 | "col": 7, 508 | "row": 28 509 | }, 510 | { 511 | "col": 7, 512 | "row": 29 513 | }, 514 | { 515 | "col": 7, 516 | "row": 30 517 | }, 518 | { 519 | "col": 7, 520 | "row": 31 521 | }, 522 | { 523 | "col": 7, 524 | "row": 32 525 | }, 526 | { 527 | "col": 7, 528 | "row": 33 529 | }, 530 | { 531 | "col": 7, 532 | "row": 34 533 | }, 534 | { 535 | "col": 7, 536 | "row": 35 537 | }, 538 | { 539 | "col": 7, 540 | "row": 36 541 | }, 542 | { 543 | "col": 7, 544 | "row": 37 545 | }, 546 | { 547 | "col": 8, 548 | "row": 37 549 | }, 550 | { 551 | "col": 9, 552 | "row": 37 553 | }, 554 | { 555 | "col": 10, 556 | "row": 37 557 | } 558 | ], 559 | "id": 4 560 | }, 561 | { 562 | "cells": [ 563 | { 564 | "col": 10, 565 | "row": 2 566 | }, 567 | { 568 | "col": 9, 569 | "row": 2 570 | }, 571 | { 572 | "col": 8, 573 | "row": 2 574 | }, 575 | { 576 | "col": 7, 577 | "row": 2 578 | }, 579 | { 580 | "col": 6, 581 | "row": 2 582 | }, 583 | { 584 | "col": 5, 585 | "row": 2 586 | }, 587 | { 588 | "col": 4, 589 | "row": 2 590 | }, 591 | { 592 | "col": 4, 593 | "row": 3 594 | }, 595 | { 596 | "col": 4, 597 | "row": 4 598 | }, 599 | { 600 | "col": 4, 601 | "row": 5 602 | }, 603 | { 604 | "col": 4, 605 | "row": 6 606 | }, 607 | { 608 | "col": 4, 609 | "row": 7 610 | }, 611 | { 612 | "col": 4, 613 | "row": 8 614 | }, 615 | { 616 | "col": 4, 617 | "row": 9 618 | }, 619 | { 620 | "col": 4, 621 | "row": 10 622 | }, 623 | { 624 | "col": 4, 625 | "row": 11 626 | }, 627 | { 628 | "col": 4, 629 | "row": 12 630 | }, 631 | { 632 | "col": 4, 633 | "row": 13 634 | }, 635 | { 636 | "col": 4, 637 | "row": 14 638 | }, 639 | { 640 | "col": 4, 641 | "row": 15 642 | }, 643 | { 644 | "col": 4, 645 | "row": 16 646 | }, 647 | { 648 | "col": 4, 649 | "row": 17 650 | }, 651 | { 652 | "col": 4, 653 | "row": 18 654 | }, 655 | { 656 | "col": 4, 657 | "row": 19 658 | }, 659 | { 660 | "col": 4, 661 | "row": 20 662 | }, 663 | { 664 | "col": 4, 665 | "row": 21 666 | }, 667 | { 668 | "col": 4, 669 | "row": 22 670 | }, 671 | { 672 | "col": 4, 673 | "row": 23 674 | }, 675 | { 676 | "col": 4, 677 | "row": 24 678 | }, 679 | { 680 | "col": 4, 681 | "row": 25 682 | }, 683 | { 684 | "col": 4, 685 | "row": 26 686 | }, 687 | { 688 | "col": 4, 689 | "row": 27 690 | }, 691 | { 692 | "col": 4, 693 | "row": 28 694 | }, 695 | { 696 | "col": 4, 697 | "row": 29 698 | }, 699 | { 700 | "col": 4, 701 | "row": 30 702 | }, 703 | { 704 | "col": 4, 705 | "row": 31 706 | }, 707 | { 708 | "col": 4, 709 | "row": 32 710 | }, 711 | { 712 | "col": 4, 713 | "row": 33 714 | }, 715 | { 716 | "col": 4, 717 | "row": 34 718 | }, 719 | { 720 | "col": 4, 721 | "row": 35 722 | }, 723 | { 724 | "col": 4, 725 | "row": 36 726 | }, 727 | { 728 | "col": 4, 729 | "row": 37 730 | }, 731 | { 732 | "col": 5, 733 | "row": 37 734 | }, 735 | { 736 | "col": 6, 737 | "row": 37 738 | }, 739 | { 740 | "col": 7, 741 | "row": 37 742 | }, 743 | { 744 | "col": 8, 745 | "row": 37 746 | }, 747 | { 748 | "col": 9, 749 | "row": 37 750 | }, 751 | { 752 | "col": 10, 753 | "row": 37 754 | } 755 | ], 756 | "id": 5 757 | }, 758 | { 759 | "cells": [ 760 | { 761 | "col": 10, 762 | "row": 2 763 | }, 764 | { 765 | "col": 11, 766 | "row": 2 767 | }, 768 | { 769 | "col": 12, 770 | "row": 2 771 | }, 772 | { 773 | "col": 13, 774 | "row": 2 775 | }, 776 | { 777 | "col": 14, 778 | "row": 2 779 | }, 780 | { 781 | "col": 15, 782 | "row": 2 783 | }, 784 | { 785 | "col": 16, 786 | "row": 2 787 | }, 788 | { 789 | "col": 16, 790 | "row": 3 791 | }, 792 | { 793 | "col": 16, 794 | "row": 4 795 | }, 796 | { 797 | "col": 16, 798 | "row": 5 799 | }, 800 | { 801 | "col": 16, 802 | "row": 6 803 | }, 804 | { 805 | "col": 16, 806 | "row": 7 807 | }, 808 | { 809 | "col": 16, 810 | "row": 8 811 | }, 812 | { 813 | "col": 16, 814 | "row": 9 815 | }, 816 | { 817 | "col": 16, 818 | "row": 10 819 | }, 820 | { 821 | "col": 16, 822 | "row": 11 823 | }, 824 | { 825 | "col": 16, 826 | "row": 12 827 | }, 828 | { 829 | "col": 16, 830 | "row": 13 831 | }, 832 | { 833 | "col": 16, 834 | "row": 14 835 | }, 836 | { 837 | "col": 16, 838 | "row": 15 839 | }, 840 | { 841 | "col": 16, 842 | "row": 16 843 | }, 844 | { 845 | "col": 16, 846 | "row": 17 847 | }, 848 | { 849 | "col": 16, 850 | "row": 18 851 | }, 852 | { 853 | "col": 16, 854 | "row": 19 855 | }, 856 | { 857 | "col": 16, 858 | "row": 20 859 | }, 860 | { 861 | "col": 16, 862 | "row": 21 863 | }, 864 | { 865 | "col": 16, 866 | "row": 22 867 | }, 868 | { 869 | "col": 16, 870 | "row": 23 871 | }, 872 | { 873 | "col": 16, 874 | "row": 24 875 | }, 876 | { 877 | "col": 16, 878 | "row": 25 879 | }, 880 | { 881 | "col": 16, 882 | "row": 26 883 | }, 884 | { 885 | "col": 16, 886 | "row": 27 887 | }, 888 | { 889 | "col": 16, 890 | "row": 28 891 | }, 892 | { 893 | "col": 16, 894 | "row": 29 895 | }, 896 | { 897 | "col": 16, 898 | "row": 30 899 | }, 900 | { 901 | "col": 16, 902 | "row": 31 903 | }, 904 | { 905 | "col": 16, 906 | "row": 32 907 | }, 908 | { 909 | "col": 16, 910 | "row": 33 911 | }, 912 | { 913 | "col": 16, 914 | "row": 34 915 | }, 916 | { 917 | "col": 16, 918 | "row": 35 919 | }, 920 | { 921 | "col": 16, 922 | "row": 36 923 | }, 924 | { 925 | "col": 16, 926 | "row": 37 927 | }, 928 | { 929 | "col": 15, 930 | "row": 37 931 | }, 932 | { 933 | "col": 14, 934 | "row": 37 935 | }, 936 | { 937 | "col": 13, 938 | "row": 37 939 | }, 940 | { 941 | "col": 12, 942 | "row": 37 943 | }, 944 | { 945 | "col": 11, 946 | "row": 37 947 | }, 948 | { 949 | "col": 10, 950 | "row": 37 951 | } 952 | ], 953 | "id": 6 954 | }, 955 | { 956 | "cells": [ 957 | { 958 | "col": 10, 959 | "row": 29 960 | }, 961 | { 962 | "col": 9, 963 | "row": 29 964 | }, 965 | { 966 | "col": 8, 967 | "row": 29 968 | }, 969 | { 970 | "col": 7, 971 | "row": 29 972 | }, 973 | { 974 | "col": 6, 975 | "row": 29 976 | }, 977 | { 978 | "col": 5, 979 | "row": 29 980 | }, 981 | { 982 | "col": 4, 983 | "row": 29 984 | }, 985 | { 986 | "col": 4, 987 | "row": 28 988 | }, 989 | { 990 | "col": 4, 991 | "row": 27 992 | }, 993 | { 994 | "col": 4, 995 | "row": 26 996 | }, 997 | { 998 | "col": 4, 999 | "row": 25 1000 | }, 1001 | { 1002 | "col": 4, 1003 | "row": 24 1004 | }, 1005 | { 1006 | "col": 4, 1007 | "row": 23 1008 | }, 1009 | { 1010 | "col": 4, 1011 | "row": 22 1012 | }, 1013 | { 1014 | "col": 4, 1015 | "row": 21 1016 | }, 1017 | { 1018 | "col": 4, 1019 | "row": 20 1020 | }, 1021 | { 1022 | "col": 4, 1023 | "row": 19 1024 | }, 1025 | { 1026 | "col": 4, 1027 | "row": 18 1028 | }, 1029 | { 1030 | "col": 4, 1031 | "row": 17 1032 | }, 1033 | { 1034 | "col": 4, 1035 | "row": 16 1036 | }, 1037 | { 1038 | "col": 4, 1039 | "row": 15 1040 | }, 1041 | { 1042 | "col": 4, 1043 | "row": 14 1044 | }, 1045 | { 1046 | "col": 4, 1047 | "row": 13 1048 | }, 1049 | { 1050 | "col": 4, 1051 | "row": 12 1052 | }, 1053 | { 1054 | "col": 4, 1055 | "row": 11 1056 | }, 1057 | { 1058 | "col": 4, 1059 | "row": 10 1060 | }, 1061 | { 1062 | "col": 5, 1063 | "row": 10 1064 | }, 1065 | { 1066 | "col": 6, 1067 | "row": 10 1068 | }, 1069 | { 1070 | "col": 7, 1071 | "row": 10 1072 | }, 1073 | { 1074 | "col": 8, 1075 | "row": 10 1076 | }, 1077 | { 1078 | "col": 9, 1079 | "row": 10 1080 | }, 1081 | { 1082 | "col": 10, 1083 | "row": 10 1084 | } 1085 | ], 1086 | "id": 7 1087 | }, 1088 | { 1089 | "cells": [ 1090 | { 1091 | "col": 10, 1092 | "row": 29 1093 | }, 1094 | { 1095 | "col": 11, 1096 | "row": 29 1097 | }, 1098 | { 1099 | "col": 12, 1100 | "row": 29 1101 | }, 1102 | { 1103 | "col": 13, 1104 | "row": 29 1105 | }, 1106 | { 1107 | "col": 14, 1108 | "row": 29 1109 | }, 1110 | { 1111 | "col": 15, 1112 | "row": 29 1113 | }, 1114 | { 1115 | "col": 16, 1116 | "row": 29 1117 | }, 1118 | { 1119 | "col": 16, 1120 | "row": 28 1121 | }, 1122 | { 1123 | "col": 16, 1124 | "row": 27 1125 | }, 1126 | { 1127 | "col": 16, 1128 | "row": 26 1129 | }, 1130 | { 1131 | "col": 16, 1132 | "row": 25 1133 | }, 1134 | { 1135 | "col": 16, 1136 | "row": 24 1137 | }, 1138 | { 1139 | "col": 16, 1140 | "row": 23 1141 | }, 1142 | { 1143 | "col": 16, 1144 | "row": 22 1145 | }, 1146 | { 1147 | "col": 16, 1148 | "row": 21 1149 | }, 1150 | { 1151 | "col": 16, 1152 | "row": 20 1153 | }, 1154 | { 1155 | "col": 16, 1156 | "row": 19 1157 | }, 1158 | { 1159 | "col": 16, 1160 | "row": 18 1161 | }, 1162 | { 1163 | "col": 16, 1164 | "row": 17 1165 | }, 1166 | { 1167 | "col": 16, 1168 | "row": 16 1169 | }, 1170 | { 1171 | "col": 16, 1172 | "row": 15 1173 | }, 1174 | { 1175 | "col": 16, 1176 | "row": 14 1177 | }, 1178 | { 1179 | "col": 16, 1180 | "row": 13 1181 | }, 1182 | { 1183 | "col": 16, 1184 | "row": 12 1185 | }, 1186 | { 1187 | "col": 16, 1188 | "row": 11 1189 | }, 1190 | { 1191 | "col": 16, 1192 | "row": 10 1193 | }, 1194 | { 1195 | "col": 15, 1196 | "row": 10 1197 | }, 1198 | { 1199 | "col": 14, 1200 | "row": 10 1201 | }, 1202 | { 1203 | "col": 13, 1204 | "row": 10 1205 | }, 1206 | { 1207 | "col": 12, 1208 | "row": 10 1209 | }, 1210 | { 1211 | "col": 11, 1212 | "row": 10 1213 | }, 1214 | { 1215 | "col": 10, 1216 | "row": 10 1217 | } 1218 | ], 1219 | "id": 8 1220 | } 1221 | ] 1222 | }, 1223 | "gameConstants": { 1224 | "maxAP": 20, 1225 | "maxTurns": 180, 1226 | "turnTimeout": 800, 1227 | "pickTimeout": 5000, 1228 | "turnsToUpgrade": 23, 1229 | "turnsToSpell": 10, 1230 | "damageUpgradeAddition": 3, 1231 | "rangeUpgradeAddition": 1, 1232 | "deckSize": 9, 1233 | "handSize": 5, 1234 | "apAddition": 2 1235 | }, 1236 | "baseUnits": [ 1237 | { 1238 | "typeId": 0, 1239 | "maxHP": 16, 1240 | "baseAttack": 15, 1241 | "baseRange": 3, 1242 | "target": "BOTH", 1243 | "isFlying": false, 1244 | "isMultiple": false, 1245 | "ap": 5 1246 | }, 1247 | { 1248 | "typeId": 1, 1249 | "maxHP": 25, 1250 | "baseAttack": 5, 1251 | "baseRange": 4, 1252 | "target": "GROUND", 1253 | "isFlying": false, 1254 | "isMultiple": true, 1255 | "ap": 4 1256 | }, 1257 | { 1258 | "typeId": 2, 1259 | "maxHP": 15, 1260 | "baseAttack": 10, 1261 | "baseRange": 3, 1262 | "target": "AIR", 1263 | "isFlying": false, 1264 | "isMultiple": true, 1265 | "ap": 4 1266 | }, 1267 | { 1268 | "typeId": 3, 1269 | "maxHP": 25, 1270 | "baseAttack": 15, 1271 | "baseRange": 1, 1272 | "target": "GROUND", 1273 | "isFlying": false, 1274 | "isMultiple": false, 1275 | "ap": 5 1276 | }, 1277 | { 1278 | "typeId": 4, 1279 | "maxHP": 55, 1280 | "baseAttack": 10, 1281 | "baseRange": 1, 1282 | "target": "GROUND", 1283 | "isFlying": false, 1284 | "isMultiple": true, 1285 | "ap": 6 1286 | }, 1287 | { 1288 | "typeId": 5, 1289 | "maxHP": 27, 1290 | "baseAttack": 5, 1291 | "baseRange": 1, 1292 | "target": "AIR", 1293 | "isFlying": true, 1294 | "isMultiple": false, 1295 | "ap": 3 1296 | }, 1297 | { 1298 | "typeId": 6, 1299 | "maxHP": 15, 1300 | "baseAttack": 5, 1301 | "baseRange": 4, 1302 | "target": "BOTH", 1303 | "isFlying": true, 1304 | "isMultiple": false, 1305 | "ap": 3 1306 | }, 1307 | { 1308 | "typeId": 7, 1309 | "maxHP": 25, 1310 | "baseAttack": 10, 1311 | "baseRange": 2, 1312 | "target": "GROUND", 1313 | "isFlying": true, 1314 | "isMultiple": true, 1315 | "ap": 5 1316 | }, 1317 | { 1318 | "typeId": 8, 1319 | "maxHP": 20, 1320 | "baseAttack": 20, 1321 | "baseRange": 2, 1322 | "target": "BOTH", 1323 | "isFlying": true, 1324 | "isMultiple": false, 1325 | "ap": 6 1326 | } 1327 | ], 1328 | "spells": [ 1329 | { 1330 | "type": "HASTE", 1331 | "typeId": 0, 1332 | "priority": 3, 1333 | "duration": 2, 1334 | "range": 1, 1335 | "power": 1, 1336 | "target": "ALLIED" 1337 | }, 1338 | { 1339 | "type": "HP", 1340 | "typeId": 1, 1341 | "priority": 0, 1342 | "duration": 1, 1343 | "range": 1, 1344 | "power": -4, 1345 | "target": "ENEMY" 1346 | }, 1347 | { 1348 | "type": "HP", 1349 | "typeId": 2, 1350 | "priority": 1, 1351 | "duration": 1, 1352 | "range": 1, 1353 | "power": 3, 1354 | "target": "ALLIED" 1355 | }, 1356 | { 1357 | "type": "TELE", 1358 | "typeId": 3, 1359 | "priority": 2, 1360 | "duration": 1, 1361 | "range": null, 1362 | "power": null, 1363 | "target": "SELF" 1364 | }, 1365 | { 1366 | "type": "DUPLICATE", 1367 | "typeId": 4, 1368 | "priority": 4, 1369 | "duration": 3, 1370 | "range": 0, 1371 | "power": 2, 1372 | "target": "ALLIED" 1373 | }, 1374 | { 1375 | "type": "HP", 1376 | "typeId": 5, 1377 | "priority": 0, 1378 | "duration": 3, 1379 | "range": 1, 1380 | "power": -2, 1381 | "target": "ENEMY" 1382 | } 1383 | ] 1384 | } 1385 | -------------------------------------------------------------------------------- /maps/map6.map: -------------------------------------------------------------------------------- 1 | { 2 | "map": { 3 | "cols": 20, 4 | "rows": 40, 5 | "kings": [ 6 | { 7 | "playerId": 0, 8 | "center": { 9 | "col": 2, 10 | "row": 37 11 | }, 12 | "hp": 90, 13 | "attack": 10, 14 | "range": 6 15 | }, 16 | { 17 | "playerId": 1, 18 | "center": { 19 | "col": 17, 20 | "row": 37 21 | }, 22 | "hp": 90, 23 | "attack": 10, 24 | "range": 6 25 | }, 26 | { 27 | "playerId": 2, 28 | "center": { 29 | "col": 2, 30 | "row": 2 31 | }, 32 | "hp": 90, 33 | "attack": 10, 34 | "range": 6 35 | }, 36 | { 37 | "playerId": 3, 38 | "center": { 39 | "col": 17, 40 | "row": 2 41 | }, 42 | "hp": 90, 43 | "attack": 10, 44 | "range": 6 45 | } 46 | ], 47 | "paths": [ 48 | { 49 | "cells": [ 50 | { 51 | "col": 2, 52 | "row": 37 53 | }, 54 | { 55 | "col": 3, 56 | "row": 37 57 | }, 58 | { 59 | "col": 4, 60 | "row": 37 61 | }, 62 | { 63 | "col": 5, 64 | "row": 37 65 | }, 66 | { 67 | "col": 6, 68 | "row": 37 69 | }, 70 | { 71 | "col": 7, 72 | "row": 37 73 | }, 74 | { 75 | "col": 8, 76 | "row": 37 77 | }, 78 | { 79 | "col": 9, 80 | "row": 37 81 | }, 82 | { 83 | "col": 10, 84 | "row": 37 85 | }, 86 | { 87 | "col": 11, 88 | "row": 37 89 | }, 90 | { 91 | "col": 12, 92 | "row": 37 93 | }, 94 | { 95 | "col": 13, 96 | "row": 37 97 | }, 98 | { 99 | "col": 14, 100 | "row": 37 101 | }, 102 | { 103 | "col": 15, 104 | "row": 37 105 | }, 106 | { 107 | "col": 16, 108 | "row": 37 109 | }, 110 | { 111 | "col": 17, 112 | "row": 37 113 | } 114 | ], 115 | "id": 0 116 | }, 117 | { 118 | "cells": [ 119 | { 120 | "col": 2, 121 | "row": 2 122 | }, 123 | { 124 | "col": 3, 125 | "row": 2 126 | }, 127 | { 128 | "col": 4, 129 | "row": 2 130 | }, 131 | { 132 | "col": 5, 133 | "row": 2 134 | }, 135 | { 136 | "col": 6, 137 | "row": 2 138 | }, 139 | { 140 | "col": 7, 141 | "row": 2 142 | }, 143 | { 144 | "col": 8, 145 | "row": 2 146 | }, 147 | { 148 | "col": 9, 149 | "row": 2 150 | }, 151 | { 152 | "col": 10, 153 | "row": 2 154 | }, 155 | { 156 | "col": 11, 157 | "row": 2 158 | }, 159 | { 160 | "col": 12, 161 | "row": 2 162 | }, 163 | { 164 | "col": 13, 165 | "row": 2 166 | }, 167 | { 168 | "col": 14, 169 | "row": 2 170 | }, 171 | { 172 | "col": 15, 173 | "row": 2 174 | }, 175 | { 176 | "col": 16, 177 | "row": 2 178 | }, 179 | { 180 | "col": 17, 181 | "row": 2 182 | } 183 | ], 184 | "id": 1 185 | }, 186 | { 187 | "cells": [ 188 | { 189 | "col": 2, 190 | "row": 37 191 | }, 192 | { 193 | "col": 2, 194 | "row": 36 195 | }, 196 | { 197 | "col": 2, 198 | "row": 35 199 | }, 200 | { 201 | "col": 2, 202 | "row": 34 203 | }, 204 | { 205 | "col": 2, 206 | "row": 33 207 | }, 208 | { 209 | "col": 2, 210 | "row": 32 211 | }, 212 | { 213 | "col": 3, 214 | "row": 32 215 | }, 216 | { 217 | "col": 4, 218 | "row": 32 219 | }, 220 | { 221 | "col": 4, 222 | "row": 31 223 | }, 224 | { 225 | "col": 4, 226 | "row": 30 227 | }, 228 | { 229 | "col": 4, 230 | "row": 29 231 | }, 232 | { 233 | "col": 4, 234 | "row": 28 235 | }, 236 | { 237 | "col": 4, 238 | "row": 27 239 | }, 240 | { 241 | "col": 4, 242 | "row": 26 243 | }, 244 | { 245 | "col": 4, 246 | "row": 25 247 | }, 248 | { 249 | "col": 4, 250 | "row": 24 251 | }, 252 | { 253 | "col": 4, 254 | "row": 23 255 | }, 256 | { 257 | "col": 4, 258 | "row": 22 259 | }, 260 | { 261 | "col": 5, 262 | "row": 22 263 | }, 264 | { 265 | "col": 6, 266 | "row": 22 267 | }, 268 | { 269 | "col": 7, 270 | "row": 22 271 | }, 272 | { 273 | "col": 7, 274 | "row": 21 275 | }, 276 | { 277 | "col": 7, 278 | "row": 20 279 | }, 280 | { 281 | "col": 7, 282 | "row": 19 283 | }, 284 | { 285 | "col": 7, 286 | "row": 18 287 | }, 288 | { 289 | "col": 7, 290 | "row": 17 291 | }, 292 | { 293 | "col": 6, 294 | "row": 17 295 | }, 296 | { 297 | "col": 5, 298 | "row": 17 299 | }, 300 | { 301 | "col": 4, 302 | "row": 17 303 | }, 304 | { 305 | "col": 4, 306 | "row": 18 307 | }, 308 | { 309 | "col": 4, 310 | "row": 19 311 | }, 312 | { 313 | "col": 4, 314 | "row": 20 315 | }, 316 | { 317 | "col": 4, 318 | "row": 21 319 | }, 320 | { 321 | "col": 4, 322 | "row": 22 323 | }, 324 | { 325 | "col": 3, 326 | "row": 22 327 | }, 328 | { 329 | "col": 2, 330 | "row": 22 331 | }, 332 | { 333 | "col": 1, 334 | "row": 22 335 | }, 336 | { 337 | "col": 1, 338 | "row": 21 339 | }, 340 | { 341 | "col": 1, 342 | "row": 20 343 | }, 344 | { 345 | "col": 1, 346 | "row": 19 347 | }, 348 | { 349 | "col": 1, 350 | "row": 18 351 | }, 352 | { 353 | "col": 1, 354 | "row": 17 355 | }, 356 | { 357 | "col": 2, 358 | "row": 17 359 | }, 360 | { 361 | "col": 3, 362 | "row": 17 363 | }, 364 | { 365 | "col": 4, 366 | "row": 17 367 | }, 368 | { 369 | "col": 4, 370 | "row": 16 371 | }, 372 | { 373 | "col": 4, 374 | "row": 15 375 | }, 376 | { 377 | "col": 4, 378 | "row": 14 379 | }, 380 | { 381 | "col": 4, 382 | "row": 13 383 | }, 384 | { 385 | "col": 4, 386 | "row": 12 387 | }, 388 | { 389 | "col": 4, 390 | "row": 11 391 | }, 392 | { 393 | "col": 4, 394 | "row": 10 395 | }, 396 | { 397 | "col": 4, 398 | "row": 9 399 | }, 400 | { 401 | "col": 4, 402 | "row": 8 403 | }, 404 | { 405 | "col": 4, 406 | "row": 7 407 | }, 408 | { 409 | "col": 3, 410 | "row": 7 411 | }, 412 | { 413 | "col": 2, 414 | "row": 7 415 | }, 416 | { 417 | "col": 2, 418 | "row": 6 419 | }, 420 | { 421 | "col": 2, 422 | "row": 5 423 | }, 424 | { 425 | "col": 2, 426 | "row": 4 427 | }, 428 | { 429 | "col": 2, 430 | "row": 3 431 | }, 432 | { 433 | "col": 2, 434 | "row": 2 435 | } 436 | ], 437 | "id": 2 438 | }, 439 | { 440 | "cells": [ 441 | { 442 | "col": 17, 443 | "row": 37 444 | }, 445 | { 446 | "col": 17, 447 | "row": 36 448 | }, 449 | { 450 | "col": 17, 451 | "row": 35 452 | }, 453 | { 454 | "col": 17, 455 | "row": 34 456 | }, 457 | { 458 | "col": 17, 459 | "row": 33 460 | }, 461 | { 462 | "col": 17, 463 | "row": 32 464 | }, 465 | { 466 | "col": 16, 467 | "row": 32 468 | }, 469 | { 470 | "col": 15, 471 | "row": 32 472 | }, 473 | { 474 | "col": 15, 475 | "row": 31 476 | }, 477 | { 478 | "col": 15, 479 | "row": 30 480 | }, 481 | { 482 | "col": 15, 483 | "row": 29 484 | }, 485 | { 486 | "col": 15, 487 | "row": 28 488 | }, 489 | { 490 | "col": 15, 491 | "row": 27 492 | }, 493 | { 494 | "col": 15, 495 | "row": 26 496 | }, 497 | { 498 | "col": 15, 499 | "row": 25 500 | }, 501 | { 502 | "col": 15, 503 | "row": 24 504 | }, 505 | { 506 | "col": 15, 507 | "row": 23 508 | }, 509 | { 510 | "col": 15, 511 | "row": 22 512 | }, 513 | { 514 | "col": 16, 515 | "row": 22 516 | }, 517 | { 518 | "col": 17, 519 | "row": 22 520 | }, 521 | { 522 | "col": 18, 523 | "row": 22 524 | }, 525 | { 526 | "col": 18, 527 | "row": 21 528 | }, 529 | { 530 | "col": 18, 531 | "row": 20 532 | }, 533 | { 534 | "col": 18, 535 | "row": 19 536 | }, 537 | { 538 | "col": 18, 539 | "row": 18 540 | }, 541 | { 542 | "col": 18, 543 | "row": 17 544 | }, 545 | { 546 | "col": 17, 547 | "row": 17 548 | }, 549 | { 550 | "col": 16, 551 | "row": 17 552 | }, 553 | { 554 | "col": 15, 555 | "row": 17 556 | }, 557 | { 558 | "col": 15, 559 | "row": 18 560 | }, 561 | { 562 | "col": 15, 563 | "row": 19 564 | }, 565 | { 566 | "col": 15, 567 | "row": 20 568 | }, 569 | { 570 | "col": 15, 571 | "row": 21 572 | }, 573 | { 574 | "col": 15, 575 | "row": 22 576 | }, 577 | { 578 | "col": 14, 579 | "row": 22 580 | }, 581 | { 582 | "col": 13, 583 | "row": 22 584 | }, 585 | { 586 | "col": 12, 587 | "row": 22 588 | }, 589 | { 590 | "col": 12, 591 | "row": 21 592 | }, 593 | { 594 | "col": 12, 595 | "row": 20 596 | }, 597 | { 598 | "col": 12, 599 | "row": 19 600 | }, 601 | { 602 | "col": 12, 603 | "row": 18 604 | }, 605 | { 606 | "col": 12, 607 | "row": 17 608 | }, 609 | { 610 | "col": 13, 611 | "row": 17 612 | }, 613 | { 614 | "col": 14, 615 | "row": 17 616 | }, 617 | { 618 | "col": 15, 619 | "row": 17 620 | }, 621 | { 622 | "col": 15, 623 | "row": 16 624 | }, 625 | { 626 | "col": 15, 627 | "row": 15 628 | }, 629 | { 630 | "col": 15, 631 | "row": 14 632 | }, 633 | { 634 | "col": 15, 635 | "row": 13 636 | }, 637 | { 638 | "col": 15, 639 | "row": 12 640 | }, 641 | { 642 | "col": 15, 643 | "row": 11 644 | }, 645 | { 646 | "col": 15, 647 | "row": 10 648 | }, 649 | { 650 | "col": 15, 651 | "row": 9 652 | }, 653 | { 654 | "col": 15, 655 | "row": 8 656 | }, 657 | { 658 | "col": 15, 659 | "row": 7 660 | }, 661 | { 662 | "col": 16, 663 | "row": 7 664 | }, 665 | { 666 | "col": 17, 667 | "row": 7 668 | }, 669 | { 670 | "col": 17, 671 | "row": 6 672 | }, 673 | { 674 | "col": 17, 675 | "row": 5 676 | }, 677 | { 678 | "col": 17, 679 | "row": 4 680 | }, 681 | { 682 | "col": 17, 683 | "row": 3 684 | }, 685 | { 686 | "col": 17, 687 | "row": 2 688 | } 689 | ], 690 | "id": 3 691 | }, 692 | { 693 | "cells": [ 694 | { 695 | "col": 2, 696 | "row": 37 697 | }, 698 | { 699 | "col": 2, 700 | "row": 36 701 | }, 702 | { 703 | "col": 2, 704 | "row": 35 705 | }, 706 | { 707 | "col": 2, 708 | "row": 34 709 | }, 710 | { 711 | "col": 2, 712 | "row": 33 713 | }, 714 | { 715 | "col": 2, 716 | "row": 32 717 | }, 718 | { 719 | "col": 3, 720 | "row": 32 721 | }, 722 | { 723 | "col": 4, 724 | "row": 32 725 | }, 726 | { 727 | "col": 5, 728 | "row": 32 729 | }, 730 | { 731 | "col": 6, 732 | "row": 32 733 | }, 734 | { 735 | "col": 7, 736 | "row": 32 737 | }, 738 | { 739 | "col": 8, 740 | "row": 32 741 | }, 742 | { 743 | "col": 9, 744 | "row": 32 745 | }, 746 | { 747 | "col": 9, 748 | "row": 31 749 | }, 750 | { 751 | "col": 9, 752 | "row": 30 753 | }, 754 | { 755 | "col": 9, 756 | "row": 29 757 | }, 758 | { 759 | "col": 8, 760 | "row": 29 761 | }, 762 | { 763 | "col": 7, 764 | "row": 29 765 | }, 766 | { 767 | "col": 7, 768 | "row": 28 769 | }, 770 | { 771 | "col": 7, 772 | "row": 27 773 | }, 774 | { 775 | "col": 7, 776 | "row": 26 777 | }, 778 | { 779 | "col": 8, 780 | "row": 26 781 | }, 782 | { 783 | "col": 9, 784 | "row": 26 785 | }, 786 | { 787 | "col": 10, 788 | "row": 26 789 | }, 790 | { 791 | "col": 10, 792 | "row": 25 793 | }, 794 | { 795 | "col": 10, 796 | "row": 24 797 | }, 798 | { 799 | "col": 10, 800 | "row": 23 801 | }, 802 | { 803 | "col": 10, 804 | "row": 22 805 | }, 806 | { 807 | "col": 10, 808 | "row": 21 809 | }, 810 | { 811 | "col": 10, 812 | "row": 20 813 | }, 814 | { 815 | "col": 9, 816 | "row": 20 817 | }, 818 | { 819 | "col": 9, 820 | "row": 19 821 | }, 822 | { 823 | "col": 9, 824 | "row": 18 825 | }, 826 | { 827 | "col": 9, 828 | "row": 17 829 | }, 830 | { 831 | "col": 9, 832 | "row": 16 833 | }, 834 | { 835 | "col": 9, 836 | "row": 15 837 | }, 838 | { 839 | "col": 9, 840 | "row": 14 841 | }, 842 | { 843 | "col": 9, 844 | "row": 13 845 | }, 846 | { 847 | "col": 10, 848 | "row": 13 849 | }, 850 | { 851 | "col": 11, 852 | "row": 13 853 | }, 854 | { 855 | "col": 12, 856 | "row": 13 857 | }, 858 | { 859 | "col": 12, 860 | "row": 12 861 | }, 862 | { 863 | "col": 12, 864 | "row": 11 865 | }, 866 | { 867 | "col": 12, 868 | "row": 10 869 | }, 870 | { 871 | "col": 11, 872 | "row": 10 873 | }, 874 | { 875 | "col": 10, 876 | "row": 10 877 | }, 878 | { 879 | "col": 10, 880 | "row": 9 881 | }, 882 | { 883 | "col": 10, 884 | "row": 8 885 | }, 886 | { 887 | "col": 10, 888 | "row": 7 889 | }, 890 | { 891 | "col": 11, 892 | "row": 7 893 | }, 894 | { 895 | "col": 12, 896 | "row": 7 897 | }, 898 | { 899 | "col": 13, 900 | "row": 7 901 | }, 902 | { 903 | "col": 14, 904 | "row": 7 905 | }, 906 | { 907 | "col": 15, 908 | "row": 7 909 | }, 910 | { 911 | "col": 16, 912 | "row": 7 913 | }, 914 | { 915 | "col": 17, 916 | "row": 7 917 | }, 918 | { 919 | "col": 17, 920 | "row": 6 921 | }, 922 | { 923 | "col": 17, 924 | "row": 5 925 | }, 926 | { 927 | "col": 17, 928 | "row": 4 929 | }, 930 | { 931 | "col": 17, 932 | "row": 3 933 | }, 934 | { 935 | "col": 17, 936 | "row": 2 937 | } 938 | ], 939 | "id": 4 940 | }, 941 | { 942 | "cells": [ 943 | { 944 | "col": 2, 945 | "row": 2 946 | }, 947 | { 948 | "col": 2, 949 | "row": 3 950 | }, 951 | { 952 | "col": 2, 953 | "row": 4 954 | }, 955 | { 956 | "col": 2, 957 | "row": 5 958 | }, 959 | { 960 | "col": 2, 961 | "row": 6 962 | }, 963 | { 964 | "col": 2, 965 | "row": 7 966 | }, 967 | { 968 | "col": 3, 969 | "row": 7 970 | }, 971 | { 972 | "col": 4, 973 | "row": 7 974 | }, 975 | { 976 | "col": 5, 977 | "row": 7 978 | }, 979 | { 980 | "col": 6, 981 | "row": 7 982 | }, 983 | { 984 | "col": 7, 985 | "row": 7 986 | }, 987 | { 988 | "col": 8, 989 | "row": 7 990 | }, 991 | { 992 | "col": 9, 993 | "row": 7 994 | }, 995 | { 996 | "col": 9, 997 | "row": 8 998 | }, 999 | { 1000 | "col": 9, 1001 | "row": 9 1002 | }, 1003 | { 1004 | "col": 9, 1005 | "row": 10 1006 | }, 1007 | { 1008 | "col": 8, 1009 | "row": 10 1010 | }, 1011 | { 1012 | "col": 7, 1013 | "row": 10 1014 | }, 1015 | { 1016 | "col": 7, 1017 | "row": 11 1018 | }, 1019 | { 1020 | "col": 7, 1021 | "row": 12 1022 | }, 1023 | { 1024 | "col": 7, 1025 | "row": 13 1026 | }, 1027 | { 1028 | "col": 8, 1029 | "row": 13 1030 | }, 1031 | { 1032 | "col": 9, 1033 | "row": 13 1034 | }, 1035 | { 1036 | "col": 10, 1037 | "row": 13 1038 | }, 1039 | { 1040 | "col": 10, 1041 | "row": 14 1042 | }, 1043 | { 1044 | "col": 10, 1045 | "row": 15 1046 | }, 1047 | { 1048 | "col": 10, 1049 | "row": 16 1050 | }, 1051 | { 1052 | "col": 10, 1053 | "row": 17 1054 | }, 1055 | { 1056 | "col": 10, 1057 | "row": 18 1058 | }, 1059 | { 1060 | "col": 10, 1061 | "row": 19 1062 | }, 1063 | { 1064 | "col": 9, 1065 | "row": 19 1066 | }, 1067 | { 1068 | "col": 9, 1069 | "row": 20 1070 | }, 1071 | { 1072 | "col": 9, 1073 | "row": 21 1074 | }, 1075 | { 1076 | "col": 9, 1077 | "row": 22 1078 | }, 1079 | { 1080 | "col": 9, 1081 | "row": 23 1082 | }, 1083 | { 1084 | "col": 9, 1085 | "row": 24 1086 | }, 1087 | { 1088 | "col": 9, 1089 | "row": 25 1090 | }, 1091 | { 1092 | "col": 9, 1093 | "row": 26 1094 | }, 1095 | { 1096 | "col": 10, 1097 | "row": 26 1098 | }, 1099 | { 1100 | "col": 11, 1101 | "row": 26 1102 | }, 1103 | { 1104 | "col": 12, 1105 | "row": 26 1106 | }, 1107 | { 1108 | "col": 12, 1109 | "row": 27 1110 | }, 1111 | { 1112 | "col": 12, 1113 | "row": 28 1114 | }, 1115 | { 1116 | "col": 12, 1117 | "row": 29 1118 | }, 1119 | { 1120 | "col": 11, 1121 | "row": 29 1122 | }, 1123 | { 1124 | "col": 10, 1125 | "row": 29 1126 | }, 1127 | { 1128 | "col": 10, 1129 | "row": 30 1130 | }, 1131 | { 1132 | "col": 10, 1133 | "row": 31 1134 | }, 1135 | { 1136 | "col": 10, 1137 | "row": 32 1138 | }, 1139 | { 1140 | "col": 11, 1141 | "row": 32 1142 | }, 1143 | { 1144 | "col": 12, 1145 | "row": 32 1146 | }, 1147 | { 1148 | "col": 13, 1149 | "row": 32 1150 | }, 1151 | { 1152 | "col": 14, 1153 | "row": 32 1154 | }, 1155 | { 1156 | "col": 15, 1157 | "row": 32 1158 | }, 1159 | { 1160 | "col": 16, 1161 | "row": 32 1162 | }, 1163 | { 1164 | "col": 17, 1165 | "row": 32 1166 | }, 1167 | { 1168 | "col": 17, 1169 | "row": 33 1170 | }, 1171 | { 1172 | "col": 17, 1173 | "row": 34 1174 | }, 1175 | { 1176 | "col": 17, 1177 | "row": 35 1178 | }, 1179 | { 1180 | "col": 17, 1181 | "row": 36 1182 | }, 1183 | { 1184 | "col": 17, 1185 | "row": 37 1186 | } 1187 | ], 1188 | "id": 5 1189 | } 1190 | ] 1191 | }, 1192 | "gameConstants": { 1193 | "maxAP": 20, 1194 | "maxTurns": 180, 1195 | "turnTimeout": 800, 1196 | "pickTimeout": 5000, 1197 | "turnsToUpgrade": 23, 1198 | "turnsToSpell": 10, 1199 | "damageUpgradeAddition": 3, 1200 | "rangeUpgradeAddition": 1, 1201 | "deckSize": 9, 1202 | "handSize": 5, 1203 | "apAddition": 2 1204 | }, 1205 | "baseUnits": [ 1206 | { 1207 | "typeId": 0, 1208 | "maxHP": 16, 1209 | "baseAttack": 15, 1210 | "baseRange": 3, 1211 | "target": "BOTH", 1212 | "isFlying": false, 1213 | "isMultiple": false, 1214 | "ap": 5 1215 | }, 1216 | { 1217 | "typeId": 1, 1218 | "maxHP": 25, 1219 | "baseAttack": 5, 1220 | "baseRange": 4, 1221 | "target": "GROUND", 1222 | "isFlying": false, 1223 | "isMultiple": true, 1224 | "ap": 4 1225 | }, 1226 | { 1227 | "typeId": 2, 1228 | "maxHP": 15, 1229 | "baseAttack": 10, 1230 | "baseRange": 3, 1231 | "target": "AIR", 1232 | "isFlying": false, 1233 | "isMultiple": true, 1234 | "ap": 4 1235 | }, 1236 | { 1237 | "typeId": 3, 1238 | "maxHP": 25, 1239 | "baseAttack": 15, 1240 | "baseRange": 1, 1241 | "target": "GROUND", 1242 | "isFlying": false, 1243 | "isMultiple": false, 1244 | "ap": 5 1245 | }, 1246 | { 1247 | "typeId": 4, 1248 | "maxHP": 55, 1249 | "baseAttack": 10, 1250 | "baseRange": 1, 1251 | "target": "GROUND", 1252 | "isFlying": false, 1253 | "isMultiple": true, 1254 | "ap": 6 1255 | }, 1256 | { 1257 | "typeId": 5, 1258 | "maxHP": 27, 1259 | "baseAttack": 5, 1260 | "baseRange": 1, 1261 | "target": "AIR", 1262 | "isFlying": true, 1263 | "isMultiple": false, 1264 | "ap": 3 1265 | }, 1266 | { 1267 | "typeId": 6, 1268 | "maxHP": 15, 1269 | "baseAttack": 5, 1270 | "baseRange": 4, 1271 | "target": "BOTH", 1272 | "isFlying": true, 1273 | "isMultiple": false, 1274 | "ap": 3 1275 | }, 1276 | { 1277 | "typeId": 7, 1278 | "maxHP": 25, 1279 | "baseAttack": 10, 1280 | "baseRange": 2, 1281 | "target": "GROUND", 1282 | "isFlying": true, 1283 | "isMultiple": true, 1284 | "ap": 5 1285 | }, 1286 | { 1287 | "typeId": 8, 1288 | "maxHP": 20, 1289 | "baseAttack": 20, 1290 | "baseRange": 2, 1291 | "target": "BOTH", 1292 | "isFlying": true, 1293 | "isMultiple": false, 1294 | "ap": 6 1295 | } 1296 | ], 1297 | "spells": [ 1298 | { 1299 | "type": "HASTE", 1300 | "typeId": 0, 1301 | "priority": 3, 1302 | "duration": 2, 1303 | "range": 1, 1304 | "power": 1, 1305 | "target": "ALLIED" 1306 | }, 1307 | { 1308 | "type": "HP", 1309 | "typeId": 1, 1310 | "priority": 0, 1311 | "duration": 1, 1312 | "range": 1, 1313 | "power": -4, 1314 | "target": "ENEMY" 1315 | }, 1316 | { 1317 | "type": "HP", 1318 | "typeId": 2, 1319 | "priority": 1, 1320 | "duration": 1, 1321 | "range": 1, 1322 | "power": 3, 1323 | "target": "ALLIED" 1324 | }, 1325 | { 1326 | "type": "TELE", 1327 | "typeId": 3, 1328 | "priority": 2, 1329 | "duration": 1, 1330 | "range": null, 1331 | "power": null, 1332 | "target": "SELF" 1333 | }, 1334 | { 1335 | "type": "DUPLICATE", 1336 | "typeId": 4, 1337 | "priority": 4, 1338 | "duration": 3, 1339 | "range": 0, 1340 | "power": 2, 1341 | "target": "ALLIED" 1342 | }, 1343 | { 1344 | "type": "HP", 1345 | "typeId": 5, 1346 | "priority": 0, 1347 | "duration": 3, 1348 | "range": 1, 1349 | "power": -2, 1350 | "target": "ENEMY" 1351 | } 1352 | ] 1353 | } 1354 | -------------------------------------------------------------------------------- /maps/map7.map: -------------------------------------------------------------------------------- 1 | { 2 | "map": { 3 | "cols": 20, 4 | "rows": 40, 5 | "kings": [ 6 | { 7 | "playerId": 0, 8 | "center": { 9 | "col": 2, 10 | "row": 37 11 | }, 12 | "hp": 90, 13 | "attack": 10, 14 | "range": 6 15 | }, 16 | { 17 | "playerId": 1, 18 | "center": { 19 | "col": 17, 20 | "row": 37 21 | }, 22 | "hp": 90, 23 | "attack": 10, 24 | "range": 6 25 | }, 26 | { 27 | "playerId": 2, 28 | "center": { 29 | "col": 2, 30 | "row": 2 31 | }, 32 | "hp": 90, 33 | "attack": 10, 34 | "range": 6 35 | }, 36 | { 37 | "playerId": 3, 38 | "center": { 39 | "col": 17, 40 | "row": 2 41 | }, 42 | "hp": 90, 43 | "attack": 10, 44 | "range": 6 45 | } 46 | ], 47 | "paths": [ 48 | { 49 | "cells": [ 50 | { 51 | "col": 2, 52 | "row": 37 53 | }, 54 | { 55 | "col": 3, 56 | "row": 37 57 | }, 58 | { 59 | "col": 4, 60 | "row": 37 61 | }, 62 | { 63 | "col": 5, 64 | "row": 37 65 | }, 66 | { 67 | "col": 6, 68 | "row": 37 69 | }, 70 | { 71 | "col": 7, 72 | "row": 37 73 | }, 74 | { 75 | "col": 8, 76 | "row": 37 77 | }, 78 | { 79 | "col": 9, 80 | "row": 37 81 | }, 82 | { 83 | "col": 10, 84 | "row": 37 85 | }, 86 | { 87 | "col": 11, 88 | "row": 37 89 | }, 90 | { 91 | "col": 12, 92 | "row": 37 93 | }, 94 | { 95 | "col": 13, 96 | "row": 37 97 | }, 98 | { 99 | "col": 14, 100 | "row": 37 101 | }, 102 | { 103 | "col": 15, 104 | "row": 37 105 | }, 106 | { 107 | "col": 16, 108 | "row": 37 109 | }, 110 | { 111 | "col": 17, 112 | "row": 37 113 | } 114 | ], 115 | "id": 0 116 | }, 117 | { 118 | "cells": [ 119 | { 120 | "col": 2, 121 | "row": 2 122 | }, 123 | { 124 | "col": 3, 125 | "row": 2 126 | }, 127 | { 128 | "col": 4, 129 | "row": 2 130 | }, 131 | { 132 | "col": 5, 133 | "row": 2 134 | }, 135 | { 136 | "col": 6, 137 | "row": 2 138 | }, 139 | { 140 | "col": 7, 141 | "row": 2 142 | }, 143 | { 144 | "col": 8, 145 | "row": 2 146 | }, 147 | { 148 | "col": 9, 149 | "row": 2 150 | }, 151 | { 152 | "col": 10, 153 | "row": 2 154 | }, 155 | { 156 | "col": 11, 157 | "row": 2 158 | }, 159 | { 160 | "col": 12, 161 | "row": 2 162 | }, 163 | { 164 | "col": 13, 165 | "row": 2 166 | }, 167 | { 168 | "col": 14, 169 | "row": 2 170 | }, 171 | { 172 | "col": 15, 173 | "row": 2 174 | }, 175 | { 176 | "col": 16, 177 | "row": 2 178 | }, 179 | { 180 | "col": 17, 181 | "row": 2 182 | } 183 | ], 184 | "id": 1 185 | }, 186 | { 187 | "cells": [ 188 | { 189 | "col": 2, 190 | "row": 37 191 | }, 192 | { 193 | "col": 2, 194 | "row": 36 195 | }, 196 | { 197 | "col": 2, 198 | "row": 35 199 | }, 200 | { 201 | "col": 2, 202 | "row": 34 203 | }, 204 | { 205 | "col": 2, 206 | "row": 33 207 | }, 208 | { 209 | "col": 2, 210 | "row": 32 211 | }, 212 | { 213 | "col": 3, 214 | "row": 32 215 | }, 216 | { 217 | "col": 4, 218 | "row": 32 219 | }, 220 | { 221 | "col": 5, 222 | "row": 32 223 | }, 224 | { 225 | "col": 6, 226 | "row": 32 227 | }, 228 | { 229 | "col": 7, 230 | "row": 32 231 | }, 232 | { 233 | "col": 8, 234 | "row": 32 235 | }, 236 | { 237 | "col": 9, 238 | "row": 32 239 | }, 240 | { 241 | "col": 10, 242 | "row": 32 243 | }, 244 | { 245 | "col": 10, 246 | "row": 31 247 | }, 248 | { 249 | "col": 10, 250 | "row": 30 251 | }, 252 | { 253 | "col": 10, 254 | "row": 29 255 | }, 256 | { 257 | "col": 10, 258 | "row": 28 259 | }, 260 | { 261 | "col": 10, 262 | "row": 27 263 | }, 264 | { 265 | "col": 11, 266 | "row": 27 267 | }, 268 | { 269 | "col": 12, 270 | "row": 27 271 | }, 272 | { 273 | "col": 12, 274 | "row": 26 275 | }, 276 | { 277 | "col": 12, 278 | "row": 25 279 | }, 280 | { 281 | "col": 12, 282 | "row": 24 283 | }, 284 | { 285 | "col": 12, 286 | "row": 23 287 | }, 288 | { 289 | "col": 12, 290 | "row": 22 291 | }, 292 | { 293 | "col": 11, 294 | "row": 22 295 | }, 296 | { 297 | "col": 10, 298 | "row": 22 299 | }, 300 | { 301 | "col": 9, 302 | "row": 22 303 | }, 304 | { 305 | "col": 9, 306 | "row": 21 307 | }, 308 | { 309 | "col": 9, 310 | "row": 20 311 | }, 312 | { 313 | "col": 9, 314 | "row": 19 315 | }, 316 | { 317 | "col": 9, 318 | "row": 18 319 | }, 320 | { 321 | "col": 9, 322 | "row": 17 323 | }, 324 | { 325 | "col": 8, 326 | "row": 17 327 | }, 328 | { 329 | "col": 7, 330 | "row": 17 331 | }, 332 | { 333 | "col": 6, 334 | "row": 17 335 | }, 336 | { 337 | "col": 5, 338 | "row": 17 339 | }, 340 | { 341 | "col": 4, 342 | "row": 17 343 | }, 344 | { 345 | "col": 3, 346 | "row": 17 347 | }, 348 | { 349 | "col": 2, 350 | "row": 17 351 | }, 352 | { 353 | "col": 2, 354 | "row": 16 355 | }, 356 | { 357 | "col": 2, 358 | "row": 15 359 | }, 360 | { 361 | "col": 2, 362 | "row": 14 363 | }, 364 | { 365 | "col": 2, 366 | "row": 13 367 | }, 368 | { 369 | "col": 2, 370 | "row": 12 371 | }, 372 | { 373 | "col": 3, 374 | "row": 12 375 | }, 376 | { 377 | "col": 4, 378 | "row": 12 379 | }, 380 | { 381 | "col": 5, 382 | "row": 12 383 | }, 384 | { 385 | "col": 6, 386 | "row": 12 387 | }, 388 | { 389 | "col": 7, 390 | "row": 12 391 | }, 392 | { 393 | "col": 8, 394 | "row": 12 395 | }, 396 | { 397 | "col": 9, 398 | "row": 12 399 | }, 400 | { 401 | "col": 10, 402 | "row": 12 403 | }, 404 | { 405 | "col": 10, 406 | "row": 11 407 | }, 408 | { 409 | "col": 10, 410 | "row": 10 411 | }, 412 | { 413 | "col": 10, 414 | "row": 9 415 | }, 416 | { 417 | "col": 10, 418 | "row": 8 419 | }, 420 | { 421 | "col": 10, 422 | "row": 7 423 | }, 424 | { 425 | "col": 11, 426 | "row": 7 427 | }, 428 | { 429 | "col": 12, 430 | "row": 7 431 | }, 432 | { 433 | "col": 13, 434 | "row": 7 435 | }, 436 | { 437 | "col": 14, 438 | "row": 7 439 | }, 440 | { 441 | "col": 15, 442 | "row": 7 443 | }, 444 | { 445 | "col": 16, 446 | "row": 7 447 | }, 448 | { 449 | "col": 17, 450 | "row": 7 451 | }, 452 | { 453 | "col": 17, 454 | "row": 6 455 | }, 456 | { 457 | "col": 17, 458 | "row": 5 459 | }, 460 | { 461 | "col": 17, 462 | "row": 4 463 | }, 464 | { 465 | "col": 17, 466 | "row": 3 467 | }, 468 | { 469 | "col": 17, 470 | "row": 2 471 | } 472 | ], 473 | "id": 2 474 | }, 475 | { 476 | "cells": [ 477 | { 478 | "col": 2, 479 | "row": 2 480 | }, 481 | { 482 | "col": 2, 483 | "row": 3 484 | }, 485 | { 486 | "col": 2, 487 | "row": 4 488 | }, 489 | { 490 | "col": 2, 491 | "row": 5 492 | }, 493 | { 494 | "col": 2, 495 | "row": 6 496 | }, 497 | { 498 | "col": 2, 499 | "row": 7 500 | }, 501 | { 502 | "col": 3, 503 | "row": 7 504 | }, 505 | { 506 | "col": 4, 507 | "row": 7 508 | }, 509 | { 510 | "col": 5, 511 | "row": 7 512 | }, 513 | { 514 | "col": 6, 515 | "row": 7 516 | }, 517 | { 518 | "col": 7, 519 | "row": 7 520 | }, 521 | { 522 | "col": 8, 523 | "row": 7 524 | }, 525 | { 526 | "col": 9, 527 | "row": 7 528 | }, 529 | { 530 | "col": 9, 531 | "row": 8 532 | }, 533 | { 534 | "col": 9, 535 | "row": 9 536 | }, 537 | { 538 | "col": 9, 539 | "row": 10 540 | }, 541 | { 542 | "col": 9, 543 | "row": 11 544 | }, 545 | { 546 | "col": 9, 547 | "row": 12 548 | }, 549 | { 550 | "col": 10, 551 | "row": 12 552 | }, 553 | { 554 | "col": 11, 555 | "row": 12 556 | }, 557 | { 558 | "col": 12, 559 | "row": 12 560 | }, 561 | { 562 | "col": 13, 563 | "row": 12 564 | }, 565 | { 566 | "col": 14, 567 | "row": 12 568 | }, 569 | { 570 | "col": 15, 571 | "row": 12 572 | }, 573 | { 574 | "col": 16, 575 | "row": 12 576 | }, 577 | { 578 | "col": 17, 579 | "row": 12 580 | }, 581 | { 582 | "col": 17, 583 | "row": 13 584 | }, 585 | { 586 | "col": 17, 587 | "row": 14 588 | }, 589 | { 590 | "col": 17, 591 | "row": 15 592 | }, 593 | { 594 | "col": 17, 595 | "row": 16 596 | }, 597 | { 598 | "col": 17, 599 | "row": 17 600 | }, 601 | { 602 | "col": 16, 603 | "row": 17 604 | }, 605 | { 606 | "col": 15, 607 | "row": 17 608 | }, 609 | { 610 | "col": 14, 611 | "row": 17 612 | }, 613 | { 614 | "col": 13, 615 | "row": 17 616 | }, 617 | { 618 | "col": 12, 619 | "row": 17 620 | }, 621 | { 622 | "col": 11, 623 | "row": 17 624 | }, 625 | { 626 | "col": 10, 627 | "row": 17 628 | }, 629 | { 630 | "col": 10, 631 | "row": 18 632 | }, 633 | { 634 | "col": 10, 635 | "row": 19 636 | }, 637 | { 638 | "col": 10, 639 | "row": 20 640 | }, 641 | { 642 | "col": 10, 643 | "row": 21 644 | }, 645 | { 646 | "col": 10, 647 | "row": 22 648 | }, 649 | { 650 | "col": 9, 651 | "row": 22 652 | }, 653 | { 654 | "col": 8, 655 | "row": 22 656 | }, 657 | { 658 | "col": 7, 659 | "row": 22 660 | }, 661 | { 662 | "col": 7, 663 | "row": 23 664 | }, 665 | { 666 | "col": 7, 667 | "row": 24 668 | }, 669 | { 670 | "col": 7, 671 | "row": 25 672 | }, 673 | { 674 | "col": 7, 675 | "row": 26 676 | }, 677 | { 678 | "col": 7, 679 | "row": 27 680 | }, 681 | { 682 | "col": 8, 683 | "row": 27 684 | }, 685 | { 686 | "col": 9, 687 | "row": 27 688 | }, 689 | { 690 | "col": 9, 691 | "row": 28 692 | }, 693 | { 694 | "col": 9, 695 | "row": 29 696 | }, 697 | { 698 | "col": 9, 699 | "row": 30 700 | }, 701 | { 702 | "col": 9, 703 | "row": 31 704 | }, 705 | { 706 | "col": 9, 707 | "row": 32 708 | }, 709 | { 710 | "col": 10, 711 | "row": 32 712 | }, 713 | { 714 | "col": 11, 715 | "row": 32 716 | }, 717 | { 718 | "col": 12, 719 | "row": 32 720 | }, 721 | { 722 | "col": 13, 723 | "row": 32 724 | }, 725 | { 726 | "col": 14, 727 | "row": 32 728 | }, 729 | { 730 | "col": 15, 731 | "row": 32 732 | }, 733 | { 734 | "col": 16, 735 | "row": 32 736 | }, 737 | { 738 | "col": 17, 739 | "row": 32 740 | }, 741 | { 742 | "col": 17, 743 | "row": 33 744 | }, 745 | { 746 | "col": 17, 747 | "row": 34 748 | }, 749 | { 750 | "col": 17, 751 | "row": 35 752 | }, 753 | { 754 | "col": 17, 755 | "row": 36 756 | }, 757 | { 758 | "col": 17, 759 | "row": 37 760 | } 761 | ], 762 | "id": 3 763 | }, 764 | { 765 | "cells": [ 766 | { 767 | "col": 2, 768 | "row": 2 769 | }, 770 | { 771 | "col": 2, 772 | "row": 3 773 | }, 774 | { 775 | "col": 2, 776 | "row": 4 777 | }, 778 | { 779 | "col": 2, 780 | "row": 5 781 | }, 782 | { 783 | "col": 2, 784 | "row": 6 785 | }, 786 | { 787 | "col": 2, 788 | "row": 7 789 | }, 790 | { 791 | "col": 3, 792 | "row": 7 793 | }, 794 | { 795 | "col": 4, 796 | "row": 7 797 | }, 798 | { 799 | "col": 5, 800 | "row": 7 801 | }, 802 | { 803 | "col": 6, 804 | "row": 7 805 | }, 806 | { 807 | "col": 7, 808 | "row": 7 809 | }, 810 | { 811 | "col": 8, 812 | "row": 7 813 | }, 814 | { 815 | "col": 9, 816 | "row": 7 817 | }, 818 | { 819 | "col": 10, 820 | "row": 7 821 | }, 822 | { 823 | "col": 10, 824 | "row": 8 825 | }, 826 | { 827 | "col": 10, 828 | "row": 9 829 | }, 830 | { 831 | "col": 10, 832 | "row": 10 833 | }, 834 | { 835 | "col": 10, 836 | "row": 11 837 | }, 838 | { 839 | "col": 10, 840 | "row": 12 841 | }, 842 | { 843 | "col": 9, 844 | "row": 12 845 | }, 846 | { 847 | "col": 8, 848 | "row": 12 849 | }, 850 | { 851 | "col": 7, 852 | "row": 12 853 | }, 854 | { 855 | "col": 7, 856 | "row": 13 857 | }, 858 | { 859 | "col": 7, 860 | "row": 14 861 | }, 862 | { 863 | "col": 7, 864 | "row": 15 865 | }, 866 | { 867 | "col": 7, 868 | "row": 16 869 | }, 870 | { 871 | "col": 7, 872 | "row": 17 873 | }, 874 | { 875 | "col": 8, 876 | "row": 17 877 | }, 878 | { 879 | "col": 9, 880 | "row": 17 881 | }, 882 | { 883 | "col": 9, 884 | "row": 18 885 | }, 886 | { 887 | "col": 9, 888 | "row": 19 889 | }, 890 | { 891 | "col": 9, 892 | "row": 20 893 | }, 894 | { 895 | "col": 9, 896 | "row": 21 897 | }, 898 | { 899 | "col": 9, 900 | "row": 22 901 | }, 902 | { 903 | "col": 10, 904 | "row": 22 905 | }, 906 | { 907 | "col": 11, 908 | "row": 22 909 | }, 910 | { 911 | "col": 12, 912 | "row": 22 913 | }, 914 | { 915 | "col": 13, 916 | "row": 22 917 | }, 918 | { 919 | "col": 14, 920 | "row": 22 921 | }, 922 | { 923 | "col": 15, 924 | "row": 22 925 | }, 926 | { 927 | "col": 16, 928 | "row": 22 929 | }, 930 | { 931 | "col": 17, 932 | "row": 22 933 | }, 934 | { 935 | "col": 17, 936 | "row": 23 937 | }, 938 | { 939 | "col": 17, 940 | "row": 24 941 | }, 942 | { 943 | "col": 17, 944 | "row": 25 945 | }, 946 | { 947 | "col": 17, 948 | "row": 26 949 | }, 950 | { 951 | "col": 17, 952 | "row": 27 953 | }, 954 | { 955 | "col": 16, 956 | "row": 27 957 | }, 958 | { 959 | "col": 15, 960 | "row": 27 961 | }, 962 | { 963 | "col": 14, 964 | "row": 27 965 | }, 966 | { 967 | "col": 13, 968 | "row": 27 969 | }, 970 | { 971 | "col": 12, 972 | "row": 27 973 | }, 974 | { 975 | "col": 11, 976 | "row": 27 977 | }, 978 | { 979 | "col": 10, 980 | "row": 27 981 | }, 982 | { 983 | "col": 10, 984 | "row": 28 985 | }, 986 | { 987 | "col": 10, 988 | "row": 29 989 | }, 990 | { 991 | "col": 10, 992 | "row": 30 993 | }, 994 | { 995 | "col": 10, 996 | "row": 31 997 | }, 998 | { 999 | "col": 10, 1000 | "row": 32 1001 | }, 1002 | { 1003 | "col": 9, 1004 | "row": 32 1005 | }, 1006 | { 1007 | "col": 8, 1008 | "row": 32 1009 | }, 1010 | { 1011 | "col": 7, 1012 | "row": 32 1013 | }, 1014 | { 1015 | "col": 6, 1016 | "row": 32 1017 | }, 1018 | { 1019 | "col": 5, 1020 | "row": 32 1021 | }, 1022 | { 1023 | "col": 4, 1024 | "row": 32 1025 | }, 1026 | { 1027 | "col": 3, 1028 | "row": 32 1029 | }, 1030 | { 1031 | "col": 2, 1032 | "row": 32 1033 | }, 1034 | { 1035 | "col": 2, 1036 | "row": 33 1037 | }, 1038 | { 1039 | "col": 2, 1040 | "row": 34 1041 | }, 1042 | { 1043 | "col": 2, 1044 | "row": 35 1045 | }, 1046 | { 1047 | "col": 2, 1048 | "row": 36 1049 | }, 1050 | { 1051 | "col": 2, 1052 | "row": 37 1053 | } 1054 | ], 1055 | "id": 4 1056 | }, 1057 | { 1058 | "cells": [ 1059 | { 1060 | "col": 17, 1061 | "row": 2 1062 | }, 1063 | { 1064 | "col": 17, 1065 | "row": 3 1066 | }, 1067 | { 1068 | "col": 17, 1069 | "row": 4 1070 | }, 1071 | { 1072 | "col": 17, 1073 | "row": 5 1074 | }, 1075 | { 1076 | "col": 17, 1077 | "row": 6 1078 | }, 1079 | { 1080 | "col": 17, 1081 | "row": 7 1082 | }, 1083 | { 1084 | "col": 16, 1085 | "row": 7 1086 | }, 1087 | { 1088 | "col": 15, 1089 | "row": 7 1090 | }, 1091 | { 1092 | "col": 14, 1093 | "row": 7 1094 | }, 1095 | { 1096 | "col": 13, 1097 | "row": 7 1098 | }, 1099 | { 1100 | "col": 12, 1101 | "row": 7 1102 | }, 1103 | { 1104 | "col": 11, 1105 | "row": 7 1106 | }, 1107 | { 1108 | "col": 10, 1109 | "row": 7 1110 | }, 1111 | { 1112 | "col": 9, 1113 | "row": 7 1114 | }, 1115 | { 1116 | "col": 9, 1117 | "row": 8 1118 | }, 1119 | { 1120 | "col": 9, 1121 | "row": 9 1122 | }, 1123 | { 1124 | "col": 9, 1125 | "row": 10 1126 | }, 1127 | { 1128 | "col": 9, 1129 | "row": 11 1130 | }, 1131 | { 1132 | "col": 9, 1133 | "row": 12 1134 | }, 1135 | { 1136 | "col": 10, 1137 | "row": 12 1138 | }, 1139 | { 1140 | "col": 11, 1141 | "row": 12 1142 | }, 1143 | { 1144 | "col": 12, 1145 | "row": 12 1146 | }, 1147 | { 1148 | "col": 12, 1149 | "row": 13 1150 | }, 1151 | { 1152 | "col": 12, 1153 | "row": 14 1154 | }, 1155 | { 1156 | "col": 12, 1157 | "row": 15 1158 | }, 1159 | { 1160 | "col": 12, 1161 | "row": 16 1162 | }, 1163 | { 1164 | "col": 12, 1165 | "row": 17 1166 | }, 1167 | { 1168 | "col": 11, 1169 | "row": 17 1170 | }, 1171 | { 1172 | "col": 10, 1173 | "row": 17 1174 | }, 1175 | { 1176 | "col": 10, 1177 | "row": 18 1178 | }, 1179 | { 1180 | "col": 10, 1181 | "row": 19 1182 | }, 1183 | { 1184 | "col": 10, 1185 | "row": 20 1186 | }, 1187 | { 1188 | "col": 10, 1189 | "row": 21 1190 | }, 1191 | { 1192 | "col": 10, 1193 | "row": 22 1194 | }, 1195 | { 1196 | "col": 9, 1197 | "row": 22 1198 | }, 1199 | { 1200 | "col": 8, 1201 | "row": 22 1202 | }, 1203 | { 1204 | "col": 7, 1205 | "row": 22 1206 | }, 1207 | { 1208 | "col": 6, 1209 | "row": 22 1210 | }, 1211 | { 1212 | "col": 5, 1213 | "row": 22 1214 | }, 1215 | { 1216 | "col": 4, 1217 | "row": 22 1218 | }, 1219 | { 1220 | "col": 3, 1221 | "row": 22 1222 | }, 1223 | { 1224 | "col": 2, 1225 | "row": 22 1226 | }, 1227 | { 1228 | "col": 2, 1229 | "row": 23 1230 | }, 1231 | { 1232 | "col": 2, 1233 | "row": 24 1234 | }, 1235 | { 1236 | "col": 2, 1237 | "row": 25 1238 | }, 1239 | { 1240 | "col": 2, 1241 | "row": 26 1242 | }, 1243 | { 1244 | "col": 2, 1245 | "row": 27 1246 | }, 1247 | { 1248 | "col": 3, 1249 | "row": 27 1250 | }, 1251 | { 1252 | "col": 4, 1253 | "row": 27 1254 | }, 1255 | { 1256 | "col": 5, 1257 | "row": 27 1258 | }, 1259 | { 1260 | "col": 6, 1261 | "row": 27 1262 | }, 1263 | { 1264 | "col": 7, 1265 | "row": 27 1266 | }, 1267 | { 1268 | "col": 8, 1269 | "row": 27 1270 | }, 1271 | { 1272 | "col": 9, 1273 | "row": 27 1274 | }, 1275 | { 1276 | "col": 9, 1277 | "row": 28 1278 | }, 1279 | { 1280 | "col": 9, 1281 | "row": 29 1282 | }, 1283 | { 1284 | "col": 9, 1285 | "row": 30 1286 | }, 1287 | { 1288 | "col": 9, 1289 | "row": 31 1290 | }, 1291 | { 1292 | "col": 9, 1293 | "row": 32 1294 | }, 1295 | { 1296 | "col": 10, 1297 | "row": 32 1298 | }, 1299 | { 1300 | "col": 11, 1301 | "row": 32 1302 | }, 1303 | { 1304 | "col": 12, 1305 | "row": 32 1306 | }, 1307 | { 1308 | "col": 13, 1309 | "row": 32 1310 | }, 1311 | { 1312 | "col": 14, 1313 | "row": 32 1314 | }, 1315 | { 1316 | "col": 15, 1317 | "row": 32 1318 | }, 1319 | { 1320 | "col": 16, 1321 | "row": 32 1322 | }, 1323 | { 1324 | "col": 17, 1325 | "row": 32 1326 | }, 1327 | { 1328 | "col": 17, 1329 | "row": 33 1330 | }, 1331 | { 1332 | "col": 17, 1333 | "row": 34 1334 | }, 1335 | { 1336 | "col": 17, 1337 | "row": 35 1338 | }, 1339 | { 1340 | "col": 17, 1341 | "row": 36 1342 | }, 1343 | { 1344 | "col": 17, 1345 | "row": 37 1346 | } 1347 | ], 1348 | "id": 5 1349 | } 1350 | ] 1351 | }, 1352 | "gameConstants": { 1353 | "maxAP": 20, 1354 | "maxTurns": 180, 1355 | "turnTimeout": 800, 1356 | "pickTimeout": 5000, 1357 | "turnsToUpgrade": 23, 1358 | "turnsToSpell": 10, 1359 | "damageUpgradeAddition": 3, 1360 | "rangeUpgradeAddition": 1, 1361 | "deckSize": 9, 1362 | "handSize": 5, 1363 | "apAddition": 2 1364 | }, 1365 | "baseUnits": [ 1366 | { 1367 | "typeId": 0, 1368 | "maxHP": 16, 1369 | "baseAttack": 15, 1370 | "baseRange": 3, 1371 | "target": "BOTH", 1372 | "isFlying": false, 1373 | "isMultiple": false, 1374 | "ap": 5 1375 | }, 1376 | { 1377 | "typeId": 1, 1378 | "maxHP": 25, 1379 | "baseAttack": 5, 1380 | "baseRange": 4, 1381 | "target": "GROUND", 1382 | "isFlying": false, 1383 | "isMultiple": true, 1384 | "ap": 4 1385 | }, 1386 | { 1387 | "typeId": 2, 1388 | "maxHP": 15, 1389 | "baseAttack": 10, 1390 | "baseRange": 3, 1391 | "target": "AIR", 1392 | "isFlying": false, 1393 | "isMultiple": true, 1394 | "ap": 4 1395 | }, 1396 | { 1397 | "typeId": 3, 1398 | "maxHP": 25, 1399 | "baseAttack": 15, 1400 | "baseRange": 1, 1401 | "target": "GROUND", 1402 | "isFlying": false, 1403 | "isMultiple": false, 1404 | "ap": 5 1405 | }, 1406 | { 1407 | "typeId": 4, 1408 | "maxHP": 55, 1409 | "baseAttack": 10, 1410 | "baseRange": 1, 1411 | "target": "GROUND", 1412 | "isFlying": false, 1413 | "isMultiple": true, 1414 | "ap": 6 1415 | }, 1416 | { 1417 | "typeId": 5, 1418 | "maxHP": 27, 1419 | "baseAttack": 5, 1420 | "baseRange": 1, 1421 | "target": "AIR", 1422 | "isFlying": true, 1423 | "isMultiple": false, 1424 | "ap": 3 1425 | }, 1426 | { 1427 | "typeId": 6, 1428 | "maxHP": 15, 1429 | "baseAttack": 5, 1430 | "baseRange": 4, 1431 | "target": "BOTH", 1432 | "isFlying": true, 1433 | "isMultiple": false, 1434 | "ap": 3 1435 | }, 1436 | { 1437 | "typeId": 7, 1438 | "maxHP": 25, 1439 | "baseAttack": 10, 1440 | "baseRange": 2, 1441 | "target": "GROUND", 1442 | "isFlying": true, 1443 | "isMultiple": true, 1444 | "ap": 5 1445 | }, 1446 | { 1447 | "typeId": 8, 1448 | "maxHP": 20, 1449 | "baseAttack": 20, 1450 | "baseRange": 2, 1451 | "target": "BOTH", 1452 | "isFlying": true, 1453 | "isMultiple": false, 1454 | "ap": 6 1455 | } 1456 | ], 1457 | "spells": [ 1458 | { 1459 | "type": "HASTE", 1460 | "typeId": 0, 1461 | "priority": 3, 1462 | "duration": 2, 1463 | "range": 1, 1464 | "power": 1, 1465 | "target": "ALLIED" 1466 | }, 1467 | { 1468 | "type": "HP", 1469 | "typeId": 1, 1470 | "priority": 0, 1471 | "duration": 1, 1472 | "range": 1, 1473 | "power": -4, 1474 | "target": "ENEMY" 1475 | }, 1476 | { 1477 | "type": "HP", 1478 | "typeId": 2, 1479 | "priority": 1, 1480 | "duration": 1, 1481 | "range": 1, 1482 | "power": 3, 1483 | "target": "ALLIED" 1484 | }, 1485 | { 1486 | "type": "TELE", 1487 | "typeId": 3, 1488 | "priority": 2, 1489 | "duration": 1, 1490 | "range": null, 1491 | "power": null, 1492 | "target": "SELF" 1493 | }, 1494 | { 1495 | "type": "DUPLICATE", 1496 | "typeId": 4, 1497 | "priority": 4, 1498 | "duration": 3, 1499 | "range": 0, 1500 | "power": 2, 1501 | "target": "ALLIED" 1502 | }, 1503 | { 1504 | "type": "HP", 1505 | "typeId": 5, 1506 | "priority": 0, 1507 | "duration": 3, 1508 | "range": 1, 1509 | "power": -2, 1510 | "target": "ENEMY" 1511 | } 1512 | ] 1513 | } 1514 | --------------------------------------------------------------------------------