]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
play "new toys" sound ;) thanks to CuBeOwL for this one
authorRudolf Polzer <divverent@xonotic.org>
Mon, 5 Mar 2012 12:32:50 +0000 (13:32 +0100)
committerRudolf Polzer <divverent@xonotic.org>
Mon, 5 Mar 2012 12:32:57 +0000 (13:32 +0100)
qcsrc/server/mutators/mutator_new_toys.qc
qcsrc/server/t_items.qc
sound/weapons/weaponpickup_new_toys.ogg [new file with mode: 0644]

index bdd214739cc5f493118a5ad001171337d62045c7..ee2301170afc965ba95fdbeb5949b7ff491a7954 100644 (file)
@@ -79,6 +79,20 @@ MUTATOR_HOOKFUNCTION(nt_SetModname)
        return 0;
 }
 
+float nt_IsNewToy(float w)
+{
+       switch(w)
+       {
+               case WEP_SEEKER:
+               case WEP_MINELAYER:
+               case WEP_HLAC:
+               case WEP_RIFLE:
+                       return TRUE;
+               default:
+                       return FALSE;
+       }
+}
+
 string nt_GetFullReplacement(string w)
 {
        switch(w)
@@ -167,25 +181,39 @@ MUTATOR_HOOKFUNCTION(nt_SetWeaponreplace)
        return 0;
 }
 
+MUTATOR_HOOK(nt_FilterItem)
+{
+       if(nt_isNewToy(self.weapon))
+               self.item_pickupsound = "weapons/weaponpickup_new_toys.ogg";
+       return 0;
+}
+
+void Is_New_Toy(w)
+{
+       entity e = get_weaponinfo(i);
+       if(e.spawnflags & WEP_FLAG_MUTATORBLOCKED)
+               e.spawnflags &~= WEP_FLAG_MUTATORBLOCKED;
+}
+
 MUTATOR_DEFINITION(mutator_new_toys)
 {
        MUTATOR_HOOK(SetModname, nt_SetModname, CBC_ORDER_ANY);
        MUTATOR_HOOK(SetStartItems, nt_SetStartItems, CBC_ORDER_ANY);
        MUTATOR_HOOK(SetWeaponreplace, nt_SetWeaponreplace, CBC_ORDER_LAST);
+       MUTATOR_HOOK(FilterItem, nt_FilterItem, CBC_ORDER_ANY);
 
        MUTATOR_ONADD
        {
                if(time > 1) // game loads at time 1
                        error("This cannot be added at runtime\n");
 
-               // mark all guns as ok to use by e.g. impulse 99
+               precache_sound("weapons/weaponpickup_new_toys.ogg");
+
+               // mark the guns as ok to use by e.g. impulse 99
                float i;
                for(i = WEP_FIRST; i <= WEP_LAST; ++i)
-               {
-                       entity e = get_weaponinfo(i);
-                       if(e.weapon)
-                               e.spawnflags &~= WEP_FLAG_MUTATORBLOCKED;
-               }
+                       if(nt_isNewToy(i))
+                               get_weaponinfo(i).spawnflags &~= WEP_FLAG_MUTATORBLOCKED;
        }
        MUTATOR_ONREMOVE
        {
index 344c3c77ce7fec3b0a66b2e4a72d6c328681a10b..48a8fec84d33e66fdc4ee473304d6f762e805f90 100644 (file)
@@ -741,6 +741,13 @@ void StartItem (string itemmodel, string pickupsound, float defaultrespawntime,
                WEPSET_COPY_EW(self, weaponid);
        self.flags = FL_ITEM | itemflags;
 
+       if(MUTATOR_CALLHOOK(FilterItem)) // error means we do not want the item
+       {
+               startitem_failed = TRUE;
+               remove(self);
+               return;
+       }
+
        // is it a dropped weapon?
        if (self.classname == "droppedweapon")
        {
@@ -780,13 +787,6 @@ void StartItem (string itemmodel, string pickupsound, float defaultrespawntime,
        }
        else
        {
-               if(MUTATOR_CALLHOOK(FilterItem)) // error means we do not want the item
-               {
-                       startitem_failed = TRUE;
-                       remove(self);
-                       return;
-               }
-
                if(!have_pickup_item())
                {
                        startitem_failed = TRUE;
@@ -1099,7 +1099,8 @@ void weapon_defaultspawnfunc(float wpn)
        if(self.team)
                f |= FL_NO_WEAPON_STAY;
 
-       StartItem(e.model, "weapons/weaponpickup.wav", self.respawntime, self.respawntimejitter, e.message, 0, e.weapon, f, weapon_pickupevalfunc, e.bot_pickupbasevalue);
+       self.item_pickupsound = "weapons/weaponpickup.wav";
+       StartItem(e.model, self.item_pickupsound, self.respawntime, self.respawntimejitter, e.message, 0, e.weapon, f, weapon_pickupevalfunc, e.bot_pickupbasevalue);
        if (self.modelindex) // don't precache if self was removed
                weapon_action(e.weapon, WR_PRECACHE);
 }
diff --git a/sound/weapons/weaponpickup_new_toys.ogg b/sound/weapons/weaponpickup_new_toys.ogg
new file mode 100644 (file)
index 0000000..34660ee
Binary files /dev/null and b/sound/weapons/weaponpickup_new_toys.ogg differ