///////////////// // CHAT // /////////////// void SendChatMessage(uint8 type, uint32 lang, const char *msg); void SendChatMessageAlternateEntry(uint32 entry, uint8 type, uint32 lang, const char * msg); void RegisterPeriodicChatMessage(uint32 delay, uint32 msgid, std::string message, bool sendnotify); void DelayedChatMessage(uint32 delay, uint32 msgid, std::string message, bool sendnotify); void SendNotifyToNearby(uint32 msgid); void SendNotifyToNearbyCreature(uint32 msgid, uint32 entryid); ///////////////// // CAST-SPELL // /////////////// void CastSpell(Unit* Target, uint32 SpellID, bool triggered); void CastSpell(Unit* Target, SpellEntry* Sp, bool triggered); void CastSpell(uint64 targetGuid, uint32 SpellID, bool triggered); void CastSpell(uint64 targetGuid, SpellEntry* Sp, bool triggered); void CastSpellAoF(float x,float y,float z,SpellEntry* Sp, bool triggered); void EventCastSpell(Unit * Target, SpellEntry * Sp); bool isCasting(); bool IsInInstance(); void CalculateResistanceReduction(Unit *pVictim,dealdamage *dmg) ; void RegenerateHealth(); void RegeneratePower(bool isinterrupted); inline void setHRegenTimer(uint32 time) {m_H_regenTimer = time; } inline void setPRegenTimer(uint32 time) {m_P_regenTimer = time; } inline void setPIRegenTimer(uint32 time) {m_P_I_regenTimer = time; } void DeMorph(); uint32 ManaShieldAbsorb(uint32 dmg); void smsg_AttackStart(Unit* pVictim); void smsg_AttackStop(Unit* pVictim); void smsg_AttackStop(uint64 victimGuid); bool IsDazed(); float spellcritperc; //////////////// // COMBAT // ////////////// inline int GetHealthPct() { return (int)(GetUInt32Value(UNIT_FIELD_HEALTH) * 100 / GetUInt32Value(UNIT_FIELD_MAXHEALTH)); }; inline int GetManaPct() { return (int)(GetUInt32Value(UNIT_FIELD_POWER1) * 100 / GetUInt32Value(UNIT_FIELD_MAXPOWER1)); }; void AddAttackTarget(const uint64& guid); // this means we clicked attack, not actually striked yet, so they shouldnt be in combat. void ClearPrimaryAttackTarget(); // means we deselected the unit, stopped attacking it. void OnDamageDealt(Unit * pTarget); // this is what puts the other person in combat. void WeHealed(Unit * pHealTarget); // called when a player heals another player, regardless of combat state. void RemoveAttacker(Unit * pAttacker, const uint64& guid); // this means we stopped attacking them totally. could be because of deagro, etc. void RemoveAttackTarget(Unit * pTarget); // means our DoT expired. void UpdateFlag(); // detects if we have changed combat state (in/out), and applies the flag. inline bool IsInCombat() { return m_lastStatus; } // checks if we are in combat or not. void OnRemoveFromWorld(); // called when we are removed from world, kills all references to us. //////////////// // STEALTH // ////////////// inline int32 GetStealthLevel() { return m_stealthLevel; } inline int32 GetStealthDetectBonus() { return m_stealthDetectBonus; } inline void SetStealth(uint32 id) { m_stealth = id; } inline bool IsStealth() { return (m_stealth!=0 ? true : false); } float detectRange; ////////////////// //INVISIBILITY // //////////////// bool m_invisible; uint8 m_invisFlag; int32 m_invisDetect[INVIS_FLAG_TOTAL]; bool HasAura(uint32 visualid);//not spell id!!! bool HasActiveAura(uint32 spelllid); bool HasActiveAura(uint32 spelllid,uint64); void GiveGroupXP(Unit *pVictim, Player *PlayerInGroup); ///////////////// // DEATHSTATE // /////////////// inline bool isAlive() { return m_deathState == ALIVE; }; inline bool isDead() { return m_deathState !=ALIVE; }; virtual void setDeathState(DeathState s) { m_deathState = s; }; DeathState getDeathState() { return m_deathState; } void OnDamageTaken(); //////////////// // EVENT // ////////////// void Emote (EmoteType emote); void EventAddEmote(EmoteType emote, uint32 time); void EmoteExpire(); inline void setEmoteState(uint8 emote) { m_emoteState = emote; }; inline uint32 GetOldEmote() { return m_oldEmote; } void EventSummonPetExpire(); void EventAurastateExpire(uint32 aurastateflag){RemoveFlag(UNIT_FIELD_AURASTATE,aurastateflag);} //hmm this looks like so not necesary :S void EventHealthChangeSinceLastUpdate(); void SetStandState (uint8 standstate); ////////////////// // MOVEMENT // //////////////// int32 m_speedModifier; int32 m_slowdown; map< uint32, int32 > speedReductionMap; bool GetSpeedDecrease(); int32 m_mountedspeedModifier; int32 m_flyspeedModifier; void UpdateSpeed(bool delay = false); void EnableFlight(bool delay = false); void DisableFlight(bool delay = false); void MoveToWaypoint(uint32 wp_id); _unit->GetAIInterface()->StopMovement(18000); /////////////// // AURA // ///////////// void AddAura(Aura *aur); //! Remove aura from unit bool RemoveAura(Aura *aur); bool RemoveAura(uint32 spellId); bool RemoveAura(uint32 spellId,uint64 guid); bool RemoveAuraByNameHash(uint32 namehash); //required to remove weaker instances of a spell bool RemoveAuraPosByNameHash(uint32 namehash); //required to remove weaker instances of a spell bool RemoveAuraNegByNameHash(uint32 namehash); //required to remove weaker instances of a spell bool RemoveAuras(uint32 * SpellIds); void EventRemoveAura(uint32 SpellId) { RemoveAura(SpellId); } //! Remove all auras void RemoveAllAuras(); void RemoveAllAuraType(uint32 auratype); //ex:to remove morph spells bool RemoveAllAuraByNameHash(uint32 namehash); //required to remove weaker instances of a spell bool RemoveAllPosAuraByNameHash(uint32 namehash); //required to remove weaker instances of a spell bool RemoveAllNegAuraByNameHash(uint32 namehash); //required to remove weaker instances of a spell void RemoveNegativeAuras(); void RemoveAllAreaAuras(); // Temporary remove all auras // Find auras Aura* FindAura(uint32 spellId); Aura* FindAura(uint32 spellId, uint64 guid); bool SetAurDuration(uint32 spellId,Unit* caster,uint32 duration); bool SetAurDuration(uint32 spellId,uint32 duration); void DropAurasOnDeath(); void castSpell(Spell * pSpell); void InterruptSpell(); //Others void RemoveAurasByBuffIndexType(uint32 buff_index_type, const uint64 &guid); void RemoveAurasByBuffType(uint32 buff_type, const uint64 &guid,uint32 skip); bool HasAurasOfBuffType(uint32 buff_type, const uint64 &guid,uint32 skip); int HasAurasWithNameHash(uint32 name_hash); bool HasNegativeAuraWithNameHash(uint32 name_hash); //just to reduce search range in some cases bool HasNegativeAura(uint32 spell_id); //just to reduce search range in some cases _unit->Despawn(2000, 8000); //Despawns the NPC (Time Remove, Time to Respawn) _unit->GetAIInterface()->setOutOfCombatRange(200000); //Sets the Range that the npc needs to reset (Range). Flag Commands Code: enum UnitDynamicFlags { U_DYN_FLAG_LOOTABLE = 0x01, U_DYN_FLAG_UNIT_TRACKABLE = 0x02, U_DYN_FLAG_TAGGED_BY_OTHER = 0x04, U_DYN_FLAG_TAPPED_BY_PLAYER = 0x08, U_DYN_FLAG_PLAYER_INFO = 0x10, U_DYN_FLAG_DEAD = 0x20, }; enum DamageFlags { DAMAGE_FLAG_MELEE = 1, DAMAGE_FLAG_HOLY = 2, DAMAGE_FLAG_FIRE = 4, DAMAGE_FLAG_NATURE = 8, DAMAGE_FLAG_FROST = 16, DAMAGE_FLAG_SHADOW = 32, DAMAGE_FLAG_ARCANE = 64 }; enum DamageType { MELEE, DUALWIELD, RANGED, }; enum VisualState { ATTACK = 1, DODGE, PARRY, INTERRUPT, BLOCK, EVADE, IMMUNE, DEFLECT }; enum HitStatus { HITSTATUS_HITANIMATION = 0x02, HITSTATUS_DUALWIELD = 0x04, HITSTATUS_MISS = 0x10, HITSTATUS_ABSORBED = 0x20, HITSTATUS_RESIST = 0x40, HITSTATUS_CRICTICAL = 0x80, HITSTATUS_BLOCK = 0x800, HITSTATUS_GLANCING = 0x4000, HITSTATUS_CRUSHINGBLOW = 0x8000, HITSTATUS_NOACTION = 0x10000, HITSTATUS_SWINGNOHITSOUND = 0x80000 // as in miss? }; enum INVIS_FLAG { INVIS_FLAG_NORMAL, // players and units with no special invisibility flags INVIS_FLAG_SPIRIT1, INVIS_FLAG_SPIRIT2, INVIS_FLAG_TRAP, INVIS_FLAG_QUEST, INVIS_FLAG_GHOST, INVIS_FLAG_UNKNOWN6, INVIS_FLAG_UNKNOWN7, INVIS_FLAG_SHADOWMOON, INVIS_FLAG_NETHERSTORM, INVIS_FLAG_TOTAL }; UNIT STATE Code: enum DeathState { ALIVE = 0, // Unit is alive and well JUST_DIED, // Unit has JUST died CORPSE, // Unit has died but remains in the world as a corpse DEAD // Unit is dead and his corpse is gone from the world }; #define HIGHEST_FACTION = 46 enum Factions { FACTION_BLOODSAIL_BUCCANEERS, FACTION_BOOTY_BAY, FACTION_GELKIS_CLAN_CENTAUR, FACTION_MAGRAM_CLAN_CENTAUR, FACTION_THORIUM_BROTHERHOOD, FACTION_RAVENHOLDT, FACTION_SYNDICATE, FACTION_GADGETZAN, FACTION_WILDHAMMER_CLAN, FACTION_RATCHET, FACTION_UNK1, FACTION_UNK2, FACTION_UNK3, FACTION_ARGENT_DAWN, FACTION_ORGRIMMAR, FACTION_DARKSPEAR_TROLLS, FACTION_THUNDER_BLUFF, FACTION_UNDERCITY, FACTION_GNOMEREGAN_EXILES, FACTION_STORMWIND, FACTION_IRONFORGE, FACTION_DARNASSUS, FACTION_LEATHERWORKING_DRAGON, FACTION_LEATHERWORKING_ELEMENTAL, FACTION_LEATHERWORKING_TRIBAL, FACTION_ENGINEERING_GNOME, FACTION_ENGINEERING_GOBLIN, FACTION_WINTERSABER_TRAINERS, FACTION_EVERLOOK, FACTION_BLACKSMITHING_ARMOR, FACTION_BLACKSMITHING_WEAPON, FACTION_BLACKSMITHING_AXE, FACTION_BLACKSMITHING_SWORD, FACTION_BLACKSMITHING_HAMMER, FACTION_CAER_DARROW, FACTION_TIMBERMAW_FURBOLGS, FACTION_CENARION_CIRCLE, FACTION_SHATTERSPEAR_TROLLS, FACTION_RAVASAUR_TRAINERS, FACTION_BATTLEGROUND_NEUTRAL, FACTION_STORMPIKE_GUARDS, FACTION_FROSTWOLF_CLAN, FACTION_HYDRAXIAN_WATERLORDS, FACTION_MORO_GAI, FACTION_SHEN_DRALAR, FACTION_SILVERWING_SENTINELS, FACTION_WARSONG_OUTRIDERS }; typedef enum { TEXTEMOTE_AGREE = 1, TEXTEMOTE_AMAZE = 2, TEXTEMOTE_ANGRY = 3, TEXTEMOTE_APOLOGIZE = 4, TEXTEMOTE_APPLAUD = 5, TEXTEMOTE_BASHFUL = 6, TEXTEMOTE_BECKON = 7, TEXTEMOTE_BEG = 8, TEXTEMOTE_BITE = 9, TEXTEMOTE_BLEED = 10, TEXTEMOTE_BLINK = 11, TEXTEMOTE_BLUSH = 12, TEXTEMOTE_BONK = 13, TEXTEMOTE_BORED = 14, TEXTEMOTE_BOUNCE = 15, TEXTEMOTE_BRB = 16, TEXTEMOTE_BOW = 17, TEXTEMOTE_BURP = 18, TEXTEMOTE_BYE = 19, TEXTEMOTE_CACKLE = 20, TEXTEMOTE_CHEER = 21, TEXTEMOTE_CHICKEN = 22, TEXTEMOTE_CHUCKLE = 23, TEXTEMOTE_CLAP = 24, TEXTEMOTE_CONFUSED = 25, TEXTEMOTE_CONGRATULATE = 26, TEXTEMOTE_COUGH = 27, TEXTEMOTE_COWER = 28, TEXTEMOTE_CRACK = 29, TEXTEMOTE_CRINGE = 30, TEXTEMOTE_CRY = 31, TEXTEMOTE_CURIOUS = 32, TEXTEMOTE_CURTSEY = 33, TEXTEMOTE_DANCE = 34, TEXTEMOTE_DRINK = 35, TEXTEMOTE_DROOL = 36, TEXTEMOTE_EAT = 37, TEXTEMOTE_EYE = 38, TEXTEMOTE_FART = 39, TEXTEMOTE_FIDGET = 40, TEXTEMOTE_FLEX = 41, TEXTEMOTE_FROWN = 42, TEXTEMOTE_GASP = 43, TEXTEMOTE_GAZE = 44, TEXTEMOTE_GIGGLE = 45, TEXTEMOTE_GLARE = 46, TEXTEMOTE_GLOAT = 47, TEXTEMOTE_GREET = 48, TEXTEMOTE_GRIN = 49, TEXTEMOTE_GROAN = 50, TEXTEMOTE_GROVEL = 51, TEXTEMOTE_GUFFAW = 52, TEXTEMOTE_HAIL = 53, TEXTEMOTE_HAPPY = 54, TEXTEMOTE_HELLO = 55, TEXTEMOTE_HUG = 56, TEXTEMOTE_HUNGRY = 57, TEXTEMOTE_KISS = 58, TEXTEMOTE_KNEEL = 59, TEXTEMOTE_LAUGH = 60, TEXTEMOTE_LAYDOWN = 61, TEXTEMOTE_MASSAGE = 62, TEXTEMOTE_MOAN = 63, TEXTEMOTE_MOON = 64, TEXTEMOTE_MOURN = 65, TEXTEMOTE_NO = 66, TEXTEMOTE_NOD = 67, TEXTEMOTE_NOSEPICK = 68, TEXTEMOTE_PANIC = 69, TEXTEMOTE_PEER = 70, TEXTEMOTE_PLEAD = 71, TEXTEMOTE_POINT = 72, TEXTEMOTE_POKE = 73, TEXTEMOTE_PRAY = 74, TEXTEMOTE_ROAR = 75, TEXTEMOTE_ROFL = 76, TEXTEMOTE_RUDE = 77, TEXTEMOTE_SALUTE = 78, TEXTEMOTE_SCRATCH = 79, TEXTEMOTE_SEXY = 80, TEXTEMOTE_SHAKE = 81, TEXTEMOTE_SHOUT = 82, TEXTEMOTE_SHRUG = 83, TEXTEMOTE_SHY = 84, TEXTEMOTE_SIGH = 85, TEXTEMOTE_SIT = 86, TEXTEMOTE_SLEEP = 87, TEXTEMOTE_SNARL = 88, TEXTEMOTE_SPIT = 89, TEXTEMOTE_STARE = 90, TEXTEMOTE_SURPRISED = 91, TEXTEMOTE_SURRENDER = 92, TEXTEMOTE_TALK = 93, TEXTEMOTE_TALKEX = 94, TEXTEMOTE_TALKQ = 95, TEXTEMOTE_TAP = 96, TEXTEMOTE_THANK = 97, TEXTEMOTE_THREATEN = 98, TEXTEMOTE_TIRED = 99, TEXTEMOTE_VICTORY = 100, TEXTEMOTE_WAVE = 101, TEXTEMOTE_WELCOME = 102, TEXTEMOTE_WHINE = 103, TEXTEMOTE_WHISTLE = 104, TEXTEMOTE_WORK = 105, TEXTEMOTE_YAWN = 106, TEXTEMOTE_BOGGLE = 107, TEXTEMOTE_CALM = 108, TEXTEMOTE_COLD = 109, TEXTEMOTE_COMFORT = 110, TEXTEMOTE_CUDDLE = 111, TEXTEMOTE_DUCK = 112, TEXTEMOTE_INSULT = 113, TEXTEMOTE_INTRODUCE = 114, TEXTEMOTE_JK = 115, TEXTEMOTE_LICK = 116, TEXTEMOTE_LISTEN = 117, TEXTEMOTE_LOST = 118, TEXTEMOTE_MOCK = 119, TEXTEMOTE_PONDER = 120, TEXTEMOTE_POUNCE = 121, TEXTEMOTE_PRAISE = 122, TEXTEMOTE_PURR = 123, TEXTEMOTE_PUZZLE = 124, TEXTEMOTE_RAISE = 125, TEXTEMOTE_READY = 126, TEXTEMOTE_SHIMMY = 127, TEXTEMOTE_SHIVER = 128, TEXTEMOTE_SHOO = 129, TEXTEMOTE_SLAP = 130, TEXTEMOTE_SMIRK = 131, TEXTEMOTE_SNIFF = 132, TEXTEMOTE_SNUB = 133, TEXTEMOTE_SOOTHE = 134, TEXTEMOTE_STINK = 135, TEXTEMOTE_TAUNT = 136, TEXTEMOTE_TEASE = 137, TEXTEMOTE_THIRSTY = 138, TEXTEMOTE_VETO = 139, TEXTEMOTE_SNICKER = 140, TEXTEMOTE_STAND = 141, TEXTEMOTE_TICKLE = 142, TEXTEMOTE_VIOLIN = 143, TEXTEMOTE_SMILE = 163, TEXTEMOTE_RASP = 183, TEXTEMOTE_PITY = 203, TEXTEMOTE_GROWL = 204, TEXTEMOTE_BARK = 205, TEXTEMOTE_SCARED = 223, TEXTEMOTE_FLOP = 224, TEXTEMOTE_LOVE = 225, TEXTEMOTE_MOO = 226, TEXTEMOTE_COMMEND = 243, TEXTEMOTE_JOKE = 329 } TextEmoteType; typedef enum { EMOTE_ONESHOT_NONE = 0, EMOTE_ONESHOT_TALK = 1, //DNR EMOTE_ONESHOT_BOW = 2, EMOTE_ONESHOT_WAVE = 3, //DNR EMOTE_ONESHOT_CHEER = 4, //DNR EMOTE_ONESHOT_EXCLAMATION = 5, //DNR EMOTE_ONESHOT_QUESTION = 6, EMOTE_ONESHOT_EAT = 7, EMOTE_STATE_DANCE = 10, EMOTE_ONESHOT_LAUGH = 11, EMOTE_STATE_SLEEP = 12, EMOTE_STATE_SIT = 13, EMOTE_ONESHOT_RUDE = 14, //DNR EMOTE_ONESHOT_ROAR = 15, //DNR EMOTE_ONESHOT_KNEEL = 16, EMOTE_ONESHOT_KISS = 17, EMOTE_ONESHOT_CRY = 18, EMOTE_ONESHOT_CHICKEN = 19, EMOTE_ONESHOT_BEG = 20, EMOTE_ONESHOT_APPLAUD = 21, EMOTE_ONESHOT_SHOUT = 22, //DNR EMOTE_ONESHOT_FLEX = 23, EMOTE_ONESHOT_SHY = 24, //DNR EMOTE_ONESHOT_POINT = 25, //DNR EMOTE_STATE_STAND = 26, EMOTE_STATE_READYUNARMED = 27, EMOTE_STATE_WORK = 28, EMOTE_STATE_POINT = 29, //DNR EMOTE_STATE_NONE = 30, EMOTE_ONESHOT_WOUND = 33, EMOTE_ONESHOT_WOUNDCRITICAL = 34, EMOTE_ONESHOT_ATTACKUNARMED = 35, EMOTE_ONESHOT_ATTACK1H = 36, EMOTE_ONESHOT_ATTACK2HTIGHT = 37, EMOTE_ONESHOT_ATTACK2HLOOSE = 38, EMOTE_ONESHOT_PARRYUNARMED = 39, EMOTE_ONESHOT_PARRYSHIELD = 43, EMOTE_ONESHOT_READYUNARMED = 44, EMOTE_ONESHOT_READY1H = 45, EMOTE_ONESHOT_READYBOW = 48, EMOTE_ONESHOT_SPELLPRECAST = 50, EMOTE_ONESHOT_SPELLCAST = 51, EMOTE_ONESHOT_BATTLEROAR = 53, EMOTE_ONESHOT_SPECIALATTACK1H = 54, EMOTE_ONESHOT_KICK = 60, EMOTE_ONESHOT_ATTACKTHROWN = 61, EMOTE_STATE_STUN = 64, EMOTE_STATE_DEAD = 65, EMOTE_ONESHOT_SALUTE = 66, EMOTE_STATE_KNEEL = 68, EMOTE_STATE_USESTANDING = 69, EMOTE_ONESHOT_WAVE_NOSHEATHE = 70, EMOTE_ONESHOT_CHEER_NOSHEATHE = 71, EMOTE_ONESHOT_EAT_NOSHEATHE = 92, EMOTE_STATE_STUN_NOSHEATHE = 93, EMOTE_ONESHOT_DANCE = 94, EMOTE_ONESHOT_SALUTE_NOSHEATH = 113, EMOTE_STATE_USESTANDING_NOSHEATHE = 133, EMOTE_ONESHOT_LAUGH_NOSHEATHE = 153, EMOTE_STATE_WORK_NOSHEATHE = 173, EMOTE_STATE_SPELLPRECAST = 193, EMOTE_ONESHOT_READYRIFLE = 213, EMOTE_STATE_READYRIFLE = 214, EMOTE_STATE_WORK_NOSHEATHE_MINING = 233, EMOTE_STATE_WORK_NOSHEATHE_CHOPWOOD= 234, EMOTE_zzOLDONESHOT_LIFTOFF = 253, EMOTE_ONESHOT_LIFTOFF = 254, EMOTE_ONESHOT_YES = 273, //DNR EMOTE_ONESHOT_NO = 274, //DNR EMOTE_ONESHOT_TRAIN = 275, //DNR EMOTE_ONESHOT_LAND = 293, EMOTE_STATE_AT_EASE = 313, EMOTE_STATE_READY1H = 333, EMOTE_STATE_SPELLKNEELSTART = 353, EMOTE_STATE_SUBMERGED = 373, EMOTE_ONESHOT_SUBMERGE = 374, EMOTE_STATE_READY2H = 375, EMOTE_STATE_READYBOW = 376, EMOTE_ONESHOT_MOUNTSPECIAL = 377, EMOTE_STATE_TALK = 378, EMOTE_STATE_FISHING = 379, EMOTE_ONESHOT_FISHING = 380, EMOTE_ONESHOT_LOOT = 381, EMOTE_STATE_WHIRLWIND = 382, EMOTE_STATE_DROWNED = 383, EMOTE_STATE_HOLD_BOW = 384, EMOTE_STATE_HOLD_RIFLE = 385, EMOTE_STATE_HOLD_THROWN = 386, EMOTE_ONESHOT_DROWN = 387, EMOTE_ONESHOT_STOMP = 388, EMOTE_ONESHOT_ATTACKOFF = 389, EMOTE_ONESHOT_ATTACKOFFPIERCE = 390, EMOTE_STATE_ROAR = 391, EMOTE_STATE_LAUGH = 392, EMOTE_ONESHOT_CREATURE_SPECIAL = 393, EMOTE_ONESHOT_JUMPANDRUN = 394, EMOTE_ONESHOT_JUMPEND = 395, EMOTE_ONESHOT_TALK_NOSHEATHE = 396, EMOTE_ONESHOT_POINT_NOSHEATHE = 397, EMOTE_STATE_CANNIBALIZE = 398, EMOTE_ONESHOT_JUMPSTART = 399, EMOTE_STATE_DANCESPECIAL = 400, EMOTE_ONESHOT_DANCESPECIAL = 401, EMOTE_ONESHOT_CUSTOMSPELL01 = 402, EMOTE_ONESHOT_CUSTOMSPELL02 = 403, EMOTE_ONESHOT_CUSTOMSPELL03 = 404, EMOTE_ONESHOT_CUSTOMSPELL04 = 405, EMOTE_ONESHOT_CUSTOMSPELL05 = 406, EMOTE_ONESHOT_CUSTOMSPELL06 = 407, EMOTE_ONESHOT_CUSTOMSPELL07 = 408, EMOTE_ONESHOT_CUSTOMSPELL08 = 409, EMOTE_ONESHOT_CUSTOMSPELL09 = 410, EMOTE_ONESHOT_CUSTOMSPELL10 = 411, EMOTE_STATE_EXCLAIM = 412, } EmoteType; enum StandState { STANDSTATE_STAND = 0, STANDSTATE_SIT = 1, STANDSTATE_SIT_CHAIR = 2, STANDSTATE_SLEEP = 3, STANDSTATE_SIT_LOW_CHAIR = 4, STANDSTATE_SIT_MEDIUM_CHAIR = 5, STANDSTATE_SIT_HIGH_CHAIR = 6, STANDSTATE_DEAD = 7, STANDSTATE_KNEEL = 8 }; enum UnitStates { UNIT_STATE_NORMAL = 0x01, UNIT_STATE_CHARM = 0x02, UNIT_STATE_FEAR = 0x04, UNIT_STATE_ROOT = 0x08, UNIT_STATE_SLEEP = 0x10, UNIT_STATE_SNARE = 0x20, UNIT_STATE_STUN = 0x40, UNIT_STATE_KNOCKOUT = 0x80, UNIT_STATE_BLEED = 0x100, UNIT_STATE_POLYMORPH = 0x200, UNIT_STATE_BANISH = 0x400, UNIT_STATE_CONFUSE = 0x800, UNIT_STATE_PACIFY = 0x1000, UNIT_STATE_SILENCE = 0x2000, UNIT_STATE_MOUNT = 0x4000,