From 803f207dad5fa328230eb7a9291c2f2fbbf028d5 Mon Sep 17 00:00:00 2001 From: Meji Date: Thu, 29 Feb 2024 21:15:42 +0100 Subject: [PATCH 1/2] SQL output for some CreatureStaticFlags and update disallowed unit_flags --- WowPacketParser/Enums/CreatureStaticFlags.cs | 251 ++++++++++++++++++ WowPacketParser/Enums/UnitFlags.cs | 2 +- WowPacketParser/Enums/UnitFlags2.cs | 2 +- WowPacketParser/SQL/Builders/UnitMisc.cs | 21 ++ .../Objects/CreatureTemplateDifficulty.cs | 24 ++ 5 files changed, 298 insertions(+), 2 deletions(-) create mode 100644 WowPacketParser/Enums/CreatureStaticFlags.cs diff --git a/WowPacketParser/Enums/CreatureStaticFlags.cs b/WowPacketParser/Enums/CreatureStaticFlags.cs new file mode 100644 index 0000000000..21dd62aff8 --- /dev/null +++ b/WowPacketParser/Enums/CreatureStaticFlags.cs @@ -0,0 +1,251 @@ +using System; + +namespace WowPacketParser.Enums +{ + [Flags] + public enum CreatureStaticFlags : uint + { + CREATURE_STATIC_FLAG_MOUNTABLE = 0x00000001, + CREATURE_STATIC_FLAG_NO_XP = 0x00000002, // CREATURE_FLAG_EXTRA_NO_XP + CREATURE_STATIC_FLAG_NO_LOOT = 0x00000004, + CREATURE_STATIC_FLAG_UNKILLABLE = 0x00000008, + CREATURE_STATIC_FLAG_TAMEABLE = 0x00000010, // CREATURE_TYPE_FLAG_TAMEABLE + CREATURE_STATIC_FLAG_IMMUNE_TO_PC = 0x00000020, // UNIT_FLAG_IMMUNE_TO_PC + CREATURE_STATIC_FLAG_IMMUNE_TO_NPC = 0x00000040, // UNIT_FLAG_IMMUNE_TO_NPC + CREATURE_STATIC_FLAG_CAN_WIELD_LOOT = 0x00000080, + CREATURE_STATIC_FLAG_SESSILE = 0x00000100, // Rooted movementflag, creature is permanently rooted in place + CREATURE_STATIC_FLAG_UNINTERACTIBLE = 0x00000200, // UNIT_FLAG_UNINTERACTIBLE + CREATURE_STATIC_FLAG_NO_AUTOMATIC_REGEN = 0x00000400, // Creatures with that flag uses no UNIT_FLAG2_REGENERATE_POWER + CREATURE_STATIC_FLAG_DESPAWN_INSTANTLY = 0x00000800, // Creature instantly disappear when killed + CREATURE_STATIC_FLAG_CORPSE_RAID = 0x00001000, + CREATURE_STATIC_FLAG_CREATOR_LOOT = 0x00002000, // Lootable only by creator(engineering dummies) + CREATURE_STATIC_FLAG_NO_DEFENSE = 0x00004000, + CREATURE_STATIC_FLAG_NO_SPELL_DEFENSE = 0x00008000, + CREATURE_STATIC_FLAG_BOSS_MOB = 0x00010000, // CREATURE_TYPE_FLAG_BOSS_MOB, original description: Raid Boss Mob + CREATURE_STATIC_FLAG_COMBAT_PING = 0x00020000, + CREATURE_STATIC_FLAG_AQUATIC = 0x00040000, // aka Water Only, creature_template_movement.Ground = 0 + CREATURE_STATIC_FLAG_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 + CREATURE_STATIC_FLAG_NO_MELEE_FLEE = 0x00100000, // "No Melee (Flee)" Prevents melee (moves as-if feared, does not make creature passive) + CREATURE_STATIC_FLAG_VISIBLE_TO_GHOSTS = 0x00200000, // CREATURE_TYPE_FLAG_VISIBLE_TO_GHOSTS + CREATURE_STATIC_FLAG_PVP_ENABLING = 0x00400000, // Old UNIT_FLAG_PVP_ENABLING, now UNIT_BYTES_2_OFFSET_PVP_FLAG from UNIT_FIELD_BYTES_2 + CREATURE_STATIC_FLAG_DO_NOT_PLAY_WOUND_ANIM = 0x00800000, // CREATURE_TYPE_FLAG_DO_NOT_PLAY_WOUND_ANIM + CREATURE_STATIC_FLAG_NO_FACTION_TOOLTIP = 0x01000000, // CREATURE_TYPE_FLAG_NO_FACTION_TOOLTIP + CREATURE_STATIC_FLAG_IGNORE_COMBAT = 0x02000000, // Actually only changes react state to passive + CREATURE_STATIC_FLAG_ONLY_ATTACK_PVP_ENABLING = 0x04000000, // "Only attack targets that are PvP enabling" + CREATURE_STATIC_FLAG_CALLS_GUARDS = 0x08000000, // Creature will summon a guard if player is within its aggro range (even if creature doesn't attack per se) + CREATURE_STATIC_FLAG_CAN_SWIM = 0x10000000, // UnitFlags 0x8000 UNIT_FLAG_CAN_SWIM + CREATURE_STATIC_FLAG_FLOATING = 0x20000000, // sets DisableGravity movementflag on spawn/reset + CREATURE_STATIC_FLAG_MORE_AUDIBLE = 0x40000000, // CREATURE_TYPE_FLAG_MORE_AUDIBLE + CREATURE_STATIC_FLAG_LARGE_AOI = 0x80000000 // UnitFlags2 0x200000 + } + + [Flags] + public enum CreatureStaticFlags2 : uint + { + CREATURE_STATIC_FLAG_2_NO_PET_SCALING = 0x00000001, + CREATURE_STATIC_FLAG_2_FORCE_PARTY_MEMBERS_INTO_COMBAT = 0x00000002, // Original description: Force Raid Combat + CREATURE_STATIC_FLAG_2_LOCK_TAPPERS_TO_RAID_ON_DEATH = 0x00000004, // "Lock Tappers To Raid On Death", toggleable by 'Set "RAID_LOCK_ON_DEATH" flag for unit(s)' action, CREATURE_FLAG_EXTRA_INSTANCE_BIND + CREATURE_STATIC_FLAG_2_SPELL_ATTACKABLE = 0x00000008, // CREATURE_TYPE_FLAG_SPELL_ATTACKABLE, original description(not valid anymore?): No Harmful Vertex Coloring + CREATURE_STATIC_FLAG_2_NO_CRUSHING_BLOWS = 0x00000010, // CREATURE_FLAG_EXTRA_NO_CRUSHING_BLOWS + CREATURE_STATIC_FLAG_2_NO_OWNER_THREAT = 0x00000020, + CREATURE_STATIC_FLAG_2_NO_WOUNDED_SLOWDOWN = 0x00000040, + CREATURE_STATIC_FLAG_2_USE_CREATOR_BONUSES = 0x00000080, + CREATURE_STATIC_FLAG_2_IGNORE_FEIGN_DEATH = 0x00000100, // CREATURE_FLAG_EXTRA_IGNORE_FEIGN_DEATH + CREATURE_STATIC_FLAG_2_IGNORE_SANCTUARY = 0x00000200, + CREATURE_STATIC_FLAG_2_ACTION_TRIGGERS_WHILE_CHARMED = 0x00000400, + CREATURE_STATIC_FLAG_2_INTERACT_WHILE_DEAD = 0x00000800, // CREATURE_TYPE_FLAG_INTERACT_WHILE_DEAD + CREATURE_STATIC_FLAG_2_NO_INTERRUPT_SCHOOL_COOLDOWN = 0x00001000, + CREATURE_STATIC_FLAG_2_RETURN_SOUL_SHARD_TO_MASTER_OF_PET = 0x00002000, + CREATURE_STATIC_FLAG_2_SKIN_WITH_HERBALISM = 0x00004000, // CREATURE_TYPE_FLAG_SKIN_WITH_HERBALISM + CREATURE_STATIC_FLAG_2_SKIN_WITH_MINING = 0x00008000, // CREATURE_TYPE_FLAG_SKIN_WITH_MINING + CREATURE_STATIC_FLAG_2_ALERT_CONTENT_TEAM_ON_DEATH = 0x00010000, + CREATURE_STATIC_FLAG_2_ALERT_CONTENT_TEAM_AT_90_PCT_HP = 0x00020000, + CREATURE_STATIC_FLAG_2_ALLOW_MOUNTED_COMBAT = 0x00040000, // CREATURE_TYPE_FLAG_ALLOW_MOUNTED_COMBAT + CREATURE_STATIC_FLAG_2_PVP_ENABLING_OOC = 0x00080000, + CREATURE_STATIC_FLAG_2_NO_DEATH_MESSAGE = 0x00100000, // CREATURE_TYPE_FLAG_NO_DEATH_MESSAGE + CREATURE_STATIC_FLAG_2_IGNORE_PATHING_FAILURE = 0x00200000, + CREATURE_STATIC_FLAG_2_FULL_SPELL_LIST = 0x00400000, + CREATURE_STATIC_FLAG_2_DOES_NOT_REDUCE_REPUTATION_FOR_RAIDS = 0x00800000, + CREATURE_STATIC_FLAG_2_IGNORE_MISDIRECTION = 0x01000000, + CREATURE_STATIC_FLAG_2_HIDE_BODY = 0x02000000, // UNIT_FLAG2_HIDE_BODY + CREATURE_STATIC_FLAG_2_SPAWN_DEFENSIVE = 0x04000000, + CREATURE_STATIC_FLAG_2_SERVER_ONLY = 0x08000000, + CREATURE_STATIC_FLAG_2_CAN_SAFE_FALL = 0x10000000, // Original description: No Collision + CREATURE_STATIC_FLAG_2_CAN_ASSIST = 0x20000000, // CREATURE_TYPE_FLAG_CAN_ASSIST, original description: Player Can Heal/Buff + CREATURE_STATIC_FLAG_2_NO_SKILL_GAINS = 0x40000000, // CREATURE_FLAG_EXTRA_NO_SKILL_GAINS + CREATURE_STATIC_FLAG_2_NO_PET_BAR = 0x80000000 // CREATURE_TYPE_FLAG_NO_PET_BAR + } + + [Flags] + public enum CreatureStaticFlags3 : uint + { + CREATURE_STATIC_FLAG_3_NO_DAMAGE_HISTORY = 0x00000001, + CREATURE_STATIC_FLAG_3_DONT_PVP_ENABLE_OWNER = 0x00000002, + CREATURE_STATIC_FLAG_3_DO_NOT_FADE_IN = 0x00000004, // UNIT_FLAG2_DO_NOT_FADE_IN + CREATURE_STATIC_FLAG_3_MASK_UID = 0x00000008, // CREATURE_TYPE_FLAG_MASK_UID, original description: Non-Unique In Combat Log + CREATURE_STATIC_FLAG_3_SKIN_WITH_ENGINEERING = 0x00000010, // CREATURE_TYPE_FLAG_SKIN_WITH_ENGINEERING + CREATURE_STATIC_FLAG_3_NO_AGGRO_ON_LEASH = 0x00000020, + CREATURE_STATIC_FLAG_3_NO_FRIENDLY_AREA_AURAS = 0x00000040, + CREATURE_STATIC_FLAG_3_EXTENDED_CORPSE_DURATION = 0x00000080, + CREATURE_STATIC_FLAG_3_CANNOT_SWIM = 0x00000100, // UNIT_FLAG_CANNOT_SWIM + CREATURE_STATIC_FLAG_3_TAMEABLE_EXOTIC = 0x00000200, // CREATURE_TYPE_FLAG_TAMEABLE_EXOTIC + CREATURE_STATIC_FLAG_3_GIGANTIC_AOI = 0x00000400, // Since MoP, creatures with that flag have UnitFlags2 0x400000 + CREATURE_STATIC_FLAG_3_INFINITE_AOI = 0x00000800, // Since MoP, creatures with that flag have UnitFlags2 0x40000000 + CREATURE_STATIC_FLAG_3_CANNOT_PENETRATE_WATER = 0x00001000, // Waterwalking + CREATURE_STATIC_FLAG_3_NO_NAME_PLATE = 0x00002000, // CREATURE_TYPE_FLAG_NO_NAME_PLATE + CREATURE_STATIC_FLAG_3_CHECKS_LIQUIDS = 0x00004000, + CREATURE_STATIC_FLAG_3_NO_THREAT_FEEDBACK = 0x00008000, + CREATURE_STATIC_FLAG_3_USE_MODEL_COLLISION_SIZE = 0x00010000, // CREATURE_TYPE_FLAG_USE_MODEL_COLLISION_SIZE + CREATURE_STATIC_FLAG_3_ATTACKER_IGNORES_FACING = 0x00020000, // In 3.3.5 used only by Rocket Propelled Warhead + CREATURE_STATIC_FLAG_3_ALLOW_INTERACTION_WHILE_IN_COMBAT = 0x00040000, // CREATURE_TYPE_FLAG_ALLOW_INTERACTION_WHILE_IN_COMBAT + CREATURE_STATIC_FLAG_3_SPELL_CLICK_FOR_PARTY_ONLY = 0x00080000, + CREATURE_STATIC_FLAG_3_FACTION_LEADER = 0x00100000, + CREATURE_STATIC_FLAG_3_IMMUNE_TO_PLAYER_BUFFS = 0x00200000, + CREATURE_STATIC_FLAG_3_COLLIDE_WITH_MISSILES = 0x00400000, // CREATURE_TYPE_FLAG_COLLIDE_WITH_MISSILES + CREATURE_STATIC_FLAG_3_CAN_BE_MULTITAPPED = 0x00800000, // Original description: Do Not Tap (Credit to threat list) + CREATURE_STATIC_FLAG_3_DO_NOT_PLAY_MOUNTED_ANIMATIONS = 0x01000000, // CREATURE_TYPE_FLAG_DO_NOT_PLAY_MOUNTED_ANIMATIONS, original description: Disable Dodge, Parry and Block Animations + CREATURE_STATIC_FLAG_3_CANNOT_TURN = 0x02000000, // UNIT_FLAG2_CANNOT_TURN + CREATURE_STATIC_FLAG_3_ENEMY_CHECK_IGNORES_LOS = 0x04000000, + CREATURE_STATIC_FLAG_3_FOREVER_CORPSE_DURATION = 0x08000000, // 7 days + CREATURE_STATIC_FLAG_3_PETS_ATTACK_WITH_3D_PATHING = 0x10000000, // "Pets attack with 3d pathing (Kologarn)" + CREATURE_STATIC_FLAG_3_LINK_ALL = 0x20000000, // CREATURE_TYPE_FLAG_LINK_ALL + CREATURE_STATIC_FLAG_3_AI_CAN_AUTO_TAKEOFF_IN_COMBAT = 0x40000000, + CREATURE_STATIC_FLAG_3_AI_CAN_AUTO_LAND_IN_COMBAT = 0x80000000 + } + + [Flags] + public enum CreatureStaticFlags4 : uint + { + CREATURE_STATIC_FLAG_4_NO_BIRTH_ANIM = 0x00000001, // SMSG_UPDATE_OBJECT's "NoBirthAnim" + CREATURE_STATIC_FLAG_4_TREAT_AS_PLAYER_FOR_DIMINISHING_RETURNS = 0x00000002, // Primarily used by ToC champions + CREATURE_STATIC_FLAG_4_TREAT_AS_PLAYER_FOR_PVP_DEBUFF_DURATION = 0x00000004, // Primarily used by ToC champions + CREATURE_STATIC_FLAG_4_INTERACT_ONLY_WITH_CREATOR = 0x00000008, // CREATURE_TYPE_FLAG_INTERACT_ONLY_WITH_CREATOR, original description: Only Display Gossip for Summoner + CREATURE_STATIC_FLAG_4_DO_NOT_PLAY_UNIT_EVENT_SOUNDS = 0x00000010, // CREATURE_TYPE_FLAG_DO_NOT_PLAY_UNIT_EVENT_SOUNDS, original description: No Death Scream + CREATURE_STATIC_FLAG_4_HAS_NO_SHADOW_BLOB = 0x00000020, // CREATURE_TYPE_FLAG_HAS_NO_SHADOW_BLOB, original description(wrongly linked type flag or behavior was changed?): Can be Healed by Enemies + CREATURE_STATIC_FLAG_4_DEALS_TRIPLE_DAMAGE_TO_PC_CONTROLLED_PETS = 0x00000040, + CREATURE_STATIC_FLAG_4_NO_NPC_DAMAGE_BELOW_85PTC = 0x00000080, + CREATURE_STATIC_FLAG_4_OBEYS_TAUNT_DIMINISHING_RETURNS = 0x00000100, // CREATURE_FLAG_EXTRA_OBEYS_TAUNT_DIMINISHING_RETURNS + CREATURE_STATIC_FLAG_4_NO_MELEE_APPROACH = 0x00000200, // "No Melee (Approach)" Prevents melee (chases into melee range, does not make creature passive) + CREATURE_STATIC_FLAG_4_UPDATE_CREATURE_RECORD_WHEN_INSTANCE_CHANGES_DIFFICULTY = 0x00000400, // Used only by Snobold Vassal + CREATURE_STATIC_FLAG_4_CANNOT_DAZE = 0x00000800, // "Cannot Daze (Combat Stun)" + CREATURE_STATIC_FLAG_4_FLAT_HONOR_AWARD = 0x00001000, + CREATURE_STATIC_FLAG_4_IGNORE_LOS_WHEN_CASTING_ON_ME = 0x00002000, // "Other objects can ignore line of sight requirements when casting spells on me", used only by Ice Tomb in 3.3.5 + CREATURE_STATIC_FLAG_4_GIVE_QUEST_KILL_CREDIT_WHILE_OFFLINE = 0x00004000, + CREATURE_STATIC_FLAG_4_TREAT_AS_RAID_UNIT_FOR_HELPFUL_SPELLS = 0x00008000, // CREATURE_TYPE_FLAG_TREAT_AS_RAID_UNIT, "Treat as Raid Unit For Helpful Spells (Instances ONLY)", used by Valithria Dreamwalker + CREATURE_STATIC_FLAG_4_DONT_REPOSITION_IF_MELEE_TARGET_IS_TOO_CLOSE = 0x00010000, // "Don't reposition because melee target is too close" + CREATURE_STATIC_FLAG_4_PET_OR_GUARDIAN_AI_DONT_GO_BEHIND_TARGET = 0x00020000, + CREATURE_STATIC_FLAG_4_5_MINUTE_LOOT_ROLL_TIMER = 0x00040000, // Used by Lich King + CREATURE_STATIC_FLAG_4_FORCE_GOSSIP = 0x00080000, // CREATURE_TYPE_FLAG_FORCE_GOSSIP + CREATURE_STATIC_FLAG_4_DONT_REPOSITION_WITH_FRIENDS_IN_COMBAT = 0x00100000, + CREATURE_STATIC_FLAG_4_DO_NOT_SHEATHE = 0x00200000, // CREATURE_TYPE_FLAG_DO_NOT_SHEATHE, original description: Manual Sheathing control + CREATURE_STATIC_FLAG_4_IGNORE_SPELL_MIN_RANGE_RESTRICTIONS = 0x00400000, // UnitFlags2 0x8000000, original description: Attacker Ignores Minimum Ranges + CREATURE_STATIC_FLAG_4_SUPPRESS_INSTANCE_WIDE_RELEASE_IN_COMBAT = 0x00800000, + CREATURE_STATIC_FLAG_4_PREVENT_SWIM = 0x01000000, // UnitFlags2 0x1000000, original description: AI will only swim if target swims + CREATURE_STATIC_FLAG_4_HIDE_IN_COMBAT_LOG = 0x02000000, // UnitFlags2 0x2000000, original description: Don't generate combat log when engaged with NPC's + CREATURE_STATIC_FLAG_4_ALLOW_NPC_COMBAT_WHILE_UNINTERACTIBLE = 0x04000000, + CREATURE_STATIC_FLAG_4_PREFER_NPCS_WHEN_SEARCHING_FOR_ENEMIES = 0x08000000, + CREATURE_STATIC_FLAG_4_ONLY_GENERATE_INITIAL_THREAT = 0x10000000, + CREATURE_STATIC_FLAG_4_DO_NOT_TARGET_ON_INTERACTION = 0x20000000, // CREATURE_TYPE_FLAG_DO_NOT_TARGET_ON_INTERACTION, original description: Doesn't change target on right click + CREATURE_STATIC_FLAG_4_DO_NOT_RENDER_OBJECT_NAME = 0x40000000, // CREATURE_TYPE_FLAG_DO_NOT_RENDER_OBJECT_NAME, original description: Hide name in world frame + CREATURE_STATIC_FLAG_4_QUEST_BOSS = 0x80000000 // CREATURE_TYPE_FLAG_QUEST_BOSS + } + + [Flags] + public enum CreatureStaticFlags5 : uint + { + CREATURE_STATIC_FLAG_5_UNTARGETABLE_BY_CLIENT = 0x00000001, // UnitFlags2 0x4000000 UNIT_FLAG2_UNTARGETABLE_BY_CLIENT + CREATURE_STATIC_FLAG_5_FORCE_SELF_MOUNTING = 0x00000002, + CREATURE_STATIC_FLAG_5_UNINTERACTIBLE_IF_HOSTILE = 0x00000004, // UnitFlags2 0x10000000 + CREATURE_STATIC_FLAG_5_DISABLES_XP_AWARD = 0x00000008, + CREATURE_STATIC_FLAG_5_DISABLE_AI_PREDICTION = 0x00000010, + CREATURE_STATIC_FLAG_5_NO_LEAVECOMBAT_STATE_RESTORE = 0x00000020, + CREATURE_STATIC_FLAG_5_BYPASS_INTERACT_INTERRUPTS = 0x00000040, + CREATURE_STATIC_FLAG_5_240_DEGREE_BACK_ARC = 0x00000080, + CREATURE_STATIC_FLAG_5_INTERACT_WHILE_HOSTILE = 0x00000100, // UnitFlags2 0x4000 UNIT_FLAG2_INTERACT_WHILE_HOSTILE + CREATURE_STATIC_FLAG_5_DONT_DISMISS_ON_FLYING_MOUNT = 0x00000200, + CREATURE_STATIC_FLAG_5_PREDICTIVE_POWER_REGEN = 0x00000400, // CREATURE_TYPEFLAGS_2_UNK1 + CREATURE_STATIC_FLAG_5_HIDE_LEVEL_INFO_IN_TOOLTIP = 0x00000800, // CREATURE_TYPEFLAGS_2_UNK2 + CREATURE_STATIC_FLAG_5_HIDE_HEALTH_BAR_UNDER_TOOLTIP = 0x00001000, // CREATURE_TYPEFLAGS_2_UNK3 + CREATURE_STATIC_FLAG_5_SUPPRESS_HIGHLIGHT_WHEN_TARGETED_OR_MOUSED_OVER = 0x00002000, // UnitFlags2 0x80000 + CREATURE_STATIC_FLAG_5_AI_PREFER_PATHABLE_TARGETS = 0x00004000, + CREATURE_STATIC_FLAG_5_FREQUENT_AREA_TRIGGER_CHECKS = 0x00008000, + CREATURE_STATIC_FLAG_5_ASSIGN_KILL_CREDIT_TO_ENCOUNTER_LIST= 0x00010000, + CREATURE_STATIC_FLAG_5_NEVER_EVADE = 0x00020000, + CREATURE_STATIC_FLAG_5_AI_CANT_PATH_ON_STEEP_SLOPES = 0x00040000, + CREATURE_STATIC_FLAG_5_AI_IGNORE_LOS_TO_MELEE_TARGET = 0x00080000, + CREATURE_STATIC_FLAG_5_NO_TEXT_IN_CHAT_BUBBLE = 0x00100000, // "Never display emote or chat text in a chat bubble", CREATURE_TYPEFLAGS_2_UNK4 + CREATURE_STATIC_FLAG_5_CLOSE_IN_ON_UNPATHABLE_TARGET = 0x00200000, // "AI Pets close in on unpathable target" + CREATURE_STATIC_FLAG_5_DONT_GO_BEHIND_ME = 0x00400000, // "Pet/Guardian AI Don't Go Behind Me (use on target)" + CREATURE_STATIC_FLAG_5_NO_DEATH_THUD = 0x00800000, // CREATURE_TYPEFLAGS_2_UNK5 + CREATURE_STATIC_FLAG_5_CLIENT_LOCAL_CREATURE = 0x01000000, + CREATURE_STATIC_FLAG_5_CAN_DROP_LOOT_WHILE_IN_A_CHALLENGE_MODE_INSTANCE = 0x02000000, + CREATURE_STATIC_FLAG_5_HAS_SAFE_LOCATION = 0x04000000, + CREATURE_STATIC_FLAG_5_NO_HEALTH_REGEN = 0x08000000, + CREATURE_STATIC_FLAG_5_NO_POWER_REGEN = 0x10000000, + CREATURE_STATIC_FLAG_5_NO_PET_UNIT_FRAME = 0x20000000, + CREATURE_STATIC_FLAG_5_NO_INTERACT_ON_LEFT_CLICK = 0x40000000, // CREATURE_TYPEFLAGS_2_UNK6 + CREATURE_STATIC_FLAG_5_GIVE_CRITERIA_KILL_CREDIT_WHEN_CHARMED = 0x80000000 + } + + [Flags] + public enum CreatureStaticFlags6 : uint + { + CREATURE_STATIC_FLAG_6_DO_NOT_AUTO_RESUMMON = 0x00000001, // "Do not auto-resummon this companion creature" + CREATURE_STATIC_FLAG_6_REPLACE_VISIBLE_UNIT_IF_AVAILABLE = 0x00000002, // "Smooth Phasing: Replace visible unit if available" + CREATURE_STATIC_FLAG_6_IGNORE_REALM_COALESCING_HIDING_CODE = 0x00000004, // "Ignore the realm coalescing hiding code (always show)" + CREATURE_STATIC_FLAG_6_TAPS_TO_FACTION = 0x00000008, + CREATURE_STATIC_FLAG_6_ONLY_QUESTGIVER_FOR_SUMMONER = 0x00000010, + CREATURE_STATIC_FLAG_6_AI_COMBAT_RETURN_PRECISE = 0x00000020, + CREATURE_STATIC_FLAG_6_HOME_REALM_ONLY_LOOT = 0x00000040, + CREATURE_STATIC_FLAG_6_NO_INTERACT_RESPONSE = 0x00000080, // TFLAG2_UNK7 + CREATURE_STATIC_FLAG_6_NO_INITIAL_POWER = 0x00000100, + CREATURE_STATIC_FLAG_6_DONT_CANCEL_CHANNEL_ON_MASTER_MOUNTING = 0x00000200, + CREATURE_STATIC_FLAG_6_CAN_TOGGLE_BETWEEN_DEATH_AND_PERSONAL_LOOT = 0x00000400, + CREATURE_STATIC_FLAG_6_ALWAYS_STAND_ON_TOP_OF_TARGET = 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? + CREATURE_STATIC_FLAG_6_UNCONSCIOUS_ON_DEATH = 0x00001000, + CREATURE_STATIC_FLAG_6_DONT_REPORT_TO_LOCAL_DEFENSE_CHANNEL_ON_DEATH = 0x00002000, + CREATURE_STATIC_FLAG_6_PREFER_UNENGAGED_MONSTERS = 0x00004000, // "Prefer unengaged monsters when picking a target" + CREATURE_STATIC_FLAG_6_USE_PVP_POWER_AND_RESILIENCE = 0x00008000, // "Use PVP power and resilience when players attack this creature" + CREATURE_STATIC_FLAG_6_DONT_CLEAR_DEBUFFS_ON_LEAVE_COMBAT = 0x00010000, + CREATURE_STATIC_FLAG_6_PERSONAL_LOOT_HAS_FULL_SECURITY = 0x00020000, // "Personal loot has full security (guaranteed push/mail delivery)" + CREATURE_STATIC_FLAG_6_TRIPLE_SPELL_VISUALS = 0x00040000, + CREATURE_STATIC_FLAG_6_USE_GARRISON_OWNER_LEVEL = 0x00080000, + CREATURE_STATIC_FLAG_6_IMMEDIATE_AOI_UPDATE_ON_SPAWN = 0x00100000, + CREATURE_STATIC_FLAG_6_UI_CAN_GET_POSITION = 0x00200000, + CREATURE_STATIC_FLAG_6_SEAMLESS_TRANSFER_PROHIBITED = 0x00400000, + CREATURE_STATIC_FLAG_6_ALWAYS_USE_GROUP_LOOT_METHOD = 0x00800000, + CREATURE_STATIC_FLAG_6_NO_BOSS_KILL_BANNER = 0x01000000, + CREATURE_STATIC_FLAG_6_FORCE_TRIGGERING_PLAYER_LOOT_ONLY = 0x02000000, + CREATURE_STATIC_FLAG_6_SHOW_BOSS_FRAME_WHILE_UNINTERACTABLE= 0x04000000, + CREATURE_STATIC_FLAG_6_SCALES_TO_PLAYER_LEVEL = 0x08000000, + CREATURE_STATIC_FLAG_6_AI_DONT_LEAVE_MELEE_FOR_RANGED_WHEN_TARGET_GETS_ROOTED = 0x10000000, + CREATURE_STATIC_FLAG_6_DONT_USE_COMBAT_REACH_FOR_CHAINING = 0x20000000, + CREATURE_STATIC_FLAG_6_DO_NOT_PLAY_PROCEDURAL_WOUND_ANIM = 0x40000000, + CREATURE_STATIC_FLAG_6_APPLY_PROCEDURAL_WOUND_ANIM_TO_BASE = 0x80000000 // TFLAG2_UNK14 + } + + [Flags] + public enum CreatureStaticFlags7 : uint + { + CREATURE_STATIC_FLAG_7_IMPORTANT_NPC = 0x00000001, + CREATURE_STATIC_FLAG_7_IMPORTANT_QUEST_NPC = 0x00000002, + CREATURE_STATIC_FLAG_7_LARGE_NAMEPLATE = 0x00000004, + CREATURE_STATIC_FLAG_7_TRIVIAL_PET = 0x00000008, + CREATURE_STATIC_FLAG_7_AI_ENEMIES_DONT_BACKUP_WHEN_I_GET_ROOTED = 0x00000010, + CREATURE_STATIC_FLAG_7_NO_AUTOMATIC_COMBAT_ANCHOR = 0x00000020, + CREATURE_STATIC_FLAG_7_ONLY_TARGETABLE_BY_CREATOR = 0x00000040, + CREATURE_STATIC_FLAG_7_TREAT_AS_PLAYER_FOR_ISPLAYERCONTROLLED = 0x00000080, + CREATURE_STATIC_FLAG_7_GENERATE_NO_THREAT_OR_DAMAGE = 0x00000100, + CREATURE_STATIC_FLAG_7_INTERACT_ONLY_ON_QUEST = 0x00000200, + CREATURE_STATIC_FLAG_7_DISABLE_KILL_CREDIT_FOR_OFFLINE_PLAYERS = 0x00000400, + CREATURE_STATIC_FLAG_7_AI_ADDITIONAL_PATHING = 0x00080000, + } + + [Flags] + public enum CreatureStaticFlags8 : uint + { + CREATURE_STATIC_FLAG_8_FORCE_CLOSE_IN_ON_PATH_FAIL_BEHAVIOR = 0x00000002, + CREATURE_STATIC_FLAG_8_USE_2D_CHASING_CALCULATION = 0x00000020, + CREATURE_STATIC_FLAG_8_USE_FAST_CLASSIC_HEARTBEAT = 0x00000040, + } +} diff --git a/WowPacketParser/Enums/UnitFlags.cs b/WowPacketParser/Enums/UnitFlags.cs index 692370c64e..34d90b6813 100644 --- a/WowPacketParser/Enums/UnitFlags.cs +++ b/WowPacketParser/Enums/UnitFlags.cs @@ -44,7 +44,7 @@ public enum UnitFlags : uint Disallowed = (ServerControlled | NotAttackable | RemoveClientControl | PlayerControlled | Rename | Preparation | /* Unk6 | */ NotAttackable | Looting | PetIsAttackingTarget | PVP | - Silenced | NotAttackable2 | Pacified | Stunned | + Silenced | CantSwim | CanSwim | NotAttackable2 | Pacified | Stunned | AffectingCombat | OnTaxi | Disarmed | Confused | Fleeing | Possessed | Skinnable | Mount | PreventKneelingWhenLooting | PreventEmotes | Sheath | Immune), diff --git a/WowPacketParser/Enums/UnitFlags2.cs b/WowPacketParser/Enums/UnitFlags2.cs index aec770d743..efefe84072 100644 --- a/WowPacketParser/Enums/UnitFlags2.cs +++ b/WowPacketParser/Enums/UnitFlags2.cs @@ -42,7 +42,7 @@ public enum UnitFlags2 : uint // 4.x Disallowed = (FeignDeath | IgnoreReputation | ComprehendLang | MirrorImage | ForceMovement | DisarmOffhand | DisablePredStats | AllowChangingTalents | DisarmRanged | - /* RegeneratePower | */ RestrictPartyInteraction | + /* RegeneratePower | */ RestrictPartyInteraction | CannotTurn | PreventSpellClick | /* InteractWhileHostile | */ /* Unk2 | */ /* PlayDeathAnim | */ AllowCheatSpells | SuppressHighlightWhenTargetedOrMousedOver | TreatAsRaidUnitForHelpfulSpells | LargeAOI | GiganticAOI | NoActions | diff --git a/WowPacketParser/SQL/Builders/UnitMisc.cs b/WowPacketParser/SQL/Builders/UnitMisc.cs index cce8658dfc..a20978a8d2 100644 --- a/WowPacketParser/SQL/Builders/UnitMisc.cs +++ b/WowPacketParser/SQL/Builders/UnitMisc.cs @@ -158,6 +158,25 @@ public static string CreatureTemplateScalingDataWDB() return SQLUtil.Compare(Settings.SQLOrderByKey ? Storage.CreatureTemplateDifficultiesWDB.OrderBy(x => x.Item1.Entry).ToArray() : Storage.CreatureTemplateDifficultiesWDB.ToArray(), templatesDb, StoreNameType.Unit); } + public static void UpdateCreatureStaticFlags(ref Unit npc, ref CreatureTemplateDifficulty creatureDifficulty) + { + if ((npc.UnitData.Flags & (uint)UnitFlags.CanSwim) != 0) + creatureDifficulty.StaticFlags1 |= CreatureStaticFlags.CREATURE_STATIC_FLAG_CAN_SWIM; + if ((npc.UnitData.Flags & (uint)UnitFlags.CantSwim) != 0) + creatureDifficulty.StaticFlags3 |= CreatureStaticFlags3.CREATURE_STATIC_FLAG_3_CANNOT_SWIM; + + if ((npc.UnitData.Flags2 & (uint)UnitFlags2.CannotTurn) != 0) + creatureDifficulty.StaticFlags3 |= CreatureStaticFlags3.CREATURE_STATIC_FLAG_3_CANNOT_TURN; + + if ((ClientVersion.Expansion == ClientType.WrathOfTheLichKing && npc.Movement.Flags.HasAnyFlag(MovementFlag.DisableGravity)) || + (ClientVersion.Expansion >= ClientType.Cataclysm && npc.Movement.Flags.HasAnyFlag(Enums.v4.MovementFlag.DisableGravity))) + creatureDifficulty.StaticFlags1 |= CreatureStaticFlags.CREATURE_STATIC_FLAG_FLOATING; // Not 100% reliable + + if ((ClientVersion.Expansion == ClientType.WrathOfTheLichKing && npc.Movement.Flags.HasAnyFlag(MovementFlag.Root)) || + (ClientVersion.Expansion >= ClientType.Cataclysm && npc.Movement.Flags.HasAnyFlag(Enums.v4.MovementFlag.Root))) + creatureDifficulty.StaticFlags1 |= CreatureStaticFlags.CREATURE_STATIC_FLAG_SESSILE; // Not 100% reliable + } + [BuilderMethod(true, Units = true)] public static string CreatureTemplateScalingData(Dictionary units) { @@ -195,6 +214,7 @@ public static string CreatureTemplateScalingData(Dictionary units LevelScalingDeltaMax = scalingdeltalevels[unit.Key.GetEntry()].Item2, ContentTuningID = contentTuningID }; + UpdateCreatureStaticFlags(ref npc, ref creatureDifficulty); Storage.CreatureTemplateDifficulties.Add(creatureDifficulty); } } @@ -207,6 +227,7 @@ public static string CreatureTemplateScalingData(Dictionary units MinLevel = difficultyLevels[(unit.Key.GetEntry(), npc.DifficultyID)].Item1, MaxLevel = difficultyLevels[(unit.Key.GetEntry(), npc.DifficultyID)].Item2, }; + UpdateCreatureStaticFlags(ref npc, ref creatureDifficulty); Storage.CreatureTemplateDifficulties.Add(creatureDifficulty); } } diff --git a/WowPacketParser/Store/Objects/CreatureTemplateDifficulty.cs b/WowPacketParser/Store/Objects/CreatureTemplateDifficulty.cs index bed2ca73c0..576b671158 100644 --- a/WowPacketParser/Store/Objects/CreatureTemplateDifficulty.cs +++ b/WowPacketParser/Store/Objects/CreatureTemplateDifficulty.cs @@ -65,6 +65,30 @@ public sealed record CreatureTemplateDifficulty : IDataModel [DBFieldName("ContentTuningID", TargetedDatabaseFlag.SinceBattleForAzeroth)] public int? ContentTuningID; + [DBFieldName("StaticFlags1", TargetedDatabaseFlag.SinceDragonflight | TargetedDatabaseFlag.WotlkClassic)] + public CreatureStaticFlags? StaticFlags1 = 0; + + [DBFieldName("StaticFlags2", TargetedDatabaseFlag.SinceDragonflight | TargetedDatabaseFlag.WotlkClassic)] + public CreatureStaticFlags2? StaticFlags2 = 0; + + [DBFieldName("StaticFlags3", TargetedDatabaseFlag.SinceDragonflight | TargetedDatabaseFlag.WotlkClassic)] + public CreatureStaticFlags3? StaticFlags3 = 0; + + [DBFieldName("StaticFlags4", TargetedDatabaseFlag.SinceDragonflight | TargetedDatabaseFlag.WotlkClassic)] + public CreatureStaticFlags4? StaticFlags4 = 0; + + [DBFieldName("StaticFlags5", TargetedDatabaseFlag.SinceDragonflight | TargetedDatabaseFlag.WotlkClassic)] + public CreatureStaticFlags5? StaticFlags5 = 0; + + [DBFieldName("StaticFlags6", TargetedDatabaseFlag.SinceDragonflight | TargetedDatabaseFlag.WotlkClassic)] + public CreatureStaticFlags6? StaticFlags6 = 0; + + [DBFieldName("StaticFlags7", TargetedDatabaseFlag.SinceDragonflight | TargetedDatabaseFlag.WotlkClassic)] + public CreatureStaticFlags7? StaticFlags7 = 0; + + [DBFieldName("StaticFlags8", TargetedDatabaseFlag.SinceDragonflight | TargetedDatabaseFlag.WotlkClassic)] + public CreatureStaticFlags8? StaticFlags8 = 0; + [DBFieldName("VerifiedBuild")] public int? VerifiedBuild = ClientVersion.BuildInt; } From 76438d1d75b0433cf244a6745fa34b1cd1357145 Mon Sep 17 00:00:00 2001 From: Meji Date: Fri, 1 Mar 2024 14:44:40 +0100 Subject: [PATCH 2/2] Update enums --- WowPacketParser/Enums/CreatureStaticFlags.cs | 414 +++++++++---------- WowPacketParser/SQL/Builders/UnitMisc.cs | 10 +- 2 files changed, 212 insertions(+), 212 deletions(-) diff --git a/WowPacketParser/Enums/CreatureStaticFlags.cs b/WowPacketParser/Enums/CreatureStaticFlags.cs index 21dd62aff8..19cd23b644 100644 --- a/WowPacketParser/Enums/CreatureStaticFlags.cs +++ b/WowPacketParser/Enums/CreatureStaticFlags.cs @@ -5,247 +5,247 @@ namespace WowPacketParser.Enums [Flags] public enum CreatureStaticFlags : uint { - CREATURE_STATIC_FLAG_MOUNTABLE = 0x00000001, - CREATURE_STATIC_FLAG_NO_XP = 0x00000002, // CREATURE_FLAG_EXTRA_NO_XP - CREATURE_STATIC_FLAG_NO_LOOT = 0x00000004, - CREATURE_STATIC_FLAG_UNKILLABLE = 0x00000008, - CREATURE_STATIC_FLAG_TAMEABLE = 0x00000010, // CREATURE_TYPE_FLAG_TAMEABLE - CREATURE_STATIC_FLAG_IMMUNE_TO_PC = 0x00000020, // UNIT_FLAG_IMMUNE_TO_PC - CREATURE_STATIC_FLAG_IMMUNE_TO_NPC = 0x00000040, // UNIT_FLAG_IMMUNE_TO_NPC - CREATURE_STATIC_FLAG_CAN_WIELD_LOOT = 0x00000080, - CREATURE_STATIC_FLAG_SESSILE = 0x00000100, // Rooted movementflag, creature is permanently rooted in place - CREATURE_STATIC_FLAG_UNINTERACTIBLE = 0x00000200, // UNIT_FLAG_UNINTERACTIBLE - CREATURE_STATIC_FLAG_NO_AUTOMATIC_REGEN = 0x00000400, // Creatures with that flag uses no UNIT_FLAG2_REGENERATE_POWER - CREATURE_STATIC_FLAG_DESPAWN_INSTANTLY = 0x00000800, // Creature instantly disappear when killed - CREATURE_STATIC_FLAG_CORPSE_RAID = 0x00001000, - CREATURE_STATIC_FLAG_CREATOR_LOOT = 0x00002000, // Lootable only by creator(engineering dummies) - CREATURE_STATIC_FLAG_NO_DEFENSE = 0x00004000, - CREATURE_STATIC_FLAG_NO_SPELL_DEFENSE = 0x00008000, - CREATURE_STATIC_FLAG_BOSS_MOB = 0x00010000, // CREATURE_TYPE_FLAG_BOSS_MOB, original description: Raid Boss Mob - CREATURE_STATIC_FLAG_COMBAT_PING = 0x00020000, - CREATURE_STATIC_FLAG_AQUATIC = 0x00040000, // aka Water Only, creature_template_movement.Ground = 0 - CREATURE_STATIC_FLAG_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 - CREATURE_STATIC_FLAG_NO_MELEE_FLEE = 0x00100000, // "No Melee (Flee)" Prevents melee (moves as-if feared, does not make creature passive) - CREATURE_STATIC_FLAG_VISIBLE_TO_GHOSTS = 0x00200000, // CREATURE_TYPE_FLAG_VISIBLE_TO_GHOSTS - CREATURE_STATIC_FLAG_PVP_ENABLING = 0x00400000, // Old UNIT_FLAG_PVP_ENABLING, now UNIT_BYTES_2_OFFSET_PVP_FLAG from UNIT_FIELD_BYTES_2 - CREATURE_STATIC_FLAG_DO_NOT_PLAY_WOUND_ANIM = 0x00800000, // CREATURE_TYPE_FLAG_DO_NOT_PLAY_WOUND_ANIM - CREATURE_STATIC_FLAG_NO_FACTION_TOOLTIP = 0x01000000, // CREATURE_TYPE_FLAG_NO_FACTION_TOOLTIP - CREATURE_STATIC_FLAG_IGNORE_COMBAT = 0x02000000, // Actually only changes react state to passive - CREATURE_STATIC_FLAG_ONLY_ATTACK_PVP_ENABLING = 0x04000000, // "Only attack targets that are PvP enabling" - CREATURE_STATIC_FLAG_CALLS_GUARDS = 0x08000000, // Creature will summon a guard if player is within its aggro range (even if creature doesn't attack per se) - CREATURE_STATIC_FLAG_CAN_SWIM = 0x10000000, // UnitFlags 0x8000 UNIT_FLAG_CAN_SWIM - CREATURE_STATIC_FLAG_FLOATING = 0x20000000, // sets DisableGravity movementflag on spawn/reset - CREATURE_STATIC_FLAG_MORE_AUDIBLE = 0x40000000, // CREATURE_TYPE_FLAG_MORE_AUDIBLE - CREATURE_STATIC_FLAG_LARGE_AOI = 0x80000000 // UnitFlags2 0x200000 + Mountable = 0x00000001, + NoXp = 0x00000002, // CREATURE_FLAG_EXTRA_NO_XP + NoLoot = 0x00000004, + Unkillable = 0x00000008, + Tameable = 0x00000010, // CREATURE_TYPE_FLAG_TAMEABLE + ImmuneToPc = 0x00000020, // UNIT_FLAG_IMMUNE_TO_PC + ImmuneToNpc = 0x00000040, // UNIT_FLAG_IMMUNE_TO_NPC + CanWieldLoot = 0x00000080, + Sessile = 0x00000100, // Rooted movementflag, creature is permanently rooted in place + Uninteractible = 0x00000200, // UNIT_FLAG_UNINTERACTIBLE + NoAutomaticRegen = 0x00000400, // Creatures with that flag uses no UNIT_FLAG2_REGENERATE_POWER + DespawnInstantly = 0x00000800, // Creature instantly disappear when killed + CorpseRaid = 0x00001000, + CreatorLoot = 0x00002000, // Lootable only by creator(engineering dummies) + NoDefense = 0x00004000, + NoSpellDefense = 0x00008000, + BossMob = 0x00010000, // CREATURE_TYPE_FLAG_BOSS_MOB, original description: Raid Boss Mob + CombatPing = 0x00020000, + Aquatic = 0x00040000, // aka Water Only, creature_template_movement.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, // CREATURE_TYPE_FLAG_VISIBLE_TO_GHOSTS + PvpEnabling = 0x00400000, // Old UNIT_FLAG_PVP_ENABLING, now UNIT_BYTES_2_OFFSET_PVP_FLAG from UNIT_FIELD_BYTES_2 + DoNotPlayWoundAnim = 0x00800000, // CREATURE_TYPE_FLAG_DO_NOT_PLAY_WOUND_ANIM + NoFactionTooltip = 0x01000000, // CREATURE_TYPE_FLAG_NO_FACTION_TOOLTIP + 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 UNIT_FLAG_CAN_SWIM + Floating = 0x20000000, // sets DisableGravity movementflag on spawn/reset + MoreAudible = 0x40000000, // CREATURE_TYPE_FLAG_MORE_AUDIBLE + LargeAoi = 0x80000000 // UnitFlags2 0x200000 } [Flags] public enum CreatureStaticFlags2 : uint { - CREATURE_STATIC_FLAG_2_NO_PET_SCALING = 0x00000001, - CREATURE_STATIC_FLAG_2_FORCE_PARTY_MEMBERS_INTO_COMBAT = 0x00000002, // Original description: Force Raid Combat - CREATURE_STATIC_FLAG_2_LOCK_TAPPERS_TO_RAID_ON_DEATH = 0x00000004, // "Lock Tappers To Raid On Death", toggleable by 'Set "RAID_LOCK_ON_DEATH" flag for unit(s)' action, CREATURE_FLAG_EXTRA_INSTANCE_BIND - CREATURE_STATIC_FLAG_2_SPELL_ATTACKABLE = 0x00000008, // CREATURE_TYPE_FLAG_SPELL_ATTACKABLE, original description(not valid anymore?): No Harmful Vertex Coloring - CREATURE_STATIC_FLAG_2_NO_CRUSHING_BLOWS = 0x00000010, // CREATURE_FLAG_EXTRA_NO_CRUSHING_BLOWS - CREATURE_STATIC_FLAG_2_NO_OWNER_THREAT = 0x00000020, - CREATURE_STATIC_FLAG_2_NO_WOUNDED_SLOWDOWN = 0x00000040, - CREATURE_STATIC_FLAG_2_USE_CREATOR_BONUSES = 0x00000080, - CREATURE_STATIC_FLAG_2_IGNORE_FEIGN_DEATH = 0x00000100, // CREATURE_FLAG_EXTRA_IGNORE_FEIGN_DEATH - CREATURE_STATIC_FLAG_2_IGNORE_SANCTUARY = 0x00000200, - CREATURE_STATIC_FLAG_2_ACTION_TRIGGERS_WHILE_CHARMED = 0x00000400, - CREATURE_STATIC_FLAG_2_INTERACT_WHILE_DEAD = 0x00000800, // CREATURE_TYPE_FLAG_INTERACT_WHILE_DEAD - CREATURE_STATIC_FLAG_2_NO_INTERRUPT_SCHOOL_COOLDOWN = 0x00001000, - CREATURE_STATIC_FLAG_2_RETURN_SOUL_SHARD_TO_MASTER_OF_PET = 0x00002000, - CREATURE_STATIC_FLAG_2_SKIN_WITH_HERBALISM = 0x00004000, // CREATURE_TYPE_FLAG_SKIN_WITH_HERBALISM - CREATURE_STATIC_FLAG_2_SKIN_WITH_MINING = 0x00008000, // CREATURE_TYPE_FLAG_SKIN_WITH_MINING - CREATURE_STATIC_FLAG_2_ALERT_CONTENT_TEAM_ON_DEATH = 0x00010000, - CREATURE_STATIC_FLAG_2_ALERT_CONTENT_TEAM_AT_90_PCT_HP = 0x00020000, - CREATURE_STATIC_FLAG_2_ALLOW_MOUNTED_COMBAT = 0x00040000, // CREATURE_TYPE_FLAG_ALLOW_MOUNTED_COMBAT - CREATURE_STATIC_FLAG_2_PVP_ENABLING_OOC = 0x00080000, - CREATURE_STATIC_FLAG_2_NO_DEATH_MESSAGE = 0x00100000, // CREATURE_TYPE_FLAG_NO_DEATH_MESSAGE - CREATURE_STATIC_FLAG_2_IGNORE_PATHING_FAILURE = 0x00200000, - CREATURE_STATIC_FLAG_2_FULL_SPELL_LIST = 0x00400000, - CREATURE_STATIC_FLAG_2_DOES_NOT_REDUCE_REPUTATION_FOR_RAIDS = 0x00800000, - CREATURE_STATIC_FLAG_2_IGNORE_MISDIRECTION = 0x01000000, - CREATURE_STATIC_FLAG_2_HIDE_BODY = 0x02000000, // UNIT_FLAG2_HIDE_BODY - CREATURE_STATIC_FLAG_2_SPAWN_DEFENSIVE = 0x04000000, - CREATURE_STATIC_FLAG_2_SERVER_ONLY = 0x08000000, - CREATURE_STATIC_FLAG_2_CAN_SAFE_FALL = 0x10000000, // Original description: No Collision - CREATURE_STATIC_FLAG_2_CAN_ASSIST = 0x20000000, // CREATURE_TYPE_FLAG_CAN_ASSIST, original description: Player Can Heal/Buff - CREATURE_STATIC_FLAG_2_NO_SKILL_GAINS = 0x40000000, // CREATURE_FLAG_EXTRA_NO_SKILL_GAINS - CREATURE_STATIC_FLAG_2_NO_PET_BAR = 0x80000000 // CREATURE_TYPE_FLAG_NO_PET_BAR + NoPetScaling = 0x00000001, + ForcePartyMembersIntoCombat = 0x00000002, // Original description: Force Raid Combat + LockTappersToRaidOnDeath = 0x00000004, // "Lock Tappers To Raid On Death", toggleable by 'Set "RAID_LOCK_ON_DEATH" flag for unit(s)' action, CREATURE_FLAG_EXTRA_INSTANCE_BIND + SpellAttackable = 0x00000008, // CREATURE_TYPE_FLAG_SPELL_ATTACKABLE, original description(not valid anymore?): No Harmful Vertex Coloring + NoCrushingBlows = 0x00000010, // CREATURE_FLAG_EXTRA_NO_CRUSHING_BLOWS + NoOwnerThreat = 0x00000020, + NoWoundedSlowdown = 0x00000040, + UseCreatorBonuses = 0x00000080, + IgnoreFeignDeath = 0x00000100, // CREATURE_FLAG_EXTRA_IGNORE_FEIGN_DEATH + IgnoreSanctuary = 0x00000200, + ActionTriggersWhileCharmed = 0x00000400, + InteractWhileDead = 0x00000800, // CREATURE_TYPE_FLAG_INTERACT_WHILE_DEAD + NoInterruptSchoolCooldown = 0x00001000, + ReturnSoulShardToMasterOfPet = 0x00002000, + SkinWithHerbalism = 0x00004000, // CREATURE_TYPE_FLAG_SKIN_WITH_HERBALISM + SkinWithMining = 0x00008000, // CREATURE_TYPE_FLAG_SKIN_WITH_MINING + AlertContentTeamOnDeath = 0x00010000, + AlertContentTeamAt90PctHp = 0x00020000, + AllowMountedCombat = 0x00040000, // CREATURE_TYPE_FLAG_ALLOW_MOUNTED_COMBAT + PvpEnablingOoc = 0x00080000, + NoDeathMessage = 0x00100000, // CREATURE_TYPE_FLAG_NO_DEATH_MESSAGE + IgnorePathingFailure = 0x00200000, + FullSpellList = 0x00400000, + DoesNotReduceReputationForRaids = 0x00800000, + IgnoreMisdirection = 0x01000000, + HideBody = 0x02000000, // UNIT_FLAG2_HIDE_BODY + SpawnDefensive = 0x04000000, + ServerOnly = 0x08000000, + CanSafeFall = 0x10000000, // Original description: No Collision + CanAssist = 0x20000000, // CREATURE_TYPE_FLAG_CAN_ASSIST, original description: Player Can Heal/Buff + NoSkillGains = 0x40000000, // CREATURE_FLAG_EXTRA_NO_SKILL_GAINS + NoPetBar = 0x80000000 // CREATURE_TYPE_FLAG_NO_PET_BAR } [Flags] public enum CreatureStaticFlags3 : uint { - CREATURE_STATIC_FLAG_3_NO_DAMAGE_HISTORY = 0x00000001, - CREATURE_STATIC_FLAG_3_DONT_PVP_ENABLE_OWNER = 0x00000002, - CREATURE_STATIC_FLAG_3_DO_NOT_FADE_IN = 0x00000004, // UNIT_FLAG2_DO_NOT_FADE_IN - CREATURE_STATIC_FLAG_3_MASK_UID = 0x00000008, // CREATURE_TYPE_FLAG_MASK_UID, original description: Non-Unique In Combat Log - CREATURE_STATIC_FLAG_3_SKIN_WITH_ENGINEERING = 0x00000010, // CREATURE_TYPE_FLAG_SKIN_WITH_ENGINEERING - CREATURE_STATIC_FLAG_3_NO_AGGRO_ON_LEASH = 0x00000020, - CREATURE_STATIC_FLAG_3_NO_FRIENDLY_AREA_AURAS = 0x00000040, - CREATURE_STATIC_FLAG_3_EXTENDED_CORPSE_DURATION = 0x00000080, - CREATURE_STATIC_FLAG_3_CANNOT_SWIM = 0x00000100, // UNIT_FLAG_CANNOT_SWIM - CREATURE_STATIC_FLAG_3_TAMEABLE_EXOTIC = 0x00000200, // CREATURE_TYPE_FLAG_TAMEABLE_EXOTIC - CREATURE_STATIC_FLAG_3_GIGANTIC_AOI = 0x00000400, // Since MoP, creatures with that flag have UnitFlags2 0x400000 - CREATURE_STATIC_FLAG_3_INFINITE_AOI = 0x00000800, // Since MoP, creatures with that flag have UnitFlags2 0x40000000 - CREATURE_STATIC_FLAG_3_CANNOT_PENETRATE_WATER = 0x00001000, // Waterwalking - CREATURE_STATIC_FLAG_3_NO_NAME_PLATE = 0x00002000, // CREATURE_TYPE_FLAG_NO_NAME_PLATE - CREATURE_STATIC_FLAG_3_CHECKS_LIQUIDS = 0x00004000, - CREATURE_STATIC_FLAG_3_NO_THREAT_FEEDBACK = 0x00008000, - CREATURE_STATIC_FLAG_3_USE_MODEL_COLLISION_SIZE = 0x00010000, // CREATURE_TYPE_FLAG_USE_MODEL_COLLISION_SIZE - CREATURE_STATIC_FLAG_3_ATTACKER_IGNORES_FACING = 0x00020000, // In 3.3.5 used only by Rocket Propelled Warhead - CREATURE_STATIC_FLAG_3_ALLOW_INTERACTION_WHILE_IN_COMBAT = 0x00040000, // CREATURE_TYPE_FLAG_ALLOW_INTERACTION_WHILE_IN_COMBAT - CREATURE_STATIC_FLAG_3_SPELL_CLICK_FOR_PARTY_ONLY = 0x00080000, - CREATURE_STATIC_FLAG_3_FACTION_LEADER = 0x00100000, - CREATURE_STATIC_FLAG_3_IMMUNE_TO_PLAYER_BUFFS = 0x00200000, - CREATURE_STATIC_FLAG_3_COLLIDE_WITH_MISSILES = 0x00400000, // CREATURE_TYPE_FLAG_COLLIDE_WITH_MISSILES - CREATURE_STATIC_FLAG_3_CAN_BE_MULTITAPPED = 0x00800000, // Original description: Do Not Tap (Credit to threat list) - CREATURE_STATIC_FLAG_3_DO_NOT_PLAY_MOUNTED_ANIMATIONS = 0x01000000, // CREATURE_TYPE_FLAG_DO_NOT_PLAY_MOUNTED_ANIMATIONS, original description: Disable Dodge, Parry and Block Animations - CREATURE_STATIC_FLAG_3_CANNOT_TURN = 0x02000000, // UNIT_FLAG2_CANNOT_TURN - CREATURE_STATIC_FLAG_3_ENEMY_CHECK_IGNORES_LOS = 0x04000000, - CREATURE_STATIC_FLAG_3_FOREVER_CORPSE_DURATION = 0x08000000, // 7 days - CREATURE_STATIC_FLAG_3_PETS_ATTACK_WITH_3D_PATHING = 0x10000000, // "Pets attack with 3d pathing (Kologarn)" - CREATURE_STATIC_FLAG_3_LINK_ALL = 0x20000000, // CREATURE_TYPE_FLAG_LINK_ALL - CREATURE_STATIC_FLAG_3_AI_CAN_AUTO_TAKEOFF_IN_COMBAT = 0x40000000, - CREATURE_STATIC_FLAG_3_AI_CAN_AUTO_LAND_IN_COMBAT = 0x80000000 + NoDamageHistory = 0x00000001, + DontPvpEnableOwner = 0x00000002, + DoNotFadeIn = 0x00000004, // UNIT_FLAG2_DO_NOT_FADE_IN + MaskUid = 0x00000008, // CREATURE_TYPE_FLAG_MASK_UID, original description: Non-Unique In Combat Log + SkinWithEngineering = 0x00000010, // CREATURE_TYPE_FLAG_SKIN_WITH_ENGINEERING + NoAggroOnLeash = 0x00000020, + NoFriendlyAreaAuras = 0x00000040, + ExtendedCorpseDuration = 0x00000080, + CannotSwim = 0x00000100, // UNIT_FLAG_CANNOT_SWIM + TameableExotic = 0x00000200, // CREATURE_TYPE_FLAG_TAMEABLE_EXOTIC + 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, // CREATURE_TYPE_FLAG_NO_NAME_PLATE + ChecksLiquids = 0x00004000, + NoThreatFeedback = 0x00008000, + UseModelCollisionSize = 0x00010000, // CREATURE_TYPE_FLAG_USE_MODEL_COLLISION_SIZE + AttackerIgnoresFacing = 0x00020000, // In 3.3.5 used only by Rocket Propelled Warhead + AllowInteractionWhileInCombat = 0x00040000, // CREATURE_TYPE_FLAG_ALLOW_INTERACTION_WHILE_IN_COMBAT + SpellClickForPartyOnly = 0x00080000, + FactionLeader = 0x00100000, + ImmuneToPlayerBuffs = 0x00200000, + CollideWithMissiles = 0x00400000, // CREATURE_TYPE_FLAG_COLLIDE_WITH_MISSILES + CanBeMultitapped = 0x00800000, // Original description: Do Not Tap (Credit to threat list) + DoNotPlayMountedAnimations = 0x01000000, // CREATURE_TYPE_FLAG_DO_NOT_PLAY_MOUNTED_ANIMATIONS, original description: Disable Dodge, Parry and Block Animations + CannotTurn = 0x02000000, // UNIT_FLAG2_CANNOT_TURN + EnemyCheckIgnoresLos = 0x04000000, + ForeverCorpseDuration = 0x08000000, // 7 days + PetsAttackWith3DPathing = 0x10000000, // "Pets attack with 3d pathing (Kologarn)" + LinkAll = 0x20000000, // CREATURE_TYPE_FLAG_LINK_ALL + AiCanAutoTakeoffInCombat = 0x40000000, + AiCanAutoLandInCombat = 0x80000000 } [Flags] public enum CreatureStaticFlags4 : uint { - CREATURE_STATIC_FLAG_4_NO_BIRTH_ANIM = 0x00000001, // SMSG_UPDATE_OBJECT's "NoBirthAnim" - CREATURE_STATIC_FLAG_4_TREAT_AS_PLAYER_FOR_DIMINISHING_RETURNS = 0x00000002, // Primarily used by ToC champions - CREATURE_STATIC_FLAG_4_TREAT_AS_PLAYER_FOR_PVP_DEBUFF_DURATION = 0x00000004, // Primarily used by ToC champions - CREATURE_STATIC_FLAG_4_INTERACT_ONLY_WITH_CREATOR = 0x00000008, // CREATURE_TYPE_FLAG_INTERACT_ONLY_WITH_CREATOR, original description: Only Display Gossip for Summoner - CREATURE_STATIC_FLAG_4_DO_NOT_PLAY_UNIT_EVENT_SOUNDS = 0x00000010, // CREATURE_TYPE_FLAG_DO_NOT_PLAY_UNIT_EVENT_SOUNDS, original description: No Death Scream - CREATURE_STATIC_FLAG_4_HAS_NO_SHADOW_BLOB = 0x00000020, // CREATURE_TYPE_FLAG_HAS_NO_SHADOW_BLOB, original description(wrongly linked type flag or behavior was changed?): Can be Healed by Enemies - CREATURE_STATIC_FLAG_4_DEALS_TRIPLE_DAMAGE_TO_PC_CONTROLLED_PETS = 0x00000040, - CREATURE_STATIC_FLAG_4_NO_NPC_DAMAGE_BELOW_85PTC = 0x00000080, - CREATURE_STATIC_FLAG_4_OBEYS_TAUNT_DIMINISHING_RETURNS = 0x00000100, // CREATURE_FLAG_EXTRA_OBEYS_TAUNT_DIMINISHING_RETURNS - CREATURE_STATIC_FLAG_4_NO_MELEE_APPROACH = 0x00000200, // "No Melee (Approach)" Prevents melee (chases into melee range, does not make creature passive) - CREATURE_STATIC_FLAG_4_UPDATE_CREATURE_RECORD_WHEN_INSTANCE_CHANGES_DIFFICULTY = 0x00000400, // Used only by Snobold Vassal - CREATURE_STATIC_FLAG_4_CANNOT_DAZE = 0x00000800, // "Cannot Daze (Combat Stun)" - CREATURE_STATIC_FLAG_4_FLAT_HONOR_AWARD = 0x00001000, - CREATURE_STATIC_FLAG_4_IGNORE_LOS_WHEN_CASTING_ON_ME = 0x00002000, // "Other objects can ignore line of sight requirements when casting spells on me", used only by Ice Tomb in 3.3.5 - CREATURE_STATIC_FLAG_4_GIVE_QUEST_KILL_CREDIT_WHILE_OFFLINE = 0x00004000, - CREATURE_STATIC_FLAG_4_TREAT_AS_RAID_UNIT_FOR_HELPFUL_SPELLS = 0x00008000, // CREATURE_TYPE_FLAG_TREAT_AS_RAID_UNIT, "Treat as Raid Unit For Helpful Spells (Instances ONLY)", used by Valithria Dreamwalker - CREATURE_STATIC_FLAG_4_DONT_REPOSITION_IF_MELEE_TARGET_IS_TOO_CLOSE = 0x00010000, // "Don't reposition because melee target is too close" - CREATURE_STATIC_FLAG_4_PET_OR_GUARDIAN_AI_DONT_GO_BEHIND_TARGET = 0x00020000, - CREATURE_STATIC_FLAG_4_5_MINUTE_LOOT_ROLL_TIMER = 0x00040000, // Used by Lich King - CREATURE_STATIC_FLAG_4_FORCE_GOSSIP = 0x00080000, // CREATURE_TYPE_FLAG_FORCE_GOSSIP - CREATURE_STATIC_FLAG_4_DONT_REPOSITION_WITH_FRIENDS_IN_COMBAT = 0x00100000, - CREATURE_STATIC_FLAG_4_DO_NOT_SHEATHE = 0x00200000, // CREATURE_TYPE_FLAG_DO_NOT_SHEATHE, original description: Manual Sheathing control - CREATURE_STATIC_FLAG_4_IGNORE_SPELL_MIN_RANGE_RESTRICTIONS = 0x00400000, // UnitFlags2 0x8000000, original description: Attacker Ignores Minimum Ranges - CREATURE_STATIC_FLAG_4_SUPPRESS_INSTANCE_WIDE_RELEASE_IN_COMBAT = 0x00800000, - CREATURE_STATIC_FLAG_4_PREVENT_SWIM = 0x01000000, // UnitFlags2 0x1000000, original description: AI will only swim if target swims - CREATURE_STATIC_FLAG_4_HIDE_IN_COMBAT_LOG = 0x02000000, // UnitFlags2 0x2000000, original description: Don't generate combat log when engaged with NPC's - CREATURE_STATIC_FLAG_4_ALLOW_NPC_COMBAT_WHILE_UNINTERACTIBLE = 0x04000000, - CREATURE_STATIC_FLAG_4_PREFER_NPCS_WHEN_SEARCHING_FOR_ENEMIES = 0x08000000, - CREATURE_STATIC_FLAG_4_ONLY_GENERATE_INITIAL_THREAT = 0x10000000, - CREATURE_STATIC_FLAG_4_DO_NOT_TARGET_ON_INTERACTION = 0x20000000, // CREATURE_TYPE_FLAG_DO_NOT_TARGET_ON_INTERACTION, original description: Doesn't change target on right click - CREATURE_STATIC_FLAG_4_DO_NOT_RENDER_OBJECT_NAME = 0x40000000, // CREATURE_TYPE_FLAG_DO_NOT_RENDER_OBJECT_NAME, original description: Hide name in world frame - CREATURE_STATIC_FLAG_4_QUEST_BOSS = 0x80000000 // CREATURE_TYPE_FLAG_QUEST_BOSS + NoBirthAnim = 0x00000001, // SMSG_UPDATE_OBJECT's "NoBirthAnim" + TreatAsPlayerForDiminishingReturns = 0x00000002, // Primarily used by ToC champions + TreatAsPlayerForPvpDebuffDuration = 0x00000004, // Primarily used by ToC champions + InteractOnlyWithCreator = 0x00000008, // CREATURE_TYPE_FLAG_INTERACT_ONLY_WITH_CREATOR, original description: Only Display Gossip for Summoner + DoNotPlayUnitEventSounds = 0x00000010, // CREATURE_TYPE_FLAG_DO_NOT_PLAY_UNIT_EVENT_SOUNDS, original description: No Death Scream + HasNoShadowBlob = 0x00000020, // CREATURE_TYPE_FLAG_HAS_NO_SHADOW_BLOB, original description(wrongly linked type flag or behavior was changed?): Can be Healed by Enemies + DealsTripleDamageToPcControlledPets = 0x00000040, + NoNpcDamageBelow85Ptc = 0x00000080, + ObeysTauntDiminishingReturns = 0x00000100, // CREATURE_FLAG_EXTRA_OBEYS_TAUNT_DIMINISHING_RETURNS + 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, // CREATURE_TYPE_FLAG_TREAT_AS_RAID_UNIT, "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, + _5MinuteLootRollTimer = 0x00040000, // Used by Lich King + ForceGossip = 0x00080000, // CREATURE_TYPE_FLAG_FORCE_GOSSIP + DontRepositionWithFriendsInCombat = 0x00100000, + DoNotSheathe = 0x00200000, // CREATURE_TYPE_FLAG_DO_NOT_SHEATHE, 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, // CREATURE_TYPE_FLAG_DO_NOT_TARGET_ON_INTERACTION, original description: Doesn't change target on right click + DoNotRenderObjectName = 0x40000000, // CREATURE_TYPE_FLAG_DO_NOT_RENDER_OBJECT_NAME, original description: Hide name in world frame + QuestBoss = 0x80000000 // CREATURE_TYPE_FLAG_QUEST_BOSS } [Flags] public enum CreatureStaticFlags5 : uint { - CREATURE_STATIC_FLAG_5_UNTARGETABLE_BY_CLIENT = 0x00000001, // UnitFlags2 0x4000000 UNIT_FLAG2_UNTARGETABLE_BY_CLIENT - CREATURE_STATIC_FLAG_5_FORCE_SELF_MOUNTING = 0x00000002, - CREATURE_STATIC_FLAG_5_UNINTERACTIBLE_IF_HOSTILE = 0x00000004, // UnitFlags2 0x10000000 - CREATURE_STATIC_FLAG_5_DISABLES_XP_AWARD = 0x00000008, - CREATURE_STATIC_FLAG_5_DISABLE_AI_PREDICTION = 0x00000010, - CREATURE_STATIC_FLAG_5_NO_LEAVECOMBAT_STATE_RESTORE = 0x00000020, - CREATURE_STATIC_FLAG_5_BYPASS_INTERACT_INTERRUPTS = 0x00000040, - CREATURE_STATIC_FLAG_5_240_DEGREE_BACK_ARC = 0x00000080, - CREATURE_STATIC_FLAG_5_INTERACT_WHILE_HOSTILE = 0x00000100, // UnitFlags2 0x4000 UNIT_FLAG2_INTERACT_WHILE_HOSTILE - CREATURE_STATIC_FLAG_5_DONT_DISMISS_ON_FLYING_MOUNT = 0x00000200, - CREATURE_STATIC_FLAG_5_PREDICTIVE_POWER_REGEN = 0x00000400, // CREATURE_TYPEFLAGS_2_UNK1 - CREATURE_STATIC_FLAG_5_HIDE_LEVEL_INFO_IN_TOOLTIP = 0x00000800, // CREATURE_TYPEFLAGS_2_UNK2 - CREATURE_STATIC_FLAG_5_HIDE_HEALTH_BAR_UNDER_TOOLTIP = 0x00001000, // CREATURE_TYPEFLAGS_2_UNK3 - CREATURE_STATIC_FLAG_5_SUPPRESS_HIGHLIGHT_WHEN_TARGETED_OR_MOUSED_OVER = 0x00002000, // UnitFlags2 0x80000 - CREATURE_STATIC_FLAG_5_AI_PREFER_PATHABLE_TARGETS = 0x00004000, - CREATURE_STATIC_FLAG_5_FREQUENT_AREA_TRIGGER_CHECKS = 0x00008000, - CREATURE_STATIC_FLAG_5_ASSIGN_KILL_CREDIT_TO_ENCOUNTER_LIST= 0x00010000, - CREATURE_STATIC_FLAG_5_NEVER_EVADE = 0x00020000, - CREATURE_STATIC_FLAG_5_AI_CANT_PATH_ON_STEEP_SLOPES = 0x00040000, - CREATURE_STATIC_FLAG_5_AI_IGNORE_LOS_TO_MELEE_TARGET = 0x00080000, - CREATURE_STATIC_FLAG_5_NO_TEXT_IN_CHAT_BUBBLE = 0x00100000, // "Never display emote or chat text in a chat bubble", CREATURE_TYPEFLAGS_2_UNK4 - CREATURE_STATIC_FLAG_5_CLOSE_IN_ON_UNPATHABLE_TARGET = 0x00200000, // "AI Pets close in on unpathable target" - CREATURE_STATIC_FLAG_5_DONT_GO_BEHIND_ME = 0x00400000, // "Pet/Guardian AI Don't Go Behind Me (use on target)" - CREATURE_STATIC_FLAG_5_NO_DEATH_THUD = 0x00800000, // CREATURE_TYPEFLAGS_2_UNK5 - CREATURE_STATIC_FLAG_5_CLIENT_LOCAL_CREATURE = 0x01000000, - CREATURE_STATIC_FLAG_5_CAN_DROP_LOOT_WHILE_IN_A_CHALLENGE_MODE_INSTANCE = 0x02000000, - CREATURE_STATIC_FLAG_5_HAS_SAFE_LOCATION = 0x04000000, - CREATURE_STATIC_FLAG_5_NO_HEALTH_REGEN = 0x08000000, - CREATURE_STATIC_FLAG_5_NO_POWER_REGEN = 0x10000000, - CREATURE_STATIC_FLAG_5_NO_PET_UNIT_FRAME = 0x20000000, - CREATURE_STATIC_FLAG_5_NO_INTERACT_ON_LEFT_CLICK = 0x40000000, // CREATURE_TYPEFLAGS_2_UNK6 - CREATURE_STATIC_FLAG_5_GIVE_CRITERIA_KILL_CREDIT_WHEN_CHARMED = 0x80000000 + UntargetableByClient = 0x00000001, // UnitFlags2 0x4000000 UNIT_FLAG2_UNTARGETABLE_BY_CLIENT + ForceSelfMounting = 0x00000002, + UninteractibleIfHostile = 0x00000004, // UnitFlags2 0x10000000 + DisablesXpAward = 0x00000008, + DisableAiPrediction = 0x00000010, + NoLeavecombatStateRestore = 0x00000020, + BypassInteractInterrupts = 0x00000040, + _240DegreeBackArc = 0x00000080, + InteractWhileHostile = 0x00000100, // UnitFlags2 0x4000 UNIT_FLAG2_INTERACT_WHILE_HOSTILE + DontDismissOnFlyingMount = 0x00000200, + PredictivePowerRegen = 0x00000400, // CREATURE_TYPEFLAGS_2_UNK1 + HideLevelInfoInTooltip = 0x00000800, // CREATURE_TYPEFLAGS_2_UNK2 + HideHealthBarUnderTooltip = 0x00001000, // CREATURE_TYPEFLAGS_2_UNK3 + 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", CREATURE_TYPEFLAGS_2_UNK4 + CloseInOnUnpathableTarget = 0x00200000, // "AI Pets close in on unpathable target" + DontGoBehindMe = 0x00400000, // "Pet/Guardian AI Don't Go Behind Me (use on target)" + NoDeathThud = 0x00800000, // CREATURE_TYPEFLAGS_2_UNK5 + ClientLocalCreature = 0x01000000, + CanDropLootWhileInAChallengeModeInstance = 0x02000000, + HasSafeLocation = 0x04000000, + NoHealthRegen = 0x08000000, + NoPowerRegen = 0x10000000, + NoPetUnitFrame = 0x20000000, + NoInteractOnLeftClick = 0x40000000, // CREATURE_TYPEFLAGS_2_UNK6 + GiveCriteriaKillCreditWhenCharmed = 0x80000000 } [Flags] public enum CreatureStaticFlags6 : uint { - CREATURE_STATIC_FLAG_6_DO_NOT_AUTO_RESUMMON = 0x00000001, // "Do not auto-resummon this companion creature" - CREATURE_STATIC_FLAG_6_REPLACE_VISIBLE_UNIT_IF_AVAILABLE = 0x00000002, // "Smooth Phasing: Replace visible unit if available" - CREATURE_STATIC_FLAG_6_IGNORE_REALM_COALESCING_HIDING_CODE = 0x00000004, // "Ignore the realm coalescing hiding code (always show)" - CREATURE_STATIC_FLAG_6_TAPS_TO_FACTION = 0x00000008, - CREATURE_STATIC_FLAG_6_ONLY_QUESTGIVER_FOR_SUMMONER = 0x00000010, - CREATURE_STATIC_FLAG_6_AI_COMBAT_RETURN_PRECISE = 0x00000020, - CREATURE_STATIC_FLAG_6_HOME_REALM_ONLY_LOOT = 0x00000040, - CREATURE_STATIC_FLAG_6_NO_INTERACT_RESPONSE = 0x00000080, // TFLAG2_UNK7 - CREATURE_STATIC_FLAG_6_NO_INITIAL_POWER = 0x00000100, - CREATURE_STATIC_FLAG_6_DONT_CANCEL_CHANNEL_ON_MASTER_MOUNTING = 0x00000200, - CREATURE_STATIC_FLAG_6_CAN_TOGGLE_BETWEEN_DEATH_AND_PERSONAL_LOOT = 0x00000400, - CREATURE_STATIC_FLAG_6_ALWAYS_STAND_ON_TOP_OF_TARGET = 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? - CREATURE_STATIC_FLAG_6_UNCONSCIOUS_ON_DEATH = 0x00001000, - CREATURE_STATIC_FLAG_6_DONT_REPORT_TO_LOCAL_DEFENSE_CHANNEL_ON_DEATH = 0x00002000, - CREATURE_STATIC_FLAG_6_PREFER_UNENGAGED_MONSTERS = 0x00004000, // "Prefer unengaged monsters when picking a target" - CREATURE_STATIC_FLAG_6_USE_PVP_POWER_AND_RESILIENCE = 0x00008000, // "Use PVP power and resilience when players attack this creature" - CREATURE_STATIC_FLAG_6_DONT_CLEAR_DEBUFFS_ON_LEAVE_COMBAT = 0x00010000, - CREATURE_STATIC_FLAG_6_PERSONAL_LOOT_HAS_FULL_SECURITY = 0x00020000, // "Personal loot has full security (guaranteed push/mail delivery)" - CREATURE_STATIC_FLAG_6_TRIPLE_SPELL_VISUALS = 0x00040000, - CREATURE_STATIC_FLAG_6_USE_GARRISON_OWNER_LEVEL = 0x00080000, - CREATURE_STATIC_FLAG_6_IMMEDIATE_AOI_UPDATE_ON_SPAWN = 0x00100000, - CREATURE_STATIC_FLAG_6_UI_CAN_GET_POSITION = 0x00200000, - CREATURE_STATIC_FLAG_6_SEAMLESS_TRANSFER_PROHIBITED = 0x00400000, - CREATURE_STATIC_FLAG_6_ALWAYS_USE_GROUP_LOOT_METHOD = 0x00800000, - CREATURE_STATIC_FLAG_6_NO_BOSS_KILL_BANNER = 0x01000000, - CREATURE_STATIC_FLAG_6_FORCE_TRIGGERING_PLAYER_LOOT_ONLY = 0x02000000, - CREATURE_STATIC_FLAG_6_SHOW_BOSS_FRAME_WHILE_UNINTERACTABLE= 0x04000000, - CREATURE_STATIC_FLAG_6_SCALES_TO_PLAYER_LEVEL = 0x08000000, - CREATURE_STATIC_FLAG_6_AI_DONT_LEAVE_MELEE_FOR_RANGED_WHEN_TARGET_GETS_ROOTED = 0x10000000, - CREATURE_STATIC_FLAG_6_DONT_USE_COMBAT_REACH_FOR_CHAINING = 0x20000000, - CREATURE_STATIC_FLAG_6_DO_NOT_PLAY_PROCEDURAL_WOUND_ANIM = 0x40000000, - CREATURE_STATIC_FLAG_6_APPLY_PROCEDURAL_WOUND_ANIM_TO_BASE = 0x80000000 // TFLAG2_UNK14 + 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, // TFLAG2_UNK7 + 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 // TFLAG2_UNK14 } [Flags] public enum CreatureStaticFlags7 : uint { - CREATURE_STATIC_FLAG_7_IMPORTANT_NPC = 0x00000001, - CREATURE_STATIC_FLAG_7_IMPORTANT_QUEST_NPC = 0x00000002, - CREATURE_STATIC_FLAG_7_LARGE_NAMEPLATE = 0x00000004, - CREATURE_STATIC_FLAG_7_TRIVIAL_PET = 0x00000008, - CREATURE_STATIC_FLAG_7_AI_ENEMIES_DONT_BACKUP_WHEN_I_GET_ROOTED = 0x00000010, - CREATURE_STATIC_FLAG_7_NO_AUTOMATIC_COMBAT_ANCHOR = 0x00000020, - CREATURE_STATIC_FLAG_7_ONLY_TARGETABLE_BY_CREATOR = 0x00000040, - CREATURE_STATIC_FLAG_7_TREAT_AS_PLAYER_FOR_ISPLAYERCONTROLLED = 0x00000080, - CREATURE_STATIC_FLAG_7_GENERATE_NO_THREAT_OR_DAMAGE = 0x00000100, - CREATURE_STATIC_FLAG_7_INTERACT_ONLY_ON_QUEST = 0x00000200, - CREATURE_STATIC_FLAG_7_DISABLE_KILL_CREDIT_FOR_OFFLINE_PLAYERS = 0x00000400, - CREATURE_STATIC_FLAG_7_AI_ADDITIONAL_PATHING = 0x00080000, + 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 : uint { - CREATURE_STATIC_FLAG_8_FORCE_CLOSE_IN_ON_PATH_FAIL_BEHAVIOR = 0x00000002, - CREATURE_STATIC_FLAG_8_USE_2D_CHASING_CALCULATION = 0x00000020, - CREATURE_STATIC_FLAG_8_USE_FAST_CLASSIC_HEARTBEAT = 0x00000040, + ForceCloseInOnPathFailBehavior = 0x00000002, + Use2DChasingCalculation = 0x00000020, + UseFastClassicHeartbeat = 0x00000040, } } diff --git a/WowPacketParser/SQL/Builders/UnitMisc.cs b/WowPacketParser/SQL/Builders/UnitMisc.cs index a20978a8d2..50f2433fa0 100644 --- a/WowPacketParser/SQL/Builders/UnitMisc.cs +++ b/WowPacketParser/SQL/Builders/UnitMisc.cs @@ -161,20 +161,20 @@ public static string CreatureTemplateScalingDataWDB() public static void UpdateCreatureStaticFlags(ref Unit npc, ref CreatureTemplateDifficulty creatureDifficulty) { if ((npc.UnitData.Flags & (uint)UnitFlags.CanSwim) != 0) - creatureDifficulty.StaticFlags1 |= CreatureStaticFlags.CREATURE_STATIC_FLAG_CAN_SWIM; + creatureDifficulty.StaticFlags1 |= CreatureStaticFlags.CanSwim; if ((npc.UnitData.Flags & (uint)UnitFlags.CantSwim) != 0) - creatureDifficulty.StaticFlags3 |= CreatureStaticFlags3.CREATURE_STATIC_FLAG_3_CANNOT_SWIM; + creatureDifficulty.StaticFlags3 |= CreatureStaticFlags3.CannotSwim; if ((npc.UnitData.Flags2 & (uint)UnitFlags2.CannotTurn) != 0) - creatureDifficulty.StaticFlags3 |= CreatureStaticFlags3.CREATURE_STATIC_FLAG_3_CANNOT_TURN; + creatureDifficulty.StaticFlags3 |= CreatureStaticFlags3.CannotTurn; if ((ClientVersion.Expansion == ClientType.WrathOfTheLichKing && npc.Movement.Flags.HasAnyFlag(MovementFlag.DisableGravity)) || (ClientVersion.Expansion >= ClientType.Cataclysm && npc.Movement.Flags.HasAnyFlag(Enums.v4.MovementFlag.DisableGravity))) - creatureDifficulty.StaticFlags1 |= CreatureStaticFlags.CREATURE_STATIC_FLAG_FLOATING; // Not 100% reliable + creatureDifficulty.StaticFlags1 |= CreatureStaticFlags.Floating; // Not 100% reliable if ((ClientVersion.Expansion == ClientType.WrathOfTheLichKing && npc.Movement.Flags.HasAnyFlag(MovementFlag.Root)) || (ClientVersion.Expansion >= ClientType.Cataclysm && npc.Movement.Flags.HasAnyFlag(Enums.v4.MovementFlag.Root))) - creatureDifficulty.StaticFlags1 |= CreatureStaticFlags.CREATURE_STATIC_FLAG_SESSILE; // Not 100% reliable + creatureDifficulty.StaticFlags1 |= CreatureStaticFlags.Sessile; // Not 100% reliable } [BuilderMethod(true, Units = true)]