diff options
Diffstat (limited to 'src/game/Player.cpp')
-rw-r--r-- | src/game/Player.cpp | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/src/game/Player.cpp b/src/game/Player.cpp index ccf3eefcb6f..fffe5ec5fb2 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -19428,8 +19428,7 @@ void Player::SetClientControl(Unit* target, uint8 allowMove) void Player::UpdateZoneDependentAuras( uint32 newZone ) { // remove new continent flight forms - uint32 v_map = GetVirtualMapForMapAndZone(GetMapId(), newZone); - if( !isGameMaster() && v_map != 530 && v_map != 571) + if( !IsAllowUseFlyMountsHere() ) { RemoveSpellsCausingAura(SPELL_AURA_MOD_INCREASE_FLIGHT_SPEED); RemoveSpellsCausingAura(SPELL_AURA_FLY); @@ -20151,3 +20150,31 @@ uint32 Player::CalculateTalentsPoints() const return talentPointsForLevel; } + +bool Player::IsAllowUseFlyMountsHere() const +{ + if (isGameMaster()) + return true; + + switch(GetVirtualMapForMapAndZone(GetMapId(), GetZoneId())) + { + case 0: + case 1: + if (!sWorld.getConfig(CONFIG_FLYING_MOUNTS_AZEROTH)) + return false; + break; + case 530: + if (!sWorld.getConfig(CONFIG_FLYING_MOUNTS_OUTLAND)) + return false; + break; + case 571: + if(!HasSpell(54197)) + return false; + break; + default: + if (!sWorld.getConfig(CONFIG_FLYING_MOUNTS_OTHERS)) + return false; + break; + } + return true; +} |