aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2023-11-26 00:20:13 +0100
committerShauren <shauren.trinity@gmail.com>2023-11-26 00:20:13 +0100
commit7cafeb46b3b1f3eea3c966c20f9ef1efe68dfbdc (patch)
tree2cefd8a1424bb4b3a46b73d5c36f9fb1cb86616d /src/server/game/Entities
parentece5570c10e51e16fe65403c051dd1286d12a14d (diff)
Core/Creatures: Don't require `creature`.`modelid` to be one of linked `creature_template` models
Diffstat (limited to 'src/server/game/Entities')
-rw-r--r--src/server/game/Entities/Creature/Creature.cpp7
-rw-r--r--src/server/game/Entities/Creature/CreatureData.h2
2 files changed, 6 insertions, 3 deletions
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp
index 304f3d2df8d..884d48f6f7e 100644
--- a/src/server/game/Entities/Creature/Creature.cpp
+++ b/src/server/game/Entities/Creature/Creature.cpp
@@ -1439,7 +1439,7 @@ void Creature::SaveToDB(uint32 mapid, std::vector<Difficulty> const& spawnDiffic
CreatureTemplate const* cinfo = GetCreatureTemplate();
if (cinfo)
{
- for (CreatureModel model : cinfo->Models)
+ for (CreatureModel const& model : cinfo->Models)
if (displayId && displayId == model.CreatureDisplayID)
displayId = 0;
@@ -1460,7 +1460,10 @@ void Creature::SaveToDB(uint32 mapid, std::vector<Difficulty> const& spawnDiffic
data.spawnId = m_spawnId;
ASSERT(data.spawnId == m_spawnId);
data.id = GetEntry();
- data.displayid = displayId;
+ if (displayId)
+ data.display.emplace(displayId, DEFAULT_PLAYER_DISPLAY_SCALE, 1.0f);
+ else
+ data.display.reset();
data.equipmentId = GetCurrentEquipmentId();
if (!GetTransport())
{
diff --git a/src/server/game/Entities/Creature/CreatureData.h b/src/server/game/Entities/Creature/CreatureData.h
index 949c4ab3fa7..31961aa04c9 100644
--- a/src/server/game/Entities/Creature/CreatureData.h
+++ b/src/server/game/Entities/Creature/CreatureData.h
@@ -613,7 +613,7 @@ struct EquipmentInfo
struct CreatureData : public SpawnData
{
CreatureData() : SpawnData(SPAWN_TYPE_CREATURE) { }
- uint32 displayid = 0;
+ Optional<CreatureModel> display;
int8 equipmentId = 0;
float wander_distance = 0.0f;
uint32 currentwaypoint = 0;