diff --git a/Source/inv.cpp b/Source/inv.cpp index 6c8f3e1ea..bb819ce50 100644 --- a/Source/inv.cpp +++ b/Source/inv.cpp @@ -1586,6 +1586,7 @@ void InvGetItem(int pnum, Item *item, int ii) void AutoGetItem(int pnum, Item *item, int ii) { bool done; + bool autoEquipped = false; if (pcurs != CURSOR_HAND) { return; @@ -1615,6 +1616,10 @@ void AutoGetItem(int pnum, Item *item, int ii) } } else { done = AutoEquipEnabled(player, player.HoldItem) && AutoEquip(pnum, player.HoldItem); + if (done) { + autoEquipped = true; + } + if (!done) { done = AutoPlaceItemInBelt(player, player.HoldItem, true); } @@ -1624,6 +1629,10 @@ void AutoGetItem(int pnum, Item *item, int ii) } if (done) { + if (!autoEquipped && sgOptions.Audio.bItemPickupSound && pnum == MyPlayerId) { + PlaySFX(IS_IGRAB); + } + CleanupItems(&Items[ii], ii); return; } diff --git a/Source/options.cpp b/Source/options.cpp index d51459a4d..f8f098411 100644 --- a/Source/options.cpp +++ b/Source/options.cpp @@ -227,6 +227,7 @@ void LoadOptions() sgOptions.Audio.nMusicVolume = GetIniInt("Audio", "Music Volume", VOLUME_MAX); sgOptions.Audio.bWalkingSound = GetIniBool("Audio", "Walking Sound", true); sgOptions.Audio.bAutoEquipSound = GetIniBool("Audio", "Auto Equip Sound", AUTO_PICKUP_DEFAULT(false)); + sgOptions.Audio.bItemPickupSound = GetIniBool("Audio", "Item Pickup Sound", AUTO_PICKUP_DEFAULT(false)); sgOptions.Audio.nSampleRate = GetIniInt("Audio", "Sample Rate", DEFAULT_AUDIO_SAMPLE_RATE); sgOptions.Audio.nChannels = GetIniInt("Audio", "Channels", DEFAULT_AUDIO_CHANNELS); @@ -382,6 +383,7 @@ void SaveOptions() SetIniValue("Audio", "Music Volume", sgOptions.Audio.nMusicVolume); SetIniValue("Audio", "Walking Sound", sgOptions.Audio.bWalkingSound); SetIniValue("Audio", "Auto Equip Sound", sgOptions.Audio.bAutoEquipSound); + SetIniValue("Audio", "Item Pickup Sound", sgOptions.Audio.bItemPickupSound); SetIniValue("Audio", "Sample Rate", sgOptions.Audio.nSampleRate); SetIniValue("Audio", "Channels", sgOptions.Audio.nChannels); diff --git a/Source/options.h b/Source/options.h index a8d6581ce..f75567d6c 100644 --- a/Source/options.h +++ b/Source/options.h @@ -45,6 +45,8 @@ struct AudioOptions { bool bWalkingSound; /** @brief Automatically equipping items on pickup emits the equipment sound. */ bool bAutoEquipSound; + /** @brief Picking up items emits the items pickup sound. */ + bool bItemPickupSound; /** @brief Output sample rate (Hz) */ std::uint32_t nSampleRate; diff --git a/Source/qol/autopickup.cpp b/Source/qol/autopickup.cpp index 667873213..1137fb102 100644 --- a/Source/qol/autopickup.cpp +++ b/Source/qol/autopickup.cpp @@ -52,7 +52,6 @@ void AutoGoldPickup(int pnum) if (item._itype == ItemType::Gold) { NetSendCmdGItem(true, CMD_REQUESTAGITEM, pnum, pnum, itemIndex); item._iRequest = true; - PlaySFX(IS_IGRAB); } } }