From b7753b9b75fdad8af69372ebe66f4f53cbe2ff89 Mon Sep 17 00:00:00 2001 From: Mario Date: Mon, 22 Apr 2013 21:37:31 +1000 Subject: [PATCH] Update zombie status while spawning --- qcsrc/client/monsters.qc | 2 +- qcsrc/server/monsters/lib/defs.qh | 3 +++ qcsrc/server/monsters/lib/monsters.qc | 6 ++++-- qcsrc/server/monsters/monster/ogre.qc | 2 +- qcsrc/server/monsters/monster/zombie.qc | 3 ++- 5 files changed, 11 insertions(+), 5 deletions(-) diff --git a/qcsrc/client/monsters.qc b/qcsrc/client/monsters.qc index d5b7ca7f1..39ef4e8a1 100644 --- a/qcsrc/client/monsters.qc +++ b/qcsrc/client/monsters.qc @@ -93,7 +93,7 @@ void monster_precache(float _mid) void Monsters_Precache() { float i; - for(i = MONSTER_FIRST; i <= MONSTER_LAST; ++i) + for(i = MONSTER_FIRST + 1; i < MONSTER_LAST; ++i) monster_precache(i); } diff --git a/qcsrc/server/monsters/lib/defs.qh b/qcsrc/server/monsters/lib/defs.qh index 20370f044..8ebea2ebe 100644 --- a/qcsrc/server/monsters/lib/defs.qh +++ b/qcsrc/server/monsters/lib/defs.qh @@ -4,6 +4,8 @@ .float candrop; +.float spawn_time; // stop monster from moving around right after spawning + .string oldtarget2; .float lastshielded; @@ -20,6 +22,7 @@ const float MONSTERSKILL_NOTHARD = 1024; // monster will not spawn on skill 4 const float MONSTERSKILL_NOTINSANE = 2048; // monster will not spawn on skill 5 const float MONSTERSKILL_NOTNIGHTMARE = 4096; // monster will not spawn on skill >= 6 +// legacy flags const float MONSTERFLAG_NORESPAWN = 2; const float MONSTERFLAG_MINIBOSS = 64; // monster spawns as mini-boss (also has a chance of naturally becoming one) const float MONSTERFLAG_NOWANDER = 128; // disable wandering around (currently unused) diff --git a/qcsrc/server/monsters/lib/monsters.qc b/qcsrc/server/monsters/lib/monsters.qc index 7da1256bb..1ad2861cd 100644 --- a/qcsrc/server/monsters/lib/monsters.qc +++ b/qcsrc/server/monsters/lib/monsters.qc @@ -553,10 +553,11 @@ void monster_move(float runspeed, float walkspeed, float stopspeed, float manim_ } } - if(gameover || time < game_starttime || (autocvar_g_campaign && !campaign_bots_may_start)) + if(gameover || time < game_starttime || (autocvar_g_campaign && !campaign_bots_may_start) || time < self.spawn_time) { runspeed = walkspeed = 0; - monsters_setframe(manim_idle); + if(time >= self.spawn_time) + monsters_setframe(manim_idle); movelib_beak_simple(stopspeed); self.SendFlags |= MSF_MOVE; return; @@ -1030,6 +1031,7 @@ float monster_initialize(string net_name, float mon_id, self.oldtarget2 = self.target2; self.deadflag = DEAD_NO; // UNDEAD self.noalign = nodrop; + self.spawn_time = time; self.dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_BOTCLIP | DPCONTENTS_MONSTERCLIP; if not(self.ticrate) diff --git a/qcsrc/server/monsters/monster/ogre.qc b/qcsrc/server/monsters/monster/ogre.qc index 96ede40ff..955c34811 100644 --- a/qcsrc/server/monsters/monster/ogre.qc +++ b/qcsrc/server/monsters/monster/ogre.qc @@ -217,7 +217,7 @@ void ogre_spawn() self.checkattack = GenericCheckAttack; self.attack_melee = ogre_melee; self.attack_ranged = ogre_missile; - self.nextthink = time + 0.1; + self.nextthink = time + random() * 0.5 + 0.1; self.think = ogre_think; self.weapon = WEP_GRENADE_LAUNCHER; diff --git a/qcsrc/server/monsters/monster/zombie.qc b/qcsrc/server/monsters/monster/zombie.qc index 35855bf89..131374b74 100644 --- a/qcsrc/server/monsters/monster/zombie.qc +++ b/qcsrc/server/monsters/monster/zombie.qc @@ -125,7 +125,8 @@ void zombie_spawn() self.health = autocvar_g_monster_zombie_health * self.scale; self.classname = "monster_zombie"; - self.nextthink = time + 2.1; + self.spawn_time = time + 2.1; + self.nextthink = time + random() * 0.5 + 0.1; self.think = zombie_think; self.checkattack = GenericCheckAttack; self.attack_melee = zombie_attack_standing; -- 2.39.2