]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Returning 1 on the MonsterMove hook will stop the monster
authorMario <mario.mario@y7mail.com>
Mon, 22 Apr 2013 20:21:19 +0000 (06:21 +1000)
committerMario <mario.mario@y7mail.com>
Mon, 22 Apr 2013 20:21:19 +0000 (06:21 +1000)
qcsrc/server/monsters/lib/monsters.qc
qcsrc/server/mutators/base.qh
qcsrc/server/mutators/gamemode_towerdefense.qc

index 3aa1e664e5a6bccd18e3d393d4b41e613688c72c..905fc8aac2568ba17b3dc8905a85bf2ac496269b 100644 (file)
@@ -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;
index 0dca24019b871cc9be3d1de752c101cd965ed81f..d9b57080eaed5095c3f010773294bbae9114200a 100644 (file)
@@ -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;
index ff961ffef917b4c254b126ccf4ced78c0c6d703a..4d4506f77ca55f4f27ba081b4354f9ed24ee26b0 100644 (file)
@@ -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"))
        {