aboutsummaryrefslogtreecommitdiff
path: root/src/game/Player.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/Player.cpp')
-rw-r--r--src/game/Player.cpp31
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;
+}