]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Melee only arena mutator
authorMario <mario.mario@y7mail.com>
Thu, 6 Jun 2013 00:07:07 +0000 (10:07 +1000)
committerMario <mario.mario@y7mail.com>
Thu, 6 Jun 2013 00:07:07 +0000 (10:07 +1000)
defaultXonotic.cfg
qcsrc/server/miscfunctions.qc
qcsrc/server/mutators/mutator_melee_only.qc [new file with mode: 0644]
qcsrc/server/mutators/mutators.qh
qcsrc/server/progs.src

index 66ac0b20b23ce711a0efa48b3f022781676ecbe1..d7ecf5fd8a9528f9efe94bb38995d055a19bbe06 100644 (file)
@@ -1601,3 +1601,5 @@ set cl_weapon_stay_color "2 0.5 0.5" "Color of picked up weapons when g_weapon_s
 set cl_weapon_stay_alpha 0.75 "Alpha of picked up weapons when g_weapon_stay > 0"
 
 seta g_superspectate 0 "server side, allows extended spectator functions through the cmd interface. followpowerup, followstrength, followstshield or followfc [red|blue] will transfer spectation to the relevent player, if any"
+
+set g_melee_only 0 "enable melee only arena"
index f69b133213f50666be3099491ce665f7f9767abf..b9c1475d4d380c4710eb2860d47e02742519a2dd 100644 (file)
@@ -919,6 +919,7 @@ void readlevelcvars(void)
        CHECK_MUTATOR_ADD("g_rocket_flying", mutator_rocketflying, !cvar("g_minstagib"));
        CHECK_MUTATOR_ADD("g_vampire", mutator_vampire, !cvar("g_minstagib"));
        CHECK_MUTATOR_ADD("g_superspectate", mutator_superspec, 1);
+       CHECK_MUTATOR_ADD("g_melee_only", mutator_melee_only, !cvar("g_minstagib"));
        CHECK_MUTATOR_ADD("g_sandbox", sandbox, 1);
        
        #undef CHECK_MUTATOR_ADD
@@ -966,7 +967,7 @@ void readlevelcvars(void)
        g_warmup_allguns = cvar("g_warmup_allguns");
        g_warmup_allow_timeout = cvar("g_warmup_allow_timeout");
 
-       if ((g_race && g_race_qualifying == 2) || g_arena || g_minstagib || g_assault || cvar("g_campaign"))
+       if ((g_race && g_race_qualifying == 2) || g_arena || g_minstagib || g_assault || cvar("g_campaign") || cvar("g_melee_only"))
                inWarmupStage = 0; // these modes cannot work together, sorry
 
        g_pickup_respawntime_weapon = cvar("g_pickup_respawntime_weapon");
diff --git a/qcsrc/server/mutators/mutator_melee_only.qc b/qcsrc/server/mutators/mutator_melee_only.qc
new file mode 100644 (file)
index 0000000..85354bf
--- /dev/null
@@ -0,0 +1,42 @@
+MUTATOR_HOOKFUNCTION(melee_SetStartItems)
+{
+       start_ammo_shells = 0;
+       
+       WEPSET_COPY_AW(start_weapons, WEP_SHOTGUN);
+               
+       return FALSE;
+}
+
+MUTATOR_HOOKFUNCTION(melee_FilterItem)
+{
+       switch (self.items)
+       {
+               case IT_5HP:
+               case IT_ARMOR_SHARD:
+                       return FALSE;
+       }
+       
+       return TRUE;
+}
+
+MUTATOR_HOOKFUNCTION(melee_BuildMutatorsString)
+{
+       ret_string = strcat(ret_string, ":MeleeOnly");
+       return FALSE;
+}
+
+MUTATOR_HOOKFUNCTION(melee_BuildMutatorsPrettyString)
+{
+       ret_string = strcat(ret_string, ", Melee Only Arena");
+       return FALSE;
+}
+
+MUTATOR_DEFINITION(mutator_melee_only)
+{
+       MUTATOR_HOOK(SetStartItems, melee_SetStartItems, CBC_ORDER_ANY);
+       MUTATOR_HOOK(FilterItem, melee_FilterItem, CBC_ORDER_ANY);
+       MUTATOR_HOOK(BuildMutatorsString, melee_BuildMutatorsString, CBC_ORDER_ANY);
+       MUTATOR_HOOK(BuildMutatorsPrettyString, melee_BuildMutatorsPrettyString, CBC_ORDER_ANY);
+
+       return FALSE;
+}
index 3f9f020affc086c1968fbe80a2bfc64bd9a3d5e3..e150bddbbde904acb257fe50d71b0993b63de160 100644 (file)
@@ -21,5 +21,6 @@ MUTATOR_DECLARATION(mutator_vampire);
 MUTATOR_DECLARATION(mutator_superspec);
 MUTATOR_DECLARATION(mutator_minstagib);
 MUTATOR_DECLARATION(mutator_touchexplode);
+MUTATOR_DECLARATION(mutator_melee_only);
 
 MUTATOR_DECLARATION(sandbox);
index df5623f0535a42bd3c5b1a4b04baa0b516aa57b8..5b6825e8d88b1ea95be4aaf851bf34a878c15952 100644 (file)
@@ -248,6 +248,7 @@ mutators/sandbox.qc
 mutators/mutator_superspec.qc
 mutators/mutator_minstagib.qc
 mutators/mutator_touchexplode.qc
+mutators/mutator_melee_only.qc
 
 ../warpzonelib/anglestransform.qc
 ../warpzonelib/mathlib.qc