From 2e2ca24f8d25f7e27ff46c462cef5383a08c596d Mon Sep 17 00:00:00 2001 From: Kelsi Date: Tue, 10 Feb 2026 20:28:13 -0800 Subject: [PATCH] Exclude death and wound animations from fidget discovery Horse was playing death animation on idle. Added explicit filtering to exclude death (5-6), wounds (7-9), combat (16-21), and specials (2-3). Changes: - Check animation ID ranges before adding to fidget list - Prevents death/wound animations from being selected as idle fidgets - Keeps metadata-based discovery but adds safety exclusions --- src/rendering/renderer.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/rendering/renderer.cpp b/src/rendering/renderer.cpp index 32fdf8c6..a5ed710d 100644 --- a/src/rendering/renderer.cpp +++ b/src/rendering/renderer.cpp @@ -735,9 +735,15 @@ void Renderer::setMounted(uint32_t mountInstId, uint32_t mountDisplayId, float h " speed=", seq.movingSpeed); } - // Select fidgets: non-looping + (frequency OR replay) + stationary + // Exclude known problematic animations: death (5,6), combat (16-21), wounds (7-9) + bool isDeathOrWound = (seq.id >= 5 && seq.id <= 9); + bool isCombat = (seq.id >= 16 && seq.id <= 21); + bool isSpecial = (seq.id == 2 || seq.id == 3); // Often aggressive specials + + // Select fidgets: non-looping + (frequency OR replay) + stationary + not death/combat // Relaxed: some mounts may only have one of the markers - if (!isLoop && (hasFrequency || hasReplay) && isStationary && reasonableDuration) { + if (!isLoop && (hasFrequency || hasReplay) && isStationary && reasonableDuration && + !isDeathOrWound && !isCombat && !isSpecial) { // Bonus: chains back to stand (indicates idle behavior) bool chainsToStand = (seq.nextAnimation == (int16_t)mountAnims_.stand) || (seq.aliasNext == mountAnims_.stand) ||