{
return strcat( // fteqcc sucks
"ping pl name | ",
- "-teams,race,lms/kills -teams,lms/deaths -teams,lms,race,ka/suicides -race,dm,tdm,ka/frags ", // tdm already has this in "score"
+ "-teams,race,lms/kills +freezetag/kills -teams,lms/deaths +freezetag/deaths -teams,lms,race,ka/suicides +freezetag/suicides -race,dm,tdm,ka/frags ", // tdm already has this in "score"
"+ctf/caps +ctf/pickups +ctf/fckills +ctf/returns ",
"+lms/lives +lms/rank ",
"+kh/caps +kh/pushes +kh/destroyed ",
"?+race/laps ?+race/time ?+race/fastest ",
- "+as/objectives +nexball/faults +nexball/goals +ka/drops +ka/pickups +ka/bckills ",
+ "+as/objectives +nexball/faults +nexball/goals +ka/drops +ka/pickups +ka/bckills +freezetag/revivals ",
"-lms,race,nexball/score");
}
{
precache_model("models/ice/ice.md3");
warmup = time + autocvar_g_start_delay + autocvar_g_freezetag_warmup;
+ ScoreRules_freezetag();
}
void freezetag_CheckWinner()
self.nextthink = time;
}
-void freezetag_Freeze()
+void freezetag_Freeze(entity attacker)
{
self.freezetag_frozen = 1;
{
WaypointSprite_UpdateTeamRadar(self.waypointsprite_attached, RADARICON_WAYPOINT, '0.25 0.90 1');
}
+
+ if(attacker == self)
+ {
+ // you froze your own dumb self
+ // counted as "suicide" already
+ PlayerScore_Add(self, SP_SCORE, -1);
+ }
+ else if(attacker.classname == "player")
+ {
+ // got frozen by an enemy
+ // counted as "kill" and "death" already
+ PlayerScore_Add(self, SP_SCORE, -1);
+ PlayerScore_Add(attacker, SP_SCORE, +1);
+ }
+ else
+ {
+ // nothing - got frozen by the game type rules themselves
+ }
}
-void freezetag_Unfreeze()
+void freezetag_Unfreeze(entity attacker)
{
self.freezetag_frozen = 0;
+ PlayerScore_Add(attacker, SP_FREEZETAG_REVIVAL, +1);
+ PlayerScore_Add(attacker, SP_SCORE, +1);
+
// remove the ice block
entity ice;
for(ice = world; (ice = find(ice, classname, "freezetag_ice")); ) if(ice.owner == self)
--pinkalive;
--totalalive;
- freezetag_Freeze();
+ freezetag_Freeze(frag_attacker);
}
if(frag_attacker.classname == STR_PLAYER)
if(warmup && time > warmup) // spawn too late, freeze player
{
centerprint(self, "^1You spawned after the round started, you'll spawn as frozen.\n");
- freezetag_Freeze();
+ freezetag_Freeze(world);
}
return 1;
ScoreInfo_SetLabel_PlayerScore(SP_KEEPAWAY_DROPS, "drops", SFL_LOWER_IS_BETTER);
ScoreRules_basics_end();
}
+
+// FreezeTag stuff
+#define SP_FREEZETAG_REVIVALS 4
+void ScoreRules_freezetag()
+{
+ ScoreRules_basics(0, SFL_SORT_PRIO_PRIMARY, SFL_SORT_PRIO_PRIMARY, TRUE); // SFL_SORT_PRIO_PRIMARY
+ ScoreInfo_SetLabel_PlayerScore(SP_FREEZETAG_REVIVALS, "revivals", 0);
+ ScoreRules_basics_end();
+}