From: TimePath <andrew.hardaker1995@gmail.com>
Date: Thu, 5 Nov 2015 00:53:26 +0000 (+1100)
Subject: Mutators: make cloaked and running_guns mutators
X-Git-Tag: xonotic-v0.8.2~1717
X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=32b91117ed4ed81d1b60cb69000270476ac617e6;p=xonotic%2Fxonotic-data.pk3dir.git

Mutators: make cloaked and running_guns mutators
---

diff --git a/qcsrc/common/mapinfo.qh b/qcsrc/common/mapinfo.qh
index 24674b6d66..04ea78e4c5 100644
--- a/qcsrc/common/mapinfo.qh
+++ b/qcsrc/common/mapinfo.qh
@@ -80,7 +80,7 @@ REGISTER_GAMETYPE(_("Race"),rc,g_race,RACE,false,"","timelimit=20 qualifying_tim
 }
 #define g_race IS_GAMETYPE(RACE)
 
-REGISTER_GAMETYPE(_("Race CTS"),cts,g_cts,CTS,false,"","timelimit=20",_("Race for fastest time."));
+REGISTER_GAMETYPE(_("Race CTS"),cts,g_cts,CTS,false,"cloaked","timelimit=20",_("Race for fastest time."));
 #define g_cts IS_GAMETYPE(CTS)
 
 REGISTER_GAMETYPE(_("Team Deathmatch"),tdm,g_tdm,TEAM_DEATHMATCH,true,"","timelimit=20 pointlimit=50 teams=2 leadlimit=0",_("Help your team score the most frags against the enemy team"))
diff --git a/qcsrc/common/mutators/all.inc b/qcsrc/common/mutators/all.inc
index 21a23b0694..a262cb9bcd 100644
--- a/qcsrc/common/mutators/all.inc
+++ b/qcsrc/common/mutators/all.inc
@@ -10,6 +10,7 @@
 #include "mutator/bloodloss/module.inc"
 #include "mutator/breakablehook/module.inc"
 #include "mutator/campcheck/module.inc"
+#include "mutator/cloaked/module.inc"
 #include "mutator/damagetext/module.inc"
 #include "mutator/dodging/module.inc"
 #include "mutator/hook/module.inc"
@@ -25,6 +26,7 @@
 #include "mutator/random_gravity/module.inc"
 #include "mutator/rocketflying/module.inc"
 #include "mutator/rocketminsta/module.inc"
+#include "mutator/running_guns/module.inc"
 #include "mutator/sandbox/module.inc"
 #include "mutator/spawn_near_teammate/module.inc"
 #include "mutator/touchexplode/module.inc"
diff --git a/qcsrc/common/mutators/mutator/cloaked/cloaked.qc b/qcsrc/common/mutators/mutator/cloaked/cloaked.qc
new file mode 100644
index 0000000000..f8231f784e
--- /dev/null
+++ b/qcsrc/common/mutators/mutator/cloaked/cloaked.qc
@@ -0,0 +1,19 @@
+#ifdef IMPLEMENTATION
+
+REGISTER_MUTATOR(cloaked, cvar("g_cloaked"));
+
+float autocvar_g_balance_cloaked_alpha;
+
+MUTATOR_HOOKFUNCTION(cloaked, SetDefaultAlpha)
+{
+    default_player_alpha = autocvar_g_balance_cloaked_alpha;
+    default_weapon_alpha = default_player_alpha;
+    return true;
+}
+
+MUTATOR_HOOKFUNCTION(cloaked, BuildMutatorsPrettyString)
+{
+	if (!g_cts) ret_string = strcat(ret_string, ", Cloaked");
+}
+
+#endif
diff --git a/qcsrc/common/mutators/mutator/cloaked/module.inc b/qcsrc/common/mutators/mutator/cloaked/module.inc
new file mode 100644
index 0000000000..3d3a042936
--- /dev/null
+++ b/qcsrc/common/mutators/mutator/cloaked/module.inc
@@ -0,0 +1,3 @@
+#ifdef SVQC
+#include "cloaked.qc"
+#endif
diff --git a/qcsrc/common/mutators/mutator/running_guns/module.inc b/qcsrc/common/mutators/mutator/running_guns/module.inc
new file mode 100644
index 0000000000..036b70ff62
--- /dev/null
+++ b/qcsrc/common/mutators/mutator/running_guns/module.inc
@@ -0,0 +1,3 @@
+#ifdef SVQC
+#include "running_guns.qc"
+#endif
diff --git a/qcsrc/common/mutators/mutator/running_guns/running_guns.qc b/qcsrc/common/mutators/mutator/running_guns/running_guns.qc
new file mode 100644
index 0000000000..cad4d5f2fe
--- /dev/null
+++ b/qcsrc/common/mutators/mutator/running_guns/running_guns.qc
@@ -0,0 +1,14 @@
+#ifdef IMPLEMENTATION
+
+bool autocvar_g_running_guns;
+
+REGISTER_MUTATOR(running_guns, autocvar_g_running_guns);
+
+MUTATOR_HOOKFUNCTION(running_guns, SetDefaultAlpha)
+{
+	default_player_alpha = -1;
+	default_weapon_alpha = +1;
+	return true;
+}
+
+#endif
diff --git a/qcsrc/server/autocvars.qh b/qcsrc/server/autocvars.qh
index 5d9c8dc714..2910eb9bb8 100644
--- a/qcsrc/server/autocvars.qh
+++ b/qcsrc/server/autocvars.qh
@@ -81,7 +81,6 @@ float autocvar_g_balance_armor_rot;
 float autocvar_g_balance_armor_rotlinear;
 int autocvar_g_balance_armor_rotstable;
 int autocvar_g_balance_armor_start;
