shithub: choc

Download patch

ref: 8bbfd5b68a289ddf933f78d369606f1f22dd91c6
parent: 3d8f10ef325d2d03f1f9535d9f201eca3d56d37f
author: James Haley <haleyjd@hotmail.com>
date: Wed Sep 22 04:07:35 EDT 2010

Rewrote P_GiveItemToPlayer to exactly match binary, particularly with
treatment of SPR_TOKN objects, and playing proper sounds for different
item types. Fixed most S_StartSound calls in the menu engine. Removed
call to S_StopSound in S_StartSound, as Strife doesn't do it. Added call
to P_DialogDoChoice(-1) in M_Responder when menuindialog is asserted and
the menu exit key is pressed.

Subversion-branch: /branches/strife-branch
Subversion-revision: 2130

--- a/src/strife/m_menu.c
+++ b/src/strife/m_menu.c
@@ -64,6 +64,7 @@
 #include "sounds.h"
 
 #include "m_menu.h"
+#include "p_dialog.h"
 
 
 extern void M_QuitStrife(int);
@@ -691,8 +692,8 @@
 {
     if (key == key_menu_confirm)
     {
-	M_DoSave(quickSaveSlot);
-	S_StartSound(NULL,sfx_swish);   // villsa [STRIFE] TODO - fix sounds
+        M_DoSave(quickSaveSlot);
+        S_StartSound(NULL, sfx_mtalht); // [STRIFE] sound
     }
 }
 
@@ -700,7 +701,7 @@
 {
     if (!usergame)
     {
-	S_StartSound(NULL,sfx_oof);
+	S_StartSound(NULL, sfx_oof);
 	return;
     }
 
@@ -728,8 +729,8 @@
 {
     if (key == key_menu_confirm)
     {
-	M_LoadSelect(quickSaveSlot);
-	S_StartSound(NULL,sfx_swish);   // villsa [STRIFE] TODO - fix sounds
+        M_LoadSelect(quickSaveSlot);
+        S_StartSound(NULL, sfx_mtalht); // [STRIFE] sound
     }
 }
 
@@ -1685,7 +1686,7 @@
             messageRoutine(key);
 
         menuactive = false;
-        S_StartSound(NULL,sfx_swish);   // villsa [STRIFE] TODO - fix sounds
+        S_StartSound(NULL, sfx_mtalht);   // [STRIFE] sound
         return true;
     }
 
@@ -1703,7 +1704,7 @@
             if (automapactive || chat_on)
                 return false;
             M_SizeDisplay(0);
-            S_StartSound(NULL,sfx_stnmov);
+            S_StartSound(NULL, sfx_stnmov);
             return true;
         }
         else if (key == key_menu_incscreen) // Screen size up
@@ -1711,7 +1712,7 @@
             if (automapactive || chat_on)
                 return false;
             M_SizeDisplay(1);
-            S_StartSound(NULL,sfx_stnmov);
+            S_StartSound(NULL, sfx_stnmov);
             return true;
         }
         else if (key == key_menu_help)     // Help key
@@ -1721,13 +1722,13 @@
             currentMenu = &ReadDef1; 
 
             itemOn = 0;
-            S_StartSound(NULL,sfx_swtchn);
+            S_StartSound(NULL, sfx_swtchn);
             return true;
         }
         else if (key == key_menu_save)     // Save
         {
             M_StartControlPanel();
-            S_StartSound(NULL,sfx_swtchn);
+            S_StartSound(NULL, sfx_swtchn);
             M_SaveGame(0);
             return true;
         }
@@ -1734,7 +1735,7 @@
         else if (key == key_menu_load)     // Load
         {
             M_StartControlPanel();
-            S_StartSound(NULL,sfx_swtchn);
+            S_StartSound(NULL, sfx_swtchn);
             M_LoadGame(0);
             return true;
         }
@@ -1743,7 +1744,7 @@
             M_StartControlPanel ();
             currentMenu = &SoundDef;
             itemOn = sfx_vol;
-            S_StartSound(NULL,sfx_swtchn);
+            S_StartSound(NULL, sfx_swtchn);
             return true;
         }
         /*
@@ -1756,13 +1757,13 @@
         */
         else if (key == key_menu_qsave)    // Quicksave
         {
-            S_StartSound(NULL,sfx_swtchn);
+            S_StartSound(NULL, sfx_swtchn);
             M_QuickSave();
             return true;
         }
         else if (key == key_menu_endgame)  // End game
         {
-            S_StartSound(NULL,sfx_swtchn);
+            S_StartSound(NULL, sfx_swtchn);
             M_EndGame(0);
             return true;
         }
