diff options
author | megamage <none@none> | 2009-01-18 17:58:13 -0600 |
---|---|---|
committer | megamage <none@none> | 2009-01-18 17:58:13 -0600 |
commit | c85c89dc0b0564113e48bfcaf96dc2af55d73bb8 (patch) | |
tree | b75e19414c6a9dc8bfd438f9e0c7a2e42aada9a6 /src/game/Spell.cpp | |
parent | 54ed3974138f2f51c3c42c4469f9f1541818f631 (diff) | |
parent | 613217fca7c2959fe3abbe593f4be65beedaeca8 (diff) |
*Merge.
--HG--
branch : trunk
Diffstat (limited to 'src/game/Spell.cpp')
-rw-r--r-- | src/game/Spell.cpp | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index b57b2f3ff5f..390adcecab2 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -4394,11 +4394,33 @@ uint8 Spell::CanCast(bool strict) case SPELL_AURA_FLY: { // not allow cast fly spells at old maps by players (all spells is self target) - if(m_caster->GetTypeId()==TYPEID_PLAYER) + if(m_caster->GetTypeId()==TYPEID_PLAYER && !((Player*)m_caster)->isGameMaster()) { uint32 v_map = GetVirtualMapForMapAndZone(m_caster->GetMapId(), m_caster->GetZoneId()); - if( !((Player*)m_caster)->isGameMaster() && v_map != 530 && !(v_map == 571 && ((Player*)m_caster)->HasSpell(54197))) - return SPELL_FAILED_NOT_HERE; + 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; + case 571: + { + if(!((Player*)m_caster)->HasSpell(54197)) + return SPELL_FAILED_NOT_HERE; + } break; + default: + { + if (!sWorld.getConfig(CONFIG_FLYING_MOUNTS_OTHERS)) + return SPELL_FAILED_NOT_HERE; + } break; + } } break; |