-float autocvar_g_balance_cloaked_alpha;
 float autocvar_g_balance_contents_damagerate;
 float autocvar_g_balance_contents_drowndelay;
 int autocvar_g_balance_contents_playerdamage_drowning;
@@ -259,7 +258,6 @@ bool autocvar_g_respawn_ghosts;
 float autocvar_g_respawn_ghosts_maxtime;
 float autocvar_g_respawn_ghosts_speed;
 int autocvar_g_respawn_waves;
-bool autocvar_g_running_guns;
 bool autocvar_g_shootfromcenter;
 bool autocvar_g_shootfromeye;
 string autocvar_g_shootfromfixedorigin;
diff --git a/qcsrc/server/defs.qh b/qcsrc/server/defs.qh
index f8c5f1cfbb..2027b70f17 100644
--- a/qcsrc/server/defs.qh
+++ b/qcsrc/server/defs.qh
@@ -20,7 +20,7 @@
 
 // Globals
 
-float g_cloaked, g_footsteps, g_grappling_hook, g_instagib;
+float g_footsteps, g_grappling_hook, g_instagib;
 float g_warmup_limit;
 float g_warmup_allguns;
 float g_warmup_allow_timeout;
diff --git a/qcsrc/server/g_world.qc b/qcsrc/server/g_world.qc
index bfeebf5762..0b8c14fa10 100644
--- a/qcsrc/server/g_world.qc
+++ b/qcsrc/server/g_world.qc
@@ -96,17 +96,7 @@ void ShuffleMaplist();
 
 void SetDefaultAlpha()
 {
-	if(autocvar_g_running_guns)
-	{
-		default_player_alpha = -1;
-		default_weapon_alpha = +1;
-	}
-	else if(g_cloaked)
-	{
-		default_player_alpha = autocvar_g_balance_cloaked_alpha;
-		default_weapon_alpha = default_player_alpha;
-	}
-	else
+	if (!MUTATOR_CALLHOOK(SetDefaultAlpha))
 	{
 		default_player_alpha = autocvar_g_player_alpha;
 		if(default_player_alpha == 0)
diff --git a/qcsrc/server/miscfunctions.qh b/qcsrc/server/miscfunctions.qh
index 3ca3ea6730..2be5a9e221 100644
--- a/qcsrc/server/miscfunctions.qh
+++ b/qcsrc/server/miscfunctions.qh
@@ -322,7 +322,6 @@ void readlevelcvars(void)
 
 	sv_clones = cvar("sv_clones");
 	sv_foginterval = cvar("sv_foginterval");
-	g_cloaked = cvar("g_cloaked");
 	g_footsteps = cvar("g_footsteps");
 	g_jetpack = cvar("g_jetpack");
 	sv_maxidle = cvar("sv_maxidle");
diff --git a/qcsrc/server/mutators/events.qh b/qcsrc/server/mutators/events.qh
index 9cd9045d53..4795aab28d 100644
--- a/qcsrc/server/mutators/events.qh
+++ b/qcsrc/server/mutators/events.qh
@@ -153,6 +153,9 @@ MUTATOR_HOOKABLE(ForbidThrowCurrentWeapon, EV_NO_ARGS);
 /** returns true if dropping the current weapon shall not be allowed at any time including death */
 MUTATOR_HOOKABLE(ForbidDropCurrentWeapon, EV_NO_ARGS);
 
+/**  */
+MUTATOR_HOOKABLE(SetDefaultAlpha, EV_NO_ARGS);
+
 /** allows changing attack rate */
 #define EV_WeaponRateFactor(i, o) \
     /**/ i(float, weapon_rate) \
diff --git a/qcsrc/server/mutators/mutator/gamemode_cts.qc b/qcsrc/server/mutators/mutator/gamemode_cts.qc
index a220801eef..c256d1b974 100644
--- a/qcsrc/server/mutators/mutator/gamemode_cts.qc
+++ b/qcsrc/server/mutators/mutator/gamemode_cts.qc
@@ -380,13 +380,6 @@ MUTATOR_HOOKFUNCTION(cts, ForbidPlayerScore_Clear)
 	return true; // in CTS, you don't lose score by observing
 }
 
-MUTATOR_HOOKFUNCTION(cts, SetModname)
-{
-	g_cloaked = 1; // always enable cloak in CTS
-
-	return false;
-}
-
 MUTATOR_HOOKFUNCTION(cts, GetRecords)
 {
 	for(int i = record_page * 200; i < MapInfo_count && i < record_page * 200 + 200; ++i)
diff --git a/qcsrc/server/teamplay.qc b/qcsrc/server/teamplay.qc
index 2f2bf54545..f5889a8cc1 100644
--- a/qcsrc/server/teamplay.qc
+++ b/qcsrc/server/teamplay.qc
@@ -132,8 +132,6 @@ string getwelcomemessage(void)
 		modifications = strcat(modifications, ", No start weapons");
 	if(cvar("sv_gravity") < stof(cvar_defstring("sv_gravity")))
 		modifications = strcat(modifications, ", Low gravity");
-	if(g_cloaked && !g_cts)
-		modifications = strcat(modifications, ", Cloaked");
 	if(g_weapon_stay && !g_cts)
 		modifications = strcat(modifications, ", Weapons stay");
 	if(g_jetpack)