From 3f58557173893c474616750c717fef595d0d3c17 Mon Sep 17 00:00:00 2001 From: Jakob MG Date: Tue, 14 Jun 2011 22:09:46 +0200 Subject: [PATCH] Make walker go to last known enemy location when loosing target --- qcsrc/server/tturrets/units/unit_walker.qc | 34 ++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/qcsrc/server/tturrets/units/unit_walker.qc b/qcsrc/server/tturrets/units/unit_walker.qc index ff5512c9f..de6a0d2fd 100644 --- a/qcsrc/server/tturrets/units/unit_walker.qc +++ b/qcsrc/server/tturrets/units/unit_walker.qc @@ -436,6 +436,7 @@ void walker_move_path() } .vector enemy_last_loc; +.float enemy_last_time; void walker_move_enemy() { switch (self.waterlevel) @@ -459,9 +460,31 @@ void walker_move_enemy() self.moveto = self.enemy.origin; self.steerto = steerlib_attract2(self.moveto, 0.5, 500, 0.95); self.enemy_last_loc = self.enemy.origin; - + self.enemy_last_time = time; +} + +void walker_move_enemy_last_loc() +{ + switch (self.waterlevel) + { + case 0: + self.animflag = ANIM_WALK; + case 1: + case 2: + if (self.animflag != ANIM_SWIM) + self.animflag = ANIM_WALK; + else + self.animflag = ANIM_SWIM; + break; + case 3: + self.animflag = ANIM_SWIM; + } + + self.moveto = self.enemy_last_loc; + self.steerto = steerlib_attract2(self.moveto, 0.5, 500, 0.95); } + void walker_move_idle_pause() { self.moveto = self.origin; @@ -531,7 +554,14 @@ void walker_postthink() walker_move_path(); else if (self.enemy == world) { - if(self.pathcurrent) + if(self.enemy_last_loc != '0 0 0') + { + if(vlen(self.origin - self.enemy_last_loc) < 128 || time - self.enemy_last_time > 10) + self.enemy_last_loc = '0 0 0'; + else + walker_move_enemy_last_loc(); + } + else if(self.pathcurrent) walker_move_path(); else walker_move_idle_pause(); -- 2.39.2