Trying out a few of the new death message methods

This commit is contained in:
Dino 2023-09-03 21:24:49 -04:00
parent 6dc95aed23
commit 2a3b91edeb
4 changed files with 193 additions and 296 deletions

View file

@ -1623,6 +1623,7 @@ extern int snd_fry;
// Action Add
extern cvar_t *teamdm;
extern cvar_t *teamdm_respawn;
extern cvar_t *ff_afterround;
extern cvar_t *respawn_effect;
extern cvar_t *use_warnings;
extern cvar_t *use_killcounts;

View file

@ -155,6 +155,7 @@ cvar_t *ai_movement_disabled;
cvar_t *teamdm;
cvar_t *teamdm_respawn;
cvar_t *ff_afterround;
cvar_t *respawn_effect;
cvar_t *use_warnings;
cvar_t *use_killcounts;

View file

@ -658,95 +658,80 @@ void ClientObituary(edict_t *self, edict_t *inflictor, edict_t *attacker, mod_t
case MOD_MK23: // zucc
switch (loc) {
case LOC_HDAM:
if (self->client->pers.gender == GENDER_MALE)
message = " has a hole in his head from";
else if (self->client->pers.gender == GENDER_FEMALE)
message = " has a hole in her head from";
else
message = " has a hole in its head from";
message2 = "'s Mark 23 pistol";
snprintf(message, sizeof(message), "%s has a hole in %s head from %s's Mark 23 pistol",
self->client->pers.netname, GetPossesiveAdjective(self), attacker->client->pers.netname);
break;
case LOC_CDAM:
message = " loses a vital chest organ thanks to";
message2 = "'s Mark 23 pistol";
snprintf(message, sizeof(message), "%s loses a vital chest organ thanks to %s's Mark 23 pistol",
self->client->pers.netname, attacker->client->pers.netname);
break;
case LOC_SDAM:
if (self->client->pers.gender == GENDER_MALE)
message = " loses his lunch to";
else if (self->client->pers.gender == GENDER_FEMALE)
message = " loses her lunch to";
else
message = " loses its lunch to";
message2 = "'s .45 caliber pistol round";
snprintf(message, sizeof(message), "%s loses %s lunch to %s's .45 caliber pistol round",
self->client->pers.netname, GetPossesiveAdjective(self), attacker->client->pers.netname);
break;
case LOC_LDAM:
message = " is legless because of";
message2 = "'s .45 caliber pistol round";
snprintf(message, sizeof(message), "%s is legless because of %s's .45 caliber pistol round",
self->client->pers.netname, attacker->client->pers.netname);
break;
default:
message = " was shot by";
message2 = "'s Mark 23 Pistol";
snprintf(message, sizeof(message), "%s was shot by %s's Mark 23 pistol",
self->client->pers.netname, attacker->client->pers.netname);
}
break;
case MOD_MP5:
switch (loc) {
case LOC_HDAM:
message = "'s brains are on the wall thanks to";
message2 = "'s 10mm MP5/10 round";
snprintf(message, sizeof(message), "%s 's brains are on the wall thanks to %s's 10mm MP5/10 round",
self->client->pers.netname, attacker->client->pers.netname);
break;
case LOC_CDAM:
message = " feels some chest pain via";
message2 = "'s MP5/10 Submachinegun";
snprintf(message, sizeof(message), "%s feels some chest pain via %s's MP5/10 Submachinegun",
self->client->pers.netname, attacker->client->pers.netname);
break;
case LOC_SDAM:
message = " needs some Pepto Bismol after";
message2 = "'s 10mm MP5 round";
snprintf(message, sizeof(message), "%s needs some Pepto Bismol after %s's 10mm MP5 round",
self->client->pers.netname, attacker->client->pers.netname);
break;
case LOC_LDAM:
if (self->client->pers.gender == GENDER_MALE)
message = " had his legs blown off thanks to";
else if (self->client->pers.gender == GENDER_FEMALE)
message = " had her legs blown off thanks to";
else
message = " had its legs blown off thanks to";
message2 = "'s MP5/10 Submachinegun";
snprintf(message, sizeof(message), "%s had %s legs blown off thanks to %s's MP5/10 Submachinegun",
self->client->pers.netname, GetPossesiveAdjective(self), attacker->client->pers.netname);
break;
default:
message = " was shot by";
message2 = "'s MP5/10 Submachinegun";
snprintf(message, sizeof(message), "%s was shot by %s's MP5/10 Submachinegun",
self->client->pers.netname, attacker->client->pers.netname);
}
break;
case MOD_M4:
switch (loc) {
case LOC_HDAM:
message = " had a makeover by";
message2 = "'s M4 Assault Rifle";
snprintf(message, sizeof(message), "%s had a makeover by %s's M4 Assault Rifle",
self->client->pers.netname, attacker->client->pers.netname);
break;
case LOC_CDAM:
message = " feels some heart burn thanks to";
message2 = "'s M4 Assault Rifle";
snprintf(message, sizeof(message), "%s feels some heart burn thanks to %s's M4 Assault Rifle",
self->client->pers.netname, attacker->client->pers.netname);
break;
case LOC_SDAM:
message = " has an upset stomach thanks to";
message2 = "'s M4 Assault Rifle";
snprintf(message, sizeof(message), "%s has an upset stomach thanks to %s's M4 Assault Rifle",
self->client->pers.netname, attacker->client->pers.netname);
break;
case LOC_LDAM:
message = " is now shorter thanks to";
message2 = "'s M4 Assault Rifle";
snprintf(message, sizeof(message), "%s is now shorter thanks to %s's M4 Assault Rifle",
self->client->pers.netname, attacker->client->pers.netname);
break;
default:
message = " was shot by";
message2 = "'s M4 Assault Rifle";
snprintf(message, sizeof(message), "%s was shot by %s's M4 Assault Rifle",
self->client->pers.netname, attacker->client->pers.netname);
}
break;
case MOD_M3:
n = rand() % 2 + 1;
if (n == 1) {
message = " accepts";
message2 = "'s M3 Super 90 Assault Shotgun in hole-y matrimony";
snprintf(message, sizeof(message), "%s accepts %s's M3 Super 90 Assault Shotgun in hole-y matrimony",
self->client->pers.netname, attacker->client->pers.netname);
} else {
message = " is full of buckshot from";
message2 = "'s M3 Super 90 Assault Shotgun";
snprintf(message, sizeof(message), "%s is full of buckshot from %s's M3 Super 90 Assault Shotgun",
self->client->pers.netname, attacker->client->pers.netname);
}
break;
case MOD_HC:
@ -754,51 +739,53 @@ void ClientObituary(edict_t *self, edict_t *inflictor, edict_t *attacker, mod_t
if (n == 1) {
if (attacker->client->pers.hc_mode) // AQ2:TNG Deathwatch - Single Barreled HC Death Messages
{
message = " underestimated";
message2 = "'s single barreled handcannon shot";
snprintf(message, sizeof(message), "%s underestimated %s's single barreled handcannon shot",
self->client->pers.netname, attacker->client->pers.netname);
} else {
message = " ate";
message2 = "'s sawed-off 12 gauge";
snprintf(message, sizeof(message), "%s ate %s's sawed-off 12 gauge",
self->client->pers.netname, attacker->client->pers.netname);
}
} else if (n == 2 ){
if (attacker->client->pers.hc_mode) // AQ2:TNG Deathwatch - Single Barreled HC Death Messages
{
message = " won't be able to pass a metal detector anymore thanks to";
message2 = "'s single barreled handcannon shot";
snprintf(message, sizeof(message), "%s won't be able to pass a metal detector anymore thanks to %s's single barreled handcannon shot",
self->client->pers.netname, attacker->client->pers.netname);
} else {
message = " is full of buckshot from";
message2 = "'s sawed off shotgun";
snprintf(message, sizeof(message), "%s is full of buckshot from %s's sawed off shotgun",
self->client->pers.netname, attacker->client->pers.netname);
}
} else {
// minch <3
message = " was minched by";
snprintf(message, sizeof(message), "%s was minched by %s",
self->client->pers.netname, attacker->client->pers.netname);
}
break;
case MOD_SNIPER:
switch (loc) {
case LOC_HDAM:
if (self->client->ps.fov < 90) {
if (self->client->pers.gender == GENDER_MALE)
message = " saw the sniper bullet go through his scope thanks to";
else if (self->client->pers.gender == GENDER_FEMALE)
message = " saw the sniper bullet go through her scope thanks to";
else
message = " saw the sniper bullet go through its scope thanks to";
} else
message = " caught a sniper bullet between the eyes from";
snprintf(message, sizeof(message), "%s saw the sniper bullet go through %s scope thanks to %s",
self->client->pers.netname, GetPossesiveAdjective(self), attacker->client->pers.netname);
} else {
snprintf(message, sizeof(message), "%s caught a sniper bullet between the eyes from %s",
self->client->pers.netname, attacker->client->pers.netname);
}
break;
case LOC_CDAM:
message = " was picked off by";
snprintf(message, sizeof(message), "%s was picked off by %s",
self->client->pers.netname, attacker->client->pers.netname);
break;
case LOC_SDAM:
message = " was sniped in the stomach by";
snprintf(message, sizeof(message), "%s was sniped in the stomach by %s",
self->client->pers.netname, attacker->client->pers.netname);
break;
case LOC_LDAM:
message = " was shot in the legs by";
snprintf(message, sizeof(message), "%s was shot in the legs by %s",
self->client->pers.netname, attacker->client->pers.netname);
break;
default:
message = " was sniped by";
//message2 = "'s Sniper Rifle";
snprintf(message, sizeof(message), "%s was sniped by %s",
self->client->pers.netname, attacker->client->pers.netname);
}
break;
case MOD_DUAL:
@ -974,12 +961,6 @@ void ClientObituary(edict_t *self, edict_t *inflictor, edict_t *attacker, mod_t
PrintDeathMessage(death_msg, self);
AddKilledPlayer(attacker, self);
#if USE_AQTION
if (stat_logs->value) {
LogKill(self, inflictor, attacker);
}
#endif
if (friendlyFire) {
if (!teamplay->value || team_round_going || !ff_afterround->value)
{
@ -989,8 +970,8 @@ void ClientObituary(edict_t *self, edict_t *inflictor, edict_t *attacker, mod_t
Add_Death( self, false );
}
} else {
if (!teamplay->value || mod != MOD_TELEFRAG) {
Add_Frag(attacker, mod);
if (!teamplay->value || mod.id != MOD_TELEFRAG) {
Add_Frag(attacker, mod.id);
attacker->client->radio_num_kills++;
Add_Death( self, true );
}
@ -1002,13 +983,6 @@ void ClientObituary(edict_t *self, edict_t *inflictor, edict_t *attacker, mod_t
sprintf(death_msg, "%s died\n", self->client->pers.netname);
PrintDeathMessage(death_msg, self);
#if USE_AQTION
if (stat_logs->value) { // Only create stats logs if stat_logs is 1
LogWorldKill(self);
}
#endif
Subtract_Frag(self); //self->client->resp.score--;
Add_Death( self, true );
}
@ -1078,7 +1052,7 @@ void TossItemsOnDeath(edict_t * ent)
// don't bother dropping stuff when allweapons/items is active
if (allitem->value) {
// remove the lasersight because then the observer might have it
item = GET_ITEM(LASER_NUM);
item = GetItemByIndex(IT_ITEM_LASERSIGHT);
ent->client->inventory[ITEM_INDEX(item)] = 0;
} else {
DeadDropSpec(ent);
@ -1092,21 +1066,21 @@ void TossItemsOnDeath(edict_t * ent)
//if (WPF_ALLOWED(MK23_NUM) && WPF_ALLOWED(IT_WEAPON_DUALMK23)) {
// give the player a dual pistol so they can be sure to drop one
item = GET_ITEM(IT_WEAPON_DUALMK23);
item = GetItemByIndex(IT_WEAPON_DUALMK23);
ent->client->inventory[ITEM_INDEX(item)]++;
EjectItem(ent, item);
//}
// check for every item we want to drop when a player dies
for (i = MP5_NUM; i < IT_WEAPON_DUALMK23; i++) {
item = GET_ITEM( i );
for (i = IT_WEAPON_MP5; i < IT_WEAPON_DUALMK23; i++) {
item = GetItemByIndex( i );
while (ent->client->inventory[ITEM_INDEX( item )] > 0) {
ent->client->inventory[ITEM_INDEX( item )]--;
EjectWeapon( ent, item );
}
}
item = GET_ITEM(IT_WEAPON_KNIFE);
item = GetItemByIndex(IT_WEAPON_KNIFE);
if (ent->client->inventory[ITEM_INDEX(item)] > 0) {
EjectItem(ent, item);
}
@ -1125,7 +1099,7 @@ void TossClientWeapon(edict_t * self)
bool quad;
float spread;
item = self->client->pers.weapon->id;
item = self->client->pers.weapon;
if (!self->client->inventory[self->client->ammo_index])
item = NULL;
if (item && (strcmp(item->pickup_name, "Blaster") == 0))
@ -1150,221 +1124,142 @@ void TossClientWeapon(edict_t * self)
}
// send generic/self
if (base)
{
gi.LocBroadcast_Print(PRINT_MEDIUM, base, self->client->pers.netname);
if (deathmatch->integer && !mod.no_point_loss)
{
self->client->resp.score--;
// // send generic/self
// if (base)
// {
// gi.LocBroadcast_Print(PRINT_MEDIUM, base, self->client->pers.netname);
// if (deathmatch->integer && !mod.no_point_loss)
// {
// self->client->resp.score--;
if (teamplay->integer)
G_AdjustTeamScore(self->client->resp.ctf_team, -1);
}
self->enemy = nullptr;
return;
}
// if (teamplay->integer)
// G_AdjustTeamScore(self->client->resp.ctf_team, -1);
// }
// self->enemy = nullptr;
// return;
// }
// has a killer
self->enemy = attacker;
if (attacker && attacker->client)
{
switch (mod.id)
{
case MOD_BLASTER:
base = "$g_mod_kill_blaster";
break;
case MOD_M3:
base = "$g_mod_kill_shotgun";
break;
case MOD_HC:
base = "$g_mod_kill_sshotgun";
break;
case MOD_MP5:
base = "$g_mod_kill_machinegun";
break;
case MOD_M4:
base = "$g_mod_kill_chaingun";
break;
case MOD_GRENADE:
base = "$g_mod_kill_grenade";
break;
case MOD_G_SPLASH:
base = "$g_mod_kill_grenade_splash";
break;
case MOD_SNIPER:
base = "$g_mod_kill_rocket";
break;
case MOD_KNIFE:
base = "$g_mod_kill_rocket_splash";
break;
case MOD_HYPERBLASTER:
base = "$g_mod_kill_hyperblaster";
break;
case MOD_KNIFE_THROWN:
base = "$g_mod_kill_railgun";
break;
case MOD_MK23:
base = "$g_mod_kill_bfg_laser";
break;
case MOD_DUAL:
base = "$g_mod_kill_bfg_blast";
break;
case MOD_HANDGRENADE:
base = "$g_mod_kill_handgrenade";
break;
case MOD_HG_SPLASH:
base = "$g_mod_kill_handgrenade_splash";
break;
case MOD_HELD_GRENADE:
base = "$g_mod_kill_held_grenade";
break;
case MOD_TELEFRAG:
case MOD_TELEFRAG_SPAWN:
base = "$g_mod_kill_telefrag";
break;
case MOD_GRAPPLE:
base = "$g_mod_kill_grapple";
break;
// ZOID
default:
base = "$g_mod_kill_generic";
break;
}
// self->enemy = attacker;
// if (attacker && attacker->client)
// {
// switch (mod.id)
// {
// case MOD_BLASTER:
// base = "$g_mod_kill_blaster";
// break;
// case MOD_M3:
// base = "$g_mod_kill_shotgun";
// break;
// case MOD_HC:
// base = "$g_mod_kill_sshotgun";
// break;
// case MOD_MP5:
// base = "$g_mod_kill_machinegun";
// break;
// case MOD_M4:
// base = "$g_mod_kill_chaingun";
// break;
// case MOD_GRENADE:
// base = "$g_mod_kill_grenade";
// break;
// case MOD_G_SPLASH:
// base = "$g_mod_kill_grenade_splash";
// break;
// case MOD_SNIPER:
// base = "$g_mod_kill_rocket";
// break;
// case MOD_KNIFE:
// base = "$g_mod_kill_rocket_splash";
// break;
// case MOD_HYPERBLASTER:
// base = "$g_mod_kill_hyperblaster";
// break;
// case MOD_KNIFE_THROWN:
// base = "$g_mod_kill_railgun";
// break;
// case MOD_MK23:
// base = "$g_mod_kill_bfg_laser";
// break;
// case MOD_DUAL:
// base = "$g_mod_kill_bfg_blast";
// break;
// case MOD_HANDGRENADE:
// base = "$g_mod_kill_handgrenade";
// break;
// case MOD_HG_SPLASH:
// base = "$g_mod_kill_handgrenade_splash";
// break;
// case MOD_HELD_GRENADE:
// base = "$g_mod_kill_held_grenade";
// break;
// case MOD_TELEFRAG:
// case MOD_TELEFRAG_SPAWN:
// base = "$g_mod_kill_telefrag";
// break;
// case MOD_GRAPPLE:
// base = "$g_mod_kill_grapple";
// break;
// // ZOID
// default:
// base = "$g_mod_kill_generic";
// break;
// }
gi.LocBroadcast_Print(PRINT_MEDIUM, base, self->client->pers.netname, attacker->client->pers.netname);
//gi.LocBroadcast_Print(PRINT_MEDIUM, base, self->client->pers.netname, attacker->client->pers.netname);
if (G_TeamplayEnabled())
{
// ZOID
// if at start and same team, clear.
// [Paril-KEX] moved here so it's not an outlier in player_die.
if (mod.id == MOD_TELEFRAG_SPAWN &&
self->client->resp.ctf_state < 2 &&
self->client->resp.ctf_team == attacker->client->resp.ctf_team)
{
self->client->resp.ctf_state = 0;
return;
}
}
// ROGUE
if (gamerules->integer)
{
if (DMGame.Score)
{
if (mod.friendly_fire)
{
if (!mod.no_point_loss)
DMGame.Score(attacker, self, -1, mod);
}
else
DMGame.Score(attacker, self, 1, mod);
}
return;
}
// ROGUE
// void TossClientWeapon(edict_t *self)
// {
// gitem_t *item;
// edict_t *drop;
// bool quad;
// // RAFAEL
// bool quadfire;
// // RAFAEL
// float spread;
if (deathmatch->integer)
{
if (mod.friendly_fire)
{
if (!mod.no_point_loss)
{
attacker->client->resp.score--;
// if (!deathmatch->integer)
// return;
if (teamplay->integer)
G_AdjustTeamScore(attacker->client->resp.ctf_team, -1);
}
}
else
{
attacker->client->resp.score++;
// item = self->client->pers.weapon;
// if (item && g_instagib->integer)
// item = nullptr;
// if (item && !self->client->pers.inventory[self->client->pers.weapon->ammo])
// item = nullptr;
// if (item && !item->drop)
// item = nullptr;
if (teamplay->integer)
G_AdjustTeamScore(attacker->client->resp.ctf_team, 1);
}
}
else if (!coop->integer)
self->client->resp.score--;
// if (g_dm_no_quad_drop->integer)
// quad = false;
// else
// quad = (self->client->quad_time > (level.time + 1_sec));
return;
}
// // RAFAEL
// if (g_dm_no_quadfire_drop->integer)
// quadfire = false;
// else
// quadfire = (self->client->quadfire_time > (level.time + 1_sec));
// // RAFAEL
gi.LocBroadcast_Print(PRINT_MEDIUM, "$g_mod_generic_died", self->client->pers.netname);
if (deathmatch->integer && !mod.no_point_loss)
// ROGUE
{
if (gamerules->integer)
{
if (DMGame.Score)
{
DMGame.Score(self, self, -1, mod);
}
return;
}
else
{
self->client->resp.score--;
// if (item && quad)
// spread = 22.5;
// // RAFAEL
// else if (item && quadfire)
// spread = 12.5;
// // RAFAEL
// else
// spread = 0.0;
if (teamplay->integer)
G_AdjustTeamScore(attacker->client->resp.ctf_team, -1);
}
}
// ROGUE
}
void TossClientWeapon(edict_t *self)
{
gitem_t *item;
edict_t *drop;
bool quad;
// RAFAEL
bool quadfire;
// RAFAEL
float spread;
if (!deathmatch->integer)
return;
item = self->client->pers.weapon;
if (item && g_instagib->integer)
item = nullptr;
if (item && !self->client->pers.inventory[self->client->pers.weapon->ammo])
item = nullptr;
if (item && !item->drop)
item = nullptr;
if (g_dm_no_quad_drop->integer)
quad = false;
else
quad = (self->client->quad_time > (level.time + 1_sec));
// RAFAEL
if (g_dm_no_quadfire_drop->integer)
quadfire = false;
else
quadfire = (self->client->quadfire_time > (level.time + 1_sec));
// RAFAEL
if (item && quad)
spread = 22.5;
// RAFAEL
else if (item && quadfire)
spread = 12.5;
// RAFAEL
else
spread = 0.0;
if (item)
{
self->client->v_angle[YAW] -= spread;
drop = Drop_Item(self, item);
self->client->v_angle[YAW] += spread;
drop->spawnflags |= SPAWNFLAG_ITEM_DROPPED_PLAYER;
drop->spawnflags &= ~SPAWNFLAG_ITEM_DROPPED;
drop->svflags &= ~SVF_INSTANCED;
}
// if (item)
// {
// self->client->v_angle[YAW] -= spread;
// drop = Drop_Item(self, item);
// self->client->v_angle[YAW] += spread;
// drop->spawnflags |= SPAWNFLAG_ITEM_DROPPED_PLAYER;
// drop->spawnflags &= ~SPAWNFLAG_ITEM_DROPPED;
// drop->svflags &= ~SVF_INSTANCED;
// }
// if (quad)
// {

View file

@ -34,7 +34,7 @@
namespace fmt = std;
#define FMT_STRING(s) s
#else
#include <fmt/format.h>
//#include <fmt/format.h>
#endif
struct g_fmt_data_t {