From 7e85e0b2ef6c66e34549faba43aa1b8e37c3a9d9 Mon Sep 17 00:00:00 2001 From: Kelsi Date: Tue, 10 Feb 2026 20:36:12 -0800 Subject: [PATCH] Reduce idle sound frequency and restore fidget discovery Idle sounds were too frequent and strict criteria blocked all fidgets. Changes: - Idle sounds now 45-90 seconds apart (was 20-40) - Fidget criteria back to OR (frequency OR replay) instead of AND - Keeps all ID exclusions: 2-3, 5-9, 11-21 to prevent battle animations - Should now discover proper fidgets while filtering problematic ones --- src/rendering/renderer.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/rendering/renderer.cpp b/src/rendering/renderer.cpp index be174f40..5b76ae3f 100644 --- a/src/rendering/renderer.cpp +++ b/src/rendering/renderer.cpp @@ -757,8 +757,9 @@ void Renderer::setMounted(uint32_t mountInstId, uint32_t mountDisplayId, float h bool isAttackOrCombat = (seq.id >= 11 && seq.id <= 21); bool isSpecial = (seq.id == 2 || seq.id == 3); // Often aggressive specials - // Select fidgets: STRICT - require BOTH frequency AND replay to ensure proper idle markers - if (!isLoop && hasFrequency && hasReplay && isStationary && reasonableDuration && + // Select fidgets: (frequency OR replay) + exclude problematic ID ranges + // Relaxed back to OR since some mounts may only have one metadata marker + if (!isLoop && (hasFrequency || hasReplay) && isStationary && reasonableDuration && !isDeathOrWound && !isAttackOrCombat && !isSpecial) { // Bonus: chains back to stand (indicates idle behavior) bool chainsToStand = (seq.nextAnimation == (int16_t)mountAnims_.stand) || @@ -1124,15 +1125,15 @@ void Renderer::updateCharacterAnimation() { mountActiveFidget_ = 0; // Cancel any active fidget } - // Idle ambient sounds: snorts and whinnies only, less frequent + // Idle ambient sounds: snorts and whinnies only, infrequent if (!moving && mountSoundManager) { mountIdleSoundTimer_ += lastDeltaTime_; - static float nextIdleSoundTime = 20.0f + (rand() % 21); // 20-40 seconds + static float nextIdleSoundTime = 45.0f + (rand() % 46); // 45-90 seconds if (mountIdleSoundTimer_ >= nextIdleSoundTime) { mountSoundManager->playIdleSound(); mountIdleSoundTimer_ = 0.0f; - nextIdleSoundTime = 20.0f + (rand() % 21); // Randomize next sound time + nextIdleSoundTime = 45.0f + (rand() % 46); // Randomize next sound time } } else if (moving) { mountIdleSoundTimer_ = 0.0f; // Reset timer when moving