]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/mutators/mutator_new_toys.qc
Merge branch 'master' into TimePath/effectinfo
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / mutators / mutator_new_toys.qc
index f11298451c8ea4df110710e5d3695f2a38693e1d..9b51d9abb8640fbcaf4f3bbcf5ef83d5f652f760 100644 (file)
@@ -1,7 +1,11 @@
+#include "../_all.qh"
+
+#include "mutator.qh"
+
 /*
 
-CORE    laser   nex     lg      rl      cry     gl      elec    hagar   fireb   hook
-                                                                       minsta  porto
+CORE    laser   vortex     lg      rl      cry     gl      elec    hagar   fireb   hook
+                                                                       vaporizer  porto
                                                                        tuba
 
 NEW             rifle   hlac    minel                           seeker
@@ -18,28 +22,28 @@ weaponreplace lists.
 Entity:
 
 {
-"classname" "weapon_nex"
+"classname" "weapon_vortex"
 "new_toys" "rifle"
 }
--> This will spawn as Rifle in this mutator ONLY, and as Nex otherwise.
+-> This will spawn as Rifle in this mutator ONLY, and as Vortex otherwise.
 
 {
-"classname" "weapon_nex"
-"new_toys" "nex rifle"
+"classname" "weapon_vortext"
+"new_toys" "vortex rifle"
 }
--> This will spawn as either Nex or Rifle in this mutator ONLY, and as Nex otherwise.
+-> This will spawn as either Vortex or Rifle in this mutator ONLY, and as Vortex otherwise.
 
 {
-"classname" "weapon_nex"
-"new_toys" "nex"
+"classname" "weapon_vortex"
+"new_toys" "vortex"
 }
--> This is always a Nex.
+-> This is always a Vortex.
 
 If the map specifies no "new_toys" argument
 
 There will be two default replacements selectable: "replace all" and "replace random".
-In "replace all" mode, e.g. Nex will have the default replacement "rifle".
-In "replace random" mode, Nex will have the default replacement "nex rifle".
+In "replace all" mode, e.g. Vortex will have the default replacement "rifle".
+In "replace random" mode, Vortex will have the default replacement "vortex rifle".
 
 This mutator's replacements run BEFORE regular weaponreplace!
 
@@ -69,9 +73,10 @@ roflsound "New toys, new toys!" sound.
 .string new_toys;
 
 float autocvar_g_new_toys_autoreplace;
-#define NT_AUTOREPLACE_NEVER 0
-#define NT_AUTOREPLACE_ALWAYS 1
-#define NT_AUTOREPLACE_RANDOM 2
+bool autocvar_g_new_toys_use_pickupsound = true;
+const float NT_AUTOREPLACE_NEVER = 0;
+const float NT_AUTOREPLACE_ALWAYS = 1;
+const float NT_AUTOREPLACE_RANDOM = 2;
 
 MUTATOR_HOOKFUNCTION(nt_SetModname)
 {
@@ -83,13 +88,14 @@ float nt_IsNewToy(float w)
 {
        switch(w)
        {
-               case WEP_SEEKER:
-               case WEP_MINE_LAYER:
-               case WEP_HLAC:
-               case WEP_RIFLE:
-                       return TRUE;
+               case WEP_SEEKER.m_id:
+               case WEP_MINE_LAYER.m_id:
+               case WEP_HLAC.m_id:
+               case WEP_RIFLE.m_id:
+               case WEP_SHOCKWAVE.m_id:
+                       return true;
                default:
-                       return FALSE;
+                       return false;
        }
 }
 
@@ -98,9 +104,10 @@ string nt_GetFullReplacement(string w)
        switch(w)
        {
                case "hagar": return "seeker";
-               case "rocketlauncher": return "minelayer";
-               case "uzi": return "hlac";
-               case "nex": return "rifle";
+               case "devastator": return "minelayer";
+               case "machinegun": return "hlac";
+               case "vortex": return "rifle";
+               //case "shotgun": return "shockwave";
                default: return string_null;
        }
 }
@@ -162,7 +169,7 @@ MUTATOR_HOOKFUNCTION(nt_SetStartItems)
 }
 
 MUTATOR_HOOKFUNCTION(nt_SetWeaponreplace)
-{
+{SELFPARAM();
        // otherwise, we do replace
        if(self.new_toys)
        {
@@ -182,9 +189,11 @@ MUTATOR_HOOKFUNCTION(nt_SetWeaponreplace)
 }
 
 MUTATOR_HOOKFUNCTION(nt_FilterItem)
-{
-       if(nt_IsNewToy(self.weapon))
-               self.item_pickupsound = "weapons/weaponpickup_new_toys.wav";
+{SELFPARAM();
+       if(nt_IsNewToy(self.weapon) && autocvar_g_new_toys_use_pickupsound) {
+               self.item_pickupsound = string_null;
+               self.item_pickupsound_ent = SND_WEAPONPICKUP_NEW_TOYS;
+       }
        return 0;
 }
 
@@ -200,8 +209,6 @@ MUTATOR_DEFINITION(mutator_new_toys)
                if(time > 1) // game loads at time 1
                        error("This cannot be added at runtime\n");
 
-               precache_sound("weapons/weaponpickup_new_toys.wav");
-
                // mark the guns as ok to use by e.g. impulse 99
                float i;
                for(i = WEP_FIRST; i <= WEP_LAST; ++i)
@@ -219,7 +226,7 @@ MUTATOR_DEFINITION(mutator_new_toys)
 
        MUTATOR_ONREMOVE
        {
-               print("This cannot be removed at runtime\n");
+               LOG_INFO("This cannot be removed at runtime\n");
                return -1;
        }