From: Rudolf Polzer Date: Mon, 5 Mar 2012 12:32:50 +0000 (+0100) Subject: play "new toys" sound ;) thanks to CuBeOwL for this one X-Git-Tag: xonotic-v0.7.0~348^2~1^2~14 X-Git-Url: http://git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=commitdiff_plain;h=a0c72443cb6a67f309a74f39a5846f214288240a play "new toys" sound ;) thanks to CuBeOwL for this one --- diff --git a/qcsrc/server/mutators/mutator_new_toys.qc b/qcsrc/server/mutators/mutator_new_toys.qc index bdd214739..ee2301170 100644 --- a/qcsrc/server/mutators/mutator_new_toys.qc +++ b/qcsrc/server/mutators/mutator_new_toys.qc @@ -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 { diff --git a/qcsrc/server/t_items.qc b/qcsrc/server/t_items.qc index 344c3c77c..48a8fec84 100644 --- a/qcsrc/server/t_items.qc +++ b/qcsrc/server/t_items.qc @@ -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 index 000000000..34660eef0 Binary files /dev/null and b/sound/weapons/weaponpickup_new_toys.ogg differ