// Copyright (c) CypherCore All rights reserved. // Licensed under the GNU GENERAL PUBLIC LICENSE. See LICENSE file in the project root for full license information. using System; namespace Framework.Constants { public enum CreatureLinkedRespawnType { CreatureToCreature = 0, CreatureToGO = 1, // Creature is dependant on GO GOToGO = 2, GOToCreature = 3 // GO is dependant on creature } public enum AiReaction { Alert = 0, // pre-aggro (used in client packet handler) Friendly = 1, // (NOT used in client packet handler) Hostile = 2, // sent on every attack, triggers aggro sound (used in client packet handler) Afraid = 3, // seen for polymorph (when AI not in control of self?) (NOT used in client packet handler) Destory = 4 // used on object destroy (NOT used in client packet handler) } public enum CreatureClassifications { Normal = 0, Elite = 1, RareElite = 2, Obsolete = 3, Rare = 4, Trivial = 5, MinusMob = 6 } [Flags] public enum UnitFlags : uint { ServerControlled = 0x01, NonAttackable = 0x02, // not attackable, set when creature starts to cast spells with SPELL_EFFECT_SPAWN and cast time, removed when spell hits caster, original name is UNIT_FLAG_SPAWNING. Rename when it will be removed from all scripts RemoveClientControl = 0x04, // This is a legacy flag used to disable movement player's movement while controlling other units, SMSG_CLIENT_CONTROL replaces this functionality clientside now. CONFUSED and FLEEING flags have the same effect on client movement asDISABLE_MOVE_CONTROL in addition to preventing spell casts/autoattack (they all allow climbing steeper hills and emotes while moving) PlayerControlled = 0x08, //controlled by player, use _IMMUNE_TO_PC instead of _IMMUNE_TO_NPC Rename = 0x10, Preparation = 0x20, Unk6 = 0x40, NotAttackable1 = 0x80, ImmuneToPc = 0x100, ImmuneToNpc = 0x200, Looting = 0x400, PetInCombat = 0x800, PvpEnabling = 0x1000, ForceNameplate = 0x2000, CantSwim = 0x4000, CanSwim = 0x8000, // shows swim animation in water NonAttackable2 = 0x10000, Pacified = 0x20000, Stunned = 0x40000, InCombat = 0x80000, OnTaxi = 0x100000, Disarmed = 0x200000, Confused = 0x400000, Fleeing = 0x800000, Possessed = 0x1000000, // under direct client control by a player (possess or vehicle) Uninteractible = 0x2000000, Skinnable = 0x4000000, Mount = 0x8000000, Unk28 = 0x10000000, PreventEmotesFromChatText = 0x20000000, // Prevent automatically playing emotes from parsing chat text, for example "lol" in /say, ending message with ? or !, or using /yell Sheathe = 0x40000000, Immune = 0x80000000, Disallowed = (ServerControlled | NonAttackable | RemoveClientControl | PlayerControlled | Rename | Preparation | /* UNIT_FLAG_UNK_6 | */ NotAttackable1 | Looting | PetInCombat | PvpEnabling | CantSwim | CanSwim | NonAttackable2 | Pacified | Stunned | InCombat | OnTaxi | Disarmed | Confused | Fleeing | Possessed | Skinnable | Mount | Unk28 | PreventEmotesFromChatText | Sheathe | Immune), Allowed = (0xFFFFFFFF & ~Disallowed) } public enum UnitFlags2 : uint { FeignDeath = 0x01, HideBody = 0x02, IgnoreReputation = 0x04, ComprehendLang = 0x08, MirrorImage = 0x10, DontFadeIn = 0x20, ForceMovement = 0x40, DisarmOffhand = 0x80, DisablePredStats = 0x100, AllowChangingTalents = 0x200, DisarmRanged = 0x400, RegeneratePower = 0x800, RestrictPartyInteraction = 0x1000, PreventSpellClick = 0x2000, InteractWhileHostile = 0x4000, CannotTurn = 0x8000, Unk2 = 0x10000, PlayDeathAnim = 0x20000, AllowCheatSpells = 0x40000, SuppressHighlightWhenTargetedOrMousedOver = 0x00080000, TreatAsRaidUnitForHelpfulSpells = 0x100000, LargeAoi = 0x00200000, GiganticAoi = 0x400000, NoActions = 0x800000, AiWillOnlySwimIfTargetSwims = 0x1000000, DontGenerateCombatLogWhenEngagedWithNpcs = 0x2000000, UntargetableByClient = 0x4000000, AttackerIgnoresMinimumRanges = 0x8000000, UninteractibleIfHostile = 0x10000000, Unsued11 = 0x20000000, InfiniteAoi = 0x40000000, Unused13 = 0x80000000, Disallowed = (/*FeignDeath |*/ IgnoreReputation | ComprehendLang | MirrorImage | ForceMovement | DisarmOffhand | DisablePredStats | AllowChangingTalents | DisarmRanged | /* UNIT_FLAG2_REGENERATE_POWER | */ RestrictPartyInteraction | CannotTurn | PreventSpellClick | /*InteractWhileHostile | */ /* Unk2 | */ /* UNIT_FLAG2_PLAY_DEATH_ANIM | */ AllowCheatSpells | SuppressHighlightWhenTargetedOrMousedOver | TreatAsRaidUnitForHelpfulSpells | LargeAoi | GiganticAoi | NoActions | AiWillOnlySwimIfTargetSwims | DontGenerateCombatLogWhenEngagedWithNpcs | AttackerIgnoresMinimumRanges | UninteractibleIfHostile | Unsued11 | InfiniteAoi | Unused13), Allowed = (0xFFFFFFFF & ~Disallowed) } public enum UnitFlags3 : uint { Unk0 = 0x01, UnconsciousOnDeath = 0x02, // Description Shows "Unconscious" In Unit Tooltip Instead Of "Dead" AllowMountedCombat = 0x04, GarrisonPet = 0x08, // Special Garrison Pet Creatures That Display One Of Favorite Player Battle Pets - This Flag Allows Querying Name And Turns Off Default Battle Pet Behavior UiCanGetPosition = 0x10, // Allows Lua Functions Like Unitposition To Always Get The Position Even For Npcs Or Non-Grouped Players AiObstacle = 0x20, AlternativeDefaultLanguage = 0x40, SuppressAllNpcFeedback = 0x80, // Skips Playing Sounds On Left Clicking Npc For All Npcs As Long As Npc With This Flag Is Visible IgnoreCombat = 0x100, // Same As SpellAuraIgnoreCombat SuppressNpcFeedback = 0x200, // Skips Playing Sounds On Left Clicking Npc Unk10 = 0x400, Unk11 = 0x800, Unk12 = 0x1000, FakeDead = 0x2000, // Title Show As Dead NoFacingOnInteractAndFastFacingChase = 0x4000, // Causes The Creature To Both Not Change Facing On Interaction And Speeds Up Smooth Facing Changes While Attacking (Clientside) UntargetableFromUi = 0x8000, // Cannot Be Targeted From Lua Functions Startattack, Targetunit, Petattack NoFacingOnInteractWhileFakeDead = 0x10000, // Prevents Facing Changes While Interacting If Creature Has Flag FakeDead AlreadySkinned = 0x20000, SuppressAllNpcSounds = 0x40000, // Skips Playing Sounds On Beginning And End Of Npc Interaction For All Npcs As Long As Npc With This Flag Is Visible SuppressNpcSounds = 0x80000, // Skips Playing Sounds On Beginning And End Of Npc Interaction AllowInteractionWhileInCombat = 0x100000, //Allows using various NPC functions while in combat (vendor, gossip, questgiver) Unk21 = 0x200000, DontFadeOut = 0x400000, Unk23 = 0x800000, ForceHideNameplate = 0x1000000, Unk25 = 0x2000000, Unk26 = 0x4000000, Unk27 = 0x8000000, Unk28 = 0x10000000, Unk29 = 0x20000000, Unk30 = 0x40000000, Unk31 = 0x80000000, Disallowed = (Unk0 | /* UnconsciousOnDeath | */ /* AllowMountedCombat | */ GarrisonPet | /* UiCanGetPosition | */ /* AiObstacle | */ AlternativeDefaultLanguage | /* SuppressAllNpcFeedback | */ IgnoreCombat | SuppressNpcFeedback | Unk10 | Unk11 | Unk12 | /*FakeDead |*/ /* NoFacingOnInteractAndFastFacingChase | */ /* UntargetableFromUi | */ /* NoFacingOnInteractWhileFakeDead | */ AlreadySkinned | /* SuppressAllNpcSounds | */ /* SuppressNpcSounds | */ AllowInteractionWhileInCombat | Unk21 | /* DontFadeOut | */ Unk23 | ForceHideNameplate | Unk25 | Unk26 | Unk27 | Unk28 | Unk29 | Unk30 | Unk31), // Skip Allowed = (0xffffffff & ~Disallowed) // Skip } public enum NPCFlags : uint { None = 0x00, Gossip = 0x01, // 100% QuestGiver = 0x02, // 100% AccountBanker = 0x04, //account banker Unk2 = 0x08, Trainer = 0x10, // 100% TrainerClass = 0x20, // 100% TrainerProfession = 0x40, // 100% Vendor = 0x80, // 100% VendorAmmo = 0x100, // 100%, General Goods Vendor VendorFood = 0x200, // 100% VendorPoison = 0x400, // Guessed VendorReagent = 0x800, // 100% Repair = 0x1000, // 100% FlightMaster = 0x2000, // 100% SpiritHealer = 0x4000, // 100% AreaSpiritHealer = 0x8000, // 100% Innkeeper = 0x10000, // 100% Banker = 0x20000, // 100% Petitioner = 0x40000, // 100% 0xc0000 = Guild Petitions, 0x40000 = Arena Team Petitions TabardDesigner = 0x80000, // 100% BattleMaster = 0x100000, // 100% Auctioneer = 0x200000, // 100% StableMaster = 0x400000, // 100% GuildBanker = 0x800000, // SpellClick = 0x1000000, // PlayerVehicle = 0x2000000, // Players With Mounts That Have Vehicle Data Should Have It Set Mailbox = 0x4000000, // Mailbox ArtifactPowerRespec = 0x8000000, // Artifact Powers Reset Transmogrifier = 0x10000000, // Transmogrification VaultKeeper = 0x20000000, // Void Storage WildBattlePet = 0x40000000, // Pet That Player Can Fight (Battle Pet) BlackMarket = 0x80000000, // Black Market VendorMask = Vendor | VendorAmmo | VendorFood | VendorPoison | VendorReagent } public enum NPCFlags2 { None = 0x00, ItemUpgradeMaster = 0x01, GarrisonArchitect = 0x02, Steering = 0x04, AreaSpiritHealerIndividual = 0x08, ShipmentCrafter = 0x10, GarrisonMissionNpc = 0x20, TradeskillNpc = 0x40, BlackMarketView = 0x80, GarrisonTalentNpc = 0x200, ContributionCollector = 0x400, FastSteeringAvoidsObstacles = 0x2000, AzeriteRespec = 0x4000, IslandsQueue = 0x8000, SuppressNpcSoundsExceptEndOfInteraction = 0x10000, PersonalTabardDesigner = 0x200000 } [Flags] public enum CreatureTypeFlags : uint { Tameable = 0x00000001, // Makes The Mob Tameable (Must Also Be A Beast And Have Family Set) VisibleToGhosts = 0x00000002, // Creature Is Also Visible For Not Alive Player. Allows Gossip Interaction If Npcflag Allows? BossMob = 0x00000004, // Changes Creature'S Visible Level To "??" In The Creature'S Portrait - Immune Knockback. DoNotPlayWoundAnim = 0x00000008, NoFactionTooltip = 0x00000010, MoreAudible = 0x00000020, // Sound Related SpellAttackable = 0x00000040, InteractWhileDead = 0x00000080, // Player Can Interact With The Creature If Creature Is Dead (Not If Player Is Dead) SkinWithHerbalism = 0x00000100, // Can Be Looted By Herbalist SkinWithMining = 0x00000200, // Can Be Looted By Miner NoDeathMessage = 0x00000400, // Death Event Will Not Show Up In Combat Log AllowMountedCombat = 0x00000800, // Creature Can Remain Mounted When Entering Combat CanAssist = 0x00001000, // ? Can Aid Any Player In Combat If In Range? NoPetBar = 0x00002000, MaskUid = 0x00004000, SkinWithEngineering = 0x00008000, // Can Be Looted By Engineer TameableExotic = 0x00010000, // Can Be Tamed By Hunter As Exotic Pet UseModelCollisionSize = 0x00020000, // Collision Related. (Always Using Default Collision Box?) AllowInteractionWhileInCombat = 0x00040000, CollideWithMissiles = 0x00080000, // Projectiles Can Collide With This Creature - Interacts With TargetDestTraj NoNamePlate = 0x00100000, DoNotPlayMountedAnimations = 0x00200000, LinkAll = 0x00400000, InteractOnlyWithCreator = 0x00800000, DoNotPlayUnitEventSounds = 0x01000000, HasNoShadowBlob = 0x02000000, TreatAsRaidUnit = 0x04000000, //! Creature Can Be Targeted By Spells That Require Target To Be In Caster'S Party/Raid ForceGossip = 0x08000000, // Allows The Creature To Display A Single Gossip Option. DoNotSheathe = 0x10000000, DoNotTargetOnInteraction = 0x20000000, DoNotRenderObjectName = 0x40000000, QuestBoss = 0x80000000 // Not Verified } [Flags] public enum CreatureStaticFlags : uint { Mountable = 0x00000001, NoXp = 0x00000002, // CreatureFlagExtraNoXp NoLoot = 0x00000004, Unkillable = 0x00000008, Tameable = 0x00000010, // CreatureTypeFlagTameable ImmuneToPc = 0x00000020, // UnitFlagImmuneToPc ImmuneToNpc = 0x00000040, // UnitFlagImmuneToNpc CanWieldLoot = 0x00000080, Sessile = 0x00000100, // Rooted movementflag, creature is permanently rooted in place Uninteractible = 0x00000200, // UnitFlagUninteractible NoAutomaticRegen = 0x00000400, // Creatures With That Flag Uses No UnitFlag2RegeneratePower DespawnInstantly = 0x00000800, // Creature Instantly Disappear When Killed CorpseRaid = 0x00001000, CreatorLoot = 0x00002000, // Lootable Only By Creator(Engineering Dummies) NoDefense = 0x00004000, NoSpellDefense = 0x00008000, BossMob = 0x00010000, // CreatureTypeFlagBossMob, Original Description: Raid Boss Mob CombatPing = 0x00020000, Aquatic = 0x00040000, // Aka Water Only, CreatureTemplateMovement.Ground = 0 Amphibious = 0x00080000, // Creatures will be able to enter and leave water but can only move on the ocean floor when CREATURE_STATIC_FLAG_CAN_SWIM is not present NoMeleeFlee = 0x00100000, // "No Melee (Flee)" Prevents melee (moves as-if feared, does not make creature passive) VisibleToGhosts = 0x00200000, // CreatureTypeFlagVisibleToGhosts PvpEnabling = 0x00400000, // Old UnitFlagPvpEnabling, Now UnitBytes2OffsetPvpFlag From UnitFieldBytes2 DoNotPlayWoundAnim = 0x00800000, // CreatureTypeFlagDoNotPlayWoundAnim NoFactionTooltip = 0x01000000, // CreatureTypeFlagNoFactionTooltip IgnoreCombat = 0x02000000, // Actually Only Changes React State To Passive OnlyAttackPvpEnabling = 0x04000000, // "Only Attack Targets That Are Pvp Enabling" CallsGuards = 0x08000000, // Creature Will Summon A Guard If Player Is Within Its Aggro Range (Even If Creature Doesn'T Attack Per Se) CanSwim = 0x10000000, // Unitflags 0x8000 UnitFlagCanSwim Floating = 0x20000000, // sets DisableGravity movementflag on spawn/reset MoreAudible = 0x40000000, // CreatureTypeFlagMoreAudible LargeAoi = 0x80000000 // Unitflags2 0x200000 } [Flags] public enum CreatureStaticFlags2 : uint { NoPetScaling = 0x00000001, ForcePartyMembersIntoCombat = 0x00000002, // Original Description: Force Raid Combat LockTappersToRaidOnDeath = 0x00000004, // "Lock Tappers To Raid On Death", Toggleable By 'Set "RaidLockOnDeath" Flag For Unit(S)' Action, CreatureFlagExtraInstanceBind SpellAttackable = 0x00000008, // CreatureTypeFlagSpellAttackable, Original Description(Not Valid Anymore?): No Harmful Vertex Coloring NoCrushingBlows = 0x00000010, // CreatureFlagExtraNoCrushingBlows NoOwnerThreat = 0x00000020, NoWoundedSlowdown = 0x00000040, UseCreatorBonuses = 0x00000080, IgnoreFeignDeath = 0x00000100, // CreatureFlagExtraIgnoreFeignDeath IgnoreSanctuary = 0x00000200, // Ignores SPELL_EFFECT_SANCTUARY ActionTriggersWhileCharmed = 0x00000400, InteractWhileDead = 0x00000800, // CreatureTypeFlagInteractWhileDead NoInterruptSchoolCooldown = 0x00001000, ReturnSoulShardToMasterOfPet = 0x00002000, SkinWithHerbalism = 0x00004000, // CreatureTypeFlagSkinWithHerbalism SkinWithMining = 0x00008000, // CreatureTypeFlagSkinWithMining AlertContentTeamOnDeath = 0x00010000, AlertContentTeamAt90PctHp = 0x00020000, AllowMountedCombat = 0x00040000, // CreatureTypeFlagAllowMountedCombat PvpEnablingOoc = 0x00080000, NoDeathMessage = 0x00100000, // CreatureTypeFlagNoDeathMessage IgnorePathingFailure = 0x00200000, FullSpellList = 0x00400000, DoesNotReduceReputationForRaids = 0x00800000, IgnoreMisdirection = 0x01000000, HideBody = 0x02000000, // UnitFlag2HideBody SpawnDefensive = 0x04000000, ServerOnly = 0x08000000, CanSafeFall = 0x10000000, // Original Description: No Collision CanAssist = 0x20000000, // CreatureTypeFlagCanAssist, Original Description: Player Can Heal/Buff NoSkillGains = 0x40000000, // CreatureFlagExtraNoSkillGains NoPetBar = 0x80000000 // CreatureTypeFlagNoPetBar } [Flags] public enum CreatureStaticFlags3 : uint { NoDamageHistory = 0x00000001, DontPvpEnableOwner = 0x00000002, DoNotFadeIn = 0x00000004, // UnitFlag2DoNotFadeIn MaskUid = 0x00000008, // CreatureTypeFlagMaskUid, Original Description: Non-Unique In Combat Log SkinWithEngineering = 0x00000010, // CreatureTypeFlagSkinWithEngineering NoAggroOnLeash = 0x00000020, NoFriendlyAreaAuras = 0x00000040, ExtendedCorpseDuration = 0x00000080, CannotSwim = 0x00000100, // UnitFlagCannotSwim TameableExotic = 0x00000200, // CreatureTypeFlagTameableExotic GiganticAoi = 0x00000400, // Since Mop, Creatures With That Flag Have Unitflags2 0x400000 InfiniteAoi = 0x00000800, // Since Mop, Creatures With That Flag Have Unitflags2 0x40000000 CannotPenetrateWater = 0x00001000, // Waterwalking NoNamePlate = 0x00002000, // CreatureTypeFlagNoNamePlate ChecksLiquids = 0x00004000, NoThreatFeedback = 0x00008000, UseModelCollisionSize = 0x00010000, // CreatureTypeFlagUseModelCollisionSize AttackerIgnoresFacing = 0x00020000, // In 3.3.5 Used Only By Rocket Propelled Warhead AllowInteractionWhileInCombat = 0x00040000, // CreatureTypeFlagAllowInteractionWhileInCombat SpellClickForPartyOnly = 0x00080000, FactionLeader = 0x00100000, ImmuneToPlayerBuffs = 0x00200000, CollideWithMissiles = 0x00400000, // CreatureTypeFlagCollideWithMissiles CanBeMultitapped = 0x00800000, // Original Description: Do Not Tap (Credit To Threat List) DoNotPlayMountedAnimations = 0x01000000, // CreatureTypeFlagDoNotPlayMountedAnimations, Original Description: Disable Dodge, Parry And Block Animations CannotTurn = 0x02000000, // UnitFlag2CannotTurn EnemyCheckIgnoresLos = 0x04000000, ForeverCorpseDuration = 0x08000000, // 7 Days PetsAttackWith3dPathing = 0x10000000, // "Pets Attack With 3d Pathing (Kologarn)" LinkAll = 0x20000000, // CreatureTypeFlagLinkAll AiCanAutoTakeoffInCombat = 0x40000000, AiCanAutoLandInCombat = 0x80000000 } [Flags] public enum CreatureStaticFlags4 : uint { NoBirthAnim = 0x00000001, // SmsgUpdateObject'S "Nobirthanim" TreatAsPlayerForDiminishingReturns = 0x00000002, // Primarily Used By Toc Champions TreatAsPlayerForPvpDebuffDuration = 0x00000004, // Primarily Used By Toc Champions InteractOnlyWithCreator = 0x00000008, // CreatureTypeFlagInteractOnlyWithCreator, Original Description: Only Display Gossip For Summoner DoNotPlayUnitEventSounds = 0x00000010, // CreatureTypeFlagDoNotPlayUnitEventSounds, Original Description: No Death Scream HasNoShadowBlob = 0x00000020, // CreatureTypeFlagHasNoShadowBlob, Original Description(Wrongly Linked Type Flag Or Behavior Was Changed?): Can Be Healed By Enemies DealsTripleDamageToPcControlledPets = 0x00000040, NoNpcDamageBelow85ptc = 0x00000080, ObeysTauntDiminishingReturns = 0x00000100, // CreatureFlagExtraObeysTauntDiminishingReturns NoMeleeApproach = 0x00000200, // "No Melee (Approach)" Prevents melee (chases into melee range, does not make creature passive) UpdateCreatureRecordWhenInstanceChangesDifficulty = 0x00000400, // Used Only By Snobold Vassal CannotDaze = 0x00000800, // "Cannot Daze (Combat Stun)" FlatHonorAward = 0x00001000, IgnoreLosWhenCastingOnMe = 0x00002000, // "Other Objects Can Ignore Line Of Sight Requirements When Casting Spells On Me", Used Only By Ice Tomb In 3.3.5 GiveQuestKillCreditWhileOffline = 0x00004000, TreatAsRaidUnitForHelpfulSpells = 0x00008000, // CreatureTypeFlagTreatAsRaidUnit, "Treat As Raid Unit For Helpful Spells (Instances Only)", Used By Valithria Dreamwalker DontRepositionIfMeleeTargetIsTooClose = 0x00010000, // "Don'T Reposition Because Melee Target Is Too Close" PetOrGuardianAiDontGoBehindTarget = 0x00020000, MinuteLootRollTimer = 0x00040000, // Used By Lich King ForceGossip = 0x00080000, // CreatureTypeFlagForceGossip DontRepositionWithFriendsInCombat = 0x00100000, DoNotSheathe = 0x00200000, // CreatureTypeFlagDoNotSheathe, Original Description: Manual Sheathing Control IgnoreSpellMinRangeRestrictions = 0x00400000, // Unitflags2 0x8000000, Original Description: Attacker Ignores Minimum Ranges SuppressInstanceWideReleaseInCombat = 0x00800000, PreventSwim = 0x01000000, // Unitflags2 0x1000000, Original Description: Ai Will Only Swim If Target Swims HideInCombatLog = 0x02000000, // Unitflags2 0x2000000, Original Description: Don'T Generate Combat Log When Engaged With Npc'S AllowNpcCombatWhileUninteractible = 0x04000000, PreferNpcsWhenSearchingForEnemies = 0x08000000, OnlyGenerateInitialThreat = 0x10000000, DoNotTargetOnInteraction = 0x20000000, // CreatureTypeFlagDoNotTargetOnInteraction, Original Description: Doesn'T Change Target On Right Click DoNotRenderObjectName = 0x40000000, // CreatureTypeFlagDoNotRenderObjectName, Original Description: Hide Name In World Frame QuestBoss = 0x80000000 // CreatureTypeFlagQuestBoss } [Flags] public enum CreatureStaticFlags5 : uint { UntargetableByClient = 0x00000001, // Unitflags2 0x4000000 UnitFlag2UntargetableByClient ForceSelfMounting = 0x00000002, UninteractibleIfHostile = 0x00000004, // Unitflags2 0x10000000 DisablesXpAward = 0x00000008, DisableAiPrediction = 0x00000010, NoLeavecombatStateRestore = 0x00000020, BypassInteractInterrupts = 0x00000040, BackArc240Degree = 0x00000080, InteractWhileHostile = 0x00000100, // Unitflags2 0x4000 UnitFlag2InteractWhileHostile DontDismissOnFlyingMount = 0x00000200, PredictivePowerRegen = 0x00000400, // CreatureTypeflags2Unk1 HideLevelInfoInTooltip = 0x00000800, // CreatureTypeflags2Unk2 HideHealthBarUnderTooltip = 0x00001000, // CreatureTypeflags2Unk3 SuppressHighlightWhenTargetedOrMousedOver = 0x00002000, // Unitflags2 0x80000 AiPreferPathableTargets = 0x00004000, FrequentAreaTriggerChecks = 0x00008000, AssignKillCreditToEncounterList = 0x00010000, NeverEvade = 0x00020000, AiCantPathOnSteepSlopes = 0x00040000, AiIgnoreLosToMeleeTarget = 0x00080000, NoTextInChatBubble = 0x00100000, // "Never Display Emote Or Chat Text In A Chat Bubble", CreatureTypeflags2Unk4 CloseInOnUnpathableTarget = 0x00200000, // "Ai Pets Close In On Unpathable Target" DontGoBehindMe = 0x00400000, // "Pet/Guardian Ai Don'T Go Behind Me (Use On Target)" NoDeathThud = 0x00800000, // CreatureTypeflags2Unk5 ClientLocalCreature = 0x01000000, CanDropLootWhileInAChallengeModeInstance = 0x02000000, HasSafeLocation = 0x04000000, NoHealthRegen = 0x08000000, NoPowerRegen = 0x10000000, NoPetUnitFrame = 0x20000000, NoInteractOnLeftClick = 0x40000000, // CreatureTypeflags2Unk6 GiveCriteriaKillCreditWhenCharmed = 0x80000000 } [Flags] public enum CreatureStaticFlags6 : uint { DoNotAutoResummon = 0x00000001, // "Do Not Auto-Resummon This Companion Creature" ReplaceVisibleUnitIfAvailable = 0x00000002, // "Smooth Phasing: Replace Visible Unit If Available" IgnoreRealmCoalescingHidingCode = 0x00000004, // "Ignore The Realm Coalescing Hiding Code (Always Show)" TapsToFaction = 0x00000008, OnlyQuestgiverForSummoner = 0x00000010, AiCombatReturnPrecise = 0x00000020, HomeRealmOnlyLoot = 0x00000040, NoInteractResponse = 0x00000080, // Tflag2Unk7 NoInitialPower = 0x00000100, DontCancelChannelOnMasterMounting = 0x00000200, CanToggleBetweenDeathAndPersonalLoot = 0x00000400, AlwaysStandOnTopOfTarget = 0x00000800, // "Always, Always Tries To Stand Right On Top Of His Move To Target. Always!!", Toggleable By 'Set "Always Stand On Target" Flag For Unit(S)' Or Not Same? UnconsciousOnDeath = 0x00001000, DontReportToLocalDefenseChannelOnDeath = 0x00002000, PreferUnengagedMonsters = 0x00004000, // "Prefer Unengaged Monsters When Picking A Target" UsePvpPowerAndResilience = 0x00008000, // "Use Pvp Power And Resilience When Players Attack This Creature" DontClearDebuffsOnLeaveCombat = 0x00010000, PersonalLootHasFullSecurity = 0x00020000, // "Personal Loot Has Full Security (Guaranteed Push/Mail Delivery)" TripleSpellVisuals = 0x00040000, UseGarrisonOwnerLevel = 0x00080000, ImmediateAoiUpdateOnSpawn = 0x00100000, UiCanGetPosition = 0x00200000, SeamlessTransferProhibited = 0x00400000, AlwaysUseGroupLootMethod = 0x00800000, NoBossKillBanner = 0x01000000, ForceTriggeringPlayerLootOnly = 0x02000000, ShowBossFrameWhileUninteractable = 0x04000000, ScalesToPlayerLevel = 0x08000000, AiDontLeaveMeleeForRangedWhenTargetGetsRooted = 0x10000000, DontUseCombatReachForChaining = 0x20000000, DoNotPlayProceduralWoundAnim = 0x40000000, ApplyProceduralWoundAnimToBase = 0x80000000 // Tflag2Unk14 } [Flags] public enum CreatureStaticFlags7 { ImportantNpc = 0x00000001, ImportantQuestNpc = 0x00000002, LargeNameplate = 0x00000004, TrivialPet = 0x00000008, AiEnemiesDontBackupWhenIGetRooted = 0x00000010, NoAutomaticCombatAnchor = 0x00000020, OnlyTargetableByCreator = 0x00000040, TreatAsPlayerForIsplayercontrolled = 0x00000080, GenerateNoThreatOrDamage = 0x00000100, InteractOnlyOnQuest = 0x00000200, DisableKillCreditForOfflinePlayers = 0x00000400, AiAdditionalPathing = 0x00080000, } [Flags] public enum CreatureStaticFlags8 { ForceCloseInOnPathFailBehavior = 0x00000002, Use2dChasingCalculation = 0x00000020, UseFastClassicHeartbeat = 0x00000040, } [Flags] public enum CreatureFlagsExtra : uint { InstanceBind = 0x01, // Creature Kill Bind Instance With Killer And Killer'S Group Civilian = 0x02, // Not Aggro (Ignore Faction/Reputation Hostility) NoParry = 0x04, // Creature Can'T Parry NoParryHasten = 0x08, // Creature Can'T Counter-Attack At Parry NoBlock = 0x10, // Creature Can'T Block NoCrushingBlows = 0x20, // Creature Can'T Do Crush Attacks NoXP = 0x40, // creature kill does not provide XP Trigger = 0x80, // Trigger Creature NoTaunt = 0x100, // Creature Is Immune To Taunt Auras And 'attack me' effects Unused9 = 0x200, GhostVisibility = 0x400, // creature will only be visible to dead players UseOffhandAttack = 0x800, // creature will use offhand attacks NoSellVendor = 0x1000, // players can't sell items to this vendor CannotEnterCombat = 0x2000, // creature is not allowed to enter combat Worldevent = 0x4000, // Custom Flag For World Event Creatures (Left Room For Merging) Guard = 0x8000, // Creature Is Guard IgnoreFeighDeath = 0x10000, // creature ignores feign death NoCrit = 0x20000, // Creature Can'T Do Critical Strikes NoSkillGains = 0x40000, // creature won't increase weapon skills ObeysTauntDiminishingReturns = 0x80000, // Taunt is subject to diminishing returns on this creature AllDiminish = 0x100000, // creature is subject to all diminishing returns as players are NoPlayerDamageReq = 0x200000, // creature does not need to take player damage for kill credit Unused22 = 0x400000, Unused23 = 0x800000, Unused24 = 0x1000000, Unused25 = 0x2000000, Unused26 = 0x4000000, Unused27 = 0x8000000, DungeonBoss = 0x10000000, // Creature Is A Dungeon Boss IgnorePathfinding = 0x20000000, // creature ignore pathfinding ImmunityKnockback = 0x40000000, // creature is immune to knockback effects Unused31 = 0x80000000, // Masks AllUnused = (Unused22 | Unused23 | Unused24 | Unused25 | Unused26 | Unused27 | Unused31), DBAllowed = (0xFFFFFFFF & ~(AllUnused | DungeonBoss)) } public enum CreatureType { Beast = 1, Dragonkin = 2, Demon = 3, Elemental = 4, Giant = 5, Undead = 6, Humanoid = 7, Critter = 8, Mechanical = 9, NotSpecified = 10, Totem = 11, NonCombatPet = 12, GasCloud = 13, WildPet = 14, Aberration = 15, MaskDemonOrUndead = (1 << (Demon - 1)) | (1 << (Undead - 1)), MaskHumanoidOrUndead = (1 << (Humanoid - 1)) | (1 << (Undead - 1)), MaskMechanicalOrElemental = (1 << (Mechanical - 1)) | (1 << (Elemental - 1)) } public enum CreatureFamily { None = 0, Wolf = 1, Cat = 2, Spider = 3, Bear = 4, Boar = 5, Crocolisk = 6, CarrionBird = 7, Crab = 8, Gorilla = 9, Raptor = 11, Tallstrider = 12, Felhunter = 15, Voidwalker = 16, Succubus = 17, Doomguard = 19, Scorpid = 20, Turtle = 21, Imp = 23, Bat = 24, Hyena = 25, BirdOfPrey = 26, WindSerpent = 27, RemoteControl = 28, Felguard = 29, Dragonhawk = 30, Ravager = 31, WarpStalker = 32, Sporebat = 33, Ray = 34, Serpent = 35, Moth = 37, Chimaera = 38, Devilsaur = 39, Ghoul = 40, Aqiri = 41, Worm = 42, Clefthoof = 43, Wasp = 44, CoreHound = 45, SpiritBeast = 46, WaterElemental = 49, Fox = 50, Monkey = 51, Hound = 52, Beetle = 53, ShaleBeast = 55, Zombie = 56, QaTest = 57, Hydra = 68, Felimp = 100, Voidlord = 101, Shivara = 102, Observer = 103, Wrathguard = 104, Infernal = 108, Fireelemental = 116, Earthelemental = 117, Crane = 125, Waterstrider = 126, Rodent = 127, StoneHound = 128, Gruffhorn = 129, Basilisk = 130, Direhorn = 138, Stormelemental = 145, Torrorguard = 147, Abyssal = 148, Riverbeast = 150, Stag = 151, Mechanical = 154, Abomination = 155, Scalehide = 156, Oxen = 157, Feathermane = 160, Lizard = 288, Pterrordax = 290, Toad = 291, Carapid = 292, BloodBeast = 296, Camel = 298, Courser = 299, Mammoth = 300, Incubus = 302, LesserDragonkin = 303 } public enum InhabitType { Ground = 1, Water = 2, Air = 4, Root = 8, Anywhere = Ground | Water | Air | Root } public enum EvadeReason { NoHostiles, // the creature's threat list is empty Boundary, // the creature has moved outside its evade boundary NoPath, // the creature was unable to reach its target for over 5 seconds SequenceBreak, // this is a boss and the pre-requisite encounters for engaging it are not defeated yet Other } public enum SelectTargetMethod { Random = 0, // just pick a random target MaxThreat, // prefer targets higher in the threat list MinThreat, // prefer targets lower in the threat list MaxDistance, // prefer targets further from us MinDistance // prefer targets closer to us } [Flags] public enum GroupAIFlags { None = 0, // No creature group behavior MembersAssistLeader = 0x01, // The member aggroes if the leader aggroes LeaderAssistsMember = 0x02, // The leader aggroes if the member aggroes MembersAssistMember = (MembersAssistLeader | LeaderAssistsMember), // every member will assist if any member is attacked IdleInFormation = 0x200, // The member will follow the leader when pathing idly } public enum CreatureChaseMovementType { Run, CanWalk, AlwaysWalk, Max } public enum CreatureRandomMovementType { Walk, CanRun, AlwaysRun, Max } public enum VendorInventoryReason { None = 0, Empty = 1 } public enum VendorDataTypeFlags { Generic = 0x01, Ammo = 0x02, Food = 0x04, Poison = 0x08, Reagent = 0x10, Petition = 0x20, } }