aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game/Spell.cpp26
-rw-r--r--src/game/World.cpp5
-rw-r--r--src/game/World.h4
-rw-r--r--src/trinitycore/trinitycore.conf.dist18
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