summary refs log tree commit diff
diff options
context:
space:
mode:
authorzlago2025-05-08 22:02:59 +0200
committerzlago2025-05-08 22:02:59 +0200
commit8c44ff6a0f085850952b104b6f3daeab448cb4f8 (patch)
tree50e9403c75a41e944de4babd640699b41e6534e7
parent6af605d10d4d7e2bdea79b8d69d0d48704ef77f8 (diff)
flying enemy behaviour tweaks
hopefully less weird, still to fix: edge case where they can fly backwards?
-rw-r--r--src/flier.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/flier.c b/src/flier.c
index 4adf9ab..1fd3092 100644
--- a/src/flier.c
+++ b/src/flier.c
@@ -303,6 +303,7 @@ static int flier_update(struct entity *self) {
 			}
 			if (abs(entities.player[0].x - self->x) + abs(entities.player[0].y - self->y) > to_fixed(96)) {
 				self->state = FLIER_IDLE;
+				ext->reached_x = ext->reached_y = false; // not doing this makes them get lost and confused
 			}
 			self->timer--;
 			if (self->timer == 0) {
@@ -321,6 +322,12 @@ static int flier_update(struct entity *self) {
 				self->state = FLIER_ALERT_IDLE;
 				self->timer = ext->attack_delay;
 			}
+			if (abs(entities.player[0].x - self->x) + abs(entities.player[0].y - self->y) > to_fixed(96)) {
+				anim(self, FLIER_A_IDLE);
+				self->state = FLIER_IDLE;
+				self->timer = ext->idle_time;
+				ext->reached_x = ext->reached_y = false; // not doing this makes them get lost and confused
+			}
 			break;
 
 		case FLIER_ALERT_ATTACK:
@@ -340,6 +347,7 @@ static int flier_update(struct entity *self) {
 				anim(self, FLIER_A_IDLE);
 				self->state = FLIER_IDLE;
 				self->timer = ext->idle_time;
+				ext->reached_x = ext->reached_y = false; // not doing this makes them get lost and confused
 			}
 			break;
 	}