From 05f7acb92dcf9812678857b25e9899a4adf84439 Mon Sep 17 00:00:00 2001 From: P. J. McDermott Date: Mon, 09 Aug 2021 01:12:29 -0400 Subject: char/enemy: Fix anti-backtracking --- (limited to 'src') diff --git a/src/char/enemy.c b/src/char/enemy.c index edfd5c3..e480d10 100644 --- a/src/char/enemy.c +++ b/src/char/enemy.c @@ -42,6 +42,7 @@ _mf_enemy_step(struct mf_char *c) int i; int j; int t; + enum _mf_char_dir back; int dx; int dy; @@ -52,8 +53,17 @@ _mf_enemy_step(struct mf_char *c) dirs[i] = dirs[j]; dirs[j] = t; } + + /* Don't go backwards unless necessary */ + switch (c->cur_dir) { + case MF_CHAR_DIR_U_: back = MF_CHAR_DIR_D_; break; + case MF_CHAR_DIR_D_: back = MF_CHAR_DIR_U_; break; + case MF_CHAR_DIR_L_: back = MF_CHAR_DIR_R_; break; + case MF_CHAR_DIR_R_: back = MF_CHAR_DIR_L_; break; + default: back = MF_CHAR_DIR_N_; break; + } for (i = 0; i < 3; ++i) { - if (dirs[i] == c->cur_dir) { + if (dirs[i] == back) { t = dirs[i]; dirs[i] = dirs[3]; dirs[3] = t; -- cgit v0.9.1