From e447351b0fdb9a2d820f76b3a6cf5712d2e8b9c3 Mon Sep 17 00:00:00 2001 From: sudlud Date: Sun, 21 Jan 2024 11:33:00 +0100 Subject: [PATCH] fix(Core/Creature): Remove automated z spawn correction (#18200) * fix(Core/Creature): Remove automated z spawn correction * comment out unused parameter * remove gridLoad parameter from Creature::LoadCreatureFromDB() --- src/server/game/Entities/Creature/Creature.cpp | 12 +----------- src/server/game/Entities/Creature/Creature.h | 4 ++-- src/server/game/Entities/Creature/CreatureData.h | 1 - src/server/game/Globals/ObjectMgr.cpp | 2 +- src/server/scripts/Commands/cs_npc.cpp | 2 +- src/server/scripts/Commands/cs_wp.cpp | 8 ++++---- src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp | 2 +- 7 files changed, 10 insertions(+), 21 deletions(-) diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 93f03ea4b..e71ef8759 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -1627,7 +1627,7 @@ bool Creature::isVendorWithIconSpeak() const return m_creatureInfo->IconName == "Speak" && m_creatureData->npcflag & UNIT_NPC_FLAG_VENDOR; } -bool Creature::LoadCreatureFromDB(ObjectGuid::LowType spawnId, Map* map, bool addToMap, bool gridLoad, bool allowDuplicate /*= false*/) +bool Creature::LoadCreatureFromDB(ObjectGuid::LowType spawnId, Map* map, bool addToMap, bool allowDuplicate /*= false*/) { if (!allowDuplicate) { @@ -1666,16 +1666,6 @@ bool Creature::LoadCreatureFromDB(ObjectGuid::LowType spawnId, Map* map, bool ad return false; } - // xinef: fix from db - if ((addToMap || gridLoad) && !data->overwrittenZ) - { - float tz = map->GetHeight(data->posX, data->posY, data->posZ + 0.42f, true); - if (tz >= data->posZ && tz - data->posZ <= 0.42f) - const_cast(data)->posZ = tz + 0.1f; - - const_cast(data)->overwrittenZ = true; - } - // xinef: this has to be assigned before Create function, properly loads equipment id from DB m_creatureData = data; m_spawnId = spawnId; diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h index d52dc2fd8..cfe079ef3 100644 --- a/src/server/game/Entities/Creature/Creature.h +++ b/src/server/game/Entities/Creature/Creature.h @@ -210,8 +210,8 @@ public: void setDeathState(DeathState s, bool despawn = false) override; // override virtual Unit::setDeathState - bool LoadFromDB(ObjectGuid::LowType guid, Map* map, bool allowDuplicate = false) { return LoadCreatureFromDB(guid, map, false, true, allowDuplicate); } - bool LoadCreatureFromDB(ObjectGuid::LowType guid, Map* map, bool addToMap = true, bool gridLoad = false, bool allowDuplicate = false); + bool LoadFromDB(ObjectGuid::LowType guid, Map* map, bool allowDuplicate = false) { return LoadCreatureFromDB(guid, map, false, allowDuplicate); } + bool LoadCreatureFromDB(ObjectGuid::LowType guid, Map* map, bool addToMap = true, bool allowDuplicate = false); void SaveToDB(); // overriden in Pet virtual void SaveToDB(uint32 mapid, uint8 spawnMask, uint32 phaseMask); diff --git a/src/server/game/Entities/Creature/CreatureData.h b/src/server/game/Entities/Creature/CreatureData.h index 2d33cb9d3..3b8cb2cfc 100644 --- a/src/server/game/Entities/Creature/CreatureData.h +++ b/src/server/game/Entities/Creature/CreatureData.h @@ -381,7 +381,6 @@ struct CreatureData uint32 dynamicflags{0}; uint32 ScriptId; bool dbData{true}; - bool overwrittenZ{false}; }; struct CreatureModelInfo diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 7d09dacc2..484c76c37 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -2466,7 +2466,7 @@ uint32 ObjectMgr::AddCreData(uint32 entry, uint32 mapId, float x, float y, float if (!map->Instanceable() && !map->IsRemovalGrid(x, y)) { Creature* creature = new Creature(); - if (!creature->LoadCreatureFromDB(spawnId, map, true, false, true)) + if (!creature->LoadCreatureFromDB(spawnId, map, true, true)) { LOG_ERROR("sql.sql", "AddCreature: Cannot add creature entry {} to map", entry); delete creature; diff --git a/src/server/scripts/Commands/cs_npc.cpp b/src/server/scripts/Commands/cs_npc.cpp index d555e9e0b..7b32bbd18 100644 --- a/src/server/scripts/Commands/cs_npc.cpp +++ b/src/server/scripts/Commands/cs_npc.cpp @@ -249,7 +249,7 @@ public: creature->CleanupsBeforeDelete(); delete creature; creature = new Creature(); - if (!creature->LoadCreatureFromDB(spawnId, map, true, false, true)) + if (!creature->LoadCreatureFromDB(spawnId, map, true, true)) { delete creature; return false; diff --git a/src/server/scripts/Commands/cs_wp.cpp b/src/server/scripts/Commands/cs_wp.cpp index 62383a45a..b968b72b7 100644 --- a/src/server/scripts/Commands/cs_wp.cpp +++ b/src/server/scripts/Commands/cs_wp.cpp @@ -700,7 +700,7 @@ public: wpCreature2->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()), chr->GetPhaseMaskForSpawn()); // To call _LoadGoods(); _LoadQuests(); CreateTrainerSpells(); //TODO: Should we first use "Create" then use "LoadFromDB"? - if (!wpCreature2->LoadCreatureFromDB(wpCreature2->GetSpawnId(), map, true, false, true)) + if (!wpCreature2->LoadCreatureFromDB(wpCreature2->GetSpawnId(), map, true, true)) { handler->PSendSysMessage(LANG_WAYPOINT_VP_NOTCREATED, VISUAL_WAYPOINT); delete wpCreature2; @@ -923,7 +923,7 @@ public: wpCreature->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()), chr->GetPhaseMaskForSpawn()); // To call _LoadGoods(); _LoadQuests(); CreateTrainerSpells(); - if (!wpCreature->LoadCreatureFromDB(wpCreature->GetSpawnId(), map, true, false, true)) + if (!wpCreature->LoadCreatureFromDB(wpCreature->GetSpawnId(), map, true, true)) { handler->PSendSysMessage(LANG_WAYPOINT_VP_NOTCREATED, id); delete wpCreature; @@ -975,7 +975,7 @@ public: } creature->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()), chr->GetPhaseMaskForSpawn()); - if (!creature->LoadCreatureFromDB(creature->GetSpawnId(), map, true, false, true)) + if (!creature->LoadCreatureFromDB(creature->GetSpawnId(), map, true, true)) { handler->PSendSysMessage(LANG_WAYPOINT_VP_NOTCREATED, id); delete creature; @@ -1024,7 +1024,7 @@ public: } creature->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()), chr->GetPhaseMaskForSpawn()); - if (!creature->LoadCreatureFromDB(creature->GetSpawnId(), map, true, false, true)) + if (!creature->LoadCreatureFromDB(creature->GetSpawnId(), map, true, true)) { handler->PSendSysMessage(LANG_WAYPOINT_NOTCREATED, id); delete creature; diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp index a1b9cfbc2..19fa233fe 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp @@ -91,7 +91,7 @@ void UpdateCreatureHalaa(ObjectGuid::LowType spawnId, Map* map, float x, float y if (!map->Instanceable() && !map->IsRemovalGrid(x, y)) { Creature* creature = new Creature(); - if (!creature->LoadCreatureFromDB(spawnId, map, true, false, true)) + if (!creature->LoadCreatureFromDB(spawnId, map, true, true)) { LOG_ERROR("sql.sql", "AddCreature: Cannot add creature spawnId {} to map", spawnId); delete creature;