prozac-qfcc/obituary.qc
Finny Merrill 8c2d5fdd12 1) Attempted to give players positive frags whenever possible. You now
should get frags for blowing people up with others' dispensers/mines/expbody,
airfisting rockets, etc.

2) Redid Give_Frags_Out

3) Changed many uses of pointcontents and ugly hacks to use hullpointcontents
and checkmove, now a lot cleaner and less buggy

4) You can grapple builds again. This caused really odd bugs.

5) You can now damage your own buildings again (gasp). Any time a tesla or sentry
is damaged it turns on its attacker, friendly or otherwise. This is both a counter-TK
and counter-spy mechanism.

6) Teslas are now entirely inside their bounding box

7) Now check every frame for players startsolid and for outside of the map cube.

8) #define WALL_HURT to make it hurt when you hit a wall

9) Used some cool ideas (aka laws of physics) to make the airfist a little less annoying

10) You now only get 1 mirv per slot without bandolier. Demoman and hwguy gain bandolier.
    demoman loses his extra mirv but gains an extra grenade and pair of detpacks. Hwguy
    gets extra grenade.

11) New and improved EMP grenade now does damage based on range. no longer blows up shells.
    Doesn't directly damage sentries anymore, but does significant damage to dispensers.
    EMP someone who's setting a det and it blows up in their face.

12) Players now do radius damage from getting EMPed (again)

13) EMPs now go through walls (again)

14) EMP number lowered by one (3 without, 4 with bandolier) and cost raised by $100

15) You can only have 2 frag grens, 3 with bandolier now.

16) Hover boots will now eat cells if they get low on charge. In addition, the silly bug
    where their charge wasn't restored when you die is fixed now.

17) EMPing a detpack now sets its timer to anywhere between 1 and 121 seconds from current time,
    with a logarithmic probability of it being lower. (random() * random() * 120 + 1). Also, probably
    more time the closer it is to the EMP.

18) Judo can now be blocked by people with close combat, knife or judo. Blocked judo means that the
    attacker loses 3 seconds of attack.

19) Judo missing now makes them unable to fire.

20) Shortened judo range (back to normal if w/ close combat)

21) Attempted to rework the railgun. Seems to be okay now.

Probably still a lot of bugs in here, but since this is the devel version I thought I would commit
all my changes so people could start testing it. I'll commit fixes as soon as I find the bugs.
2003-11-26 08:53:44 +00:00

2525 lines
88 KiB
C++

