]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Fix monster spawner spawning too many monsters
authorMario <mario.mario@y7mail.com>
Thu, 24 Jan 2013 09:10:37 +0000 (20:10 +1100)
committerMario <mario.mario@y7mail.com>
Thu, 24 Jan 2013 09:10:37 +0000 (20:10 +1100)
qcsrc/server/monsters/lib/monsters.qc
qcsrc/server/monsters/monster/spawner.qc
qcsrc/server/mutators/gamemode_td.qc

index 1ad8d2f4939965c6de292850992385a5fe3dc4d2..0338f5ef6f97ba2286cd5f752c32dc7cb34598e0 100644 (file)
@@ -614,6 +614,9 @@ void monster_hook_death()
        if(!(self.spawnflags & MONSTERFLAG_SPAWNED) && !self.monster_respawned)
                monsters_killed += 1;
                
+       if(self.realowner.classname == "monster_spawner")
+               self.realowner.spawner_monstercount -= 1;
+               
        if(self.realowner.flags & FL_CLIENT)
                self.realowner.monstercount -= 1;
                
index d625bd9f9f9a815af9f4c1a83bd83635ae78c93b..f73085a17394391a05f60b148821809dfc530227 100644 (file)
@@ -73,13 +73,6 @@ void spawner_die ()
        monster_hook_death(); // for post-death mods
 }
 
-void spawner_recount()
-{
-       self.spawner_monstercount = 0;
-       self.think = spawner_think;
-       self.nextthink = time;
-}
-
 void spawner_think() 
 {
        float finished = FALSE;
@@ -87,9 +80,7 @@ void spawner_think()
        
        if(self.spawner_monstercount >= autocvar_g_monster_spawner_maxmobs)
        {
-               self.think = spawner_recount;
-               self.nextthink = time + 10 + random() * 4;
-               return;
+               self.nextthink = time + 5;
        }
 
        if (self.spawner_monstercount <= autocvar_g_monster_spawner_maxmobs)
@@ -100,10 +91,7 @@ void spawner_think()
        
        self.nextthink = time + 1;
 
-       if(self.spawner_monstercount <= autocvar_g_monster_spawner_maxmobs)
-               self.nextthink = time + 0.1;
-       
-       if not(finished) 
+       if(self.spawner_monstercount <= autocvar_g_monster_spawner_maxmobs || !finished)
                self.nextthink = time + 0.1;
 }
 
index 0c9eeb301ef72b81ff66718ac0ea25513c8b5bb1..05016232282c00388cdc08db376ab28d78d50066 100644 (file)
@@ -501,9 +501,6 @@ void build_phase()
        totalmonsters += autocvar_g_td_monster_count_increment * wave_count;
        monster_skill += autocvar_g_td_monsters_skill_increment;
        
-       monsters_total = totalmonsters;
-       monsters_killed = 0;
-       
        if(wave_count < 1) wave_count = 1;
 
        genhealmsg = (gen_washealed) ? ((td_gencount == 1) ? " and generator " : " and generators ") : "";
@@ -547,7 +544,8 @@ void build_phase()
                
        if(totalmonsters < 1) totalmonsters = ((autocvar_g_td_monster_count > 0) ? autocvar_g_td_monster_count : 10);
        
-       rint(totalmonsters); // to be safe
+       monsters_total = totalmonsters;
+       monsters_killed = 0;
        
        print(strcat(buildmsg, healmsg, countmsg, startmsg, "\n"));