@@ -1769,18 +1770,18 @@
         else if (key == key_menu_messages) // Toggle messages
         {
             M_ChangeMessages(0);
-            S_StartSound(NULL,sfx_swtchn);
+            S_StartSound(NULL, sfx_swtchn);
             return true;
         }
         else if (key == key_menu_qload)    // Quickload
         {
-            S_StartSound(NULL,sfx_swtchn);
+            S_StartSound(NULL, sfx_swtchn);
             M_QuickLoad();
             return true;
         }
         else if (key == key_menu_quit)     // Quit DOOM
         {
-            S_StartSound(NULL,sfx_swtchn);
+            S_StartSound(NULL, sfx_swtchn);
             M_QuitStrife(0);
             return true;
         }
@@ -1801,7 +1802,7 @@
         if (key == key_menu_activate)
         {
             M_StartControlPanel ();
-            S_StartSound(NULL,sfx_swtchn);
+            S_StartSound(NULL, sfx_swtchn);
             return true;
         }
         return false;
@@ -1819,7 +1820,7 @@
             if (itemOn+1 > currentMenu->numitems-1)
                 itemOn = 0;
             else itemOn++;
-            S_StartSound(NULL,sfx_pstop);
+            S_StartSound(NULL, sfx_pstop);
         } while(currentMenu->menuitems[itemOn].status==-1);
 
         return true;
@@ -1833,7 +1834,7 @@
             if (!itemOn)
                 itemOn = currentMenu->numitems-1;
             else itemOn--;
-            S_StartSound(NULL,sfx_pstop);
+            S_StartSound(NULL, sfx_pstop);
         } while(currentMenu->menuitems[itemOn].status==-1);
 
         return true;
@@ -1845,7 +1846,7 @@
         if (currentMenu->menuitems[itemOn].routine &&
             currentMenu->menuitems[itemOn].status == 2)
         {
-            S_StartSound(NULL,sfx_stnmov);
+            S_StartSound(NULL, sfx_stnmov);
             currentMenu->menuitems[itemOn].routine(0);
         }
         return true;
@@ -1857,7 +1858,7 @@
         if (currentMenu->menuitems[itemOn].routine &&
             currentMenu->menuitems[itemOn].status == 2)
         {
-            S_StartSound(NULL,sfx_stnmov);
+            S_StartSound(NULL, sfx_stnmov);
             currentMenu->menuitems[itemOn].routine(1);
         }
         return true;
@@ -1873,12 +1874,12 @@
             if (currentMenu->menuitems[itemOn].status == 2)
             {
                 currentMenu->menuitems[itemOn].routine(1);      // right arrow
-                S_StartSound(NULL,sfx_stnmov);
+                S_StartSound(NULL, sfx_stnmov);
             }
             else
             {
                 currentMenu->menuitems[itemOn].routine(itemOn);
-                S_StartSound(NULL,sfx_swish);   // villsa [STRIFE] TODO - fix sounds
+                //S_StartSound(NULL, sfx_swish); [STRIFE] No sound is played here.
             }
         }
         return true;
@@ -1886,10 +1887,12 @@
     else if (key == key_menu_activate)
     {
         // Deactivate menu
+        if(menuindialog) // [STRIFE] - Get out of dialog engine semi-gracefully
+            P_DialogDoChoice(-1);
 
         currentMenu->lastOn = itemOn;
         M_ClearMenus (0);
-        S_StartSound(NULL,sfx_swish);   // villsa [STRIFE] TODO - fix sounds
+        S_StartSound(NULL, sfx_mtalht);   // villsa [STRIFE] TODO - fix sounds
         return true;
     }
     else if (key == key_menu_back)
@@ -1901,7 +1904,7 @@
         {
             currentMenu = currentMenu->prevMenu;
             itemOn = currentMenu->lastOn;
-            S_StartSound(NULL,sfx_swtchn);
+            S_StartSound(NULL, sfx_swtchn);
         }
         return true;
     }
@@ -1914,7 +1917,7 @@
             if (currentMenu->menuitems[i].alphaKey == ch)
             {
                 itemOn = i;
-                S_StartSound(NULL,sfx_pstop);
+                S_StartSound(NULL, sfx_pstop);
                 return true;
             }
         }
