enemy ai types
This commit is contained in:
parent
0b371ac22d
commit
a8ead4e8df
54 changed files with 620 additions and 14 deletions
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -34,14 +34,14 @@ function c_loadstageone() {
|
|||
bunny = c_inheritunit(16, 12, un.bunny, ARMY.THEM);
|
||||
c_addweapon(bunny, wp[$"iron sword"], true);
|
||||
|
||||
bunny = c_inheritunit(16, 5, un.bunny, ARMY.THEM);
|
||||
bunny = c_inheritunit(16, 5, un.bunnyguard, ARMY.THEM);
|
||||
c_addweapon(bunny, wp[$"iron sword"], true);
|
||||
bunny = c_inheritunit(17, 6, un.bunny, ARMY.THEM);
|
||||
bunny = c_inheritunit(17, 6, un.bunnyguard, ARMY.THEM);
|
||||
c_addweapon(bunny, wp[$"iron sword"], true);
|
||||
bunny = c_inheritunit(18, 7, un.bunny, ARMY.THEM);
|
||||
bunny = c_inheritunit(18, 7, un.bunnyguard, ARMY.THEM);
|
||||
c_addweapon(bunny, wp[$"iron sword"], true);
|
||||
|
||||
bunny = c_inheritunit(19, 13, un.bunny, ARMY.THEM);
|
||||
bunny = c_inheritunit(19, 13, un.bunnythief, ARMY.THEM);
|
||||
c_addweapon(bunny, wp[$"iron sword"], true);
|
||||
|
||||
|
||||
|
|
|
@ -49,7 +49,7 @@ function c_loadmarkings() {
|
|||
for (k=0; k<array_length(global.units[ARMY.THEM]); k++) {
|
||||
var unitobject = global.units[ARMY.THEM][k];
|
||||
var i, j;
|
||||
var mov = unitobject.data.mov.val;
|
||||
var mov = unitobject.data.mov.val+unitobject.data.rng.val;
|
||||
for (i=-mov; i<=mov; i++) {
|
||||
for (j=-mov; j<=mov; j++) {
|
||||
if abs(i)+abs(j) <= mov {
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
function c_tiledist(x1, y1, x2, y2) {
|
||||
return new vec2(abs(x1-y2), abs(y1-y2));
|
||||
return new vec2(abs(x1-x2), abs(y1-y2));
|
||||
}
|
|
@ -48,6 +48,8 @@ mydata = {
|
|||
aitype: AI.KILLER,
|
||||
}
|
||||
nu unit(mydata, mydata, [st.hp.add(34), st.str.add(10), st.def.add(6), st.spd.add(6), st.mov.add(4), st.hit.add(0), st.rng.add(1)]);
|
||||
|
||||
|
||||
mydata = {
|
||||
name: "bunny",
|
||||
desc: "",
|
||||
|
@ -59,7 +61,7 @@ mydata = {
|
|||
}
|
||||
nu unit(mydata, mydata, [st.hp.add(25), st.str.add(9), st.def.add(7), st.spd.add(7), st.mov.add(4), st.hit.add(0), st.rng.add(1)]);
|
||||
mydata = {
|
||||
name: "rei'sen",
|
||||
name: "bunnyguard",
|
||||
desc: "",
|
||||
skills: [],
|
||||
idle: s_bunny,
|
||||
|
@ -67,4 +69,26 @@ mydata = {
|
|||
down: s_bunnydown,
|
||||
aitype: AI.WAITER,
|
||||
}
|
||||
nu unit(mydata, mydata, [st.hp.add(20), st.str.add(8), st.def.add(8), st.spd.add(10), st.mov.add(0), st.hit.add(0), st.rng.add(1)]);
|
||||
mydata = {
|
||||
name: "bunnythief",
|
||||
desc: "",
|
||||
skills: [],
|
||||
idle: s_bunny,
|
||||
up: s_bunnyup,
|
||||
down: s_bunnydown,
|
||||
aitype: AI.ESCAPER,
|
||||
}
|
||||
nu unit(mydata, mydata, [st.hp.add(20), st.str.add(6), st.def.add(4), st.spd.add(15), st.mov.add(3), st.hit.add(0), st.rng.add(1)]);
|
||||
|
||||
|
||||
mydata = {
|
||||
name: "rei'sen",
|
||||
desc: "",
|
||||
skills: [],
|
||||
idle: s_reisen,
|
||||
up: s_reisenup,
|
||||
down: s_reisendown,
|
||||
aitype: AI.WAITER,
|
||||
}
|
||||
nu unit(mydata, mydata, [st.hp.add(40), st.str.add(14), st.def.add(10), st.spd.add(13), st.mov.add(2), st.hit.add(0), st.rng.add(1)]);
|
Loading…
Add table
Add a link
Reference in a new issue