diff --git a/engine/MUNGA_L4/L4AUDLVL.cpp b/engine/MUNGA_L4/L4AUDLVL.cpp index 53c5c3d..ee4116e 100644 --- a/engine/MUNGA_L4/L4AUDLVL.cpp +++ b/engine/MUNGA_L4/L4AUDLVL.cpp @@ -205,7 +205,7 @@ void PatchLevelOfDetail::PlayNote(SourceSet sourceSet) void PatchLevelOfDetail::StopNote(SourceSet sourceSet) { - { static int s_s=0; if (getenv("BT_AUDIO_LOG") && s_s++<30) DEBUG_STREAM << "[audio] StopNote count=" << sourceSet.count << " src0=" << (sourceSet.count>0?sourceSet.sources[0]:0) << "\n" << std::flush; } + if (getenv("BT_AUDIO_LOG")) { static int s_s=0; if (s_s++<400) { DEBUG_STREAM << "[audio] StopNote"; for (int _i=0;_i0 && sourceSet.sources != NULL) { alSourceStopv(sourceSet.count, sourceSet.sources); diff --git a/game/reconstructed/projweap.cpp b/game/reconstructed/projweap.cpp index 032adeb..2a3dc96 100644 --- a/game/reconstructed/projweap.cpp +++ b/game/reconstructed/projweap.cpp @@ -673,6 +673,18 @@ void if (weaponAlarm.GetState() != NoAmmoState && weaponAlarm.GetState() != JammedState) weaponAlarm.SetLevel(0); // Firing } + else + { + // Idle/reload: drive the ready state so the WeaponState audio is correct. + // The recon set Firing(0)/Loading(3)/Jammed/NoAmmo but NEVER a ready level, + // so at idle the launcher sat in Loading(3) forever and its WeaponState + // audio looped MissileLoading indefinitely (the loop stops only when the + // alarm LEAVES the loading state). Reflect readiness: Loaded(2, charge + + // ammo up = silent ready) once ReadyToFire, else Loading(3, reloading) -- + // SetLevel fires audio only on a real change, so this just yields the + // natural Firing -> Loading(reload) -> Loaded(ready) cycle. [T2] + weaponAlarm.SetLevel(ReadyToFire() ? 2 : 3); + } break; }