@@ -1924,7 +1927,7 @@
             if (currentMenu->menuitems[i].alphaKey == ch)
             {
                 itemOn = i;
-                S_StartSound(NULL,sfx_pstop);
+                S_StartSound(NULL, sfx_pstop);
                 return true;
             }
         }
--- a/src/strife/p_dialog.c
+++ b/src/strife/p_dialog.c
@@ -702,6 +702,7 @@
     int i = 0;
     line_t junk;
     boolean ok = true;
+    int sound = sfx_itemup; // haleyjd 09/21/10: different sounds for items
 
     // set quest if mf_givequest flag is set
     if(mobjinfo[type].flags & MF_GIVEQUEST)
@@ -719,264 +720,327 @@
     {
         if(mobjinfo[type].name)
         {
-            strncpy(pickupstring, mobjinfo[type].name, 39);
+            strncpy(pickupstring, DEH_String(mobjinfo[type].name), 39);
             player->message = pickupstring;
         }
         player->questflags |= 1 << (type - MT_TOKEN_QUEST1);
+
+        if(player == &players[consoleplayer])
+            S_StartSound(NULL, sound);
+        return true;
     }
-    // check for other types
-    else switch(type)
+
+    // haleyjd 09/22/10: Refactored to give sprites higher priority than
+    // mobjtypes and to implement missing logic.
+    switch(sprnum)
     {
-    // severed hand
-    case MT_KEY_HAND:
-        P_GiveCard(player, key_SeveredHand);
+    case SPR_HELT: // STRIFE-TODO: verify - I believe this is related to a cheat
+        P_GiveInventoryItem(player, SPR_HELT, MT_TOKEN_TOUGHNESS);
+        P_GiveInventoryItem(player, SPR_GUNT, MT_TOKEN_ACCURACY);
+
+        // [STRIFE] Bizarre...
+        for(i = 0; i < 5 * player->accuracy + 300; i++)
+            P_GiveInventoryItem(player, SPR_COIN, MT_MONY_1);
         break;
 
-    // 300 gold
-    case MT_MONY_300:
-        for(i = 0; i < 300; i++)
+    case SPR_ARM1: // Armor 1
+        if(!P_GiveArmor(player, -2))
+            P_GiveInventoryItem(player, sprnum, type);
+        break;
+
+    case SPR_ARM2: // Armor 2
+        if(!P_GiveArmor(player, -1))
+            P_GiveInventoryItem(player, sprnum, type);
+        break;
+
+    case SPR_COIN: // 1 Gold
+        P_GiveInventoryItem(player, SPR_COIN, MT_MONY_1);
+        break;
+
+    case SPR_CRED: // 10 Gold
+        for(i = 0; i < 10; i++)
             P_GiveInventoryItem(player, SPR_COIN, MT_MONY_1);
         break;
 
-    // ammo refill (at training)
-    case MT_TOKEN_AMMO:
-        if(player->ammo[am_bullets] >= 50)
-            return false;
+    case SPR_SACK: // 25 gold
+        for(i = 0; i < 25; i++)
+            P_GiveInventoryItem(player, SPR_COIN, MT_MONY_1);
+        break;
 
-        player->ammo[am_bullets] = 50;
+    case SPR_CHST: // 50 gold
+        for(i = 0; i < 50; i++)
+            P_GiveInventoryItem(player, SPR_COIN, MT_MONY_1);
+
+    case SPR_BBOX: // Box of Bullets
+        if(!P_GiveAmmo(player, am_bullets, 5))
+            return false;
         break;
 
-    // health refill (at front HQ)
-    case MT_TOKEN_HEALTH:
-        if(!P_GiveBody(player, healthamounts[gameskill]))
+    case SPR_BLIT: // Bullet Clip
+        if(!P_GiveAmmo(player, am_bullets, 1))
             return false;
         break;
 
-    // alarm
-    case MT_TOKEN_ALARM:
-        P_NoiseAlert(player->mo, player->mo);
-        A_AlertSpectreC(dialogtalker);
+    case SPR_PMAP: // Map powerup
+        if(!P_GivePower(player, pw_allmap))
+            return false;
+        sound = sfx_yeah; // bluh-doop!
         break;
 
-    // door special 1
-    case MT_TOKEN_DOOR1:
-        junk.tag = 222;
-        EV_DoDoor(&junk, open);
+    case SPR_COMM: // Communicator
+        if(!P_GivePower(player, pw_communicator))
+            return false;
+        sound = sfx_yeah; // bluh-doop!
         break;
 
-    // door special 2
-    case MT_TOKEN_PRISON_PASS:
-        junk.tag = 223;
-        EV_DoDoor(&junk, open);
-        if(gamemap == 2)
-            P_GiveInventoryItem(player, sprnum, type);
+    case SPR_MSSL: // Mini-missile
+        if(!P_GiveAmmo(player, am_missiles, 1))
+            return false;
         break;
 
-    // door special 3
-    case MT_TOKEN_SHOPCLOSE:
-        junk.tag = 222;
-        EV_DoDoor(&junk, close);
+    case SPR_ROKT: // Crate of missiles
+        if(!P_GiveAmmo(player, am_missiles, 5))
+            return false;
         break;
 
-    // door special 4
-    case MT_TOKEN_DOOR3:
-        junk.tag = 224;
-        EV_DoDoor(&junk, close);
+    case SPR_BRY1: // Battery cell
+        if(!P_GiveAmmo(player, am_cell, 1))
+            return false;
         break;
 
-    // stamina upgrade
-    case MT_TOKEN_STAMINA:
-        if(player->stamina >= 100)
+    case SPR_CPAC: // Cell pack
+        if(!P_GiveAmmo(player, am_cell, 5))
             return false;
+        break;
 
-        player->stamina += 10;
-        P_GiveBody(player, 200);
+    case SPR_PQRL: // Poison bolts
+        if(!P_GiveAmmo(player, am_poisonbolts, 5))
+            return false;
         break;
 
-    // accuracy upgrade
-    case MT_TOKEN_NEW_ACCURACY:
-        if(player->accuracy >= 100)
+    case SPR_XQRL: // Electric bolts
+        if(!P_GiveAmmo(player, am_elecbolts, 5))
             return false;
+        break;
 
-        player->accuracy += 10;
+    case SPR_GRN1: // HE Grenades
+        if(!P_GiveAmmo(player, am_hegrenades, 1))
+            return false;
         break;
 
-    // slideshow
-    case MT_SLIDESHOW:
-        gameaction = ga_victory;
-        if(gamemap == 10)
-            P_GiveItemToPlayer(player, SPR_TOKN, MT_TOKEN_QUEST17);
+    case SPR_GRN2: // WP Grenades
+        if(!P_GiveAmmo(player, am_wpgrenades, 1))
+            return false;
         break;
 
-    default:
-        // check for sprites if no specific type is found
-        switch(sprnum)
+    case SPR_BKPK: // Backpack (aka Ammo Satchel)
+        if(!player->backpack)
         {
-            // bullets
-        case SPR_BLIT:
-            ok = P_GiveAmmo(player, am_bullets, 1);
-            break;
+            for(i = 0; i < NUMAMMO; i++)
+                player->maxammo[i] *= 2;
 
-            // box of bullets
-        case SPR_BBOX:
-            ok = P_GiveAmmo(player, am_bullets, 5);
-            break;
+            player->backpack = true;
+        }
+        for(i = 0; i < NUMAMMO; i++)
+            P_GiveAmmo(player, i, 1);
+        break;
 
-            // missile
-        case SPR_MSSL:
-            ok = P_GiveAmmo(player, am_missiles, 1);
-            break;
+    case SPR_RIFL: // Assault Rifle
+        if(player->weaponowned[wp_rifle])
+            return false;
 
-            // box of missiles
-        case SPR_ROKT:
-            ok = P_GiveAmmo(player, am_missiles, 5);
-            break;
+        if(!P_GiveWeapon(player, wp_rifle, false))
+            return false;
+        
+        sound = sfx_wpnup; // SHK-CHK!
+        break;
 
-            // battery
-        case SPR_BRY1:
-            ok = P_GiveAmmo(player, am_cell, 1);
-            break;
+    case SPR_FLAM: // Flamethrower
+        if(player->weaponowned[wp_flame])
+            return false;
 
-            // cell pack
-        case SPR_CPAC:
-            ok = P_GiveAmmo(player, am_cell, 5);
-            break;
+        if(!P_GiveWeapon(player, wp_flame, false))
+            return false;
 
-            // poison bolts
-        case SPR_PQRL:
-            ok = P_GiveAmmo(player, am_poisonbolts, 5);
-            break;
+        sound = sfx_wpnup; // SHK-CHK!
+        break;
 
-            // electric bolts
-        case SPR_XQRL:
-            ok = P_GiveAmmo(player, am_elecbolts, 5);
-            break;
+    case SPR_MMSL: // Mini-missile Launcher
+        if(player->weaponowned[wp_missile])
+            return false;
 
-            // he grenades
-        case SPR_GRN1:
-            ok = P_GiveAmmo(player, am_hegrenades, 1);
-            break;
+        if(!P_GiveWeapon(player, wp_missile, false))
+            return false;
 
-            // wp grenades
-        case SPR_GRN2:
-            ok = P_GiveAmmo(player, am_wpgrenades, 1);
-            break;
+        sound = sfx_wpnup; // SHK-CHK!
+        break;
 
-            // backpack
-        case SPR_BKPK:
-            if(!player->backpack)
-            {
-                for(i = 0; i < NUMAMMO; i++)
-                    player->maxammo[i] *= 2;
+    case SPR_TRPD: // Mauler
+        if(player->weaponowned[wp_mauler])
+            return false;
 
-                player->backpack = true;
-            }
-            for(i = 0; i < NUMAMMO; i++)
-                P_GiveAmmo(player, i, 1);
-            break;
+        if(!P_GiveWeapon(player, wp_mauler, false))
+            return false;
 
-            // coin
-        case SPR_COIN:
-            P_GiveInventoryItem(player, SPR_COIN, MT_MONY_1);
+        sound = sfx_wpnup; // SHK-CHK!
+        break;
+
+    case SPR_CBOW: // Here's a crossbow. Just aim straight, and *SPLAT!*
+        if(player->weaponowned[wp_elecbow])
+            return false;
+
+        if(!P_GiveWeapon(player, wp_elecbow, false))
+            return false;
+
+        sound = sfx_wpnup; // SHK-CHK!
+        break;
+
+    case SPR_TOKN: // Miscellaneous items - These are determined by thingtype.
+        switch(type)
+        {
+        case MT_KEY_HAND: // Severed hand
+            P_GiveCard(player, key_SeveredHand);
             break;
 
-            // gold 10
-        case SPR_CRED:
-            for(i = 0; i < 10; i++)
+        case MT_MONY_300: // 300 Gold (this is the only way to get it, in fact)
+            for(i = 0; i < 300; i++)
                 P_GiveInventoryItem(player, SPR_COIN, MT_MONY_1);
             break;
 
-            // gold 25
-        case SPR_SACK:
-            for(i = 0; i < 25; i++)
-                P_GiveInventoryItem(player, SPR_COIN, MT_MONY_1);
+        case MT_TOKEN_AMMO: // Ammo token - you get this from the Weapons Trainer
+            if(player->ammo[am_bullets] >= 50)
+                return false;
+
+            player->ammo[am_bullets] = 50;
             break;
 
-            // gold 50
-        case SPR_CHST:
-            for(i = 0; i < 50; i++)
-                P_GiveInventoryItem(player, SPR_COIN, MT_MONY_1);
+        case MT_TOKEN_HEALTH: // Health token - from the Front's doctor
+            if(!P_GiveBody(player, healthamounts[gameskill]))
+                return false;
             break;
 
-            // ???
-        case SPR_HELT:
-            P_GiveInventoryItem(player, SPR_HELT, MT_TOKEN_TOUGHNESS);
-            P_GiveInventoryItem(player, SPR_GUNT, MT_TOKEN_ACCURACY);
-
-            // [STRIFE] TODO - verify
-            for(i = 0; i < 5 * player->numinventory + 300; i++)
-                P_GiveInventoryItem(player, SPR_COIN, MT_MONY_1);
+        case MT_TOKEN_ALARM: // Alarm token - particularly from the Oracle.
+            P_NoiseAlert(player->mo, player->mo);
+            A_AlertSpectreC(dialogtalker); // BUG: assumes in a dialog o_O
             break;
 
-            // metal armor
-        case SPR_ARM1:
-            if(!P_GiveArmor(player, -2))
-                P_GiveInventoryItem(player, sprnum, type);
+        case MT_TOKEN_DOOR1: // Door special 1
+            junk.tag = 222;
+            EV_DoDoor(&junk, open);
             break;
 
-            // leather armor
-        case SPR_ARM2:
-            if(!P_GiveArmor(player, -1))
+        case MT_TOKEN_PRISON_PASS: // Door special 1 - Prison pass
+            junk.tag = 223;
+            EV_DoDoor(&junk, open);
+            if(gamemap == 2) // If on Tarnhill, give Prison pass object
                 P_GiveInventoryItem(player, sprnum, type);
             break;
 
-            // communicator
-        case SPR_COMM:
-            if(!P_GivePower(player, pw_communicator))
-                return false;
+        case MT_TOKEN_SHOPCLOSE: // Door special 3 - "Shop close" - unused?
+            junk.tag = 222;
+            EV_DoDoor(&junk, close);
             break;
 
-            // map
-        case SPR_PMAP:
-            if(!P_GivePower(player, pw_allmap))
-                return false;
+        case MT_TOKEN_DOOR3: // Door special 4 (or 3? :P ) 
+            junk.tag = 224;
+            EV_DoDoor(&junk, close);
             break;
 
-            // rifle
-        case SPR_RIFL:
-            if(player->weaponowned[wp_rifle])
+        case MT_TOKEN_STAMINA: // Stamina upgrade
+            if(player->stamina >= 100)
                 return false;
 
-            if(!P_GiveWeapon(player, wp_rifle, false))
-                return false;
+            player->stamina += 10;
+            P_GiveBody(player, 200); // full healing
             break;
 
-            // flame thrower
-        case SPR_FLAM:
-            if(player->weaponowned[wp_flame])
+        case MT_TOKEN_NEW_ACCURACY: // Accuracy upgrade
+            if(player->accuracy >= 100)
                 return false;
 
-            if(!P_GiveWeapon(player, wp_flame, false))
-                return false;
+            player->accuracy += 10;
             break;
 
-            // missile launcher
-        case SPR_MMSL:
-            if(player->weaponowned[wp_missile])
-                return false;
-
-            if(!P_GiveWeapon(player, wp_missile, false))
-                return false;
+        case MT_SLIDESHOW: // Slideshow (start a finale)
+            gameaction = ga_victory;
+            if(gamemap == 10)
+                P_GiveItemToPlayer(player, SPR_TOKN, MT_TOKEN_QUEST17);
             break;
+        
+        default: // The default is to just give it as an inventory item.
+            P_GiveInventoryItem(player, sprnum, type);
+            break;
+        }
+        break;
 
-            // mauler
-        case SPR_TRPD:
-            if(player->weaponowned[wp_mauler])
-                return false;
+    default: // The ultimate default: Give it as an inventory item.
+        if(!P_GiveInventoryItem(player, sprnum, type))
+            return false;
+        break;
+    }
 
