]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge branch 'Mario/melee_mutator' into Mario/mutators
authorMario <mario.mario@y7mail.com>
Thu, 6 Jun 2013 08:40:29 +0000 (18:40 +1000)
committerMario <mario.mario@y7mail.com>
Thu, 6 Jun 2013 08:40:29 +0000 (18:40 +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 7f718746acdb7b3435b5092dac0f757d1d66f2ed..bd9ebc176acdefaed3d348f7bfd07bfb13b057f2 100644 (file)
@@ -1609,3 +1609,5 @@ set g_random_gravity_min -2000 "minimum gravity"
 set g_random_gravity_max 2000 "maximum gravity"
 set g_random_gravity_positive 1000 "positive gravity multiplier"
 set g_random_gravity_negative 1000 "negative gravity multiplier"
+
+set g_melee_only 0 "enable melee only arena"
index 1b0fed0675349671bf0d867a52586dd34ccf5ff0..d0a0a84a54675e86b3a8d0c2aeee97f624d23b1d 100644 (file)
@@ -926,6 +926,7 @@ void readlevelcvars(void)
        CHECK_MUTATOR_ADD("g_multijump", mutator_multijump, 1);
        CHECK_MUTATOR_ADD("g_jump_grunt", mutator_jump_grunt, 1);
        CHECK_MUTATOR_ADD("g_footsteps", mutator_footsteps, 1);
+       CHECK_MUTATOR_ADD("g_melee_only", mutator_melee_only, !cvar("g_minstagib"));
        CHECK_MUTATOR_ADD("g_sandbox", sandbox, 1);
        
        #undef CHECK_MUTATOR_ADD
@@ -968,7 +969,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 edfd81d31df045dbf215a900baf8bdec8109dbb1..48ada7784fe96f24543092dddbf1f99cb26890fc 100644 (file)
@@ -29,5 +29,6 @@ MUTATOR_DECLARATION(mutator_norecoil);
 MUTATOR_DECLARATION(mutator_multijump);
 MUTATOR_DECLARATION(mutator_jump_grunt);
 MUTATOR_DECLARATION(mutator_footsteps);
+MUTATOR_DECLARATION(mutator_melee_only);
 
 MUTATOR_DECLARATION(sandbox);
index 3f97fd36f30b6aa0e966168e3864ebbed8cbd831..7be15ed7cb94790533a19132ee10f9e969c614cb 100644 (file)
@@ -256,6 +256,7 @@ mutators/mutator_norecoil.qc
 mutators/mutator_multijump.qc
 mutators/mutator_jump_grunt.qc
 mutators/mutator_footsteps.qc
+mutators/mutator_melee_only.qc
 
 ../warpzonelib/anglestransform.qc
 ../warpzonelib/mathlib.qc