// 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 VehicleSeatFlags : uint { HasLowerAnimForEnter = 0x01, HasLowerAnimForRide = 0x02, DisableGravity = 0x04, // Passenger will not be affected by gravity ShouldUseVehSeatExitAnimOnVoluntaryExit = 0x08, Unk5 = 0x10, Unk6 = 0x20, Unk7 = 0x40, Unk8 = 0x80, Unk9 = 0x100, HidePassenger = 0x200, // Passenger Is Hidden AllowTurning = 0x400, // Needed For CgcameraSyncfreelookfacing CanControl = 0x800, // LuaUnitinvehiclecontrolseat CanCastMountSpell = 0x1000, // Can Cast Spells With SpellAuraMounted From Seat (Possibly 4.X Only, 0 Seats On 3.3.5a) Uncontrolled = 0x2000, // Can Override !& CanEnterOrExit CanAttack = 0x4000, // Can Attack, Cast Spells And Use Items From Vehicle ShouldUseVehSeatExitAnimOnForcedExit = 0x8000, Unk17 = 0x10000, Unk18 = 0x20000, // Needs Research And Support (28 Vehicles): Allow Entering Vehicles While Keeping Specific Permanent(?) Auras That Impose Visuals (States Like Beeing Under Freeze/Stun Mechanic, Emote State Animations). HasVehExitAnimVoluntaryExit = 0x40000, HasVehExitAnimForcedExit = 0x80000, PassengerNotSelectable = 0x100000, Unk22 = 0x200000, RecHasVehicleEnterAnim = 0x400000, IsUsingVehicleControls = 0x800000, // LuaIsusingvehiclecontrols EnableVehicleZoom = 0x1000000, CanEnterOrExit = 0x2000000, // LuaCanexitvehicle - Can Enter And Exit At Free Will CanSwitch = 0x4000000, // LuaCanswitchvehicleseats HasStartWaritingForVehTransitionAnimEnter = 0x8000000, HasStartWaritingForVehTransitionAnimExit = 0x10000000, CanCast = 0x20000000, // LuaUnithasvehicleui Unk2 = 0x40000000, // Checked In Conjunction With 0x800 In Castspell2 AllowsInteraction = 0x80000000 } public enum VehicleSeatFlagsB : uint { None = 0x00, UsableForced = 0x02, TargetsInRaidUi = 0x08, // Lua_Unittargetsvehicleinraidui Ejectable = 0x20, // Ejectable UsableForced2 = 0x40, UsableForced3 = 0x100, PassengerMirrorsAnims = 0x10000, // Passenger forced to repeat all vehicle animations KeepPet = 0x20000, UsableForced4 = 0x02000000, CanSwitch = 0x4000000, VehiclePlayerframeUi = 0x80000000 // Lua_Unithasvehicleplayerframeui - Actually Checked For Flagsb &~ 0x80000000 } public enum SpellClickCastFlags { CasterClicker = 0x01, TargetClicker = 0x02, OrigCasterOwner = 0x04 } public enum SummonSlot { Any = -1, Pet = 0, Totem = 1, Totem2 = 2, Totem3 = 3, Totem4 = 4, MiniPet = 5, Quest = 6, Max } public enum BaseModType { FlatMod, PctMod, End } //To all Immune system, if target has immunes, //some spell that related to ImmuneToDispel or ImmuneToSchool or ImmuneToDamage type can't cast to it, //some spell_effects that related to ImmuneToEffect(only this effect in the spell) can't cast to it, //some aura(related to Mechanics or ImmuneToState) can't apply to it. public enum SpellImmunity { Effect = 0, // enum SpellEffects State = 1, // enum AuraType School = 2, // enum SpellSchoolMask Damage = 3, // enum SpellSchoolMask Dispel = 4, // enum DispelType Mechanic = 5, // enum Mechanics Id = 6, Other = 7, //enum SpellOtherImmunity Max } public enum BaseModGroup { CritPercentage, RangedCritPercentage, OffhandCritPercentage, ShieldBlockValue, End } public enum AdvFlyingRateTypeSingle { AirFriction = 0, MaxVel = 1, LiftCoefficient = 2, DoubleJumpVelMod = 3, GlideStartMinHeight = 4, AddImpulseMaxSpeed = 5, SurfaceFriction = 14, OverMaxDeceleration = 15, LaunchSpeedCoefficient = 16, Max = 17 } public enum AdvFlyingRateTypeRange { BankingRate = 6, PitchingRateDown = 8, PitchingRateUp = 10, TurnVelocityThreshold = 12 } public enum DamageEffectType { Direct = 0, // used for normal weapon damage (not for class abilities or spells) SpellDirect = 1, // spell/class abilities damage DOT = 2, Heal = 3, NoDamage = 4, // used also in case when damage applied to health but not applied to spell channelInterruptFlags/etc Self = 5 } public enum WeaponDamageRange { MinDamage, MaxDamage } public enum UnitMods { StatStrength, // STAT_STRENGTH..UNIT_MOD_STAT_INTELLECT must be in existed order, it's accessed by index values of Stats enum. StatAgility, StatStamina, StatIntellect, Health, Mana, // UNIT_MOD_MANA..UNIT_MOD_PAIN must be listed in existing order, it is accessed by index values of Powers enum. Rage, Focus, Energy, ComboPoints, Runes, RunicPower, SoulShards, LunarPower, HolyPower, Alternate, Maelstrom, Chi, Insanity, BurningEmbers, DemonicFury, ArcaneCharges, Fury, Pain, Essence, RuneBlood, RuneFrost, RuneUnholy, AlternateQuest, AlternateEncounter, AlternateMount, Armor, // ARMOR..RESISTANCE_ARCANE must be in existed order, it's accessed by index values of SpellSchools enum. ResistanceHoly, ResistanceFire, ResistanceNature, ResistanceFrost, ResistanceShadow, ResistanceArcane, AttackPower, AttackPowerRanged, DamageMainHand, DamageOffHand, DamageRanged, End, // synonyms StatStart = StatStrength, StatEnd = StatIntellect + 1, ResistanceStart = Armor, ResistanceEnd = ResistanceArcane + 1, PowerStart = Mana, PowerEnd = AlternateMount + 1 } public enum UnitModifierFlatType { Base = 0, BasePCTExcludeCreate = 1, // percent modifier affecting all stat values from auras and gear but not player base for level Total = 2, End = 3 } public enum UnitModifierPctType { Base = 0, Total = 1, End = 2 } public enum VictimState { Intact = 0, // set when attacker misses Hit = 1, // victim got clear/blocked hit Dodge = 2, Parry = 3, Imterrupt = 4, Blocks = 5, // unused? not set when blocked, even on full block Evades = 6, Immune = 7, Deflects = 8 } [Flags] public enum HitInfo { NormalSwing = 0x0, Unk1 = 0x01, // req correct packet structure AffectsVictim = 0x02, OffHand = 0x04, Unk2 = 0x08, Miss = 0x10, FullAbsorb = 0x20, PartialAbsorb = 0x40, FullResist = 0x80, PartialResist = 0x100, CriticalHit = 0x200, // critical hit Unk10 = 0x400, Unk11 = 0x800, Unk12 = 0x1000, Block = 0x2000, // blocked damage Unk14 = 0x4000, // set only if meleespellid is present// no world text when victim is hit for 0 dmg(HideWorldTextForNoDamage?) Unk15 = 0x8000, // player victim?// something related to blod sprut visual (BloodSpurtInBack?) Glancing = 0x10000, Crushing = 0x20000, NoAnimation = 0x40000, Unk19 = 0x80000, Unk20 = 0x100000, SwingNoHitSound = 0x200000, // unused? Unk22 = 0x00400000, RageGain = 0x800000, FakeDamage = 0x1000000 // enables damage animation even if no damage done, set only if no damage } public enum ReactStates { Passive = 0, Defensive = 1, Aggressive = 2, Assist = 3 } /// /// UnitStandStateType /// public enum UnitStandStateType : byte { Stand = 0, Sit = 1, SitChair = 2, Sleep = 3, SitLowChair = 4, SitMediumChair = 5, SitHighChair = 6, Dead = 7, Kneel = 8, Submerged = 9, Max } public enum UnitVisFlags { Invisible = 0x01, Stealthed = 0x02, Untrackable = 0x04, Unk4 = 0x08, Unk5 = 0x10, All = 0xFF } public enum AnimTier { Ground = 0, // plays ground tier animations Swim = 1, // falls back to ground tier animations, not handled by the client, should never appear in sniffs, will prevent tier change animations from playing correctly if used Hover = 2, // plays flying tier animations or falls back to ground tier animations, automatically enables hover clientside when entering visibility with this value Fly = 3, // plays flying tier animations Submerged = 4, Max } public enum UnitPVPStateFlags { None = 0x00, PvP = 0x01, Unk1 = 0x02, FFAPvp = 0x04, Sanctuary = 0x08, Unk4 = 0x10, Unk5 = 0x20, Unk6 = 0x40, Unk7 = 0x80, } public enum UnitPetFlags : byte { None = 0x00, CanBeRenamed = 0x01, CanBeAbandoned = 0x02 } /// /// UnitFields.Bytes2, 3 /// public enum ShapeShiftForm { None = 0, CatForm = 1, TreeOfLife = 2, TravelForm = 3, AquaticForm = 4, BearForm = 5, Ambient = 6, Ghoul = 7, DireBearForm = 8, CraneStance = 9, TharonjaSkeleton = 10, DarkmoonTestOfStrength = 11, BlbPlayer = 12, ShadowDance = 13, CreatureBear = 14, CreatureCat = 15, GhostWolf = 16, BattleStance = 17, DefensiveStance = 18, BerserkerStance = 19, SerpentStance = 20, Zombie = 21, Metamorphosis = 22, OxStance = 23, TigerStance = 24, Undead = 25, Frenzy = 26, FlightFormEpic = 27, Shadowform = 28, FlightForm = 29, Stealth = 30, MoonkinForm = 31, SpiritOfRedemption = 32, GladiatorStance = 33, Metamorphosis2 = 34, MoonkinRestoration = 35, TreantForm = 36, SpiritOwlForm = 37, SpiritOwl2 = 38, WispForm = 39, Wisp2 = 40, Soulshape = 41, ForgeborneReveries = 42 } public enum ReactiveType { Defense = 0, Defense2 = 1, Max = 2 } public enum SpellValueMod { BasePoint0, BasePoint1, BasePoint2, BasePoint3, BasePoint4, BasePoint5, BasePoint6, BasePoint7, BasePoint8, BasePoint9, BasePoint10, BasePoint11, BasePoint12, BasePoint13, BasePoint14, BasePoint15, BasePoint16, BasePoint17, BasePoint18, BasePoint19, BasePoint20, BasePoint21, BasePoint22, BasePoint23, BasePoint24, BasePoint25, BasePoint26, BasePoint27, BasePoint28, BasePoint29, BasePoint30, BasePoint31, BasePointEnd, MaxTargets = BasePointEnd, AuraStack, Duration, ParentSpellTargetCount, ParentSpellTargetIndex, IntEnd, } public enum SpellValueModFloat { RadiusMod = SpellValueMod.IntEnd, CritChance, DurationPct, } public enum CombatRating { Amplify = 0, DefenseSkill = 1, Dodge = 2, Parry = 3, Block = 4, HitMelee = 5, HitRanged = 6, HitSpell = 7, CritMelee = 8, CritRanged = 9, CritSpell = 10, Corruption = 11, CorruptionResistance = 12, Speed = 13, ResilienceCritTaken = 14, ResiliencePlayerDamage = 15, Lifesteal = 16, HasteMelee = 17, HasteRanged = 18, HasteSpell = 19, Avoidance = 20, Studiness = 21, Unused7 = 22, Expertise = 23, ArmorPenetration = 24, Mastery = 25, PvpPower = 26, Cleave = 27, VersatilityDamageDone = 28, VersatilityHealingDone = 29, VersatilityDamageTaken = 30, Unused12 = 31, Max = 32 } public enum DeathState { Alive = 0, JustDied = 1, Corpse = 2, Dead = 3, JustRespawned = 4 } [Flags] public enum UnitState : uint { Died = 0x01, // Player Has Fake Death Aura MeleeAttacking = 0x02, // Player Is Melee Attacking Someone Charmed = 0x04, // having any kind of charm aura on self Stunned = 0x08, Roaming = 0x10, Chase = 0x20, Focusing = 0x40, Fleeing = 0x80, InFlight = 0x100, // Player Is In Flight Mode Follow = 0x200, Root = 0x400, Confused = 0x800, Distracted = 0x1000, Isolated_Deprecated = 0x2000, // REUSE AttackPlayer = 0x4000, Casting = 0x8000, Possessed = 0x10000, // being possessed by another unit Charging = 0x20000, Jumping = 0x40000, FollowFormation = 0x80000, Move = 0x100000, Rotating = 0x200000, Evade = 0x400000, RoamingMove = 0x800000, ConfusedMove = 0x1000000, FleeingMove = 0x2000000, ChaseMove = 0x4000000, FollowMove = 0x8000000, IgnorePathfinding = 0x10000000, FollowFormationMove = 0x20000000, AllStateSupported = Died | MeleeAttacking | Charmed | Stunned | Roaming | Chase | Focusing | Fleeing | InFlight | Follow | Root | Confused | Distracted | AttackPlayer | Casting | Possessed | Charging | Jumping | Move | Rotating | Evade | RoamingMove | ConfusedMove | FleeingMove | ChaseMove | FollowMove | IgnorePathfinding | FollowFormationMove, Unattackable = InFlight, Moving = RoamingMove | ConfusedMove | FleeingMove | ChaseMove | FollowMove | FollowFormationMove, Controlled = Confused | Stunned | Fleeing, LostControl = Controlled | Possessed | Jumping | Charging, CannotAutoattack = Controlled | Charging, Sightless = LostControl | Evade, CannotTurn = LostControl | Rotating | Focusing, NotMove = Root | Stunned | Died | Distracted, AllErasable = AllStateSupported & ~IgnorePathfinding, AllState = 0xffffffff } public enum UnitMoveType { Walk = 0, Run = 1, RunBack = 2, Swim = 3, SwimBack = 4, TurnRate = 5, Flight = 6, FlightBack = 7, PitchRate = 8, Max = 9 } public enum WeaponAttackType { BaseAttack = 0, OffAttack = 1, RangedAttack = 2, Max } public enum UnitTypeMask { None = 0x0, Summon = 0x01, Minion = 0x02, Guardian = 0x04, Totem = 0x08, Pet = 0x10, Vehicle = 0x20, Puppet = 0x40, HunterPet = 0x80, ControlableGuardian = 0x100, Accessory = 0x200 } public enum CurrentSpellTypes { Melee = 0, Generic = 1, Channeled = 2, AutoRepeat = 3, Max = 4 } public enum SheathState { Unarmed = 0, // non prepared weapon Melee = 1, // prepared melee weapon Ranged = 2, // prepared ranged weapon Max = 3 } public enum MeleeHitOutcome { Evade, Miss, Dodge, Block, Parry, Glancing, Crit, Crushing, Normal } public enum UnitDynFlags { None = 0x00, HideModel = 0x02, // Object model is not shown with this flag Lootable = 0x04, TrackUnit = 0x08, Tapped = 0x10, // Lua_UnitIsTapped SpecialInfo = 0x20, CanSkin = 0x40, // previously UNIT_DYNFLAG_DEAD ReferAFriend = 0x80 } public enum AreaTriggerRemoveReason { Default, UnitDespawn } }