From: Mario Date: Mon, 22 Apr 2013 20:21:19 +0000 (+1000) Subject: Returning 1 on the MonsterMove hook will stop the monster X-Git-Tag: xonotic-v0.8.0~241^2^2~298 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=4da251da4a672a5c8220eeb33c3d4db2a236a8e2;p=xonotic%2Fxonotic-data.pk3dir.git Returning 1 on the MonsterMove hook will stop the monster --- diff --git a/qcsrc/server/monsters/lib/monsters.qc b/qcsrc/server/monsters/lib/monsters.qc index 3aa1e664e..905fc8aac 100644 --- a/qcsrc/server/monsters/lib/monsters.qc +++ b/qcsrc/server/monsters/lib/monsters.qc @@ -538,7 +538,13 @@ void monster_move(float runspeed, float walkspeed, float stopspeed, float manim_ } } - if(gameover || time < game_starttime || (autocvar_g_campaign && !campaign_bots_may_start) || time < self.spawn_time || player_count - currentbots < 1) + targ = self.goalentity; + + monster_target = targ; + monster_speed_run = runspeed; + monster_speed_walk = walkspeed; + + if(MUTATOR_CALLHOOK(MonsterMove) || gameover || time < game_starttime || (autocvar_g_campaign && !campaign_bots_may_start) || time < self.spawn_time) { runspeed = walkspeed = 0; if(time >= self.spawn_time) @@ -548,12 +554,6 @@ void monster_move(float runspeed, float walkspeed, float stopspeed, float manim_ return; } - targ = self.goalentity; - - monster_target = targ; - monster_speed_run = runspeed; - monster_speed_walk = walkspeed; - MUTATOR_CALLHOOK(MonsterMove); targ = monster_target; runspeed = monster_speed_run; walkspeed = monster_speed_walk; diff --git a/qcsrc/server/mutators/base.qh b/qcsrc/server/mutators/base.qh index 0dca24019..d9b57080e 100644 --- a/qcsrc/server/mutators/base.qh +++ b/qcsrc/server/mutators/base.qh @@ -161,6 +161,7 @@ MUTATOR_HOOKABLE(MonsterDropItem); MUTATOR_HOOKABLE(MonsterMove); // called when a monster moves + // returning TRUE makes the monster stop // INPUT: float monster_speed_run; float monster_speed_walk; diff --git a/qcsrc/server/mutators/gamemode_towerdefense.qc b/qcsrc/server/mutators/gamemode_towerdefense.qc index ff961ffef..4d4506f77 100644 --- a/qcsrc/server/mutators/gamemode_towerdefense.qc +++ b/qcsrc/server/mutators/gamemode_towerdefense.qc @@ -782,6 +782,12 @@ MUTATOR_HOOKFUNCTION(td_MonsterCheckBossFlag) MUTATOR_HOOKFUNCTION(td_MonsterMove) { + entity head; + float n_players = 0; + + FOR_EACH_PLAYER(head) { ++n_players; } + if(n_players < 1) return TRUE; + if not(self.enemy) // don't change targets while attacking if((vlen(monster_target.origin - self.origin) <= 100 && monster_target.classname == "td_waypoint") || (vlen(monster_target.origin - self.origin) <= 200 && (self.flags & FL_FLY) && monster_target.classname == "td_waypoint")) {