diff --git a/src/audio/sfx_base.hpp b/src/audio/sfx_base.hpp index da601bbf1..803ff4fca 100644 --- a/src/audio/sfx_base.hpp +++ b/src/audio/sfx_base.hpp @@ -33,7 +33,7 @@ class Vec3; /** * \brief The base class for sound effects. * It gets a sound buffer from the sound - * manager, which is shared between all instances. Do create a new sound + * manager, which is shared between all instances. To create a new sound * effect object, use sfx_manager->getSFX(...); do not create an instance * with new, since SFXManager makes sure to stop/restart all SFX (esp. * looping sfx like engine sounds) when necessary. diff --git a/src/karts/controller/local_player_controller.cpp b/src/karts/controller/local_player_controller.cpp index 40d8ceffc..5d8ce42bf 100644 --- a/src/karts/controller/local_player_controller.cpp +++ b/src/karts/controller/local_player_controller.cpp @@ -392,8 +392,6 @@ void LocalPlayerController::collectedItem(const ItemState &item_state, switch(item_state.getType()) { case Item::ITEM_BANANA: - m_kart->playSound(m_ugh_sound); - break; case Item::ITEM_BUBBLEGUM: //More sounds are played by the kart class //See Kart::collectedItem() diff --git a/src/karts/kart.cpp b/src/karts/kart.cpp index 461423be3..65e077379 100644 --- a/src/karts/kart.cpp +++ b/src/karts/kart.cpp @@ -3080,7 +3080,12 @@ void Kart::kartIsInRestNow() SFXBase* Kart::getNextEmitter() { - m_emitter_id = (m_emitter_id + 1) % 3; + m_emitter_id = (m_emitter_id + 1) % EMITTER_COUNT; + + // The emitter is requested when a new sound is to be played. + // Always reset the volume to 1.0f (full), see #3596 + m_emitters[m_emitter_id]->setVolume(1.0f); + return m_emitters[m_emitter_id]; }