From f3f2d9eb85e5b5cdf27636003c575e611312ab58 Mon Sep 17 00:00:00 2001 From: xezon <4720891+xezon@users.noreply.github.com> Date: Thu, 19 Jun 2025 12:01:31 +0200 Subject: [PATCH] [GEN][ZH] Fix missing unit voice when attacking ground due wrong fallthrough at switch case GameMessage::MSG_DO_FORCE_ATTACK_GROUND in pickAndPlayUnitVoiceResponse() --- .../GameClient/MessageStream/CommandXlat.cpp | 30 +++++++++---------- .../GameClient/MessageStream/CommandXlat.cpp | 30 +++++++++---------- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/Generals/Code/GameEngine/Source/GameClient/MessageStream/CommandXlat.cpp b/Generals/Code/GameEngine/Source/GameClient/MessageStream/CommandXlat.cpp index 0710af5eab..1c094a4a73 100644 --- a/Generals/Code/GameEngine/Source/GameClient/MessageStream/CommandXlat.cpp +++ b/Generals/Code/GameEngine/Source/GameClient/MessageStream/CommandXlat.cpp @@ -422,20 +422,6 @@ void pickAndPlayUnitVoiceResponse( const DrawableList *list, GameMessage::Type m break; } - case GameMessage::MSG_DO_FORCE_ATTACK_GROUND: - { - soundToPlayPtr = templ->getPerUnitSound( "VoiceBombard" ); - objectWithSound = obj; - skip = true; - - if (TheAudio->isValidAudioEvent(soundToPlayPtr)) { - break; - } else { - // clear out the sound to play, and drop into the attack object logic. - soundToPlayPtr = NULL; - } - } - case GameMessage::MSG_SWITCH_WEAPONS: { if( info && info->m_weaponSlot ) @@ -457,7 +443,21 @@ void pickAndPlayUnitVoiceResponse( const DrawableList *list, GameMessage::Type m } break; } - + + case GameMessage::MSG_DO_FORCE_ATTACK_GROUND: + { + soundToPlayPtr = templ->getPerUnitSound( "VoiceBombard" ); + objectWithSound = obj; + skip = true; + + if (TheAudio->isValidAudioEvent(soundToPlayPtr)) { + break; + } else { + // clear out the sound to play, and drop into the attack object logic. + soundToPlayPtr = NULL; + FALLTHROUGH; + } + } case GameMessage::MSG_DO_FORCE_ATTACK_OBJECT: case GameMessage::MSG_DO_ATTACK_OBJECT: case GameMessage::MSG_DO_WEAPON_AT_OBJECT: diff --git a/GeneralsMD/Code/GameEngine/Source/GameClient/MessageStream/CommandXlat.cpp b/GeneralsMD/Code/GameEngine/Source/GameClient/MessageStream/CommandXlat.cpp index 2ed0568bde..5013e2e6eb 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameClient/MessageStream/CommandXlat.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameClient/MessageStream/CommandXlat.cpp @@ -481,20 +481,6 @@ void pickAndPlayUnitVoiceResponse( const DrawableList *list, GameMessage::Type m break; } - case GameMessage::MSG_DO_FORCE_ATTACK_GROUND: - { - soundToPlayPtr = templ->getPerUnitSound( "VoiceBombard" ); - objectWithSound = obj; - skip = true; - - if (TheAudio->isValidAudioEvent(soundToPlayPtr)) { - break; - } else { - // clear out the sound to play, and drop into the attack object logic. - soundToPlayPtr = NULL; - } - } - case GameMessage::MSG_SWITCH_WEAPONS: { if( info && info->m_weaponSlot ) @@ -516,7 +502,21 @@ void pickAndPlayUnitVoiceResponse( const DrawableList *list, GameMessage::Type m } break; } - + + case GameMessage::MSG_DO_FORCE_ATTACK_GROUND: + { + soundToPlayPtr = templ->getPerUnitSound( "VoiceBombard" ); + objectWithSound = obj; + skip = true; + + if (TheAudio->isValidAudioEvent(soundToPlayPtr)) { + break; + } else { + // clear out the sound to play, and drop into the attack object logic. + soundToPlayPtr = NULL; + FALLTHROUGH; + } + } case GameMessage::MSG_DO_FORCE_ATTACK_OBJECT: case GameMessage::MSG_DO_ATTACK_OBJECT: case GameMessage::MSG_DO_WEAPON_AT_OBJECT: