From: Mario Date: Thu, 24 Jan 2013 09:10:37 +0000 (+1100) Subject: Fix monster spawner spawning too many monsters X-Git-Tag: xonotic-v0.8.0~241^2^2~575 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=ba8a8cf9c42f7562210e616ae8250071b33f9bf5;p=xonotic%2Fxonotic-data.pk3dir.git Fix monster spawner spawning too many monsters --- 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"));