Some basic messaging cleanup

This commit is contained in:
Dino 2023-09-03 10:32:06 -04:00
parent f45d9e195a
commit 6dc95aed23
3 changed files with 65 additions and 45 deletions

View file

@ -964,7 +964,7 @@ void GetAmmo( edict_t *ent, char *buf )
{
int ammo;
if( IS_ALIVE(ent) && ent->client->weapon )
if( IS_ALIVE(ent) && ent->client->pers.weapon )
{
switch( ent->client->pers.weapon->id )
{
@ -1055,3 +1055,38 @@ void GetNearbyTeammates( edict_t *self, char *buf )
Q_strncatz( buf, nearby_teammates[l]->client->pers.netname, PARSE_BUFSIZE );
}
}
// Messaging adjectives/pronouns
// Borrowed from https://github.com/VortexQuake2/Vortex, thank you!
char *GetPossesiveAdjective(edict_t *ent) {
int gender = ent->client->pers.gender;
char *info;
switch( gender ) {
case GENDER_MALE:
return "his";
case GENDER_FEMALE:
return "her";
case GENDER_NEUTRAL:
return "its";
default:
return "their";
}
}
char *GetReflexivePronoun(edict_t *ent) {
int gender = ent->client->pers.gender;
char *info;
switch( gender ) {
case GENDER_MALE:
return "himself";
case GENDER_FEMALE:
return "herself";
case GENDER_NEUTRAL:
return "itself";
default:
return "themselves";
}
}

View file

@ -1649,6 +1649,10 @@ extern int locOfDeath;
extern int stopAP;
void TransparentListSet (solid_t solid_type);
char *GetPossesiveAdjective(edict_t *ent);
char *GetReflexivePronoun(edict_t *ent);
// Action Add end
extern edict_t *g_edicts;
@ -2815,6 +2819,7 @@ struct client_persistant_t
// Action Add
gender_t gender; // For message pronouns, etc.
gitem_t *chosenItem; // item for teamplay
gitem_t *chosenWeapon; // weapon for teamplay
int32_t mk23_mode; // firing mode, semi or auto
@ -2857,8 +2862,6 @@ struct client_respawn_t
// ZOID
// Action Add
// Number of team kills this game
gender_t gender;
int32_t team_kills;
int32_t team_wounds;

View file

@ -515,91 +515,73 @@ void ClientObituary(edict_t *self, edict_t *inflictor, edict_t *attacker, mod_t
{
switch (mod.id) {
case MOD_HELD_GRENADE:
message = "tried to put the pin back in";
snprintf(message, sizeof(message), "%s tried to put the pin back in", self->client->pers.netname);
break;
case MOD_HG_SPLASH:
if (self->client->pers.gender == GENDER_MALE)
message = "didn't throw his grenade far enough";
else if (self->client->pers.gender == GENDER_FEMALE)
message = "didn't throw her grenade far enough";
else
message = "didn't throw its grenade far enough";
snprintf(message, sizeof(message), "%s didn't throw %s grenade far enough", self->client->pers.netname, GetPossesiveAdjective(self));
break;
case MOD_G_SPLASH:
if (self->client->pers.gender == GENDER_MALE)
message = "tripped on his own grenade";
else if (self->client->pers.gender == GENDER_FEMALE)
message = "tripped on her own grenade";
else
message = "tripped on its own grenade";
snprintf(message, sizeof(message), "%s tripped on %s own grenade", self->client->pers.netname, GetPossesiveAdjective(self));
break;
default:
if (self->client->pers.gender == GENDER_MALE)
message = "killed himself";
else if (self->client->pers.gender == GENDER_FEMALE)
message = "killed herself";
else
message = "killed itself";
snprintf(message, sizeof(message), "%s killed %s", self->client->pers.netname, GetReflexivePronoun(self));
break;
}
}
if (!message) {
switch (mod) {
switch (mod.id) {
case MOD_BREAKINGGLASS:
if( self->client->push_timeout > 40 )
special_message = "was thrown through a window by";
snprintf(special_message, sizeof(special_message), "%s was thrown through a window by %s",
self->client->pers.netname, attacker->client->pers.netname);
message = "ate too much glass";
break;
case MOD_SUICIDE:
message = "is done with the world";
snprintf(message, sizeof(message), "%s is done with the world", self->client->pers.netname);
break;
case MOD_FALLING:
if( self->client->push_timeout )
special_message = "was taught how to fly by";
snprintf(special_message, sizeof(special_message), "%s was taught how to fly by %s", self->client->pers.netname, attacker->client->pers.netname);
//message = "hit the ground hard, real hard";
if (self->client->pers.gender == GENDER_MALE)
message = "plummets to his death";
else if (self->client->pers.gender == GENDER_FEMALE)
message = "plummets to her death";
else
message = "plummets to its death";
snprintf(message, sizeof(message), "%s plummets to %s death", self->client->pers.netname, GetPossesiveAdjective(self));
break;
case MOD_CRUSH:
message = "was flattened";
snprintf(message, sizeof(message), "%s was flattened", self->client->pers.netname);
break;
case MOD_WATER:
message = "sank like a rock";
snprintf(message, sizeof(message), "%s sank like a rock", self->client->pers.netname);
break;
case MOD_SLIME:
if( self->client->push_timeout )
special_message = "melted thanks to";
message = "melted";
snprintf(special_message, sizeof(special_message), "%s melted thanks to %s", self->client->pers.netname, attacker->client->pers.netname);
snprintf(message, sizeof(message), "%s melted", self->client->pers.netname);
break;
case MOD_LAVA:
if( self->client->push_timeout )
special_message = "was drop-kicked into the lava by";
message = "does a back flip into the lava";
snprintf(special_message, sizeof(special_message), "%s was drop-kicked into the lava by %s", self->client->pers.netname, attacker->client->pers.netname);
snprintf(message, sizeof(message), "%s does a back flip into the lava", self->client->pers.netname);
break;
case MOD_EXPLOSIVE:
case MOD_BARREL:
message = "blew up";
snprintf(message, sizeof(message), "%s blew up", self->client->pers.netname);
break;
case MOD_EXIT:
message = "found a way out";
snprintf(message, sizeof(message), "%s found a way out", self->client->pers.netname);
break;
case MOD_TARGET_LASER:
message = "saw the light";
snprintf(message, sizeof(message), "%s saw the light", self->client->pers.netname);
break;
case MOD_TARGET_BLASTER:
snprintf(message, sizeof(message), "%s got blasted", self->client->pers.netname);
message = "got blasted";
break;
case MOD_BOMB:
case MOD_SPLASH:
case MOD_TRIGGER_HURT:
if( self->client->push_timeout )
special_message = "was shoved off the edge by";
message = "was in the wrong place";
snprintf(special_message, sizeof(special_message), "%s was shoved off the edge by %s", self->client->pers.netname, attacker->client->pers.netname);
snprintf(message, sizeof(message), "%s was in the wrong place", self->client->pers.netname);
break;
}
}
@ -626,7 +608,7 @@ void ClientObituary(edict_t *self, edict_t *inflictor, edict_t *attacker, mod_t
//MODIFIED FOR FF -FB
if (OnSameTeam(self, self->client->attacker))
{
if (!DMFLAGS(DF_NO_FRIENDLY_FIRE) && (!teamplay->value || team_round_going || !ff_afterround->value)) {
if (!g_friendly_fire->integer && (!teamplay->value || team_round_going || !ff_afterround->value)) {
self->enemy = self->client->attacker;
Add_TeamKill(self->client->attacker);
Subtract_Frag(self->client->attacker); //attacker->client->resp.score--;
@ -672,7 +654,7 @@ void ClientObituary(edict_t *self, edict_t *inflictor, edict_t *attacker, mod_t
self->enemy = attacker;
if (attacker && attacker->client)
{
switch (mod) {
switch (mod.id) {
case MOD_MK23: // zucc
switch (loc) {
case LOC_HDAM: