summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/char/enemy.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/char/enemy.c b/src/char/enemy.c
index f8e91a3..e51e440 100644
--- a/src/char/enemy.c
+++ b/src/char/enemy.c
@@ -52,6 +52,7 @@ _mf_enemy_step(struct mf_char *c)
enum _mf_char_dir back;
int dx;
int dy;
+ struct mf_char *o;
/* Shuffle directions */
for (i = 0; i < 4; ++i) {
@@ -89,9 +90,21 @@ _mf_enemy_step(struct mf_char *c)
/* Wall ahead; don't go this direction. */
continue;
}
+ for (o = c; o != NULL; o = ((struct mf_enemy *) o)->next_enemy){
+ if (o->cur_x == c->cur_x+dx && o->cur_y == c->cur_y+dy){
+ /* Another enemy currently in this direction */
+ goto next_dir;
+ }
+ if (o->new_x == c->cur_x+dx && o->new_y == c->cur_y+dy){
+ /* Another enemy moving in this direction */
+ goto next_dir;
+ }
+ }
/* Move */
c->new_dir = dirs[i];
return 0;
+ next_dir:
+ continue;
}
return 0;