Skip to content

Commit

Permalink
Update disallowed unit_flags for creature_template
Browse files Browse the repository at this point in the history
  • Loading branch information
meji46 committed Feb 17, 2024
1 parent 0b7934f commit 2c29207
Show file tree
Hide file tree
Showing 4 changed files with 81 additions and 17 deletions.
28 changes: 19 additions & 9 deletions WowPacketParser/Enums/UnitFlags.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,31 +6,31 @@ namespace WowPacketParser.Enums
public enum UnitFlags : uint
{
None = 0,
NotClientControlled = 0x1,
ServerControlled = 0x1,
Spawning = 0x2,
RemoveClientControl = 0x4,
PlayerControlled = 0x8,
Unk4 = 0x10,
Rename = 0x10,
Preparation = 0x20,
Unk6 = 0x40,
NoAttack = 0x80,
NotAttackable = 0x80,
ImmunePC = 0x100,
ImmuneNPC = 0x200,
Looting = 0x400,
PetIsAttackingTarget = 0x800,
PVP = 0x1000,
Silenced = 0x2000,
CannotSwim = 0x4000,
Silenced = 0x2000, // ForceNameplate (9.0)
CantSwim = 0x4000,
CanSwim = 0x8000,
NoAttack2 = 0x10000,
NotAttackable2 = 0x10000,
Pacified = 0x20000,
Stunned = 0x40000,
AffectingCombat = 0x80000,
OnTaxi = 0x100000,
Disarmed = 0x200000,
Confused = 0x400000,
Feared = 0x800000,
PossessedByPlayer = 0x1000000,
Fleeing = 0x800000,
Possessed = 0x1000000,
Uninteractible = 0x2000000,
Skinnable = 0x4000000,
Mount = 0x8000000,
Expand All @@ -39,6 +39,16 @@ public enum UnitFlags : uint
Sheath = 0x40000000,
Immune = 0x80000000,

IsInCombat = PetIsAttackingTarget | AffectingCombat
IsInCombat = PetIsAttackingTarget | AffectingCombat,

Disallowed = (ServerControlled | NotAttackable | RemoveClientControl |
PlayerControlled | Rename | Preparation | /* Unk6 | */
NotAttackable | Looting | PetIsAttackingTarget | PVP |
Silenced | NotAttackable2 | Pacified | Stunned |
AffectingCombat | OnTaxi | Disarmed | Confused | Fleeing |
Possessed | Skinnable | Mount | PreventKneelingWhenLooting |
PreventEmotes | Sheath | Immune),

DisallowedShadowlands = Disallowed & ~Silenced /* ForceNameplate */
}
}
17 changes: 16 additions & 1 deletion WowPacketParser/Enums/UnitFlags2.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
using System;
using System.Buffers;
using System.Xml.Linq;

namespace WowPacketParser.Enums
{
[Flags]
public enum UnitFlags2 // 4.x
public enum UnitFlags2 : uint // 4.x
{
None = 0x00000000,
FeignDeath = 0x00000001,
HideBody = 0x00000002,
IgnoreReputation = 0x00000004,
Expand Down Expand Up @@ -34,6 +37,18 @@ public enum UnitFlags2 // 4.x
UntargetableByClient = 0x04000000,
AttackerIgnoresMinimumRanges = 0x08000000,
UninteractibleIfHostile = 0x10000000,
Unused11 = 0x20000000,
InfiniteAOI = 0x40000000,
Unused13 = 0x80000000,

Disallowed = (FeignDeath | IgnoreReputation | ComprehendLang |
MirrorImage | ForceMovement | DisarmOffhand |
DisablePredStats | AllowChangingTalents | DisarmRanged |
/* RegeneratePower | */ RestrictPartyInteraction |
PreventSpellClick | /* InteractWhileHostile | */ /* Unk2 | */
/* PlayDeathAnim | */ AllowCheatSpells | SuppressHighlightWhenTargetedOrMousedOver |
TreatAsRaidUnitForHelpfulSpells | LargeAOI | GiganticAOI | NoActions |
AiWillOnlySwimIfTargetSwims | DontGenerateCombatLogWhenEngagedWithNpcs | AttackerIgnoresMinimumRanges |
UninteractibleIfHostile | Unused11 | InfiniteAOI | Unused13)
}
}
38 changes: 36 additions & 2 deletions WowPacketParser/Enums/UnitFlags3.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,43 @@
namespace WowPacketParser.Enums
{
[Flags]
public enum UnitFlags3
public enum UnitFlags3 : uint // 7.x
{
None = 0x0,
Unk1 = 0x1,
Unk0 = 0x1,

UnconsciousOnDeath = 0x00000002,
AllowMountedCombat = 0x00000004,
GarrisonPet = 0x00000008,
UiCanGetPosition = 0x00000010,
AiObstacle = 0x00000020,
AlternativeDefaultLanguage = 0x00000040,
SuppressAllNpcFeedback = 0x00000080,
IgnoreCombat = 0x00000100,
SuppressNpcFeedback = 0x00000200,
Unk10 = 0x00000400,
Unk11 = 0x00000800,
Unk12 = 0x00001000,
FakeDead = 0x00002000,
NoFacingOnInteractAndFastFacingChase = 0x00004000,
UntargeteableFromUi = 0x00008000,
NoFacingOnInteracthileFakeDead = 0x00010000,
AlreadySkinned = 0x00020000,
SuppressAllNpcSounds = 0x00040000,
SuppressNpcSounds = 0x00080000,
Unk20 = 0x00100000,
Unk21 = 0x00200000,
DontFadeOut = 0x00400000,
Unk23 = 0x00800000,
ForceHideNameplate = 0x01000000,
Unk25 = 0x02000000,
Unk26 = 0x04000000,
Unk27 = 0x08000000,
Unk28 = 0x10000000,
Unk29 = 0x20000000,
Unk30 = 0x40000000,
Unk31 = 0x80000000,

Disallowed = (IgnoreCombat | FakeDead | AlreadySkinned)
}
}
15 changes: 10 additions & 5 deletions WowPacketParser/SQL/Builders/UnitMisc.cs
Original file line number Diff line number Diff line change
Expand Up @@ -764,11 +764,16 @@ public static string CreatureTemplateNonWDB(Dictionary<WowGuid, Unit> units)
template.Faction == 2395 || template.Faction == 2401 || template.Faction == 2402) // player factions
template.Faction = 35;

template.UnitFlags &= ~UnitFlags.IsInCombat;
template.UnitFlags &= ~UnitFlags.PetIsAttackingTarget;
template.UnitFlags &= ~UnitFlags.PlayerControlled;
template.UnitFlags &= ~UnitFlags.Silenced;
template.UnitFlags &= ~UnitFlags.PossessedByPlayer;
if (ClientVersion.AddedInVersion(ClientType.Shadowlands))
template.UnitFlags &= ~UnitFlags.DisallowedShadowlands;
else
template.UnitFlags &= ~UnitFlags.Disallowed;

if (ClientVersion.AddedInVersion(ClientType.Cataclysm))
template.UnitFlags2 &= ~UnitFlags2.Disallowed;

if (ClientVersion.AddedInVersion(ClientType.Legion))
template.UnitFlags3 &= ~UnitFlags3.Disallowed;

if (!ClientVersion.AddedInVersion(ClientType.WarlordsOfDraenor))
{
Expand Down

0 comments on commit 2c29207

Please sign in to comment.