Core/Creatures: Added db fields to hold creature static flags

Port From (https://github.com/TrinityCore/TrinityCore/commit/7282a1772568111f95a1fb85e95f92421439c097)
This commit is contained in:
hondacrx
2023-06-24 09:02:05 -04:00
parent 8b746a8996
commit 55b91302ec
4 changed files with 32 additions and 3 deletions
@@ -107,7 +107,7 @@ namespace Game.Entities
public float Orientation; // the creature's "real" orientation while casting
}
struct CreatureStaticFlagsHolder
public struct CreatureStaticFlagsHolder
{
CreatureStaticFlags _flags;
CreatureStaticFlags2 _flags2;
@@ -118,6 +118,18 @@ namespace Game.Entities
CreatureStaticFlags7 _flags7;
CreatureStaticFlags8 _flags8;
public CreatureStaticFlagsHolder(uint flags, uint flags2, uint flags3, uint flags4, uint flags5, uint flags6, uint flags7, uint flags8)
{
_flags = (CreatureStaticFlags)flags;
_flags2 = (CreatureStaticFlags2)flags2;
_flags3 = (CreatureStaticFlags3)flags3;
_flags4 = (CreatureStaticFlags4)flags4;
_flags5 = (CreatureStaticFlags5)flags5;
_flags6 = (CreatureStaticFlags6)flags6;
_flags7 = (CreatureStaticFlags7)flags7;
_flags8 = (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); }
@@ -280,6 +280,8 @@ namespace Game.Entities
for (byte i = 0; i < SharedConst.MaxCreatureSpells; ++i)
m_spells[i] = GetCreatureTemplate().Spells[i];
ApplyAllStaticFlags(m_creatureDifficulty.StaticFlags);
_staticFlags.ApplyFlag(CreatureStaticFlags.NoXp, creatureInfo.CreatureType == CreatureType.Critter || IsPet() || IsTotem() || creatureInfo.FlagsExtra.HasFlag(CreatureFlagsExtra.NoXP));
_staticFlags.ApplyFlag(CreatureStaticFlags4.TreatAsRaidUnitForHelpfulSpells, GetCreatureDifficulty().TypeFlags.HasFlag(CreatureTypeFlags.TreatAsRaidUnit));
@@ -400,6 +402,12 @@ namespace Game.Entities
return true;
}
void ApplyAllStaticFlags(CreatureStaticFlagsHolder flags)
{
// Apply all other side effects of flag changes
SetTemplateRooted(flags.HasFlag(CreatureStaticFlags.Sessile));
}
public override void Update(uint diff)
{
if (IsAIEnabled() && triggerJustAppeared && m_deathState != DeathState.Dead)
@@ -445,6 +445,7 @@ namespace Game.Entities
public uint SkinLootID;
public uint GoldMin;
public uint GoldMax;
public CreatureStaticFlagsHolder StaticFlags;
public CreatureDifficulty()
{