Merge branch 'master' into Playerbot

This commit is contained in:
Yunfan Li
2024-02-11 23:45:22 +08:00
54 changed files with 1943 additions and 1547 deletions

View File

@@ -440,6 +440,29 @@ enum DamageEffectType : uint8
SELF_DAMAGE = 5
};
// Used for IsClass hook
enum ClassContext : uint8
{
CLASS_CONTEXT_NONE = 0, // Default
CLASS_CONTEXT_INIT = 1,
CLASS_CONTEXT_TELEPORT = 2,
CLASS_CONTEXT_QUEST = 3,
CLASS_CONTEXT_STATS = 4,
CLASS_CONTEXT_TAXI = 5,
CLASS_CONTEXT_SKILL = 6,
CLASS_CONTEXT_TALENT_POINT_CALC = 7,
CLASS_CONTEXT_ABILITY = 8,
CLASS_CONTEXT_ABILITY_REACTIVE = 9,
CLASS_CONTEXT_PET = 10,
CLASS_CONTEXT_PET_CHARM = 11,
CLASS_CONTEXT_EQUIP_RELIC = 12,
CLASS_CONTEXT_EQUIP_SHIELDS = 13,
CLASS_CONTEXT_EQUIP_ARMOR_CLASS = 14,
CLASS_CONTEXT_WEAPON_SWAP = 15,
CLASS_CONTEXT_GRAVEYARD = 16,
CLASS_CONTEXT_CLASS_TRAINER = 17
};
// Value masks for UNIT_FIELD_FLAGS
// EnumUtils: DESCRIBE THIS
enum UnitFlags : uint32
@@ -1436,6 +1459,7 @@ public:
void setRace(uint8 race);
[[nodiscard]] uint32 getRaceMask() const { return 1 << (getRace(true) - 1); }
[[nodiscard]] uint8 getClass() const { return GetByteValue(UNIT_FIELD_BYTES_0, 1); }
[[nodiscard]] virtual bool IsClass(Classes unitClass, [[maybe_unused]] ClassContext context = CLASS_CONTEXT_NONE) const { return (getClass() == unitClass); }
[[nodiscard]] uint32 getClassMask() const { return 1 << (getClass() - 1); }
[[nodiscard]] uint8 getGender() const { return GetByteValue(UNIT_FIELD_BYTES_0, 2); }
[[nodiscard]] DisplayRace GetDisplayRaceFromModelId(uint32 modelId) const;
@@ -1472,6 +1496,7 @@ public:
[[nodiscard]] Powers getPowerType() const { return Powers(GetByteValue(UNIT_FIELD_BYTES_0, 3)); }
void setPowerType(Powers power);
[[nodiscard]] virtual bool HasActivePowerType(Powers power) { return getPowerType() == power; }
[[nodiscard]] uint32 GetPower(Powers power) const { return GetUInt32Value(static_cast<uint16>(UNIT_FIELD_POWER1) + power); }
[[nodiscard]] uint32 GetMaxPower(Powers power) const { return GetUInt32Value(static_cast<uint16>(UNIT_FIELD_MAXPOWER1) + power); }
void SetPower(Powers power, uint32 val, bool withPowerUpdate = true, bool fromRegenerate = false);