fix(Core/Unit): Implement GetDisplayRace() (#17609)
This commit is contained in:
@@ -21145,6 +21145,18 @@ void Unit::setRace(uint8 race)
|
|||||||
m_race = race;
|
m_race = race;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DisplayRace Unit::GetDisplayRaceFromModelId(uint32 modelId) const
|
||||||
|
{
|
||||||
|
if (CreatureDisplayInfoEntry const* display = sCreatureDisplayInfoStore.LookupEntry(modelId))
|
||||||
|
{
|
||||||
|
if (CreatureDisplayInfoExtraEntry const* displayExtra = sCreatureDisplayInfoExtraStore.LookupEntry(display->ExtendedDisplayInfoID))
|
||||||
|
{
|
||||||
|
return DisplayRace(displayExtra->DisplayRaceID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return DisplayRace::None;
|
||||||
|
}
|
||||||
|
|
||||||
// Check if unit in combat with specific unit
|
// Check if unit in combat with specific unit
|
||||||
bool Unit::IsInCombatWith(Unit const* who) const
|
bool Unit::IsInCombatWith(Unit const* who) const
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1438,6 +1438,8 @@ public:
|
|||||||
[[nodiscard]] uint8 getClass() const { return GetByteValue(UNIT_FIELD_BYTES_0, 1); }
|
[[nodiscard]] uint8 getClass() const { return GetByteValue(UNIT_FIELD_BYTES_0, 1); }
|
||||||
[[nodiscard]] uint32 getClassMask() const { return 1 << (getClass() - 1); }
|
[[nodiscard]] uint32 getClassMask() const { return 1 << (getClass() - 1); }
|
||||||
[[nodiscard]] uint8 getGender() const { return GetByteValue(UNIT_FIELD_BYTES_0, 2); }
|
[[nodiscard]] uint8 getGender() const { return GetByteValue(UNIT_FIELD_BYTES_0, 2); }
|
||||||
|
[[nodiscard]] DisplayRace GetDisplayRaceFromModelId(uint32 modelId) const;
|
||||||
|
[[nodiscard]] DisplayRace GetDisplayRace() const { return GetDisplayRaceFromModelId(GetDisplayId()); };
|
||||||
|
|
||||||
[[nodiscard]] float GetStat(Stats stat) const { return float(GetUInt32Value(static_cast<uint16>(UNIT_FIELD_STAT0) + stat)); }
|
[[nodiscard]] float GetStat(Stats stat) const { return float(GetUInt32Value(static_cast<uint16>(UNIT_FIELD_STAT0) + stat)); }
|
||||||
void SetStat(Stats stat, int32 val) { SetStatInt32Value(static_cast<uint16>(UNIT_FIELD_STAT0) + stat, val); }
|
void SetStat(Stats stat, int32 val) { SetStatInt32Value(static_cast<uint16>(UNIT_FIELD_STAT0) + stat, val); }
|
||||||
|
|||||||
@@ -105,6 +105,33 @@ enum Races
|
|||||||
|
|
||||||
#define RACEMASK_HORDE RACEMASK_ALL_PLAYABLE & ~RACEMASK_ALLIANCE
|
#define RACEMASK_HORDE RACEMASK_ALL_PLAYABLE & ~RACEMASK_ALLIANCE
|
||||||
|
|
||||||
|
// DisplayRace values from CreatureDisplayInfoExtra.dbc
|
||||||
|
enum class DisplayRace : uint8
|
||||||
|
{
|
||||||
|
None = 0,
|
||||||
|
Human = 1,
|
||||||
|
Orc = 2,
|
||||||
|
Dwarf = 3,
|
||||||
|
NightElf = 4,
|
||||||
|
Undead = 5,
|
||||||
|
Tauren = 6,
|
||||||
|
Gnome = 7,
|
||||||
|
Troll = 8,
|
||||||
|
Goblin = 9,
|
||||||
|
BloodElf = 10,
|
||||||
|
Draenei = 11,
|
||||||
|
FelOrc = 12,
|
||||||
|
Naga = 13,
|
||||||
|
Broken = 14,
|
||||||
|
Skeleton = 15,
|
||||||
|
Vrykul = 16,
|
||||||
|
Tuskarr = 17,
|
||||||
|
ForestTroll = 18,
|
||||||
|
Taunka = 19,
|
||||||
|
NorthrendSkeleton = 20,
|
||||||
|
IceTroll = 21
|
||||||
|
};
|
||||||
|
|
||||||
// Class value is index in ChrClasses.dbc
|
// Class value is index in ChrClasses.dbc
|
||||||
// EnumUtils: DESCRIBE THIS
|
// EnumUtils: DESCRIBE THIS
|
||||||
enum Classes
|
enum Classes
|
||||||
|
|||||||
Reference in New Issue
Block a user