#include "defs.qh"
// This makes the chances of each death message easier to understand. I hope.
#define FRAC(x, y) ((x) * 1.0 / (y))
void (entity targ, entity attacker) Obituary;
void (entity targ, entity attacker) Obituary_Player;
void (entity targ, entity attacker) Obituary_Player_by_Cybernet;
void (entity targ, entity attacker) Obituary_Player_by_Antihack;
void (entity targ, entity attacker) Obituary_Player_by_Antidismantle;
void (entity targ, entity attacker) Obituary_Player_by_Wizard;
void (entity targ, entity attacker) Obituary_Player_by_Demon1;
void (entity targ, entity attacker) Obituary_Player_by_Army;
void (entity targ, entity attacker) Obituary_Player_by_Shambler;
void (entity targ, entity attacker) Obituary_Player_by_Teledeath;
void (entity targ, entity attacker) Obituary_Player_by_Teledeath2;
void (entity targ, entity attacker) Obituary_Player_by_Goal;
void (entity targ, entity attacker) Obituary_Player_by_Player;
void (entity targ, entity attacker) Obituary_Player_by_Dispenser;
void (entity targ, entity attacker) Obituary_Player_by_ForceField;
void (entity targ, entity attacker) Obituary_Player_by_SentryTesla;
void (entity targ, entity attacker) Obituary_Player_by_Teleporter;
void (entity targ, entity attacker) Obituary_Player_Misc;
void (entity targ, entity attacker) Obituary_Monster;
void (entity targ, entity attacker) Obituary_Monster_Wizard;
void (entity targ, entity attacker) Obituary_Monster_Wizard_by_Tesla;
void (entity targ, entity attacker) Obituary_Monster_Wizard_by_Sentry;
void (entity targ, entity attacker) Obituary_Monster_Wizard_by_Player;
void (entity targ, entity attacker) Obituary_Monster_Wizard_by_Army;
void (entity targ, entity attacker) Obituary_Monster_Wizard_by_Demon1;
void (entity targ, entity attacker) Obituary_Monster_Wizard_by_Shambler;
void (entity targ, entity attacker) Obituary_Monster_Wizard_by_Wizard;
void (entity targ, entity attacker) Obituary_Monster_Demon1;
void (entity targ, entity attacker) Obituary_Monster_Demon1_by_Tesla;
void (entity targ, entity attacker) Obituary_Monster_Demon1_by_Sentry;
void (entity targ, entity attacker) Obituary_Monster_Demon1_by_Player;
void (entity targ, entity attacker) Obituary_Monster_Demon1_by_Army;
void (entity targ, entity attacker) Obituary_Monster_Demon1_by_Demon1;
void (entity targ, entity attacker) Obituary_Monster_Demon1_by_Shambler;
void (entity targ, entity attacker) Obituary_Monster_Demon1_by_Wizard;
void (entity targ, entity attacker) Obituary_Monster_Army;
void (entity targ, entity attacker) Obituary_Monster_Army_by_Tesla;
void (entity targ, entity attacker) Obituary_Monster_Army_by_Sentry;
void (entity targ, entity attacker) Obituary_Monster_Army_by_Player;
void (entity targ, entity attacker) Obituary_Monster_Army_by_Shambler;
void (entity targ, entity attacker) Obituary_Monster_Army_by_Demon1;
void (entity targ, entity attacker) Obituary_Monster_Army_by_Army;
void (entity targ, entity attacker) Obituary_Monster_Army_by_Wizard;
void (entity targ, entity attacker) Obituary_Monster_Shambler;
void (entity targ, entity attacker) Obituary_Monster_Shambler_by_Tesla;
void (entity targ, entity attacker) Obituary_Monster_Shambler_by_Sentry;
void (entity targ, entity attacker) Obituary_Monster_Shambler_by_Player;
void (entity targ, entity attacker) Obituary_Monster_Shambler_by_Demon1;
void (entity targ, entity attacker) Obituary_Monster_Shambler_by_Shambler;
void (entity targ, entity attacker) Obituary_Monster_Shambler_by_Army;
void (entity targ, entity attacker) Obituary_Monster_Shambler_by_Wizard;
void (entity targ, entity attacker) Obituary_Monster_Misc;
void (entity targ, entity attacker) Obituary_Building;
void (entity targ, entity attacker) Obituary_Building_by_Tesla;
void (entity targ, entity attacker) Obituary_Building_by_Self;
void (entity targ, entity attacker) Obituary_Building_by_Teledeath;
void (entity targ, entity attacker) Obituary_Building_by_Player;
void (entity targ, entity attacker) Obituary_Building_by_Army;
/*
===========
Give_Frags_xxx
Called from Obituary(), doles out frags.
Unlike Obituary_xxx, the xxx means the ATTACKER here.
It's cleaner that way.
===========
*/
void(entity atk, entity targ) Give_Frags_Player =
{
local float numfrags = 1, chkvamp = 1;
if (targ.classname == "monster_shambler")
numfrags = (targ.has_tesla - 4) / 4;
if (targ.classname == "monster_demon1")
numfrags = 2;
if (targ.classname == "building_tesla" && targ.tf_items & NIT_SECURITY_CAMERA) //shortcut for rogue tes
return;
if (targ.classname != "player")
{
targ = targ.real_owner;
chkvamp = 0; // don't vamp building/monster kills
}
if (atk == targ || Teammate(atk.team_no, targ.team_no))
{
chkvamp = 0; // don't vamp neg frags
numfrags *= -1;
}
atk.real_frags += numfrags;
if (chkvamp && (teamplay & TEAMPLAY_VAMPIRE))
targ.real_frags -= numfrags;
if (!(toggleflags & TFLAG_TEAMFRAGS))
{
atk.frags = atk.real_frags;
if (chkvamp)
targ.frags = targ.real_frags;
}
if (numfrags > 0)
logfrag (targ, atk);
if (numfrags < 0)
logfrag (targ, targ);
};
void (entity atk, entity targ) Give_Frags_Monster =
{
if (atk == targ)
return; // no neg frags to monsters
if (((targ.classname == "player") && Teammate(atk.real_owner.team_no, targ.team_no)) ||
Teammate(atk.real_owner.team_no, targ.real_owner.team_no))
{
if (targ.classname == "player") // More the victim than the owner's fault
{
targ.real_frags--;
if (!(toggleflags & TFLAG_TEAMFRAGS))
targ.frags = targ.real_frags;
logfrag (targ, targ);
}
return;
}
Give_Frags_Player(atk, targ);
};
void (entity atk, entity targ) Give_Frags_Building =
{
if (atk == targ)
return;
atk.owner = atk.real_owner;
if (atk.classname == "building_dispenser" && atk.martyr_enemy != atk.real_owner)
atk.real_owner = atk.martyr_enemy;
if ((((targ.classname == "player") && Teammate(atk.real_owner.team_no, targ.team_no)) ||
Teammate(atk.real_owner.team_no, targ.real_owner.team_no)) && ((deathmsg != DMSG_TESLA) ||
!(atk.tf_items & NIT_SECURITY_CAMERA)))
{
if (targ.classname == "player") // More the victim than the owner's fault
{
targ.real_frags--;
if (!(toggleflags & TFLAG_TEAMFRAGS))
targ.frags = targ.real_frags;
}
}
if (targ.classname == "monster_shambler")
atk.frags += (targ.has_tesla - 4) / 4;
else if (targ.classname == "monster_demon1")
atk.frags += 2;
else
atk.frags++;
if (atk.real_owner != atk.owner)
atk.real_owner = atk.owner;
Give_Frags_Player(atk.real_owner, atk);
};
/*
===========
Obituary
called when a something dies
============
*/
void (entity targ, entity attacker) Obituary =
{
if (prematch >= time)
return;
if (targ.classname == "player")
Obituary_Player (targ, attacker);
else if (IsMonster (targ))
Obituary_Monster (targ, attacker);
else if (IsBuilding (targ) && targ.classname != "building_sentrygun_base")
Obituary_Building (targ, attacker);
if (attacker.classname == "player")
Give_Frags_Player (targ, attacker);
else if (IsMonster (attacker))
Give_Frags_Monster (targ, attacker);
else if (IsBuilding (attacker) && targ.classname != "building_sentrygun_base" || targ.classname == "force_field")
Give_Frags_Building (targ, attacker);
else if (targ.classname == "player") // Player died and can't give credit to anyone. Nothing to do but -1
{
targ.real_frags--;
if (toggleflags & TFLAG_TEAMFRAGS)
targ.frags = targ.real_frags;
logfrag(targ, targ);
}
};
void (entity targ, entity attacker) Obituary_Player =
{
//WK No Obituary for the cursed!
if (targ.penance_time > time - 1)
{
//Give_Frags (targ, targ, -1);
return;
}
if (targ.martyr_enemy != targ)
deathmsg = targ.stored_deathmsg;
if (deathmsg == DMSG_CYBERNET)
Obituary_Player_by_Cybernet (targ, attacker);
else if (deathmsg == DMSG_ANTIHACK)
Obituary_Player_by_Antihack (targ, attacker);
else if (deathmsg == DMSG_ANTIDISM)
Obituary_Player_by_Antidismantle (targ, attacker);
else if (attacker.classname == "monster_wizard")
Obituary_Player_by_Wizard (targ, attacker);
else if (attacker.classname == "monster_demon1")
Obituary_Player_by_Demon1 (targ, attacker);
else if (attacker.classname == "monster_army")
Obituary_Player_by_Army (targ, attacker);
else if (attacker.classname == "monster_shambler")
Obituary_Player_by_Shambler (targ, attacker);
else if (attacker.classname == "teledeath")
Obituary_Player_by_Teledeath (targ, attacker);
else if (attacker.classname == "teledeath2")
Obituary_Player_by_Teledeath2 (targ, attacker);
else if (attacker.classname == "info_tfgoal")
Obituary_Player_by_Goal (targ, attacker);
else if (attacker.classname == "player")
Obituary_Player_by_Player (targ, attacker);
else if (attacker.classname == "building_dispenser")
Obituary_Player_by_Dispenser (targ, attacker);
else if (attacker.classname == "force_field")
Obituary_Player_by_ForceField (targ, attacker);
else if (attacker.classname == "building_sentrygun"
|| attacker.classname == "building_tesla")
Obituary_Player_by_SentryTesla (targ, attacker);
else if (attacker.classname == "building_teleporter")
Obituary_Player_by_Teleporter (targ, attacker);
else
Obituary_Player_Misc (targ, attacker);
};
void (entity targ, entity attacker) Obituary_Player_by_Cybernet =
{
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " will abort the hack next time\n");
};
void (entity targ, entity attacker) Obituary_Player_by_Antihack =
{
local string tst = GetBuildingName (attacker);
if (random () < FRAC (1, 2)) {
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " is electrocuted trying to hack ");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, "'s ");
bprint (PRINT_MEDIUM, tst);
bprint (PRINT_MEDIUM, "\n");
} else {
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " should never tried to hack ");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, "'s ");
bprint (PRINT_MEDIUM, tst);
bprint (PRINT_MEDIUM, "\n");
}
//Give_Frags(attacker.real_owner, targ, 1);
};
void (entity targ, entity attacker) Obituary_Player_by_Antidismantle =
{
local string tst = GetBuildingName (attacker);
if (random () < FRAC (1, 2)) {
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " tries to dismantle ");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, "'s ");
bprint (PRINT_MEDIUM, tst);
bprint (PRINT_MEDIUM, " with the wrong tool\n");
} else {
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " is electrocuted trying to dismantle ");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, "'s ");
bprint (PRINT_MEDIUM, tst);
bprint (PRINT_MEDIUM, "\n");
}
//Give_Frags (attacker.real_owner, targ, 1);
};
void (entity targ, entity attacker) Obituary_Player_by_Wizard =
{
custom_demon_name (attacker); //CH
if (attacker.real_owner == targ) {
bprint (PRINT_MEDIUM, "The scrag ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " kills his owner, ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, "\n");
} else if (!Teammate (targ.team_no, attacker.real_owner.team_no)
|| attacker.real_owner.team_no < 1) {
local float rnum = random ();
if (rnum < FRAC (1, 3)) {
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " was nullified by the scrag ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
} else if (rnum < FRAC (2, 3)) {
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " didn't survive ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, "'s (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ") acid\n");
} else {
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, "'s scrag, ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, ", removes ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, "\n");
}
//Give_Frags(attacker.real_owner, targ, 1)
} else if (Teammate (targ.team_no, attacker.real_owner.team_no)) {
if (random () < FRAC (1, 2)) {
bprint (PRINT_MEDIUM, "The supposed friendly scrag ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ")");
bprint (PRINT_MEDIUM, " killed ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, "\n");
} else {
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ") proves that scrags are able to teamkill with ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, "'s help\n");
}
}
};
void (entity targ, entity attacker) Obituary_Player_by_Demon1 =
{
custom_demon_name (attacker); //CH
if (attacker.real_owner == targ) {
if (deathmsg == DMSG_DEMON_FIRE) {
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " threw his rage to his owner ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, "\n");
} else {
if (random () < FRAC (1, 2)) {
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " exacts revenge on its summoner, ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, "\n");
} else {
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " is dragged into the pit by his own demon, ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, "\n");
}
}
}
else if (deathmsg == DMSG_DEMON_FIRE)
{
local float rnum = random ();
if (rnum < FRAC (1, 4)) {
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " was burned alive by ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
} else if (rnum < FRAC (2, 4)) {
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " thought he was safe from ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
} else if (rnum < FRAC (3, 4)) {
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " died from ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, "'s (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ") fire balls\n");
} else {
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, "'s demon, ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, ", burned ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " to a crisp\n");
}
} else {
local float rnum = random ();
if (rnum < FRAC (2, 20)) {
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " was eviscerated by ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
} else if (rnum < FRAC (10, 20)) {
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " was ripped limb from limb by ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
} else {
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, "'s demon, ");
bprint (PRINT_MEDIUM, attacker.netname);
if (rnum < FRAC (15, 20))
bprint (PRINT_MEDIUM, ", claws apart ");
else
bprint (PRINT_MEDIUM, ", rends apart ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, "\n");
}
}
};
void (entity targ, entity attacker) Obituary_Player_by_Army =
{
custom_demon_name (attacker); //CH
GetRank (attacker); // Sponsored by SB-1 Tech
if (attacker.real_owner == targ) {
//Give_Frags (attacker, targ, -1);
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " is killed by his own mercenary ");
bprint (PRINT_MEDIUM, attacker.undercover_name);
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, "\n");
} else if (Teammate (targ.team_no, attacker.real_owner.team_no)) {
local float rnum = random ();
bprint (PRINT_MEDIUM, attacker.undercover_name);
bprint (PRINT_MEDIUM, attacker.netname);
if (rnum < FRAC (1, 4))
bprint (PRINT_MEDIUM, " mows down a teammate\n");
else if (rnum < FRAC (2, 4))
bprint (PRINT_MEDIUM, " checks his glasses\n");
else if (rnum < FRAC (3, 4))
bprint (PRINT_MEDIUM, " gets a frag for the other team\n");
else
bprint (PRINT_MEDIUM, " loses another friend\n");
return;
} else {
if (deathmsg == DMSG_AXE) {
if (attacker.cutf_items & CUTF_KNIFE) {
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " is sliced and diced by ");
bprint (PRINT_MEDIUM, attacker.undercover_name);
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, "'s (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ") blade\n");
} else {
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " is split in two by a powerful axe blow from ");
bprint (PRINT_MEDIUM, attacker.undercover_name);
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
}
} else if (deathmsg == DMSG_BACKSTAB) {
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " is filleted by ");
bprint (PRINT_MEDIUM, attacker.undercover_name);
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
} else if (deathmsg == DMSG_SHOTGUN) {
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " practices being ");
bprint (PRINT_MEDIUM, attacker.undercover_name);
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, "'s (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ") clay pigeon\n");
} else if (deathmsg == DMSG_NAILGUN) {
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " is turned into ");
bprint (PRINT_MEDIUM, attacker.undercover_name);
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, "'s (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ") pincushion\n");
} else if (deathmsg == DMSG_ROCKETL) {
bprint (PRINT_MEDIUM, attacker.undercover_name);
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " declares that ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " IS the rocket man\n");
} else if (deathmsg == DMSG_SSHOTGUN) {
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " is turned into swiss cheese by ");
bprint (PRINT_MEDIUM, attacker.undercover_name);
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, "'s (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ") buckshot\n");
}
//Give_Frags(attacker, targ);
}
};
void (entity targ, entity attacker) Obituary_Player_by_Shambler =
{
custom_demon_name (attacker); //CH
if (attacker.real_owner == targ) {
//Give_Frags_Out (attacker, targ, 1);
if (deathmsg == DMSG_LIGHTNING) {
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " annihilates its owner ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " with a bolt of lightning\n");
} else if (deathmsg == DMSG_DEMON_FIRE) {
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " detonates its owner ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " with a fireball\n");
} else if (deathmsg == DMSG_FLAME && attacker.has_tesla > 5) {
bprint (PRINT_MEDIUM, targ.netname);
if (attacker.has_tesla == 6)
bprint (PRINT_MEDIUM, " was torched by his own battle shambler, ");
else
bprint (PRINT_MEDIUM, " was deep-fried by his ally, ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, "\n");
} else {
if (random () < FRAC (1, 2)) {
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " gets sick of its owner ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, "\n");
} else {
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " screams as ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " turns on his owner\n");
}
}
} else {
if (deathmsg == DMSG_LIGHTNING) {
local float rnum = random ();
if (rnum < FRAC (4, 20)) {
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, "'s body crackles with electricity as ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ") claims another victim\n");
} else if (rnum < FRAC (10, 20)) {
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " meets a bolt of lightning directed by ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
} else if (rnum < FRAC (15, 20)) {
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, "'s goose is cooked by ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, "'s (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ") lightning\n");
} else {
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
if (attacker.has_tesla < 6)
bprint (PRINT_MEDIUM, "'s shambler, ");
else if (attacker.has_tesla == 6)
bprint (PRINT_MEDIUM, "'s battle shambler, ");
else
bprint (PRINT_MEDIUM, "'s shambler king, ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, ", teaches ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " to cook without gas\n");
}
} else if (deathmsg == DMSG_FLAME) {
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " is immolated by ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ")'s hellfire\n");
} else if (deathmsg == DMSG_DEMON_FIRE) {
if (random () < FRAC (1, 2)) {
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " is obliterated by ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ")'s fireball\n");
} else {
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " is turned into little ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, "s by ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ")'s fireball\n");
}
} else {
local float rnum = random ();
if (rnum < FRAC (2, 100)) {
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " screams as ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ")'s claws slash down\n");
} else if (rnum < FRAC (10, 100)) {
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " was torn asunder by ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
} else if (rnum < FRAC (50, 100)) {
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " is smashed into next week by ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
} else {
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, "'s shambler, ");
bprint (PRINT_MEDIUM, attacker.netname);
if (rnum < FRAC (75, 100))
bprint (PRINT_MEDIUM, ", tears ");
else
bprint (PRINT_MEDIUM, ", rips ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " to shreds\n");
}
}
}
};
void (entity targ, entity attacker) Obituary_Player_by_Teledeath =
{
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " was telefragged by ");
bprint (PRINT_MEDIUM, attacker.owner.netname);
bprint (PRINT_MEDIUM, "\n");
};
void (entity targ, entity attacker) Obituary_Player_by_Teledeath2 =
{
bprint (PRINT_MEDIUM, "Satan's power deflects ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, "'s telefrag\n");
//Give_Frags (attacker, targ, 1);
};
void (entity targ, entity attacker) Obituary_Player_by_Goal =
{ // Killed by a goal
if (attacker.deathtype != "")
{
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, attacker.deathtype);
}
logfrag (targ, targ);
};
void (entity targ, entity attacker) Obituary_Player_by_Player =
{
if (targ == attacker) {
local string deathstring;
// killed self
//Give_Frags (attacker, attacker, -1);
if (deathmsg == DMSG_GREN_HAND)
deathstring = " grenades himself\n";
else if (deathmsg == DMSG_MARTYR)
deathstring = " dies for the cause\n";
else if (deathmsg == DMSG_BERSERK) {
if (random () < FRAC (1, 2))
deathstring = " collapses from exhaustion\n";
else
deathstring = " goes down fighting\n";
} else if (deathmsg == DMSG_GREN_NAIL)
deathstring = " hammers himself\n";
else if (deathmsg == DMSG_GREN_FRAG)
deathstring = " fragments himself\n";
else if (deathmsg == DMSG_LAND_MINE)
deathstring = " forgot where he put his minefield\n";
else if (deathmsg == DMSG_GREN_MIRV)
deathstring = " goes to pieces\n";
else if (deathmsg == DMSG_GREN_PIPE)
deathstring = " ambushes himself with his own pipebombs\n";
else if (deathmsg == DMSG_GREN_GAS)
deathstring = " chokes on his own gas\n";
else if (deathmsg == DMSG_GREN_EMP)
deathstring = " explodes his ammo and body\n";
else if (deathmsg == DMSG_GREN_EMP_RADIUS)
deathstring = " blows himself up with another player's ammo\n";
else if (deathmsg == DMSG_GREN_FLASH)
deathstring = " is charred by his own flash grenade\n";
else if (deathmsg == DMSG_GREN_EMP_AMMO)
deathstring = " detonates an ammo box too close to him\n";
else if (deathmsg == DMSG_DETPACK)
deathstring = " set the detpack and forgot to run\n";
else if (deathmsg == DMSG_BIOWEAPON)
deathstring = " died by his own infection!\n";
else if (deathmsg == DMSG_FF_HACKED)
deathstring = " is fried in his own force field\n";
else if (deathmsg == DMSG_FF_STUCK_HACKED)
deathstring = " is caught and shocked to death in his own force field\n";
else if (deathmsg == DMSG_SPANNERFIELD)
deathstring = " learns something about spanners and force fields...\n";
else if (deathmsg == DMSG_MAUSER)
deathstring = " assassinated himself!\n";
else if (deathmsg == DMSG_DAEDALUS)
deathstring = " flew too close to the sun!\n";
else if (deathmsg == DMSG_AIRG || deathmsg == DMSG_AIRG_WATER)
deathstring = " Airfists his own ass!\n";
else if (deathmsg == DMSG_JUDOKA)
deathstring = " broke his own arms!\n";
else if (deathmsg == DMSG_AXE)
deathstring = " drove an axe through his own head!\n";
else if (deathmsg == DMSG_BACKSTAB)
deathstring = " drove a knife into his own heart!\n";
else if (deathmsg == DMSG_FGTRAP)
deathstring = " explodes with his own (trapped) field generator!\n";
else if (deathmsg == DMSG_CALTROP)
deathstring = " stepped on too many of his own caltrops\n";
else if (deathmsg == DMSG_FLYCALTROP)
deathstring = " was spiked by his own caltrop\n";
else if (deathmsg == DMSG_ROCKETL) {
if (random () < FRAC (1, 2))
deathstring = " becomes bored with life\n";
else
deathstring = " checks if his weapon is loaded\n";
} else if (deathmsg == DMSG_CLUSTER_ROCKET)
deathstring = " eats his clusters\n";
else if (deathmsg == DMSG_LASERCANNON)
deathstring = " blasts himself\n";
else if (deathmsg == DMSG_INCENDIARY)
deathstring = " chars himself with an incendiary rocket\n";
else if (deathmsg == DMSG_GRENADEL)
deathstring = " tries to put the pin back in\n";
else if (deathmsg == DMSG_FLAME)
deathstring = " torches himself\n";
else if (deathmsg == DMSG_HOVER) //WK
deathstring = " dies from uncomfortable boots\n";
else if (deathmsg == DMSG_LIGHTNING)
deathstring = " electrocutes himself\n";
else if (deathmsg == DMSG_LIGHTNING && targ.waterlevel > 1)
deathstring = " discharges into the water.\n";
else
deathstring = " kills himself!\n";
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, deathstring);
} else if (teamplay && Teammate (targ.team_no, attacker.team_no)) {
// killed a team member
if (deathmsg == DMSG_MEDIKIT) {
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " didn't survive the operation.\n");
} else if (deathmsg == DMSG_EXPBODY) {
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " has been killed as a side effect of ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, "'s body explosion\n");
return;
} else {
local float rnum = random ();
if (rnum < FRAC (1, 4)) {
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " mows down teammate ");
bprint (PRINT_MEDIUM, targ.netname);
} else if (rnum < FRAC (2, 4)) {
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " checks his glasses after killing ");
bprint (PRINT_MEDIUM, targ.netname);
} else if (rnum < FRAC (3, 4)) {
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " gets a frag for the other team with ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, "'s death");
} else {
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " doesn't wuv ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " any more! Wah!");
}
bprint (PRINT_MEDIUM, "\n");
}
} else {
local string deathstring;
local string deathstring2;
deathstring = deathstring2 = "WASN'T FALSE POSITIVE";
//Give_Frags (attacker, targ, 1);
if (attacker.tfstate & TFSTATE_INSPIRED) {
attacker.inspirator.real_frags += 0.5;
if (!(toggleflags & TFLAG_TEAMFRAGS))
attacker.inspirator.frags = attacker.inspirator.real_frags;
}
if (attacker.aura && attacker.crusader_inspirator) {
attacker.crusader_inspirator.real_frags += 0.5;
if (!(toggleflags & TFLAG_TEAMFRAGS))
attacker.crusader_inspirator.frags = attacker.crusader_inspirator.real_frags;
}
if (deathmsg == DMSG_CLUSTER_ROCKET) {
if (random () < FRAC (1, 2)) {
deathstring = " is put away by ";
deathstring2 = "'s cluster rockets\n";
} else {
deathstring = " is destroyed by ";
deathstring2 = "'s cluster rockets\n";
}
} else if (deathmsg == DMSG_EXPBODY) {
deathstring = " is killed by ";
deathstring2 = "'s body explosion\n";
} else if (deathmsg == DMSG_GREN_HAND) {
deathstring = " surfs on a grenade from ";
deathstring2 = "\n";
} else if (deathmsg == DMSG_GREN_NAIL) {
deathstring = " gets flayed by ";
deathstring2 = "'s nail grenade\n";
} else if (deathmsg == DMSG_GREN_FRAG) {
local float rnum = random ();
if (rnum < FRAC (2, 4)) {
deathstring = " is slashed apart by ";
deathstring2 = "'s frag grenade\n";
} else if (rnum < FRAC (3, 4)) {
deathstring = "'s jugular artery is severed by ";
deathstring2 = "'s frag grenade.\n";
} else {
deathstring = "'s carotoid artery is severed by ";
deathstring2 = "'s frag grenade.\n";
}
} else if (deathmsg == DMSG_GREN_MIRV) {
deathstring = " gets spammed by ";
deathstring2 = "'s Mirv grenade\n";
} else if (deathmsg == DMSG_CALTROP) {
deathstring = " collects one too many of ";
deathstring2 = "'s caltrops\n";
} else if (deathmsg == DMSG_FLYCALTROP) {
deathstring = " was spiked by ";
deathstring2 = "'s caltrops\n";
} else if (deathmsg == DMSG_GREN_PIPE) {
deathstring = " is caught by ";
deathstring2 = "'s pipebomb trap\n";
} else if (deathmsg == DMSG_GREN_GAS) {
deathstring = " gags on ";
deathstring2 = "'s noxious gasses\n";
} else if (deathmsg == DMSG_GREN_EMP) {
deathstring = "'s ammo detonates him as ";
deathstring2 = "'s EMP fries it.\n";
} else if (deathmsg == DMSG_GREN_EMP_RADIUS) {
deathstring = " eats collateral damage from ";
deathstring2 = "'s EMP\n";
} else if (deathmsg == DMSG_GREN_FLASH) {
deathstring = " is charred by ";
deathstring2 = "'s flash grenade.\n";
} else if (deathmsg == DMSG_GREN_EMP_AMMO) {
deathstring = " stands near some ammo as ";
deathstring2 = "'s EMP nukes it\n";
} else if (deathmsg == DMSG_DETPACK) {
deathstring = " reaches orbit via ";
deathstring2 = "'s detpack\n";
} else if (deathmsg == DMSG_DETPACK_DIS) {
deathstring = " cut the red wire of ";
deathstring2 = "'s detpack\n";
} else if (deathmsg == DMSG_BIOWEAPON) {
deathstring = " dies from ";
deathstring2 = "'s mysterious tropical disease\n";
} else if (deathmsg == DMSG_MAUSER) {
sprint (attacker, PRINT_HIGH, "You mercilessly slaughter ");
sprint (attacker, PRINT_HIGH, targ.netname);
sprint (attacker, PRINT_HIGH, "!\n");
return;
} else if (deathmsg == DMSG_DAEDALUS) {
deathstring = " is melted by ";
deathstring2 = "'s Daedalus impulse rifle\n";
} else if (deathmsg == DMSG_BIOWEAPON_ATT) {
deathstring = " escapes infection from ";
deathstring2 = " by dying first\n";
} else if (deathmsg == DMSG_GRENADEL) {
if (targ.health < -40) {
deathstring = " was gibbed by ";
deathstring2 = "'s grenade\n";
} else {
deathstring = " eats ";
deathstring2 = "'s pineapple\n";
}
} else if (deathmsg == DMSG_STUCK_FORCEFIELD) {
deathstring = " is fried in ";
deathstring2 = "'s force field\n";
} else if (deathmsg == DMSG_FORCEFIELD) {
deathstring = " had a shocking experience on ";
deathstring2 = "'s force field\n";
} else if (deathmsg == DMSG_FGTRAP) {
deathstring = " explodes with ";
deathstring2 = "'s trapped field generator\n";
} else if (deathmsg == DMSG_ROCKETL) {
if (targ.health < -40) {
deathstring = " was gibbed by ";
deathstring2 = "'s rocket\n" ;
} else {
deathstring = " rides ";
deathstring2 = "'s rocket\n";
}
} else if (deathmsg == DMSG_HOVER) {
deathstring = " choked on ";
deathstring2 = "'s hover exhaust\n";
} else if (deathmsg == DMSG_LAND_MINE) {
if (targ.health < -40) {
if (random () < FRAC (4, 5))
deathstring = " was turned into a shower of gibs by ";
else
deathstring = " was launched 80 ft into the air by ";
} else {
if (random () < FRAC (4, 5))
deathstring = " walked over ";
else
deathstring = " was launched 40 ft into the air by ";
}
deathstring2 = "'s land mine\n";
} else if (deathmsg == DMSG_FLAME) {
local float rnum = random ();
if (rnum < FRAC (1, 5)) {
deathstring = " is burnt up by ";
deathstring2 = "'s flame\n";
} else if (rnum < FRAC (2, 5)) {
deathstring = " is fried by ";
deathstring2 = "'s fire\n";
} else if (rnum < FRAC (3, 5)) {
deathstring = " feels ";
deathstring2 = "'s fire of wrath\n";
} else if (rnum < FRAC (4, 5)) {
deathstring = " is reduced to ashes by ";
deathstring2 = "\n";
} else {
deathstring = " is grilled by ";
deathstring2 = "'s flame\n";
}
} else if (deathmsg == DMSG_AXE) {
if (attacker.cutf_items & CUTF_KNIFE) {
if (attacker.job & JOB_WARLOCK)
deathstring = " is forced to donate his blood to ";
else
deathstring = " was knife-murdered by ";
} else
deathstring = " was axe-murdered by ";
deathstring2 = "\n";
if (attacker.demon_blood < MAX_KNIFE_BLOOD) //SB - OfN defined max now
attacker.demon_blood = attacker.demon_blood + 1;
} else if (deathmsg == DMSG_SPANNER) {
deathstring = " was spanner-murdered by ";
deathstring2 = "\n";
} else if (deathmsg == DMSG_SHOTGUN) {
deathstring = " chewed on ";
deathstring2 = "'s boomstick\n";
} else if (deathmsg == DMSG_SSHOTGUN) {
deathstring = " ate 2 loads of ";
deathstring2 = "'s buckshot\n";
} else if (deathmsg == DMSG_NAILGUN) {
deathstring = " was nailed by ";
deathstring2 = "\n";
} else if (deathmsg == DMSG_SNG) {
deathstring = " was spiked by ";
deathstring2 = "'s super nailgun\n";
} else if (deathmsg == DMSG_LIGHT_ASSAULT) {
local float rnum = random ();
if (rnum < FRAC (1, 10)) {
deathstring = " wishes ";
deathstring2 = "'s gun was still an SNG\n";
} else if (rnum < FRAC (5, 10)) {
deathstring = " gets felled by ";
deathstring2 = "'s light assault cannon\n";
} else {
deathstring = " gets sawn almost in half by ";
deathstring2 = "\n";
}
} else if (deathmsg == DMSG_LIGHTNING) {
local float rnum = random ();
if (rnum < FRAC (1, 10)) {
deathstring = " has never seen a lightning gun in TF before. (";
deathstring2 = " has.)\n";
} else if (rnum < FRAC (2, 10)) {
deathstring = " is thunderstruck by ";
deathstring2 = "'s gun\n";
} else if (rnum < FRAC (4, 10)) {
deathstring = " is electrocuted by ";
deathstring2 = "'s thunderbolt\n";
} else if (rnum < FRAC (7, 10)) {
deathstring = " is shocked to death by ";
deathstring2 = "'s lightning gun\n";
} else {
deathstring = " accepts ";
if (attacker.waterlevel > 1)
deathstring2 = "'s discharge\n";
else
deathstring2 = "'s shaft\n";
}
} else if (deathmsg == DMSG_HOOK) {
deathstring = " grappled with ";
deathstring2 = "\n";
} else if (deathmsg == DMSG_JUDOKA) {
deathstring = " had his arms broken by ";
deathstring2 = "\n";
} else if (deathmsg == DMSG_AIRG) {
deathstring = " is ventilated by ";
deathstring2 = "\n";
} else if (deathmsg == DMSG_LASERCANNON) {
deathstring = " was blasted by ";
deathstring2 = "'s laser cannon\n";
} else if (deathmsg == DMSG_DISPEL) {
deathstring = " is banished to the netherworld by ";
deathstring2 = "\n";
} else if (deathmsg == DMSG_AIRG_WATER) {
if (random () < FRAC (1, 2)) {
deathstring = " learns to swim backwards with ";
deathstring2 = "'s help\n";
} else {
deathstring = " is underwater-airfisted by ";
deathstring2 = "\n";
}
} else if (deathmsg == DMSG_SNIPERRIFLE) {
if (attacker.cutf_items & CUTF_OTR) {
deathstring = " learns from ";
deathstring2 = " what an OTR bullet is\n";
} else {
if (random () < FRAC (1, 2)) {
deathstring = " takes a bullet in the chest from ";
deathstring2 = "\n";
} else {
deathstring = " succumbs to sniperfire from ";
deathstring2 = "\n";
}
}
} else if (deathmsg == DMSG_SNIPERHEADSHOT) {
if (attacker.cutf_items & CUTF_OTR && random () < FRAC (3, 5)) {
deathstring = "'s head flies away due to ";
deathstring2 = " and his OTR bullets\n";
} else {
if (random () < FRAC (1, 2)) {
deathstring = " gets a third eye from ";
deathstring2 = "\n";
} else {
deathstring = " gets his head blown off by ";
deathstring2 = "\n";
}
}
} else if (deathmsg == DMSG_SNIPERLEGSHOT) {
if (attacker.cutf_items & CUTF_OTR && random () < FRAC (1, 4)) {
deathstring = " owns a metallic replacement for his legs from ";
deathstring2 = "\n";
} else {
if (random () < FRAC (1, 2)) {
deathstring = " is made legless by ";
deathstring2 = "\n";
} else {
deathstring = " gets his legs blown off by ";
deathstring2 = "\n";
}
}
} else if (deathmsg == DMSG_AUTORIFLE) {
deathstring = " collects ";
deathstring2 = "'s bullet spray.\n";
} else if (deathmsg == DMSG_ASSAULTCANNON) {
deathstring = " gets sawn in half by ";
deathstring2 = "\n";
} else if (deathmsg == DMSG_BACKSTAB) {
if (random () < FRAC (1, 2)) {
deathstring = " gets assassinated by ";
deathstring2 = "\n";
} else {
deathstring = " is knifed from behind by ";
deathstring2 = "\n";
}
if (attacker.demon_blood < MAX_KNIFE_BLOOD) //SB
attacker.demon_blood = attacker.demon_blood + 1;
} else if (deathmsg == DMSG_TRANQ) {
deathstring = " is put to sleep by ";
deathstring2 = "\n";
} else if (deathmsg == DMSG_LASERBOLT) {
deathstring = " gets a hole in his heart from ";
deathstring2 = "'s railgun\n";
} else if (deathmsg == DMSG_INCENDIARY) {
deathstring = " gets well done by ";
deathstring2 = "'s incendiary rocket\n";
} else if (deathmsg == DMSG_MARTYR) {
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " brings down the martyr ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, "\n");
return;
} else {
deathstring = " has a BUG death by ";
deathstring2 = " (deathmsg = " + ftos (deathmsg) + ")\n";
}
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, deathstring);
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, deathstring2);
}
};
void (entity targ, entity attacker) Obituary_Player_by_Dispenser =
{
if (!(attacker.is_malfunctioning & SCREWUP_TWO)
&& !(attacker.is_malfunctioning & SCREWUP_FOUR)) {
if (attacker.martyr_enemy == attacker.real_owner) {
if (targ == attacker.real_owner) {
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " dispenses with himself\n");
} else {
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " didn't insert the correct change into ");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, "'s dispenser\n");
}
} else {
if (targ == attacker.real_owner) {
bprint (PRINT_MEDIUM, attacker.martyr_enemy.netname);
bprint (PRINT_MEDIUM, " nukes ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " with his own dispenser\n");
} else {
bprint (PRINT_MEDIUM, attacker.martyr_enemy.netname);
bprint (PRINT_MEDIUM, " blows ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " away with ");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, "'s dispenser");
}
}
} else {
if (targ == attacker.real_owner) {
bprint (PRINT_MEDIUM, attacker.martyr_enemy.netname);
bprint (PRINT_MEDIUM, " laughs as ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " is blown apart by his trapped dispenser\n");
//Give_Frags (attacker.martyr_enemy, targ, 1);
} else if (targ == attacker.martyr_enemy) {
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " should've stayed away from ");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, "'s dispenser\n");
//Give_Frags (attacker.martyr_enemy, targ, -1);
} else {
bprint (PRINT_MEDIUM, attacker.martyr_enemy.netname);
bprint (PRINT_MEDIUM, " laughs as ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " is blown to pieces by ");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, "'s trapped dispenser\n");
//Give_Frags_Out (attacker.martyr_enemy, targ, 1);
}
}
};
void (entity targ, entity attacker) Obituary_Player_by_ForceField =
{
if (targ == attacker.real_owner) {
bprint (PRINT_MEDIUM, attacker.martyr_enemy.netname);
bprint (PRINT_MEDIUM, " laughs as ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " fries in his own hacked force field\n");
//Give_Frags (attacker.martyr_enemy, targ, 1);
} else if (targ == attacker.martyr_enemy) {
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " hacked the wrong thing in ");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, "'s force field generator\n");
//Give_Frags (attacker.martyr_enemy, targ, -1);
} else {
bprint (PRINT_MEDIUM, attacker.martyr_enemy.netname);
bprint (PRINT_MEDIUM, " laughs as ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " is fried in ");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, "'s hacked force field\n");
//Give_Frags (attacker.martyr_enemy, targ, 1);
}
};
void (entity targ, entity attacker) Obituary_Player_by_SentryTesla =
{
if (targ == attacker.real_owner) {
local string deathstring;
if (deathmsg == DMSG_SENTRYGUN_ROCKET)
deathstring = " intercepts his sentry gun's rocket\n";
else if (deathmsg == DMSG_SENTRYGUN_BULLET)
deathstring = " crossed his sentry gun's line of fire\n";
else if (deathmsg == DMSG_BUG_ZAPPER)
deathstring = " was electrocuted by his own sentry\n";
else
deathstring = " let his sentry turn against him\n"; //CH
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, deathstring);
} else {
local string deathstring;
local string deathstring2;
if (deathmsg == DMSG_SENTRYGUN_ROCKET) {
deathstring = " hates ";
deathstring2 = "'s sentry gun\n";
} else if (deathmsg == DMSG_SENTRYGUN_BULLET) {
deathstring = " is mown down by ";
deathstring2 = "'s sentry gun\n";
} else if (deathmsg == DMSG_TESLA) {
local float rnum = random ();
if (rnum < FRAC (2, 4)) {
deathstring = " was electrocuted by ";
deathstring2 = "'s tesla coil\n";
} else if (rnum < FRAC (3, 4)) {
deathstring = " was shocked to pieces by ";
deathstring2 = "'s tesla sentry\n";
} else {
deathstring = " was annihilated by ";
deathstring2 = "'s tesla gun\n";
}
} else if (deathmsg == DMSG_BUG_ZAPPER) {
local float rnum = random ();
if (rnum < FRAC (1, 5)) {
deathstring = " made a frying sound after running into ";
deathstring2 = "'s Sentry Point Defense System\n";
} else if (rnum < FRAC (2, 5)) {
deathstring = " is cooked at 400 degrees by ";
deathstring2 = "'s sentry gun\n";
} else if (rnum < FRAC (3, 5)) {
deathstring = " is disintegrated by ";
deathstring2 = "'s Sentry Point Defense System\n";
} else if (rnum < FRAC (4, 5)) {
deathstring = " is obliterated by ";
deathstring2 = "'s sentry gun\n";
} else {
deathstring = " decides ";
deathstring2 = "'s sentry isn't so cuddly after all!\n";
}
} else if (deathmsg == DMSG_MARTYR) {
deathstring = " plays cat and mouse with ";
deathstring2 = "'s sentry\n";
} else {
deathstring = " is given a BUG death from ";
deathstring2 = "'s sentry (deathmsg = " + ftos (deathmsg) + ")\n";
}
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, deathstring);
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, deathstring2);
}
};
void (entity targ, entity attacker) Obituary_Player_by_Teleporter =
{
sprint (attacker.martyr_enemy, PRINT_HIGH, targ.netname);
sprint (attacker.martyr_enemy, PRINT_HIGH, " disappears into the void.\n");
};
void (entity targ, entity attacker) Obituary_Player_Misc =
{
local string deathstring;
//Give_Frags (targ, attacker, -1);
if (deathmsg == DMSG_PHYSICS) {
deathstring = " gets a lesson in spatial physics\n";
} else if (deathmsg == DMSG_OUTOFBOUNDS) {
deathstring = " found a way out\n";
} else if (targ.watertype == CONTENTS_WATER) {
local float rnum = random ();
if (rnum < FRAC (1, 4))
deathstring = " sleeps with the fishes\n";
else if (rnum < FRAC (2, 4))
deathstring = " ate before swimming\n"; //CH
else if (rnum < FRAC (3, 4))
deathstring = " was searching for Atlantis when he drowned\n";
else
deathstring = " thought he was Jacques Cousteau, but forgot his diving gear!\n";
} else if (targ.watertype == CONTENTS_SLIME) {
if (random () < FRAC (1, 2))
deathstring = " gulped a load of slime\n";
else
deathstring = " can't exist on slime alone\n";
} else if (targ.watertype == CONTENTS_LAVA) {
if (targ.health < -15)
deathstring = " burst into flames\n";
else if (random () < FRAC (1, 2))
deathstring = " turned into hot slag\n";
else
deathstring = " visits the Volcano God\n";
} else if (attacker.classname == "explo_box") {
deathstring = " blew up\n";
} else if (attacker.solid == SOLID_BSP && attacker) {
deathstring = " was squished\n";
} else if (attacker.classname == "trap_shooter"
|| attacker.classname == "trap_spikeshooter"
|| attacker.classname == "trap_tf_spikeshooter"
|| attacker.classname == "trap_tf_shooter") {
if (attacker.deathtype)
deathstring = attacker.deathtype;
else if (attacker.spawnflags == SPAWNFLAG_LASER)
deathstring = " had surgery from a laser\n";
else if (attacker.spawnflags == SPAWNFLAG_TFROCKET)
deathstring = " took a ride on a rocket\n";
else if (attacker.spawnflags == SPAWNFLAG_TFGRENADE)
deathstring = " tried to eat a wild pineapple\n";
else if (attacker.spawnflags == SPAWNFLAG_TFFLAME)
deathstring = " was burned alive\n";
else if (attacker.spawnflags == SPAWNFLAG_SUPERSPIKE)
deathstring = " was nailed to the ground\n";
else
deathstring = " was spiked\n";
} else if (attacker.classname == "fireball") {
deathstring = " ate a lavaball\n";
} else if (attacker.classname == "trigger_changelevel") {
deathstring = " tried to leave\n";
} else if (targ.deathtype == "falling" && !attacker) {
targ.deathtype = "";
deathstring = " fell to his death\n";
} else if (targ.deathtype == "wall" && !attacker) {
targ.deathtype = "";;
deathstring = " gives a warm hello to Mister Wall\n";
} else { //- OfN - unknown death by himself
local float rnum = random ();
if (rnum < FRAC (1, 7))
deathstring = " died happily\n";
else if (rnum < FRAC (2, 7))
deathstring = " knows how to die with style\n";
else if (rnum < FRAC (3, 7))
deathstring = " simply dies\n";
else if (rnum < FRAC (4, 7))
deathstring = " had an original death\n";
else if (rnum < FRAC (5, 7))
deathstring = " wishes we had better death messages\n";
else if (rnum < FRAC (6, 7))
deathstring = " found a new way to die\n";
else
deathstring = " didn't know he could die this way!\n";
}
bprint (PRINT_HIGH, targ.netname);
bprint (PRINT_MEDIUM, deathstring);
};
void (entity targ, entity attacker) Obituary_Monster =
{
if (targ.classname == "monster_wizard")
Obituary_Monster_Wizard (targ, attacker);
else if (targ.classname == "monster_demon1")
Obituary_Monster_Demon1 (targ, attacker);
else if (targ.classname == "monster_army")
Obituary_Monster_Army (targ, attacker);
else if (targ.classname == "monster_shambler")
Obituary_Monster_Shambler (targ, attacker);
};
void (entity targ, entity attacker) Obituary_Monster_Wizard =
{
custom_demon_name (targ);
if (attacker.classname == "building_tesla")
Obituary_Monster_Wizard_by_Tesla (targ, attacker);
else if (attacker.classname == "building_sentry")
Obituary_Monster_Wizard_by_Sentry (targ, attacker);
else if (attacker.classname == "player")
Obituary_Monster_Wizard_by_Player (targ, attacker);
else if (attacker.classname == "monster_army")
Obituary_Monster_Wizard_by_Army (targ, attacker);
else if (attacker.classname == "monster_demon1")
Obituary_Monster_Wizard_by_Demon1 (targ, attacker);
else if (attacker.classname == "monster_shambler")
Obituary_Monster_Wizard_by_Shambler (targ, attacker);
else if (attacker.classname == "monster_wizard")
Obituary_Monster_Wizard_by_Wizard (targ, attacker);
else
Obituary_Monster_Misc (targ, attacker);
};
void (entity targ, entity attacker) Obituary_Monster_Wizard_by_Tesla =
{
if (teamplay
&& (attacker.real_owner.team_no > 0)
&& (targ.real_owner.team_no > 0)) {
if (!Teammate (targ.real_owner.team_no, attacker.real_owner.team_no)) {
//Give_Frags (attacker, targ, 1);
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, "'s scrag, ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, ", was shocked to death by ");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, "'s tesla sentry\n");
} else {
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, "'s friendly scrag, ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, ", was shocked to death by ");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, "'s tesla sentry\n");
}
}
};
void (entity targ, entity attacker) Obituary_Monster_Wizard_by_Sentry =
{
if (teamplay
&& (attacker.real_owner.team_no > 0)
&& (targ.real_owner.team_no > 0)) {
if (!Teammate (targ.real_owner.team_no, attacker.real_owner.team_no)) {
//Give_Frags (attacker, targ, 1);
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, "'s scrag, ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, ", was pulverized by ");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, "'s sentry gun\n");
} else {
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, "'s friendly scrag, ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, ", was pulverized by ");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, "'s sentry gun\n");
}
}
};
void (entity targ, entity attacker) Obituary_Monster_Wizard_by_Player =
{
if (teamplay
&& (attacker.team_no > 0)
&& (self.real_owner.team_no > 0)) {
if (Teammate (targ.real_owner.team_no, attacker.team_no)) {
if (attacker == self.real_owner) {
//Give_Frags (attacker, targ, -1);
bprint (PRINT_MEDIUM, attacker.netname);
if (deathmsg == DMSG_LASERCANNON)
bprint (PRINT_MEDIUM, " cuts his own scrag in half!\n");
else
bprint (PRINT_MEDIUM, " kills his own scrag!\n");
} else {
//Give_Frags (attacker, targ, -1);
bprint (PRINT_MEDIUM, attacker.netname);
if (deathmsg == DMSG_LASERCANNON)
bprint (PRINT_MEDIUM, " blasts the friendly scrag ");
else
bprint (PRINT_MEDIUM, " mows down the friendly scrag ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
}
} else {
//Give_Frags (attacker, targ, 1);
if (deathmsg == DMSG_LASERCANNON) {
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " cuts ");
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, "'s scrag in several parts\n");
} else {
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, "'s scrag, ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, ", was killed by ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, "\n");
}
MonsterKill (attacker); // adds knife kill to warlock if needed
}
}
};
void (entity targ, entity attacker) Obituary_Monster_Wizard_by_Army =
{
custom_demon_name (attacker);
GetRank (attacker);
if (Teammate (targ.real_owner.team_no, attacker.real_owner.team_no)) {
bprint (PRINT_MEDIUM, attacker.undercover_name);
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ") mows down the friendly scrag ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
} else {
//Give_Frags (attacker, targ, 1);
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, "'s scrag, ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, ", is killed by ");
bprint (PRINT_MEDIUM, attacker.undercover_name);
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
}
};
void (entity targ, entity attacker) Obituary_Monster_Wizard_by_Demon1 =
{
custom_demon_name (attacker);
if (Teammate (targ.real_owner.team_no, attacker.real_owner.team_no)) {
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ") eviscerates the friendly scrag ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
} else {
//Give_Frags (attacker, targ, 1);
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, "'s scrag, ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, ", is returned to hell by ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
}
};
void (entity targ, entity attacker) Obituary_Monster_Wizard_by_Shambler =
{
custom_demon_name (attacker);
if (Teammate (targ.real_owner.team_no, attacker.real_owner.team_no)) {
bprint (PRINT_MEDIUM, "The shambler ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ") annihilates the friendly scrag ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
} else {
//Give_Frags (attacker, targ, 1);
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, "'s scrag, ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, ", learns a lesson from the shambler ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
}
};
void (entity targ, entity attacker) Obituary_Monster_Wizard_by_Wizard =
{
custom_demon_name (attacker);
if (Teammate (targ.real_owner.team_no, attacker.real_owner.team_no)) {
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ") annihilates the colleague ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
} else {
//Give_Frags (attacker, targ, 1);
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, "'s scrag, ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, ", shows to ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, ") who is the best\n");
}
};
void (entity targ, entity attacker) Obituary_Monster_Demon1 =
{
custom_demon_name (targ); //CH
if (attacker.classname == "building_tesla")
Obituary_Monster_Demon1_by_Tesla (targ, attacker);
else if (attacker.classname == "building_sentry")
Obituary_Monster_Demon1_by_Sentry (targ, attacker);
else if (attacker.classname == "player")
Obituary_Monster_Demon1_by_Player (targ, attacker);
else if (attacker.classname == "monster_army")
Obituary_Monster_Demon1_by_Army (targ, attacker);
else if (attacker.classname == "monster_demon1")
Obituary_Monster_Demon1_by_Demon1 (targ, attacker);
else if (attacker.classname == "monster_shambler")
Obituary_Monster_Demon1_by_Shambler (targ, attacker);
else if (attacker.classname == "monster_wizard")
Obituary_Monster_Demon1_by_Wizard (targ, attacker);
else
Obituary_Monster_Misc (targ, attacker);
};
void (entity targ, entity attacker) Obituary_Monster_Demon1_by_Tesla =
{
if (teamplay
&& (attacker.real_owner.team_no > 0)
&& (targ.real_owner.team_no > 0)) {
if (!Teammate (targ.real_owner.team_no, attacker.real_owner.team_no)) {
//Give_Frags (attacker, targ, 1);
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, "'s demon, ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, ", was shocked to death by ");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, "'s tesla sentry\n");
} else {
if (attacker.tf_items & NIT_SECURITY_CAMERA) //overtink
//Give_Frags_Out (attacker.real_owner, targ);
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, "'s friendly demon, ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, ", was shocked to death by ");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, "'s tesla sentry\n");
}
}
};
void (entity targ, entity attacker) Obituary_Monster_Demon1_by_Sentry =
{
if (teamplay
&& (attacker.real_owner.team_no > 0)
&& (targ.real_owner.team_no > 0)) {
if (!Teammate (targ.real_owner.team_no, attacker.real_owner.team_no)) {
//Give_Frags_Out (attacker, targ, 1, 0, 2, 0, 0); //Sentry
//Give_Frags_Out (attacker.real_owner, targ, 1, 0, 1, 1, 0);
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, "'s demon, ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, ", was pulped by ");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, "'s sentry gun\n");
} else {
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, "'s friendly demon, ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, ", was pulped by ");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, "'s sentry gun\n");
}
}
};
void (entity targ, entity attacker) Obituary_Monster_Demon1_by_Player =
{
if (teamplay
&& (attacker.team_no > 0)
&& (self.real_owner.team_no > 0)) {
if (Teammate (targ.real_owner.team_no, attacker.team_no)) {
if (attacker == self.real_owner) {
//Give_Frags_Out (attacker, targ, -1, 0, 1, 1, 0);
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " kills his own fiend!\n");
} else {
//Give_Frags_Out (attacker, targ, -1, 0, 1, 1, 0);
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " mows down the friendly demon ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
}
} else {
//Give_Frags_Out (attacker, targ, 1, 0, 1, 1, 0);
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, "'s demon, ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, ", was killed by ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, "\n");
MonsterKill (attacker); // adds knife kills to warlock
}
}
};
void (entity targ, entity attacker) Obituary_Monster_Demon1_by_Army =
{
custom_demon_name (attacker);
GetRank (attacker);
if (Teammate (targ.real_owner.team_no, attacker.real_owner.team_no)) {
//Give_Frags_Out (attacker, targ, -1, 0, 1, 1, 0);
bprint (PRINT_MEDIUM, attacker.undercover_name);
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ") mows down the friendly demon ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
} else {
//Give_Frags_Out (attacker, targ, 1, 0, 1, 1, 0);
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, "'s demon, ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, ", didn't have a prayer against ");
bprint (PRINT_MEDIUM, attacker.undercover_name);
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
}
};
void (entity targ, entity attacker) Obituary_Monster_Demon1_by_Demon1 =
{
custom_demon_name (attacker);
if (Teammate (targ.real_owner.team_no, attacker.real_owner.team_no)) {
//Give_Frags_Out (attacker, targ, -1, 0, 1, 1, 0);
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ") eviscerates the friendly demon ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
} else {
//Give_Frags_Out (attacker, targ, 1, 0, 1, 1, 0);
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, "'s demon, ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, ", realises too late that ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ") wasn't just trying to be friendly\n");
}
};
void (entity targ, entity attacker) Obituary_Monster_Demon1_by_Shambler =
{
custom_demon_name (attacker);
if (Teammate (targ.real_owner.team_no, attacker.real_owner.team_no)) {
//Give_Frags_Out (attacker, targ, -1, 0, 1, 1, 0);
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ") annihilates the friendly demon ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
} else {
//Give_Frags_Out (attacker, targ, 1, 0, 1, 1, 0);
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, "'s demon, ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, ", is given a firm farewell to the netherworld by ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
}
};
void (entity targ, entity attacker) Obituary_Monster_Demon1_by_Wizard =
{
custom_demon_name (attacker);
if (Teammate (targ.real_owner.team_no, attacker.real_owner.team_no)) {
//Give_Frags_Out (attacker, targ, -1, 0, 1, 1, 0);
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ") kills the friendly demon ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
} else {
//Give_Frags_Out (attacker, targ, 1, 0, 1, 1, 0);
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, "'s demon, ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, ", is killed by the scrag ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
}
};
void (entity targ, entity attacker) Obituary_Monster_Army =
{
custom_demon_name (targ); //CH
GetRank (targ);
if (attacker.classname == "building_tesla")
Obituary_Monster_Army_by_Tesla (targ, attacker);
else if (attacker.classname == "building_sentry")
Obituary_Monster_Army_by_Sentry (targ, attacker);
else if (attacker.classname == "player")
Obituary_Monster_Army_by_Player (targ, attacker);
else if (attacker.classname == "monster_shambler")
Obituary_Monster_Army_by_Shambler (targ, attacker);
else if (attacker.classname == "monster_demon1")
Obituary_Monster_Army_by_Demon1 (targ, attacker);
else if (attacker.classname == "monster_army")
Obituary_Monster_Army_by_Army (targ, attacker);
else if (attacker.classname == "monster_wizard")
Obituary_Monster_Army_by_Wizard (targ, attacker);
else
Obituary_Monster_Misc (targ, attacker);
};
void (entity targ, entity attacker) Obituary_Monster_Army_by_Tesla =
{
if (teamplay
&& (attacker.real_owner.team_no > 0)
&& (targ.real_owner.team_no > 0)) {
if (!Teammate (targ.real_owner.team_no, attacker.real_owner.team_no)) {
//Give_Frags_Out (attacker, targ, 1, 0, 2, 0, 0); //Tesla
//Give_Frags_Out (attacker.real_owner, targ, 1, 0, 1, 1, 0);
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, "'s mercenary soldier, ");
bprint (PRINT_MEDIUM, targ.undercover_name);
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, ", was shocked to death by ");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, "'s tesla sentry\n");
} else {
if (attacker.tf_items & NIT_SECURITY_CAMERA)
//Give_Frags_Out (attacker.real_owner, targ, -1, 0, 1, 1, 0);
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, "'s friendly soldier, ");
bprint (PRINT_MEDIUM, targ.undercover_name);
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, ", was shocked to death by ");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, "'s tesla sentry\n");
}
}
};
void (entity targ, entity attacker) Obituary_Monster_Army_by_Sentry =
{
if (teamplay
&& (attacker.real_owner.team_no > 0)
&& (targ.real_owner.team_no > 0)) {
if (!Teammate (targ.real_owner.team_no, attacker.real_owner.team_no)) {
//Give_Frags_Out (attacker, targ, 1, 0, 2, 0, 0); //Sentry
//Give_Frags_Out (attacker.real_owner, targ, 1, 0, 1, 1, 0);
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, "'s mercenary soldier, ");
bprint (PRINT_MEDIUM, targ.undercover_name);
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, ", discovers ");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, "'s sentry isn't that easy to kill\n");
} else {
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, "'s friendly soldier, ");
bprint (PRINT_MEDIUM, targ.undercover_name);
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, ", should have known better than to cross ");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, "'s sentry gun's line of fire\n");
}
}
};
void (entity targ, entity attacker) Obituary_Monster_Army_by_Player =
{
if (teamplay
&& (attacker.team_no > 0)
&& (self.real_owner.team_no > 0)) {
if (Teammate (targ.real_owner.team_no, attacker.team_no)) {
if (attacker == self.real_owner) {
//Give_Frags_Out (attacker, targ, -1, 0, 1, 1, 0);
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " kills his own soldier!\n");
} else {
//Give_Frags_Out (attacker, targ, -1, 0, 1, 1, 0);
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " mows down the friendly soldier ");
bprint (PRINT_MEDIUM, targ.undercover_name);
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
}
} else {
//Give_Frags_Out (attacker, targ, 1, 0, 1, 1, 0);
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, "'s mercenary soldier, ");
bprint (PRINT_MEDIUM, targ.undercover_name);
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, ", was killed by ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, "\n");
}
}
};
void (entity targ, entity attacker) Obituary_Monster_Army_by_Shambler =
{
custom_demon_name (attacker);
if (Teammate (targ.real_owner.team_no, attacker.real_owner.team_no)) {
//Give_Frags_Out (attacker, targ, -1, 0, 1, 1, 0);
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ") slaps the friendly soldier ");
bprint (PRINT_MEDIUM, targ.undercover_name);
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, ") into oblivion\n");
} else {
//Give_Frags_Out (attacker, targ, 1, 0, 1, 1, 0);
//Give_Frags_Out (attacker.real_owner, targ, 1, 0, 1, 1, 0);
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, "'s soldier, ");
bprint (PRINT_MEDIUM, targ.undercover_name);
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, ", is smacked down by ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
}
};
void (entity targ, entity attacker) Obituary_Monster_Army_by_Demon1 =
{
custom_demon_name (attacker);
if (Teammate (targ.real_owner.team_no, attacker.real_owner.team_no)) {
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ") disembowels the friendly soldier ");
bprint (PRINT_MEDIUM, targ.undercover_name);
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
} else {
//Give_Frags_Out (attacker, targ, 1, 0, 1, 1, 0);
//Give_Frags_Out (attacker.real_owner, targ, 1, 0, 1, 1, 0);
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, "'s soldier, ");
bprint (PRINT_MEDIUM, targ.undercover_name);
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, ", is now listed as KIA thanks to ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
}
};
void (entity targ, entity attacker) Obituary_Monster_Army_by_Army =
{
custom_demon_name (attacker);
GetRank (attacker);
if (targ == attacker) { //- OfN - It *may* happen
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, "'s soldier, ");
bprint (PRINT_MEDIUM, attacker.undercover_name);
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, ", explodes with his own rockets!\n");
return;
}
if (Teammate (targ.real_owner.team_no, attacker.real_owner.team_no)) {
//Give_Frags_Out (attacker, targ, -1, 0, 1, 1, 0);
bprint (PRINT_MEDIUM, attacker.undercover_name);
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ") mows down comrade-in-arms ");
bprint (PRINT_MEDIUM, targ.undercover_name);
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
} else {
//Give_Frags_Out (attacker, targ, 1, 0, 1, 1, 0);
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, "'s soldier, ");
bprint (PRINT_MEDIUM, targ.undercover_name);
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, ", takes a bullet in the chest from ");
bprint (PRINT_MEDIUM, attacker.undercover_name);
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
}
};
void (entity targ, entity attacker) Obituary_Monster_Army_by_Wizard =
{
custom_demon_name (attacker);
if (Teammate (targ.real_owner.team_no, attacker.real_owner.team_no)) {
//Give_Frags_Out (attacker, targ, -1, 0, 1, 1, 0);
bprint (PRINT_MEDIUM, "The scrag ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ") kills the friendly soldier ");
bprint (PRINT_MEDIUM, targ.undercover_name);
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
} else {
//Give_Frags_Out (attacker, targ, 1, 0, 1, 1, 0);
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, "'s soldier, ");
bprint (PRINT_MEDIUM, targ.undercover_name);
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, ", is killed by the scrag ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
}
};
void (entity targ, entity attacker) Obituary_Monster_Shambler =
{
custom_demon_name (targ); //CH
if (attacker.classname == "building_tesla")
Obituary_Monster_Shambler_by_Tesla (targ, attacker);
else if (attacker.classname == "building_sentry")
Obituary_Monster_Shambler_by_Sentry (targ, attacker);
else if (attacker.classname == "player")
Obituary_Monster_Shambler_by_Player (targ, attacker);
else if (attacker.classname == "monster_demon1")
Obituary_Monster_Shambler_by_Demon1 (targ, attacker);
else if (attacker.classname == "monster_shambler")
Obituary_Monster_Shambler_by_Shambler (targ, attacker);
else if (attacker.classname == "monster_army")
Obituary_Monster_Shambler_by_Army (targ, attacker);
else if (attacker.classname == "monster_wizard")
Obituary_Monster_Shambler_by_Wizard (targ, attacker);
else
Obituary_Monster_Misc (targ, attacker);
};
void (entity targ, entity attacker) Obituary_Monster_Shambler_by_Tesla =
{
if (teamplay
&& (attacker.real_owner.team_no > 0)
&& (targ.real_owner.team_no > 0)) {
if (!Teammate (targ.real_owner.team_no, attacker.real_owner.team_no)) {
//Give_Frags_Out (attacker, targ, 1, 0, 2, 0, 0); //Tesla
//Give_Frags_Out (attacker.real_owner, targ, 1, 0, 1, 1, 0);
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, "'s shambler, ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, ", was given a shocking surprise by ");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, "'s tesla sentry\n");
} else {
//Give_Frags_Out (attacker, targ, -1, 0, 2, 0, 0); //Tesla
//Give_Frags_Out (attacker.real_owner, targ, -1, 0, 1, 1, 0);
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, "'s friendly shambler, ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, ", shouldn't play so close to ");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, "'s tesla sentry\n");
}
}
};
void (entity targ, entity attacker) Obituary_Monster_Shambler_by_Sentry =
{
if (teamplay
&& (attacker.real_owner.team_no > 0)
&& (targ.real_owner.team_no > 0)) {
if (!Teammate (targ.real_owner.team_no, attacker.real_owner.team_no)) {
//Give_Frags_Out (attacker, targ, 1, 0, 2, 0, 0); //Sentry
//Give_Frags_Out (attacker.real_owner, targ, 1, 0, 1, 1, 0);
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, "'s shambler, ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, ", really needs to learn to dodge ");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, "'s sentry gun\n");
} else {
//Give_Frags_Out (attacker, targ, -1, 0, 2, 0, 0); //Sentry
//Give_Frags_Out (attacker.real_owner, targ, -1, 0, 1, 1, 0);
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, "'s friendly shambler, ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, ", shouldn't play so close to ");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, "'s sentry gun\n");
}
}
};
void (entity targ, entity attacker) Obituary_Monster_Shambler_by_Player =
{
if (teamplay
&& (attacker.team_no > 0)
&& (self.real_owner.team_no > 0)) {
if (Teammate (targ.real_owner.team_no, attacker.team_no)) {
if (attacker == self.real_owner) {
//Give_Frags_Out (attacker, targ, -2, 0, 1, 1, 0);
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " kills his own shambler!\n");
} else {
//Give_Frags_Out (attacker, targ, -1, 0, 1, 1, 0);
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " mows down the friendly shambler ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
}
} else {
//Give_Frags_Out (attacker, targ, 1, 0, 1, 1, 0);
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, "'s shambler, ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, ", was felled by ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, "\n");
MonsterKill (attacker); // adds knife kills to warlock
}
}
};
void (entity targ, entity attacker) Obituary_Monster_Shambler_by_Demon1 =
{
custom_demon_name (attacker);
if (Teammate (targ.real_owner.team_no, attacker.real_owner.team_no)) {
//Give_Frags_Out (attacker, targ, -1, 0, 1, 1, 0);
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ") checks its aura after killing ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
} else {
//Give_Frags_Out (attacker, targ, 1, 0, 1, 1, 0);
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, "'s shambler, ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, ", is torn apart by ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
}
};
void (entity targ, entity attacker) Obituary_Monster_Shambler_by_Shambler =
{
custom_demon_name (attacker);
if (attacker == targ && deathmsg == DMSG_FLAME)
{
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ") sets itself on fire one too many times.\n");
} else if (Teammate (targ.real_owner.team_no, attacker.real_owner.team_no)) {
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ") destroys the friendly shambler ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
} else {
//Give_Frags_Out (attacker, targ, 1, 0, 1, 1, 0);
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, "'s shambler, ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, ", finds losing against shambler ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ") to be a fatal experience\n");
}
};
void (entity targ, entity attacker) Obituary_Monster_Shambler_by_Army =
{
custom_demon_name (attacker);
GetRank (attacker);
if (Teammate (targ.real_owner.team_no, attacker.real_owner.team_no)) {
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, ") is caught in the crossfire from ");
bprint (PRINT_MEDIUM, attacker.undercover_name);
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
} else {
//Give_Frags_Out (attacker, targ, 1, 0, 1, 1, 0);
bprint (PRINT_MEDIUM, attacker.undercover_name);
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ") proves to ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, ") that size doesn't matter\n");
}
};
void (entity targ, entity attacker) Obituary_Monster_Shambler_by_Wizard =
{
custom_demon_name (attacker);
if (Teammate (targ.real_owner.team_no, attacker.real_owner.team_no)) {
//bprint (PRINT_MEDIUM, attacker.undercover_name);
bprint (PRINT_MEDIUM, "The scrag ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ") nullifies the friendly shambler ");
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
} else {
//Give_Frags_Out (attacker, targ, 1, 0, 1, 1, 0);
bprint (PRINT_MEDIUM, targ.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, ") is destroyed by the scrag ");
//bprint (PRINT_MEDIUM, attacker.undercover_name);
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
}
};
void (entity targ, entity attacker) Obituary_Building =
{
if (targ == attacker)
Obituary_Building_by_Self (targ, attacker);
else if (attacker.classname == "building_tesla")
Obituary_Building_by_Tesla (targ, attacker);
else if (attacker.classname == "teledeath")
Obituary_Building_by_Teledeath (targ, attacker);
else if (attacker.classname == "player")
Obituary_Building_by_Player (targ, attacker);
else if (attacker.classname == "monster_army")
Obituary_Building_by_Army (targ, attacker);
};
void (entity targ, entity attacker) Obituary_Building_by_Tesla =
{
local string deathstring;
if (!Teammate (targ.real_owner.team_no, attacker.real_owner.team_no)
&& (targ.classname == "building_sentrygun"
|| targ.classname == "building_tesla")) {
//Give_Frags_Out (attacker, targ, 1, 0, 2, 0, 0); //Tesla
//Give_Frags_Out (attacker.real_owner, targ, 1, 0, 1, 1, 0);
}
if (targ.classname == "building_dispenser")
deathstring = "'s dispenser was zapped by ";
else if (targ.classname == "building_sentrygun")
deathstring = "'s sentrygun was no match for ";
else if (targ.classname == "building_camera")
deathstring = "'s security camera was vaporized by ";
else if (targ.classname == "building_sensor")
deathstring = "'s motion sensor was obliterated by ";
else if (targ.classname == "building_teleporter")
deathstring = "'s teleporter pad was short circuted by ";
else if (targ.classname == "building_tesla")
deathstring = "'s tesla sentry lost the battle against ";
else if (targ.classname == "building_sensor")
deathstring = "'s motion sensor was fucked up by ";
else if (targ.classname == "building_fieldgen")
deathstring = "'s field generator was destroyed by ";
else
deathstring = "'s unknown building (BUG) ";
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, deathstring);
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, "'s tesla sentry\n");
};
void (entity targ, entity attacker) Obituary_Building_by_Self =
{
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, "'s ");
bprint (PRINT_MEDIUM, GetBuildingName (targ));
bprint (PRINT_MEDIUM, " destroys itself.\n");
};
void (entity targ, entity attacker) Obituary_Building_by_Teledeath =
{
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, "'s ");
bprint (PRINT_MEDIUM, GetBuildingName (targ));
bprint (PRINT_MEDIUM, " was telefragged by ");
bprint (PRINT_MEDIUM, attacker.owner.netname);
bprint (PRINT_MEDIUM, "\n");
};
void (entity targ, entity attacker) Obituary_Building_by_Player =
{
if (attacker == targ.real_owner) {
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, " destroys his ");
bprint (PRINT_MEDIUM, GetBuildingName (targ));
bprint (PRINT_MEDIUM, "\n");
return;
} else {
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, "'s ");
bprint (PRINT_MEDIUM, GetBuildingName (targ));
bprint (PRINT_MEDIUM, " was destroyed by ");
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, "\n");
}
};
void (entity targ, entity attacker) Obituary_Building_by_Army =
{
custom_demon_name (attacker);
GetRank (attacker);
bprint (PRINT_MEDIUM, targ.real_owner.netname);
bprint (PRINT_MEDIUM, "'s ");
bprint (PRINT_MEDIUM, GetBuildingName (targ));
bprint (PRINT_MEDIUM, " was destroyed by ");
bprint (PRINT_MEDIUM, attacker.undercover_name);
bprint (PRINT_MEDIUM, attacker.netname);
bprint (PRINT_MEDIUM, " (");
bprint (PRINT_MEDIUM, attacker.real_owner.netname);
bprint (PRINT_MEDIUM, ")\n");
};
void (entity targ, entity attacker) Obituary_Monster_Misc =
{
local string deathstring;
if (attacker.classname == "explo_box")
deathstring = " blew up\n";
else if (attacker.solid == SOLID_BSP && attacker)
deathstring = " was squished\n";
else if (attacker.classname == "trap_shooter"
|| attacker.classname == "trap_spikeshooter"
|| attacker.classname == "trap_tf_spikeshooter"
|| attacker.classname == "trap_tf_shooter") {
if (attacker.deathtype)
deathstring = attacker.deathtype;
else if (attacker.spawnflags == SPAWNFLAG_LASER)
deathstring = " had surgery from a laser\n";
else if (attacker.spawnflags == SPAWNFLAG_TFROCKET)
deathstring = " took a ride on a rocket\n";
else if (attacker.spawnflags == SPAWNFLAG_TFGRENADE)
deathstring = " tried to eat a wild pineapple\n";
else if (attacker.spawnflags == SPAWNFLAG_TFFLAME)
deathstring = " was burned alive\n";
else if (attacker.spawnflags == SPAWNFLAG_SUPERSPIKE)
deathstring = " was nailed to the ground\n";
else
deathstring = " was spiked\n";
} else if (attacker.classname == "fireball")
deathstring = " ate a lavaball\n";
else if (attacker.classname == "teledeath")
deathstring = " was telefragged by " + attacker.owner.netname + "\n";
else
deathstring = " dies\n";
bprint (PRINT_HIGH, "The ");
bprint (PRINT_HIGH, GetMonsterName (targ));
bprint (PRINT_HIGH, " ");
bprint (PRINT_HIGH, targ.netname);
bprint (PRINT_HIGH, " (");
bprint (PRINT_HIGH, targ.real_owner.netname);
bprint (PRINT_HIGH, ")");
bprint (PRINT_HIGH, deathstring);
};