Core/Creatures: Wrap all creature static flags in a structure
Port From (https://github.com/TrinityCore/TrinityCore/commit/6bcbc786e50390cd64f634c87a5871178dd9b36f)
This commit is contained in:
@@ -21,14 +21,7 @@ namespace Game.Entities
|
||||
long _lastDamagedTime; // Part of Evade mechanics
|
||||
MultiMap<byte, byte> m_textRepeat = new();
|
||||
|
||||
CreatureStaticFlags _staticFlags;
|
||||
CreatureStaticFlags2 _staticFlags2;
|
||||
CreatureStaticFlags3 _staticFlags3;
|
||||
CreatureStaticFlags4 _staticFlags4;
|
||||
CreatureStaticFlags5 _staticFlags5;
|
||||
CreatureStaticFlags6 _staticFlags6;
|
||||
CreatureStaticFlags7 _staticFlags7;
|
||||
CreatureStaticFlags8 _staticFlags8;
|
||||
CreatureStaticFlagsHolder _staticFlags;
|
||||
|
||||
// Regenerate health
|
||||
bool _regenerateHealth; // Set on creation
|
||||
@@ -108,4 +101,34 @@ namespace Game.Entities
|
||||
public ObjectGuid Target; // the creature's "real" target while casting
|
||||
public float Orientation; // the creature's "real" orientation while casting
|
||||
}
|
||||
|
||||
struct CreatureStaticFlagsHolder
|
||||
{
|
||||
CreatureStaticFlags _flags;
|
||||
CreatureStaticFlags2 _flags2;
|
||||
CreatureStaticFlags3 _flags3;
|
||||
CreatureStaticFlags4 _flags4;
|
||||
CreatureStaticFlags5 _flags5;
|
||||
CreatureStaticFlags6 _flags6;
|
||||
CreatureStaticFlags7 _flags7;
|
||||
CreatureStaticFlags8 _flags8;
|
||||
|
||||
public bool HasFlag(CreatureStaticFlags flag) { return _flags.HasFlag(flag); }
|
||||
public bool HasFlag(CreatureStaticFlags2 flag) { return _flags2.HasFlag(flag); }
|
||||
public bool HasFlag(CreatureStaticFlags3 flag) { return _flags3.HasFlag(flag); }
|
||||
public bool HasFlag(CreatureStaticFlags4 flag) { return _flags4.HasFlag(flag); }
|
||||
public bool HasFlag(CreatureStaticFlags5 flag) { return _flags5.HasFlag(flag); }
|
||||
public bool HasFlag(CreatureStaticFlags6 flag) { return _flags6.HasFlag(flag); }
|
||||
public bool HasFlag(CreatureStaticFlags7 flag) { return _flags7.HasFlag(flag); }
|
||||
public bool HasFlag(CreatureStaticFlags8 flag) { return _flags8.HasFlag(flag); }
|
||||
|
||||
public void ApplyFlag(CreatureStaticFlags flag, bool apply) { if (apply) _flags |= flag; else _flags &= ~flag; }
|
||||
public void ApplyFlag(CreatureStaticFlags2 flag, bool apply) { if (apply) _flags2 |= flag; else _flags2 &= ~flag; }
|
||||
public void ApplyFlag(CreatureStaticFlags3 flag, bool apply) { if (apply) _flags3 |= flag; else _flags3 &= ~flag; }
|
||||
public void ApplyFlag(CreatureStaticFlags4 flag, bool apply) { if (apply) _flags4 |= flag; else _flags4 &= ~flag; }
|
||||
public void ApplyFlag(CreatureStaticFlags5 flag, bool apply) { if (apply) _flags5 |= flag; else _flags5 &= ~flag; }
|
||||
public void ApplyFlag(CreatureStaticFlags6 flag, bool apply) { if (apply) _flags6 |= flag; else _flags6 &= ~flag; }
|
||||
public void ApplyFlag(CreatureStaticFlags7 flag, bool apply) { if (apply) _flags7 |= flag; else _flags7 &= ~flag; }
|
||||
public void ApplyFlag(CreatureStaticFlags8 flag, bool apply) { if (apply) _flags8 |= flag; else _flags8 &= ~flag; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1129,14 +1129,14 @@ namespace Game.Entities
|
||||
SetHomePosition(GetPosition());
|
||||
}
|
||||
|
||||
public bool HasFlag(CreatureStaticFlags flag) { return _staticFlags.HasFlag(flag); }
|
||||
public bool HasFlag(CreatureStaticFlags2 flag) { return _staticFlags2.HasFlag(flag); }
|
||||
public bool HasFlag(CreatureStaticFlags3 flag) { return _staticFlags3.HasFlag(flag); }
|
||||
public bool HasFlag(CreatureStaticFlags4 flag) { return _staticFlags4.HasFlag(flag); }
|
||||
public bool HasFlag(CreatureStaticFlags5 flag) { return _staticFlags5.HasFlag(flag); }
|
||||
public bool HasFlag(CreatureStaticFlags6 flag) { return _staticFlags6.HasFlag(flag); }
|
||||
public bool HasFlag(CreatureStaticFlags7 flag) { return _staticFlags7.HasFlag(flag); }
|
||||
public bool HasFlag(CreatureStaticFlags8 flag) { return _staticFlags8.HasFlag(flag); }
|
||||
public bool HasFlag(CreatureStaticFlags flag) { return _staticFlags.HasFlag(flag); }
|
||||
public bool HasFlag(CreatureStaticFlags2 flag) { return _staticFlags.HasFlag(flag); }
|
||||
public bool HasFlag(CreatureStaticFlags3 flag) { return _staticFlags.HasFlag(flag); }
|
||||
public bool HasFlag(CreatureStaticFlags4 flag) { return _staticFlags.HasFlag(flag); }
|
||||
public bool HasFlag(CreatureStaticFlags5 flag) { return _staticFlags.HasFlag(flag); }
|
||||
public bool HasFlag(CreatureStaticFlags6 flag) { return _staticFlags.HasFlag(flag); }
|
||||
public bool HasFlag(CreatureStaticFlags7 flag) { return _staticFlags.HasFlag(flag); }
|
||||
public bool HasFlag(CreatureStaticFlags8 flag) { return _staticFlags.HasFlag(flag); }
|
||||
|
||||
public uint GetTrainerId()
|
||||
{
|
||||
@@ -1624,7 +1624,7 @@ namespace Game.Entities
|
||||
|
||||
public void SetSpawnHealth()
|
||||
{
|
||||
if (_staticFlags5.HasFlag(CreatureStaticFlags5.NoHealthRegen))
|
||||
if (_staticFlags.HasFlag(CreatureStaticFlags5.NoHealthRegen))
|
||||
return;
|
||||
|
||||
ulong curhealth;
|
||||
@@ -3187,13 +3187,7 @@ namespace Game.Entities
|
||||
public override void SetImmuneToPC(bool apply) { SetImmuneToPC(apply, HasReactState(ReactStates.Passive)); }
|
||||
public override void SetImmuneToNPC(bool apply) { SetImmuneToNPC(apply, HasReactState(ReactStates.Passive)); }
|
||||
|
||||
void SetUnkillable(bool unkillable)
|
||||
{
|
||||
if (unkillable)
|
||||
_staticFlags |= CreatureStaticFlags.Unkillable;
|
||||
else
|
||||
_staticFlags &= ~CreatureStaticFlags.Unkillable;
|
||||
}
|
||||
void SetUnkillable(bool unkillable) { _staticFlags.ApplyFlag(CreatureStaticFlags.Unkillable, unkillable); }
|
||||
|
||||
public bool IsInEvadeMode() { return HasUnitState(UnitState.Evade); }
|
||||
public bool IsEvadingAttacks() { return IsInEvadeMode() || CanNotReachTarget(); }
|
||||
@@ -3357,15 +3351,9 @@ namespace Game.Entities
|
||||
m_combatPulseTime = delay;
|
||||
}
|
||||
|
||||
public bool CanRegenerateHealth() { return !_staticFlags5.HasFlag(CreatureStaticFlags5.NoHealthRegen) && _regenerateHealth; }
|
||||
public void SetRegenerateHealth(bool value)
|
||||
{
|
||||
if (!value)
|
||||
_staticFlags5 |= CreatureStaticFlags5.NoHealthRegen;
|
||||
else
|
||||
_staticFlags5 &= ~CreatureStaticFlags5.NoHealthRegen;
|
||||
}
|
||||
|
||||
bool CanRegenerateHealth() { return !_staticFlags.HasFlag(CreatureStaticFlags5.NoHealthRegen) && _regenerateHealth; }
|
||||
public void SetRegenerateHealth(bool value) { _staticFlags.ApplyFlag(CreatureStaticFlags5.NoHealthRegen, !value); }
|
||||
|
||||
public void SetHomePosition(float x, float y, float z, float o)
|
||||
{
|
||||
m_homePosition.Relocate(x, y, z, o);
|
||||
|
||||
Reference in New Issue
Block a user