From ba8a8cf9c42f7562210e616ae8250071b33f9bf5 Mon Sep 17 00:00:00 2001 From: Mario Date: Thu, 24 Jan 2013 20:10:37 +1100 Subject: [PATCH] Fix monster spawner spawning too many monsters --- qcsrc/server/monsters/lib/monsters.qc | 3 +++ qcsrc/server/monsters/monster/spawner.qc | 16 ++-------------- qcsrc/server/mutators/gamemode_td.qc | 6 ++---- 3 files changed, 7 insertions(+), 18 deletions(-) diff --git a/qcsrc/server/monsters/lib/monsters.qc b/qcsrc/server/monsters/lib/monsters.qc index 1ad8d2f49..0338f5ef6 100644 --- a/qcsrc/server/monsters/lib/monsters.qc +++ b/qcsrc/server/monsters/lib/monsters.qc @@ -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; diff --git a/qcsrc/server/monsters/monster/spawner.qc b/qcsrc/server/monsters/monster/spawner.qc index d625bd9f9..f73085a17 100644 --- a/qcsrc/server/monsters/monster/spawner.qc +++ b/qcsrc/server/monsters/monster/spawner.qc @@ -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; } diff --git a/qcsrc/server/mutators/gamemode_td.qc b/qcsrc/server/mutators/gamemode_td.qc index 0c9eeb301..050162322 100644 --- a/qcsrc/server/mutators/gamemode_td.qc +++ b/qcsrc/server/mutators/gamemode_td.qc @@ -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")); -- 2.39.2