aboutsummaryrefslogtreecommitdiff
path: root/src/game/Spell.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/Spell.cpp')
-rw-r--r--src/game/Spell.cpp26
1 files changed, 23 insertions, 3 deletions
diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp
index aa0d24ffdb8..ddfb9c01be5 100644
--- a/src/game/Spell.cpp
+++ b/src/game/Spell.cpp
@@ -4168,9 +4168,29 @@ uint8 Spell::CanCast(bool strict)
// not allow cast fly spells at old maps by players (all spells is self target)
if(m_caster->GetTypeId()==TYPEID_PLAYER)
{
- if( !((Player*)m_caster)->isGameMaster() &&
- GetVirtualMapForMapAndZone(m_caster->GetMapId(),m_caster->GetZoneId()) != 530)
- return SPELL_FAILED_NOT_HERE;
+ if(!((Player*)m_caster)->isGameMaster())
+ {
+ uint32 v_map = GetVirtualMapForMapAndZone(m_caster->GetMapId(),m_caster->GetZoneId());
+ switch(v_map)
+ {
+ case 0:
+ case 1:
+ {
+ if (!sWorld.getConfig(CONFIG_FLYING_MOUNTS_AZEROTH))
+ return SPELL_FAILED_NOT_HERE;
+ } break;
+ case 530:
+ {
+ if (!sWorld.getConfig(CONFIG_FLYING_MOUNTS_OUTLAND))
+ return SPELL_FAILED_NOT_HERE;
+ } break;
+ default:
+ {
+ if (!sWorld.getConfig(CONFIG_FLYING_MOUNTS_OTHERS))
+ return SPELL_FAILED_NOT_HERE;
+ } break;
+ }
+ }
}
break;