all repos — uStrat @ b6949155499c9bdcc9aca0b102fc841e14693455

simple turn-based strategy game inspired by uCity, Super Robot Wars, C&C, Fire Emblem

fixed infinite loop in AI movement
Iris Lightshard nilix@nilfm.cc
PGP Signature
-----BEGIN PGP SIGNATURE-----

iQJDBAABCAAtFiEEkFh6dA+k/6CXFXU4O3+8IhROY5gFAl5M0OUPHG5pbGl4QG5p
bGZtLmNjAAoJEDt/vCIUTmOYNFMP/3BuceOPFO8GCjVLi4NG3uJHSIzOSPOcfmZ8
4ezWRXyRkYNaWddj/mdK1SbR9E9zkBSfc8ssN9B3A1kVXQPdc4fdSP8ufx6Cz1zq
Yz87tWbx6nyZxhgYFoGUAjGQej+P+P6cmZiuBdVvnkKQqytprLVAmw3TjAW6pO6V
XE9Qn9lTapKw7LN5E9W631xVVNOx6W/1d7KaZuD7NCFQ0i1ax66q4nQrLO7fTgwI
aG2dPqVV40PRMg9lIVsPX84gH/5J4WPoM1ux/ZndJvcoVzL35NTU/6hXYYoRkedv
ANcq2RDLr2enKBfq9eMF/CXMxmaQ0mXx+HEmaQST+R4oEFJ3kbPFGLMdapl2W1IL
Nxy+QXD3N7zkPYqKByqqKizylrF6uKOt2UdpmqX7W+MKaiTmIWuzjdwop+1aRGpZ
7S7dW7uWenBh1HgXT2B2cBljk+9KVd/Diiwfh8Yhgg1MoNof9zyRO2IrlIi4p9Nb
InbG2IlDyp+wz00JwE/jJ6syFlBuEMdezJBEiMMhBHEHMwAh/AR0IUJBo50+EWAO
/HrB6ZHpGoOTEVwGho1/WXTeOzgJFdYpydmmqyzbhHRuvhX3oBL5Z3KDs9xQSHU6
8Pm/Z+yFtM0UDxMgMGi2BTB6MdctjfN6juNapewu6cP0TKlYaG+L5JjENb6fxSXp
mNVS1WnQ
=bCwq
-----END PGP SIGNATURE-----
commit

b6949155499c9bdcc9aca0b102fc841e14693455

parent

e194fb61f11506a1bbf75a9af135466a626f94bb

3 files changed, 20 insertions(+), 7 deletions(-)

jump to
M AI.jsAI.js

@@ -150,7 +150,7 @@ s = i;

} } if (s > 0) - return teams.p1.structs[u]; + return teams.p1.structs[s]; else return teams.p1.structs[0];

@@ -193,7 +193,7 @@ s = i;

} } if (s > 0) - return teams.cpu.structs[u]; + return teams.cpu.structs[s]; else return teams.cpu.structs[0];

@@ -700,7 +700,7 @@ else if (AI.countStructs("cpu factory") >= AI.countStructs("cpu armory"))

{ buildArmory(); } - else if (AI.rand(4) < 2) + else if (AI.rand(4) < 1) { if (AI.countStructs("cpu factory") < AI.countStructs("cpu armory")) {
M Attack.jsAttack.js

@@ -22,6 +22,11 @@ }

attack.cpuInit = function() { + if (AI.focus >= teams.cpu.units.length || isEmptyObject(teams.cpu.units[AI.focus].equipment)) + { + AI.focus = 0; + endPhase(); + } gameState.flow = "cpuAttackReady"; attack.src = teams.cpu.units[AI.focus]; attack.pattern = attack.src.equipment.pattern;

@@ -34,6 +39,8 @@ else

{ // search for closest enemy unit in range, target it // if nothing in range, do nothing + AI.focus++; + gameState.flow = "cpuAttackReady" } }
M Engine.jsEngine.js

@@ -145,7 +145,7 @@ {

switch (gameState.phase) { case "cpu": - gameState.flow = "cpuAttackReady" + gameState.flow = "cpuAttackInit"; break; case "p1": gameState.flow = "freeLook";

@@ -187,7 +187,8 @@ teams.cpu.units[AI.focus].target = {};

} if (isEmptyObject(teams.cpu.units[AI.focus].equipment)) { - AI.assignTarget(teams.cpu.units[AI.focus], AI.getClosestArmory(teams.cpu.units[AI.focus]), "defend"); + teams.cpu.units[AI.focus].target = AI.getClosestArmory(teams.cpu.units[AI.focus]); + teams.cpu.units[AI.focus].mode = "defend"; } else if (isEmptyObject(teams.cpu.units[AI.focus].target)) {

@@ -230,10 +231,15 @@ {

AI.focus = 0; AI.manageEquipment(); if (!isEmptyObject(teams.cpu.units[AI.focus].equipment)) + { + mapCursor.x = teams.cpu.units[AI.focus].x; + mapCursor.y = teams.cpu.units[AI.focus].y; gameState.flow = "cpuAttackInit"; - return; + return; + } + else endPhase(); } - gameState.flow = "cpuGenTargets"; + else gameState.flow = "cpuGenTargets"; } function cpuAttackInit()