AI can now search from HQ outward or map-edges inward for cell to build struct
Iris Lightshard nilix@nilfm.cc
PGP Signature
-----BEGIN PGP SIGNATURE----- iQJDBAABCAAtFiEEkFh6dA+k/6CXFXU4O3+8IhROY5gFAl0RLggPHG5pbGl4QG5p bGZtLmNjAAoJEDt/vCIUTmOYGvEP/2LkUJJ5am9AVbU2FpgJdhQSJI5kjAmaYBYY SHF2Vj9bUMjt5a+REO3wop3KK4ZsFj5UQnL5NMyv0G3vbUlp7UaVlHcesXKjKvzm cFzIeHWuw6ubCRHSgJdmfJWUBFPPxSOHjt12d4vW07nbyG82ydArr50UDAMBKSkB mICGUQtgDpeBX42azVZL7Iw8I4NNUpfdLo4ckHni7cG/QakhorJ3abE6yJnN9cW9 S34ZCHR4LexLNcLO9GLZHNuja7ar1ACM9ERPkGdIQVyaaqigtCBeUIUndhRh5DCc yyZ5RZKapKRhbFfcJv7QHKxLkOQSX3KXP1Ih/FM/DCyiMbIs/3HPeaQL43vVO/2w k9JjuVbALo8W2w28EpICd3d3UP7+DjMAnt9sEFQp9LCMsYvRzw58WzKHKTvGzf0z pfhYK4URfBlA71P4Hi0BQ53zbNVCi1G7AThwCzjA+f0Bk7J8vQgTEiJChpmI8xnc PY5WhWBXzfCWCnzctdooFmccEKVnJWg0Vjsi8qeMl8fXz27LWNFwJQeKagt+o3P4 GauIXViUtrgsCo40hBvgjJQ0CRAuUi1myOPufMHMOmCGHk440CGhg9P3jeJ0qm4v oemdqLqSyqpTPyIP7j79paedFTNlKY9lX53nQpY7CjA+u++knX15pj4b+7dv5asU VvONxKc+ =PwrH -----END PGP SIGNATURE-----
1 files changed,
92 insertions(+),
4 deletions(-)
jump to
M
AI.js
→
AI.js
@@ -10,6 +10,21 @@ {
return Math.floor(Math.random()*i); } +AI.countStructs = function(str) +{ + var i, l, n; + n = 0; + l = teams.cpu.structs.length + for (i = 0; i < l; i++) + { + if (teams.cpu.structs[i].name == str) + { + n++; + } + } + return n; +} + AI.getMorale = function() { var x, y, z;@@ -47,7 +62,67 @@ }
} } -AI.findNewStruct = function() +AI.findNewStructClose = function() +{ + var origin = {}; + origin.x = teams.cpu.structs[0].x; + origin.y = teams.cpu.structs[0].y; + var i, j, w; + w = AI.rand(4); + switch (w) + { + case 0: + for (i = 0; i < 64; i++) + { + for (j = origin.y; j < 64; j++) + { + if (dist(origin, map.data[i][j]) < teams.cpu.energy/15 && isEmptyObject(map.data[i][j].structure)) + { + return map.data[i][j]; + } + } + } + break; + case 1: + for (i = 63; i >= 0; i--) + { + for (j = origin.y; j >= 0; j--) + { + if (dist(origin, map.data[i][j]) < teams.cpu.energy/15 && isEmptyObject(map.data[i][j].structure)) + { + return map.data[i][j]; + } + } + } + break; + case 2: + for (i = origin.x; i < 64; i++) + { + for (j = 0; j < 64; j++) + { + if (dist(origin, map.data[i][j]) < teams.cpu.energy/15 && isEmptyObject(map.data[i][j].structure)) + { + return map.data[i][j]; + } + } + } + break; + case 3: + for (i = origin.x; i >= 0; i--) + { + for (j = 63; j >= 0; j--) + { + if (dist(origin, map.data[i][j]) < teams.cpu.energy/15 && isEmptyObject(map.data[i][j].structure)) + { + return map.data[i][j]; + } + } + } + break; + } +} + +AI.findNewStructFar = function() { var origin = {}; origin.x = teams.cpu.structs[0].x;@@ -109,7 +184,17 @@ }
AI.buildStruct = function() { - var cell = AI.findNewStruct(); + var z = AI.rand(2); + var cell = AI.findNewStructClose(); + switch (z) + { + case 0: + cell = AI.findNewStructClose(); + break; + case 1: + cell = AI.findNewStructFar(); + break; + } mapCursor.x = cell.x; mapCursor.y = cell.y; switch (cell.type)@@ -122,7 +207,7 @@ if (teams.cpu.energy >= 40)
{ if (AI.rand(4) < 2) { - if (AI.rand(4) < 3) + if (AI.countStructs("cpu factory") <= AI.countStructs("cpu armory")) { buildFactory(); }@@ -162,7 +247,10 @@ if (s.name == "cpu factory")
{ mapCursor.x = s.x; mapCursor.y = s.y; - AI.buildUnits(); + if (isEmptyObject(map.data[s.x][s.y].unit)) + { + AI.buildUnits(); + } } } }