diff options
author | HelloKitty <andrew.blakely@ymail.com> | 2020-05-10 07:30:25 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-10 14:30:25 +0200 |
commit | 772f506a3b426e27ee64b0506aed06219c8d7747 (patch) | |
tree | 7972a9cd754e400c5b63ac9669d56ccddef0eb6b /src | |
parent | 0b60b482730f03399104b64a69a14598cf137edc (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.cpp | 2 | ||||
-rw-r--r-- | src/server/shared/DataStores/DBCStructure.h | 14 |
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 |