use let instead of var everywhere; fixed bugs and adjusted ocean generation
PGP Signature
-----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEkFh6dA+k/6CXFXU4O3+8IhROY5gFAmDT5aYACgkQO3+8IhRO Y5hLxQ//T8kB56SM/fVfR88sLmNnUW/x7+nb8Ly6GbqT9AmQKjrNXKoQbqTS/JLN HDrx/DESwo0umGeAgPdxbFTJyckBc9+Sr6j4AqSxZiOK/BI8OOR+1dDIevPSuZ5e rgfWtUZByb94dCSu7mLsNnB6jrnOAayp0cWDTsC3ginL6tAJZX4x/0eclRFB4dOX sGCIzIad+Jm0QVHI63cIa55UY8MvpVkb4NBkkPHRLomnrlHOLyE0BxqF3YHCs5Gu Iy4xB+zecaskXoPSlDr2wtHxc3f8JuRa2QuMr1WFF7vxqO9GrD66j9ZpmUZ0uZ7L E5N+9ELlcjvw7CFFLmXJoXntzosdr5ctTs0frqynstz0Al9ip2emfJcq13OSVW7D Rz3neUZeoezaBcCn4+jSJRSPgWsRvwNgIc09fGje0JtiX07jJ7/STjoplboLf9RI G3y7du4XmTH01At73SBEri+362CGZE2cSbLDlrPdPw1kWOtPcZbPHyTKNLUOrS23 ijC4kX/VSxvye0b9DeKD4vV89U9yeWzH1hflHWcbojAW3iN0gIVrUOowuFD0efu1 9z8SPb8BhAyAwxJqH1mjfsygCViH1S7vkDcqbRAetLQ/4E6xq9K17aQM9YNNwF8R r2B0km1f0T06lgX2u1LxNi5CmRBgyJmkQOmSwHzeqtBJyJ9IiZY= =cist -----END PGP SIGNATURE-----
@@ -33,11 +33,15 @@ }
AI.setTargetType = function() { - var x = teams.cpu.units[AI.focus]; - var w = AI.rand(2); - var z = AI.rand(3); + let x = teams.cpu.units[AI.focus]; + let w = AI.rand(2); + let z = AI.rand(3); let rank = 99999 + if (x.equipment === null) { + x.targetType = "defend"; + return; + } for (let i = 0; i < teams.p1.units.length; i++) { if (dist(teams.p1.units[i], x) <= x.equipment.range) { x.targetType = "unit";@@ -71,7 +75,7 @@ }
AI.findTarget = function() { - var x = teams.cpu.units[AI.focus]; + let x = teams.cpu.units[AI.focus]; console.log("cpu unit " + AI.focus + " target type: " + x.targetType); switch (x.targetType) {@@ -88,15 +92,19 @@ x.target = AI.selectEnemyStruct();
x.mode = "attack"; break; case "defend": - x.target = AI.selectOwnStruct(); + if (x.equipment === null) { + x.target = AI.getClosestArmory(x); + } else { + x.target = AI.selectOwnStruct(); + } x.mode = "defend"; } } AI.findSafeCity = function() { - var z, i, j, k; - var tX, tY, d; + let z, i, j, k; + let tX, tY, d; tX = -1; tY = -1; d = 1000;@@ -121,13 +129,13 @@ }
} if (tX >= 0 && tY >= 0) return map.data[tX][tY]; - else return map.data[16][16]; + else return teams.p1.structs[0]; } AI.selectEnemyUnit = function() { // rank enemy units: HP*ATK/DEF - var i, j, k, u, tmp; + let i, j, k, u, tmp; u = -1 j = 0; for (i = 0; i < teams.p1.units.length; i++)@@ -152,13 +160,13 @@ }
if (u >= 0) return teams.p1.units[u]; else - return map.data[16][16]; + return teams.p1.structs[0]; } AI.selectEnemyStruct = function() { // rank structs by HP/DEF - var i, j, k, s; + let i, j, k, s; j = 0; s = -1;@@ -181,10 +189,14 @@
AI.selectOwnStruct = function() { // rank structs by HP/DEF - var i, j, k, s, x; + let i, j, k, s, x; j = 0; s = -1; - var skip = false; + let skip = false; + + if (map.data[teams.cpu.structs[0].x][teams.cpu.structs[0].y].unit === null) { + return teams.cpu.structs[0]; + } for (i = 0; i < teams.cpu.structs.length; i++) {@@ -223,8 +235,8 @@ }
AI.getBearing = function(self, target) { - var w, z, d; - var bearing = ""; + let w, z, d; + let bearing = ""; w = target.x - self.x; z = target.y - self.y; d = dist(self, target);@@ -271,7 +283,7 @@
AI.getClosestArmory = function(u) { - var i, j, k, A; + let i, j, k, A; A = -1; j = 99999; for (i = 0; i < teams.cpu.structs.length; i++)@@ -296,8 +308,8 @@ }
AI.equip = function(u) { - var z; - var unit = map.data[mapCursor.x][mapCursor.y].unit; + let z = -1; + let unit = map.data[mapCursor.x][mapCursor.y].unit; if (teams.cpu.energy >= 80) {@@ -315,7 +327,6 @@ else if (teams.cpu.energy >= 12)
{ z = 0; } - else z = -1; switch (z) {@@ -356,7 +367,7 @@ AI.generateSimplePath = function(u)
{ movement.init(u); console.log("AI movement init"); - var i, j, k, b, w, x, y, z, q, last; + let i, j, k, b, w, x, y, z, q, last; z = "nsew"; last = ""; i = 0;@@ -429,7 +440,7 @@ AI.generatePath = function(u)
{ movement.init(u); console.log("AI movement init"); - var i, j, k, b, w, x, y, z, q, last; + let i, j, k, b, w, x, y, z, q, last; z = "nsew"; last = ""; i = 0;@@ -542,7 +553,7 @@ }
AI.countStructs = function(str) { - var i, l, n; + let i, l, n; n = 0; l = teams.cpu.structs.length for (i = 0; i < l; i++)@@ -557,10 +568,10 @@ }
AI.findNewStructClose = function() { - var origin = {}; + let origin = {}; origin.x = teams.cpu.structs[0].x; origin.y = teams.cpu.structs[0].y; - var i, j, w; + let i, j, w; w = AI.rand(4); switch (w) {@@ -617,10 +628,10 @@ }
AI.findNewStructFar = function() { - var origin = {}; + let origin = {}; origin.x = teams.cpu.structs[0].x; origin.y = teams.cpu.structs[0].y; - var i, j, w; + let i, j, w; w = AI.rand(4); switch(w) {@@ -681,7 +692,7 @@ }
AI.manageEquipment = function() { - var i, j, k; + let i, j, k; for (i = 0; i < teams.cpu.units.length; i++) { j = map.data[teams.cpu.units[i].x][teams.cpu.units[i].y];@@ -696,8 +707,8 @@ }
AI.buildStruct = function() { - var z = AI.rand(2); - var cell = AI.findNewStructClose(); + let z = AI.rand(2); + let cell = AI.findNewStructClose(); switch (z) { case 0:@@ -760,8 +771,8 @@ }
AI.cycleThruFactories = function() { - var l = teams.cpu.structs.length; - var i, s; + let l = teams.cpu.structs.length; + let i, s; for (i = 0; i < l; i++) { s = teams.cpu.structs[i];@@ -837,7 +848,7 @@ }
AI.targetReset = function(target) { - for (var i = 0; i < teams.cpu.units.length; i++) + for (let i = 0; i < teams.cpu.units.length; i++) { if (teams.cpu.units[i].target && teams.cpu.units[i].target.x == target.x &&
@@ -26,11 +26,15 @@ }
attack.cpuInit = function() { - if (AI.focus >= teams.cpu.units.length || isEmptyObject(teams.cpu.units[AI.focus].equipment)) + if (AI.focus >= teams.cpu.units.length) { AI.focus = 0; endPhase(); } + if (teams.cpu.units[AI.focus].equipment === null) { + AI.focus++; + return; + } attack.src = teams.cpu.units[AI.focus]; attack.pattern = attack.src.equipment.pattern; if (attack.src.mode != "defend")@@ -50,7 +54,7 @@ else
{ // search for closest enemy unit in range, target it // if nothing in range, do nothing - var i, min, working; + let i, min, working; min = 99999; working = 0; for (i = 0; i < teams.p1.units.length; i++)@@ -84,9 +88,9 @@ }
attack.go = function() { - var pattern = rotatePattern(this.pattern, this.rotations[this.rotation]); - var origin = {}; - var i, j; + let pattern = rotatePattern(this.pattern, this.rotations[this.rotation]); + let origin = {}; + let i, j; origin.x = mapCursor.x - 2; origin.y = mapCursor.y - 2; this.animCounter++;@@ -127,7 +131,7 @@ }
attack.listen = function() { - var backupCursor = + let backupCursor = { x: mapCursor.x, y: mapCursor.y@@ -265,9 +269,9 @@ }
attack.drawPattern = function() { - var pattern = rotatePattern(this.pattern, this.rotations[this.rotation]); - var i, j; - var origin = {} + let pattern = rotatePattern(this.pattern, this.rotations[this.rotation]); + let i, j; + let origin = {} origin.x = mapCursor.x - 2, origin.y = mapCursor.y - 2; console.log(this.rotations);
@@ -4,7 +4,7 @@
function equipment() { this.pattern = new Array(5); - var i; + let i; for (i = 0; i < 5; i++) { this.pattern[i] = new Array(5);@@ -18,7 +18,7 @@ }
function rotatePattern90deg(p) { - var rP, i, j; + let rP, i, j; rP = new Array(5); for (i = 0; i < 5; i++)@@ -54,8 +54,8 @@ }
function equipOrUpgradeBeamSabreMKI() { - var unit = map.data[mapCursor.x][mapCursor.y].unit; - var m = false; + let unit = map.data[mapCursor.x][mapCursor.y].unit; + let m = false; if (unit.equipment === null || unit.equipment.name != "Beam Sabre") { unit.equipment = beamSabreMKI();@@ -85,9 +85,9 @@ }
function beamSabreMKI() { - var self = new equipment(); + let self = new equipment(); self.range = 1; - self.name = "Beam Sabre mkI"; + self.name = "Beam Sabre"; self.pattern = [[ 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0 ], [ 0, 0, 1, 0, 0 ],@@ -101,8 +101,8 @@ }
function equipOrUpgradeRifleMKI() { - var unit = map.data[mapCursor.x][mapCursor.y].unit; - var m = false; + let unit = map.data[mapCursor.x][mapCursor.y].unit; + let m = false; if (unit.equipment === null || unit.equipment.name != "Rifle") { unit.equipment = rifleMKI();@@ -131,9 +131,9 @@ }
function rifleMKI() { - var self = new equipment(); + let self = new equipment(); self.range = 4; - self.name = "Rifle mkI"; + self.name = "Rifle"; self.pattern = [[ 0, 0, 0, 0, 0], [ 0, 0, 0, 0, 0], [ 0, 0, 1, 0, 0],@@ -146,8 +146,8 @@ }
function equipOrUpgradeBeamCannon() { - var unit = map.data[mapCursor.x][mapCursor.y].unit; - var m = false; + let unit = map.data[mapCursor.x][mapCursor.y].unit; + let m = false; if (unit.equipment === null || unit.equipment.name != "Beam Cannon") { unit.equipment = beamCannon();@@ -176,7 +176,7 @@ }
function beamCannon() { - var self = new equipment(); + let self = new equipment(); self.range = 5; self.name = "Beam Cannon"; self.pattern = [[ 0, 0, 0, 0, 0],@@ -191,8 +191,8 @@ }
function equipOrUpgradeHellBomb() { - var unit = map.data[mapCursor.x][mapCursor.y].unit; - var m = false; + let unit = map.data[mapCursor.x][mapCursor.y].unit; + let m = false; if (unit.equipment === null || unit.equipment.name != "Hell Bomb") { unit.equipment = hellBomb();@@ -221,7 +221,7 @@ }
function hellBomb() { - var self = new equipment(); + let self = new equipment(); self.range = 7; self.name = "Hell Bomb"; self.pattern = [[ 0, 0, 0, 0, 0],
@@ -91,7 +91,7 @@ screen.fillText("HP: " + currentCell.unit.hp + "/" + currentCell.unit.maxHP, 10, 70);
screen.fillText("pow: " + currentCell.unit.pow, 10, 80); screen.fillText("def: " + currentCell.unit.def, 10, 90); screen.fillText("agi: " + currentCell.unit.agi, 10, 100); - var equipString; + let equipString; if (currentCell.unit.equipment !== null) { equipString = currentCell.unit.equipment.name;@@ -155,8 +155,8 @@ }
mapCursor.cycle = function() { - var i; - var arr; + let i; + let arr; switch (this.cycleMode) {@@ -208,7 +208,7 @@
map.loadTiles = function() { map.gfx.mapTiles = {}; - var tiles = map.gfx.mapTiles; + let tiles = map.gfx.mapTiles; tiles.plain = new Image(); tiles.plain.src = 'assets/mapbg/plain.png'; tiles.forest = new Image();@@ -299,7 +299,7 @@
map.init = function() { map.data = new Array(map.sz); - var i; + let i; for (i = 0; i < map.sz; i++) { map.data[i] = new Array(map.sz);@@ -308,7 +308,7 @@ }
map.draw = function() { - var i, j; + let i, j; for (i = 0; i < 20; i++) { for (j = 0; j < 11; j++)@@ -332,7 +332,7 @@ }
map.fillPlains = function() { - var i, j; + let i, j; for (i = 0; i < map.sz; i++) { for (j = 0; j < map.sz; j++)@@ -345,8 +345,8 @@ }
map.genCities = function(number, sz, sigma) { - var cities = new Array(number); - var i, j, k; + let cities = new Array(number); + let i, j, k; for (i = 0; i < number; i++) { cities[i] = {};@@ -355,8 +355,8 @@ cities[i].y = Math.floor(Math.random()*map.sz);
cities[i].radius = sz - Math.floor(Math.random()*sigma); cities[i].style = Math.floor(Math.random()*2); } - var z; - var delta = 0; + let z; + let delta = 0; for (z = 0; z < number; z++) { delta = cities[z].radius@@ -386,7 +386,7 @@
map.genForests = function(density) { - var rX, rY, i; + let rX, rY, i; for (i = 0; i < density*map.sz*map.sz; i++) { rX = Math.floor(Math.random()*map.sz);@@ -400,7 +400,7 @@ }
} map.genRuins = function(density) { - var rX, rY, i; + let rX, rY, i; for (i = 0; i < density*density*map.sz*map.sz; i++) { rX = Math.floor(Math.random()*map.sz);@@ -415,8 +415,8 @@
map.genMountains = function(number, sz, sigma) { if (number < 10) { number = 10 }; - var mountains = new Array(number); - var i, j, k; + let mountains = new Array(number); + let i, j, k; for (i = 0; i < number; i++) { mountains[i] = {};@@ -425,8 +425,8 @@ mountains[i].y = Math.floor(Math.random()*map.sz);
mountains[i].radius = sz - Math.floor(Math.random()*sigma); mountains[i].style = Math.floor(Math.random()*2); } - var z; - var delta = 0; + let z; + let delta = 0; for (z = 0; z < number; z++) { delta = mountains[z].radius@@ -455,10 +455,9 @@ }
map.fillOcean = function(sz, gravity) { - var oceanSize = sz ; - var gravity = gravity; - var ogSz = oceanSize; - var i, j, k + let oceanSize = sz; + let ogSz = oceanSize; + let i, j, k switch (gravity) { case 10: break;@@ -556,7 +555,7 @@ }
map.countCities = function() { - var i, j; + let i, j; for (i = 0; i < map.sz; i++) { for (j = 0; j < map.sz; j++)@@ -575,6 +574,9 @@ map.fillPlains();
map.genForests(0.5); map.genMountains(Math.floor(Math.random()*map.sz/4 + 4), Math.floor(Math.random()*map.sz/6), map.sz/4); map.genCities(Math.floor(Math.random()*map.sz/7 + 3), 5, 4); - map.fillOcean(map.sz/8 + Math.floor(Math.random()*map.sz/8), Math.floor(Math.random()*9) + 1); + const o = Math.floor(Math.random()*5); + for (let i = 0; i < o; i++) { + map.fillOcean(map.sz/8 + Math.floor(Math.random()*map.sz/8), Math.floor(Math.random()*9) + 1); + } map.countCities(); }
@@ -88,7 +88,7 @@ screen.textBaseline = 'top';
screen.fillStyle = "white"; screen.drawImage(menuSys.gfx.border, 155, 70); - var i; + let i; for (i = 0; i < menuSys.menu.items.length; i++) { screen.drawImage(menuSys.gfx.body, 155, 71 + 12*i);@@ -107,8 +107,8 @@ }
function mainMenu() { - var thisCell = map.data[mapCursor.x][mapCursor.y]; - var self = new blankMenu(); + let thisCell = map.data[mapCursor.x][mapCursor.y]; + let self = new blankMenu(); if (gameState.phase == "cpu") { self.addItem("End Phase", endPhase);@@ -150,8 +150,8 @@ }
function buildMenu() { - var thisCell = map.data[mapCursor.x][mapCursor.y]; - var self = new blankMenu(); + let thisCell = map.data[mapCursor.x][mapCursor.y]; + let self = new blankMenu(); if (teams.p1.energy >= 20 && thisCell.type != "water" && thisCell.type != "forest") {@@ -198,8 +198,8 @@ }
function fabricateMenu() { - var thisCell = map.data[mapCursor.x][mapCursor.y]; - var self = new blankMenu(); + let thisCell = map.data[mapCursor.x][mapCursor.y]; + let self = new blankMenu(); if (teams.p1.energy >= 30) { self.addItem("E30 Ranger", buildRanger);@@ -235,15 +235,15 @@ }
function equipmentMenu() { - var thisCell = map.data[mapCursor.x][mapCursor.y]; - var self = new blankMenu(); + let thisCell = map.data[mapCursor.x][mapCursor.y]; + let self = new blankMenu(); if (teams.p1.energy >= 15) { self.addItem("E15 Beam Sabre", equipOrUpgradeBeamSabreMKI); } if (teams.p1.energy >= 12) - {z + { self.addItem("E12 Rifle", equipOrUpgradeRifleMKI); } if (teams.p1.energy >= 45)
@@ -31,7 +31,7 @@ minimap.gfx.cpuu.src = "assets/mapbg/miniMap/cpuu.png"
minimap.draw = function() { - var i, j, sprite; + let i, j, sprite; screen.drawImage(minimap.gfx.bg, 0, 0); for (i = 0; i < map.sz; i++) {
@@ -38,8 +38,8 @@ }
movement.listen = function() { - var z = null; - var chainEnd = this.chain[movement.chain.length - 1]; + let z = null; + let chainEnd = this.chain[movement.chain.length - 1]; movement.ticker = new Date(); if (controller.z) {@@ -106,7 +106,7 @@ }
movement.showChain = function() { - var c, i, j; + let c, i, j; screen.font = "8px console"; screen.textBaseline = "top"; screen.fillStyle = "white";@@ -167,7 +167,7 @@ }
function moveToTile(unit, tile) { - var oX, oY, tmp; + let oX, oY, tmp; tmp = null; if (dist(unit, tile) < 1)
@@ -21,7 +21,7 @@ }
function mkFactory(player, x, y) { - var self = new structure(); + let self = new structure(); self.sprite = new Image(); self.sprite.src = "assets/struct/" + player + "/factory.png"; self.energy = 0;@@ -38,7 +38,7 @@ }
function mkArmory(player, x, y) { - var self = new structure(); + let self = new structure(); self.sprite = new Image(); self.sprite.src = "assets/struct/" + player + "/armory.png"; self.energy = 0;@@ -56,7 +56,7 @@
function mkTidal(player, x, y) { - var self = new structure(); + let self = new structure(); self.sprite = new Image(); self.sprite.src = "assets/struct/" + player + "/tidal.png"; self.energy = 30;@@ -74,7 +74,7 @@ }
function mkSolar(player, x, y) { - var self = new structure(); + let self = new structure(); self.sprite = new Image(); self.sprite.src = "assets/struct/" + player + "/solar.png"; self.energy = 10;@@ -168,7 +168,7 @@ }
function mkMine(player, x, y) { - var self = new structure(); + let self = new structure(); self.sprite = new Image(); self.sprite.src = "assets/struct/" + player + "/mine.png"; self.energy = 20;@@ -186,7 +186,7 @@ }
function mkHQ(player) { - var self = new structure(); + let self = new structure(); self.sprite = new Image(); self.sprite.src = "assets/struct/" + player + "/hq.png"; self.flag = 1;@@ -234,7 +234,7 @@ }
function destroyStruct(x,y) { - var z, w; + let z, w; if (map.data[x][y].structure.name.startsWith("p1")) { z = teams.p1;
@@ -10,7 +10,7 @@ this.data = new Array(2);
this.data[0] = this.p1; this.data[1] = this.cpu; - var i; + let i; for (i = 0; i < 2; i++) { this.data[i].units = new Array();@@ -43,7 +43,7 @@ }
function getIndex(player, type, obj) { - var x, y, z, i; + let x, y, z, i; switch (player) { case "p1":
@@ -28,7 +28,7 @@ }
function mkAce(player, x, y) { - var self = new Unit(); + let self = new Unit(); self.sprite = new Image(); self.sprite.src = "assets/unit/" + player + "/ace.png"; self.pow = 7;@@ -62,7 +62,7 @@ }
function mkRanger(player, x, y) { - var self = new Unit(); + let self = new Unit(); self.sprite = new Image(); self.sprite.src = "assets/unit/" + player + "/ranger.png"; self.x = x;@@ -90,7 +90,7 @@ }
function mkKnight(player, x, y) { - var self = new Unit(); + let self = new Unit(); self.sprite = new Image(); self.sprite.src = "assets/unit/" + player + "/knight.png"; self.hp = 20;@@ -124,7 +124,7 @@ }
function mkBattleAngel(player, x, y) { - var self = new Unit(); + let self = new Unit(); self.sprite = new Image(); self.sprite.src = "assets/unit/" + player + "/battleAngel.png"; self.hp = 30;@@ -158,7 +158,7 @@ }
function mkBlitzWalker(player, x, y) { - var self = new Unit(); + let self = new Unit(); self.sprite = new Image(); self.sprite.src = "assets/unit/" + player + "/blitzWalker.png"; self.hp = 50;@@ -206,7 +206,7 @@ }
function destroyUnit(x,y) { - var z, w; + let z, w; if (map.data[x][y].unit.name.startsWith("p1")) { z = teams.p1;