diff options
-rw-r--r-- | src/server/game/Entities/Creature/Creature.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 33 | ||||
-rw-r--r-- | src/server/game/Globals/ObjectMgr.h | 4 |
3 files changed, 18 insertions, 23 deletions
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 032fb890c6f..43138185ce0 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -607,7 +607,7 @@ bool Creature::UpdateEntry(uint32 entry, CreatureData const* data /*= nullptr*/, uint64 npcFlags; uint32 unitFlags, unitFlags2, unitFlags3, dynamicFlags; - ObjectMgr::ChooseCreatureFlags(cInfo, npcFlags, unitFlags, unitFlags2, unitFlags3, dynamicFlags, data); + ObjectMgr::ChooseCreatureFlags(cInfo, &npcFlags, &unitFlags, &unitFlags2, &unitFlags3, &dynamicFlags, data); if (cInfo->flags_extra & CREATURE_FLAG_EXTRA_WORLDEVENT) npcFlags |= sGameEventMgr->GetNPCFlag(this); @@ -2174,7 +2174,7 @@ void Creature::setDeathState(DeathState s) uint64 npcFlags; uint32 unitFlags, unitFlags2, unitFlags3, dynamicFlags; - ObjectMgr::ChooseCreatureFlags(cInfo, npcFlags, unitFlags, unitFlags2, unitFlags3, dynamicFlags, creatureData); + ObjectMgr::ChooseCreatureFlags(cInfo, &npcFlags, &unitFlags, &unitFlags2, &unitFlags3, &dynamicFlags, creatureData); if (cInfo->flags_extra & CREATURE_FLAG_EXTRA_WORLDEVENT) npcFlags |= sGameEventMgr->GetNPCFlag(this); diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 90b8679d9be..a054014d5bd 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -1631,31 +1631,26 @@ CreatureModel const* ObjectMgr::ChooseDisplayId(CreatureTemplate const* cinfo, C return cinfo->GetFirstInvisibleModel(); } -void ObjectMgr::ChooseCreatureFlags(CreatureTemplate const* cInfo, uint64& npcFlags, uint32& unitFlags, uint32& unitFlags2, uint32& unitFlags3, uint32& dynamicFlags, CreatureData const* data /*= nullptr*/) +void ObjectMgr::ChooseCreatureFlags(CreatureTemplate const* cInfo, uint64* npcFlags, uint32* unitFlags, uint32* unitFlags2, uint32* unitFlags3, uint32* dynamicFlags, CreatureData const* data /*= nullptr*/) { - npcFlags = cInfo->npcflag; - unitFlags = cInfo->unit_flags; - unitFlags2 = cInfo->unit_flags2; - unitFlags3 = cInfo->unit_flags3; - dynamicFlags = cInfo->dynamicflags; +#define ChooseCreatureFlagSource(field) ((data && data->field) ? data->field : cInfo->field) - if (data) - { - if (data->npcflag) - npcFlags = data->npcflag; + if (npcFlags) + *npcFlags = ChooseCreatureFlagSource(npcflag); - if (data->unit_flags) - unitFlags = data->unit_flags; + if (unitFlags) + *unitFlags = ChooseCreatureFlagSource(unit_flags); - if (data->unit_flags2) - unitFlags2 = data->unit_flags2; + if (unitFlags2) + *unitFlags2 = ChooseCreatureFlagSource(unit_flags2); - if (data->unit_flags3) - unitFlags3 = data->unit_flags3; + if (unitFlags3) + *unitFlags3 = ChooseCreatureFlagSource(unit_flags3); - if (data->dynamicflags) - dynamicFlags = data->dynamicflags; - } + if (dynamicFlags) + *dynamicFlags = ChooseCreatureFlagSource(dynamicflags); + +#undef ChooseCreatureFlagSource } CreatureModelInfo const* ObjectMgr::GetCreatureModelRandomGender(CreatureModel* model, CreatureTemplate const* creatureTemplate) const diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h index 7ec4262eb00..70e37e6aa3c 100644 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -1139,9 +1139,9 @@ class TC_GAME_API ObjectMgr CreatureTemplate const* GetCreatureTemplate(uint32 entry) const; CreatureTemplateContainer const& GetCreatureTemplates() const { return _creatureTemplateStore; } CreatureModelInfo const* GetCreatureModelInfo(uint32 modelId) const; - CreatureModelInfo const* GetCreatureModelRandomGender(CreatureModel* mode, CreatureTemplate const* creatureTemplate) const; + CreatureModelInfo const* GetCreatureModelRandomGender(CreatureModel* model, CreatureTemplate const* creatureTemplate) const; static CreatureModel const* ChooseDisplayId(CreatureTemplate const* cinfo, CreatureData const* data = nullptr); - static void ChooseCreatureFlags(CreatureTemplate const* cInfo, uint64& npcFlags, uint32& unitFlags, uint32& unitFlags2, uint32& unitFlags3, uint32& dynamicFlags, CreatureData const* data = nullptr); + static void ChooseCreatureFlags(CreatureTemplate const* cInfo, uint64* npcFlags, uint32* unitFlags, uint32* unitFlags2, uint32* unitFlags3, uint32* dynamicFlags, CreatureData const* data = nullptr); EquipmentInfo const* GetEquipmentInfo(uint32 entry, int8& id) const; CreatureAddon const* GetCreatureAddon(ObjectGuid::LowType lowguid) const; GameObjectAddon const* GetGameObjectAddon(ObjectGuid::LowType lowguid) const; |