mirror of
https://github.com/brues-code/nampower.git
synced 2026-10-14 17:30:49 +00:00
1841 lines
70 KiB
C++
1841 lines
70 KiB
C++
/*
|
|
Copyright (c) 2017-2023, namreeb (legal@namreeb.org)
|
|
All rights reserved.
|
|
|
|
Redistribution and use in source and binary forms, with or without
|
|
modification, are permitted provided that the following conditions are met:
|
|
|
|
1. Redistributions of source code must retain the above copyright notice, this
|
|
list of conditions and the following disclaimer.
|
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
this list of conditions and the following disclaimer in the documentation
|
|
and/or other materials provided with the distribution.
|
|
|
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
|
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
The views and conclusions contained in the software and documentation are those
|
|
of the authors and should not be interpreted as representing official policies,
|
|
either expressed or implied, of the FreeBSD Project.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <cstdint>
|
|
#include <string>
|
|
|
|
namespace game {
|
|
#pragma pack(push, 1)
|
|
enum ItemClass {
|
|
ITEM_CLASS_CONSUMABLE = 0,
|
|
ITEM_CLASS_CONTAINER = 1,
|
|
ITEM_CLASS_WEAPON = 2,
|
|
ITEM_CLASS_GEM = 3,
|
|
ITEM_CLASS_ARMOR = 4,
|
|
ITEM_CLASS_REAGENT = 5,
|
|
ITEM_CLASS_PROJECTILE = 6,
|
|
ITEM_CLASS_TRADE_GOODS = 7,
|
|
ITEM_CLASS_GENERIC = 8,
|
|
ITEM_CLASS_RECIPE = 9,
|
|
ITEM_CLASS_MONEY = 10,
|
|
ITEM_CLASS_QUIVER = 11,
|
|
ITEM_CLASS_QUEST = 12,
|
|
ITEM_CLASS_KEY = 13,
|
|
ITEM_CLASS_PERMANENT = 14,
|
|
ITEM_CLASS_JUNK = 15
|
|
};
|
|
|
|
enum ItemSubclassWeapon {
|
|
ITEM_SUBCLASS_WEAPON_AXE = 0,
|
|
ITEM_SUBCLASS_WEAPON_AXE2 = 1,
|
|
ITEM_SUBCLASS_WEAPON_BOW = 2,
|
|
ITEM_SUBCLASS_WEAPON_GUN = 3,
|
|
ITEM_SUBCLASS_WEAPON_MACE = 4,
|
|
ITEM_SUBCLASS_WEAPON_MACE2 = 5,
|
|
ITEM_SUBCLASS_WEAPON_POLEARM = 6,
|
|
ITEM_SUBCLASS_WEAPON_SWORD = 7,
|
|
ITEM_SUBCLASS_WEAPON_SWORD2 = 8,
|
|
ITEM_SUBCLASS_WEAPON_obsolete = 9,
|
|
ITEM_SUBCLASS_WEAPON_STAFF = 10,
|
|
ITEM_SUBCLASS_WEAPON_EXOTIC = 11,
|
|
ITEM_SUBCLASS_WEAPON_EXOTIC2 = 12,
|
|
ITEM_SUBCLASS_WEAPON_FIST = 13,
|
|
ITEM_SUBCLASS_WEAPON_MISC = 14,
|
|
ITEM_SUBCLASS_WEAPON_DAGGER = 15,
|
|
ITEM_SUBCLASS_WEAPON_THROWN = 16,
|
|
ITEM_SUBCLASS_WEAPON_SPEAR = 17,
|
|
ITEM_SUBCLASS_WEAPON_CROSSBOW = 18,
|
|
ITEM_SUBCLASS_WEAPON_WAND = 19,
|
|
ITEM_SUBCLASS_WEAPON_FISHING_POLE = 20
|
|
};
|
|
|
|
enum ItemSubclassArmor {
|
|
ITEM_SUBCLASS_ARMOR_MISC = 0,
|
|
ITEM_SUBCLASS_ARMOR_CLOTH = 1,
|
|
ITEM_SUBCLASS_ARMOR_LEATHER = 2,
|
|
ITEM_SUBCLASS_ARMOR_MAIL = 3,
|
|
ITEM_SUBCLASS_ARMOR_PLATE = 4,
|
|
ITEM_SUBCLASS_ARMOR_BUCKLER = 5,
|
|
ITEM_SUBCLASS_ARMOR_SHIELD = 6,
|
|
ITEM_SUBCLASS_ARMOR_LIBRAM = 7,
|
|
ITEM_SUBCLASS_ARMOR_IDOL = 8,
|
|
ITEM_SUBCLASS_ARMOR_TOTEM = 9
|
|
};
|
|
|
|
enum InventoryType {
|
|
INVTYPE_NON_EQUIP = 0,
|
|
INVTYPE_HEAD = 1,
|
|
INVTYPE_NECK = 2,
|
|
INVTYPE_SHOULDERS = 3,
|
|
INVTYPE_BODY = 4,
|
|
INVTYPE_CHEST = 5,
|
|
INVTYPE_WAIST = 6,
|
|
INVTYPE_LEGS = 7,
|
|
INVTYPE_FEET = 8,
|
|
INVTYPE_WRISTS = 9,
|
|
INVTYPE_HANDS = 10,
|
|
INVTYPE_FINGER = 11,
|
|
INVTYPE_TRINKET = 12,
|
|
INVTYPE_WEAPON = 13,
|
|
INVTYPE_SHIELD = 14,
|
|
INVTYPE_RANGED = 15,
|
|
INVTYPE_CLOAK = 16,
|
|
INVTYPE_2HWEAPON = 17,
|
|
INVTYPE_BAG = 18,
|
|
INVTYPE_TABARD = 19,
|
|
INVTYPE_ROBE = 20,
|
|
INVTYPE_WEAPONMAINHAND = 21,
|
|
INVTYPE_WEAPONOFFHAND = 22,
|
|
INVTYPE_HOLDABLE = 23,
|
|
INVTYPE_AMMO = 24,
|
|
INVTYPE_THROWN = 25,
|
|
INVTYPE_RANGEDRIGHT = 26,
|
|
INVTYPE_QUIVER = 27,
|
|
INVTYPE_RELIC = 28
|
|
};
|
|
|
|
struct SpellRec {
|
|
unsigned int Id;
|
|
unsigned int School;
|
|
unsigned int Category;
|
|
unsigned int castUI;
|
|
unsigned int Dispel;
|
|
unsigned int Mechanic;
|
|
unsigned int Attributes;
|
|
unsigned int AttributesEx;
|
|
unsigned int AttributesEx2;
|
|
unsigned int AttributesEx3;
|
|
unsigned int AttributesEx4;
|
|
unsigned int Stances;
|
|
unsigned int StancesNot;
|
|
unsigned int Targets;
|
|
unsigned int TargetCreatureType;
|
|
unsigned int RequiresSpellFocus;
|
|
unsigned int CasterAuraState;
|
|
unsigned int TargetAuraState;
|
|
unsigned int CastingTimeIndex;
|
|
unsigned int RecoveryTime;
|
|
unsigned int CategoryRecoveryTime;
|
|
unsigned int InterruptFlags;
|
|
unsigned int AuraInterruptFlags;
|
|
unsigned int ChannelInterruptFlags;
|
|
unsigned int procFlags;
|
|
unsigned int procChance;
|
|
unsigned int procCharges;
|
|
unsigned int maxLevel;
|
|
unsigned int baseLevel;
|
|
unsigned int spellLevel;
|
|
unsigned int DurationIndex;
|
|
unsigned int powerType;
|
|
unsigned int manaCost;
|
|
unsigned int manaCostPerlevel;
|
|
unsigned int manaPerSecond;
|
|
unsigned int manaPerSecondPerLevel;
|
|
unsigned int rangeIndex;
|
|
float speed;
|
|
unsigned int modalNextSpell;
|
|
unsigned int StackAmount;
|
|
unsigned int Totem[2];
|
|
int Reagent[8];
|
|
unsigned int ReagentCount[8];
|
|
int EquippedItemClass;
|
|
int EquippedItemSubClassMask;
|
|
int EquippedItemInventoryTypeMask;
|
|
unsigned int Effect[3];
|
|
int EffectDieSides[3];
|
|
unsigned int EffectBaseDice[3];
|
|
float EffectDicePerLevel[3];
|
|
float EffectRealPointsPerLevel[3];
|
|
int EffectBasePoints[3];
|
|
unsigned int EffectMechanic[3];
|
|
unsigned int EffectImplicitTargetA[3];
|
|
unsigned int EffectImplicitTargetB[3];
|
|
unsigned int EffectRadiusIndex[3];
|
|
unsigned int EffectApplyAuraName[3];
|
|
unsigned int EffectAmplitude[3];
|
|
float EffectMultipleValue[3];
|
|
unsigned int EffectChainTarget[3];
|
|
unsigned int EffectItemType[3];
|
|
int EffectMiscValue[3];
|
|
unsigned int EffectTriggerSpell[3];
|
|
float EffectPointsPerComboPoint[3];
|
|
unsigned int SpellVisual;
|
|
unsigned int SpellVisual2;
|
|
unsigned int SpellIconID;
|
|
unsigned int activeIconID;
|
|
unsigned int spellPriority;
|
|
const char *Name[8];
|
|
unsigned int SpellNameFlag;
|
|
const char *Rank[8];
|
|
unsigned int RankFlags;
|
|
const char *Description[8];
|
|
unsigned int DescriptionFlags;
|
|
const char *ToolTip[8];
|
|
unsigned int ToolTipFlags;
|
|
unsigned int ManaCostPercentage;
|
|
unsigned int StartRecoveryCategory;
|
|
unsigned int StartRecoveryTime;
|
|
unsigned int MaxTargetLevel;
|
|
unsigned int SpellFamilyName;
|
|
unsigned __int64 SpellFamilyFlags;
|
|
unsigned int MaxAffectedTargets;
|
|
unsigned int DmgClass;
|
|
unsigned int PreventionType;
|
|
unsigned int StanceBarOrder;
|
|
float DmgMultiplier[3];
|
|
unsigned int MinFactionId;
|
|
unsigned int MinReputation;
|
|
unsigned int RequiredAuraVision;
|
|
};
|
|
|
|
template<typename T>
|
|
struct WowClientDB {
|
|
T *m_records;
|
|
uint32_t m_numRecords;
|
|
T **m_recordsById;
|
|
uint32_t m_maxId;
|
|
int m_loaded;
|
|
};
|
|
|
|
struct SpellCast {
|
|
unsigned __int64 casterUnit;
|
|
unsigned __int64 caster;
|
|
int spellId;
|
|
unsigned __int16 targets;
|
|
unsigned __int16 unk;
|
|
unsigned __int64 unitTarget;
|
|
unsigned __int64 itemTarget;
|
|
unsigned int Fields2[18];
|
|
char targetString[128];
|
|
};
|
|
|
|
struct SpellHistoryEntry {
|
|
uint32_t field0_0x0;
|
|
uint32_t field4_0x4;
|
|
uint32_t spellID;
|
|
uint32_t itemID;
|
|
uint32_t recoveryStart;
|
|
uint32_t recoveryTime;
|
|
uint32_t category;
|
|
uint32_t categoryRecoveryStart;
|
|
uint32_t categoryRecoveryTime;
|
|
bool onHold;
|
|
uint8_t padding1;
|
|
uint8_t padding2;
|
|
uint8_t padding3;
|
|
uint32_t startRecoveryCategory;
|
|
uint32_t startRecoveryTime;
|
|
uint32_t field_unknown1;
|
|
uint32_t field_unknown2;
|
|
uint32_t field_unknown3;
|
|
};
|
|
|
|
struct CGBuffDesc {
|
|
uint32_t m_auraIndex;
|
|
uint32_t m_auraSpell;
|
|
uint32_t m_auraFlags;
|
|
uint32_t m_untilCancelled;
|
|
};
|
|
|
|
struct CSpriteClickEvent {
|
|
unsigned __int64 objectGUID;
|
|
unsigned int button;
|
|
unsigned int time;
|
|
unsigned __int64 *pos;
|
|
};
|
|
|
|
struct C3Vector {
|
|
float x;
|
|
float y;
|
|
float z;
|
|
};
|
|
|
|
struct CTerrainClickEvent {
|
|
C3Vector point;
|
|
unsigned int button;
|
|
};
|
|
|
|
enum ItemStatsFlags {
|
|
ITEM_FLAG_NO_PICKUP = 1,
|
|
ITEM_FLAG_CONJURED = 2,
|
|
ITEM_FLAG_HAS_LOOT = 4,
|
|
ITEM_FLAG_EXOTIC = 8,
|
|
ITEM_FLAG_NUM = 14,
|
|
ITEM_FLAG_DEPRECATED = 16,
|
|
ITEM_FLAG_OBSOLETE = 32,
|
|
ITEM_FLAG_PLAYERCAST = 64,
|
|
ITEM_FLAG_NO_EQUIPCOOLDOWN = 128,
|
|
ITEM_FLAG_INTBONUSINSTEAD = 256,
|
|
ITEM_FLAG_IS_WRAPPER = 512,
|
|
ITEM_FLAG_USES_RESOURCES = 1024,
|
|
ITEM_FLAG_MULTI_DROP = 2048,
|
|
ITEM_FLAG_BRIEFSPELLEFFECTS = 4096,
|
|
ITEM_FLAG_PETITION = 8192,
|
|
MAX_ITEM_FLAG = 32768
|
|
};
|
|
|
|
|
|
typedef enum OBJECT_TYPE_MASK {
|
|
TYPE_OBJECT = 1,
|
|
TYPE_ITEM = 2,
|
|
TYPE_CONTAINER = 4,
|
|
TYPE_UNIT = 8,
|
|
TYPE_PLAYER = 16,
|
|
TYPE_GAMEOBJECT = 32,
|
|
TYPE_DYNAMICOBJECT = 64,
|
|
TYPE_CORPSE = 128,
|
|
TYPE_AIGROUP = 256,
|
|
TYPE_AREATRIGGER = 512
|
|
} OBJECT_TYPE_MASK;
|
|
|
|
|
|
struct CGObjectData {
|
|
uint64_t m_guid;
|
|
OBJECT_TYPE_MASK m_type;
|
|
int m_entryID;
|
|
float m_scale;
|
|
uint32_t pad;
|
|
};
|
|
|
|
struct ObjectFields {
|
|
uint64_t guid;
|
|
uint32_t type;
|
|
uint32_t entry;
|
|
uint32_t scaleX;
|
|
uint32_t padding;
|
|
};
|
|
|
|
struct ItemEnchantment {
|
|
int id;
|
|
int duration;
|
|
int charges;
|
|
};
|
|
|
|
enum ItemQualities {
|
|
ITEM_QUALITY_POOR = 0, // GREY
|
|
ITEM_QUALITY_NORMAL = 1, // WHITE
|
|
ITEM_QUALITY_UNCOMMON = 2, // GREEN
|
|
ITEM_QUALITY_RARE = 3, // BLUE
|
|
ITEM_QUALITY_EPIC = 4, // PURPLE
|
|
ITEM_QUALITY_LEGENDARY = 5, // ORANGE
|
|
ITEM_QUALITY_ARTIFACT = 6 // LIGHT YELLOW
|
|
};
|
|
|
|
struct CGObject {
|
|
void *vftable;
|
|
uintptr_t *m_data;
|
|
CGObjectData *m_obj;
|
|
};
|
|
|
|
struct ItemFields {
|
|
uint64_t owner;
|
|
uint64_t contained;
|
|
uint64_t creator;
|
|
uint64_t giftCreator;
|
|
uint32_t stackCount;
|
|
uint32_t duration;
|
|
uint32_t spellCharges[5];
|
|
uint32_t flags;
|
|
ItemEnchantment permEnchantmentSlot;
|
|
ItemEnchantment tempEnchantmentSlot;
|
|
ItemEnchantment maxInspectedEnchantmentSlot;
|
|
ItemEnchantment propEnchantmentSlot0;
|
|
ItemEnchantment propEnchantmentSlot1;
|
|
ItemEnchantment propEnchantmentSlot2;
|
|
ItemEnchantment propEnchantmentSlot3;
|
|
uint32_t propertySeed;
|
|
uint32_t randomPropertiesId;
|
|
uint32_t itemTextId;
|
|
uint32_t durability;
|
|
uint32_t maxDurability;
|
|
};
|
|
|
|
struct CGItem_C {
|
|
CGObject object;
|
|
int32_t field1;
|
|
int32_t field2;
|
|
int32_t field3;
|
|
int32_t field4;
|
|
int32_t field5;
|
|
int32_t field6;
|
|
int32_t field7;
|
|
int32_t field8;
|
|
int32_t field9;
|
|
int32_t field10;
|
|
int32_t field11;
|
|
int32_t field12;
|
|
int32_t field13;
|
|
int32_t field14;
|
|
int32_t field15;
|
|
int32_t field16;
|
|
int32_t field17;
|
|
int32_t field18;
|
|
int32_t field19;
|
|
int32_t field20;
|
|
int32_t field21;
|
|
int32_t field22;
|
|
int32_t field23;
|
|
int32_t field24;
|
|
int32_t field25;
|
|
int32_t field26;
|
|
int32_t field27;
|
|
int32_t field28;
|
|
int32_t field29;
|
|
int32_t field30;
|
|
int32_t field31;
|
|
int32_t field32;
|
|
int32_t field33;
|
|
int32_t field34;
|
|
int32_t field35;
|
|
int32_t field36;
|
|
int32_t field37;
|
|
int32_t field38;
|
|
int32_t field39;
|
|
int32_t field40;
|
|
int32_t field41;
|
|
int32_t field42;
|
|
int32_t field43;
|
|
int32_t field44;
|
|
int32_t field45;
|
|
int32_t field46;
|
|
int32_t field47;
|
|
int32_t field48;
|
|
int32_t field49;
|
|
int32_t field50;
|
|
int32_t field51;
|
|
int32_t field52;
|
|
int32_t field53;
|
|
int32_t field54;
|
|
int32_t field55;
|
|
int32_t field56;
|
|
int32_t field57;
|
|
int32_t field58;
|
|
int32_t field59;
|
|
int32_t field60;
|
|
int32_t field61;
|
|
int32_t field62;
|
|
int32_t field63;
|
|
int32_t field64;
|
|
int32_t field65;
|
|
int32_t field66;
|
|
ItemFields *itemFields;
|
|
};
|
|
|
|
struct __declspec(align(4)) ItemStats_C {
|
|
ItemClass m_class;
|
|
int m_subclass;
|
|
char *m_displayName[4]; // only index 0 is used and is already localized. Other indexes are all null strings.
|
|
int m_displayInfoID;
|
|
int m_quality;
|
|
ItemStatsFlags m_flags;
|
|
int m_buyPrice;
|
|
int m_sellPrice;
|
|
InventoryType m_inventoryType;
|
|
int m_allowableClass;
|
|
int m_allowableRace;
|
|
int m_itemLevel;
|
|
int m_requiredLevel;
|
|
int m_requiredSkill;
|
|
int m_requiredSkillRank;
|
|
int m_requiredSpell;
|
|
int m_requiredHonorRank;
|
|
int m_requiredCityRank;
|
|
int m_requiredRep;
|
|
int m_requiredRepRank;
|
|
int m_maxCount;
|
|
int m_stackable;
|
|
int m_containerSlots;
|
|
int m_bonusStat[10];
|
|
int m_bonusAmount[10];
|
|
float m_minDamage[5];
|
|
float m_maxDamage[5];
|
|
int m_damageType[5];
|
|
int m_resistances[7];
|
|
int m_delay;
|
|
int m_ammoType;
|
|
int m_rangedModRange;
|
|
int m_spellID[5];
|
|
int m_spellTrigger[5];
|
|
int m_spellCharges[5];
|
|
int m_spellCooldown[5];
|
|
int m_spellCategory[5];
|
|
int m_spellCategoryCooldown[5];
|
|
int m_bonding;
|
|
char *m_description;
|
|
int m_pageText;
|
|
int m_languageID;
|
|
int m_pageMaterial;
|
|
int m_startQuestID;
|
|
int m_lockID;
|
|
int m_material;
|
|
int m_sheatheType;
|
|
int m_randomProperty;
|
|
int m_block;
|
|
int m_itemSet;
|
|
int m_maxDurability;
|
|
int m_area;
|
|
int m_map;
|
|
int m_duration;
|
|
int m_bagFamily;
|
|
};
|
|
#pragma pack(pop)
|
|
|
|
struct CGItem {
|
|
uintptr_t *unkPtr;
|
|
uint32_t unk;
|
|
uint32_t itemId;
|
|
uint32_t permanentEnchantId;
|
|
uint32_t tempEnchantId;
|
|
};
|
|
|
|
|
|
enum SpellEffects {
|
|
SPELL_EFFECT_NONE = 0,
|
|
SPELL_EFFECT_INSTAKILL = 1,
|
|
SPELL_EFFECT_SCHOOL_DAMAGE = 2,
|
|
SPELL_EFFECT_DUMMY = 3,
|
|
SPELL_EFFECT_PORTAL_TELEPORT = 4,
|
|
SPELL_EFFECT_TELEPORT_UNITS = 5,
|
|
SPELL_EFFECT_APPLY_AURA = 6,
|
|
SPELL_EFFECT_ENVIRONMENTAL_DAMAGE = 7,
|
|
SPELL_EFFECT_POWER_DRAIN = 8,
|
|
SPELL_EFFECT_HEALTH_LEECH = 9,
|
|
SPELL_EFFECT_HEAL = 10,
|
|
SPELL_EFFECT_BIND = 11,
|
|
SPELL_EFFECT_PORTAL = 12,
|
|
SPELL_EFFECT_RITUAL_BASE = 13,
|
|
SPELL_EFFECT_RITUAL_SPECIALIZE = 14,
|
|
SPELL_EFFECT_RITUAL_ACTIVATE_PORTAL = 15,
|
|
SPELL_EFFECT_QUEST_COMPLETE = 16,
|
|
SPELL_EFFECT_WEAPON_DAMAGE_NOSCHOOL = 17,
|
|
SPELL_EFFECT_RESURRECT = 18,
|
|
SPELL_EFFECT_ADD_EXTRA_ATTACKS = 19,
|
|
SPELL_EFFECT_DODGE = 20,
|
|
SPELL_EFFECT_EVADE = 21,
|
|
SPELL_EFFECT_PARRY = 22,
|
|
SPELL_EFFECT_BLOCK = 23,
|
|
SPELL_EFFECT_CREATE_ITEM = 24,
|
|
SPELL_EFFECT_WEAPON = 25,
|
|
SPELL_EFFECT_DEFENSE = 26,
|
|
SPELL_EFFECT_PERSISTENT_AREA_AURA = 27,
|
|
SPELL_EFFECT_SUMMON = 28,
|
|
SPELL_EFFECT_LEAP = 29,
|
|
SPELL_EFFECT_ENERGIZE = 30,
|
|
SPELL_EFFECT_WEAPON_PERCENT_DAMAGE = 31,
|
|
SPELL_EFFECT_TRIGGER_MISSILE = 32,
|
|
SPELL_EFFECT_OPEN_LOCK = 33,
|
|
SPELL_EFFECT_SUMMON_CHANGE_ITEM = 34,
|
|
SPELL_EFFECT_APPLY_AREA_AURA_PARTY = 35,
|
|
SPELL_EFFECT_LEARN_SPELL = 36,
|
|
SPELL_EFFECT_SPELL_DEFENSE = 37,
|
|
SPELL_EFFECT_DISPEL = 38,
|
|
SPELL_EFFECT_LANGUAGE = 39,
|
|
SPELL_EFFECT_DUAL_WIELD = 40,
|
|
SPELL_EFFECT_SUMMON_WILD = 41,
|
|
SPELL_EFFECT_SUMMON_GUARDIAN = 42,
|
|
SPELL_EFFECT_TELEPORT_UNITS_FACE_CASTER = 43,
|
|
SPELL_EFFECT_SKILL_STEP = 44,
|
|
SPELL_EFFECT_ADD_HONOR = 45,
|
|
SPELL_EFFECT_SPAWN = 46,
|
|
SPELL_EFFECT_TRADE_SKILL = 47,
|
|
SPELL_EFFECT_STEALTH = 48,
|
|
SPELL_EFFECT_DETECT = 49,
|
|
SPELL_EFFECT_TRANS_DOOR = 50,
|
|
SPELL_EFFECT_FORCE_CRITICAL_HIT = 51,
|
|
SPELL_EFFECT_GUARANTEE_HIT = 52,
|
|
SPELL_EFFECT_ENCHANT_ITEM = 53,
|
|
SPELL_EFFECT_ENCHANT_ITEM_TEMPORARY = 54,
|
|
SPELL_EFFECT_TAMECREATURE = 55,
|
|
SPELL_EFFECT_SUMMON_PET = 56,
|
|
SPELL_EFFECT_LEARN_PET_SPELL = 57,
|
|
SPELL_EFFECT_WEAPON_DAMAGE = 58,
|
|
SPELL_EFFECT_OPEN_LOCK_ITEM = 59,
|
|
SPELL_EFFECT_PROFICIENCY = 60,
|
|
SPELL_EFFECT_SEND_EVENT = 61,
|
|
SPELL_EFFECT_POWER_BURN = 62,
|
|
SPELL_EFFECT_THREAT = 63,
|
|
SPELL_EFFECT_TRIGGER_SPELL = 64,
|
|
SPELL_EFFECT_HEALTH_FUNNEL = 65,
|
|
SPELL_EFFECT_POWER_FUNNEL = 66,
|
|
SPELL_EFFECT_HEAL_MAX_HEALTH = 67,
|
|
SPELL_EFFECT_INTERRUPT_CAST = 68,
|
|
SPELL_EFFECT_DISTRACT = 69,
|
|
SPELL_EFFECT_PULL = 70,
|
|
SPELL_EFFECT_PICKPOCKET = 71,
|
|
SPELL_EFFECT_ADD_FARSIGHT = 72,
|
|
SPELL_EFFECT_SUMMON_POSSESSED = 73,
|
|
SPELL_EFFECT_SUMMON_TOTEM = 74,
|
|
SPELL_EFFECT_HEAL_MECHANICAL = 75,
|
|
SPELL_EFFECT_SUMMON_OBJECT_WILD = 76,
|
|
SPELL_EFFECT_SCRIPT_EFFECT = 77,
|
|
SPELL_EFFECT_ATTACK = 78,
|
|
SPELL_EFFECT_SANCTUARY = 79,
|
|
SPELL_EFFECT_ADD_COMBO_POINTS = 80,
|
|
SPELL_EFFECT_CREATE_HOUSE = 81,
|
|
SPELL_EFFECT_BIND_SIGHT = 82,
|
|
SPELL_EFFECT_DUEL = 83,
|
|
SPELL_EFFECT_STUCK = 84,
|
|
SPELL_EFFECT_SUMMON_PLAYER = 85,
|
|
SPELL_EFFECT_ACTIVATE_OBJECT = 86,
|
|
SPELL_EFFECT_SUMMON_TOTEM_SLOT1 = 87,
|
|
SPELL_EFFECT_SUMMON_TOTEM_SLOT2 = 88,
|
|
SPELL_EFFECT_SUMMON_TOTEM_SLOT3 = 89,
|
|
SPELL_EFFECT_SUMMON_TOTEM_SLOT4 = 90,
|
|
SPELL_EFFECT_THREAT_ALL = 91,
|
|
SPELL_EFFECT_ENCHANT_HELD_ITEM = 92,
|
|
SPELL_EFFECT_SUMMON_PHANTASM = 93,
|
|
SPELL_EFFECT_SELF_RESURRECT = 94,
|
|
SPELL_EFFECT_SKINNING = 95,
|
|
SPELL_EFFECT_CHARGE = 96,
|
|
SPELL_EFFECT_SUMMON_CRITTER = 97,
|
|
SPELL_EFFECT_KNOCK_BACK = 98,
|
|
SPELL_EFFECT_DISENCHANT = 99,
|
|
SPELL_EFFECT_INEBRIATE = 100,
|
|
SPELL_EFFECT_FEED_PET = 101,
|
|
SPELL_EFFECT_DISMISS_PET = 102,
|
|
SPELL_EFFECT_REPUTATION = 103,
|
|
SPELL_EFFECT_SUMMON_OBJECT_SLOT1 = 104,
|
|
SPELL_EFFECT_SUMMON_OBJECT_SLOT2 = 105,
|
|
SPELL_EFFECT_SUMMON_OBJECT_SLOT3 = 106,
|
|
SPELL_EFFECT_SUMMON_OBJECT_SLOT4 = 107,
|
|
SPELL_EFFECT_DISPEL_MECHANIC = 108,
|
|
SPELL_EFFECT_SUMMON_DEAD_PET = 109,
|
|
SPELL_EFFECT_DESTROY_ALL_TOTEMS = 110,
|
|
SPELL_EFFECT_DURABILITY_DAMAGE = 111,
|
|
SPELL_EFFECT_SUMMON_DEMON = 112,
|
|
SPELL_EFFECT_RESURRECT_NEW = 113,
|
|
SPELL_EFFECT_ATTACK_ME = 114,
|
|
SPELL_EFFECT_DURABILITY_DAMAGE_PCT = 115,
|
|
SPELL_EFFECT_SKIN_PLAYER_CORPSE = 116,
|
|
SPELL_EFFECT_SPIRIT_HEAL = 117,
|
|
SPELL_EFFECT_SKILL = 118,
|
|
SPELL_EFFECT_APPLY_AREA_AURA_PET = 119,
|
|
SPELL_EFFECT_TELEPORT_GRAVEYARD = 120,
|
|
SPELL_EFFECT_NORMALIZED_WEAPON_DMG = 121,
|
|
SPELL_EFFECT_122 = 122,
|
|
SPELL_EFFECT_SEND_TAXI = 123,
|
|
SPELL_EFFECT_PLAYER_PULL = 124,
|
|
SPELL_EFFECT_MODIFY_THREAT_PERCENT = 125,
|
|
SPELL_EFFECT_126 = 126,
|
|
SPELL_EFFECT_127 = 127,
|
|
// Effets "backportes" depuis MaNGOS BC+.
|
|
SPELL_EFFECT_APPLY_AREA_AURA_FRIEND = 128,
|
|
SPELL_EFFECT_APPLY_AREA_AURA_ENEMY = 129,
|
|
// Custom
|
|
SPELL_EFFECT_DESPAWN_OBJECT = 130,
|
|
SPELL_EFFECT_NOSTALRIUS = 131,
|
|
SPELL_EFFECT_APPLY_AREA_AURA_RAID = 132,
|
|
SPELL_EFFECT_APPLY_AREA_AURA_OWNER = 133,
|
|
TOTAL_SPELL_EFFECTS = 134
|
|
};
|
|
|
|
|
|
enum SpellCastResult : std::uint8_t {
|
|
SPELL_FAILED_AFFECTING_COMBAT = 0, // 0x0
|
|
SPELL_FAILED_ALREADY_AT_FULL_HEALTH = 1, // 0x1
|
|
SPELL_FAILED_ALREADY_AT_FULL_MANA = 2, // 0x2
|
|
SPELL_FAILED_ALREADY_BEING_TAMED = 3, // 0x3
|
|
SPELL_FAILED_ALREADY_HAVE_CHARM = 4, // 0x4
|
|
SPELL_FAILED_ALREADY_HAVE_SUMMON = 5, // 0x5
|
|
SPELL_FAILED_ALREADY_OPEN = 6, // 0x6
|
|
SPELL_FAILED_MORE_POWERFUL_SPELL_ACTIVE = 7, // 0x7
|
|
SPELL_FAILED_BAD_IMPLICIT_TARGETS = 9, // 0x9
|
|
SPELL_FAILED_BAD_TARGETS = 10, // 0xA
|
|
SPELL_FAILED_CANT_BE_CHARMED = 11, // 0xB
|
|
SPELL_FAILED_CANT_BE_DISENCHANTED = 12, // 0xC
|
|
SPELL_FAILED_CANT_BE_PROSPECTED = 13, // 0xD
|
|
SPELL_FAILED_CANT_CAST_ON_TAPPED = 14, // 0xE
|
|
SPELL_FAILED_CANT_DUEL_WHILE_INVISIBLE = 15, // 0xF
|
|
SPELL_FAILED_CANT_DUEL_WHILE_STEALTHED = 16, // 0x10
|
|
SPELL_FAILED_CANT_TOO_CLOSE_TO_ENEMY = 17, // 0x11
|
|
SPELL_FAILED_CANT_DO_THAT_YET = 18, // 0x12
|
|
SPELL_FAILED_CASTER_DEAD = 19, // 0x13
|
|
SPELL_FAILED_CHARMED = 20, // 0x14
|
|
SPELL_FAILED_CHEST_IN_USE = 21, // 0x15
|
|
SPELL_FAILED_CONFUSED = 22, // 0x16
|
|
SPELL_FAILED_DONT_REPORT = 23, // 0x17
|
|
SPELL_FAILED_EQUIPPED_ITEM = 24, // 0x18
|
|
SPELL_FAILED_EQUIPPED_ITEM_CLASS = 25, // 0x19
|
|
SPELL_FAILED_EQUIPPED_ITEM_CLASS_MAINHAND = 26, // 0x1A
|
|
SPELL_FAILED_EQUIPPED_ITEM_CLASS_OFFHAND = 27, // 0x1B
|
|
SPELL_FAILED_ERROR = 28, // 0x1C
|
|
SPELL_FAILED_FIZZLE = 29, // 0x1D
|
|
SPELL_FAILED_FLEEING = 30, // 0x1E
|
|
SPELL_FAILED_FOOD_LOWLEVEL = 31, // 0x1F
|
|
SPELL_FAILED_HIGHLEVEL = 32, // 0x20
|
|
SPELL_FAILED_IMMUNE = 34, // 0x22
|
|
SPELL_FAILED_INTERRUPTED = 35, // 0x23
|
|
SPELL_FAILED_INTERRUPTED_COMBAT = 36, // 0x24
|
|
SPELL_FAILED_ITEM_ALREADY_ENCHANTED = 37, // 0x25
|
|
SPELL_FAILED_ITEM_GONE = 38, // 0x26
|
|
SPELL_FAILED_ENCHANT_NOT_EXISTING_ITEM = 39, // 0x27
|
|
SPELL_FAILED_ITEM_NOT_READY = 40, // 0x28
|
|
SPELL_FAILED_LEVEL_REQUIREMENT = 41, // 0x29
|
|
SPELL_FAILED_LINE_OF_SIGHT = 42, // 0x2A
|
|
SPELL_FAILED_LOWLEVEL = 43, // 0x2B
|
|
SPELL_FAILED_SKILL_NOT_HIGH_ENOUGH = 44, // 0x2C
|
|
SPELL_FAILED_MAINHAND_EMPTY = 45, // 0x2D
|
|
SPELL_FAILED_MOVING = 46, // 0x2E
|
|
SPELL_FAILED_NEED_AMMO = 47, // 0x2F
|
|
SPELL_FAILED_NEED_REQUIRES_SOMETHING = 48, // 0x30
|
|
SPELL_FAILED_NEED_EXOTIC_AMMO = 49, // 0x31
|
|
SPELL_FAILED_NOPATH = 50, // 0x32
|
|
SPELL_FAILED_NOT_BEHIND = 51, // 0x33
|
|
SPELL_FAILED_NOT_FISHABLE = 52, // 0x34
|
|
SPELL_FAILED_NOT_HERE = 53, // 0x35
|
|
SPELL_FAILED_NOT_INFRONT = 54, // 0x36
|
|
SPELL_FAILED_NOT_IN_CONTROL = 55, // 0x37
|
|
SPELL_FAILED_NOT_KNOWN = 56, // 0x38
|
|
SPELL_FAILED_NOT_MOUNTED = 57, // 0x39
|
|
SPELL_FAILED_NOT_ON_TAXI = 58, // 0x3A
|
|
SPELL_FAILED_NOT_ON_TRANSPORT = 59, // 0x3B
|
|
SPELL_FAILED_NOT_READY = 60, // 0x3C
|
|
SPELL_FAILED_NOT_SHAPESHIFT = 61, // 0x3D
|
|
SPELL_FAILED_NOT_STANDING = 62, // 0x3E
|
|
SPELL_FAILED_NOT_TRADEABLE = 63, // 0x3F
|
|
SPELL_FAILED_NOT_TRADING = 64, // 0x40
|
|
SPELL_FAILED_NOT_UNSHEATHED = 65, // 0x41
|
|
SPELL_FAILED_NOT_WHILE_GHOST = 66, // 0x42
|
|
SPELL_FAILED_NO_AMMO = 67, // 0x43
|
|
SPELL_FAILED_NO_CHARGES_REMAIN = 68, // 0x44
|
|
SPELL_FAILED_NO_CHAMPION = 69, // 0x45
|
|
SPELL_FAILED_NO_COMBO_POINTS = 70, // 0x46
|
|
SPELL_FAILED_NO_DUELING = 71, // 0x47
|
|
SPELL_FAILED_NO_ENDURANCE = 72, // 0x48
|
|
SPELL_FAILED_NO_FISH = 73, // 0x49
|
|
SPELL_FAILED_NO_ITEMS_WHILE_SHAPESHIFTED = 74, // 0x4A
|
|
SPELL_FAILED_NO_MOUNTS_ALLOWED = 75, // 0x4B
|
|
SPELL_FAILED_NO_PET = 76, // 0x4C
|
|
SPELL_FAILED_NO_POWER = 77, // 0x4D
|
|
SPELL_FAILED_NOTHING_TO_DISPEL = 78, // 0x4E
|
|
SPELL_FAILED_NOTHING_TO_STEAL = 79, // 0x4F
|
|
SPELL_FAILED_ONLY_ABOVEWATER = 80, // 0x50
|
|
SPELL_FAILED_ONLY_DAYTIME = 81, // 0x51
|
|
SPELL_FAILED_ONLY_INDOORS = 82, // 0x52
|
|
SPELL_FAILED_ONLY_MOUNTED = 83, // 0x53
|
|
SPELL_FAILED_ONLY_NIGHTTIME = 84, // 0x54
|
|
SPELL_FAILED_ONLY_OUTDOORS = 85, // 0x55
|
|
SPELL_FAILED_ONLY_SHAPESHIFT = 86, // 0x56
|
|
SPELL_FAILED_ONLY_STEALTHED = 87, // 0x57
|
|
SPELL_FAILED_ONLY_UNDERWATER = 88, // 0x58
|
|
SPELL_FAILED_OUT_OF_RANGE = 89, // 0x59
|
|
SPELL_FAILED_PACIFIED = 90, // 0x5A
|
|
SPELL_FAILED_POSSESSED = 91, // 0x5B
|
|
SPELL_FAILED_REQUIRES_AREA = 93, // 0x5D
|
|
SPELL_FAILED_REQUIRES_SPELL_FOCUS = 94, // 0x5E
|
|
SPELL_FAILED_ROOTED = 95, // 0x5F
|
|
SPELL_FAILED_SILENCED = 96, // 0x60
|
|
SPELL_FAILED_SPELL_IN_PROGRESS = 97, // 0x61
|
|
SPELL_FAILED_SPELL_LEARNED = 98, // 0x62
|
|
SPELL_FAILED_SPELL_UNAVAILABLE = 99, // 0x63
|
|
SPELL_FAILED_STUNNED = 100, // 0x64
|
|
SPELL_FAILED_TARGETS_DEAD = 101, // 0x65
|
|
SPELL_FAILED_TARGET_AFFECTING_COMBAT = 102, // 0x66
|
|
SPELL_FAILED_TARGET_AURASTATE = 103, // 0x67
|
|
SPELL_FAILED_TARGET_DUELING = 104, // 0x68
|
|
SPELL_FAILED_TARGET_ENEMY = 105, // 0x69
|
|
SPELL_FAILED_TARGET_ENRAGED = 106, // 0x6A
|
|
SPELL_FAILED_TARGET_FRIENDLY = 107, // 0x6B
|
|
SPELL_FAILED_TARGET_IN_COMBAT = 108, // 0x6C
|
|
SPELL_FAILED_TARGET_IS_PLAYER = 109, // 0x6D
|
|
SPELL_FAILED_TARGET_NOT_DEAD = 110, // 0x6E
|
|
SPELL_FAILED_TARGET_NOT_IN_PARTY = 111, // 0x6F
|
|
SPELL_FAILED_TARGET_NOT_LOOTED = 112, // 0x70
|
|
SPELL_FAILED_TARGET_NOT_PLAYER = 113, // 0x71
|
|
SPELL_FAILED_TARGET_NO_POCKETS = 114, // 0x72
|
|
SPELL_FAILED_TARGET_NO_WEAPONS = 115, // 0x73
|
|
SPELL_FAILED_TARGET_UNSKINNABLE = 116, // 0x74
|
|
SPELL_FAILED_THIRST_SATIATED = 117, // 0x75
|
|
SPELL_FAILED_TOO_CLOSE = 118
|
|
};
|
|
|
|
enum HitInfo {
|
|
HITINFO_NORMALSWING = 0,
|
|
HITINFO_UNK0 = 0x1,
|
|
HITINFO_AFFECTS_VICTIM = 0x2,
|
|
HITINFO_LEFTSWING = 0x4,
|
|
HITINFO_UNK3 = 0x8,
|
|
HITINFO_MISS = 0x10,
|
|
HITINFO_ABSORB = 0x20,
|
|
HITINFO_RESIST = 0x40,
|
|
HITINFO_CRITICALHIT = 0x80,
|
|
HITINFO_UNK8 = 0x100,
|
|
HITINFO_UNK9 = 0x2000,
|
|
HITINFO_GLANCING = 0x4000,
|
|
HITINFO_CRUSHING = 0x8000,
|
|
HITINFO_NOACTION = 0x10000,
|
|
HITINFO_SWINGNOHITSOUND = 0x80000
|
|
};
|
|
|
|
enum VictimState {
|
|
VICTIMSTATE_UNAFFECTED = 0, // seen in relation with HITINFO_MISS
|
|
VICTIMSTATE_NORMAL = 1,
|
|
VICTIMSTATE_DODGE = 2,
|
|
VICTIMSTATE_PARRY = 3,
|
|
VICTIMSTATE_INTERRUPT = 4,
|
|
VICTIMSTATE_BLOCKS = 5,
|
|
VICTIMSTATE_EVADES = 6,
|
|
VICTIMSTATE_IS_IMMUNE = 7,
|
|
VICTIMSTATE_DEFLECTS = 8
|
|
};
|
|
|
|
enum SpellAttributes {
|
|
SPELL_ATTR_UNK0 = 0x1,
|
|
SPELL_ATTR_RANGED = 0x2,
|
|
SPELL_ATTR_ON_NEXT_SWING_1 = 0x4,
|
|
SPELL_ATTR_UNK3 = 0x8,
|
|
SPELL_ATTR_ABILITY = 0x10,
|
|
SPELL_ATTR_TRADESPELL = 0x20,
|
|
SPELL_ATTR_PASSIVE = 0x40,
|
|
SPELL_ATTR_HIDDEN_CLIENTSIDE = 0x80,
|
|
SPELL_ATTR_HIDE_IN_COMBAT_LOG = 0x100,
|
|
SPELL_ATTR_TARGET_MAINHAND_ITEM = 0x200,
|
|
SPELL_ATTR_ON_NEXT_SWING_2 = 0x400,
|
|
SPELL_ATTR_UNK11 = 0x800,
|
|
SPELL_ATTR_DAYTIME_ONLY = 0x1000,
|
|
SPELL_ATTR_NIGHT_ONLY = 0x2000,
|
|
SPELL_ATTR_INDOORS_ONLY = 0x4000,
|
|
SPELL_ATTR_OUTDOORS_ONLY = 0x8000,
|
|
SPELL_ATTR_NOT_SHAPESHIFT = 0x10000,
|
|
SPELL_ATTR_ONLY_STEALTHED = 0x20000,
|
|
SPELL_ATTR_DONT_AFFECT_SHEATH_STATE = 0x40000,
|
|
SPELL_ATTR_LEVEL_DAMAGE_CALCULATION = 0x80000,
|
|
SPELL_ATTR_STOP_ATTACK_TARGET = 0x100000,
|
|
SPELL_ATTR_IMPOSSIBLE_DODGE_PARRY_BLOCK = 0x200000,
|
|
SPELL_ATTR_SET_TRACKING_TARGET = 0x400000,
|
|
SPELL_ATTR_CASTABLE_WHILE_DEAD = 0x800000,
|
|
SPELL_ATTR_CASTABLE_WHILE_MOUNTED = 0x1000000,
|
|
SPELL_ATTR_DISABLED_WHILE_ACTIVE = 0x2000000,
|
|
SPELL_ATTR_NEGATIVE = 0x4000000,
|
|
SPELL_ATTR_CASTABLE_WHILE_SITTING = 0x8000000,
|
|
SPELL_ATTR_CANT_USED_IN_COMBAT = 0x10000000,
|
|
SPELL_ATTR_UNAFFECTED_BY_INVULNERABILITY = 0x20000000,
|
|
SPELL_ATTR_UNK30 = 0x40000000,
|
|
SPELL_ATTR_CANT_CANCEL = 0x80000000,
|
|
};
|
|
|
|
enum SpellAttributesEx {
|
|
SPELL_ATTR_EX_DISMISS_PET_FIRST = 0x00000001,
|
|
// 0 For spells without this flag client doesn't allow to summon pet if caster has a pet
|
|
SPELL_ATTR_EX_USE_ALL_MANA = 0x00000002, // 1 Use all power (Only paladin Lay of Hands and Bunyanize)
|
|
SPELL_ATTR_EX_IS_CHANNELED = 0x00000004, // 2
|
|
SPELL_ATTR_EX_NO_REDIRECTION = 0x00000008, // 3
|
|
SPELL_ATTR_EX_NO_SKILL_INCREASE = 0x00000010, // 4 Only assigned to stealth spells for some reason
|
|
SPELL_ATTR_EX_ALLOW_WHILE_STEALTHED = 0x00000020, // 5 Does not break stealth
|
|
SPELL_ATTR_EX_IS_SELF_CHANNELED = 0x00000040, // 6
|
|
SPELL_ATTR_EX_NO_REFLECTION = 0x00000080, // 7
|
|
SPELL_ATTR_EX_ONLY_PEACEFUL_TARGETS = 0x00000100, // 8 Target must not be in combat
|
|
SPELL_ATTR_EX_INITIATES_COMBAT = 0x00000200, // 9 Enables Auto-Attack
|
|
SPELL_ATTR_EX_NO_THREAT = 0x00000400, // 10
|
|
SPELL_ATTR_EX_AURA_UNIQUE = 0x00000800, // 11
|
|
SPELL_ATTR_EX_FAILURE_BREAKS_STEALTH = 0x00001000, // 12
|
|
SPELL_ATTR_EX_TOGGLE_FARSIGHT = 0x00002000, // 13
|
|
SPELL_ATTR_EX_TRACK_TARGET_IN_CHANNEL = 0x00004000,
|
|
// 14 Client automatically forces player to face target when channeling
|
|
SPELL_ATTR_EX_IMMUNITY_PURGES_EFFECT = 0x00008000, // 15 Remove auras on immunity
|
|
SPELL_ATTR_EX_IMMUNITY_TO_HOSTILE_AND_FRIENDLY_EFFECTS = 0x00010000,
|
|
// 16 Aura that provides immunity prevents positive effects too
|
|
SPELL_ATTR_EX_NO_AUTOCAST_AI = 0x00020000, // 17
|
|
SPELL_ATTR_EX_PREVENTS_ANIM = 0x00040000, // 18 Stun, polymorph, daze, sleep
|
|
SPELL_ATTR_EX_EXCLUDE_CASTER = 0x00080000, // 19
|
|
SPELL_ATTR_EX_FINISHING_MOVE_DAMAGE = 0x00100000, // 20 Uses combo points
|
|
SPELL_ATTR_EX_THREAT_ONLY_ON_MISS = 0x00200000, // 21
|
|
SPELL_ATTR_EX_FINISHING_MOVE_DURATION = 0x00400000,
|
|
// 22 Uses combo points (in 4.x not required combo point target selected)
|
|
SPELL_ATTR_EX_IGNORE_CASTER_AND_TARGET_RESTRICTIONS = 0x00800000,
|
|
// 23 Skips all cast checks, moved to AttributesEx3 after 1.10 (100% correlation)
|
|
SPELL_ATTR_EX_SPECIAL_SKILLUP = 0x01000000, // 24 Only fishing spells
|
|
SPELL_ATTR_EX_UNK25 = 0x02000000, // 25 Different in vanilla
|
|
SPELL_ATTR_EX_REQUIRE_ALL_TARGETS = 0x04000000, // 26
|
|
SPELL_ATTR_EX_DISCOUNT_POWER_ON_MISS = 0x08000000, // 27 All these spells refund power on parry or deflect
|
|
SPELL_ATTR_EX_NO_AURA_ICON = 0x10000000, // 28 Client doesn't display these spells in aura bar
|
|
SPELL_ATTR_EX_NAME_IN_CHANNEL_BAR = 0x20000000,
|
|
// 29 Spell name is displayed in cast bar instead of 'channeling' text
|
|
SPELL_ATTR_EX_COMBO_ON_BLOCK = 0x40000000, // 30 Overpower
|
|
SPELL_ATTR_EX_CAST_WHEN_LEARNED = 0x80000000 // 31
|
|
};
|
|
|
|
enum SpellAttributesEx2 {
|
|
SPELL_ATTR_EX2_ALLOW_DEAD_TARGET = 0x00000001, // 0 Can target dead unit or corpse
|
|
SPELL_ATTR_EX2_NO_SHAPESHIFT_UI = 0x00000002, // 1
|
|
SPELL_ATTR_EX2_IGNORE_LINE_OF_SIGHT = 0x00000004, // 2
|
|
SPELL_ATTR_EX2_ALLOW_LOW_LEVEL_BUFF = 0x00000008, // 3
|
|
SPELL_ATTR_EX2_USE_SHAPESHIFT_BAR = 0x00000010,
|
|
// 4 Client displays icon in stance bar when learned, even if not shapeshift
|
|
SPELL_ATTR_EX2_AUTO_REPEAT = 0x00000020, // 5
|
|
SPELL_ATTR_EX2_CANNOT_CAST_ON_TAPPED = 0x00000040, // 6 Target must be tapped by caster
|
|
SPELL_ATTR_EX2_DO_NOT_REPORT_SPELL_FAILURE = 0x00000080, // 7
|
|
SPELL_ATTR_EX2_UNK8 = 0x00000100, // 8 Unused
|
|
SPELL_ATTR_EX2_UNK9 = 0x00000200, // 9 Unused
|
|
SPELL_ATTR_EX2_SPECIAL_TAMING_FLAG = 0x00000400, // 10
|
|
SPELL_ATTR_EX2_NO_TARGET_PER_SECOND_COSTS = 0x00000800, // 11
|
|
SPELL_ATTR_EX2_CHAIN_FROM_CASTER = 0x00001000, // 12
|
|
SPELL_ATTR_EX2_ENCHANT_OWN_ITEM_ONLY = 0x00002000, // 13
|
|
SPELL_ATTR_EX2_ALLOW_WHILE_INVISIBLE = 0x00004000, // 14
|
|
SPELL_ATTR_EX2_ENABLE_AFTER_PARRY = 0x00008000, // 15 Deprecated in patch 1.8 and moved to CasterAuraState
|
|
SPELL_ATTR_EX2_NO_ACTIVE_PETS = 0x00010000, // 16
|
|
SPELL_ATTR_EX2_DO_NOT_RESET_COMBAT_TIMERS = 0x00020000,
|
|
// 17 Don't reset timers for melee autoattacks (swings) or ranged autoattacks (autoshoots)
|
|
SPELL_ATTR_EX2_REQ_DEAD_PET = 0x00040000, // 18 Only Revive pet has it
|
|
SPELL_ATTR_EX2_ALLOW_WHILE_NOT_SHAPESHIFTED = 0x00080000,
|
|
// 19 Does not necessary need shapeshift (pre-3.x not have passive spells with this attribute)
|
|
SPELL_ATTR_EX2_INITIATE_COMBAT_POST_CAST = 0x00100000,
|
|
// 20 Client will send CMSG_ATTACK_SWING after SMSG_SPELL_GO
|
|
SPELL_ATTR_EX2_FAIL_ON_ALL_TARGETS_IMMUNE = 0x00200000,
|
|
// 21 For ice blocks, pala immunity buffs, priest absorb shields
|
|
SPELL_ATTR_EX2_NO_INITIAL_THREAT = 0x00400000, // 22
|
|
SPELL_ATTR_EX2_PROC_COOLDOWN_ON_FAILURE = 0x00800000, // 23
|
|
SPELL_ATTR_EX2_ITEM_CAST_WITH_OWNER_SKILL = 0x01000000, // 24 NYI
|
|
SPELL_ATTR_EX2_DONT_BLOCK_MANA_REGEN = 0x02000000, // 25
|
|
SPELL_ATTR_EX2_NO_SCHOOL_IMMUNITIES = 0x04000000, // 26
|
|
SPELL_ATTR_EX2_IGNORE_WEAPONSKILL = 0x08000000, // 27 NYI (only fishing has it)
|
|
SPELL_ATTR_EX2_NOT_AN_ACTION = 0x10000000, // 28
|
|
SPELL_ATTR_EX2_CANT_CRIT = 0x20000000, // 29
|
|
SPELL_ATTR_EX2_ACTIVE_THREAT = 0x40000000, // 30 Caster is put in combat for 5.5 seconds on cast at enemy unit
|
|
SPELL_ATTR_EX2_RETAIN_ITEM_CAST = 0x80000000 // 31 Food or Drink Buff (like Well Fed)
|
|
};
|
|
|
|
enum SpellAttributesEx3 {
|
|
SPELL_ATTR_EX3_PVP_ENABLING = 0x00000001,
|
|
// 0 Spell landed counts as hostile action against enemy even if it doesn't trigger combat state, propagates PvP flags
|
|
SPELL_ATTR_EX3_NO_PROC_EQUIP_REQUIREMENT = 0x00000002, // 1
|
|
SPELL_ATTR_EX3_NO_CASTING_BAR_TEXT = 0x00000004, // 2
|
|
SPELL_ATTR_EX3_COMPLETELY_BLOCKED = 0x00000008, // 3 All effects prevented on block
|
|
SPELL_ATTR_EX3_NO_RES_TIMER = 0x00000010,
|
|
// 4 Corpse reclaim delay does not apply to accepting resurrection (only Rebirth has it)
|
|
SPELL_ATTR_EX3_NO_DURABILITY_LOSS = 0x00000020, // 5
|
|
SPELL_ATTR_EX3_NO_AVOIDANCE = 0x00000040, // 6 Persistent Area Aura not removed on leaving radius
|
|
SPELL_ATTR_EX3_DOT_STACKING_RULE = 0x00000080, // 7 Create a separate (de)buff stack for each caster
|
|
SPELL_ATTR_EX3_ONLY_ON_PLAYER = 0x00000100, // 8 Can target only players
|
|
SPELL_ATTR_EX3_NOT_A_PROC = 0x00000200, // 9 Aura periodic trigger is not evaluated as triggered
|
|
SPELL_ATTR_EX3_REQUIRES_MAIN_HAND_WEAPON = 0x00000400, // 10
|
|
SPELL_ATTR_EX3_ONLY_BATTLEGROUNDS = 0x00000800, // 11
|
|
SPELL_ATTR_EX3_ONLY_ON_GHOSTS = 0x00001000, // 12
|
|
SPELL_ATTR_EX3_HIDE_CHANNEL_BAR = 0x00002000, // 13 Client will not display channeling bar
|
|
SPELL_ATTR_EX3_HIDE_IN_RAID_FILTER = 0x00004000, // 14 Only "Honorless Target" has this flag
|
|
SPELL_ATTR_EX3_NORMAL_RANGED_ATTACK = 0x00008000,
|
|
// 15 Spells with this attribute are processed as ranged attacks in client
|
|
SPELL_ATTR_EX3_SUPPRESS_CASTER_PROCS = 0x00010000, // 16
|
|
SPELL_ATTR_EX3_SUPPRESS_TARGET_PROCS = 0x00020000, // 17
|
|
SPELL_ATTR_EX3_ALWAYS_HIT = 0x00040000, // 18 Spell should always hit its target
|
|
SPELL_ATTR_EX3_INSTANT_TARGET_PROCS = 0x00080000, // 19 Related to spell batching
|
|
SPELL_ATTR_EX3_ALLOW_AURA_WHILE_DEAD = 0x00100000, // 20 Death persistent spells
|
|
SPELL_ATTR_EX3_ONLY_PROC_OUTDOORS = 0x00200000, // 21
|
|
SPELL_ATTR_EX3_CASTING_CANCELS_AUTOREPEAT = 0x00400000, // 22 NYI (only Shoot with Wand has it)
|
|
SPELL_ATTR_EX3_NO_DAMAGE_HISTORY = 0x00800000, // 23 NYI
|
|
SPELL_ATTR_EX3_REQUIRES_OFFHAND_WEAPON = 0x01000000, // 24
|
|
SPELL_ATTR_EX3_TREAT_AS_PERIODIC = 0x02000000, // 25 Does not cause spell pushback
|
|
SPELL_ATTR_EX3_CAN_PROC_FROM_PROCS = 0x04000000,
|
|
// 26 Auras with this attribute can proc off procced spells (periodic triggers etc)
|
|
SPELL_ATTR_EX3_ONLY_PROC_ON_CASTER = 0x08000000, // 27
|
|
SPELL_ATTR_EX3_IGNORE_CASTER_AND_TARGET_RESTRICTIONS = 0x10000000,
|
|
// 28 Skips all cast checks, moved from AttributesEx after 1.10 (100% correlation)
|
|
SPELL_ATTR_EX3_IGNORE_CASTER_MODIFIERS = 0x20000000, // 29
|
|
SPELL_ATTR_EX3_DO_NOT_DISPLAY_RANGE = 0x40000000, // 30
|
|
SPELL_ATTR_EX3_NOT_ON_AOE_IMMUNE = 0x80000000 // 31
|
|
};
|
|
|
|
enum SpellAttributesEx4 {
|
|
SPELL_ATTR_EX4_IGNORE_RESISTANCES = 0x00000001,
|
|
// 0 From TC 3.3.5, but not present in 1.12 native DBCs. Add it with spell_mod to prevent a spell from being resisted.
|
|
SPELL_ATTR_EX4_CLASS_TRIGGER_ONLY_ON_TARGET = 0x00000002, // 1
|
|
SPELL_ATTR_EX4_AURA_EXPIRES_OFFLINE = 0x00000004, // 2 Aura continues to expire while player is offline
|
|
SPELL_ATTR_EX4_NO_HELPFUL_THREAT = 0x00000008, // 3
|
|
SPELL_ATTR_EX4_NO_HARMFUL_THREAT = 0x00000010, // 4
|
|
SPELL_ATTR_EX4_ALLOW_CLIENT_TARGETING = 0x00000020, // 5 NYI
|
|
SPELL_ATTR_EX4_CANNOT_BE_STOLEN = 0x00000040, // 6 Unused
|
|
SPELL_ATTR_EX4_CAN_CAST_WHILE_CASTING = 0x00000080, // 7 NYI (does not seem to work client side either)
|
|
SPELL_ATTR_EX4_IGNORE_DAMAGE_TAKEN_MODIFIERS = 0x00000100, // 8
|
|
SPELL_ATTR_EX4_COMBAT_FEEDBACK_WHEN_USABLE = 0x00000200,
|
|
// 9 Initially disabled / Trigger activate from event (Execute, Riposte, Deep Freeze...)
|
|
};
|
|
|
|
// Custom flags assigned in the db
|
|
enum SpellAttributesCustom {
|
|
SPELL_CUSTOM_NONE = 0x000,
|
|
SPELL_CUSTOM_ALLOW_STACK_BETWEEN_CASTER = 0x001,
|
|
// For example 'Siphon Soul' must be able to stack between the warlocks on a mob
|
|
SPELL_CUSTOM_NEGATIVE = 0x002,
|
|
SPELL_CUSTOM_POSITIVE = 0x004,
|
|
SPELL_CUSTOM_CHAN_NO_DIST_LIMIT = 0x008,
|
|
SPELL_CUSTOM_FIXED_DAMAGE = 0x010, // Not affected by damage/healing done bonus
|
|
SPELL_CUSTOM_IGNORE_ARMOR = 0x020,
|
|
SPELL_CUSTOM_BEHIND_TARGET = 0x040, // For spells that require the caster to be behind the target
|
|
SPELL_CUSTOM_FACE_TARGET = 0x080, // For spells that require the target to be in front of the caster
|
|
SPELL_CUSTOM_SINGLE_TARGET_AURA = 0x100, // Aura applied by spell can only be on 1 target at a time
|
|
SPELL_CUSTOM_AURA_APPLY_BREAKS_STEALTH = 0x200, // Stealth is removed when this aura is applied
|
|
SPELL_CUSTOM_NOT_REMOVED_ON_EVADE = 0x400, // Aura persists after creature evades
|
|
SPELL_CUSTOM_SEND_CHANNEL_VISUAL = 0x800, // Will periodically send the channeling spell visual kit
|
|
SPELL_CUSTOM_SEPARATE_AURA_PER_CASTER = 0x1000,
|
|
// Each caster has his own aura slot, instead of replacing others
|
|
};
|
|
|
|
enum SpellTarget {
|
|
TARGET_NONE = 0,
|
|
TARGET_UNIT_CASTER = 1,
|
|
TARGET_UNIT_ENEMY_NEAR_CASTER = 2,
|
|
TARGET_UNIT_FRIEND_NEAR_CASTER = 3,
|
|
TARGET_UNIT_NEAR_CASTER = 4,
|
|
TARGET_UNIT_CASTER_PET = 5,
|
|
TARGET_UNIT_ENEMY = 6,
|
|
TARGET_ENUM_UNITS_SCRIPT_AOE_AT_SRC_LOC = 7,
|
|
TARGET_ENUM_UNITS_SCRIPT_AOE_AT_DEST_LOC = 8,
|
|
TARGET_LOCATION_CASTER_HOME_BIND = 9,
|
|
TARGET_LOCATION_CASTER_DIVINE_BIND_NYI = 10,
|
|
TARGET_PLAYER_NYI = 11,
|
|
TARGET_PLAYER_NEAR_CASTER_NYI = 12,
|
|
TARGET_PLAYER_ENEMY_NYI = 13,
|
|
TARGET_PLAYER_FRIEND_NYI = 14,
|
|
TARGET_ENUM_UNITS_ENEMY_AOE_AT_SRC_LOC = 15,
|
|
TARGET_ENUM_UNITS_ENEMY_AOE_AT_DEST_LOC = 16,
|
|
TARGET_LOCATION_DATABASE = 17,
|
|
TARGET_LOCATION_CASTER_DEST = 18,
|
|
TARGET_UNK_19 = 19,
|
|
TARGET_ENUM_UNITS_PARTY_WITHIN_CASTER_RANGE = 20,
|
|
TARGET_UNIT_FRIEND = 21,
|
|
TARGET_LOCATION_CASTER_SRC = 22,
|
|
TARGET_GAMEOBJECT = 23,
|
|
TARGET_ENUM_UNITS_ENEMY_IN_CONE_24 = 24,
|
|
TARGET_UNIT = 25,
|
|
TARGET_LOCKED = 26,
|
|
TARGET_UNIT_CASTER_MASTER = 27,
|
|
TARGET_ENUM_UNITS_ENEMY_AOE_AT_DYNOBJ_LOC = 28,
|
|
TARGET_ENUM_UNITS_FRIEND_AOE_AT_DYNOBJ_LOC = 29,
|
|
TARGET_ENUM_UNITS_FRIEND_AOE_AT_SRC_LOC = 30,
|
|
TARGET_ENUM_UNITS_FRIEND_AOE_AT_DEST_LOC = 31,
|
|
TARGET_LOCATION_UNIT_MINION_POSITION = 32,
|
|
TARGET_ENUM_UNITS_PARTY_AOE_AT_SRC_LOC = 33,
|
|
TARGET_ENUM_UNITS_PARTY_AOE_AT_DEST_LOC = 34,
|
|
TARGET_UNIT_PARTY = 35,
|
|
TARGET_ENUM_UNITS_ENEMY_WITHIN_CASTER_RANGE = 36, // TODO: only used with dest-effects - reinvestigate naming
|
|
TARGET_UNIT_FRIEND_AND_PARTY = 37,
|
|
TARGET_UNIT_SCRIPT_NEAR_CASTER = 38,
|
|
TARGET_LOCATION_CASTER_FISHING_SPOT = 39,
|
|
TARGET_GAMEOBJECT_SCRIPT_NEAR_CASTER = 40,
|
|
TARGET_LOCATION_CASTER_FRONT_RIGHT = 41,
|
|
TARGET_LOCATION_CASTER_BACK_RIGHT = 42,
|
|
TARGET_LOCATION_CASTER_BACK_LEFT = 43,
|
|
TARGET_LOCATION_CASTER_FRONT_LEFT = 44,
|
|
TARGET_UNIT_FRIEND_CHAIN_HEAL = 45,
|
|
TARGET_LOCATION_SCRIPT_NEAR_CASTER = 46,
|
|
TARGET_LOCATION_CASTER_FRONT = 47,
|
|
TARGET_LOCATION_CASTER_BACK = 48,
|
|
TARGET_LOCATION_CASTER_LEFT = 49,
|
|
TARGET_LOCATION_CASTER_RIGHT = 50,
|
|
TARGET_ENUM_GAMEOBJECTS_SCRIPT_AOE_AT_SRC_LOC = 51,
|
|
TARGET_ENUM_GAMEOBJECTS_SCRIPT_AOE_AT_DEST_LOC = 52,
|
|
TARGET_LOCATION_CASTER_TARGET_POSITION = 53,
|
|
TARGET_ENUM_UNITS_ENEMY_IN_CONE_54 = 54,
|
|
TARGET_LOCATION_CASTER_FRONT_LEAP = 55,
|
|
TARGET_ENUM_UNITS_RAID_WITHIN_CASTER_RANGE = 56,
|
|
TARGET_UNIT_RAID = 57,
|
|
TARGET_UNIT_RAID_NEAR_CASTER = 58,
|
|
TARGET_ENUM_UNITS_FRIEND_IN_CONE = 59,
|
|
TARGET_ENUM_UNITS_SCRIPT_IN_CONE_60 = 60,
|
|
TARGET_UNIT_RAID_AND_CLASS = 61,
|
|
TARGET_PLAYER_RAID_NYI = 62,
|
|
TARGET_LOCATION_UNIT_POSITION = 63,
|
|
|
|
MAX_SPELL_TARGETS
|
|
};
|
|
|
|
enum SpellMissInfo
|
|
{
|
|
SPELL_MISS_NONE = 0,
|
|
SPELL_MISS_MISS = 1,
|
|
SPELL_MISS_RESIST = 2,
|
|
SPELL_MISS_DODGE = 3,
|
|
SPELL_MISS_PARRY = 4,
|
|
SPELL_MISS_BLOCK = 5,
|
|
SPELL_MISS_EVADE = 6,
|
|
SPELL_MISS_IMMUNE = 7,
|
|
SPELL_MISS_IMMUNE2 = 8,
|
|
SPELL_MISS_DEFLECT = 9,
|
|
SPELL_MISS_ABSORB = 10,
|
|
SPELL_MISS_REFLECT = 11
|
|
};
|
|
|
|
enum SpellHitType
|
|
{
|
|
SPELL_HIT_TYPE_CRIT_DEBUG = 0x01,
|
|
SPELL_HIT_TYPE_CRIT = 0x02,
|
|
SPELL_HIT_TYPE_HIT_DEBUG = 0x04,
|
|
SPELL_HIT_TYPE_SPLIT = 0x08,
|
|
SPELL_HIT_TYPE_VICTIM_IS_ATTACKER = 0x10,
|
|
SPELL_HIT_TYPE_ATTACK_TABLE_DEBUG = 0x20
|
|
};
|
|
|
|
enum SpellDmgClass
|
|
{
|
|
SPELL_DAMAGE_CLASS_NONE = 0,
|
|
SPELL_DAMAGE_CLASS_MAGIC = 1,
|
|
SPELL_DAMAGE_CLASS_MELEE = 2,
|
|
SPELL_DAMAGE_CLASS_RANGED = 3
|
|
};
|
|
|
|
enum SpellPreventionType
|
|
{
|
|
SPELL_PREVENTION_TYPE_NONE = 0,
|
|
SPELL_PREVENTION_TYPE_SILENCE = 1,
|
|
SPELL_PREVENTION_TYPE_PACIFY = 2
|
|
};
|
|
|
|
enum SpellCastFlags
|
|
{
|
|
CAST_FLAG_NONE = 0x00000000,
|
|
CAST_FLAG_HIDDEN_COMBATLOG = 0x00000001, // hide in combat log?
|
|
CAST_FLAG_UNKNOWN2 = 0x00000002,
|
|
CAST_FLAG_UNKNOWN3 = 0x00000004,
|
|
CAST_FLAG_UNKNOWN4 = 0x00000008,
|
|
CAST_FLAG_UNKNOWN5 = 0x00000010,
|
|
CAST_FLAG_AMMO = 0x00000020, // Projectiles visual
|
|
CAST_FLAG_UNKNOWN7 = 0x00000040, // !0x41 mask used to call CGTradeSkillInfo::DoRecast
|
|
CAST_FLAG_UNKNOWN8 = 0x00000080,
|
|
CAST_FLAG_UNKNOWN9 = 0x00000100,
|
|
};
|
|
|
|
// SpellEntry::Targets
|
|
enum SpellCastTargetFlags {
|
|
TARGET_FLAG_SELF = 0x00000000,
|
|
TARGET_FLAG_UNUSED1 = 0x00000001, // not used in any spells (can be set dynamically)
|
|
TARGET_FLAG_UNIT = 0x00000002, // pguid
|
|
TARGET_FLAG_UNUSED2 = 0x00000004, // not used in any spells (can be set dynamically)
|
|
TARGET_FLAG_UNUSED3 = 0x00000008, // not used in any spells (can be set dynamically)
|
|
TARGET_FLAG_ITEM = 0x00000010, // pguid
|
|
TARGET_FLAG_SOURCE_LOCATION = 0x00000020, // 3 float
|
|
TARGET_FLAG_DEST_LOCATION = 0x00000040, // 3 float
|
|
TARGET_FLAG_OBJECT_UNK = 0x00000080, // used in 7 spells only
|
|
TARGET_FLAG_UNIT_UNK = 0x00000100, // looks like self target (389 spells)
|
|
TARGET_FLAG_PVP_CORPSE = 0x00000200, // pguid
|
|
TARGET_FLAG_UNIT_CORPSE = 0x00000400, // 10 spells (gathering professions)
|
|
TARGET_FLAG_OBJECT = 0x00000800, // pguid, 0 spells
|
|
TARGET_FLAG_TRADE_ITEM = 0x00001000, // pguid, 0 spells
|
|
TARGET_FLAG_STRING = 0x00002000, // string, 0 spells
|
|
TARGET_FLAG_UNK1 = 0x00004000, // 199 spells, opening object/lock
|
|
TARGET_FLAG_CORPSE = 0x00008000, // pguid, resurrection spells
|
|
TARGET_FLAG_UNK2 = 0x00010000, // pguid, not used in any spells (can be set dynamically)
|
|
};
|
|
|
|
enum Events : std::uint32_t {
|
|
UNIT_NAME_UPDATE = 183,
|
|
UNIT_PORTRAIT_UPDATE = 184,
|
|
UNIT_MODEL_CHANGED = 185,
|
|
UNIT_INVENTORY_CHANGED = 186,
|
|
UNIT_CLASSIFICATION_CHANGED = 187,
|
|
ITEM_LOCK_CHANGED = 188,
|
|
PLAYER_XP_UPDATE = 189,
|
|
PLAYER_REGEN_DISABLED = 190,
|
|
PLAYER_REGEN_ENABLED = 191,
|
|
PLAYER_AURAS_CHANGED = 192,
|
|
PLAYER_ENTER_COMBAT = 193,
|
|
PLAYER_LEAVE_COMBAT = 194,
|
|
PLAYER_TARGET_CHANGED = 195,
|
|
PLAYER_CONTROL_LOST = 196,
|
|
PLAYER_CONTROL_GAINED = 197,
|
|
PLAYER_FARSIGHT_FOCUS_CHANGED = 198,
|
|
PLAYER_LEVEL_UP = 199,
|
|
PLAYER_MONEY = 200,
|
|
PLAYER_DAMAGE_DONE_MODS = 201,
|
|
PLAYER_COMBO_POINTS = 202,
|
|
ZONE_CHANGED = 203,
|
|
ZONE_CHANGED_INDOORS = 204,
|
|
ZONE_CHANGED_NEW_AREA = 205,
|
|
MINIMAP_ZONE_CHANGED = 206,
|
|
MINIMAP_UPDATE_ZOOM = 207,
|
|
SCREENSHOT_SUCCEEDED = 208,
|
|
SCREENSHOT_FAILED = 209,
|
|
ACTIONBAR_SHOWGRID = 210,
|
|
ACTIONBAR_HIDEGRID = 211,
|
|
ACTIONBAR_PAGE_CHANGED = 212,
|
|
ACTIONBAR_SLOT_CHANGED = 213,
|
|
ACTIONBAR_UPDATE_STATE = 214,
|
|
ACTIONBAR_UPDATE_USABLE = 215,
|
|
ACTIONBAR_UPDATE_COOLDOWN = 216,
|
|
UPDATE_BONUS_ACTIONBAR = 217,
|
|
PARTY_MEMBERS_CHANGED = 218,
|
|
PARTY_LEADER_CHANGED = 219,
|
|
PARTY_MEMBER_ENABLE = 220,
|
|
PARTY_MEMBER_DISABLE = 221,
|
|
PARTY_LOOT_METHOD_CHANGED = 222,
|
|
SYSMSG = 223,
|
|
UI_ERROR_MESSAGE = 224,
|
|
UI_INFO_MESSAGE = 225,
|
|
UPDATE_CHAT_COLOR = 226,
|
|
CHAT_MSG_ADDON = 227,
|
|
CHAT_MSG_SAY = 228,
|
|
CHAT_MSG_PARTY = 229,
|
|
CHAT_MSG_RAID = 230,
|
|
CHAT_MSG_GUILD = 231,
|
|
CHAT_MSG_OFFICER = 232,
|
|
CHAT_MSG_YELL = 233,
|
|
CHAT_MSG_WHISPER = 234,
|
|
CHAT_MSG_WHISPER_INFORM = 235,
|
|
CHAT_MSG_EMOTE = 236,
|
|
CHAT_MSG_TEXT_EMOTE = 237,
|
|
CHAT_MSG_SYSTEM = 238,
|
|
CHAT_MSG_MONSTER_SAY = 239,
|
|
CHAT_MSG_MONSTER_YELL = 240,
|
|
CHAT_MSG_MONSTER_WHISPER = 241,
|
|
CHAT_MSG_MONSTER_EMOTE = 242,
|
|
CHAT_MSG_CHANNEL = 243,
|
|
CHAT_MSG_CHANNEL_JOIN = 244,
|
|
CHAT_MSG_CHANNEL_LEAVE = 245,
|
|
CHAT_MSG_CHANNEL_LIST = 246,
|
|
CHAT_MSG_CHANNEL_NOTICE = 247,
|
|
CHAT_MSG_CHANNEL_NOTICE_USER = 248,
|
|
CHAT_MSG_AFK = 249,
|
|
CHAT_MSG_DND = 250,
|
|
CHAT_MSG_COMBAT_LOG = 251,
|
|
CHAT_MSG_IGNORED = 252,
|
|
CHAT_MSG_SKILL = 253,
|
|
CHAT_MSG_LOOT = 254,
|
|
CHAT_MSG_MONEY = 255,
|
|
CHAT_MSG_RAID_LEADER = 256,
|
|
CHAT_MSG_RAID_WARNING = 257,
|
|
LANGUAGE_LIST_CHANGED = 258,
|
|
TIME_PLAYED_MSG = 259,
|
|
SPELLS_CHANGED = 260,
|
|
CURRENT_SPELL_CAST_CHANGED = 261,
|
|
SPELL_UPDATE_COOLDOWN = 262,
|
|
SPELL_UPDATE_USABLE = 263,
|
|
CHARACTER_POINTS_CHANGED = 264,
|
|
SKILL_LINES_CHANGED = 265,
|
|
ITEM_PUSH = 266,
|
|
LOOT_OPENED = 267,
|
|
LOOT_SLOT_CLEARED = 268,
|
|
LOOT_CLOSED = 269,
|
|
PLAYER_LOGIN = 270,
|
|
PLAYER_LOGOUT = 271,
|
|
PLAYER_ENTERING_WORLD = 272,
|
|
PLAYER_LEAVING_WORLD = 273,
|
|
PLAYER_ALIVE = 274,
|
|
PLAYER_DEAD = 275,
|
|
PLAYER_CAMPING = 276,
|
|
PLAYER_QUITING = 277,
|
|
LOGOUT_CANCEL = 278,
|
|
RESURRECT_REQUEST = 279,
|
|
PARTY_INVITE_REQUEST = 280,
|
|
PARTY_INVITE_CANCEL = 281,
|
|
GUILD_INVITE_REQUEST = 282,
|
|
GUILD_INVITE_CANCEL = 283,
|
|
GUILD_MOTD = 284,
|
|
TRADE_REQUEST = 285,
|
|
TRADE_REQUEST_CANCEL = 286,
|
|
LOOT_BIND_CONFIRM = 287,
|
|
EQUIP_BIND_CONFIRM = 288,
|
|
AUTOEQUIP_BIND_CONFIRM = 289,
|
|
USE_BIND_CONFIRM = 290,
|
|
DELETE_ITEM_CONFIRM = 291,
|
|
CURSOR_UPDATE = 292,
|
|
ITEM_TEXT_BEGIN = 293,
|
|
ITEM_TEXT_TRANSLATION = 294,
|
|
ITEM_TEXT_READY = 295,
|
|
ITEM_TEXT_CLOSED = 296,
|
|
GOSSIP_SHOW = 297,
|
|
GOSSIP_ENTER_CODE = 298,
|
|
GOSSIP_CLOSED = 299,
|
|
QUEST_GREETING = 300,
|
|
QUEST_DETAIL = 301,
|
|
QUEST_PROGRESS = 302,
|
|
QUEST_COMPLETE = 303,
|
|
QUEST_FINISHED = 304,
|
|
QUEST_ITEM_UPDATE = 305,
|
|
TAXIMAP_OPENED = 306,
|
|
TAXIMAP_CLOSED = 307,
|
|
QUEST_LOG_UPDATE = 308,
|
|
TRAINER_SHOW = 309,
|
|
TRAINER_UPDATE = 310,
|
|
TRAINER_CLOSED = 311,
|
|
CVAR_UPDATE = 312,
|
|
TRADE_SKILL_SHOW = 313,
|
|
TRADE_SKILL_UPDATE = 314,
|
|
TRADE_SKILL_CLOSE = 315,
|
|
MERCHANT_SHOW = 316,
|
|
MERCHANT_UPDATE = 317,
|
|
MERCHANT_CLOSED = 318,
|
|
TRADE_SHOW = 319,
|
|
TRADE_CLOSED = 320,
|
|
TRADE_UPDATE = 321,
|
|
TRADE_ACCEPT_UPDATE = 322,
|
|
TRADE_TARGET_ITEM_CHANGED = 323,
|
|
TRADE_PLAYER_ITEM_CHANGED = 324,
|
|
TRADE_MONEY_CHANGED = 325,
|
|
PLAYER_TRADE_MONEY = 326,
|
|
BAG_OPEN = 327,
|
|
BAG_UPDATE = 328,
|
|
BAG_CLOSED = 329,
|
|
BAG_UPDATE_COOLDOWN = 330,
|
|
LOCALPLAYER_PET_RENAMED = 331,
|
|
UNIT_ATTACK = 332,
|
|
UNIT_DEFENSE = 333,
|
|
PET_ATTACK_START = 334,
|
|
PET_ATTACK_STOP = 335,
|
|
UPDATE_MOUSEOVER_UNIT = 336,
|
|
SPELLCAST_START = 337,
|
|
SPELLCAST_STOP = 338,
|
|
SPELLCAST_FAILED = 339,
|
|
SPELLCAST_INTERRUPTED = 340,
|
|
SPELLCAST_DELAYED = 341,
|
|
SPELLCAST_CHANNEL_START = 342,
|
|
SPELLCAST_CHANNEL_UPDATE = 343,
|
|
SPELLCAST_CHANNEL_STOP = 344,
|
|
PLAYER_GUILD_UPDATE = 345,
|
|
QUEST_ACCEPT_CONFIRM = 346,
|
|
PLAYERBANKSLOTS_CHANGED = 347,
|
|
BANKFRAME_OPENED = 348,
|
|
BANKFRAME_CLOSED = 349,
|
|
PLAYERBANKBAGSLOTS_CHANGED = 350,
|
|
FRIENDLIST_UPDATE = 351,
|
|
IGNORELIST_UPDATE = 352,
|
|
PET_BAR_UPDATE_COOLDOWN = 354,
|
|
PET_BAR_UPDATE = 353,
|
|
PET_BAR_SHOWGRID = 355,
|
|
PET_BAR_HIDEGRID = 356,
|
|
MINIMAP_PING = 357,
|
|
CHAT_MSG_COMBAT_MISC_INFO = 358,
|
|
CRAFT_SHOW = 359,
|
|
CRAFT_UPDATE = 360,
|
|
CRAFT_CLOSE = 361,
|
|
MIRROR_TIMER_START = 362,
|
|
MIRROR_TIMER_PAUSE = 363,
|
|
MIRROR_TIMER_STOP = 364,
|
|
WORLD_MAP_UPDATE = 365,
|
|
WORLD_MAP_NAME_UPDATE = 366,
|
|
AUTOFOLLOW_BEGIN = 367,
|
|
AUTOFOLLOW_END = 368,
|
|
CINEMATIC_START = 370,
|
|
CINEMATIC_STOP = 371,
|
|
UPDATE_FACTION = 372,
|
|
CLOSE_WORLD_MAP = 373,
|
|
OPEN_TABARD_FRAME = 374,
|
|
CLOSE_TABARD_FRAME = 375,
|
|
SHOW_COMPARE_TOOLTIP = 377,
|
|
TABARD_CANSAVE_CHANGED = 376,
|
|
GUILD_REGISTRAR_SHOW = 378,
|
|
GUILD_REGISTRAR_CLOSED = 379,
|
|
DUEL_REQUESTED = 380,
|
|
DUEL_OUTOFBOUNDS = 381,
|
|
DUEL_INBOUNDS = 382,
|
|
DUEL_FINISHED = 383,
|
|
TUTORIAL_TRIGGER = 384,
|
|
PET_DISMISS_START = 385,
|
|
UPDATE_BINDINGS = 386,
|
|
UPDATE_SHAPESHIFT_FORMS = 387,
|
|
WHO_LIST_UPDATE = 388,
|
|
UPDATE_LFG = 389,
|
|
PETITION_SHOW = 390,
|
|
PETITION_CLOSED = 391,
|
|
EXECUTE_CHAT_LINE = 392,
|
|
UPDATE_MACROS = 393,
|
|
UPDATE_TICKET = 394,
|
|
UPDATE_CHAT_WINDOWS = 395,
|
|
CONFIRM_XP_LOSS = 396,
|
|
CORPSE_IN_RANGE = 397,
|
|
CORPSE_IN_INSTANCE = 398,
|
|
CORPSE_OUT_OF_RANGE = 399,
|
|
UPDATE_GM_STATUS = 400,
|
|
PLAYER_UNGHOST = 401,
|
|
BIND_ENCHANT = 402,
|
|
REPLACE_ENCHANT = 403,
|
|
TRADE_REPLACE_ENCHANT = 404,
|
|
PLAYER_UPDATE_RESTING = 405,
|
|
UPDATE_EXHAUSTION = 406,
|
|
PLAYER_FLAGS_CHANGED = 407,
|
|
GUILD_ROSTER_UPDATE = 408,
|
|
GM_PLAYER_INFO = 409,
|
|
MAIL_SHOW = 410,
|
|
MAIL_CLOSED = 411,
|
|
SEND_MAIL_MONEY_CHANGED = 412,
|
|
SEND_MAIL_COD_CHANGED = 413,
|
|
MAIL_SEND_INFO_UPDATE = 414,
|
|
MAIL_SEND_SUCCESS = 415,
|
|
MAIL_INBOX_UPDATE = 416,
|
|
BATTLEFIELDS_SHOW = 417,
|
|
BATTLEFIELDS_CLOSED = 418,
|
|
UPDATE_BATTLEFIELD_STATUS = 419,
|
|
UPDATE_BATTLEFIELD_SCORE = 420,
|
|
AUCTION_HOUSE_SHOW = 421,
|
|
AUCTION_HOUSE_CLOSED = 422,
|
|
NEW_AUCTION_UPDATE = 423,
|
|
AUCTION_ITEM_LIST_UPDATE = 424,
|
|
AUCTION_OWNED_LIST_UPDATE = 425,
|
|
AUCTION_BIDDER_LIST_UPDATE = 426,
|
|
PET_UI_UPDATE = 427,
|
|
PET_UI_CLOSE = 428,
|
|
ADDON_LOADED = 429,
|
|
VARIABLES_LOADED = 430,
|
|
MACRO_ACTION_FORBIDDEN = 431,
|
|
ADDON_ACTION_FORBIDDEN = 432,
|
|
MEMORY_EXHAUSTED = 433,
|
|
MEMORY_RECOVERED = 434,
|
|
START_AUTOREPEAT_SPELL = 435,
|
|
STOP_AUTOREPEAT_SPELL = 436,
|
|
PET_STABLE_SHOW = 437,
|
|
PET_STABLE_UPDATE = 438,
|
|
PET_STABLE_UPDATE_PAPERDOLL = 439,
|
|
PET_STABLE_CLOSED = 440,
|
|
CHAT_MSG_COMBAT_SELF_HITS = 441,
|
|
CHAT_MSG_COMBAT_SELF_MISSES = 442,
|
|
CHAT_MSG_COMBAT_PET_HITS = 443,
|
|
CHAT_MSG_COMBAT_PET_MISSES = 444,
|
|
CHAT_MSG_COMBAT_PARTY_HITS = 445,
|
|
CHAT_MSG_COMBAT_PARTY_MISSES = 446,
|
|
CHAT_MSG_COMBAT_FRIENDLYPLAYER_HITS = 447,
|
|
CHAT_MSG_COMBAT_FRIENDLYPLAYER_MISSES = 448,
|
|
CHAT_MSG_COMBAT_HOSTILEPLAYER_HITS = 449,
|
|
CHAT_MSG_COMBAT_HOSTILEPLAYER_MISSES = 450,
|
|
CHAT_MSG_COMBAT_CREATURE_VS_SELF_HITS = 451,
|
|
CHAT_MSG_COMBAT_CREATURE_VS_SELF_MISSES = 452,
|
|
CHAT_MSG_COMBAT_CREATURE_VS_PARTY_HITS = 453,
|
|
CHAT_MSG_COMBAT_CREATURE_VS_PARTY_MISSES = 454,
|
|
CHAT_MSG_COMBAT_CREATURE_VS_CREATURE_HITS = 455,
|
|
CHAT_MSG_COMBAT_CREATURE_VS_CREATURE_MISSES = 456,
|
|
CHAT_MSG_COMBAT_FRIENDLY_DEATH = 457,
|
|
CHAT_MSG_COMBAT_HOSTILE_DEATH = 458,
|
|
CHAT_MSG_COMBAT_XP_GAIN = 459,
|
|
CHAT_MSG_COMBAT_HONOR_GAIN = 460,
|
|
CHAT_MSG_SPELL_SELF_DAMAGE = 461,
|
|
CHAT_MSG_SPELL_SELF_BUFF = 462,
|
|
CHAT_MSG_SPELL_PET_DAMAGE = 463,
|
|
CHAT_MSG_SPELL_PET_BUFF = 464,
|
|
CHAT_MSG_SPELL_PARTY_DAMAGE = 465,
|
|
CHAT_MSG_SPELL_PARTY_BUFF = 466,
|
|
CHAT_MSG_SPELL_FRIENDLYPLAYER_DAMAGE = 467,
|
|
CHAT_MSG_SPELL_FRIENDLYPLAYER_BUFF = 468,
|
|
CHAT_MSG_SPELL_HOSTILEPLAYER_DAMAGE = 469,
|
|
CHAT_MSG_SPELL_HOSTILEPLAYER_BUFF = 470,
|
|
CHAT_MSG_SPELL_CREATURE_VS_SELF_DAMAGE = 471,
|
|
CHAT_MSG_SPELL_CREATURE_VS_SELF_BUFF = 472,
|
|
CHAT_MSG_SPELL_CREATURE_VS_PARTY_DAMAGE = 473,
|
|
CHAT_MSG_SPELL_CREATURE_VS_PARTY_BUFF = 474,
|
|
CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE = 475,
|
|
CHAT_MSG_SPELL_CREATURE_VS_CREATURE_BUFF = 476,
|
|
CHAT_MSG_SPELL_TRADESKILLS = 477,
|
|
CHAT_MSG_SPELL_DAMAGESHIELDS_ON_SELF = 478,
|
|
CHAT_MSG_SPELL_DAMAGESHIELDS_ON_OTHERS = 479,
|
|
CHAT_MSG_SPELL_AURA_GONE_SELF = 480,
|
|
CHAT_MSG_SPELL_AURA_GONE_PARTY = 481,
|
|
CHAT_MSG_SPELL_AURA_GONE_OTHER = 482,
|
|
CHAT_MSG_SPELL_ITEM_ENCHANTMENTS = 483,
|
|
CHAT_MSG_SPELL_BREAK_AURA = 484,
|
|
CHAT_MSG_SPELL_PERIODIC_SELF_DAMAGE = 485,
|
|
CHAT_MSG_SPELL_PERIODIC_SELF_BUFFS = 486,
|
|
CHAT_MSG_SPELL_PERIODIC_PARTY_DAMAGE = 487,
|
|
CHAT_MSG_SPELL_PERIODIC_PARTY_BUFFS = 488,
|
|
CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_DAMAGE = 489,
|
|
CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_BUFFS = 490,
|
|
CHAT_MSG_SPELL_PERIODIC_HOSTILEPLAYER_DAMAGE = 491,
|
|
CHAT_MSG_SPELL_PERIODIC_HOSTILEPLAYER_BUFFS = 492,
|
|
CHAT_MSG_SPELL_PERIODIC_CREATURE_DAMAGE = 493,
|
|
CHAT_MSG_SPELL_PERIODIC_CREATURE_BUFFS = 494,
|
|
CHAT_MSG_SPELL_FAILED_LOCALPLAYER = 495,
|
|
CHAT_MSG_BG_SYSTEM_NEUTRAL = 496,
|
|
CHAT_MSG_BG_SYSTEM_ALLIANCE = 497,
|
|
CHAT_MSG_BG_SYSTEM_HORDE = 498,
|
|
RAID_ROSTER_UPDATE = 499,
|
|
UPDATE_PENDING_MAIL = 500,
|
|
UPDATE_INVENTORY_ALERTS = 501,
|
|
UPDATE_TRADESKILL_RECAST = 502,
|
|
OPEN_MASTER_LOOT_LIST = 503,
|
|
UPDATE_MASTER_LOOT_LIST = 504,
|
|
START_LOOT_ROLL = 505,
|
|
CANCEL_LOOT_ROLL = 506,
|
|
CONFIRM_LOOT_ROLL = 507,
|
|
INSTANCE_BOOT_START = 508,
|
|
INSTANCE_BOOT_STOP = 509,
|
|
LEARNED_SPELL_IN_TAB = 510,
|
|
DISPLAY_SIZE_CHANGED = 511,
|
|
CONFIRM_TALENT_WIPE = 512,
|
|
CONFIRM_BINDER = 513,
|
|
MAIL_FAILED = 514,
|
|
CLOSE_INBOX_ITEM = 515,
|
|
CONFIRM_SUMMON = 516,
|
|
BILLING_NAG_DIALOG = 517,
|
|
IGR_BILLING_NAG_DIALOG = 518,
|
|
MEETINGSTONE_CHANGED = 519,
|
|
PLAYER_SKINNED = 520,
|
|
TABARD_SAVE_PENDING = 521,
|
|
UNIT_QUEST_LOG_CHANGED = 522,
|
|
PLAYER_PVP_KILLS_CHANGED = 523,
|
|
PLAYER_PVP_RANK_CHANGED = 524,
|
|
INSPECT_HONOR_UPDATE = 525,
|
|
UPDATE_WORLD_STATES = 526,
|
|
AREA_SPIRIT_HEALER_IN_RANGE = 527,
|
|
AREA_SPIRIT_HEALER_OUT_OF_RANGE = 528,
|
|
CONFIRM_PET_UNLEARN = 529,
|
|
PLAYTIME_CHANGED = 530,
|
|
UPDATE_LFG_TYPES = 531,
|
|
UPDATE_LFG_LIST = 532,
|
|
CHAT_MSG_COMBAT_FACTION_CHANGE = 533,
|
|
START_MINIGAME = 534,
|
|
MINIGAME_UPDATE = 535,
|
|
READY_CHECK = 536,
|
|
RAID_TARGET_UPDATE = 537,
|
|
GMSURVEY_DISPLAY = 538,
|
|
UPDATE_INSTANCE_INFO = 539,
|
|
CHAT_MSG_RAID_BOSS_EMOTE = 541,
|
|
COMBAT_TEXT_UPDATE = 542,
|
|
LOTTERY_SHOW = 543,
|
|
CHAT_MSG_FILTERED = 544,
|
|
QUEST_WATCH_UPDATE = 545,
|
|
CHAT_MSG_BATTLEGROUND = 546,
|
|
CHAT_MSG_BATTLEGROUND_LEADER = 547,
|
|
LOTTERY_ITEM_UPDATE = 548,
|
|
|
|
// ADDED EVENTS
|
|
SPELL_QUEUE_EVENT = 369,
|
|
SPELL_CAST_EVENT = 540,
|
|
SPELL_DAMAGE_EVENT_SELF = 549,
|
|
SPELL_DAMAGE_EVENT_OTHER = 550,
|
|
|
|
DEBUFF_ADDED_SELF = 551,
|
|
DEBUFF_REMOVED_SELF = 552,
|
|
DEBUFF_ADDED_OTHER = 553,
|
|
DEBUFF_REMOVED_OTHER = 554,
|
|
|
|
BUFF_ADDED_SELF = 555,
|
|
BUFF_REMOVED_SELF = 556,
|
|
BUFF_ADDED_OTHER = 557,
|
|
BUFF_REMOVED_OTHER = 558,
|
|
|
|
UNIT_DIED = 559,
|
|
|
|
AURA_CAST_ON_SELF = 560,
|
|
AURA_CAST_ON_OTHER = 561,
|
|
|
|
AUTO_ATTACK_SELF = 562,
|
|
AUTO_ATTACK_OTHER = 563,
|
|
|
|
SPELL_START_SELF = 564,
|
|
SPELL_START_OTHER = 565,
|
|
|
|
SPELL_GO_SELF = 566,
|
|
SPELL_GO_OTHER = 567,
|
|
|
|
SPELL_FAILED_SELF = 568,
|
|
SPELL_FAILED_OTHER = 569,
|
|
|
|
SPELL_DELAYED_SELF = 570,
|
|
SPELL_DELAYED_OTHER = 571,
|
|
|
|
SPELL_CHANNEL_START = 572,
|
|
SPELL_CHANNEL_UPDATE = 573,
|
|
|
|
SPELL_HEAL_BY_SELF = 574,
|
|
SPELL_HEAL_BY_OTHER = 575,
|
|
SPELL_HEAL_ON_SELF = 576,
|
|
|
|
SPELL_ENERGIZE_BY_SELF = 577,
|
|
SPELL_ENERGIZE_BY_OTHER = 578,
|
|
SPELL_ENERGIZE_ON_SELF = 579,
|
|
|
|
BUFF_UPDATE_DURATION_SELF = 580,
|
|
DEBUFF_UPDATE_DURATION_SELF = 581,
|
|
|
|
SPELL_MISS_SELF = 582,
|
|
SPELL_MISS_OTHER = 583,
|
|
};
|
|
|
|
enum TypeMask {
|
|
TYPEMASK_OBJECT = 0x1,
|
|
TYPEMASK_ITEM = 0x2,
|
|
TYPEMASK_CONTAINER = 0x4,
|
|
TYPEMASK_UNIT = 0x8,
|
|
TYPEMASK_PLAYER = 0x10,
|
|
TYPEMASK_GAMEOBJECT = 0x20,
|
|
TYPEMASK_DYNAMICOBJECT = 0x40,
|
|
TYPEMASK_CORPSE = 0x80,
|
|
};
|
|
|
|
enum SpellModOp {
|
|
SPELLMOD_DAMAGE = 0,
|
|
SPELLMOD_DURATION = 1,
|
|
SPELLMOD_THREAT = 2,
|
|
SPELLMOD_ATTACK_POWER = 3,
|
|
SPELLMOD_CHARGES = 4,
|
|
SPELLMOD_RANGE = 5,
|
|
SPELLMOD_RADIUS = 6,
|
|
SPELLMOD_CRITICAL_CHANCE = 7,
|
|
SPELLMOD_ALL_EFFECTS = 8,
|
|
SPELLMOD_NOT_LOSE_CASTING_TIME = 9,
|
|
SPELLMOD_CASTING_TIME = 10,
|
|
SPELLMOD_COOLDOWN = 11,
|
|
SPELLMOD_SPEED = 12,
|
|
SPELLMOD_COST = 14,
|
|
SPELLMOD_CRIT_DAMAGE_BONUS = 15,
|
|
SPELLMOD_RESIST_MISS_CHANCE = 16,
|
|
SPELLMOD_JUMP_TARGETS = 17,
|
|
SPELLMOD_CHANCE_OF_SUCCESS = 18, // Only used with SPELL_AURA_ADD_FLAT_MODIFIER and affects proc spells
|
|
SPELLMOD_ACTIVATION_TIME = 19,
|
|
SPELLMOD_EFFECT_PAST_FIRST = 20,
|
|
SPELLMOD_CASTING_TIME_OLD = 21,
|
|
SPELLMOD_DOT = 22,
|
|
SPELLMOD_HASTE = 23,
|
|
SPELLMOD_SPELL_BONUS_DAMAGE = 24,
|
|
SPELLMOD_MULTIPLE_VALUE = 27,
|
|
SPELLMOD_RESIST_DISPEL_CHANCE = 28,
|
|
MAX_SPELLMOD = 29,
|
|
};
|
|
|
|
|
|
enum OBJECT_TYPE_ID : __int32 {
|
|
ID_OBJECT = 0x0,
|
|
ID_ITEM = 0x1,
|
|
ID_CONTAINER = 0x2,
|
|
ID_UNIT = 0x3,
|
|
ID_PLAYER = 0x4,
|
|
ID_GAMEOBJECT = 0x5,
|
|
ID_DYNAMICOBJECT = 0x6,
|
|
ID_CORPSE = 0x7,
|
|
NUM_CLIENT_OBJECT_TYPES = 0x8,
|
|
ID_AIGROUP = 0x8,
|
|
ID_AREATRIGGER = 0x9,
|
|
NUM_OBJECT_TYPES = 0xA,
|
|
};
|
|
|
|
class CDuration {
|
|
public:
|
|
char m_DurationIndex; //0x0000
|
|
__int32 m_Duration; //0x0004
|
|
char unknown[4]; //0x0008
|
|
__int32 m_Duration2; //0x000C
|
|
|
|
__int32 GetDuration() {
|
|
return ((m_Duration / 1000) / 60);
|
|
}
|
|
}; //Size=0x0010
|
|
|
|
class CSpellCastingTime {
|
|
public:
|
|
__int32 m_CastingTimeIndex; //0x0000
|
|
__int32 m_CastTime; //0x0004
|
|
char m_0x0008[4]; //0x0008
|
|
__int32 m_CastTime2; //0x000C
|
|
}; //Size=0x0010
|
|
|
|
enum MovementFlags : uint32_t {
|
|
MOVEFLAG_NONE = 0x00000000,
|
|
MOVEFLAG_FORWARD = 0x00000001,
|
|
MOVEFLAG_BACKWARD = 0x00000002,
|
|
MOVEFLAG_STRAFE_LEFT = 0x00000004,
|
|
MOVEFLAG_STRAFE_RIGHT = 0x00000008,
|
|
MOVEFLAG_TURN_LEFT = 0x00000010,
|
|
MOVEFLAG_TURN_RIGHT = 0x00000020,
|
|
MOVEFLAG_PITCH_UP = 0x00000040,
|
|
MOVEFLAG_PITCH_DOWN = 0x00000080,
|
|
MOVEFLAG_WALK_MODE = 0x00000100,
|
|
MOVEFLAG_LEVITATING = 0x00000400,
|
|
MOVEFLAG_FIXED_Z = 0x00000800,
|
|
MOVEFLAG_ROOT = 0x00001000,
|
|
MOVEFLAG_JUMPING = 0x00002000,
|
|
MOVEFLAG_FALLINGFAR = 0x00004000,
|
|
MOVEFLAG_SWIMMING = 0x00200000,
|
|
MOVEFLAG_SPLINE_ENABLED = 0x00400000,
|
|
MOVEFLAG_CAN_FLY = 0x00800000,
|
|
MOVEFLAG_FLYING = 0x01000000,
|
|
MOVEFLAG_ONTRANSPORT = 0x02000000,
|
|
MOVEFLAG_SPLINE_ELEVATION = 0x04000000,
|
|
MOVEFLAG_WATERWALKING = 0x10000000,
|
|
MOVEFLAG_SAFE_FALL = 0x20000000,
|
|
MOVEFLAG_HOVER = 0x40000000,
|
|
MOVEFLAG_INTERNAL = 0x80000000,
|
|
};
|
|
|
|
enum UnitFlags {
|
|
UNIT_FLAG_NONE = 0x00000000,
|
|
UNIT_FLAG_UNK_0 = 0x00000001, // Movement checks disabled, likely paired with loss of client control packet.
|
|
UNIT_FLAG_SPAWNING = 0x00000002, // not attackable
|
|
UNIT_FLAG_DISABLE_MOVE = 0x00000004,
|
|
UNIT_FLAG_PLAYER_CONTROLLED = 0x00000008,
|
|
// players, pets, totems, guardians, companions, charms, any units associated with players
|
|
UNIT_FLAG_PET_RENAME = 0x00000010, // Old pet rename: moved to UNIT_FIELD_BYTES_2,2 in TBC+
|
|
UNIT_FLAG_PET_ABANDON = 0x00000020, // Old pet abandon: moved to UNIT_FIELD_BYTES_2,2 in TBC+
|
|
UNIT_FLAG_UNK_6 = 0x00000040,
|
|
UNIT_FLAG_IMMUNE_TO_PLAYER = 0x00000100, // Target is immune to players
|
|
UNIT_FLAG_IMMUNE_TO_NPC = 0x00000200, // Target is immune to creatures
|
|
UNIT_FLAG_PVP = 0x00001000,
|
|
UNIT_FLAG_SILENCED = 0x00002000, // silenced, 2.1.1
|
|
UNIT_FLAG_UNK_14 = 0x00004000,
|
|
UNIT_FLAG_USE_SWIM_ANIMATION = 0x00008000,
|
|
UNIT_FLAG_NON_ATTACKABLE_2 = 0x00010000,
|
|
// removes attackable icon, if on yourself, cannot assist self but can cast TARGET_UNIT_CASTER spells - added by SPELL_AURA_MOD_UNATTACKABLE
|
|
UNIT_FLAG_PACIFIED = 0x00020000,
|
|
UNIT_FLAG_STUNNED = 0x00040000, // Unit is a subject to stun, turn and strafe movement disabled
|
|
UNIT_FLAG_IN_COMBAT = 0x00080000,
|
|
UNIT_FLAG_TAXI_FLIGHT = 0x00100000,
|
|
// Unit is on taxi, paired with a duplicate loss of client control packet (likely a legacy serverside hack). Disables any spellcasts not allowed in taxi flight client-side.
|
|
UNIT_FLAG_CONFUSED = 0x00400000,
|
|
// Unit is a subject to confused movement, movement checks disabled, paired with loss of client control packet.
|
|
UNIT_FLAG_FLEEING = 0x00800000,
|
|
// Unit is a subject to fleeing movement, movement checks disabled, paired with loss of client control packet.
|
|
UNIT_FLAG_POSSESSED = 0x01000000,
|
|
// Unit is under remote control by another unit, movement checks disabled, paired with loss of client control packet. New master is allowed to use melee attack and can't select this unit via mouse in the world (as if it was own character).
|
|
UNIT_FLAG_NOT_SELECTABLE = 0x02000000,
|
|
UNIT_FLAG_SKINNABLE = 0x04000000,
|
|
UNIT_FLAG_AURAS_VISIBLE = 0x08000000, // magic detect
|
|
UNIT_FLAG_SHEATHE = 0x40000000,
|
|
UNIT_FLAG_IMMUNE = 0x80000000, // Immune to damage
|
|
|
|
// [-ZERO] TBC enumerations [?]
|
|
UNIT_FLAG_NOT_ATTACKABLE_1 = 0x00000080,
|
|
// ?? (UNIT_FLAG_PLAYER_CONTROLLED | UNIT_FLAG_NOT_ATTACKABLE_1) is NON_PVP_ATTACKABLE
|
|
UNIT_FLAG_LOOTING = 0x00000400, // loot animation
|
|
UNIT_FLAG_PET_IN_COMBAT = 0x00000800, // in combat?, 2.0.8
|
|
UNIT_FLAG_DISARMED = 0x00200000,
|
|
// disable melee spells casting..., "Required melee weapon" added to melee spells tooltip.
|
|
|
|
UNIT_FLAG_UNK_28 = 0x10000000,
|
|
UNIT_FLAG_UNK_29 = 0x20000000, // used in Feing Death spell
|
|
};
|
|
|
|
typedef struct UnitFields {
|
|
uint64_t charm; // Size:2
|
|
uint64_t summon; // Size:2
|
|
uint64_t charmedBy; // Size:2
|
|
uint64_t summonedBy; // Size:2
|
|
uint64_t createdBy; // Size:2
|
|
uint64_t target; // Size:2
|
|
uint64_t persuaded; // Size:2
|
|
uint64_t channelObject; // Size:2
|
|
uint32_t health; // Size:1
|
|
uint32_t power1; // Size:1
|
|
uint32_t power2; // Size:1
|
|
uint32_t power3; // Size:1
|
|
uint32_t power4; // Size:1
|
|
uint32_t power5; // Size:1
|
|
uint32_t maxHealth; // Size:1
|
|
uint32_t maxPower1; // Size:1
|
|
uint32_t maxPower2; // Size:1
|
|
uint32_t maxPower3; // Size:1
|
|
uint32_t maxPower4; // Size:1
|
|
uint32_t maxPower5; // Size:1
|
|
uint32_t level; // Size:1
|
|
uint32_t factionTemplate; // Size:1
|
|
uint32_t bytes0; // Size:1
|
|
uint32_t virtualItemDisplay[3]; // Size:3
|
|
uint32_t virtualItemInfo[6]; // Size:6
|
|
uint32_t flags; // Size:1
|
|
uint32_t aura[48]; // Size:48
|
|
uint32_t auraFlags[6]; // Size:6
|
|
uint8_t auraLevels[48]; // Size:48
|
|
uint8_t auraApplications[48]; // Size:48
|
|
uint32_t auraState; // Size:1
|
|
uint32_t baseAttackTime; // Size:1
|
|
uint32_t offhandAttackTime; // Size:1
|
|
uint32_t rangedAttackTime; // Size:1
|
|
float boundingRadius; // Size:1
|
|
float combatReach; // Size:1
|
|
uint32_t displayId; // Size:1
|
|
uint32_t nativeDisplayId; // Size:1
|
|
uint32_t mountDisplayId; // Size:1
|
|
float minDamage; // Size:1
|
|
float maxDamage; // Size:1
|
|
float minOffhandDamage; // Size:1
|
|
float maxOffhandDamage; // Size:1
|
|
uint32_t bytes1; // Size:1
|
|
uint32_t petNumber; // Size:1
|
|
uint32_t petNameTimestamp; // Size:1
|
|
uint32_t petExperience; // Size:1
|
|
uint32_t petNextLevelExp; // Size:1
|
|
uint32_t dynamicFlags; // Size:1
|
|
uint32_t channelSpell; // Size:1
|
|
float modCastSpeed; // Size:1 (Float in 1.12+)
|
|
uint32_t createdBySpell; // Size:1
|
|
uint32_t npcFlags; // Size:1
|
|
uint32_t npcEmoteState; // Size:1
|
|
uint32_t trainingPoints; // Size:1
|
|
uint32_t stat0; // Size:1
|
|
uint32_t stat1; // Size:1
|
|
uint32_t stat2; // Size:1
|
|
uint32_t stat3; // Size:1
|
|
uint32_t stat4; // Size:1
|
|
uint32_t resistances[7]; // Size:7
|
|
uint32_t baseMana; // Size:1
|
|
uint32_t baseHealth; // Size:1
|
|
uint32_t bytes2; // Size:1
|
|
uint32_t attackPower; // Size:1
|
|
uint32_t attackPowerMods; // Size:1
|
|
float attackPowerMultiplier; // Size:1
|
|
uint32_t rangedAttackPower; // Size:1
|
|
uint32_t rangedAttackPowerMods; // Size:1
|
|
float rangedAttackPowerMultiplier; // Size:1
|
|
float minRangedDamage; // Size:1
|
|
float maxRangedDamage; // Size:1
|
|
float powerCostModifier[7]; // Size:7
|
|
float powerCostMultiplier[7]; // Size:7
|
|
} UnitFields;
|
|
|
|
uintptr_t *GetObjectPtr(std::uint64_t guid);
|
|
|
|
std::uint32_t GetCastTime(void *unit, uint32_t spellId);
|
|
|
|
CDuration *GetDurationObject(uint32_t durationIndex);
|
|
|
|
int GetSpellDuration(const SpellRec *spellRec, bool ignoreModifiers);
|
|
|
|
int GetSpellModifier(const SpellRec *spellRec, SpellModOp spellMod);
|
|
|
|
const SpellRec *GetSpellInfo(uint32_t spellId);
|
|
|
|
uint32_t GetItemId(CGItem_C *item);
|
|
|
|
uintptr_t *GetObjectVFTable(uintptr_t *unit);
|
|
|
|
uintptr_t *GetPlayerInventoryPtr(uintptr_t *playerUnit);
|
|
|
|
const char *GetSpellName(uint32_t spellId);
|
|
|
|
std::uint64_t ClntObjMgrGetActivePlayerGuid();
|
|
UnitFields *GetActivePlayerUnitFields();
|
|
|
|
std::uint64_t GetCurrentTargetGuid();
|
|
|
|
uintptr_t *ClntObjMgrObjectPtr(TypeMask typeMask, std::uint64_t guid);
|
|
|
|
uint64_t UnitGetGuid(uintptr_t *unit);
|
|
|
|
char *UnitGetName(uintptr_t *unit);
|
|
|
|
bool UnitCanAttackUnit(uintptr_t *unit1, uintptr_t *unit2);
|
|
|
|
uint64_t UnitGetTargetGuid(uintptr_t *unit);
|
|
|
|
bool UnitIsPvpFlagged(uintptr_t *unit);
|
|
|
|
bool UnitIsInCombat(uintptr_t *unit);
|
|
|
|
bool UnitIsBuffCapped(uintptr_t *unit);
|
|
|
|
bool UnitIsDebuffCapped(uintptr_t *unit);
|
|
|
|
uint32_t UnitGetMountDisplayId(uintptr_t *unit);
|
|
}
|