diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index ac808bf103f..cc814de6511 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -18788,21 +18788,19 @@ void Player::UpdateMountCapabilities() { if (HasAuraType(SPELL_AURA_MOUNTED)) { - Unit::AuraEffectList const& auraList = GetAuraEffectsByType(SPELL_AURA_MOUNTED); - if (!auraList.empty()) + for (AuraEffect* aurEff : GetAuraEffectsByType(SPELL_AURA_MOUNTED)) { - AuraEffect* mountEffect = auraList.front(); - if (MountCapabilityEntry const* mountCapability = mountEffect->GetBase()->GetUnitOwner()->GetMountCapability(uint32(mountEffect->GetMiscValueB()))) - { - if (mountCapability->ID != uint32(mountEffect->GetAmount())) - { - Unit* target = mountEffect->GetBase()->GetApplicationOfTarget(GetGUID())->GetTarget(); - if (MountCapabilityEntry const* oldMountCapability = sMountCapabilityStore.LookupEntry(mountEffect->GetAmount())) - RemoveAurasDueToSpell(oldMountCapability->ModSpellAuraID, target->GetGUID()); + MountCapabilityEntry const* capability = GetMountCapability(uint32(aurEff->GetMiscValueB())); + if (!capability) + continue; - CastSpell(target, mountCapability->ModSpellAuraID, true); - mountEffect->SetAmount(mountCapability->ID); - } + if (capability->ID != aurEff->GetAmount()) + { + if (MountCapabilityEntry const* oldMountCapability = sMountCapabilityStore.LookupEntry(aurEff->GetAmount())) + RemoveAurasDueToSpell(oldMountCapability->ModSpellAuraID, aurEff->GetCasterGUID()); + + CastSpell(this, capability->ModSpellAuraID, true); + aurEff->SetAmount(capability->ID); } } } diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 042fec8ec1a..9e1cb35bfb2 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -3312,10 +3312,6 @@ void Unit::ProcessTerrainStatusUpdate(ZLiquidStatus status, Optional if (curLiquid && curLiquid->SpellID && (!player || !player->IsGameMaster())) CastSpell(this, curLiquid->SpellID, true); - - // Update mount capabilities when changing liquidstatus (enabling / disabling flight auras for example) - if (player) - player->UpdateMountCapabilities(); } } void Unit::DeMorph()