mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-23 10:26:28 +01:00
Core/Creatures: Wrap all creature static flags in a structure
This commit is contained in:
@@ -303,8 +303,6 @@ Creature::Creature(bool isWorldObject) : Unit(isWorldObject), MapObject(), m_Pla
|
||||
m_defaultMovementType(IDLE_MOTION_TYPE), m_spawnId(UI64LIT(0)), m_equipmentId(0), m_originalEquipmentId(0), m_AlreadyCallAssistance(false), m_AlreadySearchedAssistance(false), m_cannotReachTarget(false), m_cannotReachTimer(0),
|
||||
m_meleeDamageSchoolMask(SPELL_SCHOOL_MASK_NORMAL), m_originalEntry(0), m_homePosition(), m_transportHomePosition(), m_creatureInfo(nullptr), m_creatureData(nullptr), _waypointPathId(0), _currentWaypointNodeInfo(0, 0),
|
||||
m_formation(nullptr), m_triggerJustAppeared(true), m_respawnCompatibilityMode(false), _lastDamagedTime(0),
|
||||
_staticFlags(CreatureStaticFlags()), _staticFlags2(CreatureStaticFlags2()), _staticFlags3(CreatureStaticFlags3()), _staticFlags4(CreatureStaticFlags4()),
|
||||
_staticFlags5(CreatureStaticFlags5()), _staticFlags6(CreatureStaticFlags6()), _staticFlags7(CreatureStaticFlags7()), _staticFlags8(CreatureStaticFlags8()),
|
||||
_regenerateHealth(true), _isMissingCanSwimFlagOutOfCombat(false)
|
||||
{
|
||||
m_regenTimer = CREATURE_REGEN_INTERVAL;
|
||||
@@ -1853,7 +1851,7 @@ void Creature::LoadEquipment(int8 id, bool force /*= true*/)
|
||||
|
||||
void Creature::SetSpawnHealth()
|
||||
{
|
||||
if (_staticFlags5.HasFlag(CREATURE_STATIC_FLAG_5_NO_HEALTH_REGEN))
|
||||
if (_staticFlags.HasFlag(CREATURE_STATIC_FLAG_5_NO_HEALTH_REGEN))
|
||||
return;
|
||||
|
||||
uint32 curhealth;
|
||||
|
||||
@@ -146,13 +146,7 @@ class TC_GAME_API Creature : public Unit, public GridObject<Creature>, public Ma
|
||||
using Unit::SetImmuneToNPC;
|
||||
void SetImmuneToNPC(bool apply) override { Unit::SetImmuneToNPC(apply, HasReactState(REACT_PASSIVE)); }
|
||||
|
||||
void SetUnkillable(bool unkillable)
|
||||
{
|
||||
if (unkillable)
|
||||
_staticFlags |= CREATURE_STATIC_FLAG_UNKILLABLE;
|
||||
else
|
||||
_staticFlags &= ~CREATURE_STATIC_FLAG_UNKILLABLE;
|
||||
}
|
||||
void SetUnkillable(bool unkillable) { _staticFlags.ApplyFlag(CREATURE_STATIC_FLAG_UNKILLABLE, unkillable); }
|
||||
|
||||
/// @todo Rename these properly
|
||||
bool isCanInteractWithBattleMaster(Player* player, bool msg) const;
|
||||
@@ -310,14 +304,8 @@ class TC_GAME_API Creature : public Unit, public GridObject<Creature>, public Ma
|
||||
bool hasQuest(uint32 quest_id) const override;
|
||||
bool hasInvolvedQuest(uint32 quest_id) const override;
|
||||
|
||||
bool CanRegenerateHealth() const { return !_staticFlags5.HasFlag(CREATURE_STATIC_FLAG_5_NO_HEALTH_REGEN) && _regenerateHealth; }
|
||||
void SetRegenerateHealth(bool value)
|
||||
{
|
||||
if (!value)
|
||||
_staticFlags5 |= CREATURE_STATIC_FLAG_5_NO_HEALTH_REGEN;
|
||||
else
|
||||
_staticFlags5 &= ~CREATURE_STATIC_FLAG_5_NO_HEALTH_REGEN;
|
||||
}
|
||||
bool CanRegenerateHealth() const { return !_staticFlags.HasFlag(CREATURE_STATIC_FLAG_5_NO_HEALTH_REGEN) && _regenerateHealth; }
|
||||
void SetRegenerateHealth(bool value) { _staticFlags.ApplyFlag(CREATURE_STATIC_FLAG_5_NO_HEALTH_REGEN, !value); }
|
||||
virtual uint8 GetPetAutoSpellSize() const { return MAX_SPELL_CHARM; }
|
||||
virtual uint32 GetPetAutoSpellOnPos(uint8 pos) const;
|
||||
float GetPetChaseDistance() const;
|
||||
@@ -405,13 +393,13 @@ class TC_GAME_API Creature : public Unit, public GridObject<Creature>, public Ma
|
||||
void ExitVehicle(Position const* exitPosition = nullptr) override;
|
||||
|
||||
bool HasFlag(CreatureStaticFlags flag) const { return _staticFlags.HasFlag(flag); }
|
||||
bool HasFlag(CreatureStaticFlags2 flag) const { return _staticFlags2.HasFlag(flag); }
|
||||
bool HasFlag(CreatureStaticFlags3 flag) const { return _staticFlags3.HasFlag(flag); }
|
||||
bool HasFlag(CreatureStaticFlags4 flag) const { return _staticFlags4.HasFlag(flag); }
|
||||
bool HasFlag(CreatureStaticFlags5 flag) const { return _staticFlags5.HasFlag(flag); }
|
||||
bool HasFlag(CreatureStaticFlags6 flag) const { return _staticFlags6.HasFlag(flag); }
|
||||
bool HasFlag(CreatureStaticFlags7 flag) const { return _staticFlags7.HasFlag(flag); }
|
||||
bool HasFlag(CreatureStaticFlags8 flag) const { return _staticFlags8.HasFlag(flag); }
|
||||
bool HasFlag(CreatureStaticFlags2 flag) const { return _staticFlags.HasFlag(flag); }
|
||||
bool HasFlag(CreatureStaticFlags3 flag) const { return _staticFlags.HasFlag(flag); }
|
||||
bool HasFlag(CreatureStaticFlags4 flag) const { return _staticFlags.HasFlag(flag); }
|
||||
bool HasFlag(CreatureStaticFlags5 flag) const { return _staticFlags.HasFlag(flag); }
|
||||
bool HasFlag(CreatureStaticFlags6 flag) const { return _staticFlags.HasFlag(flag); }
|
||||
bool HasFlag(CreatureStaticFlags7 flag) const { return _staticFlags.HasFlag(flag); }
|
||||
bool HasFlag(CreatureStaticFlags8 flag) const { return _staticFlags.HasFlag(flag); }
|
||||
|
||||
uint32 GetTrainerId() const;
|
||||
void SetTrainerId(Optional<uint32> trainerId);
|
||||
@@ -496,14 +484,7 @@ class TC_GAME_API Creature : public Unit, public GridObject<Creature>, public Ma
|
||||
time_t _lastDamagedTime; // Part of Evade mechanics
|
||||
CreatureTextRepeatGroup m_textRepeat;
|
||||
|
||||
EnumFlag<CreatureStaticFlags>_staticFlags;
|
||||
EnumFlag<CreatureStaticFlags2> _staticFlags2;
|
||||
EnumFlag<CreatureStaticFlags3> _staticFlags3;
|
||||
EnumFlag<CreatureStaticFlags4> _staticFlags4;
|
||||
EnumFlag<CreatureStaticFlags5> _staticFlags5;
|
||||
EnumFlag<CreatureStaticFlags6> _staticFlags6;
|
||||
EnumFlag<CreatureStaticFlags7> _staticFlags7;
|
||||
EnumFlag<CreatureStaticFlags8> _staticFlags8;
|
||||
CreatureStaticFlagsHolder _staticFlags;
|
||||
|
||||
// Regenerate health
|
||||
bool _regenerateHealth; // Set on creation
|
||||
|
||||
@@ -288,6 +288,46 @@ enum CreatureStaticFlags8
|
||||
|
||||
DEFINE_ENUM_FLAG(CreatureStaticFlags8);
|
||||
|
||||
class CreatureStaticFlagsHolder
|
||||
{
|
||||
public:
|
||||
explicit CreatureStaticFlagsHolder(CreatureStaticFlags flags = CreatureStaticFlags(), CreatureStaticFlags2 flags2 = CreatureStaticFlags2(),
|
||||
CreatureStaticFlags3 flags3 = CreatureStaticFlags3(), CreatureStaticFlags4 flags4 = CreatureStaticFlags4(),
|
||||
CreatureStaticFlags5 flags5 = CreatureStaticFlags5(), CreatureStaticFlags6 flags6 = CreatureStaticFlags6(),
|
||||
CreatureStaticFlags7 flags7 = CreatureStaticFlags7(), CreatureStaticFlags8 flags8 = CreatureStaticFlags8())
|
||||
: _flags(flags), _flags2(flags2), _flags3(flags3), _flags4(flags4), _flags5(flags5), _flags6(flags6), _flags7(flags7), _flags8(flags8)
|
||||
{
|
||||
}
|
||||
|
||||
bool HasFlag(CreatureStaticFlags flag) const { return _flags.HasFlag(flag); }
|
||||
bool HasFlag(CreatureStaticFlags2 flag) const { return _flags2.HasFlag(flag); }
|
||||
bool HasFlag(CreatureStaticFlags3 flag) const { return _flags3.HasFlag(flag); }
|
||||
bool HasFlag(CreatureStaticFlags4 flag) const { return _flags4.HasFlag(flag); }
|
||||
bool HasFlag(CreatureStaticFlags5 flag) const { return _flags5.HasFlag(flag); }
|
||||
bool HasFlag(CreatureStaticFlags6 flag) const { return _flags6.HasFlag(flag); }
|
||||
bool HasFlag(CreatureStaticFlags7 flag) const { return _flags7.HasFlag(flag); }
|
||||
bool HasFlag(CreatureStaticFlags8 flag) const { return _flags8.HasFlag(flag); }
|
||||
|
||||
void ApplyFlag(CreatureStaticFlags flag, bool apply) { if (apply) _flags |= flag; else _flags &= ~flag; }
|
||||
void ApplyFlag(CreatureStaticFlags2 flag, bool apply) { if (apply) _flags2 |= flag; else _flags2 &= ~flag; }
|
||||
void ApplyFlag(CreatureStaticFlags3 flag, bool apply) { if (apply) _flags3 |= flag; else _flags3 &= ~flag; }
|
||||
void ApplyFlag(CreatureStaticFlags4 flag, bool apply) { if (apply) _flags4 |= flag; else _flags4 &= ~flag; }
|
||||
void ApplyFlag(CreatureStaticFlags5 flag, bool apply) { if (apply) _flags5 |= flag; else _flags5 &= ~flag; }
|
||||
void ApplyFlag(CreatureStaticFlags6 flag, bool apply) { if (apply) _flags6 |= flag; else _flags6 &= ~flag; }
|
||||
void ApplyFlag(CreatureStaticFlags7 flag, bool apply) { if (apply) _flags7 |= flag; else _flags7 &= ~flag; }
|
||||
void ApplyFlag(CreatureStaticFlags8 flag, bool apply) { if (apply) _flags8 |= flag; else _flags8 &= ~flag; }
|
||||
|
||||
private:
|
||||
EnumFlag<CreatureStaticFlags> _flags;
|
||||
EnumFlag<CreatureStaticFlags2> _flags2;
|
||||
EnumFlag<CreatureStaticFlags3> _flags3;
|
||||
EnumFlag<CreatureStaticFlags4> _flags4;
|
||||
EnumFlag<CreatureStaticFlags5> _flags5;
|
||||
EnumFlag<CreatureStaticFlags6> _flags6;
|
||||
EnumFlag<CreatureStaticFlags7> _flags7;
|
||||
EnumFlag<CreatureStaticFlags8> _flags8;
|
||||
};
|
||||
|
||||
// EnumUtils: DESCRIBE THIS
|
||||
enum CreatureFlagsExtra : uint32
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user