diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/game/Spell.cpp | 26 | ||||
-rw-r--r-- | src/game/World.cpp | 5 | ||||
-rw-r--r-- | src/game/World.h | 4 | ||||
-rw-r--r-- | src/trinitycore/trinitycore.conf.dist | 18 |
4 files changed, 50 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; diff --git a/src/game/World.cpp b/src/game/World.cpp index 89a0b75cd36..219c656dcaf 100644 --- a/src/game/World.cpp +++ b/src/game/World.cpp @@ -526,6 +526,11 @@ void World::LoadConfigSettings(bool reload) ///- Read other configuration items from the config file + ///- Do we allow flying mounts in Azeroth/Outland and others (others being instances, BGs, arenas)? + m_configs[CONFIG_FLYING_MOUNTS_AZEROTH] = sConfig.GetBoolDefault("FlyingMounts.Azeroth", false); + m_configs[CONFIG_FLYING_MOUNTS_OUTLAND] = sConfig.GetBoolDefault("FlyingMounts.Outland", true); + m_configs[CONFIG_FLYING_MOUNTS_OTHERS] = sConfig.GetBoolDefault("FlyingMounts.Others", false); + m_configs[CONFIG_COMPRESSION] = sConfig.GetIntDefault("Compression", 1); if(m_configs[CONFIG_COMPRESSION] < 1 || m_configs[CONFIG_COMPRESSION] > 9) { diff --git a/src/game/World.h b/src/game/World.h index 63d9b52d7f2..e2e2096726a 100644 --- a/src/game/World.h +++ b/src/game/World.h @@ -184,6 +184,10 @@ enum WorldConfigs CONFIG_ARENA_AUTO_DISTRIBUTE_INTERVAL_DAYS, CONFIG_BATTLEGROUND_PREMATURE_FINISH_TIMER, + CONFIG_FLYING_MOUNTS_AZEROTH, + CONFIG_FLYING_MOUNTS_OUTLAND, + CONFIG_FLYING_MOUNTS_OTHERS, + CONFIG_MAX_WHO, CONFIG_BG_START_MUSIC, CONFIG_START_ALL_SPELLS, diff --git a/src/trinitycore/trinitycore.conf.dist b/src/trinitycore/trinitycore.conf.dist index 27253cc875b..7da04b0bdf6 100644 --- a/src/trinitycore/trinitycore.conf.dist +++ b/src/trinitycore/trinitycore.conf.dist @@ -502,6 +502,21 @@ LogColors = "" # Default: 0 (false) # 1 (true) # +# FlyingMounts.Azeroth +# Enable/disable flying mounts in Azeroth (map 0 and 1). +# Default: 0 - off +# 1 - on (may be crashy) +# +# FlyingMounts.Outland +# Enable/disable flying mounts in Outland (map 530). +# Default: 1 - on +# 0 - off +# +# FlyingMounts.Others +# Enable/disable flying mounts in other maps (instances, arenas, BGs, etc). +# Default: 0 - off +# 1 - on (may be crashy) +# # CastUnstuck # Allow cast or not Unstuck spell at .start or client Help option use # Default: 1 (true) @@ -607,6 +622,9 @@ ActivateWeather = 1 Battleground.CastDeserter = 1 Battleground.QueueAnnouncer.Enable = 1 Battleground.QueueAnnouncer.PlayerOnly = 0 +FlyingMounts.Azeroth = 0 +FlyingMounts.Outland = 1 +FlyingMounts.Others = 0 CastUnstuck = 1 Instance.IgnoreLevel = 0 Instance.IgnoreRaid = 0 |