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
This commit is contained in:
Timothy C. McGrath 2004-02-14 11:23:40 +00:00
parent 029ab404b5
commit 9871fa2401
16 changed files with 61 additions and 7 deletions

View File

@ -182,6 +182,7 @@ void() boss_death9 = [$death9, boss_death10]
void() boss_death10 = [$death9, boss_death10] void() boss_death10 = [$death9, boss_death10]
{ {
killed_monsters++; killed_monsters++;
killed_monsters_oldcount++;
WriteByte (MSG_ALL, SVC_KILLEDMONSTER); // FIXME: reliable broadcast WriteByte (MSG_ALL, SVC_KILLEDMONSTER); // FIXME: reliable broadcast
SUB_UseTargets (); SUB_UseTargets ();
remove (self); remove (self);

View File

@ -56,7 +56,6 @@ Killed
void(entity targ, entity attacker) Killed = void(entity targ, entity attacker) Killed =
{ {
local entity oself; local entity oself;
oself = self; oself = self;
self = targ; self = targ;
@ -75,9 +74,11 @@ void(entity targ, entity attacker) Killed =
// bump the monster counter // bump the monster counter
if (self.flags & FL_MONSTER) if (self.flags & FL_MONSTER)
{ {
killed_monsters = killed_monsters + 1; while (killed_monsters_oldcount < killed_monsters) {
killed_monsters_oldcount++;
WriteByte (MSG_ALL, SVC_KILLEDMONSTER); WriteByte (MSG_ALL, SVC_KILLEDMONSTER);
} }
}
ClientObituary(self, attacker); ClientObituary(self, attacker);

View File

@ -38,6 +38,7 @@ float total_monsters;
float found_secrets; // number of secrets found float found_secrets; // number of secrets found
float killed_monsters; // number of monsters killed float killed_monsters; // number of monsters killed
float killed_monsters_oldcount;//number of monsters killed in last sweep.
float respawn_enabled; // is respawn allowed float respawn_enabled; // is respawn allowed
// spawnparms are used to encode information about clients across server // spawnparms are used to encode information about clients across server

View File

@ -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); ThrowGib ("progs/gib1.mdl", self.health);
ThrowGib ("progs/gib1.mdl", self.health); ThrowGib ("progs/gib1.mdl", self.health);
killed_monsters++;
return; return;
} }
// regular death // regular death
if (!respawn_enabled)
killed_monsters++;
demon1_die1 (); demon1_die1 ();
}; };

View File

@ -236,6 +236,7 @@ void() dog_die =
ThrowGib ("progs/gib3.mdl", self.health); ThrowGib ("progs/gib3.mdl", self.health);
ThrowGib ("progs/gib3.mdl", self.health); ThrowGib ("progs/gib3.mdl", self.health);
ThrowHead ("progs/h_dog.mdl", self.health); ThrowHead ("progs/h_dog.mdl", self.health);
killed_monsters++;
return; return;
} }
@ -243,6 +244,9 @@ void() dog_die =
sound (self, CHAN_VOICE, "dog/ddeath.wav", 1, ATTN_NORM); sound (self, CHAN_VOICE, "dog/ddeath.wav", 1, ATTN_NORM);
self.solid = SOLID_NOT; self.solid = SOLID_NOT;
if (!respawn_enabled)
killed_monsters++;
if (random() > 0.5) if (random() > 0.5)
dog_die1 (); dog_die1 ();
else else

View File

@ -278,11 +278,15 @@ void() enf_die =
ThrowGib ("progs/gib1.mdl", self.health); ThrowGib ("progs/gib1.mdl", self.health);
ThrowGib ("progs/gib2.mdl", self.health); ThrowGib ("progs/gib2.mdl", self.health);
ThrowGib ("progs/gib3.mdl", self.health); ThrowGib ("progs/gib3.mdl", self.health);
killed_monsters++;
return; return;
} }
// regular death // regular death
sound (self, CHAN_VOICE, "enforcer/death1.wav", 1, ATTN_NORM); sound (self, CHAN_VOICE, "enforcer/death1.wav", 1, ATTN_NORM);
if (!respawn_enabled)
killed_monsters++;
if (random() > 0.5) if (random() > 0.5)
enf_die1 (); enf_die1 ();
else else

View File

@ -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); ThrowGib ("progs/gib3.mdl", self.health);
ThrowGib ("progs/gib3.mdl", self.health); ThrowGib ("progs/gib3.mdl", self.health);
killed_monsters++;
remove (self); remove (self);
return; return;
} }
if (!respawn_enabled)
killed_monsters++;
f_death1 (); f_death1 ();
}; };

View File

@ -207,11 +207,16 @@ void() hknight_die =
ThrowGib ("progs/gib1.mdl", self.health); ThrowGib ("progs/gib1.mdl", self.health);
ThrowGib ("progs/gib2.mdl", self.health); ThrowGib ("progs/gib2.mdl", self.health);
ThrowGib ("progs/gib3.mdl", self.health); ThrowGib ("progs/gib3.mdl", self.health);
killed_monsters++;
return; return;
} }
// regular death // regular death
sound (self, CHAN_VOICE, "hknight/death1.wav", 1, ATTN_NORM); sound (self, CHAN_VOICE, "hknight/death1.wav", 1, ATTN_NORM);
if (!respawn_enabled)
killed_monsters++;
if (random() > 0.5) if (random() > 0.5)
hknight_die1 (); hknight_die1 ();
else else

View File

