mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-22 23:30:14 +00:00
Disable pained sounds and tighten fidget criteria
Removed jump/land sounds (attack/wound sounds had pained growls). Made fidget discovery much stricter to exclude jerky battle animations. Changes: - Disabled playJumpSound for ground mounts (attack sounds too aggressive) - Disabled playLandSound for ground mounts (wound sounds have growls) - Fidget criteria now requires BOTH frequency AND replay (not OR) - Excluded IDs 11-15 (attacks) in addition to 16-21 (combat) - Only animations with proper idle metadata will be selected
This commit is contained in:
parent
a88c5f9bb8
commit
fe3c6a6a79
2 changed files with 24 additions and 26 deletions
|
|
@ -277,16 +277,16 @@ void MountSoundManager::playJumpSound() {
|
|||
if (elapsed < 200) return;
|
||||
lastActionSoundTime_ = now;
|
||||
|
||||
// Jump effort sound
|
||||
if (currentMountType_ == MountType::GROUND && !horseJumpSounds_.empty()) {
|
||||
// TODO: Select family-specific sounds once organized by family
|
||||
static std::mt19937 rng(std::random_device{}());
|
||||
std::uniform_int_distribution<size_t> dist(0, horseJumpSounds_.size() - 1);
|
||||
const auto& sample = horseJumpSounds_[dist(rng)];
|
||||
if (!sample.data.empty()) {
|
||||
AudioEngine::instance().playSound2D(sample.data, 0.5f * volumeScale_, 1.1f);
|
||||
}
|
||||
} else if (currentMountType_ == MountType::FLYING && !wingFlapSounds_.empty()) {
|
||||
// Jump effort sound - DISABLED (attack sounds have pained growls)
|
||||
// if (currentMountType_ == MountType::GROUND && !horseJumpSounds_.empty()) {
|
||||
// static std::mt19937 rng(std::random_device{}());
|
||||
// std::uniform_int_distribution<size_t> dist(0, horseJumpSounds_.size() - 1);
|
||||
// const auto& sample = horseJumpSounds_[dist(rng)];
|
||||
// if (!sample.data.empty()) {
|
||||
// AudioEngine::instance().playSound2D(sample.data, 0.5f * volumeScale_, 1.1f);
|
||||
// }
|
||||
// } else
|
||||
if (currentMountType_ == MountType::FLYING && !wingFlapSounds_.empty()) {
|
||||
// Flying mounts: wing whoosh
|
||||
static std::mt19937 rng(std::random_device{}());
|
||||
std::uniform_int_distribution<size_t> dist(0, wingFlapSounds_.size() - 1);
|
||||
|
|
@ -306,16 +306,15 @@ void MountSoundManager::playLandSound() {
|
|||
if (elapsed < 200) return;
|
||||
lastActionSoundTime_ = now;
|
||||
|
||||
// Landing thud/hoof sound
|
||||
if (currentMountType_ == MountType::GROUND && !horseLandSounds_.empty()) {
|
||||
// Ground mounts: hoof thud / impact
|
||||
static std::mt19937 rng(std::random_device{}());
|
||||
std::uniform_int_distribution<size_t> dist(0, horseLandSounds_.size() - 1);
|
||||
const auto& sample = horseLandSounds_[dist(rng)];
|
||||
if (!sample.data.empty()) {
|
||||
AudioEngine::instance().playSound2D(sample.data, 0.6f * volumeScale_, 0.85f); // Lower pitch for thud
|
||||
}
|
||||
}
|
||||
// Landing thud/hoof sound - DISABLED (wound sounds have pained growls)
|
||||
// if (currentMountType_ == MountType::GROUND && !horseLandSounds_.empty()) {
|
||||
// static std::mt19937 rng(std::random_device{}());
|
||||
// std::uniform_int_distribution<size_t> dist(0, horseLandSounds_.size() - 1);
|
||||
// const auto& sample = horseLandSounds_[dist(rng)];
|
||||
// if (!sample.data.empty()) {
|
||||
// AudioEngine::instance().playSound2D(sample.data, 0.6f * volumeScale_, 0.85f);
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
void MountSoundManager::playIdleSound() {
|
||||
|
|
|
|||
|
|
@ -752,15 +752,14 @@ void Renderer::setMounted(uint32_t mountInstId, uint32_t mountDisplayId, float h
|
|||
" speed=", seq.movingSpeed);
|
||||
}
|
||||
|
||||
// Exclude known problematic animations: death (5,6), combat (16-21), wounds (7-9)
|
||||
// Exclude known problematic animations: death (5-6), wounds (7-9), combat (16-21), attacks (11-15)
|
||||
bool isDeathOrWound = (seq.id >= 5 && seq.id <= 9);
|
||||
bool isCombat = (seq.id >= 16 && seq.id <= 21);
|
||||
bool isAttackOrCombat = (seq.id >= 11 && 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 &&
|
||||
!isDeathOrWound && !isCombat && !isSpecial) {
|
||||
// Select fidgets: STRICT - require BOTH frequency AND replay to ensure proper idle markers
|
||||
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) ||
|
||||
(seq.aliasNext == mountAnims_.stand) ||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue