ATTRIB(XonoticMapInfoDialog, typeRaceLabel, entity, NULL)
ATTRIB(XonoticMapInfoDialog, typeCTSLabel, entity, NULL)
ATTRIB(XonoticMapInfoDialog, typeNexballLabel, entity, NULL)
+ ATTRIB(XonoticMapInfoDialog, typeFreezetagLabel, entity, NULL)
ATTRIB(XonoticMapInfoDialog, currentMapIndex, float, 0)
ATTRIB(XonoticMapInfoDialog, currentMapBSPName, string, string_null)
me.typeRaceLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_RACE);
me.typeCTSLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_CTS);
me.typeNexballLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_NEXBALL);
+ me.typeFreezetagLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_FREEZETAG);
MapInfo_ClearTemps();
}
if (attacker.isbot)
damage = damage * bound(0.1, (skill + 5) * 0.1, 1);
- if(g_freezetag)
- {
- if(targ.freezetag_frozen == 1)
- {
- damage = 0;
- force = force * cvar("g_freezetag_frozen_force");
- }
- }
-
// nullify damage if teamplay is on
if(deathtype != DEATH_TELEFRAG)
if(attacker.classname == "player")
return 1;
}
+MUTATOR_HOOKFUNCTION(freezetag_PlayerDamage)
+{
+ if(g_freezetag)
+ {
+ if(frag_target.freezetag_frozen == 1)
+ {
+ damage_take = 0;
+ damage_save = 0;
+ damage_force = damage_force * cvar("g_freezetag_frozen_force");
+ }
+ }
+ return 1;
+}
+
MUTATOR_DEFINITION(gamemode_freezetag)
{
MUTATOR_HOOK(MakePlayerObserver, freezetag_RemovePlayer, CBC_ORDER_ANY);
MUTATOR_HOOK(GiveFragsForKill, freezetag_GiveFragsForKill, CBC_ORDER_FIRST);
MUTATOR_HOOK(PlayerPreThink, freezetag_PlayerPreThink, CBC_ORDER_FIRST);
MUTATOR_HOOK(PlayerPhysics, freezetag_PlayerPhysics, CBC_ORDER_FIRST);
+ MUTATOR_HOOK(PlayerDamage, freezetag_PlayerDamage, CBC_ORDER_ANY);
MUTATOR_ONADD
{