@ -220,11 +220,16 @@ void() knight_die =
ThrowGib ("progs/gib1.mdl", self.health); ThrowGib ("progs/gib1.mdl", self.health);
ThrowGib ("progs/gib2.mdl", self.health); ThrowGib ("progs/gib2.mdl", self.health);
ThrowGib ("progs/gib3.mdl", self.health); ThrowGib ("progs/gib3.mdl", self.health);
killed_monsters++;
return; return;
} }
// regular death // regular death
sound (self, CHAN_VOICE, "knight/kdeath.wav", 1, ATTN_NORM); sound (self, CHAN_VOICE, "knight/kdeath.wav", 1, ATTN_NORM);
if (!respawn_enabled)
killed_monsters++;
if (random() < 0.5) if (random() < 0.5)
knight_die1 (); knight_die1 ();
else else

View File

@ -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); ThrowGib ("progs/gib3.mdl", self.health);
ThrowGib ("progs/gib3.mdl", self.health); ThrowGib ("progs/gib3.mdl", self.health);
killed_monsters++;
return; return;
} }
sound (self, CHAN_VOICE, "ogre/ogdth.wav", 1, ATTN_NORM); sound (self, CHAN_VOICE, "ogre/ogdth.wav", 1, ATTN_NORM);
if (!respawn_enabled)
killed_monsters++;
if (random() < 0.5) if (random() < 0.5)
ogre_die1 (); ogre_die1 ();
else else

View File

@ -108,10 +108,15 @@ void() shalrath_die =
ThrowGib ("progs/gib1.mdl", self.health); ThrowGib ("progs/gib1.mdl", self.health);
ThrowGib ("progs/gib2.mdl", self.health); ThrowGib ("progs/gib2.mdl", self.health);
ThrowGib ("progs/gib3.mdl", self.health); ThrowGib ("progs/gib3.mdl", self.health);
killed_monsters++;
return; return;
} }
sound (self, CHAN_VOICE, "shalrath/death.wav", 1, ATTN_NORM); sound (self, CHAN_VOICE, "shalrath/death.wav", 1, ATTN_NORM);
if (!respawn_enabled)
killed_monsters++;
shal_death1 (); shal_death1 ();
self.solid = SOLID_NOT; self.solid = SOLID_NOT;
// insert death sounds here // insert death sounds here

View File

@ -313,11 +313,16 @@ void() sham_die =
ThrowGib ("progs/gib1.mdl", self.health); ThrowGib ("progs/gib1.mdl", self.health);
ThrowGib ("progs/gib2.mdl", self.health); ThrowGib ("progs/gib2.mdl", self.health);
ThrowGib ("progs/gib3.mdl", self.health); ThrowGib ("progs/gib3.mdl", self.health);
killed_monsters++;
return; return;
} }
// regular death // regular death
sound (self, CHAN_VOICE, "shambler/sdeath.wav", 1, ATTN_NORM); sound (self, CHAN_VOICE, "shambler/sdeath.wav", 1, ATTN_NORM);
if (!respawn_enabled)
killed_monsters++;
sham_death1 (); sham_death1 ();
}; };

View File

@ -230,11 +230,16 @@ void() army_die =
ThrowGib ("progs/gib1.mdl", self.health); ThrowGib ("progs/gib1.mdl", self.health);
ThrowGib ("progs/gib2.mdl", self.health); ThrowGib ("progs/gib2.mdl", self.health);
ThrowGib ("progs/gib3.mdl", self.health); ThrowGib ("progs/gib3.mdl", self.health);
killed_monsters++;
return; return;
} }
// regular death // regular death
sound (self, CHAN_VOICE, "soldier/death1.wav", 1, ATTN_NORM); sound (self, CHAN_VOICE, "soldier/death1.wav", 1, ATTN_NORM);
if (!respawn_enabled)
killed_monsters++;
if (random() < 0.5) if (random() < 0.5)
army_die1 (); army_die1 ();
else else

View File

@ -156,9 +156,9 @@ void() tbaby_jump6 =[ $jump6,tbaby_fly1 ] {};
void() tbaby_die1 =[ $exp, tbaby_die2 ] { void() tbaby_die1 =[ $exp, tbaby_die2 ] {
self.takedamage = DAMAGE_NO; self.takedamage = DAMAGE_NO;
killed_monsters++;
}; };
void() tbaby_die2 =[ $exp, tbaby_run1 ] void() tbaby_die2 =[ $exp, tbaby_run1 ] {
{
T_RadiusDamage (self, self, 120, world); T_RadiusDamage (self, self, 120, world);
sound (self, CHAN_VOICE, "blob/death1.wav", 1, ATTN_NORM); sound (self, CHAN_VOICE, "blob/death1.wav", 1, ATTN_NORM);

View File

@ -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); ThrowGib ("progs/gib2.mdl", self.health);
ThrowGib ("progs/gib2.mdl", self.health); ThrowGib ("progs/gib2.mdl", self.health);
killed_monsters++;
return; return;
} }
if (!respawn_enabled)
killed_monsters++;
wiz_death1 (); wiz_death1 ();
}; };

View File

@ -391,6 +391,7 @@ void() zombie_die =
ThrowGib ("progs/gib1.mdl", self.health); ThrowGib ("progs/gib1.mdl", self.health);
ThrowGib ("progs/gib2.mdl", self.health); ThrowGib ("progs/gib2.mdl", self.health);
ThrowGib ("progs/gib3.mdl", self.health); ThrowGib ("progs/gib3.mdl", self.health);
killed_monsters++;
}; };
/* /*