X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fmutators%2Fgamemode_freezetag.qc;h=85ef5119f85e6d85cde9de45be211f351a6b3f5e;hb=f9e4718d229df569d7878259d3db2bd2df1e7b91;hp=d6285cdafd112509b99e8c9ffcacd6b0430e3abe;hpb=cfc1a19f21842b65814c855082b059b22ff0c392;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/mutators/gamemode_freezetag.qc b/qcsrc/server/mutators/gamemode_freezetag.qc index d6285cdaf..85ef5119f 100644 --- a/qcsrc/server/mutators/gamemode_freezetag.qc +++ b/qcsrc/server/mutators/gamemode_freezetag.qc @@ -1,8 +1,6 @@ -.float freezetag_frozen_time; -.float freezetag_frozen_timeout; -const float ICE_MAX_ALPHA = 1; -const float ICE_MIN_ALPHA = 0.1; -float freezetag_teams; +#include "gamemode_freezetag.qh" + +#include "gamemode.qh" const float SP_FREEZETAG_REVIVALS = 4; void freezetag_ScoreRules(float teams) @@ -135,7 +133,7 @@ float freezetag_CheckWinner() } entity freezetag_LastPlayerForTeam() -{ +{SELFPARAM(); entity pl, last_pl = world; FOR_EACH_PLAYER(pl) { @@ -163,7 +161,7 @@ void freezetag_LastPlayerForTeam_Notify() } void freezetag_Add_Score(entity attacker) -{ +{SELFPARAM(); if(attacker == self) { // you froze your own dumb self @@ -181,7 +179,7 @@ void freezetag_Add_Score(entity attacker) } void freezetag_Freeze(entity attacker) -{ +{SELFPARAM(); if(self.frozen) return; @@ -196,7 +194,7 @@ void freezetag_Freeze(entity attacker) } void freezetag_Unfreeze(entity attacker) -{ +{SELFPARAM(); self.freezetag_frozen_time = 0; self.freezetag_frozen_timeout = 0; @@ -219,7 +217,7 @@ void() havocbot_role_ft_freeing; void() havocbot_role_ft_offense; void havocbot_goalrating_freeplayers(float ratingscale, vector org, float sradius) -{ +{SELFPARAM(); entity head; float distance; @@ -245,7 +243,7 @@ void havocbot_goalrating_freeplayers(float ratingscale, vector org, float sradiu } void havocbot_role_ft_offense() -{ +{SELFPARAM(); entity head; float unfrozen; @@ -266,7 +264,7 @@ void havocbot_role_ft_offense() // If only one left on team or if role has timed out then start trying to free players. if (((unfrozen == 0) && (!self.frozen)) || (time > self.havocbot_role_timeout)) { - dprint("changing role to freeing\n"); + LOG_TRACE("changing role to freeing\n"); self.havocbot_role = havocbot_role_ft_freeing; self.havocbot_role_timeout = 0; return; @@ -286,7 +284,7 @@ void havocbot_role_ft_offense() } void havocbot_role_ft_freeing() -{ +{SELFPARAM(); if(self.deadflag != DEAD_NO) return; @@ -295,7 +293,7 @@ void havocbot_role_ft_freeing() if (time > self.havocbot_role_timeout) { - dprint("changing role to offense\n"); + LOG_TRACE("changing role to offense\n"); self.havocbot_role = havocbot_role_ft_offense; self.havocbot_role_timeout = 0; return; @@ -320,7 +318,7 @@ void havocbot_role_ft_freeing() // ============== MUTATOR_HOOKFUNCTION(freezetag_RemovePlayer) -{ +{SELFPARAM(); self.health = 0; // neccessary to update correctly alive stats if(!self.frozen) freezetag_LastPlayerForTeam_Notify(); @@ -330,7 +328,7 @@ MUTATOR_HOOKFUNCTION(freezetag_RemovePlayer) } MUTATOR_HOOKFUNCTION(freezetag_PlayerDies) -{ +{SELFPARAM(); if(round_handler_IsActive()) if(round_handler_CountdownRunning()) { @@ -384,7 +382,7 @@ MUTATOR_HOOKFUNCTION(freezetag_PlayerDies) } MUTATOR_HOOKFUNCTION(freezetag_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 @@ -407,13 +405,15 @@ MUTATOR_HOOKFUNCTION(freezetag_PlayerSpawn) } MUTATOR_HOOKFUNCTION(freezetag_reset_map_players) -{ - FOR_EACH_PLAYER(self) +{SELFPARAM(); + entity e; + FOR_EACH_PLAYER(e) { - self.killcount = 0; - self.freezetag_frozen_timeout = -1; + e.killcount = 0; + e.freezetag_frozen_timeout = -1; + setself(e); PutClientInServer(); - self.freezetag_frozen_timeout = 0; + e.freezetag_frozen_timeout = 0; } freezetag_count_alive_players(); return 1; @@ -425,9 +425,8 @@ MUTATOR_HOOKFUNCTION(freezetag_GiveFragsForKill) return 1; } -.float reviving; // temp var MUTATOR_HOOKFUNCTION(freezetag_PlayerPreThink) -{ +{SELFPARAM(); float n; if(gameover) @@ -526,8 +525,23 @@ MUTATOR_HOOKFUNCTION(freezetag_PlayerPreThink) return 1; } -MUTATOR_HOOKFUNCTION(freezetag_BotRoles) +MUTATOR_HOOKFUNCTION(freezetag_SetStartItems) { + start_items &= ~IT_UNLIMITED_AMMO; + //start_health = warmup_start_health = cvar("g_lms_start_health"); + //start_armorvalue = warmup_start_armorvalue = cvar("g_lms_start_armor"); + start_ammo_shells = warmup_start_ammo_shells = cvar("g_lms_start_ammo_shells"); + start_ammo_nails = warmup_start_ammo_nails = cvar("g_lms_start_ammo_nails"); + start_ammo_rockets = warmup_start_ammo_rockets = cvar("g_lms_start_ammo_rockets"); + start_ammo_cells = warmup_start_ammo_cells = cvar("g_lms_start_ammo_cells"); + start_ammo_plasma = warmup_start_ammo_plasma = cvar("g_lms_start_ammo_plasma"); + start_ammo_fuel = warmup_start_ammo_fuel = cvar("g_lms_start_ammo_fuel"); + + return 0; +} + +MUTATOR_HOOKFUNCTION(freezetag_BotRoles) +{SELFPARAM(); if (!self.deadflag) { if (random() < 0.5) @@ -542,7 +556,7 @@ MUTATOR_HOOKFUNCTION(freezetag_BotRoles) MUTATOR_HOOKFUNCTION(freezetag_GetTeamCount) { ret_float = freezetag_teams; - return 0; + return false; } void freezetag_Initialize() @@ -573,6 +587,7 @@ MUTATOR_DEFINITION(gamemode_freezetag) 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); @@ -592,7 +607,7 @@ MUTATOR_DEFINITION(gamemode_freezetag) MUTATOR_ONREMOVE { - print("This is a game type and it cannot be removed at runtime."); + LOG_INFO("This is a game type and it cannot be removed at runtime."); return -1; }