From 772f506a3b426e27ee64b0506aed06219c8d7747 Mon Sep 17 00:00:00 2001 From: HelloKitty Date: Sun, 10 May 2020 07:30:25 -0500 Subject: Improve Creature DBC Handling (#24509) * Core/DBC: Add CreatureModelDataFlags to remove hardcoded literals * Core/DBC: Use CreatureType flags in Creature::CanGiveExperience calculation * Core/DBC: Fixed CreatureType Flags Misinterpretation Meaning of this was wrong, wowdev wiki was incorrect. Partially reverts 0d61e653f4841d5c9745639a6bdf7487b4d082fe * Address enum codestyle * Update DBCStructure.h * Update DBCfmt.h Co-authored-by: Giacomo Pozzoni --- src/server/shared/DataStores/DBCStructure.h | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'src/server/shared') diff --git a/src/server/shared/DataStores/DBCStructure.h b/src/server/shared/DataStores/DBCStructure.h index e8469eddfa2..cd71c310f30 100644 --- a/src/server/shared/DataStores/DBCStructure.h +++ b/src/server/shared/DataStores/DBCStructure.h @@ -493,6 +493,11 @@ struct CreatureFamilyEntry // 27 m_iconFile }; +enum CreatureModelDataFlags +{ + CREATURE_MODEL_DATA_FLAGS_CAN_MOUNT = 0x00000080 +}; + struct CreatureModelDataEntry { uint32 Id; @@ -513,6 +518,8 @@ struct CreatureModelDataEntry float CollisionHeight; float MountHeight; // Used in calculation of unit collision data when mounted //float Unks[11] + + inline bool HasFlag(CreatureModelDataFlags flag) const { return !!(Flags & flag); } }; struct CreatureSpellDataEntry @@ -522,12 +529,17 @@ struct CreatureSpellDataEntry //uint32 availability[MAX_CREATURE_SPELL_DATA_SLOT]; // 4-7 m_availability[4] }; +enum CreatureTypeEntryFlags +{ + CREATURE_TYPE_ENTRY_FLAGS_IGNORED_TAB_TARGETING = 0x01 // Means do not include in tab targeting. +}; + struct CreatureTypeEntry { uint32 ID; // 0 m_ID //char* Name[16]; // 1-16 name // 17 string flags - //uint32 no_expirience; // 18 no exp? critters, non-combat pets, gas cloud. + //uint32 Flags; // 18 Critters, non-combat pets, gas cloud. (called Flags in struct) }; /* not used -- cgit v1.2.3