From 9871fa2401adb78ffa5b8811a38987da152638ec Mon Sep 17 00:00:00 2001 From: "Timothy C. McGrath" Date: Sat, 14 Feb 2004 11:23:40 +0000 Subject: [PATCH] defs.qc: added killed_monsters_oldcount so I can keep track of how many monsters were previously seen by the kill detection code in combat.qc. combat.qc now has a while loop to determine how many kills it should update the client with. boss.qc has an adjustment to prevent the boss death from giving you 2 frags. all the rest have adjustments to make killed_monsters++ on monster death, assuming you have respawn_enabled set to 1, it will only count gibs. Otherwise it should work normally. This code is a little buggy, but Grievre wanted to see, so... *shrug* Hikaru --- quake/boss.qc | 1 + quake/combat.qc | 7 ++++--- quake/defs.qc | 1 + quake/demon.qc | 5 +++++ quake/dog.qc | 4 ++++ quake/enforcer.qc | 4 ++++ quake/fish.qc | 4 ++++ quake/hknight.qc | 5 +++++ quake/knight.qc | 5 +++++ quake/ogre.qc | 6 +++++- quake/shalrath.qc | 5 +++++ quake/shambler.qc | 5 +++++ quake/soldier.qc | 5 +++++ quake/tarbaby.qc | 6 +++--- quake/wizard.qc | 4 ++++ quake/zombie.qc | 1 + 16 files changed, 61 insertions(+), 7 deletions(-) diff --git a/quake/boss.qc b/quake/boss.qc index 52dde9d..b04f5e5 100644 --- a/quake/boss.qc +++ b/quake/boss.qc @@ -182,6 +182,7 @@ void() boss_death9 = [$death9, boss_death10] void() boss_death10 = [$death9, boss_death10] { killed_monsters++; + killed_monsters_oldcount++; WriteByte (MSG_ALL, SVC_KILLEDMONSTER); // FIXME: reliable broadcast SUB_UseTargets (); remove (self); diff --git a/quake/combat.qc b/quake/combat.qc index 189d86e..f782f2d 100644 --- a/quake/combat.qc +++ b/quake/combat.qc @@ -56,7 +56,6 @@ Killed void(entity targ, entity attacker) Killed = { local entity oself; - oself = self; self = targ; @@ -75,8 +74,10 @@ void(entity targ, entity attacker) Killed = // bump the monster counter if (self.flags & FL_MONSTER) { - killed_monsters = killed_monsters + 1; - WriteByte (MSG_ALL, SVC_KILLEDMONSTER); + while (killed_monsters_oldcount < killed_monsters) { + killed_monsters_oldcount++; + WriteByte (MSG_ALL, SVC_KILLEDMONSTER); + } } ClientObituary(self, attacker); diff --git a/quake/defs.qc b/quake/defs.qc index 81b0aad..71561e5 100644 --- a/quake/defs.qc +++ b/quake/defs.qc @@ -38,6 +38,7 @@ float total_monsters; float found_secrets; // number of secrets found float killed_monsters; // number of monsters killed +float killed_monsters_oldcount;//number of monsters killed in last sweep. float respawn_enabled; // is respawn allowed // spawnparms are used to encode information about clients across server diff --git a/quake/demon.qc b/quake/demon.qc index e6e43fa..fa7238e 100644 --- a/quake/demon.qc +++ b/quake/demon.qc @@ -160,10 +160,15 @@ void() demon_die = ThrowGib ("progs/gib1.mdl", self.health); ThrowGib ("progs/gib1.mdl", self.health); ThrowGib ("progs/gib1.mdl", self.health); + killed_monsters++; return; } // regular death + + if (!respawn_enabled) + killed_monsters++; + demon1_die1 (); }; diff --git a/quake/dog.qc b/quake/dog.qc index 670ef30..d9b4f1b 100644 --- a/quake/dog.qc +++ b/quake/dog.qc @@ -236,6 +236,7 @@ void() dog_die = ThrowGib ("progs/gib3.mdl", self.health); ThrowGib ("progs/gib3.mdl", self.health); ThrowHead ("progs/h_dog.mdl", self.health); + killed_monsters++; return; } @@ -243,6 +244,9 @@ void() dog_die = sound (self, CHAN_VOICE, "dog/ddeath.wav", 1, ATTN_NORM); self.solid = SOLID_NOT; + if (!respawn_enabled) + killed_monsters++; + if (random() > 0.5) dog_die1 (); else diff --git a/quake/enforcer.qc b/quake/enforcer.qc index edb13c6..539567c 100644 --- a/quake/enforcer.qc +++ b/quake/enforcer.qc @@ -278,11 +278,15 @@ void() enf_die = ThrowGib ("progs/gib1.mdl", self.health); ThrowGib ("progs/gib2.mdl", self.health); ThrowGib ("progs/gib3.mdl", self.health); + killed_monsters++; return; } // regular death sound (self, CHAN_VOICE, "enforcer/death1.wav", 1, ATTN_NORM); + if (!respawn_enabled) + killed_monsters++; + if (random() > 0.5) enf_die1 (); else diff --git a/quake/fish.qc b/quake/fish.qc index 4e60ed8..ccdc90f 100644 --- a/quake/fish.qc +++ b/quake/fish.qc @@ -140,10 +140,14 @@ void () f_death = ThrowGib ("progs/gib3.mdl", self.health); ThrowGib ("progs/gib3.mdl", self.health); ThrowGib ("progs/gib3.mdl", self.health); + killed_monsters++; remove (self); return; } + if (!respawn_enabled) + killed_monsters++; + f_death1 (); }; diff --git a/quake/hknight.qc b/quake/hknight.qc index 01696e3..5cdc4ac 100644 --- a/quake/hknight.qc +++ b/quake/hknight.qc @@ -207,11 +207,16 @@ void() hknight_die = ThrowGib ("progs/gib1.mdl", self.health); ThrowGib ("progs/gib2.mdl", self.health); ThrowGib ("progs/gib3.mdl", self.health); + killed_monsters++; return; } // regular death sound (self, CHAN_VOICE, "hknight/death1.wav", 1, ATTN_NORM); + + if (!respawn_enabled) + killed_monsters++; + if (random() > 0.5) hknight_die1 (); else diff --git a/quake/knight.qc b/quake/knight.qc index a6493e2..3b338da 100644 --- a/quake/knight.qc +++ b/quake/knight.qc @@ -220,11 +220,16 @@ void() knight_die = ThrowGib ("progs/gib1.mdl", self.health); ThrowGib ("progs/gib2.mdl", self.health); ThrowGib ("progs/gib3.mdl", self.health); + killed_monsters++; return; } // regular death sound (self, CHAN_VOICE, "knight/kdeath.wav", 1, ATTN_NORM); + + if (!respawn_enabled) + killed_monsters++; + if (random() < 0.5) knight_die1 (); else diff --git a/quake/ogre.qc b/quake/ogre.qc index dcdae1d..b8f28ee 100644 --- a/quake/ogre.qc +++ b/quake/ogre.qc @@ -398,11 +398,15 @@ void() ogre_die = ThrowGib ("progs/gib3.mdl", self.health); ThrowGib ("progs/gib3.mdl", self.health); ThrowGib ("progs/gib3.mdl", self.health); + killed_monsters++; return; } sound (self, CHAN_VOICE, "ogre/ogdth.wav", 1, ATTN_NORM); - + + if (!respawn_enabled) + killed_monsters++; + if (random() < 0.5) ogre_die1 (); else diff --git a/quake/shalrath.qc b/quake/shalrath.qc index 5c88a3b..52fd57e 100644 --- a/quake/shalrath.qc +++ b/quake/shalrath.qc @@ -108,10 +108,15 @@ void() shalrath_die = ThrowGib ("progs/gib1.mdl", self.health); ThrowGib ("progs/gib2.mdl", self.health); ThrowGib ("progs/gib3.mdl", self.health); + killed_monsters++; return; } sound (self, CHAN_VOICE, "shalrath/death.wav", 1, ATTN_NORM); + + if (!respawn_enabled) + killed_monsters++; + shal_death1 (); self.solid = SOLID_NOT; // insert death sounds here diff --git a/quake/shambler.qc b/quake/shambler.qc index 3e80e12..9dca8aa 100644 --- a/quake/shambler.qc +++ b/quake/shambler.qc @@ -313,11 +313,16 @@ void() sham_die = ThrowGib ("progs/gib1.mdl", self.health); ThrowGib ("progs/gib2.mdl", self.health); ThrowGib ("progs/gib3.mdl", self.health); + killed_monsters++; return; } // regular death sound (self, CHAN_VOICE, "shambler/sdeath.wav", 1, ATTN_NORM); + + if (!respawn_enabled) + killed_monsters++; + sham_death1 (); }; diff --git a/quake/soldier.qc b/quake/soldier.qc index b1d60be..b17ff36 100644 --- a/quake/soldier.qc +++ b/quake/soldier.qc @@ -230,11 +230,16 @@ void() army_die = ThrowGib ("progs/gib1.mdl", self.health); ThrowGib ("progs/gib2.mdl", self.health); ThrowGib ("progs/gib3.mdl", self.health); + killed_monsters++; return; } // regular death sound (self, CHAN_VOICE, "soldier/death1.wav", 1, ATTN_NORM); + + if (!respawn_enabled) + killed_monsters++; + if (random() < 0.5) army_die1 (); else diff --git a/quake/tarbaby.qc b/quake/tarbaby.qc index 5349dc4..71747f0 100644 --- a/quake/tarbaby.qc +++ b/quake/tarbaby.qc @@ -156,9 +156,9 @@ void() tbaby_jump6 =[ $jump6,tbaby_fly1 ] {}; void() tbaby_die1 =[ $exp, tbaby_die2 ] { self.takedamage = DAMAGE_NO; + killed_monsters++; }; -void() tbaby_die2 =[ $exp, tbaby_run1 ] -{ +void() tbaby_die2 =[ $exp, tbaby_run1 ] { T_RadiusDamage (self, self, 120, world); sound (self, CHAN_VOICE, "blob/death1.wav", 1, ATTN_NORM); @@ -166,7 +166,7 @@ void() tbaby_die2 =[ $exp, tbaby_run1 ] WriteBytes (MSG_BROADCAST, SVC_TEMPENTITY, TE_TAREXPLOSION); WriteCoordV (MSG_BROADCAST, self.origin); - + BecomeExplosion (); }; diff --git a/quake/wizard.qc b/quake/wizard.qc index ac3bbb4..49ddde6 100644 --- a/quake/wizard.qc +++ b/quake/wizard.qc @@ -348,9 +348,13 @@ void() wiz_die = ThrowGib ("progs/gib2.mdl", self.health); ThrowGib ("progs/gib2.mdl", self.health); ThrowGib ("progs/gib2.mdl", self.health); + killed_monsters++; return; } + if (!respawn_enabled) + killed_monsters++; + wiz_death1 (); }; diff --git a/quake/zombie.qc b/quake/zombie.qc index 62d5ec8..c078730 100644 --- a/quake/zombie.qc +++ b/quake/zombie.qc @@ -391,6 +391,7 @@ void() zombie_die = ThrowGib ("progs/gib1.mdl", self.health); ThrowGib ("progs/gib2.mdl", self.health); ThrowGib ("progs/gib3.mdl", self.health); + killed_monsters++; }; /*