// Hook Functions
// ==============
-MUTATOR_HOOKFUNCTION(freezetag_RemovePlayer)
+void ft_RemovePlayer()
{SELFPARAM();
self.health = 0; // neccessary to update correctly alive stats
if(!self.frozen)
freezetag_LastPlayerForTeam_Notify();
freezetag_Unfreeze(world);
freezetag_count_alive_players();
+}
+
+MUTATOR_HOOKFUNCTION(ft, ClientDisconnect)
+{SELFPARAM();
+ ft_RemovePlayer();
+ return 1;
+}
+
+MUTATOR_HOOKFUNCTION(ft, MakePlayerObserver)
+{SELFPARAM();
+ ft_RemovePlayer();
return 1;
}
-MUTATOR_HOOKFUNCTION(freezetag_PlayerDies)
+MUTATOR_HOOKFUNCTION(ft, PlayerDies)
{SELFPARAM();
if(round_handler_IsActive())
if(round_handler_CountdownRunning())
return 1;
}
-MUTATOR_HOOKFUNCTION(freezetag_PlayerSpawn)
+MUTATOR_HOOKFUNCTION(ft, PlayerSpawn)
{SELFPARAM();
if(self.freezetag_frozen_timeout == -1) // if PlayerSpawn is called by reset_map_players
return 1; // do nothing, round is starting right now
return 1;
}
-MUTATOR_HOOKFUNCTION(freezetag_reset_map_players)
+MUTATOR_HOOKFUNCTION(ft, reset_map_players)
{SELFPARAM();
entity e;
FOR_EACH_PLAYER(e)
return 1;
}
-MUTATOR_HOOKFUNCTION(freezetag_GiveFragsForKill)
+MUTATOR_HOOKFUNCTION(ft, GiveFragsForKill, CBC_ORDER_FIRST)
{
frag_score = 0; // no frags counted in Freeze Tag
return 1;
}
-MUTATOR_HOOKFUNCTION(freezetag_PlayerPreThink)
+MUTATOR_HOOKFUNCTION(ft, PlayerPreThink, CBC_ORDER_FIRST)
{SELFPARAM();
float n;
return 1;
}
-MUTATOR_HOOKFUNCTION(freezetag_SetStartItems)
+MUTATOR_HOOKFUNCTION(ft, SetStartItems)
{
start_items &= ~IT_UNLIMITED_AMMO;
//start_health = warmup_start_health = cvar("g_lms_start_health");
return 0;
}
-MUTATOR_HOOKFUNCTION(freezetag_BotRoles)
+MUTATOR_HOOKFUNCTION(ft, HavocBot_ChooseRole)
{SELFPARAM();
if (!self.deadflag)
{
return true;
}
-MUTATOR_HOOKFUNCTION(freezetag_GetTeamCount)
+MUTATOR_HOOKFUNCTION(ft, GetTeamCount, CBC_ORDER_EXCLUSIVE)
{
ret_float = freezetag_teams;
return false;
EliminatedPlayers_Init(freezetag_isEliminated);
}
-MUTATOR_DEFINITION(gamemode_freezetag)
+REGISTER_MUTATOR(ft, g_freezetag)
{
- MUTATOR_HOOK(MakePlayerObserver, freezetag_RemovePlayer, CBC_ORDER_ANY);
- MUTATOR_HOOK(ClientDisconnect, freezetag_RemovePlayer, CBC_ORDER_ANY);
- MUTATOR_HOOK(PlayerDies, freezetag_PlayerDies, CBC_ORDER_ANY);
- MUTATOR_HOOK(PlayerSpawn, freezetag_PlayerSpawn, CBC_ORDER_ANY);
- MUTATOR_HOOK(reset_map_players, freezetag_reset_map_players, CBC_ORDER_ANY);
- MUTATOR_HOOK(GiveFragsForKill, freezetag_GiveFragsForKill, CBC_ORDER_FIRST);
- MUTATOR_HOOK(PlayerPreThink, freezetag_PlayerPreThink, CBC_ORDER_FIRST);
- MUTATOR_HOOK(SetStartItems, freezetag_SetStartItems, CBC_ORDER_ANY);
- MUTATOR_HOOK(HavocBot_ChooseRole, freezetag_BotRoles, CBC_ORDER_ANY);
- MUTATOR_HOOK(GetTeamCount, freezetag_GetTeamCount, CBC_ORDER_EXCLUSIVE);
+ ActivateTeamplay();
+ SetLimits(autocvar_g_freezetag_point_limit, autocvar_g_freezetag_point_leadlimit, -1, -1);
+
+ if(autocvar_g_freezetag_team_spawns)
+ have_team_spawns = -1; // request team spawns
MUTATOR_ONADD
{