From 0baf2d1e1eb38c636df4a89a693ba73b93b4c612 Mon Sep 17 00:00:00 2001 From: ModoX Date: Mon, 9 Jan 2023 11:36:01 +0100 Subject: [PATCH] Core/Instances: Drop allowMount column in instance_template as it is already handled properly by SPELL_ATTR0_OUTDOORS_ONLY --- sql/updates/world/4.3.4/2023_01_09_00_world.sql | 2 ++ src/server/game/Globals/ObjectMgr.cpp | 6 ++---- src/server/game/Globals/ObjectMgr.h | 1 - src/server/game/Handlers/MovementHandler.cpp | 10 ++-------- src/server/game/Spells/Spell.cpp | 8 -------- 5 files changed, 6 insertions(+), 21 deletions(-) create mode 100644 sql/updates/world/4.3.4/2023_01_09_00_world.sql diff --git a/sql/updates/world/4.3.4/2023_01_09_00_world.sql b/sql/updates/world/4.3.4/2023_01_09_00_world.sql new file mode 100644 index 0000000000..d8394b69e5 --- /dev/null +++ b/sql/updates/world/4.3.4/2023_01_09_00_world.sql @@ -0,0 +1,2 @@ +-- +ALTER TABLE `instance_template` DROP `allowMount`; diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 1969fda3c1..2d79b087e2 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -5520,8 +5520,8 @@ void ObjectMgr::LoadInstanceTemplate() { uint32 oldMSTime = getMSTime(); - // 0 1 2 4 - QueryResult result = WorldDatabase.Query("SELECT map, parent, script, allowMount FROM instance_template"); + // 0 1 2 + QueryResult result = WorldDatabase.Query("SELECT map, parent, script FROM instance_template"); if (!result) { @@ -5543,8 +5543,6 @@ void ObjectMgr::LoadInstanceTemplate() } InstanceTemplate instanceTemplate; - - instanceTemplate.AllowMount = fields[3].GetBool(); instanceTemplate.Parent = uint32(fields[1].GetUInt16()); instanceTemplate.ScriptId = sObjectMgr->GetScriptId(fields[2].GetString()); diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h index 20b91d4ca9..1d786ebe2a 100644 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -158,7 +158,6 @@ struct InstanceTemplate uint32 Parent; uint32 ScriptId; - bool AllowMount; }; typedef std::unordered_map InstanceTemplateContainer; diff --git a/src/server/game/Handlers/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp index 13f87af91a..072a98cfe6 100644 --- a/src/server/game/Handlers/MovementHandler.cpp +++ b/src/server/game/Handlers/MovementHandler.cpp @@ -169,13 +169,14 @@ void WorldSession::HandleMoveWorldportAck() // resurrect character at enter into instance where his corpse exist after add to map if (mEntry->IsDungeon() && !GetPlayer()->IsAlive()) + { if (GetPlayer()->GetCorpseLocation().GetMapId() == mEntry->ID) { GetPlayer()->ResurrectPlayer(0.5f, false); GetPlayer()->SpawnCorpseBones(); } + } - bool allowMount = !mEntry->IsDungeon() || mEntry->IsBattlegroundOrArena(); if (mInstance) { // check if this instance has a reset time and send it to player if so @@ -195,15 +196,8 @@ void WorldSession::HandleMoveWorldportAck() // check if instance is valid if (!GetPlayer()->CheckInstanceValidity(false)) GetPlayer()->m_InstanceValid = false; - - // instance mounting is handled in InstanceTemplate - allowMount = mInstance->AllowMount; } - // mount allow check - if (!allowMount) - _player->RemoveAurasByType(SPELL_AURA_MOUNTED); - // update zone immediately, otherwise leave channel will cause crash in mtmap uint32 newzone, newarea; GetPlayer()->GetZoneAndAreaId(newzone, newarea); diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index fdb0a940d8..d7f441bba8 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -6412,14 +6412,6 @@ SpellCastResult Spell::CheckCast(bool strict, uint32* param1 /*= nullptr*/, uint if (unitCaster->IsInWater() && m_spellInfo->HasAura(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED)) return SPELL_FAILED_ONLY_ABOVEWATER; - // Ignore map check if spell have AreaId. AreaId already checked and this prevent special mount spells - bool allowMount = !unitCaster->GetMap()->IsDungeon() || unitCaster->GetMap()->IsBattlegroundOrArena(); - InstanceTemplate const* it = sObjectMgr->GetInstanceTemplate(unitCaster->GetMapId()); - if (it) - allowMount = it->AllowMount; - if (unitCaster->GetTypeId() == TYPEID_PLAYER && !allowMount && !m_spellInfo->AreaGroupId) - return SPELL_FAILED_NO_MOUNTS_ALLOWED; - if (unitCaster->IsInDisallowedMountForm()) { if (mountResult)