WriteByte(MSG_ALL, type);
}
-// TODO: writespectatable?
// Function is used to send a generic centerprint whose content CSQC gets to decide (gentle version or not in the below cases)
void Send_CSQC_Centerprint(entity e, string s1, string s2, float msg, float type)
{
if (clienttype(e) == CLIENTTYPE_REAL)
{
msg_entity = e;
- WriteByte(MSG_ONE, SVC_TEMPENTITY);
- WriteByte(MSG_ONE, TE_CSQC_NOTIFY);
- WriteByte(MSG_ONE, CSQC_CENTERPRINT);
- WriteString(MSG_ONE, s1);
- WriteString(MSG_ONE, s2);
- WriteShort(MSG_ONE, msg);
- WriteByte(MSG_ONE, type);
+ WRITESPECTATABLE_MSG_ONE({
+ WriteByte(MSG_ONE, SVC_TEMPENTITY);
+ WriteByte(MSG_ONE, TE_CSQC_NOTIFY);
+ WriteByte(MSG_ONE, CSQC_CENTERPRINT);
+ WriteString(MSG_ONE, s1);
+ WriteString(MSG_ONE, s2);
+ WriteShort(MSG_ONE, msg);
+ WriteByte(MSG_ONE, type);
+ });
}
}
msg = ColoredTeamName(targ.team); // TODO: check if needed?
Send_CSQC_Centerprint(targ, msg, "", deathtype, MSG_SUICIDE);
- if(deathtype != DEATH_TEAMCHANGE && deathtype != DEATH_QUIET)
- {
- LogDeath("suicide", deathtype, targ, targ);
- GiveFrags(attacker, targ, -1);
- }
- // TODO: hmm?
- /*
- if (targ.killcount > 2)
- bprint ("^1",s,"^1 faded after a ",ftos(targ.killcount)," point spree\n");
- */
-
- // TODO: wut is this?
- // givefrags for logging apparently?
if(deathtype != DEATH_TEAMCHANGE && deathtype != DEATH_QUIET)
{
LogDeath("suicide", deathtype, targ, targ);
if (targ.killcount > 2)
msg = ftos(targ.killcount);
+ if(teams_matter && deathtype == DEATH_MIRRORDAMAGE)
+ {
+ if(attacker.team == COLOR_TEAM1)
+ deathtype = KILL_TEAM_RED;
+ else
+ deathtype = KILL_TEAM_BLUE;
+ }
+
Send_KillNotification(s, msg, ftos(w), deathtype, MSG_SUICIDE);
}
else if (attacker.classname == "player" || attacker.classname == "gib")
{
if(teams_matter && attacker.team == targ.team)
{
- type = KILL_TEAM;
+ if(attacker.team == COLOR_TEAM1)
+ type = KILL_TEAM_RED;
+ else
+ type = KILL_TEAM_BLUE;
GiveFrags(attacker, targ, -1);
+ Send_CSQC_Centerprint(attacker, s, "", type, MSG_KILL);
+
if (targ.killcount > 2) {
msg = ftos(targ.killcount);
- a = s;
}
+
if (attacker.killcount > 2) {
msg = ftos(attacker.killcount);
type = KILL_TEAM_SPREE;
}
+ Send_KillNotification(a, s, msg, type, MSG_KILL);
attacker.killcount = 0;
LogDeath("tk", deathtype, attacker, targ);
- Send_CSQC_Centerprint(attacker, s, "", type, MSG_KILL);
- Send_KillNotification(a, msg, "", type, MSG_KILL);
}
else
{
{
checkrules_firstblood = TRUE;
Send_KillNotification(a, "", "", KILL_FIRST_BLOOD, MSG_KILL);
- // TODO: make these print at newline if they dont
+ // TODO: make these print a newline if they dont
Send_CSQC_Centerprint(attacker, "", "", KILL_FIRST_BLOOD, MSG_KILL);
Send_CSQC_Centerprint(targ, "", "", KILL_FIRST_VICTIM, MSG_KILL);
}
attacker.taunt_soundtime = time + 1;
// TODO: fix this?
- if (deathtype == DEATH_CUSTOM)
- msg = strcat(deathmessage, " by ^1", msg);
- else if (deathtype == DEATH_HURTTRIGGER && inflictor.message2 != "")
- {
- msg = ftos(strstrofs(inflictor.message2, "#", 0));
- }
- Send_KillNotification(s, a, msg, deathtype, MSG_KILL);
+ if (deathtype == DEATH_CUSTOM)
+ msg = strcat(deathmessage, " by ^1", msg);
+ else if (deathtype == DEATH_HURTTRIGGER && inflictor.message2 != "")
+ {
+ msg = ftos(strstrofs(inflictor.message2, "#", 0));
+ }
+
+ Send_KillNotification(a, s, msg, deathtype, MSG_KILL);
if(g_ctf && targ.flagcarried)
{
if (attacker.killcount > 2) {
Send_KillNotification(a, ftos(attacker.killcount), "", KILL_SPREE, MSG_SPREE);
}
-
- LogDeath("frag", deathtype, attacker, targ);
-
- if (attacker.killcount == 3)
+ else if (attacker.killcount == 3)
{
Send_KillNotification(a, "", "", KILL_SPREE_3, MSG_SPREE);
AnnounceTo(attacker, "03kills");
Send_KillNotification(a, "", "", KILL_SPREE_30, MSG_SPREE);
AnnounceTo(attacker, "30kills");
}
+ LogDeath("frag", deathtype, attacker, targ);
}
}
else
entity damage_targ;
entity damage_inflictor;
entity damage_attacker;
+.float prevhitsound;
void Damage (entity targ, entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force)
{
{
if(damage > 0)
{
- if(targ.BUTTON_CHAT)
- attacker.typehitsound += 1;
- else
- attacker.hitsound += 1;
+ if(attacker.weapon != WEP_ELECTRO && attacker.weapon != WEP_LASER || ((attacker.weapon == WEP_ELECTRO && cvar("g_balance_electro_lightning") || attacker.weapon == WEP_LASER) && attacker.prevhitsound + cvar("sv_hitsound_antispam_time") < time))
+ {
+ if(targ.BUTTON_CHAT)
+ attacker.typehitsound += 1;
+ else
+ attacker.hitsound += 1;
+ attacker.prevhitsound = time;
+ }
damage_goodhits += 1;
damage_gooddamage += damage;