-            if(!P_GiveWeapon(player, wp_mauler, false))
-                return false;
-            break;
+    // Play sound.
+    if(player == &players[consoleplayer])
+        S_StartSound(NULL, sound);
 
-            // crossbow
-        case SPR_CBOW:
-            if(player->weaponowned[wp_elecbow])
-                return false;
+    return true;
 
-            if(!P_GiveWeapon(player, wp_elecbow, false))
-                return false;
-            break;
+    // check for other types
+    /*
+    switch(type)
+    {
+    // severed hand
 
+    // 300 gold
+
+    // ammo refill (at training)
+
+    // health refill (at front HQ)
+
+    // alarm
+
+    // door special 1
+
+    // door special 2
+
+    // door special 3
+
+    // door special 4
+
+    // stamina upgrade
+
+    // slideshow
+
+    default:
+        // check for sprites if no specific type is found
+        switch(sprnum)
+        {
+            // bullets
+
+            // box of bullets
+
+            // missile
+
+            // box of missiles
+
+            // battery
+
+
+
+            // backpack
+
+            // communicator
+
+
+            // rifle
+
+            // flame thrower
+
+            // missile launcher
+
+            // mauler
+
+
             // misc item
         default:
             if(!P_GiveInventoryItem(player, sprnum, type))
@@ -988,6 +1052,7 @@
 
     S_StartSound(player->mo, sfx_itemup);
     return true;
+    */
 }
 
 //
--- a/src/strife/p_inter.c
+++ b/src/strife/p_inter.c
@@ -418,7 +418,7 @@
     if(delta > toucher->height || delta < -8*FRACUNIT)
         return; // out of reach
 
-    sound = sfx_itemup;	
+    sound = sfx_itemup;
     player = toucher->player;
 
     // Dead thing touching.
--- a/src/strife/s_sound.c
+++ b/src/strife/s_sound.c
@@ -480,7 +480,7 @@
     }
 
     // kill old sound
-    S_StopSound(origin);
+    //S_StopSound(origin);
 
     // try to find a channel
     cnum = S_GetChannel(origin, sfx, false); // haleyjd: not a voice.