]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/mutators/gamemode_cts.qc
One small hook for a plumber, one giant mutator file for Xonokind
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / mutators / gamemode_cts.qc
index aa5a936e7f3f3c74e48e564aaa0597afa5cd1cfd..bdaee8c314f66eeb1595a261bca15b31f6df5285 100644 (file)
@@ -1,5 +1,4 @@
 #include "gamemode_cts.qh"
-#include "../_.qh"
 
 #include "gamemode.qh"
 
@@ -8,7 +7,7 @@
 // legacy bot roles
 .float race_checkpoint;
 void havocbot_role_cts()
-{
+{SELFPARAM();
        if(self.deadflag != DEAD_NO)
                return;
 
@@ -56,8 +55,8 @@ void cts_EventLog(string mode, entity actor) // use an alias for easy changing a
                GameLogEcho(strcat(":cts:", mode, ":", ((actor != world) ? (strcat(":", ftos(actor.playerid))) : "")));
 }
 
-MUTATOR_HOOKFUNCTION(cts_PlayerPhysics)
-{
+MUTATOR_HOOKFUNCTION(ctsPlayerPhysics)
+{SELFPARAM();
        // force kbd movement for fairness
        float wishspeed;
        vector wishvel;
@@ -107,7 +106,7 @@ MUTATOR_HOOKFUNCTION(cts_PlayerPhysics)
        return false;
 }
 
-MUTATOR_HOOKFUNCTION(cts_ResetMap)
+MUTATOR_HOOKFUNCTION(cts, reset_map_global)
 {
        float s;
 
@@ -141,8 +140,8 @@ MUTATOR_HOOKFUNCTION(cts_ResetMap)
        return false;
 }
 
-MUTATOR_HOOKFUNCTION(cts_PlayerPreThink)
-{
+MUTATOR_HOOKFUNCTION(ctsPlayerPreThink)
+{SELFPARAM();
        if(IS_SPEC(self) || IS_OBSERVER(self))
        if(g_race_qualifying)
        if(msg_entity.enemy.race_laptime)
@@ -151,8 +150,8 @@ MUTATOR_HOOKFUNCTION(cts_PlayerPreThink)
        return false;
 }
 
-MUTATOR_HOOKFUNCTION(cts_ClientConnect)
-{
+MUTATOR_HOOKFUNCTION(ctsClientConnect)
+{SELFPARAM();
        race_PreparePlayer();
        self.race_checkpoint = -1;
 
@@ -178,8 +177,8 @@ MUTATOR_HOOKFUNCTION(cts_ClientConnect)
        return false;
 }
 
-MUTATOR_HOOKFUNCTION(cts_MakePlayerObserver)
-{
+MUTATOR_HOOKFUNCTION(ctsMakePlayerObserver)
+{SELFPARAM();
        if(PlayerScore_Add(self, SP_RACE_FASTEST, 0))
                self.frags = FRAGS_LMS_LOSER;
        else
@@ -191,8 +190,8 @@ MUTATOR_HOOKFUNCTION(cts_MakePlayerObserver)
        return false;
 }
 
-MUTATOR_HOOKFUNCTION(cts_PlayerSpawn)
-{
+MUTATOR_HOOKFUNCTION(ctsPlayerSpawn)
+{SELFPARAM();
        if(spawn_spot.target == "")
                // Emergency: this wasn't a real spawnpoint. Can this ever happen?
                race_PreparePlayer();
@@ -206,8 +205,8 @@ MUTATOR_HOOKFUNCTION(cts_PlayerSpawn)
        return false;
 }
 
-MUTATOR_HOOKFUNCTION(cts_PutClientInServer)
-{
+MUTATOR_HOOKFUNCTION(ctsPutClientInServer)
+{SELFPARAM();
        if(IS_PLAYER(self))
        if(!gameover)
        {
@@ -221,21 +220,21 @@ MUTATOR_HOOKFUNCTION(cts_PutClientInServer)
        return false;
 }
 
-MUTATOR_HOOKFUNCTION(cts_PlayerDies)
-{
+MUTATOR_HOOKFUNCTION(ctsPlayerDies)
+{SELFPARAM();
        self.respawn_flags |= RESPAWN_FORCE;
        race_AbandonRaceCheck(self);
        return false;
 }
 
-MUTATOR_HOOKFUNCTION(cts_BotRoles)
-{
+MUTATOR_HOOKFUNCTION(cts, HavocBot_ChooseRole)
+{SELFPARAM();
        self.havocbot_role = havocbot_role_cts;
        return true;
 }
 
-MUTATOR_HOOKFUNCTION(cts_PlayerPostThink)
-{
+MUTATOR_HOOKFUNCTION(cts, GetPressedKeys)
+{SELFPARAM();
        if(self.cvar_cl_allow_uidtracking == 1 && self.cvar_cl_allow_uid2name == 1)
        {
                if (!self.stored_netname)
@@ -251,35 +250,35 @@ MUTATOR_HOOKFUNCTION(cts_PlayerPostThink)
        return false;
 }
 
-MUTATOR_HOOKFUNCTION(cts_ForbidThrowing)
+MUTATOR_HOOKFUNCTION(cts, ForbidThrowCurrentWeapon)
 {
        // no weapon dropping in CTS
        return true;
 }
 
-MUTATOR_HOOKFUNCTION(cts_FilterItem)
-{
+MUTATOR_HOOKFUNCTION(ctsFilterItem)
+{SELFPARAM();
        if(self.classname == "droppedweapon")
                return true;
 
        return false;
 }
 
-MUTATOR_HOOKFUNCTION(cts_PlayerDamage)
+MUTATOR_HOOKFUNCTION(cts, PlayerDamage_Calculate)
 {
-       if(frag_target == frag_attacker || frag_deathtype == DEATH_FALL)
+       if(frag_target == frag_attacker || frag_deathtype == DEATH_FALL.m_id)
        if(!autocvar_g_cts_selfdamage)
                frag_damage = 0;
 
        return false;
 }
 
-MUTATOR_HOOKFUNCTION(cts_ForbidClearPlayerScore)
+MUTATOR_HOOKFUNCTION(cts, ForbidPlayerScore_Clear)
 {
        return true; // in CTS, you don't lose score by observing
 }
 
-MUTATOR_HOOKFUNCTION(cts_SetMods)
+MUTATOR_HOOKFUNCTION(cts, SetModname)
 {
        g_cloaked = 1; // always enable cloak in CTS
 
@@ -291,23 +290,11 @@ void cts_Initialize()
        cts_ScoreRules();
 }
 
-MUTATOR_DEFINITION(gamemode_cts)
+REGISTER_MUTATOR(cts, g_cts)
 {
-       MUTATOR_HOOK(PlayerPhysics, cts_PlayerPhysics, CBC_ORDER_ANY);
-       MUTATOR_HOOK(reset_map_global, cts_ResetMap, CBC_ORDER_ANY);
-       MUTATOR_HOOK(PlayerPreThink, cts_PlayerPreThink, CBC_ORDER_ANY);
-       MUTATOR_HOOK(ClientConnect, cts_ClientConnect, CBC_ORDER_ANY);
-       MUTATOR_HOOK(MakePlayerObserver, cts_MakePlayerObserver, CBC_ORDER_ANY);
-       MUTATOR_HOOK(PlayerSpawn, cts_PlayerSpawn, CBC_ORDER_ANY);
-       MUTATOR_HOOK(PutClientInServer, cts_PutClientInServer, CBC_ORDER_ANY);
-       MUTATOR_HOOK(PlayerDies, cts_PlayerDies, CBC_ORDER_ANY);
-       MUTATOR_HOOK(HavocBot_ChooseRole, cts_BotRoles, CBC_ORDER_ANY);
-       MUTATOR_HOOK(GetPressedKeys, cts_PlayerPostThink, CBC_ORDER_ANY);
-       MUTATOR_HOOK(ForbidThrowCurrentWeapon, cts_ForbidThrowing, CBC_ORDER_ANY);
-       MUTATOR_HOOK(FilterItem, cts_FilterItem, CBC_ORDER_ANY);
-       MUTATOR_HOOK(PlayerDamage_Calculate, cts_PlayerDamage, CBC_ORDER_ANY);
-       MUTATOR_HOOK(ForbidPlayerScore_Clear, cts_ForbidClearPlayerScore, CBC_ORDER_ANY);
-       MUTATOR_HOOK(SetModname, cts_SetMods, CBC_ORDER_ANY);
+       g_race_qualifying = 1;
+       independent_players = 1;
+       SetLimits(0, 0, 0, -1);
 
        MUTATOR_ONADD
        {
@@ -325,7 +312,7 @@ MUTATOR_DEFINITION(gamemode_cts)
 
        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;
        }