aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHelloKitty <andrew.blakely@ymail.com>2020-05-10 07:30:25 -0500
committerGitHub <noreply@github.com>2020-05-10 14:30:25 +0200
commit772f506a3b426e27ee64b0506aed06219c8d7747 (patch)
tree7972a9cd754e400c5b63ac9669d56ccddef0eb6b /src
parent0b60b482730f03399104b64a69a14598cf137edc (diff)
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 <giacomopoz@gmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp2
-rw-r--r--src/server/shared/DataStores/DBCStructure.h14
2 files changed, 14 insertions, 2 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 84e94894c1c..31ca50eb70b 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -8895,7 +8895,7 @@ bool Unit::IsInDisallowedMountForm() const
CreatureModelDataEntry const* model = sCreatureModelDataStore.LookupEntry(display->ModelId);
ChrRacesEntry const* race = sChrRacesStore.LookupEntry(displayExtra->Race);
- if (model && !(model->Flags & 0x80))
+ if (model && !(model->HasFlag(CREATURE_MODEL_DATA_FLAGS_CAN_MOUNT)))
if (race && !(race->Flags & 0x4))
return true;
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