Index: src/shared/SystemConfig.h =================================================================== --- src/shared/SystemConfig.h (revision 0) +++ src/shared/SystemConfig.h (working copy) @@ -0,0 +1,55 @@ +/* + * Copyright (C) 2005,2006 MaNGOS + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef MANGOS_SYSTEMCONFIG_H +#define MANGOS_SYSTEMCONFIG_H + +#include "Platform/CompilerDefs.h" + +#ifndef _VERSION +#if PLATFORM == PLATFORM_WIN32 +# define _VERSION "0.7-SVN" +#else +# define _VERSION "@VERSION@" +#endif +#endif + +// Format is YYYYMMDDRR where RR is the change in the conf file +// for that day. +#ifndef _MANGOSDCONFVERSION +# define _MANGOSDCONFVERSION 2006060401 +#endif +#ifndef _REALMDCONFVERSION +# define _REALMDCONFVERSION 2006060401 +#endif + +#if PLATFORM == PLATFORM_WIN32 +# define _FULLVERSION "/" _VERSION " (Win32)" +# define _MANGOSD_CONFIG "mangosd.conf" +# define _REALMD_CONFIG "realmd.conf" +#else +# define _FULLVERSION "/" _VERSION " (Unix)" +# define _MANGOSD_CONFIG "@MANGOSD_CONFIG@" +# define _REALMD_CONFIG "@REALMD_CONFIG@" +#endif + +#define DEFAULT_PLAYER_LIMIT 100 +#define DEFAULT_WORLDSERVER_PORT 8085 //8129 +#define DEFAULT_REALMSERVER_PORT 3724 +#define DEFAULT_SOCKET_SELECT_TIME 10000 +#endif Index: src/game/Creature.h =================================================================== --- src/game/Creature.h (working copy) +++ src/game/Creature.h (working copy) @@ -165,7 +165,6 @@ uint32 baseattacktime; uint32 rangeattacktime; uint32 Flags; - uint32 mount; uint32 dynamicflags; float size; uint32 family; Index: src/game/QuestDef.h =================================================================== --- src/game/QuestDef.h (working copy) +++ src/game/QuestDef.h (working copy) @@ -29,7 +29,7 @@ class ObjectMgr; // (PLAYER_VISIBLE_ITEM_1_CREATOR - PLAYER_QUEST_LOG_1_1)/3 -#define MAX_QUEST_LOG_SIZE 20 +#define MAX_QUEST_LOG_SIZE 25 #define QUEST_OBJECTIVES_COUNT 4 #define QUEST_SOURCE_ITEM_IDS_COUNT 4 @@ -37,8 +37,9 @@ #define QUEST_REWARDS_COUNT 4 #define QUEST_DEPLINK_COUNT 10 #define QUEST_REPUTATIONS_COUNT 5 +#define QUEST_EMOTE_COUNT 4 -enum +enum QuestFailedReasons { INVALIDREASON_DONT_HAVE_REQ = 0, INVALIDREASON_DONT_HAVE_REQLEVEL = 1, @@ -49,7 +50,7 @@ INVALIDREASON_DONT_HAVE_REQ_MONEY = 21+1, //1.12.1 }; -enum +enum QuestShareMessages { QUEST_PARTY_MSG_SHARING_QUEST = 0, QUEST_PARTY_MSG_CANT_TAKE_QUEST = 1, Index: src/game/ObjectDefines.h =================================================================== --- src/game/ObjectDefines.h (working copy) +++ src/game/ObjectDefines.h (working copy) @@ -21,13 +21,13 @@ enum HIGHGUID { - HIGHGUID_ITEM = 0x40000070, - HIGHGUID_CONTAINER = 0x40000070, - HIGHGUID_UNIT = 0xF0001000, - HIGHGUID_PLAYER = 0x00000000, - HIGHGUID_GAMEOBJECT = 0xF0004000, - HIGHGUID_DYNAMICOBJECT = 0xF000A000, - HIGHGUID_CORPSE = 0xF0007000, + HIGHGUID_ITEM = 0x40000070, // blizz 40000000 + HIGHGUID_CONTAINER = 0x40000070, // blizz 40000000 + HIGHGUID_UNIT = 0xF0001000, // blizz F009???? (random), ???? is unit entry + HIGHGUID_PLAYER = 0x00000000, // blizz 0 + HIGHGUID_GAMEOBJECT = 0xF0004000, // blizz F0090000 + HIGHGUID_DYNAMICOBJECT = 0xF000A000, // blizz F0090000, F0320000 + HIGHGUID_CORPSE = 0xF0090000, // blizz F0090000, F0320000 HIGHGUID_PLAYER_CORPSE = 0x80000001, // ?? HIGHGUID_TRANSPORT = 0x80000000 }; Index: src/game/Player.h =================================================================== --- src/game/Player.h (working copy) +++ src/game/Player.h (working copy) @@ -264,14 +264,6 @@ PLAYER_STATE_FLAG_ALL = 0xFF000000, }; -enum TYPE_OF_KILL -{ - HONORABLE_KILL = 1, - DISHONORABLE_KILL = 2, -}; - -#define HONOR_RANK_COUNT 16 - enum PlayerFlags { PLAYER_FLAGS_GROUP_LEADER = 0x00000001, @@ -280,13 +272,60 @@ PLAYER_FLAGS_GM = 0x00000008, PLAYER_FLAGS_GHOST = 0x00000010, PLAYER_FLAGS_RESTING = 0x00000020, + PLAYER_FLAGS_FFA_PVP = 0x00000080, + PLAYER_FLAGS_UNK = 0x00000100, // 2.0.8, bg related? PLAYER_FLAGS_IN_PVP = 0x00000200, PLAYER_FLAGS_HIDE_HELM = 0x00000400, PLAYER_FLAGS_HIDE_CLOAK = 0x00000800, - PLAYER_FLAGS_UNK = 0x00001000, //played long time - PLAYER_FLAGS_UNK2 = 0x00002000, //played too long time + PLAYER_FLAGS_UNK1 = 0x00001000, //played long time + PLAYER_FLAGS_UNK2 = 0x00002000, //played too long time + PLAYER_FLAGS_UNK3 = 0x00008000, //strange visual effect (2.0.1) + PLAYER_FLAGS_UNK4 = 0x00020000, //taxi benchmark mode (on/off) (2.0.1) + PLAYER_UNK = 0x00040000, //2.0.8... }; +enum PlayerKnownTitles +{ + PLAYER_TITLE_DISABLED = 0x00000000, + PLAYER_TITLE_NONE = 0x00000001, + PLAYER_TITLE_PRIVATE = 0x00000002, + PLAYER_TITLE_CORPORAL = 0x00000004, + PLAYER_TITLE_SERGEANT_A = 0x00000008, + PLAYER_TITLE_MASTER_SERGEANT = 0x00000010, + PLAYER_TITLE_SERGEANT_MAJOR = 0x00000020, + PLAYER_TITLE_KNIGHT = 0x00000040, + PLAYER_TITLE_KNIGHT_LIEUTENANT = 0x00000080, + PLAYER_TITLE_KNIGHT_CAPTAIN = 0x00000100, + PLAYER_TITLE_KNIGHT_CHAMPION = 0x00000200, + PLAYER_TITLE_LIEUTENANT_COMMANDER = 0x00000400, + PLAYER_TITLE_COMMANDER = 0x00000800, + PLAYER_TITLE_MARSHAL = 0x00001000, + PLAYER_TITLE_FIELD_MARSHAL = 0x00002000, + PLAYER_TITLE_GRAND_MARSHAL = 0x00004000, + PLAYER_TITLE_SCOUT = 0x00008000, + PLAYER_TITLE_GRUNT = 0x00010000, + PLAYER_TITLE_SERGEANT_H = 0x00020000, + PLAYER_TITLE_SENIOR_SERGEANT = 0x00040000, + PLAYER_TITLE_FIRST_SERGEANT = 0x00080000, + PLAYER_TITLE_STONE_GUARD = 0x00100000, + PLAYER_TITLE_BLOOD_GUARD = 0x00200000, + PLAYER_TITLE_LEGIONNAIRE = 0x00400000, + PLAYER_TITLE_CENTURION = 0x00800000, + PLAYER_TITLE_CHAMPION = 0x01000000, + PLAYER_TITLE_LIEUTENANT_GENERAL = 0x02000000, + PLAYER_TITLE_GENERAL = 0x04000000, + PLAYER_TITLE_WARLORD = 0x08000000, + PLAYER_TITLE_HIGH_WARLORD = 0x10000000, + PLAYER_TITLE_UNUSED1 = 0x20000000, + PLAYER_TITLE_UNUSED2 = 0x40000000 +}; + +enum DungeonDifficulties +{ + DUNGEONDIFFICULTY_NORMAL = 0, + DUNGEONDIFFICULTY_HEROIC = 1 +}; + enum LootType { LOOT_CORPSE = 1, @@ -329,7 +368,7 @@ // first slot for item stored (in any way in player m_items data) PLAYER_SLOT_START = 0, // last+1 slot for item stored (in any way in player m_items data) - PLAYER_SLOT_END = 97, + PLAYER_SLOT_END = 118, PLAYER_SLOTS_COUNT = (PLAYER_SLOT_END - PLAYER_SLOT_START) }; @@ -415,41 +454,45 @@ BANK_SLOT_ITEM_22 = 60, BANK_SLOT_ITEM_23 = 61, BANK_SLOT_ITEM_24 = 62, - BANK_SLOT_ITEM_END = 63, + BANK_SLOT_ITEM_25 = 63, + BANK_SLOT_ITEM_26 = 64, + BANK_SLOT_ITEM_27 = 65, + BANK_SLOT_ITEM_28 = 66, + BANK_SLOT_ITEM_END = 67, - BANK_SLOT_BAG_START = 63, - BANK_SLOT_BAG_1 = 63, - BANK_SLOT_BAG_2 = 64, - BANK_SLOT_BAG_3 = 65, - BANK_SLOT_BAG_4 = 66, - BANK_SLOT_BAG_5 = 67, - BANK_SLOT_BAG_6 = 68, - BANK_SLOT_BAG_END = 69 + BANK_SLOT_BAG_START = 67, + BANK_SLOT_BAG_1 = 67, + BANK_SLOT_BAG_2 = 68, + BANK_SLOT_BAG_3 = 69, + BANK_SLOT_BAG_4 = 70, + BANK_SLOT_BAG_5 = 71, + BANK_SLOT_BAG_6 = 72, + BANK_SLOT_BAG_7 = 73, + BANK_SLOT_BAG_END = 74 }; enum BuyBackSlots { // strored in m_buybackitems - BUYBACK_SLOT_START = 69, - BUYBACK_SLOT_1 = 69, - BUYBACK_SLOT_2 = 70, - BUYBACK_SLOT_3 = 71, - BUYBACK_SLOT_4 = 72, - BUYBACK_SLOT_5 = 73, - BUYBACK_SLOT_6 = 74, - BUYBACK_SLOT_7 = 75, - BUYBACK_SLOT_8 = 76, - BUYBACK_SLOT_9 = 77, - BUYBACK_SLOT_10 = 78, - BUYBACK_SLOT_11 = 79, - BUYBACK_SLOT_12 = 80, - BUYBACK_SLOT_END = 81 + BUYBACK_SLOT_START = 74, + BUYBACK_SLOT_1 = 74, + BUYBACK_SLOT_2 = 75, + BUYBACK_SLOT_3 = 76, + BUYBACK_SLOT_4 = 77, + BUYBACK_SLOT_5 = 78, + BUYBACK_SLOT_6 = 79, + BUYBACK_SLOT_7 = 80, + BUYBACK_SLOT_8 = 81, + BUYBACK_SLOT_9 = 82, + BUYBACK_SLOT_10 = 83, + BUYBACK_SLOT_11 = 84, + BUYBACK_SLOT_12 = 85, + BUYBACK_SLOT_END = 86 }; - enum KeyRingSLots { - KEYRING_SLOT_START = 81, - KEYRING_SLOT_END = 97 + KEYRING_SLOT_START = 86, + KEYRING_SLOT_END = 118 }; enum SwitchWeapon @@ -475,13 +518,24 @@ MOVEMENTFLAG_RIGHT = 0x20, MOVEMENTFLAG_PITCH_UP = 0x40, MOVEMENTFLAG_PITCH_DOWN = 0x80, - MOVEMENTFLAG_WALK = 0x100, + MOVEMENTFLAG_ONTRANSPORT = 0x200, + // 0x400 + MOVEMENTFLAG_FLY_UNK1 = 0x800, + MOVEMENTFLAG_UNK4 = 0x1000, MOVEMENTFLAG_JUMPING = 0x2000, MOVEMENTFLAG_FALLING = 0x4000, - MOVEMENTFLAG_SWIMMING = 0x200000, - MOVEMENTFLAG_ONTRANSPORT = 0x2000000, - MOVEMENTFLAG_SPLINE = 0x4000000 + // 0x8000, 0x10000, 0x20000, 0x40000, 0x80000, 0x100000 + MOVEMENTFLAG_SWIMMING = 0x200000, // appears with fly also, swim in air LOL + MOVEMENTFLAG_FLY_UP = 0x400000, + MOVEMENTFLAG_CAN_FLY = 0x800000, + MOVEMENTFLAG_FLYING = 0x1000000, + // 0x2000000 + MOVEMENTFLAG_SPLINE = 0x4000000, + // 0x8000000 + MOVEMENTFLAG_WATERWALKING = 0x10000000, + MOVEMENTFLAG_UNK2 = 0x20000000, + MOVEMENTFLAG_UNK3 = 0x40000000 }; typedef HM_NAMESPACE::hash_map< uint32, std::pair < uint32, uint32 > > BoundInstancesMap; Index: src/game/Opcodes.h =================================================================== --- src/game/Opcodes.h (working copy) +++ src/game/Opcodes.h (working copy) @@ -93,7 +93,7 @@ SMSG_NEW_WORLD = 62, SMSG_TRANSFER_PENDING = 63, SMSG_TRANSFER_ABORTED = 64, - SMSG_CHARACTER_LOGIN_FAILED = 65, + SMSG_CHARACTER_LOGIN_FAILED = 65, // kick client to character select screen and show "World server is down". SMSG_LOGIN_SETTIMESPEED = 66, SMSG_GAMETIME_UPDATE = 67, CMSG_GAMETIME_SET = 68, @@ -401,16 +401,16 @@ SMSG_PUREMOUNT_CANCELLED_OBSOLETE = 368, CMSG_MOUNTSPECIAL_ANIM = 369, SMSG_MOUNTSPECIAL_ANIM = 370, - SMSG_PET_TAME_FAILURE = 371, + SMSG_PET_TAME_FAILURE = 371, // Creature not found. CMSG_PET_SET_ACTION = 372, CMSG_PET_ACTION = 373, CMSG_PET_ABANDON = 374, CMSG_PET_RENAME = 375, - SMSG_PET_NAME_INVALID = 376, + SMSG_PET_NAME_INVALID = 376, // Error, invalid name entered. SMSG_PET_SPELLS = 377, //CMSG_PET_CAST_SPELL_OBSOLETE = 378, //OBSOLETE - SMSG_PET_MODE = 378, + SMSG_PET_MODE = 378, // uint64 pet_guid + uint32 flags? CMSG_GOSSIP_HELLO = 379, CMSG_GOSSIP_SELECT_OPTION = 380, SMSG_GOSSIP_MESSAGE = 381, @@ -470,7 +470,7 @@ SMSG_TRAINER_BUY_SUCCEEDED = 435, SMSG_TRAINER_BUY_FAILED = 436, CMSG_BINDER_ACTIVATE = 437, - SMSG_PLAYERBINDERROR = 438, + SMSG_PLAYERBINDERROR = 438, // You already bound there. CMSG_BANKER_ACTIVATE = 439, SMSG_SHOW_BANK = 440, CMSG_BUY_BANK_SLOT = 441, @@ -511,7 +511,7 @@ CMSG_PING = 476, SMSG_PONG = 477, SMSG_CLEAR_COOLDOWN = 478, - SMSG_GAMEOBJECT_PAGETEXT = 479, + SMSG_GAMEOBJECT_PAGETEXT = 479, // uint64 guid CMSG_SETSHEATHED = 480, SMSG_COOLDOWN_CHEAT = 481, SMSG_SPELL_DELAYED = 482, @@ -521,10 +521,10 @@ CMSG_GM_INVIS = 486, //CMSG_SCREENSHOT = 487, //OBSOLETE - SMSG_INVALID_PROMOTION_CODE = 487, + SMSG_INVALID_PROMOTION_CODE = 487, // Couldn't validate code, please try again. MSG_GM_BIND_OTHER = 488, MSG_GM_SUMMON = 489, - SMSG_ITEM_TIME_UPDATE = 490, + SMSG_ITEM_TIME_UPDATE = 490, // uint64 guid + uint32 time SMSG_ITEM_ENCHANT_TIME_UPDATE = 491, SMSG_AUTH_CHALLENGE = 492, CMSG_AUTH_SESSION = 493, @@ -686,7 +686,7 @@ CMSG_AUTOBANK_ITEM = 643, MSG_QUERY_NEXT_MAIL_TIME = 644, SMSG_RECEIVED_MAIL = 645, - SMSG_RAID_GROUP_ONLY = 646, + SMSG_RAID_GROUP_ONLY = 646, // You are not in this instance group. You will be teleported to %s in %u Minites. uint32 time(milliseconds)+uint32 unk CMSG_SET_DURABILITY_CHEAT = 647, CMSG_SET_PVP_RANK_CHEAT = 648, CMSG_ADD_PVP_MEDAL_CHEAT = 649, @@ -703,9 +703,9 @@ CMSG_MEETINGSTONE_CHEAT = 660, SMSG_MEETINGSTONE_SETQUEUE = 661, CMSG_MEETINGSTONE_INFO = 662, - SMSG_MEETINGSTONE_COMPLETE = 663, - SMSG_MEETINGSTONE_IN_PROGRESS = 664, - SMSG_MEETINGSTONE_MEMBER_ADDED = 665, + SMSG_MEETINGSTONE_COMPLETE = 663, // Your group is complete, you have left the LFG matchmaking system. + SMSG_MEETINGSTONE_IN_PROGRESS = 664, // You still seeking more members through LFG matchmaking system., empty? + SMSG_MEETINGSTONE_MEMBER_ADDED = 665, // %s has been added to the group by the LFG matchmaking system. CMSG_GMTICKETSYSTEM_TOGGLE = 666, CMSG_CANCEL_GROWTH_AURA = 667, SMSG_CANCEL_AUTO_REPEAT = 668, @@ -719,11 +719,11 @@ SMSG_LOOT_MASTER_LIST = 676, SMSG_SET_FORCED_REACTIONS = 677, SMSG_SPELL_FAILED_OTHER = 678, - SMSG_GAMEOBJECT_RESET_STATE = 679, + SMSG_GAMEOBJECT_RESET_STATE = 679, // uint64 guid CMSG_REPAIR_ITEM = 680, SMSG_CHAT_PLAYER_NOT_FOUND = 681, MSG_TALENT_WIPE_CONFIRM = 682, - SMSG_SUMMON_REQUEST = 683, + SMSG_SUMMON_REQUEST = 683, // uint64 guid + uint32 area/zoneid + uint32 time(milliseconds?) CMSG_SUMMON_RESPONSE = 684, MSG_MOVE_TOGGLE_GRAVITY_CHEAT = 685, SMSG_MONSTER_MOVE_TRANSPORT = 686, @@ -742,7 +742,7 @@ //SMSG_SPELL_REFLECTED = 699, //OBSOLETE SMSG_MEETINGSTONE_JOINFAILED = 699, - SMSG_PLAYER_SKINNED = 700, + SMSG_PLAYER_SKINNED = 700, // uint8 0x00 SMSG_DURABILITY_DAMAGE_DEATH = 701, CMSG_SET_EXPLORATION = 702, CMSG_SET_ACTIONBAR_TOGGLES = 703, @@ -752,7 +752,7 @@ SMSG_UPDATE_WORLD_STATE = 707, CMSG_ITEM_NAME_QUERY = 708, SMSG_ITEM_NAME_QUERY_RESPONSE = 709, - SMSG_PET_ACTION_FEEDBACK = 710, + SMSG_PET_ACTION_FEEDBACK = 710, // uint8 0x04, 0x01 CMSG_CHAR_RENAME = 711, SMSG_CHAR_RENAME = 712, CMSG_MOVE_SPLINE_DONE = 713, @@ -781,52 +781,190 @@ MSG_PVP_LOG_DATA = 736, CMSG_LEAVE_BATTLEFIELD = 737, CMSG_AREA_SPIRIT_HEALER_QUERY = 738, - CMSG_AREA_SPIRIT_HEALER_QUEUE = 739, - SMSG_AREA_SPIRIT_HEALER_TIME = 740, - CMSG_GM_UNTEACH = 739, - SMSG_HARDWARE_SURVEY_REQUEST = 740, + CMSG_AREA_SPIRIT_HEALER_QUEUE = 739, // WTF? + SMSG_AREA_SPIRIT_HEALER_TIME = 740, // WTF?, uint64 guid+uint32 time? + //CMSG_GM_UNTEACH = 739, // WTF? + //SMSG_HARDWARE_SURVEY_REQUEST = 740, // WTF? CMSG_HARDWARE_SURVEY_RESULTS = 741, SMSG_WARDEN_DATA = 742, CMSG_WARDEN_DATA = 743, - SMSG_GROUP_JOINED_BATTLEGROUND = 744, + SMSG_GROUP_JOINED_BATTLEGROUND = 744, // uint32 0xfffffffc, probably different error messages... MSG_BATTLEGROUND_PLAYER_POSITIONS = 745, - - //strange!! - //MSG_BINDPOINT_CONFIRM = SMSG_BINDER_CONFIRM, - - //TODO Check double check if the -2 is correct CMSG_PET_STOP_ATTACK = 746, SMSG_BINDER_CONFIRM = 747, SMSG_BATTLEGROUND_PLAYER_JOINED = 748, SMSG_BATTLEGROUND_PLAYER_LEFT = 749, CMSG_BATTLEMASTER_JOIN = 750, - - SMSG_ADDON_INFO = 753-2, - CMSG_PET_UNLEARN = 754-2, - SMSG_PET_UNLEARN_CONFIRM = 755-2, - SMSG_PARTY_MEMBER_STATS_FULL = 756-2, - CMSG_PET_SPELL_AUTOCAST = 757-2, - SMSG_WEATHER = 758-2, - SMSG_PLAY_TIME_WARNING = 759-2, - SMSG_MINIGAME_SETUP = 760-2, - SMSG_MINIGAME_STATE = 761-2, - CMSG_MINIGAME_MOVE = 762-2, - SMSG_MINIGAME_MOVE_FAILED = 763-2, + SMSG_ADDON_INFO = 751, + CMSG_PET_UNLEARN = 752, + SMSG_PET_UNLEARN_CONFIRM = 753, + SMSG_PARTY_MEMBER_STATS_FULL = 754, + CMSG_PET_SPELL_AUTOCAST = 755, + SMSG_WEATHER = 756, + SMSG_PLAY_TIME_WARNING = 757, + SMSG_MINIGAME_SETUP = 758, + SMSG_MINIGAME_STATE = 759, + CMSG_MINIGAME_MOVE = 760, + SMSG_MINIGAME_MOVE_FAILED = 761, + // 762 + SMSG_COMPRESSED_MOVE = 763, CMSG_GUILD_CHANGEINFO = 764, - SMSG_UNKNOWN_INFO = 766, - + SMSG_UNKNOWN_765 = 765, // Trial accounts can not send unlimited tells, you must wait before you can send tells to more players. + SMSG_SET_MOVE_SPEED = 766, // GUID + float speed, move speed, except swim/turn/fly + SMSG_SET_RUN_BACK_SPEED = 767, // GUID + float speed, run back speed + SMSG_SET_SWIM_SPEED = 768, // GUID + float speed, swim and swim back speed + // 769 + SMSG_SET_SWIM_BACK_SPEED = 770, // swim back speed + SMSG_SET_TURN_RATE = 771, // turn rate (note: client crashes if fly mode enabled, and turn rate = 0) + SMSG_UNKNOWN_772 = 772, // packed GUID + SMSG_UNKNOWN_773 = 773, // set movement flag 0x20000000 + SMSG_UNKNOWN_774 = 774, // stop effect of 773 opcode + SMSG_UNKNOWN_775 = 775, // movement related, looks like hover, movement flag 0x40000000, we can't jump if we are lands + SMSG_UNKNOWN_776 = 776, // stop effect of 775 opcode + SMSG_MOVE_SET_WATERWALK = 777, // packed GUID, set movement flag 0x10000000, waterwalking... + SMSG_MOVE_STOP_WATERWALK = 778, // packed GUID, stop effect of 777 opcode + SMSG_UNKNOWN_779 = 779, // packed guid, change animation to swim/fly like + SMSG_UNKNOWN_780 = 780, // packed guid + SMSG_MOVE_STOP_WALK = 781, // packed guid, remove 0x100 movement flag (walk) + SMSG_MOVE_START_WALK = 782, // set 0x100 movement flag (walk) + // 783 + // 784 + // 785 CMSG_ACTIVATETAXI_FAR = 786, - //griphon related = 786 - + // 787 causes client crash + // 788 + // 789 + // 790 CMSG_FIELD_WATCHED_FACTION_INACTIVE = 791, CMSG_FIELD_WATCHED_FACTION_SHOW_BAR = 792, - - MSG_RAID_ICON_TARGET = 801, - MSG_RAID_READY_CHECK = 802, - - // unofficial opcodes: - SMSG_COMPRESSED_MOVE = 0x2FB,// 763 - SMSG_OUTDOORPVP_NOTIFY = 0x33B,// 827 + SMSG_UNKNOWN_793 = 793, // packed guid + uint32 + SMSG_UNKNOWN_794 = 794, // packed guid, movement related, set 0x1000 movement flag, all speed to 0, except turn rate + // 795 + SMSG_UNKNOWN_796 = 796, // uint64, guid? + CMSG_RESET_INSTANCES = 797, // reset instances, empty + SMSG_RESET_INSTANCES_RESULT = 798, // chat message: %u (number) has been reset. + // 799 + SMSG_UNKNOWN_800 = 800, // uint32 mapid, instance related + MSG_RAID_ICON_TARGET = 801, // uint8+uint8+uint64 guid + MSG_RAID_READY_CHECK = 802, // uint64+uint8 + // 803 + SMSG_AI_UNKNOWN = 804, // GUID + uint32, looks like SMSG_AI_REACTION + SMSG_UNKNOWN_805 = 805, // uint32 unk + x, y, z + // 806 + // 807 + SMSG_UNKNOWN_808 = 808, // uint32, probably gm ticket related + MSG_SET_DUNGEON_DIFFICULTY = 809, // uint32+uint32+uint32 + // 810 + SMSG_UNKNOWN_811 = 811, // uint32, 0x0 + // 812 + // 813 + // 814 + SMSG_UNKNOWN_815 = 815, // spell related, uint64 guid + spellid + SMSG_UNKNOWN_816 = 816, // spell related, uint64 guid + spellid + uint32 unk + uint64 guid (target?) + // 817 + SMSG_UNKNOWN_818 = 818, // 2.0.8, received before server MOTD, strange regexp sequence, looks like anti spam for chat messages... + // 819 + // 820 + // 821 + // 822 + // 823 + // 824 + // 825 + SMSG_OUTDOORPVP_NOTIFY = 826, // looks like chat packets + SMSG_OUTDOORPVP_NOTIFY2 = 827, // may be it's changed to 826? + // 828 + SMSG_MOTD = 829, // server MOTD message, uint32 + message + // 830 + // 831 + // 832 + SMSG_UNKNOWN_833 = 833, // teleport + SMSG_UNKNOWN_834 = 834, // teleport + SMSG_FLY_MODE_START = 835, // packed guid + uint32, start fly + SMSG_FLY_MODE_STOP = 836, // packed guid + uint32, stop fly + CMSG_MOVE_FLY_MODE_CHANGE_ACK = 837, // movement related, fly on/off ack + CMSG_MOVE_FLY_STATE_CHANGE = 838, // movement related, fly start/stop(land) ack, may be MSG + CMSG_SOCKET_ITEM = 839, // click on "Socket Gems" button in Jewelcrafting UI, contains uint64 item guid + 3 x uint64 gems guid's + // 840 + SMSG_ARENA_TEAM_COMMAND_RESULT = 841, // uint32(5)+uint16(0)+uint32(9) You not in arena team that size + // 842 + CMSG_ARENA_TEAM_QUERY = 843, + SMSG_ARENA_TEAM_QUERY_RESPONSE = 844, + CMSG_ARENA_TEAM_ROSTER = 845, + SMSG_ARENA_TEAM_ROSTER = 846, + CMSG_ARENA_TEAM_ADD_MEMBER = 847, + SMSG_ARENA_TEAM_INVITE = 848, + CMSG_ARENA_TEAM_INVITE_ACCEPT = 849, + CMSG_ARENA_TEAM_INVITE_DECLINE = 850, + CMSG_ARENA_TEAM_LEAVE = 851, + CMSG_ARENA_TEAM_REMOVE_FROM_TEAM = 852, + CMSG_ARENA_TEAM_DISBAND = 853, + CMSG_ARENA_TEAM_PROMOTE_TO_CAPTAIN = 854, // also must be demote opcode... + SMSG_UNKNOWN_855 = 855, // guild related... + // 856 + MSG_MOVE_START_FLY_UP = 857, // movement related, fly up, possible MSG + MSG_MOVE_STOP_FLY_UP = 858, // movement related, stop fly up, possible MSG + SMSG_ARENA_TEAM_STATS = 859, + CMSG_LFG_SET_AUTOJOIN = 860, + CMSG_LFG_UNSET_AUTOJOIN = 861, + CMSG_LFM_SET_AUTOADD = 862, + CMSG_LFM_UNSET_AUTOADD = 863, + CMSG_LFG_INVITE_ACCEPT = 864, + CMSG_LFG_INVITE_CANCEL = 865, + // 866 + CMSG_LOOKING_FOR_GROUP_CLEAR = 867, + CMSG_SET_LOOKING_FOR_NONE = 868, + CMSG_SET_LOOKING_FOR_MORE = 869, + CMSG_SET_COMMENTARY = 870, + SMSG_LFG_871 = 871, // Matchmaking timed out. + SMSG_LFG_872 = 872, // Matchmaking timed out waiting for other player. + SMSG_LFG_873 = 873, // Group no longer available. + SMSG_LFG_874 = 974, // Matched Player(s) have gone offline. + // 875 + SMSG_LFG_876 = 876, // LFM eye, in progress, uint16+uint32+uint8?, 3 x uint8(0x0) + SMSG_LFG_877 = 877, // cause client send CMSG_SET_LOOKING_FOR_GROUP, uint32+uint8? + SMSG_LFG_878 = 878, // cause client send CMSG_SET_LOOKING_FOR_GROUP + SMSG_LFG_879 = 879, // LFG eye, cause client send CMSG_SET_LOOKING_FOR_GROUP + SMSG_LFG_INVITE = 880, // show invite dialog: The LFG system has matched you to a group for %s. + SMSG_LFG_881 = 881, // The LFG system is waiting to complete match for %s. + // 882 + // 883 + CMSG_CHOOSE_TITLE = 884, + CMSG_DISMOUNT = 885, // /dismount command + // 886 + MSG_INSPECT_ARENA_STATS = 887, + SMSG_SH_POSITION = 888, // spirit healer position, map/x/y/z, at player death... + CMSG_CANCEL_ITEM_TEMP_ENCHANTMENT = 889, // cancel special item enchantment + // 890 + // 891 + // 892 + // 893 + SMSG_MOVE_SET_FLY_SPEED = 894, // all fly speed, packed guid, uint32 movement_flags, time, x,y,z,o,unk,speed... + // 895 + SMSG_MOVE_SET_FLY_BACK_SPEED = 896, + SMSG_FORCE_FLY_SPEED_CHANGE = 897, // packed guid, uint32, speed + CMSG_FORCE_FLY_SPEED_CHANGE_ACK = 898, + SMSG_FORCE_FLY_BACK_SPEED_CHANGE = 899, + CMSG_FORCE_FLY_BACK_SPEED_CHANGE_ACK = 900, + SMSG_MOVE_SET_FLY_SPEED2 = 901, // same as 894, strange, packed guid+speed + SMSG_MOVE_SET_FLY_BACK_SPEED2 = 902, // same as 896, strange, + // 903 + // 904 + // 905 + // 906 + SMSG_REALM_STATE_RESPONSE = 907, // responce to 908 opcode, 4 x uint32 + uint8 + CMSG_REALM_STATE_REQUEST = 908, // realm related, uint32+uint32+3*(uint16+uint8), appears at select character screen, uint32 0xFFFFFFFF + CMSG_MOVE_SHIP_909 = 909, // movement related, transport related(ships) + CMSG_GROUP_PROMOTE = 910, // make main-tank / main-assistant + // 911 + SMSG_ALLOW_MOVE = 912, // uint32, allow player movement, value increments every time and reset to 0 after far teleport, used for client-server synchronization + CMSG_ALLOW_MOVE_ACK = 913, // client responce to SMSG_ALLOW_MOVE + // 914 + // 915 + // 916 + // 917 + SMSG_UNKNOWN_918 = 918, // chat message: The party leader has attempted to reset the instance you are in. Please zone out to allow the instance to reset. + SMSG_UNKNOWN_919 = 919, // uint8(0)+uint32(0/1)+uint64(unk/guid) + SMSG_UNKNOWN_920 = 920, // notify message: This system is currently disabled. }; /// Results of friend related commands @@ -861,10 +999,10 @@ UNIT_NPC_FLAG_TAXIVENDOR = 8, UNIT_NPC_FLAG_TRAINER = 16, UNIT_NPC_FLAG_SPIRITHEALER = 32, - UNIT_NPC_FLAG_GUARD = 64, //UQ1: ??? We can use as guard flag? + UNIT_NPC_FLAG_GUARD = 64, //UQ1: ??? We can use as guard flag?, used by blizz for BattleGround spirit guides... (entry 13116 and 13117) UNIT_NPC_FLAG_INNKEEPER = 128, UNIT_NPC_FLAG_BANKER = 256, - UNIT_NPC_FLAG_PETITIONER = 512, + UNIT_NPC_FLAG_PETITIONER = 512, // 1024+512 = guild petitions, 512 = arena team petitions UNIT_NPC_FLAG_TABARDVENDOR = 1024, UNIT_NPC_FLAG_BATTLEFIELDPERSON = 2048, UNIT_NPC_FLAG_AUCTIONEER = 4096, Index: src/game/Unit.h =================================================================== --- src/game/Unit.h (working copy) +++ src/game/Unit.h (working copy) @@ -53,22 +53,25 @@ enum ShapeshiftForm { - FORM_CAT = 1, - FORM_TREE = 2, - FORM_TRAVEL = 3, - FORM_AQUA = 4, - FORM_BEAR = 5, - FORM_AMBIENT = 6, - FORM_GHOUL = 7, - FORM_DIREBEAR = 8, - FORM_CREATUREBEAR = 14, - FORM_GHOSTWOLF = 16, - FORM_BATTLESTANCE = 17, - FORM_DEFENSIVESTANCE = 18, - FORM_BERSERKERSTANCE = 19, - FORM_SHADOW = 28, - FORM_STEALTH = 30, - FORM_MOONKIN = 31 + FORM_CAT = 1, + FORM_TREE = 2, + FORM_TRAVEL = 3, + FORM_AQUA = 4, + FORM_BEAR = 5, + FORM_AMBIENT = 6, + FORM_GHOUL = 7, + FORM_DIREBEAR = 8, + FORM_CREATUREBEAR = 14, + FORM_CREATURECAT = 15, + FORM_GHOSTWOLF = 16, + FORM_BATTLESTANCE = 17, + FORM_DEFENSIVESTANCE = 18, + FORM_BERSERKERSTANCE = 19, + FORM_SHADOW = 28, + FORM_FLIGHT = 29, + FORM_STEALTH = 30, + FORM_MOONKIN = 31, + FORM_SPIRITOFREDEMPTION = 32 }; #define CREATURE_MAX_SPELLS 4 @@ -178,7 +181,7 @@ UNIT_STAT_SEARCHING = 64, UNIT_STAT_FLEEING = 128, UNIT_STAT_MOVING = (UNIT_STAT_ROAMING | UNIT_STAT_CHASE | UNIT_STAT_SEARCHING | UNIT_STAT_FLEEING), - UNIT_STAT_IN_FLIGHT = 256, // player is i n flight mode + UNIT_STAT_IN_FLIGHT = 256, // player is in flight mode UNIT_STAT_FOLLOW = 512, UNIT_STAT_ROOT = 1024, UNIT_STAT_CONFUSED = 2048, @@ -192,10 +195,12 @@ MOVE_WALKBACK = 2, MOVE_SWIM = 3, MOVE_SWIMBACK = 4, - MOVE_TURN = 5 + MOVE_TURN = 5, + MOVE_FLY = 6, + MOVE_FLYBACK = 7 }; -#define MAX_MOVE_TYPE 6 +#define MAX_MOVE_TYPE 8 extern float baseMoveSpeed[MAX_MOVE_TYPE]; @@ -237,13 +242,23 @@ UNIT_FLAG_NONE = 0x00000000, UNIT_FLAG_DISABLE_MOVE = 0x00000004, UNIT_FLAG_UNKNOWN1 = 0x00000008, // essential for all units.. - UNIT_FLAG_RENAME = 0x00000010, // rename creature + UNIT_FLAG_RENAME = 0x00000010, // rename creature, not working in 2.0.8 UNIT_FLAG_RESTING = 0x00000020, + UNIT_FLAG_UNKNOWN2 = 0x00000100, // 2.0.8 + UNIT_FLAG_UNKNOWN3 = 0x00000800, // in combat ?2.0.8 UNIT_FLAG_PVP = 0x00001000, UNIT_FLAG_MOUNT = 0x00002000, - UNIT_FLAG_DISABLE_ROTATE = 0x00040000, + UNIT_FLAG_UNKNOWN4 = 0x00004000, // 2.0.8 + UNIT_FLAG_PACIFIED = 0x00020000, + UNIT_FLAG_DISABLE_ROTATE = 0x00040000, // may be it's stunned flag? UNIT_FLAG_IN_COMBAT = 0x00080000, + UNIT_FLAG_DISARMED = 0x00200000, // disable melee spells casting..., "Required melee weapon" added to melee spells tooltip. + UNIT_FLAG_CONFUSED = 0x00400000, + UNIT_FLAG_FLEEING = 0x00800000, + UNIT_FLAG_UNKNOWN5 = 0x01000000, // used in spell Eyes of the Beast for pet... + UNIT_FLAG_NOT_SELECTABLE = 0x02000000, UNIT_FLAG_SKINNABLE = 0x04000000, + UNIT_FLAG_UNKNOWN6 = 0x20000000, // used in Feing Death spell UNIT_FLAG_SHEATHE = 0x40000000 }; Index: src/game/Unit.cpp =================================================================== --- src/game/Unit.cpp (working copy) +++ src/game/Unit.cpp (working copy) @@ -48,7 +48,9 @@ 1.25f, // MOVE_WALKBACK 4.722222f, // MOVE_SWIM 4.5f, // MOVE_SWIMBACK - 3.141594f // MOVE_TURN + 3.141594f, // MOVE_TURN + 7.0f, // MOVE_FLY + 4.5f // MOVE_FLYBACK }; Unit::Unit( WorldObject *instantiator ) : WorldObject( instantiator ) Index: src/game/UpdateData.h =================================================================== --- src/game/UpdateData.h (working copy) +++ src/game/UpdateData.h (working copy) @@ -23,16 +23,23 @@ enum OBJECT_UPDATE_TYPE { - UPDATETYPE_VALUES = 0, - - UPDATETYPE_MOVEMENT = 1, - - UPDATETYPE_CREATE_OBJECT = 2, - - UPDATETYPE_CREATE_OBJECT2 = 3, + UPDATETYPE_VALUES = 0, + UPDATETYPE_MOVEMENT = 1, + UPDATETYPE_CREATE_OBJECT = 2, + UPDATETYPE_CREATE_OBJECT2 = 3, UPDATETYPE_OUT_OF_RANGE_OBJECTS = 4, - UPDATETYPE_NEAR_OBJECTS = 5 + UPDATETYPE_NEAR_OBJECTS = 5 +}; +enum OBJECT_UPDATE_FLAGS +{ + UPDATEFLAG_SELF = 0x01, + UPDATEFLAG_TRANSPORT = 0x02, + UPDATEFLAG_FULLGUID = 0x04, + UPDATEFLAG_HIGHGUID = 0x08, + UPDATEFLAG_ALL = 0x10, + UPDATEFLAG_LIVING = 0x20, + UPDATEFLAG_HASPOSITION = 0x40 }; class UpdateData Index: src/game/Spell.h =================================================================== --- src/game/Spell.h (working copy) +++ src/game/Spell.h (working copy) @@ -234,157 +234,162 @@ enum SpellFailedReason { - CAST_FAIL_IN_COMBAT = 0, - CAST_FAIL_ALREADY_FULL_HEALTH = 1, - CAST_FAIL_ALREADY_FULL_MANA = 2, - //CAST_FAIL_ALREADY_FULL_RAGE = 2, - CAST_FAIL_CREATURE_ALREADY_TAMING = 3, - CAST_FAIL_ALREADY_HAVE_CHARMED = 4, - CAST_FAIL_ALREADY_HAVE_SUMMON = 5, - CAST_FAIL_ALREADY_OPEN = 6, - CAST_FAIL_MORE_POWERFUL_SPELL_ACTIVE = 7, - //CAST_FAIL_FAILED = 8,-> 29 - CAST_FAIL_NO_TARGET = 9, - CAST_FAIL_INVALID_TARGET = 10, - CAST_FAIL_CANT_BE_CHARMED = 11, - CAST_FAIL_CANT_BE_DISENCHANTED = 12, //decompose - // 13 SPELL_FAILED_CANT_BE_PROSPECTED - CAST_FAIL_TARGET_IS_TAPPED = 13+1, - CAST_FAIL_CANT_START_DUEL_INVISIBLE = 14+1, - CAST_FAIL_CANT_START_DUEL_STEALTHED = 15+1, - CAST_FAIL_TOO_CLOSE_TO_ENEMY = 16+1, - CAST_FAIL_CANT_DO_THAT_YET = 17+1, - CAST_FAIL_YOU_ARE_DEAD = 18+1, - CAST_FAIL_CANT_DO_WHILE_XXXX =19, //NONE - CAST_FAIL_CANT_DO_WHILE_CHARMED =19+1, //SPELL_FAILED_CHARMED - CAST_FAIL_OBJECT_ALREADY_BEING_USED = 20+1, //SPELL_FAILED_CHEST_IN_USE - CAST_FAIL_CANT_DO_WHILE_CONFUSED = 21+1, //SPELL_FAILED_CONFUSED - //23 is gone. - CAST_FAIL_MUST_HAVE_ITEM_EQUIPPED = 22 + 1 + 1, - CAST_FAIL_MUST_HAVE_XXXX_EQUIPPED = 23 + 1 + 1, //SPELL_FAILED_EQUIPPED_ITEM_CLASS - CAST_FAIL_MUST_HAVE_XXXX_IN_MAINHAND = 24 + 1 + 1, //SPELL_FAILED_EQUIPPED_ITEM_CLASS_MAINHAND - CAST_FAIL_MUST_HAVE_XXXX_IN_OFFHAND = 25 + 1 + 1, //SPELL_FAILED_EQUIPPED_ITEM_CLASS_OFFHAND - CAST_FAIL_INTERNAL_ERROR = 26 + 1 + 1, - CAST_FAIL_FAILED = 29, // Doesn't exist anymore? Used Fizzle value atm. - CAST_FAIL_FIZZLED = 27 + 1 + 1, // changed (+2) 12.1.1 - CAST_FAIL_YOU_ARE_FLEEING = 28 + 1 + 1, - CAST_FAIL_FOOD_TOO_LOWLEVEL_FOR_PET = 29 + 1 + 1, - CAST_FAIL_TARGET_IS_TOO_HIGH = 30 + 1 + 1, - //32 + 1 is gone. - CAST_FAIL_IMMUNE = 32 + 1 + 1, //SPELL_FAILED_IMMUNE - CAST_FAIL_INTERRUPTED = 33 + 1 + 1, //SPELL_FAILED_INTERRUPTED - CAST_FAIL_INTERRUPTED1 = 34 + 1 + 1, //SPELL_FAILED_INTERRUPTED_COMBAT - CAST_FAIL_INTERRUPTED_COMBAT = 36, //just 36 SPELL_FAILED_INTERRUPTED_COMBAT - CAST_FAIL_ITEM_ALREADY_ENCHANTED = 35 + 1 + 1, - CAST_FAIL_ITEM_NOT_EXIST = 36 + 1 + 1, - CAST_FAIL_ENCHANT_NOT_EXISTING_ITEM = 37 + 1 + 1, - CAST_FAIL_ITEM_NOT_READY = 38 + 1 + 1, - CAST_FAIL_YOU_ARE_NOT_HIGH_ENOUGH = 39 + 1 + 1, - CAST_FAIL_NOT_IN_LINE_OF_SIGHT = 40 + 1 + 1, - CAST_FAIL_TARGET_TOO_LOW = 41 + 1 + 1, - CAST_FAIL_SKILL_NOT_HIGH_ENOUGH = 42 + 1 + 1, - CAST_FAIL_WEAPON_HAND_IS_EMPTY = 43 + 1 + 1, - CAST_FAIL_CANT_DO_WHILE_MOVING = 44 + 1 + 1, - CAST_FAIL_NEED_AMMO_IN_PAPERDOLL_SLOT = 45 + 1 + 1, - CAST_FAIL_REQUIRES_SOMETHING = 46 + 1 + 1, - CAST_FAIL_NEED_EXOTIC_AMMO = 47 + 1 + 1, - CAST_FAIL_NO_PATH_AVAILABLE = 48 + 1 + 1, - CAST_FAIL_NOT_BEHIND_TARGET = 49 + 1 + 1, - CAST_FAIL_DIDNT_LAND_IN_FISHABLE_WATER = 50 + 1 + 1, - CAST_FAIL_CANT_BE_CAST_HERE = 51 + 1 + 1, - CAST_FAIL_NOT_IN_FRONT_OF_TARGET = 52 + 1 + 1, - CAST_FAIL_NOT_IN_CONTROL_OF_ACTIONS = 53 + 1 + 1, - CAST_FAIL_SPELL_NOT_LEARNED = 54 + 1 + 1, - CAST_FAIL_CANT_USE_WHEN_MOUNTED = 55 + 1 + 1, - CAST_FAIL_YOU_ARE_IN_FLIGHT = 56 + 1 + 1, - CAST_FAIL_YOU_ARE_ON_TRANSPORT = 57 + 1 + 1, - CAST_FAIL_SPELL_NOT_READY_YET = 58 + 1 + 1, - CAST_FAIL_CANT_DO_IN_SHAPESHIFT = 59 + 1 + 1, - CAST_FAIL_HAVE_TO_BE_STANDING = 60 + 1 + 1, - CAST_FAIL_CAN_USE_ONLY_ON_OWN_OBJECT = 61 + 1 + 1, // rogues trying "enchant" other's weapon with poison - //CAST_FAIL_ALREADY_OPEN1 = 62, - - CAST_FAIL_CANT_ENCHANT_TRADE_ITEM = 63 + 1, - CAST_FAIL_HAVE_TO_BE_UNSHEATHED = 63 + 1 + 1, // yellow text SPELL_FAILED_NOT_UNSHEATHED - CAST_FAIL_CANT_CAST_AS_GHOST = 64 + 1 + 1, - CAST_FAIL_NO_AMMO = 65 + 1 + 1, - CAST_FAIL_NO_CHARGES_REMAIN = 66 + 1 + 1, - CAST_FAIL_NOT_SELECT = 67 + 1 + 1, - CAST_FAIL_COMBO_POINTS_REQUIRED = 68 + 1 + 1, - CAST_FAIL_NO_DUELING_HERE = 69 + 1 + 1, - CAST_FAIL_NOT_ENOUGH_ENDURANCE = 70 + 1 + 1, - CAST_FAIL_THERE_ARENT_ANY_FISH_HERE = 71 + 1 + 1, - CAST_FAIL_CANT_USE_WHILE_SHAPESHIFTED = 72 + 1 + 1, - CAST_FAIL_CANT_MOUNT_HERE = 73 + 1 + 1, - CAST_FAIL_YOU_DO_NOT_HAVE_PET = 74 + 1 + 1, - CAST_FAIL_NOT_ENOUGH_MANA = 75 + 1 + 1, - CAST_FAIL_NOT_AURA_TO_QUSHAN = 76 + 1 + 1, - //= 79, CAST_FAIL_NOT_ITEM_TO_STEAL = 111 + 1 + 2 //(SPELL_FAILED_NOTHING_TO_STEAL) - CAST_FAIL_CANT_USE_WHILE_SWIMMING = 77 + 1 + 2, - CAST_FAIL_CAN_ONLY_USE_AT_DAY = 78 + 1 + 2, - CAST_FAIL_CAN_ONLY_USE_INDOORS = 79 + 1 + 2, - CAST_FAIL_CAN_ONLY_USE_MOUNTED = 80 + 1 + 2, - CAST_FAIL_CAN_ONLY_USE_AT_NIGHT = 81 + 1 + 2, - CAST_FAIL_CAN_ONLY_USE_OUTDOORS = 82 + 1 + 2, - //CAST_FAIL_ONLY_SHAPESHIFTED = 83 // didn't display - // 86 none - CAST_FAIL_CAN_ONLY_USE_STEALTHED = 85 + 2, - CAST_FAIL_CAN_ONLY_USE_WHILE_SWIMMING = 86 + 2, - CAST_FAIL_OUT_OF_RANGE = 87 + 2, - CAST_FAIL_CANT_USE_WHILE_PACIFIED = 87 + 1 + 2, - CAST_FAIL_YOU_ARE_POSSESSED = 88 + 1 + 2, - CAST_FAIL_YOU_NEED_TO_BE_IN_XXX = 90 + 1 + 2, - CAST_FAIL_REQUIRES_XXX = 91 + 1 + 2, - CAST_FAIL_UNABLE_TO_MOVE = 92 + 1 + 2, - CAST_FAIL_SILENCED = 93 + 1 + 2, - CAST_FAIL_ANOTHER_ACTION_IS_IN_PROGRESS = 94 + 1 + 2, - CAST_FAIL_ALREADY_LEARNED_THAT_SPELL = 95 + 1 + 2, - CAST_FAIL_SPELL_NOT_AVAILABLE_TO_YOU = 96 + 1 + 2, - CAST_FAIL_CANT_DO_WHILE_STUNNED = 97 + 1 + 2, - CAST_FAIL_YOUR_TARGET_IS_DEAD = 98 + 1 + 2, - CAST_FAIL_TARGET_IS_IN_COMBAT = 99 + 1 + 2, - CAST_FAIL_CANT_DO_THAT_YET_2 = 100 + 1 + 2, - CAST_FAIL_TARGET_IS_DUELING = 101 + 1 + 2, - CAST_FAIL_TARGET_IS_HOSTILE = 102 + 1 + 2, - CAST_FAIL_TARGET_IS_TOO_ENRAGED_TO_CHARM = 103 + 1 + 2, - CAST_FAIL_TARGET_IS_FRIENDLY = 104 + 1 + 2, - CAST_FAIL_TARGET_CANT_BE_IN_COMBAT = 105 + 1 + 2, - CAST_FAIL_CANT_TARGET_PLAYERS = 106 + 1 + 2, - CAST_FAIL_TARGET_IS_ALIVE = 107 + 1 + 2, - CAST_FAIL_TARGET_NOT_IN_YOUR_PARTY = 108 + 1 + 2, - CAST_FAIL_CREATURE_MUST_BE_LOOTED_FIRST = 109 + 1 + 2, - CAST_FAIL_AUCTION_HAVE_CANCEL = 110 + 1 + 2, - CAST_FAIL_NOT_ITEM_TO_STEAL = 111 + 1 + 2, - //CAST_FAIL_TARGET_IS_NOT_A_PLAYER = 107, - //CAST_FAIL_NO_POCKETS_TO_PICK = 108, - CAST_FAIL_TARGET_HAS_NO_WEAPONS_EQUIPPED = 112 + 1 + 2, - CAST_FAIL_NOT_SKINNABLE = 113 + 1 + 2, - CAST_FAIL_TOO_CLOSE = 115 + 1 + 2, - CAST_FAIL_TOO_MANY_OF_THAT_ITEM_ALREADY = 116 + 1 + 2, - CAST_FAIL_NOT_ENOUGH_TRAINING_POINTS = 118 + 1 + 2, - CAST_FAIL_FAILED_ATTEMPT = 119 + 1 + 2, - CAST_FAIL_TARGET_NEED_TO_BE_BEHIND = 120 + 1 + 2, - CAST_FAIL_TARGET_NEED_TO_BE_INFRONT = 121 + 1 + 2, - CAST_FAIL_PET_DOESNT_LIKE_THAT_FOOD = 122 + 1 + 2, - CAST_FAIL_CANT_CAST_WHILE_FATIGUED = 123 + 1 + 2, - CAST_FAIL_TARGET_MUST_BE_IN_THIS_INSTANCE = 124 + 1 + 2, - CAST_FAIL_CANT_CAST_WHILE_TRADING = 125 + 1 + 2, - CAST_FAIL_TARGET_IS_NOT_PARTY_OR_RAID = 126 + 1 + 2, - CAST_FAIL_CANT_DISENCHANT_WHILE_LOOTING = 127 + 1 + 2, - CAST_FAIL_TARGET_IS_IN_FFA_PVP_COMBAT = 133, - //CAST_FAIL_TARGET_IS_NOT_A_GHOST = 128, //SPELL_FAILED_TARGET_NOT_GHOST - CAST_FAIL_NO_NEARBY_CORPSES_TO_EAT = 129 + 1 + 4, - CAST_FAIL_CAN_ONLY_USE_IN_BATTLEGROUNDS = 130 + 1 + 4, - CAST_FAIL_CANT_EQUIP_ON_LOW_RANK = 131 + 1 + 4, - CAST_FAIL_YOUR_PET_CANT_LEARN_MORE_SKILLS = 132 + 1 + 4, - CAST_FAIL_CANT_USE_NEW_ITEM = 133 + 1 + 4, - CAST_FAIL_CANT_DO_IN_THIS_WEATHER = 134 + 1 + 4, - CAST_FAIL_CANT_DO_IN_IMMUNE = 135 + 1 + 4, - CAST_FAIL_CANT_DO_IN_XXX = 136 + 1 + 4, - CAST_FAIL_GAME_TIME_OVER = 137 + 1 + 4, - CAST_FAIL_NOT_ENOUGH_RANK = 138 + 1 + 4, - CAST_FAIL_UNKNOWN_REASON = 139 + 1 + 4, - CAST_FAIL_NUMREASONS = 145 + CAST_FAIL_IN_COMBAT = 0, + CAST_FAIL_ALREADY_FULL_HEALTH = 1, + CAST_FAIL_ALREADY_FULL_MANA = 2, + CAST_FAIL_CREATURE_ALREADY_TAMING = 3, + CAST_FAIL_ALREADY_HAVE_CHARMED = 4, + CAST_FAIL_ALREADY_HAVE_SUMMON = 5, + CAST_FAIL_ALREADY_OPEN = 6, + CAST_FAIL_MORE_POWERFUL_SPELL_ACTIVE = 7, + CAST_FAIL_AUTOTRACK_INTERRUPTED = 8, + CAST_FAIL_NO_TARGET = 9, + CAST_FAIL_INVALID_TARGET = 10, + CAST_FAIL_CANT_BE_CHARMED = 11, + CAST_FAIL_CANT_BE_DISENCHANTED = 12, + CAST_FAIL_CANT_BE_DISENCHANTED_SKILL = 13, + CAST_FAIL_CANT_BE_PROSPECTED = 14, // There no gems in this + CAST_FAIL_TARGET_IS_TAPPED = 15, + CAST_FAIL_CANT_START_DUEL_INVISIBLE = 16, + CAST_FAIL_CANT_START_DUEL_STEALTHED = 17, + CAST_FAIL_TOO_CLOSE_TO_ENEMY = 18, + CAST_FAIL_CANT_DO_THAT_YET = 19, + CAST_FAIL_YOU_ARE_DEAD = 20, + CAST_FAIL_CANT_DO_WHILE_CHARMED = 21, + CAST_FAIL_OBJECT_ALREADY_BEING_USED = 22, + CAST_FAIL_CANT_DO_WHILE_CONFUSED = 23, + CAST_FAIL_DONT_REPORT = 24, + CAST_FAIL_MUST_HAVE_ITEM_EQUIPPED = 25, + CAST_FAIL_MUST_HAVE_XXXX_EQUIPPED = 26, + CAST_FAIL_MUST_HAVE_XXXX_IN_MAINHAND = 27, + CAST_FAIL_MUST_HAVE_XXXX_IN_OFFHAND = 28, + CAST_FAIL_INTERNAL_ERROR = 29, + CAST_FAIL_FIZZLED = 30, + CAST_FAIL_YOU_ARE_FLEEING = 31, + CAST_FAIL_FOOD_TOO_LOWLEVEL_FOR_PET = 32, + CAST_FAIL_TARGET_IS_TOO_HIGH = 33, + CAST_FAIL_HUNGER_SATIATED = 34, + CAST_FAIL_IMMUNE = 35, + CAST_FAIL_INTERRUPTED = 36, + CAST_FAIL_INTERRUPTED_COMBAT = 37, + CAST_FAIL_ITEM_ALREADY_ENCHANTED = 38, + CAST_FAIL_ITEM_NOT_EXIST = 39, + CAST_FAIL_ENCHANT_NOT_EXISTING_ITEM = 40, + CAST_FAIL_ITEM_NOT_READY = 41, + CAST_FAIL_YOU_ARE_NOT_HIGH_ENOUGH = 42, + CAST_FAIL_NOT_IN_LINE_OF_SIGHT = 43, + CAST_FAIL_TARGET_TOO_LOW = 44, + CAST_FAIL_SKILL_NOT_HIGH_ENOUGH = 45, + CAST_FAIL_WEAPON_HAND_IS_EMPTY = 46, + CAST_FAIL_CANT_DO_WHILE_MOVING = 47, + CAST_FAIL_NEED_AMMO_IN_PAPERDOLL_SLOT = 48, + CAST_FAIL_REQUIRES_SOMETHING = 49, + CAST_FAIL_NEED_EXOTIC_AMMO = 50, + CAST_FAIL_NO_PATH_AVAILABLE = 51, + CAST_FAIL_NOT_BEHIND_TARGET = 52, + CAST_FAIL_DIDNT_LAND_IN_FISHABLE_WATER = 53, + CAST_FAIL_CANT_BE_CAST_HERE = 54, + CAST_FAIL_NOT_IN_FRONT_OF_TARGET = 55, + CAST_FAIL_NOT_IN_CONTROL_OF_ACTIONS = 56, + CAST_FAIL_SPELL_NOT_LEARNED = 57, + CAST_FAIL_CANT_USE_WHEN_MOUNTED = 58, + CAST_FAIL_YOU_ARE_IN_FLIGHT = 59, + CAST_FAIL_YOU_ARE_ON_TRANSPORT = 60, + CAST_FAIL_SPELL_NOT_READY_YET = 61, + CAST_FAIL_CANT_DO_IN_SHAPESHIFT = 62, + CAST_FAIL_HAVE_TO_BE_STANDING = 63, + CAST_FAIL_CAN_USE_ONLY_ON_OWN_OBJECT = 64, + CAST_FAIL_CANT_ENCHANT_TRADE_ITEM = 65, + CAST_FAIL_HAVE_TO_BE_UNSHEATHED = 66, + CAST_FAIL_CANT_CAST_AS_GHOST = 67, + CAST_FAIL_NO_AMMO = 68, + CAST_FAIL_NO_CHARGES_REMAIN = 69, + CAST_FAIL_NOT_SELECT = 70, + CAST_FAIL_COMBO_POINTS_REQUIRED = 71, + CAST_FAIL_NO_DUELING_HERE = 72, + CAST_FAIL_NOT_ENOUGH_ENDURANCE = 73, + CAST_FAIL_THERE_ARENT_ANY_FISH_HERE = 74, + CAST_FAIL_CANT_USE_WHILE_SHAPESHIFTED = 75, + CAST_FAIL_CANT_MOUNT_HERE = 76, + CAST_FAIL_YOU_DO_NOT_HAVE_PET = 77, + CAST_FAIL_NOT_ENOUGH_MANA = 78, + CAST_FAIL_NOTHING_TO_DISPEL = 79, + CAST_FAIL_NOTHING_TO_STEAL = 80, + CAST_FAIL_CANT_USE_WHILE_SWIMMING = 81, + CAST_FAIL_CAN_ONLY_USE_AT_DAY = 82, + CAST_FAIL_CAN_ONLY_USE_INDOORS = 83, + CAST_FAIL_CAN_ONLY_USE_MOUNTED = 84, + CAST_FAIL_CAN_ONLY_USE_AT_NIGHT = 85, + CAST_FAIL_CAN_ONLY_USE_OUTDOORS = 86, + CAST_FAIL_CAN_ONLY_USE_SHAPESHIFT = 87, + CAST_FAIL_CAN_ONLY_USE_STEALTHED = 88, + CAST_FAIL_CAN_ONLY_USE_WHILE_SWIMMING = 89, + CAST_FAIL_OUT_OF_RANGE = 90, + CAST_FAIL_CANT_USE_WHILE_PACIFIED = 91, + CAST_FAIL_YOU_ARE_POSSESSED = 92, + CAST_FAIL_REAGENTS = 93, + CAST_FAIL_YOU_NEED_TO_BE_IN_XXX = 94, + CAST_FAIL_REQUIRES_XXX = 95, + CAST_FAIL_UNABLE_TO_MOVE = 96, + CAST_FAIL_SILENCED = 97, + CAST_FAIL_ANOTHER_ACTION_IS_IN_PROGRESS = 98, + CAST_FAIL_ALREADY_LEARNED_THAT_SPELL = 99, + CAST_FAIL_SPELL_NOT_AVAILABLE_TO_YOU = 100, + CAST_FAIL_CANT_DO_WHILE_STUNNED = 101, + CAST_FAIL_YOUR_TARGET_IS_DEAD = 102, + CAST_FAIL_TARGET_IS_IN_COMBAT = 103, + CAST_FAIL_CANT_DO_THAT_YET_2 = 104, // SPELL_FAILED_TARGET_AURASTATE + CAST_FAIL_TARGET_IS_DUELING = 105, + CAST_FAIL_TARGET_IS_HOSTILE = 106, + CAST_FAIL_TARGET_IS_TOO_ENRAGED_TO_CHARM = 107, + CAST_FAIL_TARGET_IS_FRIENDLY = 108, + CAST_FAIL_TARGET_CANT_BE_IN_COMBAT = 109, + CAST_FAIL_CANT_TARGET_PLAYERS = 110, + CAST_FAIL_TARGET_IS_ALIVE = 111, + CAST_FAIL_TARGET_NOT_IN_YOUR_PARTY = 112, + CAST_FAIL_CREATURE_MUST_BE_LOOTED_FIRST = 113, + CAST_FAIL_TARGET_IS_NOT_PLAYER = 114, + CAST_FAIL_NOT_ITEM_TO_STEAL = 115, + CAST_FAIL_TARGET_HAS_NO_WEAPONS_EQUIPPED = 116, + CAST_FAIL_NOT_SKINNABLE = 117, + CAST_FAIL_THIRST_SATIATED = 118, + CAST_FAIL_TOO_CLOSE = 119, + CAST_FAIL_TOO_MANY_OF_THAT_ITEM_ALREADY = 120, + CAST_FAIL_TOTEM_CATEGORY = 121, + CAST_FAIL_TOTEMS = 122, + CAST_FAIL_NOT_ENOUGH_TRAINING_POINTS = 123, + CAST_FAIL_FAILED_ATTEMPT = 124, + CAST_FAIL_TARGET_NEED_TO_BE_BEHIND = 125, + CAST_FAIL_TARGET_NEED_TO_BE_INFRONT = 126, + CAST_FAIL_PET_DOESNT_LIKE_THAT_FOOD = 127, + CAST_FAIL_CANT_CAST_WHILE_FATIGUED = 128, + CAST_FAIL_TARGET_MUST_BE_IN_THIS_INSTANCE = 129, + CAST_FAIL_CANT_CAST_WHILE_TRADING = 130, + CAST_FAIL_TARGET_IS_NOT_PARTY_OR_RAID = 131, + CAST_FAIL_CANT_DISENCHANT_WHILE_LOOTING = 132, + CAST_FAIL_CANT_PROSPECT_WHILE_LOOTING = 133, + CAST_FAIL_CANT_PROSPECT_NEED_MORE = 134, + CAST_FAIL_TARGET_IS_IN_FFA_PVP_COMBAT = 135, + CAST_FAIL_NO_NEARBY_CORPSES_TO_EAT = 136, + CAST_FAIL_CAN_ONLY_USE_IN_BATTLEGROUNDS = 137, + CAST_FAIL_TARGET_NOT_GHOST = 138, + CAST_FAIL_YOUR_PET_CANT_LEARN_MORE_SKILLS = 139, + CAST_FAIL_TRANSFORM_UNUSABLE = 140, + CAST_FAIL_WRONG_WEATHER = 141, + CAST_FAIL_DAMAGE_IMMUNE = 142, + CAST_FAIL_PREVENTED_BY_MECHANIC = 143, + CAST_FAIL_PLAY_TIME = 144, + CAST_FAIL_REPUTATION = 145, + CAST_FAIL_MIN_SKILL = 146, + CAST_FAIL_NOT_IN_ARENA = 147, + CAST_FAIL_NOT_ON_SHAPESHIFT = 148, + CAST_FAIL_NOT_ON_STEALTHED = 149, + CAST_FAIL_NOT_ON_DAMAGE_IMMUNE = 150, + CAST_FAIL_NOT_ON_MOUNTED = 151, + CAST_FAIL_TOO_SHALLOW = 152, + CAST_FAIL_TARGET_NOT_IN_SANCTUARY = 153, + CAST_FAIL_UNKNOWN_REASON = 154, + CAST_FAIL_NUMREASONS }; #define SPELL_SPELL_CHANNEL_UPDATE_INTERVAL 1000 Index: src/game/LootMgr.h =================================================================== --- src/game/LootMgr.h (working copy) +++ src/game/LootMgr.h (working copy) @@ -48,6 +48,13 @@ NEED_BEFORE_GREED = 4 }; +enum LootThreshold +{ + UNCOMMON = 2, + RARE = 3, + EPIC = 4 +}; + enum PermissionTypes { ALL_PERMISSION = 0, Index: src/game/ItemPrototype.h =================================================================== --- src/game/ItemPrototype.h (working copy) +++ src/game/ItemPrototype.h (working copy) @@ -74,50 +74,83 @@ enum ITEM_STAT_TYPE { - ITEM_STAT_POWER = 0, - ITEM_STAT_HEALTH = 1, - ITEM_STAT_UNKNOWN = 2, - ITEM_STAT_AGILITY = 3, - ITEM_STAT_STRENGTH = 4, - ITEM_STAT_INTELLECT = 5, - ITEM_STAT_SPIRIT = 6, - ITEM_STAT_STAMINA = 7 + ITEM_STAT_POWER = 0, + ITEM_STAT_HEALTH = 1, + ITEM_STAT_UNKNOWN1 = 2, + ITEM_STAT_AGILITY = 3, + ITEM_STAT_STRENGTH = 4, + ITEM_STAT_INTELLECT = 5, + ITEM_STAT_SPIRIT = 6, + ITEM_STAT_STAMINA = 7, + ITEM_STAT_UNKNOWN2 = 8, + ITEM_STAT_UNKNOWN3 = 9, + ITEM_STAT_UNKNOWN4 = 10, + ITEM_STAT_UNKNOWN5 = 11, + // New Item Stats for Combat Rating System: + // CS - critical strike + // HA - hit avoidance + // CA - critical avoidance + ITEM_STAT_DEFENCE_RATING = 12, + ITEM_STAT_DODGE_RATING = 13, + ITEM_STAT_PARRY_RATING = 14, + ITEM_STAT_SHIELD_BLOCK_RATING = 15, + ITEM_STAT_MELEE_HIT_RATING = 16, + ITEM_STAT_RANGED_HIT_RATING = 17, + ITEM_STAT_SPELL_HIT_RATING = 18, + ITEM_STAT_MELEE_CS_RATING = 19, + ITEM_STAT_RANGED_CS_RATING = 20, + ITEM_STAT_SPELL_CS_RATING = 21, + ITEM_STAT_MELEE_HA_RATING = 22, + ITEM_STAT_RANGED_HA_RATING = 23, + ITEM_STAT_SPELL_HA_RATING = 24, + ITEM_STAT_MELEE_CA_RATING = 25, + ITEM_STAT_RANGED_CA_RATING = 26, + ITEM_STAT_SPELL_CA_RATING = 27, + ITEM_STAT_MELEE_HASTE_RATING = 28, + ITEM_STAT_RANGED_HASTE_RATING = 29, + ITEM_STAT_SPELL_HASTE_RATING = 30, + ITEM_STAT_HIT_RATING = 31, + ITEM_STAT_CS_RATING = 32, + ITEM_STAT_HA_RATING = 33, + ITEM_STAT_CA_RATING = 34, + ITEM_STAT_RESILIENCE_RATING = 35, + ITEM_STAT_HASTE_RATING = 36 }; enum ITEM_DAMAGE_TYPE { - NORMAL_DAMAGE = 0, - HOLY_DAMAGE = 1, - FIRE_DAMAGE = 2, - NATURE_DAMAGE = 3, - FROST_DAMAGE = 4, - SHADOW_DAMAGE = 5, - ARCANE_DAMAGE = 6 + NORMAL_DAMAGE = 0, + HOLY_DAMAGE = 1, + FIRE_DAMAGE = 2, + NATURE_DAMAGE = 3, + FROST_DAMAGE = 4, + SHADOW_DAMAGE = 5, + ARCANE_DAMAGE = 6 }; enum ITEM_SPELLTRIGGER_TYPE { - USE = 0, - ON_EQUIP = 1, - CHANCE_ON_HIT = 2, - SOULSTONE = 4 + USE = 0, + ON_EQUIP = 1, + CHANCE_ON_HIT = 2, + SOULSTONE = 4 }; enum ITEM_BONDING_TYPE { - NO_BIND = 0, - BIND_WHEN_PICKED_UP = 1, - BIND_WHEN_EQUIPED = 2, - BIND_WHEN_USE = 3, + NO_BIND = 0, + BIND_WHEN_PICKED_UP = 1, + BIND_WHEN_EQUIPED = 2, + BIND_WHEN_USE = 3, //TODO: Better name these - QUEST_ITEM = 4, - QUEST_ITEM1 = 5 + QUEST_ITEM = 4, + QUEST_ITEM1 = 5 }; // masks for ITEM_FIELD_FLAGS field enum ITEM_FLAGS { - ITEM_FLAGS_BINDED = 1 + ITEM_FLAGS_BINDED = 1 }; enum BAG_FAMILY @@ -126,162 +159,194 @@ BAG_FAMILY_ARROWS = 1, BAG_FAMILY_BULLETS = 2, BAG_FAMILY_SOUL_SHARDS = 3, - //BAG_FAMILY_UNK1 = 4, - //BAG_FAMILY_UNK1 = 5, + //BAG_FAMILY_UNK1 = 4, + //BAG_FAMILY_UNK1 = 5, BAG_FAMILY_HERBS = 6, BAG_FAMILY_ENCHANTING_SUPP = 7, BAG_FAMILY_ENGINEERING_SUPP = 8, BAG_FAMILY_KEYS = 9, BAG_FAMILY_GEMS = 10, - //BAG_FAMILY_UNK3 = 11, + //BAG_FAMILY_UNK3 = 11, BAG_FAMILY_MINING_SUPP = 12 }; +/* TODO: Not entirely positive on need for this?? +enum SOCKET_CONTENT (); +*/ + +enum SOCKET_COLOR +{ + SOCKET_COLOR_META = 1, + SOCKET_COLOR_RED = 2, + SOCKET_COLOR_YELLOW = 4, + SOCKET_COLOR_BLUE = 8 +}; + enum INVENTORY_TYPES { - 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_SLOT_ITEM = 27, - INVTYPE_RELIC = 28, - NUM_INVENTORY_TYPES = 29 + 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_SLOT_ITEM = 27, + INVTYPE_RELIC = 28, + NUM_INVENTORY_TYPES = 29 }; enum INVENTORY_CLASS { - ITEM_CLASS_CONSUMABLE = 0, - ITEM_CLASS_CONTAINER = 1, - ITEM_CLASS_WEAPON = 2, - ITEM_CLASS_JEWELRY = 3, - ITEM_CLASS_ARMOR = 4, - ITEM_CLASS_REAGENT = 5, - ITEM_CLASS_PROJECTILE = 6, - ITEM_CLASS_TRADE_GOODS = 7, - ITEM_CLASS_GENERIC = 8, - ITEM_CLASS_BOOK = 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 + ITEM_CLASS_CONSUMABLE = 0, + ITEM_CLASS_CONTAINER = 1, + ITEM_CLASS_WEAPON = 2, + ITEM_CLASS_JEWELRY = 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_MISC = 15 }; // Client understand only 0 subclass for ITEM_CLASS_CONSUMABLE // but this value used in code as implementation workaround enum ITEM_SUBCLASS_CONSUMABLE { - ITEM_SUBCLASS_FOOD = 1, - ITEM_SUBCLASS_LIQUID = 2, - ITEM_SUBCLASS_POTION = 3, - ITEM_SUBCLASS_SCROLL = 4, - ITEM_SUBCLASS_BANDAGE = 5, - ITEM_SUBCLASS_HEALTHSTONE = 6, - ITEM_SUBCLASS_COMBAT_EFFECT = 7 + ITEM_SUBCLASS_CONSUMABLE = 0, + ITEM_SUBCLASS_FOOD = 1, // Cheese/Bread(OBSOLETE) + ITEM_SUBCLASS_LIQUID = 2, // Liquid(OBSOLETE) + ITEM_SUBCLASS_POTION = 3, + ITEM_SUBCLASS_SCROLL = 4, + ITEM_SUBCLASS_BANDAGE = 5, + ITEM_SUBCLASS_HEALTHSTONE = 6, + ITEM_SUBCLASS_COMBAT_EFFECT = 7 }; enum ITEM_SUBCLASS_CONTAINER { - ITEM_SUBCLASS_CONTAINER = 0, - ITEM_SUBCLASS_SOUL_CONTAINER = 1, - ITEM_SUBCLASS_HERB_CONTAINER = 2, - ITEM_SUBCLASS_ENCHANTING_CONTAINER = 3, - ITEM_SUBCLASS_ENGINEERING_CONTAINER = 4 + ITEM_SUBCLASS_CONTAINER = 0, + ITEM_SUBCLASS_SOUL_CONTAINER = 1, + ITEM_SUBCLASS_HERB_CONTAINER = 2, + ITEM_SUBCLASS_ENCHANTING_CONTAINER = 3, + ITEM_SUBCLASS_ENGINEERING_CONTAINER = 4, + ITEM_SUBCLASS_GEM_CONTAINER = 5, + ITEM_SUBCLASS_MINING_CONTAINER = 6 }; enum INVENTORY_SUBCLASS_WEAPON { - 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_UNARMED = 13, - ITEM_SUBCLASS_WEAPON_GENERIC = 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 + 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_FIRST = 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 ITEM_SUBCLASS_ARMOR { - ITEM_SUBCLASS_ARMOR_GENERIC = 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_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 ITEM_SUBCLASS_PROJECTILE { - ITEM_SUBCLASS_ARROW = 2, - ITEM_SUBCLASS_BULLET = 3 + ITEM_SUBCLASS_WAND = 0, // ABS + ITEM_SUBCLASS_BOLT = 1, // ABS + ITEM_SUBCLASS_ARROW = 2, + ITEM_SUBCLASS_BULLET = 3, + ITEM_SUBCLASS_THROWN = 4 // ABS }; enum ITEM_SUBCLASS_TRADE_GOODS { - ITEM_SUBCLASS_TRADE_GOODS = 0, - ITEM_SUBCLASS_PARTS = 1, - ITEM_SUBCLASS_EXPLOSIVES = 2, - ITEM_SUBCLASS_DEVICES = 3 + ITEM_SUBCLASS_TRADE_GOODS = 0, + ITEM_SUBCLASS_PARTS = 1, + ITEM_SUBCLASS_EXPLOSIVES = 2, + ITEM_SUBCLASS_DEVICES = 3, + ITEM_SUBCLASS_GEMS = 4 }; enum ITEM_SUBCLASS_BOOK { - ITEM_SUBCLASS_BOOK = 0, - ITEM_SUBCLASS_LEATHERWORKING_PATTERN = 1, - ITEM_SUBCLASS_TAILORING_PATTERN = 2, - ITEM_SUBCLASS_ENGINEERING_SCHEMATIC = 3, - ITEM_SUBCLASS_COOKING_RECIPE = 5, - ITEM_SUBCLASS_ALCHEMY_RECIPE = 6, - ITEM_SUBCLASS_FIRST_AID_MANUAL = 7, - ITEM_SUBCLASS_ENCHANTING_FORMULA = 8, - ITEM_SUBCLASS_FISHING_MANUAL = 9 + ITEM_SUBCLASS_BOOK = 0, + ITEM_SUBCLASS_LEATHERWORKING_PATTERN = 1, + ITEM_SUBCLASS_TAILORING_PATTERN = 2, + ITEM_SUBCLASS_ENGINEERING_SCHEMATIC = 3, + ITEM_SUBCLASS_BLACKSMITHING = 4, + ITEM_SUBCLASS_COOKING_RECIPE = 5, + ITEM_SUBCLASS_ALCHEMY_RECIPE = 6, + ITEM_SUBCLASS_FIRST_AID_MANUAL = 7, + ITEM_SUBCLASS_ENCHANTING_FORMULA = 8, + ITEM_SUBCLASS_FISHING_MANUAL = 9, + ITEM_SUBCLASS_JEWELCRAFTING = 10 }; enum ITEM_SUBCLASS_QUIVER { - ITEM_SUBCLASS_QUIVER = 2, - ITEM_SUBCLASS_AMMO_POUCH = 3 + ITEM_SUBCLASS_QUIVER0 = 0, // ABS + ITEM_SUBCLASS_QUIVER1 = 1, // ABS + ITEM_SUBCLASS_QUIVER = 2, + ITEM_SUBCLASS_AMMO_POUCH = 3 }; +enum ITEM_SUBCLASS_KEY +{ + ITEM_SUBCLASS_KEY = 0, + ITEM_SUBCLASS_LOCKPICK = 1 +}; + // Only GCC 4.1.0 and later support #pragma pack(push,1) syntax #if defined( __GNUC__ ) && (GCC_MAJOR < 4 || GCC_MAJOR == 4 && GCC_MINOR < 1) #pragma pack(1) @@ -314,11 +379,18 @@ }; +struct _Socket +{ + uint32 Color; + uint32 Content; +}; + struct ItemPrototype { uint32 ItemId; uint32 Class; uint32 SubClass; + uint32 Unk0; char* Name1; char* Name2; char* Name3; @@ -368,12 +440,19 @@ uint32 Material; uint32 Sheath; uint32 Extra; + uint32 Unk4; // was added in 2.0.3... uint32 Block; uint32 ItemSet; uint32 MaxDurability; uint32 Area; + uint32 Map; uint32 BagFamily; - uint32 Unknown1; + uint32 TotemCategory; + _Socket Socket[3]; + uint32 socketBonus; + uint32 GemProperties; + uint32 ExtendedCost; + uint32 RequiredDisenchantSkill; char* ScriptName; uint32 DisenchantID; }; Index: src/game/Item.h =================================================================== --- src/game/Item.h (working copy) +++ src/game/Item.h (working copy) @@ -76,7 +76,7 @@ EQUIP_ERR_YOU_ARE_STUNNED = 37, EQUIP_ERR_YOU_ARE_DEAD = 38, EQUIP_ERR_CANT_DO_RIGHT_NOW = 39, - EQUIP_ERR_BAG_FULL2 = 40, + EQUIP_ERR_INT_BAG_ERROR = 40, EQUIP_ERR_CAN_EQUIP_ONLY1_QUIVER2 = 41, EQUIP_ERR_CAN_EQUIP_ONLY1_AMMOPOUCH = 42, EQUIP_ERR_STACKABLE_CANT_BE_WRAPPED = 43, @@ -101,7 +101,14 @@ EQUIP_ERR_BAG_FULL6 = 62, EQUIP_ITEM_RANK_NOT_ENOUGH = 63, EQUIP_ITEM_REPUTATION_NOT_ENOUGH = 64, - EQUIP_MORE_THAN1_SPECIAL_BAG = 65 + EQUIP_MORE_THAN1_SPECIAL_BAG = 65, + EQUIP_CANT_LOOT_NOW = 66, + EQUIP_CANT_EQUIP_MORE_THAN_ONE_OF_THAT = 67, + EQUIP_DONT_HAVE_REQITEMS_FOR_THAT_PURCHASE = 68, + EQUIP_DONT_HAVE_ENOUGHT_HONOR_POINTS = 69, + EQUIP_DONT_HAVE_ENOUGHT_ARENA_POINTS = 70, + EQUIP_MAX_GEMS_IN_INVENTORY = 71, + EQUIP_CANT_MAIL_SOULBOUND = 72 }; enum BuyFailure @@ -112,15 +119,18 @@ BUY_ERR_SELLER_DONT_LIKE_YOU = 4, BUY_ERR_DISTANCE_TOO_FAR = 5, BUY_ERR_CANT_CARRY_MORE = 8, - BUY_ERR_LEVEL_REQUIRE = 11, + BUY_ERR_LEVEL_REQUIRE = 11, // 2.0.1 - rank BUY_ERR_REPUTATION_REQUIRE = 12 }; enum SellFailure { SELL_ERR_CANT_FIND_ITEM = 1, - SELL_ERR_CANT_SELL_ITEM = 2, - SELL_ERR_CANT_FIND_VENDOR = 3 + SELL_ERR_CANT_SELL_ITEM = 2, // merchant doesn't like that item + SELL_ERR_CANT_FIND_VENDOR = 3, // merchant doesn't like you + SELL_ERR_YOU_DONT_OWN_THAT_ITEM = 4, // you don't own that item + SELL_ERR_UNK = 5, // nothing appears... + SELL_ERR_ONLY_EMPTY_BAG = 6 // can only do with empty bags }; enum ItemUpdateState Index: src/game/Guild.h =================================================================== --- src/game/Guild.h (working copy) +++ src/game/Guild.h (working copy) @@ -19,7 +19,7 @@ #ifndef MANGOSSERVER_GUILD_H #define MANGOSSERVER_GUILD_H -#define MAXRANKS 10 +#define GUILD_MAXRANKS 10 enum GuildDefaultRanks { Index: src/game/SharedDefines.h =================================================================== --- src/game/SharedDefines.h (working copy) +++ src/game/SharedDefines.h (working copy) @@ -33,15 +33,18 @@ RACE_ORC = 2, RACE_DWARF = 3, RACE_NIGHTELF = 4, - // if it needs be to official, it's actually SCOURGE acording to the story/.dbc RACE_UNDEAD_PLAYER = 5, RACE_TAUREN = 6, RACE_GNOME = 7, RACE_TROLL = 8, - MAX_RACES = 9, - // officially, this exists but was never taken into use.. neutral faction which could - // learn some skills/spells from horde/alliance. maybe it'll be of some use later on. - RACE_GOBLIN = 9 + RACE_GOBLIN = 9, + RACE_BLOODELF = 10, + RACE_DRAENEI = 11, + RACE_FEL_ORC = 12, + RACE_NAGA = 13, + RACE_BROKEN = 14, + RACE_SKELETON = 15, + MAX_RACES = 16 }; // Class value is index in ChrClasses.dbc @@ -69,7 +72,7 @@ REP_NEUTRAL = 3, REP_FRIENDLY = 4, REP_HONORED = 5, - REP_REVERTED = 6, + REP_REVERED = 6, REP_EXALTED = 7 }; @@ -82,6 +85,7 @@ MAP_INSTANCE = 1, MAP_RAID = 2, MAP_BATTLEGROUND = 3, + MAP_ARENA = 4 }; enum MoneyConstants @@ -175,7 +179,8 @@ enum Language { - LANG_GLOBAL = 0, LANG_UNIVERSAL = 0, + LANG_GLOBAL = 0, + LANG_UNIVERSAL = 0, LANG_ORCISH = 1, LANG_DARNASSIAN = 2, LANG_TAURAHE = 3, @@ -183,15 +188,16 @@ LANG_COMMON = 7, LANG_DEMONIC = 8, LANG_TITAN = 9, - LANG_THELASSIAN = 10, + LANG_THALASSIAN = 10, LANG_DRACONIC = 11, LANG_KALIMAG = 12, LANG_GNOMISH = 13, LANG_TROLL = 14, - LANG_GUTTERSPEAK = 33 + LANG_GUTTERSPEAK = 33, + LANG_DRAENEI = 35 }; -#define LANGUAGES_COUNT 15 +#define LANGUAGES_COUNT 17 enum Team { @@ -326,7 +332,21 @@ SPELL_EFFECT_APPLY_AURA_NEW = 119, SPELL_EFFECT_TELEPORT_GRAVEYARD = 120, SPELL_EFFECT_NORMALIZED_WEAPON_DMG = 121, - TOTAL_SPELL_EFFECTS = 122 + SPELL_EFFECT_122 = 122, + SPELL_EFFECT_123 = 123, + SPELL_EFFECT_124 = 124, + SPELL_EFFECT_125 = 125, + SPELL_EFFECT_126 = 126, + SPELL_EFFECT_127 = 127, + SPELL_EFFECT_128 = 128, + SPELL_EFFECT_129 = 129, + SPELL_EFFECT_130 = 130, + SPELL_EFFECT_131 = 131, + SPELL_EFFECT_132 = 132, + SPELL_EFFECT_133 = 133, + SPELL_EFFECT_134 = 134, + SPELL_EFFECT_135 = 135, + TOTAL_SPELL_EFFECTS = 136 }; enum CharacterStates @@ -371,7 +391,11 @@ GAMEOBJECT_TYPE_FISHINGHOLE = 25, GAMEOBJECT_TYPE_FLAGDROP = 26, // Custom gametypes, can create problems at sending to client, - GAMEOBJECT_TYPE_CUSTOM_TELEPORTER = 27 + GAMEOBJECT_TYPE_CUSTOM_TELEPORTER = 27, + GAMEOBJECT_TYPE_LOTTERY_KIOSK = 28, + GAMEOBJECT_TYPE_CAPTURE_POINT = 29, + GAMEOBJECT_TYPE_AURA_GENERATOR = 30, + GAMEOBJECT_TYPE_DUNGEON_DIFFICULTY = 31 }; enum TextEmote @@ -528,8 +552,14 @@ TEXTEMOTE_FLOP = 224, TEXTEMOTE_LOVE = 225, TEXTEMOTE_MOO = 226, + TEXTEMOTE_OPENFIRE = 327, + TEXTEMOTE_FLIRT = 328, + TEXTEMOTE_JOKE = 329, TEXTEMOTE_COMMEND = 243, - TEXTEMOTE_JOKE = 329 + TEXTEMOTE_WINK = 363, + TEXTEMOTE_PAT = 364, + TEXTEMOTE_SERIOUS = 365, + TEXTEMOTE_MOUNTSPECIAL = 366 }; enum Emote @@ -605,11 +635,30 @@ EMOTE_ONESHOT_NO = 274, EMOTE_ONESHOT_TRAIN = 275, EMOTE_ONESHOT_LAND = 293, + EMOTE_STATE_AT_EASE = 313, EMOTE_STATE_READY1H = 333, - EMOTE_STATE_AT_EASE = 313, EMOTE_STATE_SPELLKNEELSTART = 353, EMOTE_STATE_SUBMERGED = 373, - EMOTE_ONESHOT_SUBMERGE = 374 + 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 }; enum Anim @@ -760,30 +809,69 @@ ANIM_SPRINT = 0x8F, ANIM_IN_FIGHT = 0x90, - FIRST_GAMEOBJECTANIMATION = 0x91, - ANIM_GAMEOBJ_SPAWN = 0, - ANIM_GAMEOBJ_CLOSED = 1, - ANIM_GAMEOBJ_OPEN = 2, - ANIM_GAMEOBJ_OPENED = 3, - ANIM_GAMEOBJ_CLOSE = 4, - ANIM_GAMEOBJ_DESTROY = 5, - ANIM_GAMEOBJ_DESTROYED = 6, - ANIM_GAMEOBJ_REBUILD = 7, - ANIM_GAMEOBJ_CUSTOM0 = 8, - ANIM_GAMEOBJ_CUSTOM1 = 9, - ANIM_GAMEOBJ_CUSTOM2 = 10, - ANIM_GAMEOBJ_CUSTOM3 = 11, - - FIRST_EFFECTANIMATION = 0x93, - ANIM_EFFECT_STAND = 0, - ANIM_EFFECT_HOLD = 1, - ANIM_EFFECT_DECAY = 2, - - FIRST_ITEMANIMATION = 0x96, - ANIM_ITEM_STAND = 0, - ANIM_ITEM_INFLIGHT = 1, - ANIM_ITEM_BOWPULL = 2, - ANIM_ITEM_BOWRELEASE = 3 + ANIM_GAMEOBJ_SPAWN = 145, + ANIM_GAMEOBJ_CLOSE = 146, + ANIM_GAMEOBJ_CLOSED = 147, + ANIM_GAMEOBJ_OPEN = 148, + ANIM_GAMEOBJ_OPENED = 149, + ANIM_GAMEOBJ_DESTROY = 150, + ANIM_GAMEOBJ_DESTROYED = 151, + ANIM_GAMEOBJ_REBUILD = 152, + ANIM_GAMEOBJ_CUSTOM0 = 153, + ANIM_GAMEOBJ_CUSTOM1 = 154, + ANIM_GAMEOBJ_CUSTOM2 = 155, + ANIM_GAMEOBJ_CUSTOM3 = 156, + ANIM_GAMEOBJ_DESPAWN = 157, + ANIM_HOLD = 158, + ANIM_DECAY = 159, + ANIM_BOWPULL = 160, + ANIM_BOWRELEASE = 161, + ANIM_SHIPSTART = 162, + ANIM_SHIPMOVEING = 163, + ANIM_SHIPSTOP = 164, + ANIM_GROUPARROW = 165, + ANIM_ARROW = 166, + ANIM_CORPSEARROW = 167, + ANIM_GUIDEARROW = 168, + ANIM_SWAY = 169, + ANIM_DRUIDCATPOUNCE = 170, + ANIM_DRUIDCATRIP = 171, + ANIM_DRUIDCATRAKE = 172, + ANIM_DRUIDCATRAVAGE = 173, + ANIM_DRUIDCATCLAW = 174, + ANIM_DRUIDCATCOWER = 175, + ANIM_DRUIDBEARSWIPE = 176, + ANIM_DRUIDBEARBITE = 177, + ANIM_DRUIDBEARMAUL = 178, + ANIM_DRUIDBEARBASH = 179, + ANIM_DRAGONTAIL = 180, + ANIM_DRAGONSTOMP = 181, + ANIM_DRAGONSPIT = 182, + ANIM_DRAGONSPITHOVER = 183, + ANIM_DRAGONSPITFLY = 184, + ANIM_EMOTEYES = 185, + ANIM_EMOTENO = 186, + ANIM_JUMPLANDRUN = 187, + ANIM_LOOTHOLD = 188, + ANIM_LOOTUP = 189, + ANIM_STANDHIGH = 190, + ANIM_IMPACT = 191, + ANIM_LIFTOFF = 192, + ANIM_HOVER = 193, + ANIM_SUCCUBUSENTICE = 194, + ANIM_EMOTETRAIN = 195, + ANIM_EMOTEDEAD = 196, + ANIM_EMOTEDANCEONCE = 197, + ANIM_DEFLECT = 198, + ANIM_EMOTEEATNOSHEATHE = 199, + ANIM_LAND = 200, + ANIM_SUBMERGE = 201, + ANIM_SUBMERGED = 202, + ANIM_CANNIBALIZE = 203, + ANIM_ARROWBIRTH = 204, + ANIM_GROURARROWBIRTH = 205, + ANIM_CORPSEARROWBIRTH = 206, + ANIM_GUIDEARROWBIRTH = 207 }; enum LockType @@ -805,7 +893,8 @@ LOCKTYPE_GAHZRIDIAN = 15, LOCKTYPE_BLASTING = 16, LOCKTYPE_SLOW_OPEN = 17, - LOCKTYPE_SLOW_CLOSE = 18 + LOCKTYPE_SLOW_CLOSE = 18, + LOCKTYPE_FISHING = 19 }; enum TrainerType // this is important type for npcs! @@ -827,7 +916,8 @@ CREATURE_TYPE_HUMANOID = 7, CREATURE_TYPE_CRITTER = 8, CREATURE_TYPE_MECHANICAL = 9, - CREATURE_TYPE_UNKNOWN = 10 + CREATURE_TYPE_NOTSPECIFIED = 10, + CREATURE_TYPE_TOTEM = 11 }; enum CreatureFamily @@ -853,7 +943,15 @@ CREATURE_FAMILY_BAT = 24, CREATURE_FAMILY_HYENA = 25, CREATURE_FAMILY_OWL = 26, - CREATURE_FAMILY_WIND_SERPENT = 27 + CREATURE_FAMILY_WIND_SERPENT = 27, + CREATURE_FAMILY_REMOTE_CONTROL = 28, + CREATURE_FAMILY_FELGUARD = 29, + CREATURE_FAMILY_DRAGONHAWK = 30, + CREATURE_FAMILY_RAVAGER = 31, + CREATURE_FAMILY_WARP_STALKER = 32, + CREATURE_FAMILY_SPOREBAT = 33, + CREATURE_FAMILY_NETHER_RAY = 34, + CREATURE_FAMILY_SERPENT = 35 }; enum CreatureEliteType @@ -871,7 +969,10 @@ QUEST_TYPE_LIFE = 21, QUEST_TYPE_PVP = 41, QUEST_TYPE_RAID = 62, - QUEST_TYPE_DUNGEON = 81 + QUEST_TYPE_DUNGEON = 81, + QUEST_TYPE_WORLD_EVENT = 82, + QUEST_TYPE_LEGENDARY = 83, + QUEST_TYPE_ESCORT = 84 }; enum QuestSort @@ -902,7 +1003,14 @@ QUEST_SORT_TAILORING = 264, QUEST_SORT_SPECIAL = 284, QUEST_SORT_COOKING = 304, - QUEST_SORT_FIRST_AID = 324 + QUEST_SORT_FIRST_AID = 324, + QUEST_SORT_LEGENDARY = 344, + QUEST_SORT_DARKMOON_FAIRE = 364, + QUEST_SORT_AHN_QIRAJ_WAR = 365, + QUEST_SORT_LUNAR_FESTIVAL = 366, + QUEST_SORT_REPUTATION = 367, + QUEST_SORT_INVASION = 368, + QUEST_SORT_MIDSUMMER = 369 }; enum SkillType @@ -987,21 +1095,17 @@ SKILL_SPEARS = 227, SKILL_WANDS = 228, SKILL_POLEARMS = 229, - SKILL_ATTRIBUTE_ENCHANCEMENTS = 230, - SKILL_SLAYER_TALENTS = 231, - SKILL_MAGIC_TALENTS = 233, - SKILL_DEFENSIVE_TALENTS = 234, SKILL_PET_SCORPID = 236, SKILL_ARCANE = 237, SKILL_OPEN_LOCK = 242, SKILL_PET_TURTLE = 251, + SKILL_ASSASSINATION = 253, SKILL_FURY = 256, SKILL_PROTECTION = 257, SKILL_BEAST_TRAINING = 261, SKILL_PROTECTION2 = 267, SKILL_PET_TALENTS = 270, SKILL_PLATE_MAIL = 293, - SKILL_ASSASSINATION = 253, SKILL_LANG_GNOMISH = 313, SKILL_LANG_TROLL = 315, SKILL_ENCHANTING = 333, @@ -1012,17 +1116,11 @@ SKILL_RESTORATION = 374, SKILL_ELEMENTAL_COMBAT = 375, SKILL_SKINNING = 393, + SKILL_MAIL = 413, SKILL_LEATHER = 414, SKILL_CLOTH = 415, - SKILL_MAIL = 413, SKILL_SHIELD = 433, SKILL_FIST_WEAPONS = 473, - SKILL_TRACKING_BEAST = 513, - SKILL_TRACKING_HUMANOID = 514, - SKILL_TRACKING_DEMON = 516, - SKILL_TRACKING_UNDEAD = 517, - SKILL_TRACKING_DRAGON = 518, - SKILL_TRACKING_ELEMENTAL = 519, SKILL_RIDING_RAPTOR = 533, SKILL_RIDING_MECHANOSTRIDER = 553, SKILL_RIDING_UNDEAD_HORSE = 554, @@ -1041,32 +1139,64 @@ SKILL_RACIAL_TROLL = 733, SKILL_RACIAL_GNOME = 753, SKILL_RACIAL_HUMAN = 754, - SKILL_RIDING = 762 + SKILL_JEWELCRAFTING = 755, + SKILL_RACIAL_BLOODELF = 756, + SKILL_PET_EVENT_RC = 758, + SKILL_LANG_DRAENEI = 759, + SKILL_RACIAL_DRAENEI = 760, + SKILL_PET_FELGUARD = 761, + SKILL_RIDING = 762, + SKILL_PET_DRAGONHAWK = 763, + SKILL_PET_NETHER_RAY = 764, + SKILL_PET_SPOREBAT = 765, + SKILL_PET_WARP_STALKER = 766, + SKILL_PET_RAVAGER = 767, + SKILL_PET_SERPENT = 768 }; -#define UNIT_DYNFLAG_LOOTABLE 0x0001 +enum TotemCategory +{ + TC_SKINNING_SKIFE = 1, + TC_EARTH_TOTEM = 2, + TC_AIR_TOTEM = 3, + TC_FIRE_TOTEM = 4, + TC_WATER_TOTEM = 5, + TC_COPPER_ROD = 6, + TC_SILVER_ROD = 7, + TC_GOLDEN_ROD = 8, + TC_TRUESILVER_ROD = 9, + TC_ARCANITE_ROD = 10, + TC_MINING_PICK = 11, + TC_PHILOSOPHERS_STONE = 12, + TC_BLACKSMITH_HAMMER = 13, + TC_ARCLIGHT_SPANNER = 14, + TC_GYROMATIC_MA = 15, + TC_MASTER_TOTEM = 21, + TC_FEL_IRON_ROD = 41, + TC_ADAMANTITE_ROD = 62, + TC_ETERNIUM_ROD = 63 +}; -#define UNIT_DYNFLAG_TRACK_UNIT 0x0002 +enum UnitDynFlags +{ + UNIT_DYNFLAG_LOOTABLE = 0x0001, + UNIT_DYNFLAG_TRACK_UNIT = 0x0002, + UNIT_DYNFLAG_OTHER_TAGGER = 0x0004, + UNIT_DYNFLAG_ROOTED = 0x0008, + UNIT_DYNFLAG_SPECIALINFO = 0x0010, + UNIT_DYNFLAG_DEAD = 0x0020 +}; -#define UNIT_DYNFLAG_OTHER_TAGGER 0x0004 +enum UnitFlags1 +{ + UNIT_FLAG_NOT_ATTACKABLE = 0x0002, + UNIT_FLAG_ATTACKABLE = 0x0008, + UNIT_FLAG_NOT_ATTACKABLE_1 = 0x0080, + UNIT_FLAG_NON_PVP_PLAYER = (UNIT_FLAG_ATTACKABLE + UNIT_FLAG_NOT_ATTACKABLE_1), + UNIT_FLAG_ANIMATION_FROZEN = 0x0400, + UNIT_FLAG_WAR_PLAYER = 0x1000 +}; -#define UNIT_DYNFLAG_ROOTED 0x0008 - -#define UNIT_DYNFLAG_SPECIALINFO 0x0010 - -#define UNIT_DYNFLAG_DEAD 0x0020 - -#define UNIT_FLAG_NOT_ATTACKABLE 0x0002 - -#define UNIT_FLAG_ATTACKABLE 0x0008 - -#define UNIT_FLAG_NOT_ATTACKABLE_1 0x0080 - -#define UNIT_FLAG_NON_PVP_PLAYER (UNIT_FLAG_ATTACKABLE + UNIT_FLAG_NOT_ATTACKABLE_1) - -#define UNIT_FLAG_ANIMATION_FROZEN 0x0400 -#define UNIT_FLAG_WAR_PLAYER 0x1000 - #define SPELL_ID_AGGRO 22764 enum WeatherTypes Index: src/game/UpdateFields.h =================================================================== --- src/game/UpdateFields.h (working copy) +++ src/game/UpdateFields.h (working copy) @@ -23,357 +23,339 @@ enum EObjectFields { - OBJECT_FIELD_GUID = 0x0000, - OBJECT_FIELD_TYPE = 0x0002, - OBJECT_FIELD_ENTRY = 0x0003, - OBJECT_FIELD_SCALE_X = 0x0004, - OBJECT_FIELD_PADDING = 0x0005, - OBJECT_END = OBJECT_FIELD_PADDING + 1, + OBJECT_FIELD_GUID = 0x00, // Size:2 + OBJECT_FIELD_TYPE = 0x02, // Size:1 + OBJECT_FIELD_ENTRY = 0x03, // Size:1 + OBJECT_FIELD_SCALE_X = 0x04, // Size:1 + OBJECT_FIELD_PADDING = 0x05, // Size:1 + OBJECT_END = 0x06, }; enum EItemFields { - ITEM_FIELD_OWNER = OBJECT_END + 0x0000, - ITEM_FIELD_CONTAINED = OBJECT_END + 0x0002, - ITEM_FIELD_CREATOR = OBJECT_END + 0x0004, - ITEM_FIELD_GIFTCREATOR = OBJECT_END + 0x0006, - ITEM_FIELD_STACK_COUNT = OBJECT_END + 0x0008, - ITEM_FIELD_DURATION = OBJECT_END + 0x0009, - ITEM_FIELD_SPELL_CHARGES = OBJECT_END + 0x000A, - ITEM_FIELD_FLAGS = OBJECT_END + 0x000F, - ITEM_FIELD_ENCHANTMENT = OBJECT_END + 0x0010, - ITEM_FIELD_PROPERTY_SEED = OBJECT_END + 0x0025, - ITEM_FIELD_RANDOM_PROPERTIES_ID = OBJECT_END + 0x0026, - ITEM_FIELD_ITEM_TEXT_ID = OBJECT_END + 0x0027, - ITEM_FIELD_DURABILITY = OBJECT_END + 0x0028, - ITEM_FIELD_MAXDURABILITY = OBJECT_END + 0x0029, - ITEM_END = ITEM_FIELD_MAXDURABILITY + 1, + ITEM_FIELD_OWNER = OBJECT_END + 0x00, // Size:2 + ITEM_FIELD_CONTAINED = OBJECT_END + 0x02, // Size:2 + ITEM_FIELD_CREATOR = OBJECT_END + 0x04, // Size:2 + ITEM_FIELD_GIFTCREATOR = OBJECT_END + 0x06, // Size:2 + ITEM_FIELD_STACK_COUNT = OBJECT_END + 0x08, // Size:1 + ITEM_FIELD_DURATION = OBJECT_END + 0x09, // Size:1 + ITEM_FIELD_SPELL_CHARGES = OBJECT_END + 0x0A, // Size:5 + ITEM_FIELD_SPELL_CHARGES_01 = OBJECT_END + 0x0B, + ITEM_FIELD_SPELL_CHARGES_02 = OBJECT_END + 0x0C, + ITEM_FIELD_SPELL_CHARGES_03 = OBJECT_END + 0x0D, + ITEM_FIELD_SPELL_CHARGES_04 = OBJECT_END + 0x0E, + ITEM_FIELD_FLAGS = OBJECT_END + 0x0F, // Size:1 + ITEM_FIELD_ENCHANTMENT = OBJECT_END + 0x10, // count=33 This is 21 past + ITEM_FIELD_SOCKETS_ENCHANTMENT = OBJECT_END + 0x25, // + (3 sockets + 1 bonus) * 3 uint32 = 12 + ITEM_FIELD_ENCHANTMENT_LAST = OBJECT_END + 0x30, + ITEM_FIELD_PROPERTY_SEED = OBJECT_END + 0x31, // Size:1 + ITEM_FIELD_RANDOM_PROPERTIES_ID = OBJECT_END + 0x32, // Size:1 + ITEM_FIELD_ITEM_TEXT_ID = OBJECT_END + 0x33, // Size:1 + ITEM_FIELD_DURABILITY = OBJECT_END + 0x34, // Size:1 + ITEM_FIELD_MAXDURABILITY = OBJECT_END + 0x35, // Size:1 + ITEM_END = OBJECT_END + 0x36, }; enum EContainerFields { - CONTAINER_FIELD_NUM_SLOTS = ITEM_END + 0x0000, - CONTAINER_ALIGN_PAD = ITEM_END + 0x0001, - CONTAINER_FIELD_SLOT_1 = ITEM_END + 0x0002, - CONTAINER_END = CONTAINER_FIELD_SLOT_1 + 56, + CONTAINER_FIELD_NUM_SLOTS = ITEM_END + 0x00, // Size:1 + CONTAINER_ALIGN_PAD = ITEM_END + 0x01, // Size:1 + CONTAINER_FIELD_SLOT_1 = ITEM_END + 0x02, // count=72 + CONTAINER_FIELD_SLOT_LAST = ITEM_END + 0x49, + CONTAINER_END = ITEM_END + 0x4A, }; enum EUnitFields { - UNIT_FIELD_CHARM = OBJECT_END + 0x0000, - UNIT_FIELD_SUMMON = OBJECT_END + 0x0002, - UNIT_FIELD_CHARMEDBY = OBJECT_END + 0x0004, - UNIT_FIELD_SUMMONEDBY = OBJECT_END + 0x0006, - UNIT_FIELD_CREATEDBY = OBJECT_END + 0x0008, - UNIT_FIELD_TARGET = OBJECT_END + 0x000A, - UNIT_FIELD_PERSUADED = OBJECT_END + 0x000C, - UNIT_FIELD_CHANNEL_OBJECT = OBJECT_END + 0x000E, - UNIT_FIELD_HEALTH = OBJECT_END + 0x0010, - UNIT_FIELD_POWER1 = OBJECT_END + 0x0011, - UNIT_FIELD_POWER2 = OBJECT_END + 0x0012, - UNIT_FIELD_POWER3 = OBJECT_END + 0x0013, - UNIT_FIELD_POWER4 = OBJECT_END + 0x0014, - UNIT_FIELD_POWER5 = OBJECT_END + 0x0015, - UNIT_FIELD_MAXHEALTH = OBJECT_END + 0x0016, - UNIT_FIELD_MAXPOWER1 = OBJECT_END + 0x0017, - UNIT_FIELD_MAXPOWER2 = OBJECT_END + 0x0018, - UNIT_FIELD_MAXPOWER3 = OBJECT_END + 0x0019, - UNIT_FIELD_MAXPOWER4 = OBJECT_END + 0x001A, - UNIT_FIELD_MAXPOWER5 = OBJECT_END + 0x001B, - UNIT_FIELD_LEVEL = OBJECT_END + 0x001C, - UNIT_FIELD_FACTIONTEMPLATE = OBJECT_END + 0x001D, - UNIT_FIELD_BYTES_0 = OBJECT_END + 0x001E, - UNIT_VIRTUAL_ITEM_SLOT_DISPLAY = OBJECT_END + 0x001F, - UNIT_VIRTUAL_ITEM_INFO = OBJECT_END + 0x0022, - UNIT_FIELD_FLAGS = OBJECT_END + 0x0028, - UNIT_FIELD_AURA = OBJECT_END + 0x0029, - UNIT_FIELD_AURAFLAGS = OBJECT_END + 0x0059, - UNIT_FIELD_AURALEVELS = OBJECT_END + 0x005F, - UNIT_FIELD_AURAAPPLICATIONS = OBJECT_END + 0x006B, - UNIT_FIELD_AURASTATE = OBJECT_END + 0x0077, - UNIT_FIELD_BASEATTACKTIME = OBJECT_END + 0x0078, - UNIT_FIELD_RANGEDATTACKTIME = OBJECT_END + 0x007A, - UNIT_FIELD_BOUNDINGRADIUS = OBJECT_END + 0x007B, - UNIT_FIELD_COMBATREACH = OBJECT_END + 0x007C, - UNIT_FIELD_DISPLAYID = OBJECT_END + 0x007D, - UNIT_FIELD_NATIVEDISPLAYID = OBJECT_END + 0x007E, - UNIT_FIELD_MOUNTDISPLAYID = OBJECT_END + 0x007F, - UNIT_FIELD_MINDAMAGE = OBJECT_END + 0x0080, - UNIT_FIELD_MAXDAMAGE = OBJECT_END + 0x0081, - UNIT_FIELD_MINOFFHANDDAMAGE = OBJECT_END + 0x0082, - UNIT_FIELD_MAXOFFHANDDAMAGE = OBJECT_END + 0x0083, - UNIT_FIELD_BYTES_1 = OBJECT_END + 0x0084, - UNIT_FIELD_PETNUMBER = OBJECT_END + 0x0085, - UNIT_FIELD_PET_NAME_TIMESTAMP = OBJECT_END + 0x0086, - UNIT_FIELD_PETEXPERIENCE = OBJECT_END + 0x0087, - UNIT_FIELD_PETNEXTLEVELEXP = OBJECT_END + 0x0088, - UNIT_DYNAMIC_FLAGS = OBJECT_END + 0x0089, - UNIT_CHANNEL_SPELL = OBJECT_END + 0x008A, - UNIT_MOD_CAST_SPEED = OBJECT_END + 0x008B, - UNIT_CREATED_BY_SPELL = OBJECT_END + 0x008C, - UNIT_NPC_FLAGS = OBJECT_END + 0x008D, - UNIT_NPC_EMOTESTATE = OBJECT_END + 0x008E, - UNIT_TRAINING_POINTS = OBJECT_END + 0x008F, - UNIT_FIELD_STR = OBJECT_END + 0x0090, - UNIT_FIELD_AGILITY = OBJECT_END + 0x0091, - UNIT_FIELD_STAMINA = OBJECT_END + 0x0092, - UNIT_FIELD_IQ = OBJECT_END + 0x0093, - UNIT_FIELD_SPIRIT = OBJECT_END + 0x0094, - UNIT_FIELD_RESISTANCES = OBJECT_END + 0x0095, - UNIT_FIELD_BASE_MANA = OBJECT_END + 0x009C, - UNIT_FIELD_BASE_HEALTH = OBJECT_END + 0x009D, - UNIT_FIELD_BYTES_2 = OBJECT_END + 0x009E, - UNIT_FIELD_ATTACK_POWER = OBJECT_END + 0x009F, - UNIT_FIELD_ATTACK_POWER_MODS = OBJECT_END + 0x00A0, - UNIT_FIELD_ATTACK_POWER_MULTIPLIER = OBJECT_END + 0x00A1, - UNIT_FIELD_RANGED_ATTACK_POWER = OBJECT_END + 0x00A2, - UNIT_FIELD_RANGED_ATTACK_POWER_MODS = OBJECT_END + 0x00A3, - UNIT_FIELD_RANGED_ATTACK_POWER_MULTIPLIER = OBJECT_END + 0x00A4, - UNIT_FIELD_MINRANGEDDAMAGE = OBJECT_END + 0x00A5, - UNIT_FIELD_MAXRANGEDDAMAGE = OBJECT_END + 0x00A6, - UNIT_FIELD_POWER_COST_MODIFIER = OBJECT_END + 0x00A7, - UNIT_FIELD_POWER_COST_MULTIPLIER = OBJECT_END + 0x00AE, - UNIT_FIELD_PADDING = OBJECT_END + 0x00B5, - UNIT_END = UNIT_FIELD_PADDING + 1, -}; + UNIT_FIELD_CHARM = 0x00 + OBJECT_END, // Size:2 + UNIT_FIELD_SUMMON = 0x02 + OBJECT_END, // Size:2 + UNIT_FIELD_CHARMEDBY = 0x04 + OBJECT_END, // Size:2 + UNIT_FIELD_SUMMONEDBY = 0x06 + OBJECT_END, // Size:2 + UNIT_FIELD_CREATEDBY = 0x08 + OBJECT_END, // Size:2 + UNIT_FIELD_TARGET = 0x0A + OBJECT_END, // Size:2 + UNIT_FIELD_PERSUADED = 0x0C + OBJECT_END, // Size:2 + UNIT_FIELD_CHANNEL_OBJECT = 0x0E + OBJECT_END, // Size:2 + UNIT_FIELD_HEALTH = 0x10 + OBJECT_END, // Size:1 + UNIT_FIELD_POWER1 = 0x11 + OBJECT_END, // Size:1 + UNIT_FIELD_POWER2 = 0x12 + OBJECT_END, // Size:1 + UNIT_FIELD_POWER3 = 0x13 + OBJECT_END, // Size:1 + UNIT_FIELD_POWER4 = 0x14 + OBJECT_END, // Size:1 + UNIT_FIELD_POWER5 = 0x15 + OBJECT_END, // Size:1 + UNIT_FIELD_MAXHEALTH = 0x16 + OBJECT_END, // Size:1 + UNIT_FIELD_MAXPOWER1 = 0x17 + OBJECT_END, // Size:1 + UNIT_FIELD_MAXPOWER2 = 0x18 + OBJECT_END, // Size:1 + UNIT_FIELD_MAXPOWER3 = 0x19 + OBJECT_END, // Size:1 + UNIT_FIELD_MAXPOWER4 = 0x1A + OBJECT_END, // Size:1 + UNIT_FIELD_MAXPOWER5 = 0x1B + OBJECT_END, // Size:1 + UNIT_FIELD_LEVEL = 0x1C + OBJECT_END, // Size:1 + UNIT_FIELD_FACTIONTEMPLATE = 0x1D + OBJECT_END, // Size:1 + UNIT_FIELD_BYTES_0 = 0x1E + OBJECT_END, // Size:1 + UNIT_VIRTUAL_ITEM_SLOT_DISPLAY = 0x1F + OBJECT_END, // Size:3 + UNIT_VIRTUAL_ITEM_SLOT_DISPLAY_01 = 0x20 + OBJECT_END, + UNIT_VIRTUAL_ITEM_SLOT_DISPLAY_02 = 0x21 + OBJECT_END, + UNIT_VIRTUAL_ITEM_INFO = 0x22 + OBJECT_END, // Size:6 + UNIT_VIRTUAL_ITEM_INFO_01 = 0x23 + OBJECT_END, + UNIT_VIRTUAL_ITEM_INFO_02 = 0x24 + OBJECT_END, + UNIT_VIRTUAL_ITEM_INFO_03 = 0x25 + OBJECT_END, + UNIT_VIRTUAL_ITEM_INFO_04 = 0x26 + OBJECT_END, + UNIT_VIRTUAL_ITEM_INFO_05 = 0x27 + OBJECT_END, + UNIT_FIELD_FLAGS = 0x28 + OBJECT_END, // Size:1 + UNIT_FIELD_FLAGS_2 = 0x29 + OBJECT_END, // Size:1 + UNIT_FIELD_AURA = 0x2A + OBJECT_END, // Size:56 + UNIT_FIELD_AURA_LAST = 0x63 + OBJECT_END, + UNIT_FIELD_AURAFLAGS = 0x62 + OBJECT_END, // Size:7 + UNIT_FIELD_AURAFLAGS_01 = 0x63 + OBJECT_END, + UNIT_FIELD_AURAFLAGS_02 = 0x64 + OBJECT_END, + UNIT_FIELD_AURAFLAGS_03 = 0x65 + OBJECT_END, + UNIT_FIELD_AURAFLAGS_04 = 0x66 + OBJECT_END, + UNIT_FIELD_AURAFLAGS_05 = 0x67 + OBJECT_END, + UNIT_FIELD_AURAFLAGS_06 = 0x68 + OBJECT_END, + UNIT_FIELD_AURALEVELS = 0x69 + OBJECT_END, // Size:14 + UNIT_FIELD_AURALEVELS_LAST = 0x76 + OBJECT_END, + UNIT_FIELD_AURAAPPLICATIONS = 0x77 + OBJECT_END, // Size:14 + UNIT_FIELD_AURAAPPLICATIONS_LAST = 0x84 + OBJECT_END, + UNIT_FIELD_AURASTATE = 0x85 + OBJECT_END, // Size:1 + UNIT_FIELD_BASEATTACKTIME = 0x86 + OBJECT_END, // Size:2 + UNIT_FIELD_BASEATTACKTIME_01 = 0x87 + OBJECT_END, + UNIT_FIELD_OFFHANDATTACKTIME = 0x87 + OBJECT_END, // Size:2 + UNIT_FIELD_RANGEDATTACKTIME = 0x88 + OBJECT_END, // Size:1 + UNIT_FIELD_BOUNDINGRADIUS = 0x89 + OBJECT_END, // Size:1 + UNIT_FIELD_COMBATREACH = 0x8A + OBJECT_END, // Size:1 + UNIT_FIELD_DISPLAYID = 0x8B + OBJECT_END, // Size:1 + UNIT_FIELD_NATIVEDISPLAYID = 0x8C + OBJECT_END, // Size:1 + UNIT_FIELD_MOUNTDISPLAYID = 0x8D + OBJECT_END, // Size:1 + UNIT_FIELD_MINDAMAGE = 0x8E + OBJECT_END, // Size:1 + UNIT_FIELD_MAXDAMAGE = 0x8F + OBJECT_END, // Size:1 + UNIT_FIELD_MINOFFHANDDAMAGE = 0x90 + OBJECT_END, // Size:1 + UNIT_FIELD_MAXOFFHANDDAMAGE = 0x91 + OBJECT_END, // Size:1 + UNIT_FIELD_BYTES_1 = 0x92 + OBJECT_END, // Size:1 + UNIT_FIELD_PETNUMBER = 0x93 + OBJECT_END, // Size:1 + UNIT_FIELD_PET_NAME_TIMESTAMP = 0x94 + OBJECT_END, // Size:1 + UNIT_FIELD_PETEXPERIENCE = 0x95 + OBJECT_END, // Size:1 + UNIT_FIELD_PETNEXTLEVELEXP = 0x96 + OBJECT_END, // Size:1 + UNIT_DYNAMIC_FLAGS = 0x97 + OBJECT_END, // Size:1 + UNIT_CHANNEL_SPELL = 0x98 + OBJECT_END, // Size:1 + UNIT_MOD_CAST_SPEED = 0x99 + OBJECT_END, // Size:1 + UNIT_CREATED_BY_SPELL = 0x9A + OBJECT_END, // Size:1 + UNIT_NPC_FLAGS = 0x9B + OBJECT_END, // Size:1 + UNIT_NPC_EMOTESTATE = 0x9C + OBJECT_END, // Size:1 + UNIT_TRAINING_POINTS = 0x9D + OBJECT_END, // Size:1 + UNIT_FIELD_STAT0 = 0x9E + OBJECT_END, // Size:1 + UNIT_FIELD_STAT1 = 0x9F + OBJECT_END, // Size:1 + UNIT_FIELD_STAT2 = 0xA0 + OBJECT_END, // Size:1 + UNIT_FIELD_STAT3 = 0xA1 + OBJECT_END, // Size:1 + UNIT_FIELD_STAT4 = 0xA2 + OBJECT_END, // Size:1 + UNIT_FIELD_POSSTAT0 = 0xA3 + OBJECT_END, // Size:1 + UNIT_FIELD_POSSTAT1 = 0xA4 + OBJECT_END, // Size:1 + UNIT_FIELD_POSSTAT2 = 0xA5 + OBJECT_END, // Size:1 + UNIT_FIELD_POSSTAT3 = 0xA6 + OBJECT_END, // Size:1 + UNIT_FIELD_POSSTAT4 = 0xA7 + OBJECT_END, // Size:1 + UNIT_FIELD_NEGSTAT0 = 0xA8 + OBJECT_END, // Size:1 + UNIT_FIELD_NEGSTAT1 = 0xA9 + OBJECT_END, // Size:1 + UNIT_FIELD_NEGSTAT2 = 0xAA + OBJECT_END, // Size:1 + UNIT_FIELD_NEGSTAT3 = 0xAB + OBJECT_END, // Size:1 + UNIT_FIELD_NEGSTAT4 = 0xAC + OBJECT_END, // Size:1 + UNIT_FIELD_RESISTANCES = 0xAD + OBJECT_END, // Size:7 + UNIT_FIELD_RESISTANCES_01 = 0xAE + OBJECT_END, + UNIT_FIELD_RESISTANCES_02 = 0xAF + OBJECT_END, + UNIT_FIELD_RESISTANCES_03 = 0xB0 + OBJECT_END, + UNIT_FIELD_RESISTANCES_04 = 0xB1 + OBJECT_END, + UNIT_FIELD_RESISTANCES_05 = 0xB2 + OBJECT_END, + UNIT_FIELD_RESISTANCES_06 = 0xB3 + OBJECT_END, + UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE = 0xB4 + OBJECT_END, // Size:7 + UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE = 0xBB + OBJECT_END, // Size:7 + UNIT_FIELD_BASE_MANA = 0xC2 + OBJECT_END, // Size:1 + UNIT_FIELD_BASE_HEALTH = 0xC3 + OBJECT_END, // Size:1 + UNIT_FIELD_BYTES_2 = 0xC4 + OBJECT_END, // Size:1 + UNIT_FIELD_ATTACK_POWER = 0xC5 + OBJECT_END, // Size:1 + UNIT_FIELD_ATTACK_POWER_MODS = 0xC6 + OBJECT_END, // Size:1 + UNIT_FIELD_ATTACK_POWER_MULTIPLIER = 0xC7 + OBJECT_END, // Size:1 + UNIT_FIELD_RANGED_ATTACK_POWER = 0xC8 + OBJECT_END, // Size:1 + UNIT_FIELD_RANGED_ATTACK_POWER_MODS = 0xC9 + OBJECT_END, // Size:1 + UNIT_FIELD_RANGED_ATTACK_POWER_MULTIPLIER = 0xCA + OBJECT_END, // Size:1 + UNIT_FIELD_MINRANGEDDAMAGE = 0xCB + OBJECT_END, // Size:1 + UNIT_FIELD_MAXRANGEDDAMAGE = 0xCC + OBJECT_END, // Size:1 + UNIT_FIELD_POWER_COST_MODIFIER = 0xCD + OBJECT_END, // Size:7 + UNIT_FIELD_POWER_COST_MODIFIER_01 = 0xCE + OBJECT_END, + UNIT_FIELD_POWER_COST_MODIFIER_02 = 0xCF + OBJECT_END, + UNIT_FIELD_POWER_COST_MODIFIER_03 = 0xD0 + OBJECT_END, + UNIT_FIELD_POWER_COST_MODIFIER_04 = 0xD1 + OBJECT_END, + UNIT_FIELD_POWER_COST_MODIFIER_05 = 0xD2 + OBJECT_END, + UNIT_FIELD_POWER_COST_MODIFIER_06 = 0xD3 + OBJECT_END, + UNIT_FIELD_POWER_COST_MULTIPLIER = 0xD4 + OBJECT_END, // Size:7 + UNIT_FIELD_POWER_COST_MULTIPLIER_01 = 0xD5 + OBJECT_END, + UNIT_FIELD_POWER_COST_MULTIPLIER_02 = 0xD6 + OBJECT_END, + UNIT_FIELD_POWER_COST_MULTIPLIER_03 = 0xD7 + OBJECT_END, + UNIT_FIELD_POWER_COST_MULTIPLIER_04 = 0xD8 + OBJECT_END, + UNIT_FIELD_POWER_COST_MULTIPLIER_05 = 0xD9 + OBJECT_END, + UNIT_FIELD_POWER_COST_MULTIPLIER_06 = 0xDA + OBJECT_END, + UNIT_FIELD_PADDING = 0xDB + OBJECT_END, + UNIT_END = 0xDC + OBJECT_END, -enum EPlayerFields -{ - PLAYER_DUEL_ARBITER = UNIT_END + 0x0000, - PLAYER_FLAGS = UNIT_END + 0x0002, - PLAYER_GUILDID = UNIT_END + 0x0003, - PLAYER_GUILDRANK = UNIT_END + 0x0004, - PLAYER_BYTES = UNIT_END + 0x0005, - PLAYER_BYTES_2 = UNIT_END + 0x0006, - PLAYER_BYTES_3 = UNIT_END + 0x0007, - PLAYER_DUEL_TEAM = UNIT_END + 0x0008, - PLAYER_GUILD_TIMESTAMP = UNIT_END + 0x0009, - PLAYER_QUEST_LOG_1_1 = UNIT_END + 0x000A, - PLAYER_QUEST_LOG_1_2 = UNIT_END + 0x000B, - PLAYER_QUEST_LOG_2_1 = UNIT_END + 0x000D, - PLAYER_QUEST_LOG_2_2 = UNIT_END + 0x000E, - PLAYER_QUEST_LOG_3_1 = UNIT_END + 0x0010, - PLAYER_QUEST_LOG_3_2 = UNIT_END + 0x0011, - PLAYER_QUEST_LOG_4_1 = UNIT_END + 0x0013, - PLAYER_QUEST_LOG_4_2 = UNIT_END + 0x0014, - PLAYER_QUEST_LOG_5_1 = UNIT_END + 0x0016, - PLAYER_QUEST_LOG_5_2 = UNIT_END + 0x0017, - PLAYER_QUEST_LOG_6_1 = UNIT_END + 0x0019, - PLAYER_QUEST_LOG_6_2 = UNIT_END + 0x001A, - PLAYER_QUEST_LOG_7_1 = UNIT_END + 0x001C, - PLAYER_QUEST_LOG_7_2 = UNIT_END + 0x001D, - PLAYER_QUEST_LOG_8_1 = UNIT_END + 0x001F, - PLAYER_QUEST_LOG_8_2 = UNIT_END + 0x0020, - PLAYER_QUEST_LOG_9_1 = UNIT_END + 0x0022, - PLAYER_QUEST_LOG_9_2 = UNIT_END + 0x0023, - PLAYER_QUEST_LOG_10_1 = UNIT_END + 0x0025, - PLAYER_QUEST_LOG_10_2 = UNIT_END + 0x0026, - PLAYER_QUEST_LOG_11_1 = UNIT_END + 0x0028, - PLAYER_QUEST_LOG_11_2 = UNIT_END + 0x0029, - PLAYER_QUEST_LOG_12_1 = UNIT_END + 0x002B, - PLAYER_QUEST_LOG_12_2 = UNIT_END + 0x002C, - PLAYER_QUEST_LOG_13_1 = UNIT_END + 0x002E, - PLAYER_QUEST_LOG_13_2 = UNIT_END + 0x002F, - PLAYER_QUEST_LOG_14_1 = UNIT_END + 0x0031, - PLAYER_QUEST_LOG_14_2 = UNIT_END + 0x0032, - PLAYER_QUEST_LOG_15_1 = UNIT_END + 0x0034, - PLAYER_QUEST_LOG_15_2 = UNIT_END + 0x0035, - PLAYER_QUEST_LOG_16_1 = UNIT_END + 0x0037, - PLAYER_QUEST_LOG_16_2 = UNIT_END + 0x0038, - PLAYER_QUEST_LOG_17_1 = UNIT_END + 0x003A, - PLAYER_QUEST_LOG_17_2 = UNIT_END + 0x003B, - PLAYER_QUEST_LOG_18_1 = UNIT_END + 0x003D, - PLAYER_QUEST_LOG_18_2 = UNIT_END + 0x003E, - PLAYER_QUEST_LOG_19_1 = UNIT_END + 0x0040, - PLAYER_QUEST_LOG_19_2 = UNIT_END + 0x0041, - PLAYER_QUEST_LOG_20_1 = UNIT_END + 0x0043, - PLAYER_QUEST_LOG_20_2 = UNIT_END + 0x0044, - PLAYER_VISIBLE_ITEM_1_CREATOR = UNIT_END + 0x0046, - PLAYER_VISIBLE_ITEM_1_0 = UNIT_END + 0x0048, - PLAYER_VISIBLE_ITEM_1_PROPERTIES = UNIT_END + 0x0050, - PLAYER_VISIBLE_ITEM_1_PAD = UNIT_END + 0x0051, - PLAYER_VISIBLE_ITEM_2_CREATOR = UNIT_END + 0x0052, - PLAYER_VISIBLE_ITEM_2_0 = UNIT_END + 0x0054, - PLAYER_VISIBLE_ITEM_2_PROPERTIES = UNIT_END + 0x005C, - PLAYER_VISIBLE_ITEM_2_PAD = UNIT_END + 0x005D, - PLAYER_VISIBLE_ITEM_3_CREATOR = UNIT_END + 0x005E, - PLAYER_VISIBLE_ITEM_3_0 = UNIT_END + 0x0060, - PLAYER_VISIBLE_ITEM_3_PROPERTIES = UNIT_END + 0x0068, - PLAYER_VISIBLE_ITEM_3_PAD = UNIT_END + 0x0069, - PLAYER_VISIBLE_ITEM_4_CREATOR = UNIT_END + 0x006A, - PLAYER_VISIBLE_ITEM_4_0 = UNIT_END + 0x006C, - PLAYER_VISIBLE_ITEM_4_PROPERTIES = UNIT_END + 0x0074, - PLAYER_VISIBLE_ITEM_4_PAD = UNIT_END + 0x0075, - PLAYER_VISIBLE_ITEM_5_CREATOR = UNIT_END + 0x0076, - PLAYER_VISIBLE_ITEM_5_0 = UNIT_END + 0x0078, - PLAYER_VISIBLE_ITEM_5_PROPERTIES = UNIT_END + 0x0080, - PLAYER_VISIBLE_ITEM_5_PAD = UNIT_END + 0x0081, - PLAYER_VISIBLE_ITEM_6_CREATOR = UNIT_END + 0x0082, - PLAYER_VISIBLE_ITEM_6_0 = UNIT_END + 0x0084, - PLAYER_VISIBLE_ITEM_6_PROPERTIES = UNIT_END + 0x008C, - PLAYER_VISIBLE_ITEM_6_PAD = UNIT_END + 0x008D, - PLAYER_VISIBLE_ITEM_7_CREATOR = UNIT_END + 0x008E, - PLAYER_VISIBLE_ITEM_7_0 = UNIT_END + 0x0090, - PLAYER_VISIBLE_ITEM_7_PROPERTIES = UNIT_END + 0x0098, - PLAYER_VISIBLE_ITEM_7_PAD = UNIT_END + 0x0099, - PLAYER_VISIBLE_ITEM_8_CREATOR = UNIT_END + 0x009A, - PLAYER_VISIBLE_ITEM_8_0 = UNIT_END + 0x009C, - PLAYER_VISIBLE_ITEM_8_PROPERTIES = UNIT_END + 0x00A4, - PLAYER_VISIBLE_ITEM_8_PAD = UNIT_END + 0x00A5, - PLAYER_VISIBLE_ITEM_9_CREATOR = UNIT_END + 0x00A6, - PLAYER_VISIBLE_ITEM_9_0 = UNIT_END + 0x00A8, - PLAYER_VISIBLE_ITEM_9_PROPERTIES = UNIT_END + 0x00B0, - PLAYER_VISIBLE_ITEM_9_PAD = UNIT_END + 0x00B1, - PLAYER_VISIBLE_ITEM_10_CREATOR = UNIT_END + 0x00B2, - PLAYER_VISIBLE_ITEM_10_0 = UNIT_END + 0x00B4, - PLAYER_VISIBLE_ITEM_10_PROPERTIES = UNIT_END + 0x00BC, - PLAYER_VISIBLE_ITEM_10_PAD = UNIT_END + 0x00BD, - PLAYER_VISIBLE_ITEM_11_CREATOR = UNIT_END + 0x00BE, - PLAYER_VISIBLE_ITEM_11_0 = UNIT_END + 0x00C0, - PLAYER_VISIBLE_ITEM_11_PROPERTIES = UNIT_END + 0x00C8, - PLAYER_VISIBLE_ITEM_11_PAD = UNIT_END + 0x00C9, - PLAYER_VISIBLE_ITEM_12_CREATOR = UNIT_END + 0x00CA, - PLAYER_VISIBLE_ITEM_12_0 = UNIT_END + 0x00CC, - PLAYER_VISIBLE_ITEM_12_PROPERTIES = UNIT_END + 0x00D4, - PLAYER_VISIBLE_ITEM_12_PAD = UNIT_END + 0x00D5, - PLAYER_VISIBLE_ITEM_13_CREATOR = UNIT_END + 0x00D6, - PLAYER_VISIBLE_ITEM_13_0 = UNIT_END + 0x00D8, - PLAYER_VISIBLE_ITEM_13_PROPERTIES = UNIT_END + 0x00E0, - PLAYER_VISIBLE_ITEM_13_PAD = UNIT_END + 0x00E1, - PLAYER_VISIBLE_ITEM_14_CREATOR = UNIT_END + 0x00E2, - PLAYER_VISIBLE_ITEM_14_0 = UNIT_END + 0x00E4, - PLAYER_VISIBLE_ITEM_14_PROPERTIES = UNIT_END + 0x00EC, - PLAYER_VISIBLE_ITEM_14_PAD = UNIT_END + 0x00ED, - PLAYER_VISIBLE_ITEM_15_CREATOR = UNIT_END + 0x00EE, - PLAYER_VISIBLE_ITEM_15_0 = UNIT_END + 0x00F0, - PLAYER_VISIBLE_ITEM_15_PROPERTIES = UNIT_END + 0x00F8, - PLAYER_VISIBLE_ITEM_15_PAD = UNIT_END + 0x00F9, - PLAYER_VISIBLE_ITEM_16_CREATOR = UNIT_END + 0x00FA, - PLAYER_VISIBLE_ITEM_16_0 = UNIT_END + 0x00FC, - PLAYER_VISIBLE_ITEM_16_PROPERTIES = UNIT_END + 0x0104, - PLAYER_VISIBLE_ITEM_16_PAD = UNIT_END + 0x0105, - PLAYER_VISIBLE_ITEM_17_CREATOR = UNIT_END + 0x0106, - PLAYER_VISIBLE_ITEM_17_0 = UNIT_END + 0x0108, - PLAYER_VISIBLE_ITEM_17_PROPERTIES = UNIT_END + 0x0110, - PLAYER_VISIBLE_ITEM_17_PAD = UNIT_END + 0x0111, - PLAYER_VISIBLE_ITEM_18_CREATOR = UNIT_END + 0x0112, - PLAYER_VISIBLE_ITEM_18_0 = UNIT_END + 0x0114, - PLAYER_VISIBLE_ITEM_18_PROPERTIES = UNIT_END + 0x011C, - PLAYER_VISIBLE_ITEM_18_PAD = UNIT_END + 0x011D, - PLAYER_VISIBLE_ITEM_19_CREATOR = UNIT_END + 0x011E, - PLAYER_VISIBLE_ITEM_19_0 = UNIT_END + 0x0120, - PLAYER_VISIBLE_ITEM_19_PROPERTIES = UNIT_END + 0x0128, - PLAYER_VISIBLE_ITEM_19_PAD = UNIT_END + 0x0129, - PLAYER_FIELD_INV_SLOT_HEAD = UNIT_END + 0x012A, - PLAYER_FIELD_PACK_SLOT_1 = UNIT_END + 0x0158, - PLAYER_FIELD_BANK_SLOT_1 = UNIT_END + 0x0178, - PLAYER_FIELD_BANKBAG_SLOT_1 = UNIT_END + 0x01A8, - PLAYER_FIELD_VENDORBUYBACK_SLOT_1 = UNIT_END + 0x01B4, - PLAYER_FIELD_KEYRING_SLOT_1 = UNIT_END + 0x01CC, - PLAYER_FARSIGHT = UNIT_END + 0x020C, - PLAYER_FIELD_COMBO_TARGET = UNIT_END + 0x020E, - PLAYER_XP = UNIT_END + 0x0210, - PLAYER_NEXT_LEVEL_XP = UNIT_END + 0x0211, - PLAYER_SKILL_INFO_1_1 = UNIT_END + 0x0212, - PLAYER_CHARACTER_POINTS1 = UNIT_END + 0x0392, - PLAYER_CHARACTER_POINTS2 = UNIT_END + 0x0393, - PLAYER_TRACK_CREATURES = UNIT_END + 0x0394, - PLAYER_TRACK_RESOURCES = UNIT_END + 0x0395, - PLAYER_BLOCK_PERCENTAGE = UNIT_END + 0x0396, - PLAYER_DODGE_PERCENTAGE = UNIT_END + 0x0397, - PLAYER_PARRY_PERCENTAGE = UNIT_END + 0x0398, - PLAYER_CRIT_PERCENTAGE = UNIT_END + 0x0399, - PLAYER_RANGED_CRIT_PERCENTAGE = UNIT_END + 0x039A, - PLAYER_EXPLORED_ZONES_1 = UNIT_END + 0x039B, - PLAYER_REST_STATE_EXPERIENCE = UNIT_END + 0x03DB, - PLAYER_FIELD_COINAGE = UNIT_END + 0x03DC, - PLAYER_FIELD_POSSTAT0 = UNIT_END + 0x03DD, - PLAYER_FIELD_POSSTAT1 = UNIT_END + 0x03DE, - PLAYER_FIELD_POSSTAT2 = UNIT_END + 0x03DF, - PLAYER_FIELD_POSSTAT3 = UNIT_END + 0x03E0, - PLAYER_FIELD_POSSTAT4 = UNIT_END + 0x03E1, - PLAYER_FIELD_NEGSTAT0 = UNIT_END + 0x03E2, - PLAYER_FIELD_NEGSTAT1 = UNIT_END + 0x03E3, - PLAYER_FIELD_NEGSTAT2 = UNIT_END + 0x03E4, - PLAYER_FIELD_NEGSTAT3 = UNIT_END + 0x03E5, - PLAYER_FIELD_NEGSTAT4 = UNIT_END + 0x03E6, - PLAYER_FIELD_RESISTANCEBUFFMODSPOSITIVE = UNIT_END + 0x03E7, - PLAYER_FIELD_RESISTANCEBUFFMODSNEGATIVE = UNIT_END + 0x03EE, - PLAYER_FIELD_MOD_DAMAGE_DONE_POS = UNIT_END + 0x03F5, - PLAYER_FIELD_MOD_DAMAGE_DONE_NEG = UNIT_END + 0x03FC, - PLAYER_FIELD_MOD_DAMAGE_DONE_PCT = UNIT_END + 0x0403, - PLAYER_FIELD_BYTES = UNIT_END + 0x040A, - PLAYER_AMMO_ID = UNIT_END + 0x040B, - PLAYER_SELF_RES_SPELL = UNIT_END + 0x040C, - PLAYER_FIELD_PVP_MEDALS = UNIT_END + 0x040D, - PLAYER_FIELD_BUYBACK_PRICE_1 = UNIT_END + 0x040E, - PLAYER_FIELD_BUYBACK_TIMESTAMP_1 = UNIT_END + 0x041A, - PLAYER_FIELD_SESSION_KILLS = UNIT_END + 0x0426, - PLAYER_FIELD_YESTERDAY_KILLS = UNIT_END + 0x0427, - PLAYER_FIELD_LAST_WEEK_KILLS = UNIT_END + 0x0428, - PLAYER_FIELD_THIS_WEEK_KILLS = UNIT_END + 0x0429, - PLAYER_FIELD_THIS_WEEK_CONTRIBUTION = UNIT_END + 0x042A, - PLAYER_FIELD_LIFETIME_HONORABLE_KILLS = UNIT_END + 0x042B, - PLAYER_FIELD_LIFETIME_DISHONORABLE_KILLS = UNIT_END + 0x042C, - PLAYER_FIELD_YESTERDAY_CONTRIBUTION = UNIT_END + 0x042D, - PLAYER_FIELD_LAST_WEEK_CONTRIBUTION = UNIT_END + 0x042E, - PLAYER_FIELD_LAST_WEEK_RANK = UNIT_END + 0x042F, - PLAYER_FIELD_BYTES2 = UNIT_END + 0x0430, - PLAYER_FIELD_WATCHED_FACTION_INDEX = UNIT_END + 0x0431, - PLAYER_FIELD_COMBAT_RATING_1 = UNIT_END + 0x0432, - PLAYER_END = PLAYER_FIELD_COMBAT_RATING_1 + 20, + PLAYER_DUEL_ARBITER = 0x00 + UNIT_END, // Size:2 + PLAYER_FLAGS = 0x02 + UNIT_END, // Size:1 + PLAYER_GUILDID = 0x03 + UNIT_END, // Size:1 + PLAYER_GUILDRANK = 0x04 + UNIT_END, // Size:1 + PLAYER_BYTES = 0x05 + UNIT_END, // Size:1 + PLAYER_BYTES_2 = 0x06 + UNIT_END, // Size:1 + PLAYER_BYTES_3 = 0x07 + UNIT_END, // Size:1 + PLAYER_DUEL_TEAM = 0x08 + UNIT_END, // Size:1 + PLAYER_GUILD_TIMESTAMP = 0x09 + UNIT_END, // Size:1 + PLAYER_QUEST_LOG_1_1 = 0x0A + UNIT_END, // count = 25 + PLAYER_QUEST_LOG_1_2 = 0x0B + UNIT_END, + PLAYER_QUEST_LOG_1_3 = 0x0C + UNIT_END, + PLAYER_QUEST_LOG_LAST_1 = 0x52 + UNIT_END, + PLAYER_QUEST_LOG_LAST_2 = 0x53 + UNIT_END, + PLAYER_QUEST_LOG_LAST_3 = 0x54 + UNIT_END, + PLAYER_VISIBLE_ITEM_1_CREATOR = 0x55 + UNIT_END, // Size:2, count = 19 + PLAYER_VISIBLE_ITEM_1_0 = 0x57 + UNIT_END, // Size:12 + PLAYER_VISIBLE_ITEM_1_PROPERTIES = 0x63 + UNIT_END, // Size:1 + PLAYER_VISIBLE_ITEM_1_PAD = 0x64 + UNIT_END, // Size:1 + PLAYER_VISIBLE_ITEM_LAST_CREATOR = 0x175 + UNIT_END, + PLAYER_VISIBLE_ITEM_LAST_0 = 0x177 + UNIT_END, + PLAYER_VISIBLE_ITEM_LAST_PROPERTIES = 0x183 + UNIT_END, + PLAYER_VISIBLE_ITEM_LAST_PAD = 0x184 + UNIT_END, + PLAYER_CHOSEN_TITLE = 0x185 + UNIT_END, // Size:1 + PLAYER_FIELD_INV_SLOT_HEAD = 0x186 + UNIT_END, // Size:46 + PLAYER_FIELD_PACK_SLOT_1 = 0x1B4 + UNIT_END, // Size:32 + PLAYER_FIELD_PACK_SLOT_LAST = 0x1D3 + UNIT_END, + PLAYER_FIELD_BANK_SLOT_1 = 0x1D4 + UNIT_END, // Size:56 + PLAYER_FIELD_BANK_SLOT_LAST = 0x20B + UNIT_END, + PLAYER_FIELD_BANKBAG_SLOT_1 = 0x20C + UNIT_END, // Size:14 + PLAYER_FIELD_BANKBAG_SLOT_LAST = 0x219 + UNIT_END, + PLAYER_FIELD_VENDORBUYBACK_SLOT_1 = 0x21A + UNIT_END, // Size:24 + PLAYER_FIELD_VENDORBUYBACK_SLOT_LAST = 0x231 + UNIT_END, + PLAYER_FIELD_KEYRING_SLOT_1 = 0x232 + UNIT_END, // Size:64 + PLAYER_FIELD_KEYRING_SLOT_LAST = 0x271 + UNIT_END, + PLAYER_FARSIGHT = 0x272 + UNIT_END, // Size:2 + PLAYER_FIELD_COMBO_TARGET = 0x274 + UNIT_END, // Size:2 + PLAYER_FIELD_KNOWN_TITLES = 0x276 + UNIT_END, // Size:2 + PLAYER_XP = 0x278 + UNIT_END, // Size:1 + PLAYER_NEXT_LEVEL_XP = 0x279 + UNIT_END, // Size:1 + PLAYER_SKILL_INFO_1_1 = 0x27A + UNIT_END, // Size:384 + PLAYER_CHARACTER_POINTS1 = 0x3FA + UNIT_END, // Size:1 + PLAYER_CHARACTER_POINTS2 = 0x3FB + UNIT_END, // Size:1 + PLAYER_TRACK_CREATURES = 0x3FC + UNIT_END, // Size:1 + PLAYER_TRACK_RESOURCES = 0x3FD + UNIT_END, // Size:1 + PLAYER_BLOCK_PERCENTAGE = 0x3FE + UNIT_END, // Size:1 + PLAYER_DODGE_PERCENTAGE = 0x3FF + UNIT_END, // Size:1 + PLAYER_PARRY_PERCENTAGE = 0x400 + UNIT_END, // Size:1 + PLAYER_CRIT_PERCENTAGE = 0x401 + UNIT_END, // Size:1 + PLAYER_RANGED_CRIT_PERCENTAGE = 0x402 + UNIT_END, // Size:1 + PLAYER_OFFHAND_CRIT_PERCENTAGE = 0x403 + UNIT_END, // Size:1 + PLAYER_SPELL_CRIT_PERCENTAGE1 = 0x404 + UNIT_END, // Size:7 + PLAYER_HOLY_SPELL_CRIT_PERCENTAGE = 0x405 + UNIT_END, // custom + PLAYER_FIRE_SPELL_CRIT_PERCENTAGE = 0x406 + UNIT_END, // custom + PLAYER_NATURE_SPELL_CRIT_PERCENTAGE = 0x407 + UNIT_END, // custom + PLAYER_FROST_SPELL_CRIT_PERCENTAGE = 0x408 + UNIT_END, // custom + PLAYER_SHADOW_SPELL_CRIT_PERCENTAGE = 0x409 + UNIT_END, // custom + PLAYER_ARCANE_SPELL_CRIT_PERCENTAGE = 0x40A + UNIT_END, // custom + PLAYER_EXPLORED_ZONES_1 = 0x40B + UNIT_END, // Size:64 + PLAYER_REST_STATE_EXPERIENCE = 0x44B + UNIT_END, // Size:1 + PLAYER_FIELD_COINAGE = 0x44C + UNIT_END, // Size:1 + PLAYER_FIELD_MOD_DAMAGE_DONE_POS = 0x44D + UNIT_END, // Size:7 + PLAYER_FIELD_MOD_DAMAGE_DONE_NEG = 0x454 + UNIT_END, // Size:7 + PLAYER_FIELD_MOD_DAMAGE_DONE_PCT = 0x45B + UNIT_END, // Size:7 + PLAYER_FIELD_MOD_HEALING_DONE_POS = 0x462 + UNIT_END, // Size:1 + PLAYER_FIELD_MOD_TARGET_RESISTANCE = 0x463 + UNIT_END, // Size:1 + PLAYER_FIELD_BYTES = 0x464 + UNIT_END, // Size:1 + PLAYER_AMMO_ID = 0x465 + UNIT_END, // Size:1 + PLAYER_SELF_RES_SPELL = 0x466 + UNIT_END, // Size:1 + PLAYER_FIELD_PVP_MEDALS = 0x467 + UNIT_END, // Size:1 + PLAYER_FIELD_BUYBACK_PRICE_1 = 0x468 + UNIT_END, // count=12 + PLAYER_FIELD_BUYBACK_PRICE_LAST = 0x473 + UNIT_END, + PLAYER_FIELD_BUYBACK_TIMESTAMP_1 = 0x474 + UNIT_END, // count=12 + PLAYER_FIELD_BUYBACK_TIMESTAMP_LAST = 0x47A + UNIT_END, + PLAYER_FIELD_KILLS = 0x480 + UNIT_END, // Size:1 // ((uint16)kills_today<<16) | (uint16)kills_yesterday) + PLAYER_FIELD_HONOR_TODAY = 0x481 + UNIT_END, // Size:1 + PLAYER_FIELD_HONOR_YESTERDAY = 0x482 + UNIT_END, // Size:1 + PLAYER_FIELD_KILLS_LIFETIME = 0x483 + UNIT_END, // Size:1 + PLAYER_FIELD_BYTES2 = 0x484 + UNIT_END, // Size:1 + PLAYER_FIELD_WATCHED_FACTION_INDEX = 0x485 + UNIT_END, // Size:1 + PLAYER_FIELD_COMBAT_RATING_1 = 0x486 + UNIT_END, // Size:23 + PLAYER_FIELD_ALL_WEAPONS_SKILL_RATING = 0x486 + UNIT_END, // custom + PLAYER_FIELD_DEFENCE_RATING = 0x487 + UNIT_END, // custom + PLAYER_FIELD_DODGE_RATING = 0x488 + UNIT_END, // custom + PLAYER_FIELD_PARRY_RATING = 0x489 + UNIT_END, // custom + PLAYER_FIELD_BLOCK_RATING = 0x48A + UNIT_END, // custom + PLAYER_FIELD_MELEE_HIT_RATING = 0x48B + UNIT_END, // custom + PLAYER_FIELD_RANGED_HIT_RATING = 0x48C + UNIT_END, // custom + PLAYER_FIELD_SPELL_HIT_RATING = 0x48D + UNIT_END, // custom + PLAYER_FIELD_MELEE_CRIT_RATING = 0x48E + UNIT_END, // custom + PLAYER_FIELD_RANGED_CRIT_RATING = 0x48F + UNIT_END, // custom + PLAYER_FIELD_SPELL_CRIT_RATING = 0x490 + UNIT_END, // custom + PLAYER_FIELD_HIT_RATING = 0x491 + UNIT_END, // unsure, was PLAYER_FIELD_UNK1_RATING + PLAYER_FIELD_CRIT_RATING = 0x492 + UNIT_END, // unsure, was PLAYER_FIELD_UNK2_RATING + PLAYER_FIELD_UNK3_RATING = 0x493 + UNIT_END, // custom + PLAYER_FIELD_UNK4_RATING = 0x494 + UNIT_END, // custom + PLAYER_FIELD_UNK5_RATING = 0x495 + UNIT_END, // custom + PLAYER_FIELD_RESILIENCE_RATING = 0x496 + UNIT_END, // custom + PLAYER_FIELD_MELEE_HASTE_RATING = 0x497 + UNIT_END, // custom + PLAYER_FIELD_RANGED_HASTE_RATING = 0x498 + UNIT_END, // custom + PLAYER_FIELD_UNK6_RATING = 0x499 + UNIT_END, // custom + PLAYER_FIELD_MELEE_WEAPON_SKILL_RATING = 0x49A + UNIT_END, // custom + PLAYER_FIELD_UNK7_RATING = 0x49B + UNIT_END, // custom + PLAYER_FIELD_RANGED_WEAPON_SKILL_RATING = 0x49C + UNIT_END, // custom + PLAYER_FIELD_ARENA_TEAM_INFO_1_1 = 0x49D + UNIT_END, // Size:9 + PLAYER_FIELD_HONOR_CURRENCY = 0x4A6 + UNIT_END, // Size:1 + PLAYER_FIELD_ARENA_CURRENCY = 0x4A7 + UNIT_END, // Size:1 + PLAYER_FIELD_MOD_MANA_REGEN = 0x4A8 + UNIT_END, // Size:1 + PLAYER_FIELD_MOD_MANA_REGEN_INTERRUPT = 0x4A9 + UNIT_END, // Size:1 + PLAYER_FIELD_MAX_LEVEL = 0x4AA + UNIT_END, // Size:1 + PLAYER_FIELD_PADDING = 0x4AB + UNIT_END, // Size:1 + PLAYER_END = 0x4AC + UNIT_END, }; enum EGameObjectFields { - OBJECT_FIELD_CREATED_BY = OBJECT_END + 0x0000, - GAMEOBJECT_DISPLAYID = OBJECT_END + 0x0002, - GAMEOBJECT_FLAGS = OBJECT_END + 0x0003, - GAMEOBJECT_ROTATION = OBJECT_END + 0x0004, - GAMEOBJECT_STATE = OBJECT_END + 0x0008, - GAMEOBJECT_POS_X = OBJECT_END + 0x0009, - GAMEOBJECT_POS_Y = OBJECT_END + 0x000A, - GAMEOBJECT_POS_Z = OBJECT_END + 0x000B, - GAMEOBJECT_FACING = OBJECT_END + 0x000C, - GAMEOBJECT_DYN_FLAGS = OBJECT_END + 0x000D, - GAMEOBJECT_FACTION = OBJECT_END + 0x000E, - GAMEOBJECT_TYPE_ID = OBJECT_END + 0x000F, - GAMEOBJECT_LEVEL = OBJECT_END + 0x0010, - GAMEOBJECT_ARTKIT = OBJECT_END + 0x0011, - GAMEOBJECT_ANIMPROGRESS = OBJECT_END + 0x0012, - GAMEOBJECT_PADDING = OBJECT_END + 0x0013, - GAMEOBJECT_END = GAMEOBJECT_PADDING + 1, + OBJECT_FIELD_CREATED_BY = OBJECT_END + 0x00, + GAMEOBJECT_DISPLAYID = OBJECT_END + 0x02, + GAMEOBJECT_FLAGS = OBJECT_END + 0x03, + GAMEOBJECT_ROTATION = OBJECT_END + 0x04, + GAMEOBJECT_STATE = OBJECT_END + 0x08, + GAMEOBJECT_POS_X = OBJECT_END + 0x09, + GAMEOBJECT_POS_Y = OBJECT_END + 0x0A, + GAMEOBJECT_POS_Z = OBJECT_END + 0x0B, + GAMEOBJECT_FACING = OBJECT_END + 0x0C, + GAMEOBJECT_DYN_FLAGS = OBJECT_END + 0x0D, + GAMEOBJECT_FACTION = OBJECT_END + 0x0E, + GAMEOBJECT_TYPE_ID = OBJECT_END + 0x0F, + GAMEOBJECT_LEVEL = OBJECT_END + 0x10, + GAMEOBJECT_ARTKIT = OBJECT_END + 0x11, + GAMEOBJECT_ANIMPROGRESS = OBJECT_END + 0x12, + GAMEOBJECT_PADDING = OBJECT_END + 0x13, + GAMEOBJECT_END = OBJECT_END + 0x14, }; enum EDynamicObjectFields { - DYNAMICOBJECT_CASTER = OBJECT_END + 0x0000, - DYNAMICOBJECT_BYTES = OBJECT_END + 0x0002, - DYNAMICOBJECT_SPELLID = OBJECT_END + 0x0003, - DYNAMICOBJECT_RADIUS = OBJECT_END + 0x0004, - DYNAMICOBJECT_POS_X = OBJECT_END + 0x0005, - DYNAMICOBJECT_POS_Y = OBJECT_END + 0x0006, - DYNAMICOBJECT_POS_Z = OBJECT_END + 0x0007, - DYNAMICOBJECT_FACING = OBJECT_END + 0x0008, - DYNAMICOBJECT_PAD = OBJECT_END + 0x0009, - DYNAMICOBJECT_END = DYNAMICOBJECT_PAD + 1, + DYNAMICOBJECT_CASTER = OBJECT_END + 0x00, + DYNAMICOBJECT_BYTES = OBJECT_END + 0x02, + DYNAMICOBJECT_SPELLID = OBJECT_END + 0x03, + DYNAMICOBJECT_RADIUS = OBJECT_END + 0x04, + DYNAMICOBJECT_POS_X = OBJECT_END + 0x05, + DYNAMICOBJECT_POS_Y = OBJECT_END + 0x06, + DYNAMICOBJECT_POS_Z = OBJECT_END + 0x07, + DYNAMICOBJECT_FACING = OBJECT_END + 0x08, + DYNAMICOBJECT_PAD = OBJECT_END + 0x09, + DYNAMICOBJECT_END = OBJECT_END + 0x0A, }; enum ECorpseFields { - CORPSE_FIELD_OWNER = OBJECT_END + 0x0000, - CORPSE_FIELD_FACING = OBJECT_END + 0x0002, - CORPSE_FIELD_POS_X = OBJECT_END + 0x0003, - CORPSE_FIELD_POS_Y = OBJECT_END + 0x0004, - CORPSE_FIELD_POS_Z = OBJECT_END + 0x0005, - CORPSE_FIELD_DISPLAY_ID = OBJECT_END + 0x0006, - CORPSE_FIELD_ITEM = OBJECT_END + 0x0007, - CORPSE_FIELD_BYTES_1 = OBJECT_END + 0x001A, - CORPSE_FIELD_BYTES_2 = OBJECT_END + 0x001B, - CORPSE_FIELD_GUILD = OBJECT_END + 0x001C, - CORPSE_FIELD_FLAGS = OBJECT_END + 0x001D, - CORPSE_FIELD_DYNAMIC_FLAGS = OBJECT_END + 0x001E, - CORPSE_FIELD_PAD = OBJECT_END + 0x001F, - CORPSE_END = CORPSE_FIELD_PAD + 1, + CORPSE_FIELD_OWNER = OBJECT_END + 0x00, + CORPSE_FIELD_FACING = OBJECT_END + 0x02, + CORPSE_FIELD_POS_X = OBJECT_END + 0x03, + CORPSE_FIELD_POS_Y = OBJECT_END + 0x04, + CORPSE_FIELD_POS_Z = OBJECT_END + 0x05, + CORPSE_FIELD_DISPLAY_ID = OBJECT_END + 0x06, + CORPSE_FIELD_ITEM = OBJECT_END + 0x07, // 19 + CORPSE_FIELD_BYTES_1 = OBJECT_END + 0x1A, + CORPSE_FIELD_BYTES_2 = OBJECT_END + 0x1B, + CORPSE_FIELD_GUILD = OBJECT_END + 0x1C, + CORPSE_FIELD_FLAGS = OBJECT_END + 0x1D, + CORPSE_FIELD_DYNAMIC_FLAGS = OBJECT_END + 0x1E, + CORPSE_FIELD_PAD = OBJECT_END + 0x1F, + CORPSE_END = OBJECT_END + 0x20, }; #endif Index: src/game/SpellAuraDefines.h =================================================================== --- src/game/SpellAuraDefines.h (working copy) +++ src/game/SpellAuraDefines.h (working copy) @@ -19,7 +19,7 @@ #define MANGOS_SPELLAURADEFINES_H #define MAX_AURAS 56 -#define MAX_POSITIVE_AURAS 32 //24 +#define MAX_POSITIVE_AURAS 40 enum AURA_FLAGS { @@ -185,23 +185,79 @@ SPELL_AURA_PERSUADED = 146, SPELL_AURA_ADD_CREATURE_IMMUNITY = 147, SPELL_AURA_RETAIN_COMBO_POINTS = 148, - SPELL_AURA_RESIST_PUSHBACK = 149 , // Resist Pushback - SPELL_AURA_MOD_SHIELD_BLOCK_PCT = 150 , // Mod Shield Block % - SPELL_AURA_TRACK_STEALTHED = 151 , // Track Stealthed - SPELL_AURA_MOD_DETECTED_RANGE = 152 , // Mod Detected Range - SPELL_AURA_SPLIT_DAMAGE_FLAT = 153 , // Split Damage Flat - SPELL_AURA_MOD_STEALTH_LEVEL = 154 , // Stealth Level Modifier - SPELL_AURA_MOD_WATER_BREATHING = 155 , // Mod Water Breathing - SPELL_AURA_MOD_REPUTATION_GAIN = 156 , // Mod Reputation Gain - SPELL_AURA_PET_DAMAGE_MULTI = 157 , // Mod Pet Damage - SPELL_AURA_MOD_SHIELD_BLOCK = 158, - SPELL_AURA_NO_PVP_CREDIT = 159, + SPELL_AURA_RESIST_PUSHBACK = 149, // Resist Pushback + SPELL_AURA_MOD_SHIELD_BLOCK_PCT = 150, + SPELL_AURA_TRACK_STEALTHED = 151, // Track Stealthed + SPELL_AURA_MOD_DETECTED_RANGE = 152, // Mod Detected Range + SPELL_AURA_SPLIT_DAMAGE_FLAT = 153, // Split Damage Flat + SPELL_AURA_MOD_STEALTH_LEVEL = 154, // Stealth Level Modifier + SPELL_AURA_MOD_WATER_BREATHING = 155, // Mod Water Breathing + SPELL_AURA_MOD_REPUTATION_GAIN = 156, // Mod Reputation Gain + SPELL_AURA_PET_DAMAGE_MULTI = 157, // Mod Pet Damage + SPELL_AURA_MOD_SHIELD_BLOCK = 158, + SPELL_AURA_NO_PVP_CREDIT = 159, SPELL_AURA_MOD_AOE_AVOIDANCE = 160, SPELL_AURA_MOD_HEALTH_REGEN_IN_COMBAT = 161, - SPELL_AURA_POWER_BURN_MANA = 162, + SPELL_AURA_POWER_BURN_MANA = 162, + SPELL_AURA_MOD_CRIT_DAMAGE_BONUS_MELEE = 163, + SPELL_AURA_164 = 164, + SPELL_AURA_MELEE_ATTACK_POWER_ATTACKER_BONUS = 165, + SPELL_AURA_MOD_ATTACK_POWER_PCT = 166, + SPELL_AURA_MOD_RANGED_ATTACK_POWER_PCT = 167, + SPELL_AURA_MOD_DAMAGE_DONE_VERSUS = 168, + SPELL_AURA_MOD_CRIT_PERCENT_VERSUS = 169, + SPELL_AURA_DETECT_AMORE = 170, + SPELL_AURA_MOD_PARTY_SPEED = 171, // unused + SPELL_AURA_MOD_PARTY_SPEED_MOUNTED = 172, + SPELL_AURA_ALLOW_CHAMPION_SPELLS = 173, + SPELL_AURA_MOD_SPELL_DAMAGE_OF_SPIRIT = 174, + SPELL_AURA_MOD_SPELL_HEALING_OF_SPIRIT = 175, + SPELL_AURA_SPIRIT_OF_REDEMPTION = 176, + SPELL_AURA_AOE_CHARM = 177, + SPELL_AURA_MOD_DEBUFF_RESISTANCE = 178, + SPELL_AURA_MOD_ATTACKER_SPELL_CRIT_CHANCE = 179, + SPELL_AURA_MOD_SPELL_DAMAGE_VS_UNDEAD = 180, + SPELL_AURA_181 = 181, + SPELL_AURA_MOD_ARMOR_OF_INTELLECT = 182, + SPELL_AURA_MOD_CRITICAL_THREAT = 183, + SPELL_AURA_MOD_ATTACKER_MELEE_HIT_CHANCE = 184, + SPELL_AURA_MOD_ATTACKER_RANGED_HIT_CHANCE= 185, + SPELL_AURA_MOD_ATTACKER_SPELL_HIT_CHANCE = 186, + SPELL_AURA_MOD_ATTACKER_MELEE_CRIT_CHANCE = 187, + SPELL_AURA_MOD_ATTACKER_RANGED_CRIT_CHANCE = 188, + SPELL_AURA_MOD_RATING = 189, + SPELL_AURA_MOD_FACTION_REPUTATION_GAIN = 190, + SPELL_AURA_191 = 191, + SPELL_AURA_HASTE_MELEE = 192, + SPELL_AURA_MELEE_SLOW = 193, + SPELL_AURA_MOD_SPELL_DAMAGE_OF_INTELLECT = 194, + SPELL_AURA_MOD_SPELL_HEALING_OF_INTELLECT = 195, + SPELL_AURA_196 = 196, // unused + SPELL_AURA_197 = 197, + SPELL_AURA_MOD_ALL_WEAPON_SKILLS = 198, + SPELL_AURA_MOD_SPELL_HIT_CHANCE_ = 199, + SPELL_AURA_200 = 200, + SPELL_AURA_201 = 201, + SPELL_AURA_CANNOT_BE_DODGED = 202, + SPELL_AURA_MOD_ATTACKER_MELEE_CRIT_DAMAGE = 203, + SPELL_AURA_MOD_ATTACKER_RANGED_CRIT_DAMAGE = 204, + SPELL_AURA_205 = 205, // unused + SPELL_AURA_MOD_SPEED_MOUNTED = 206, + SPELL_AURA_MOD_SPEED_MOUNTED_FLIGHT = 207, + SPELL_AURA_208 = 208, + SPELL_AURA_209 = 209, // unused + SPELL_AURA_210 = 210, // unused + SPELL_AURA_211 = 211, // unused + SPELL_AURA_MOD_RANGED_ATTACK_POWER__OF_INTELLECT = 212, + SPELL_AURA_MOD_RANGE_FROM_DAMAGE_DEALT = 213, + SPELL_AURA_214 = 214, + SPELL_AURA_215 = 215, + SPELL_AURA_HASTE_SPELLS = 216, + SPELL_AURA_217 = 217, + SPELL_AURA_218 = 218, + SPELL_AURA_MOD_MANA_REGEN = 219, + SPELL_AURA_220 = 220, - // aura 163-191 not implemented yet but some from its used in 1.12.1 spell.dbc - - TOTAL_AURAS=192 + TOTAL_AURAS=221 }; #endif Index: src/bindings/universal/Scripts/sc_defines.cpp =================================================================== --- src/bindings/universal/Scripts/sc_defines.cpp (working copy) +++ src/bindings/universal/Scripts/sc_defines.cpp (working copy) @@ -27,6 +27,7 @@ uint32 spell_journeyman = 0; uint32 spell_expert = 0; uint32 spell_artisan = 0; + uint32 spell_master = 0; switch(trskill) { @@ -35,81 +36,104 @@ spell_journeyman = 3101; spell_expert = 3464; spell_artisan = 11611; + spell_master = 28596; // teached by 28597 break; case TRADESKILL_BLACKSMITHING: spell_apprentice = 2018; spell_journeyman = 3100; spell_expert = 8768; spell_artisan = 11454; + spell_master = 29844; // teached by 29845 break; case TRADESKILL_COOKING: spell_apprentice = 2550; spell_journeyman = 3102; spell_expert = 3413; spell_artisan = 18260; + spell_master = 33359; // teached by 33361 break; case TRADESKILL_ENCHANTING: spell_apprentice = 7411; spell_journeyman = 7412; spell_expert = 7413; spell_artisan = 13920; + spell_master = 28029; // teached by 28030 break; case TRADESKILL_ENGINEERING: spell_apprentice = 4036; spell_journeyman = 4037; spell_expert = 4038; spell_artisan = 12656; + spell_master = 30350; // teached by 30351 break; case TRADESKILL_FIRSTAID: spell_apprentice = 3273; spell_journeyman = 3274; spell_expert = 7924; spell_artisan = 10846; + spell_master = 27028; // teached by 27029 break; case TRADESKILL_HERBALISM: spell_apprentice = 2372; spell_journeyman = 2373; spell_expert = 3571; spell_artisan = 11994; + spell_master = 0; break; case TRADESKILL_LEATHERWORKING: spell_apprentice = 2108; spell_journeyman = 3104; spell_expert = 20649; spell_artisan = 10662; + spell_master = 32549; // teached by 32550 break; case TRADESKILL_POISONS: spell_apprentice = 0; spell_journeyman = 0; spell_expert = 0; spell_artisan = 0; + spell_master = 0; break; case TRADESKILL_TAILORING: spell_apprentice = 3908; spell_journeyman = 3909; spell_expert = 3910; spell_artisan = 12180; + spell_master = 26790; // teached by 26791 break; case TRADESKILL_MINING: spell_apprentice = 2581; spell_journeyman = 2582; spell_expert = 3568; spell_artisan = 10249; + spell_master = 29354; // teached by 29355 break; case TRADESKILL_FISHING: spell_apprentice = 7733; spell_journeyman = 7734; spell_expert = 7736; spell_artisan = 18249; + spell_master = 33098; // teached by 33100 break; case TRADESKILL_SKINNING: spell_apprentice = 8615; spell_journeyman = 8619; spell_expert = 8620; spell_artisan = 10769; + spell_master = 32679; // teached by 32678 break; + case TRADESKILL_JAWELCRAFTING: + spell_apprentice = 25229; // teached by 25245 + spell_journeyman = 25230; // teached by 25246 + spell_expert = 28894; // teached by 28896 + spell_artisan = 28895; // teached by 28899 + spell_master = 28897; // teached by 28901 + break; } + if (player->HasSpell(spell_master)) + return TRADESKILL_LEVEL_MASTER; + if (player->HasSpell(spell_artisan)) return TRADESKILL_LEVEL_ARTISAN; Index: src/bindings/universal/Scripts/sc_defines.h =================================================================== --- src/bindings/universal/Scripts/sc_defines.h (working copy) +++ src/bindings/universal/Scripts/sc_defines.h (working copy) @@ -36,12 +36,14 @@ #define TRADESKILL_MINING 11 #define TRADESKILL_FISHING 12 #define TRADESKILL_SKINNING 13 +#define TRADESKILL_JAWELCRAFTING 14 #define TRADESKILL_LEVEL_NONE 0 #define TRADESKILL_LEVEL_APPRENTICE 1 #define TRADESKILL_LEVEL_JOURNEYMAN 2 #define TRADESKILL_LEVEL_EXPERT 3 #define TRADESKILL_LEVEL_ARTISAN 4 +#define TRADESKILL_LEVEL_MASTER 5 // Gossip defines