enemy ai types

This commit is contained in:
the me 2022-08-18 19:26:10 -07:00
parent 0b371ac22d
commit a8ead4e8df
54 changed files with 620 additions and 14 deletions

View file

@ -6,13 +6,6 @@ function c_doenemyai(target) {
case AI.KILLER:
var dude = c_findnearestunit(ARMY.US);
repeat(target.data.mov.val) {
var dist = c_tiledist(target.pos.x, target.pos.y, dude.pos.x, dude.pos.y);
if dist.x+dist.y <= target.data.rng.val {
log("started combat")
c_generatecombatstack([target, dude]);
break;
}
log(c_tiledist(target.pos.x, target.pos.y, dude.pos.x, dude.pos.y));
var guy = c_gettile(target.pos.x, target.pos.y);
if target.pos.x < dude.pos.x {
var guy = c_gettile(target.pos.x+1, target.pos.y);
@ -29,14 +22,77 @@ function c_doenemyai(target) {
c_moveunit(target, guy);
}
}
var dist = c_tiledist(target.pos.x, target.pos.y, dude.pos.x, dude.pos.y);
if dist.x+dist.y <= target.data.rng.val {
log("started combat")
c_generatecombatstack([target, dude]);
break;
}
c_loadmarkings();
}
target.waiting = true;
break;
case AI.WAITER:
var dude = c_findnearestunit(ARMY.US);
var dist = c_tiledist(target.pos.x, target.pos.y, dude.pos.x, dude.pos.y);
if dist > target.data.mov.val + target.data.rng.val {
target.waiting = true;
break;
}
repeat(target.data.mov.val) {
var guy = c_gettile(target.pos.x, target.pos.y);
if target.pos.x < dude.pos.x {
var guy = c_gettile(target.pos.x+1, target.pos.y);
} else if target.pos.x > dude.pos.x {
var guy = c_gettile(target.pos.x-1, target.pos.y);
}
if target.pos.y < dude.pos.y {
var guy = c_gettile(target.pos.x, target.pos.y+1);
} else if target.pos.y > dude.pos.y {
var guy = c_gettile(target.pos.x, target.pos.y-1);
}
if guy != noone {
if guy.passable && !c_containsunit(guy.x, guy.y) {
c_moveunit(target, guy);
}
}
var dist = c_tiledist(target.pos.x, target.pos.y, dude.pos.x, dude.pos.y);
if dist.x+dist.y <= target.data.rng.val {
log("started combat")
c_generatecombatstack([target, dude]);
break;
}
c_loadmarkings();
}
target.waiting = true;
break;
case AI.ESCAPER:
var dude = c_gettile(0, 9);
repeat(target.data.mov.val) {
var guy = c_gettile(target.pos.x, target.pos.y);
if target.pos.x < dude.x {
var guy = c_gettile(target.pos.x+1, target.pos.y);
} else if target.pos.x > dude.x {
var guy = c_gettile(target.pos.x-1, target.pos.y);
}
if target.pos.y < dude.y {
var guy = c_gettile(target.pos.x, target.pos.y+1);
} else if target.pos.y > dude.y && target.pos.x < 4 {
var guy = c_gettile(target.pos.x, target.pos.y-1);
}
if guy != noone {
if guy.passable {
c_moveunit(target, guy);
}
}
var dist = c_tiledist(target.pos.x, target.pos.y, dude.x, dude.y);
log(dist);
if dist.x+dist.y <= 0 {
log("IM LEAVING");
c_deleteunit(target.pos.x, target.pos.y, target);
}
c_loadmarkings();
}
target.waiting = true;
break;
}