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
0d61e653f4

* Address enum codestyle

* Update DBCStructure.h

* Update DBCfmt.h

Co-authored-by: Giacomo Pozzoni <giacomopoz@gmail.com>
This commit is contained in:
HelloKitty
2020-05-10 07:30:25 -05:00
committed by GitHub
parent 0b60b48273
commit 772f506a3b
2 changed files with 14 additions and 2 deletions

View File

@@ -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;

View File

@@ -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