From 49d0823b7062fba05725d27c406dbbe1a88a40f3 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sat, 18 Jun 2016 17:38:44 +0200 Subject: Core: Update to 7.0.3.21963 --- .../Database/Implementation/HotfixDatabase.cpp | 4 +- src/server/game/Achievements/CriteriaHandler.cpp | 8 + .../game/AuctionHouseBot/AuctionHouseBotSeller.cpp | 20 +-- src/server/game/DataStores/DB2Metadata.h | 12 +- src/server/game/DataStores/DB2Structure.h | 1 - src/server/game/DataStores/DBCEnums.h | 16 +- src/server/game/Entities/GameObject/GameObject.h | 1 + src/server/game/Entities/Item/Item.cpp | 5 +- src/server/game/Entities/Item/Item.h | 5 +- src/server/game/Entities/Item/ItemTemplate.cpp | 8 +- src/server/game/Entities/Item/ItemTemplate.h | 115 +++++++----- .../Entities/Object/Updates/UpdateFieldFlags.cpp | 6 +- .../game/Entities/Object/Updates/UpdateFields.h | 8 +- src/server/game/Entities/Player/Player.cpp | 18 +- src/server/game/Globals/ObjectMgr.cpp | 99 +++++++---- src/server/game/Miscellaneous/SharedDefines.h | 113 +++++------- src/server/game/Server/Protocol/Opcodes.h | 194 ++++++++++----------- src/server/game/Spells/Spell.cpp | 20 +-- 18 files changed, 341 insertions(+), 312 deletions(-) (limited to 'src') diff --git a/src/server/database/Database/Implementation/HotfixDatabase.cpp b/src/server/database/Database/Implementation/HotfixDatabase.cpp index cf5ab499a6a..c34c9ac72aa 100644 --- a/src/server/database/Database/Implementation/HotfixDatabase.cpp +++ b/src/server/database/Database/Implementation/HotfixDatabase.cpp @@ -437,9 +437,9 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_LOCALE_STMT(HOTFIX_SEL_ITEM_RANDOM_PROPERTIES, "SELECT ID, Name_lang FROM item_random_properties_locale WHERE locale = ?", CONNECTION_SYNCH); // ItemRandomSuffix.db2 - PrepareStatement(HOTFIX_SEL_ITEM_RANDOM_SUFFIX, "SELECT ID, Name, InternalName, Enchantment1, Enchantment2, Enchantment3, Enchantment4, " + PrepareStatement(HOTFIX_SEL_ITEM_RANDOM_SUFFIX, "SELECT ID, Name, Enchantment1, Enchantment2, Enchantment3, Enchantment4, " "Enchantment5, AllocationPct1, AllocationPct2, AllocationPct3, AllocationPct4, AllocationPct5 FROM item_random_suffix ORDER BY ID DESC", CONNECTION_SYNCH); - PREPARE_LOCALE_STMT(HOTFIX_SEL_ITEM_RANDOM_SUFFIX, "SELECT ID, Name_lang, InternalName_lang FROM item_random_suffix_locale WHERE locale = ?", CONNECTION_SYNCH); + PREPARE_LOCALE_STMT(HOTFIX_SEL_ITEM_RANDOM_SUFFIX, "SELECT ID, Name_lang FROM item_random_suffix_locale WHERE locale = ?", CONNECTION_SYNCH); // ItemSet.db2 PrepareStatement(HOTFIX_SEL_ITEM_SET, "SELECT ID, Name, ItemID1, ItemID2, ItemID3, ItemID4, ItemID5, ItemID6, ItemID7, ItemID8, ItemID9, " diff --git a/src/server/game/Achievements/CriteriaHandler.cpp b/src/server/game/Achievements/CriteriaHandler.cpp index e9ec1299f96..3c8a5241809 100644 --- a/src/server/game/Achievements/CriteriaHandler.cpp +++ b/src/server/game/Achievements/CriteriaHandler.cpp @@ -1457,6 +1457,14 @@ bool CriteriaHandler::AdditionalRequirementsSatisfied(ModifierTreeNode const* tr switch (CriteriaAdditionalCondition(reqType)) { + case CRITERIA_ADDITIONAL_CONDITION_ITEM_LEVEL: // 3 + { + // miscValue1 is itemid + ItemTemplate const* const item = sObjectMgr->GetItemTemplate(uint32(miscValue1)); + if (!item || item->GetBaseItemLevel() < reqValue) + return false; + break; + } case CRITERIA_ADDITIONAL_CONDITION_TARGET_CREATURE_ENTRY: // 4 if (!unit || unit->GetEntry() != reqValue) return false; diff --git a/src/server/game/AuctionHouseBot/AuctionHouseBotSeller.cpp b/src/server/game/AuctionHouseBot/AuctionHouseBotSeller.cpp index d5d5816f4c1..0ba27b1b7ce 100644 --- a/src/server/game/AuctionHouseBot/AuctionHouseBotSeller.cpp +++ b/src/server/game/AuctionHouseBot/AuctionHouseBotSeller.cpp @@ -303,7 +303,7 @@ bool AuctionBotSeller::Initialize() break; } case ITEM_CLASS_MISCELLANEOUS: - if (prototype->GetSubClass() == ITEM_SUBCLASS_JUNK_MOUNT) + if (prototype->GetSubClass() == ITEM_SUBCLASS_MISCELLANEOUS_MOUNT) { if (uint32 value = sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_MISC_MOUNT_MIN_REQ_LEVEL)) if (prototype->GetBaseRequiredLevel() < static_cast(value)) @@ -427,7 +427,7 @@ void AuctionBotSeller::LoadItemsQuantity(SellerConfiguration& config) config.SetItemsQuantityPerClass(AUCTION_QUALITY_GRAY, ITEM_CLASS_REAGENT, 0); config.SetItemsQuantityPerClass(AUCTION_QUALITY_GRAY, ITEM_CLASS_PROJECTILE, 0); config.SetItemsQuantityPerClass(AUCTION_QUALITY_GRAY, ITEM_CLASS_TRADE_GOODS, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_TRADEGOOD_AMOUNT)); - config.SetItemsQuantityPerClass(AUCTION_QUALITY_GRAY, ITEM_CLASS_GENERIC, 0); + config.SetItemsQuantityPerClass(AUCTION_QUALITY_GRAY, ITEM_CLASS_ITEM_ENHANCEMENT, 0); config.SetItemsQuantityPerClass(AUCTION_QUALITY_GRAY, ITEM_CLASS_RECIPE, 0); config.SetItemsQuantityPerClass(AUCTION_QUALITY_GRAY, ITEM_CLASS_QUIVER, 0); config.SetItemsQuantityPerClass(AUCTION_QUALITY_GRAY, ITEM_CLASS_QUEST, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_QUEST_AMOUNT)); @@ -443,7 +443,7 @@ void AuctionBotSeller::LoadItemsQuantity(SellerConfiguration& config) config.SetItemsQuantityPerClass(AUCTION_QUALITY_WHITE, ITEM_CLASS_REAGENT, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_REAGENT_AMOUNT)); config.SetItemsQuantityPerClass(AUCTION_QUALITY_WHITE, ITEM_CLASS_PROJECTILE, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_PROJECTILE_AMOUNT)); config.SetItemsQuantityPerClass(AUCTION_QUALITY_WHITE, ITEM_CLASS_TRADE_GOODS, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_TRADEGOOD_AMOUNT)); - config.SetItemsQuantityPerClass(AUCTION_QUALITY_WHITE, ITEM_CLASS_GENERIC, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_GENERIC_AMOUNT)); + config.SetItemsQuantityPerClass(AUCTION_QUALITY_WHITE, ITEM_CLASS_ITEM_ENHANCEMENT, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_GENERIC_AMOUNT)); config.SetItemsQuantityPerClass(AUCTION_QUALITY_WHITE, ITEM_CLASS_RECIPE, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_RECIPE_AMOUNT)); config.SetItemsQuantityPerClass(AUCTION_QUALITY_WHITE, ITEM_CLASS_QUIVER, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_QUIVER_AMOUNT)); config.SetItemsQuantityPerClass(AUCTION_QUALITY_WHITE, ITEM_CLASS_QUEST, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_QUEST_AMOUNT)); @@ -459,7 +459,7 @@ void AuctionBotSeller::LoadItemsQuantity(SellerConfiguration& config) config.SetItemsQuantityPerClass(AUCTION_QUALITY_GREEN, ITEM_CLASS_REAGENT, 0); config.SetItemsQuantityPerClass(AUCTION_QUALITY_GREEN, ITEM_CLASS_PROJECTILE, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_PROJECTILE_AMOUNT)); config.SetItemsQuantityPerClass(AUCTION_QUALITY_GREEN, ITEM_CLASS_TRADE_GOODS, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_TRADEGOOD_AMOUNT)); - config.SetItemsQuantityPerClass(AUCTION_QUALITY_GREEN, ITEM_CLASS_GENERIC, 0); + config.SetItemsQuantityPerClass(AUCTION_QUALITY_GREEN, ITEM_CLASS_ITEM_ENHANCEMENT, 0); config.SetItemsQuantityPerClass(AUCTION_QUALITY_GREEN, ITEM_CLASS_RECIPE, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_RECIPE_AMOUNT)); config.SetItemsQuantityPerClass(AUCTION_QUALITY_GREEN, ITEM_CLASS_QUIVER, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_QUIVER_AMOUNT)); config.SetItemsQuantityPerClass(AUCTION_QUALITY_GREEN, ITEM_CLASS_QUEST, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_QUEST_AMOUNT)); @@ -475,7 +475,7 @@ void AuctionBotSeller::LoadItemsQuantity(SellerConfiguration& config) config.SetItemsQuantityPerClass(AUCTION_QUALITY_BLUE, ITEM_CLASS_REAGENT, 0); config.SetItemsQuantityPerClass(AUCTION_QUALITY_BLUE, ITEM_CLASS_PROJECTILE, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_PROJECTILE_AMOUNT)); config.SetItemsQuantityPerClass(AUCTION_QUALITY_BLUE, ITEM_CLASS_TRADE_GOODS, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_TRADEGOOD_AMOUNT)); - config.SetItemsQuantityPerClass(AUCTION_QUALITY_BLUE, ITEM_CLASS_GENERIC, 0); + config.SetItemsQuantityPerClass(AUCTION_QUALITY_BLUE, ITEM_CLASS_ITEM_ENHANCEMENT, 0); config.SetItemsQuantityPerClass(AUCTION_QUALITY_BLUE, ITEM_CLASS_RECIPE, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_RECIPE_AMOUNT)); config.SetItemsQuantityPerClass(AUCTION_QUALITY_BLUE, ITEM_CLASS_QUIVER, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_QUIVER_AMOUNT)); config.SetItemsQuantityPerClass(AUCTION_QUALITY_BLUE, ITEM_CLASS_QUEST, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_QUEST_AMOUNT)); @@ -491,7 +491,7 @@ void AuctionBotSeller::LoadItemsQuantity(SellerConfiguration& config) config.SetItemsQuantityPerClass(AUCTION_QUALITY_PURPLE, ITEM_CLASS_REAGENT, 0); config.SetItemsQuantityPerClass(AUCTION_QUALITY_PURPLE, ITEM_CLASS_PROJECTILE, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_PROJECTILE_AMOUNT)); config.SetItemsQuantityPerClass(AUCTION_QUALITY_PURPLE, ITEM_CLASS_TRADE_GOODS, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_TRADEGOOD_AMOUNT)); - config.SetItemsQuantityPerClass(AUCTION_QUALITY_PURPLE, ITEM_CLASS_GENERIC, 0); + config.SetItemsQuantityPerClass(AUCTION_QUALITY_PURPLE, ITEM_CLASS_ITEM_ENHANCEMENT, 0); config.SetItemsQuantityPerClass(AUCTION_QUALITY_PURPLE, ITEM_CLASS_RECIPE, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_RECIPE_AMOUNT)); config.SetItemsQuantityPerClass(AUCTION_QUALITY_PURPLE, ITEM_CLASS_QUIVER, 0); config.SetItemsQuantityPerClass(AUCTION_QUALITY_PURPLE, ITEM_CLASS_QUEST, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_QUEST_AMOUNT)); @@ -507,7 +507,7 @@ void AuctionBotSeller::LoadItemsQuantity(SellerConfiguration& config) config.SetItemsQuantityPerClass(AUCTION_QUALITY_ORANGE, ITEM_CLASS_REAGENT, 0); config.SetItemsQuantityPerClass(AUCTION_QUALITY_ORANGE, ITEM_CLASS_PROJECTILE, 0); config.SetItemsQuantityPerClass(AUCTION_QUALITY_ORANGE, ITEM_CLASS_TRADE_GOODS, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_TRADEGOOD_AMOUNT)); - config.SetItemsQuantityPerClass(AUCTION_QUALITY_ORANGE, ITEM_CLASS_GENERIC, 0); + config.SetItemsQuantityPerClass(AUCTION_QUALITY_ORANGE, ITEM_CLASS_ITEM_ENHANCEMENT, 0); config.SetItemsQuantityPerClass(AUCTION_QUALITY_ORANGE, ITEM_CLASS_RECIPE, 0); config.SetItemsQuantityPerClass(AUCTION_QUALITY_ORANGE, ITEM_CLASS_QUIVER, 0); config.SetItemsQuantityPerClass(AUCTION_QUALITY_ORANGE, ITEM_CLASS_QUEST, 0); @@ -523,7 +523,7 @@ void AuctionBotSeller::LoadItemsQuantity(SellerConfiguration& config) config.SetItemsQuantityPerClass(AUCTION_QUALITY_YELLOW, ITEM_CLASS_REAGENT, 0); config.SetItemsQuantityPerClass(AUCTION_QUALITY_YELLOW, ITEM_CLASS_PROJECTILE, 0); config.SetItemsQuantityPerClass(AUCTION_QUALITY_YELLOW, ITEM_CLASS_TRADE_GOODS, 0); - config.SetItemsQuantityPerClass(AUCTION_QUALITY_YELLOW, ITEM_CLASS_GENERIC, 0); + config.SetItemsQuantityPerClass(AUCTION_QUALITY_YELLOW, ITEM_CLASS_ITEM_ENHANCEMENT, 0); config.SetItemsQuantityPerClass(AUCTION_QUALITY_YELLOW, ITEM_CLASS_RECIPE, 0); config.SetItemsQuantityPerClass(AUCTION_QUALITY_YELLOW, ITEM_CLASS_QUIVER, 0); config.SetItemsQuantityPerClass(AUCTION_QUALITY_YELLOW, ITEM_CLASS_QUEST, 0); @@ -541,7 +541,7 @@ void AuctionBotSeller::LoadItemsQuantity(SellerConfiguration& config) config.SetRandomStackRatioPerClass(ITEM_CLASS_REAGENT, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_RANDOMSTACKRATIO_REAGENT)); config.SetRandomStackRatioPerClass(ITEM_CLASS_PROJECTILE, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_RANDOMSTACKRATIO_PROJECTILE)); config.SetRandomStackRatioPerClass(ITEM_CLASS_TRADE_GOODS, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_RANDOMSTACKRATIO_TRADEGOOD)); - config.SetRandomStackRatioPerClass(ITEM_CLASS_GENERIC, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_RANDOMSTACKRATIO_GENERIC)); + config.SetRandomStackRatioPerClass(ITEM_CLASS_ITEM_ENHANCEMENT, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_RANDOMSTACKRATIO_GENERIC)); config.SetRandomStackRatioPerClass(ITEM_CLASS_RECIPE, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_RANDOMSTACKRATIO_RECIPE)); config.SetRandomStackRatioPerClass(ITEM_CLASS_QUIVER, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_RANDOMSTACKRATIO_QUIVER)); config.SetRandomStackRatioPerClass(ITEM_CLASS_QUEST, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_RANDOMSTACKRATIO_QUEST)); @@ -597,7 +597,7 @@ void AuctionBotSeller::LoadSellerValues(SellerConfiguration& config) config.SetPriceRatioPerClass(ITEM_CLASS_REAGENT, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_REAGENT_PRICE_RATIO)); config.SetPriceRatioPerClass(ITEM_CLASS_PROJECTILE, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_PROJECTILE_PRICE_RATIO)); config.SetPriceRatioPerClass(ITEM_CLASS_TRADE_GOODS, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_TRADEGOOD_PRICE_RATIO)); - config.SetPriceRatioPerClass(ITEM_CLASS_GENERIC, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_GENERIC_PRICE_RATIO)); + config.SetPriceRatioPerClass(ITEM_CLASS_ITEM_ENHANCEMENT, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_GENERIC_PRICE_RATIO)); config.SetPriceRatioPerClass(ITEM_CLASS_RECIPE, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_RECIPE_PRICE_RATIO)); config.SetPriceRatioPerClass(ITEM_CLASS_MONEY, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_MONEY_PRICE_RATIO)); config.SetPriceRatioPerClass(ITEM_CLASS_QUIVER, sAuctionBotConfig->GetConfig(CONFIG_AHBOT_CLASS_QUIVER_PRICE_RATIO)); diff --git a/src/server/game/DataStores/DB2Metadata.h b/src/server/game/DataStores/DB2Metadata.h index 21dadfc3793..1ec1b0fe856 100644 --- a/src/server/game/DataStores/DB2Metadata.h +++ b/src/server/game/DataStores/DB2Metadata.h @@ -310,9 +310,9 @@ struct ArtifactAppearanceSetMeta { static DB2Meta const* Instance() { - static char const* types = "sshhbbbi"; - static uint8 const arraySizes[8] = { 1, 1, 1, 1, 1, 1, 1, 1 }; - static DB2Meta instance(7, 8, 0x144B4DF1, types, arraySizes); + static char const* types = "sshhbbbbi"; + static uint8 const arraySizes[9] = { 1, 1, 1, 1, 1, 1, 1, 1, 1 }; + static DB2Meta instance(8, 9, 0xB11A5708, types, arraySizes); return &instance; } }; @@ -2895,9 +2895,9 @@ struct ItemRandomSuffixMeta { static DB2Meta const* Instance() { - static char const* types = "sshh"; - static uint8 const arraySizes[4] = { 1, 1, 5, 5 }; - static DB2Meta instance(-1, 4, 0x451B7E5A, types, arraySizes); + static char const* types = "shh"; + static uint8 const arraySizes[3] = { 1, 5, 5 }; + static DB2Meta instance(-1, 3, 0x20CC67CD, types, arraySizes); return &instance; } }; diff --git a/src/server/game/DataStores/DB2Structure.h b/src/server/game/DataStores/DB2Structure.h index e5359fb4907..993d8b1c315 100644 --- a/src/server/game/DataStores/DB2Structure.h +++ b/src/server/game/DataStores/DB2Structure.h @@ -1315,7 +1315,6 @@ struct ItemRandomSuffixEntry { uint32 ID; LocalizedString* Name; - LocalizedString* InternalName; uint16 Enchantment[MAX_ITEM_RANDOM_PROPERTIES]; uint16 AllocationPct[MAX_ITEM_RANDOM_PROPERTIES]; }; diff --git a/src/server/game/DataStores/DBCEnums.h b/src/server/game/DataStores/DBCEnums.h index 50eeeaa7ad8..dd29591e22f 100644 --- a/src/server/game/DataStores/DBCEnums.h +++ b/src/server/game/DataStores/DBCEnums.h @@ -628,8 +628,20 @@ enum ItemSpecStat ITEM_SPEC_STAT_HASTE = 25, ITEM_SPEC_STAT_BONUS_ARMOR = 26, ITEM_SPEC_STAT_CLOAK = 27, - - ITEM_SPEC_STAT_NONE = 28 + ITEM_SPEC_STAT_WARGLAIVES = 28, + ITEM_SPEC_STAT_RELIC_IRON = 29, + ITEM_SPEC_STAT_RELIC_BLOOD = 30, + ITEM_SPEC_STAT_RELIC_SHADOW = 31, + ITEM_SPEC_STAT_RELIC_FEL = 32, + ITEM_SPEC_STAT_RELIC_ARCANE = 33, + ITEM_SPEC_STAT_RELIC_FROST = 34, + ITEM_SPEC_STAT_RELIC_FIRE = 35, + ITEM_SPEC_STAT_RELIC_WATER = 36, + ITEM_SPEC_STAT_RELIC_LIFE = 37, + ITEM_SPEC_STAT_RELIC_WIND = 38, + ITEM_SPEC_STAT_RELIC_HOLY = 39, + + ITEM_SPEC_STAT_NONE = 40 }; enum MountCapabilityFlags diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h index 40e00531497..cd26364a365 100644 --- a/src/server/game/Entities/GameObject/GameObject.h +++ b/src/server/game/Entities/GameObject/GameObject.h @@ -166,6 +166,7 @@ struct GameObjectTemplate uint32 conditionID1; // 15 conditionID1, References: PlayerCondition, NoValue = 0 uint32 playerCast; // 16 playerCast, enum { false, true, }; Default: false uint32 SummonerTriggered; // 17 Summoner Triggered, enum { false, true, }; Default: false + uint32 requireLOS; // 18 require LOS, enum { false, true, }; Default: false } trap; // 7 GAMEOBJECT_TYPE_CHAIR struct diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp index ab6e26627be..e5904ebc476 100644 --- a/src/server/game/Entities/Item/Item.cpp +++ b/src/server/game/Entities/Item/Item.cpp @@ -1414,6 +1414,7 @@ static ItemTransmogrificationWeaponCategory GetTransmogrificationWeaponCategory( case ITEM_SUBCLASS_WEAPON_AXE: case ITEM_SUBCLASS_WEAPON_MACE: case ITEM_SUBCLASS_WEAPON_SWORD: + case ITEM_SUBCLASS_WEAPON_WARGLAIVES: return ItemTransmogrificationWeaponCategory::AXE_MACE_SWORD_1H; case ITEM_SUBCLASS_WEAPON_DAGGER: return ItemTransmogrificationWeaponCategory::DAGGER; @@ -1477,10 +1478,8 @@ bool Item::CanTransmogrifyItemWithItem(Item const* transmogrified, WorldPackets: if (source->GetClass() != target->GetClass()) return false; - if (source->GetInventoryType() == INVTYPE_TABARD || - source->GetInventoryType() == INVTYPE_BAG || + if (source->GetInventoryType() == INVTYPE_BAG || source->GetInventoryType() == INVTYPE_RELIC || - source->GetInventoryType() == INVTYPE_BODY || source->GetInventoryType() == INVTYPE_FINGER || source->GetInventoryType() == INVTYPE_TRINKET || source->GetInventoryType() == INVTYPE_AMMO || diff --git a/src/server/game/Entities/Item/Item.h b/src/server/game/Entities/Item/Item.h index 44c4e546188..30d8c56ecb3 100644 --- a/src/server/game/Entities/Item/Item.h +++ b/src/server/game/Entities/Item/Item.h @@ -142,7 +142,10 @@ enum InventoryResult EQUIP_ERR_ITEM_IS_BATTLE_PAY_LOCKED = 94, // Your purchased item is still waiting to be unlocked EQUIP_ERR_REAGENT_BANK_FULL = 95, // Your reagent bank is full EQUIP_ERR_REAGENT_BANK_LOCKED = 96, - EQUIP_ERR_WRONG_BAG_TYPE_3 = 97 + EQUIP_ERR_WRONG_BAG_TYPE_3 = 97, + EQUIP_ERR_CANT_USE_ITEM = 98, // You can't use that item. + EQUIP_ERR_CANT_BE_OBLITERATED = 99, // You can't obliterate that item + EQUIP_ERR_GUILD_BANK_CONJURED_ITEM = 100,// You cannot store conjured items in the guild bank }; enum BuyResult diff --git a/src/server/game/Entities/Item/ItemTemplate.cpp b/src/server/game/Entities/Item/ItemTemplate.cpp index e33bea37e54..3f2563345f9 100644 --- a/src/server/game/Entities/Item/ItemTemplate.cpp +++ b/src/server/game/Entities/Item/ItemTemplate.cpp @@ -79,10 +79,10 @@ uint32 ItemTemplate::GetSkill() const { const static uint32 item_weapon_skills[MAX_ITEM_SUBCLASS_WEAPON] = { - SKILL_AXES, SKILL_2H_AXES, SKILL_BOWS, SKILL_GUNS, SKILL_MACES, - SKILL_2H_MACES, SKILL_POLEARMS, SKILL_SWORDS, SKILL_2H_SWORDS, 0, - SKILL_STAVES, 0, 0, SKILL_FIST_WEAPONS, 0, - SKILL_DAGGERS, SKILL_THROWN, SKILL_ASSASSINATION, SKILL_CROSSBOWS, SKILL_WANDS, + SKILL_AXES, SKILL_TWO_HANDED_AXES, SKILL_BOWS, SKILL_GUNS, SKILL_MACES, + SKILL_TWO_HANDED_MACES, SKILL_POLEARMS, SKILL_SWORDS, SKILL_TWO_HANDED_SWORDS, SKILL_WARGLAIVES, + SKILL_STAVES, 0, 0, SKILL_FIST_WEAPONS, 0, + SKILL_DAGGERS, 0, 0, SKILL_CROSSBOWS, SKILL_WANDS, SKILL_FISHING }; diff --git a/src/server/game/Entities/Item/ItemTemplate.h b/src/server/game/Entities/Item/ItemTemplate.h index fdc65af1cee..2627f9cf328 100644 --- a/src/server/game/Entities/Item/ItemTemplate.h +++ b/src/server/game/Entities/Item/ItemTemplate.h @@ -386,7 +386,7 @@ enum ItemClass : uint8 ITEM_CLASS_REAGENT = 5, ITEM_CLASS_PROJECTILE = 6, ITEM_CLASS_TRADE_GOODS = 7, - ITEM_CLASS_GENERIC = 8, // OBSOLETE + ITEM_CLASS_ITEM_ENHANCEMENT = 8, ITEM_CLASS_RECIPE = 9, ITEM_CLASS_MONEY = 10, // OBSOLETE ITEM_CLASS_QUIVER = 11, @@ -394,10 +394,12 @@ enum ItemClass : uint8 ITEM_CLASS_KEY = 13, ITEM_CLASS_PERMANENT = 14, // OBSOLETE ITEM_CLASS_MISCELLANEOUS = 15, - ITEM_CLASS_GLYPH = 16 + ITEM_CLASS_GLYPH = 16, + ITEM_CLASS_BATTLE_PETS = 17, + ITEM_CLASS_WOW_TOKEN = 18 }; -#define MAX_ITEM_CLASS 17 +#define MAX_ITEM_CLASS 19 enum ItemSubclassConsumable { @@ -409,10 +411,11 @@ enum ItemSubclassConsumable ITEM_SUBCLASS_FOOD_DRINK = 5, ITEM_SUBCLASS_ITEM_ENHANCEMENT = 6, ITEM_SUBCLASS_BANDAGE = 7, - ITEM_SUBCLASS_CONSUMABLE_OTHER = 8 + ITEM_SUBCLASS_CONSUMABLE_OTHER = 8, + ITEM_SUBCLASS_VANTUS_RUNE = 9 }; -#define MAX_ITEM_SUBCLASS_CONSUMABLE 9 +#define MAX_ITEM_SUBCLASS_CONSUMABLE 10 enum ItemSubclassContainer { @@ -442,7 +445,7 @@ enum ItemSubclassWeapon ITEM_SUBCLASS_WEAPON_POLEARM = 6, ITEM_SUBCLASS_WEAPON_SWORD = 7, // One-Handed Swords ITEM_SUBCLASS_WEAPON_SWORD2 = 8, // Two-Handed Swords - ITEM_SUBCLASS_WEAPON_Obsolete = 9, + ITEM_SUBCLASS_WEAPON_WARGLAIVES = 9, ITEM_SUBCLASS_WEAPON_STAFF = 10, ITEM_SUBCLASS_WEAPON_EXOTIC = 11, // One-Handed Exotics ITEM_SUBCLASS_WEAPON_EXOTIC2 = 12, // Two-Handed Exotics @@ -464,20 +467,21 @@ enum ItemSubclassWeapon enum ItemSubclassGem { - ITEM_SUBCLASS_GEM_RED = 0, - ITEM_SUBCLASS_GEM_BLUE = 1, - ITEM_SUBCLASS_GEM_YELLOW = 2, - ITEM_SUBCLASS_GEM_PURPLE = 3, - ITEM_SUBCLASS_GEM_GREEN = 4, - ITEM_SUBCLASS_GEM_ORANGE = 5, - ITEM_SUBCLASS_GEM_META = 6, - ITEM_SUBCLASS_GEM_SIMPLE = 7, - ITEM_SUBCLASS_GEM_PRISMATIC = 8, - ITEM_SUBCLASS_GEM_HYDRAULIC = 9, - ITEM_SUBCLASS_GEM_COGWHEEL = 10 + ITEM_SUBCLASS_GEM_INTELLECT = 0, + ITEM_SUBCLASS_GEM_AGILITY = 1, + ITEM_SUBCLASS_GEM_STRENGTH = 2, + ITEM_SUBCLASS_GEM_STAMINA = 3, + ITEM_SUBCLASS_GEM_SPIRIT = 4, + ITEM_SUBCLASS_GEM_CRITICAL_STRIKE = 5, + ITEM_SUBCLASS_GEM_MASTERY = 6, + ITEM_SUBCLASS_GEM_HASTE = 7, + ITEM_SUBCLASS_GEM_VERSATILITY = 8, + ITEM_SUBCLASS_GEM_OTHER = 9, + ITEM_SUBCLASS_GEM_MULTIPLE_STATS = 10, + ITEM_SUBCLASS_GEM_ARTIFACT_RELIC = 11 }; -#define MAX_ITEM_SUBCLASS_GEM 11 +#define MAX_ITEM_SUBCLASS_GEM 12 enum ItemSubclassArmor { @@ -499,10 +503,11 @@ enum ItemSubclassArmor enum ItemSubclassReagent { - ITEM_SUBCLASS_REAGENT = 0 + ITEM_SUBCLASS_REAGENT = 0, + ITEM_SUBCLASS_KEYSTONE = 1 }; -#define MAX_ITEM_SUBCLASS_REAGENT 1 +#define MAX_ITEM_SUBCLASS_REAGENT 2 enum ItemSubclassProjectile { @@ -532,16 +537,32 @@ enum ItemSubclassTradeGoods ITEM_SUBCLASS_ENCHANTING = 12, ITEM_SUBCLASS_MATERIAL = 13, ITEM_SUBCLASS_ENCHANTMENT = 14, + ITEM_SUBCLASS_WEAPON_ENCHANTMENT = 15, + ITEM_SUBCLASS_INSCRIPTION = 16, + ITEM_SUBCLASS_EXPLOSIVES_DEVICES = 17 }; -#define MAX_ITEM_SUBCLASS_TRADE_GOODS 15 +#define MAX_ITEM_SUBCLASS_TRADE_GOODS 18 -enum ItemSubclassGeneric +enum ItemSubclassItemEnhancement { - ITEM_SUBCLASS_GENERIC = 0 // OBSOLETE + ITEM_SUBCLASS_ITEM_ENHANCEMENT_HEAD = 0, + ITEM_SUBCLASS_ITEM_ENHANCEMENT_NECK = 1, + ITEM_SUBCLASS_ITEM_ENHANCEMENT_SHOULDER = 2, + ITEM_SUBCLASS_ITEM_ENHANCEMENT_CLOAK = 3, + ITEM_SUBCLASS_ITEM_ENHANCEMENT_CHEST = 4, + ITEM_SUBCLASS_ITEM_ENHANCEMENT_WRIST = 5, + ITEM_SUBCLASS_ITEM_ENHANCEMENT_HANDS = 6, + ITEM_SUBCLASS_ITEM_ENHANCEMENT_WAIST = 7, + ITEM_SUBCLASS_ITEM_ENHANCEMENT_LEGS = 8, + ITEM_SUBCLASS_ITEM_ENHANCEMENT_FEET = 9, + ITEM_SUBCLASS_ITEM_ENHANCEMENT_FINGER = 10, + ITEM_SUBCLASS_ITEM_ENHANCEMENT_WEAPON = 11, + ITEM_SUBCLASS_ITEM_ENHANCEMENT_TWO_HANDED_WEAPON = 12, + ITEM_SUBCLASS_ITEM_ENHANCEMENT_SHIELD_OFF_HAND = 13 }; -#define MAX_ITEM_SUBCLASS_GENERIC 1 +#define MAX_ITEM_SUBCLASS_ITEM_ENHANCEMENT 14 enum ItemSubclassRecipe { @@ -564,10 +585,9 @@ enum ItemSubclassRecipe enum ItemSubclassMoney { ITEM_SUBCLASS_MONEY = 0, // OBSOLETE - ITEM_SUBCLASS_MONEY_UNK_7 = 7, // OBSOLETE, 1 item (41749) }; -#define MAX_ITEM_SUBCLASS_MONEY 8 +#define MAX_ITEM_SUBCLASS_MONEY 1 enum ItemSubclassQuiver { @@ -605,16 +625,15 @@ enum ItemSubclassPermanent enum ItemSubclassJunk { - ITEM_SUBCLASS_JUNK = 0, - ITEM_SUBCLASS_JUNK_REAGENT = 1, - ITEM_SUBCLASS_JUNK_PET = 2, - ITEM_SUBCLASS_JUNK_HOLIDAY = 3, - ITEM_SUBCLASS_JUNK_OTHER = 4, - ITEM_SUBCLASS_JUNK_MOUNT = 5, - ITEM_SUBCLASS_JUNK_UNK12 = 12, // 1 item (37677) + ITEM_SUBCLASS_MISCELLANEOUS_JUNK = 0, + ITEM_SUBCLASS_MISCELLANEOUS_REAGENT = 1, + ITEM_SUBCLASS_MISCELLANEOUS_COMPANION_PET = 2, + ITEM_SUBCLASS_MISCELLANEOUS_HOLIDAY = 3, + ITEM_SUBCLASS_MISCELLANEOUS_OTHER = 4, + ITEM_SUBCLASS_MISCELLANEOUS_MOUNT = 5, }; -#define MAX_ITEM_SUBCLASS_JUNK 13 +#define MAX_ITEM_SUBCLASS_MISCELLANEOUS 6 enum ItemSubclassGlyph { @@ -627,10 +646,26 @@ enum ItemSubclassGlyph ITEM_SUBCLASS_GLYPH_SHAMAN = 7, ITEM_SUBCLASS_GLYPH_MAGE = 8, ITEM_SUBCLASS_GLYPH_WARLOCK = 9, - ITEM_SUBCLASS_GLYPH_DRUID = 11 + ITEM_SUBCLASS_GLYPH_MONK = 10, + ITEM_SUBCLASS_GLYPH_DRUID = 11, + ITEM_SUBCLASS_GLYPH_DEMON_HUNTER = 12 }; -#define MAX_ITEM_SUBCLASS_GLYPH 12 +#define MAX_ITEM_SUBCLASS_GLYPH 13 + +enum ItemSubclassBattlePet +{ + ITEM_SUBCLASS_BATTLE_PET = 0 +}; + +#define MAX_ITEM_SUBCLASS_BATTLE_PET 1 + +enum ItemSubclassWowToken +{ + ITEM_SUBCLASS_WOW_TOKEN = 0 +}; + +#define MAX_ITEM_SUBCLASS_WOW_TOKEN 1 const uint32 MaxItemSubclassValues[MAX_ITEM_CLASS] = { @@ -642,15 +677,17 @@ const uint32 MaxItemSubclassValues[MAX_ITEM_CLASS] = MAX_ITEM_SUBCLASS_REAGENT, MAX_ITEM_SUBCLASS_PROJECTILE, MAX_ITEM_SUBCLASS_TRADE_GOODS, - MAX_ITEM_SUBCLASS_GENERIC, + MAX_ITEM_SUBCLASS_ITEM_ENHANCEMENT, MAX_ITEM_SUBCLASS_RECIPE, MAX_ITEM_SUBCLASS_MONEY, MAX_ITEM_SUBCLASS_QUIVER, MAX_ITEM_SUBCLASS_QUEST, MAX_ITEM_SUBCLASS_KEY, MAX_ITEM_SUBCLASS_PERMANENT, - MAX_ITEM_SUBCLASS_JUNK, - MAX_ITEM_SUBCLASS_GLYPH + MAX_ITEM_SUBCLASS_MISCELLANEOUS, + MAX_ITEM_SUBCLASS_GLYPH, + MAX_ITEM_SUBCLASS_BATTLE_PET, + MAX_ITEM_SUBCLASS_WOW_TOKEN }; #define MAX_ITEM_SUBCLASS_TOTAL 21 diff --git a/src/server/game/Entities/Object/Updates/UpdateFieldFlags.cpp b/src/server/game/Entities/Object/Updates/UpdateFieldFlags.cpp index 9cc08c4ee7e..13476043204 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFieldFlags.cpp +++ b/src/server/game/Entities/Object/Updates/UpdateFieldFlags.cpp @@ -360,9 +360,9 @@ uint32 UnitUpdateFieldFlags[PLAYER_END] = UF_FLAG_PUBLIC, // UNIT_VIRTUAL_ITEM_SLOT_ID+3 UF_FLAG_PUBLIC, // UNIT_VIRTUAL_ITEM_SLOT_ID+4 UF_FLAG_PUBLIC, // UNIT_VIRTUAL_ITEM_SLOT_ID+5 - UF_FLAG_PUBLIC, // UNIT_FIELD_FLAGS - UF_FLAG_PUBLIC, // UNIT_FIELD_FLAGS_2 - UF_FLAG_PUBLIC, // UNIT_FIELD_FLAGS_3 + UF_FLAG_PUBLIC | UF_FLAG_URGENT, // UNIT_FIELD_FLAGS + UF_FLAG_PUBLIC | UF_FLAG_URGENT, // UNIT_FIELD_FLAGS_2 + UF_FLAG_PUBLIC | UF_FLAG_URGENT, // UNIT_FIELD_FLAGS_3 UF_FLAG_PUBLIC, // UNIT_FIELD_AURASTATE UF_FLAG_PUBLIC, // UNIT_FIELD_BASEATTACKTIME UF_FLAG_PUBLIC, // UNIT_FIELD_BASEATTACKTIME+1 diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.h b/src/server/game/Entities/Object/Updates/UpdateFields.h index 200478eeefe..1f87c98842d 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.h +++ b/src/server/game/Entities/Object/Updates/UpdateFields.h @@ -19,7 +19,7 @@ #ifndef _UPDATEFIELDS_H #define _UPDATEFIELDS_H -// Auto generated for version 7, 0, 3, 21796 +// Auto generated for version 7, 0, 3, 21963 enum ObjectFields { @@ -113,9 +113,9 @@ enum UnitFields UNIT_FIELD_SCALING_LEVEL_DELTA = OBJECT_END + 0x050, // Size: 1, Flags: PUBLIC UNIT_FIELD_FACTIONTEMPLATE = OBJECT_END + 0x051, // Size: 1, Flags: PUBLIC UNIT_VIRTUAL_ITEM_SLOT_ID = OBJECT_END + 0x052, // Size: 6, Flags: PUBLIC - UNIT_FIELD_FLAGS = OBJECT_END + 0x058, // Size: 1, Flags: PUBLIC - UNIT_FIELD_FLAGS_2 = OBJECT_END + 0x059, // Size: 1, Flags: PUBLIC - UNIT_FIELD_FLAGS_3 = OBJECT_END + 0x05A, // Size: 1, Flags: PUBLIC + UNIT_FIELD_FLAGS = OBJECT_END + 0x058, // Size: 1, Flags: PUBLIC, URGENT + UNIT_FIELD_FLAGS_2 = OBJECT_END + 0x059, // Size: 1, Flags: PUBLIC, URGENT + UNIT_FIELD_FLAGS_3 = OBJECT_END + 0x05A, // Size: 1, Flags: PUBLIC, URGENT UNIT_FIELD_AURASTATE = OBJECT_END + 0x05B, // Size: 1, Flags: PUBLIC UNIT_FIELD_BASEATTACKTIME = OBJECT_END + 0x05C, // Size: 2, Flags: PUBLIC UNIT_FIELD_RANGEDATTACKTIME = OBJECT_END + 0x05E, // Size: 1, Flags: PRIVATE diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index c4bd0c0fc3e..d98c18bf6db 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -3137,7 +3137,7 @@ bool Player::AddSpell(uint32 spellId, bool active, bool learning, bool dependent continue; // Runeforging special case - if ((_spell_idx->second->AquireMethod == SKILL_LINE_ABILITY_LEARNED_ON_SKILL_LEARN && !HasSkill(_spell_idx->second->SkillLine)) || ((_spell_idx->second->SkillLine == SKILL_RUNEFORGING_2) && _spell_idx->second->TrivialSkillLineRankHigh == 0)) + if ((_spell_idx->second->AquireMethod == SKILL_LINE_ABILITY_LEARNED_ON_SKILL_LEARN && !HasSkill(_spell_idx->second->SkillLine)) || ((_spell_idx->second->SkillLine == SKILL_RUNEFORGING) && _spell_idx->second->TrivialSkillLineRankHigh == 0)) if (SkillRaceClassInfoEntry const* rcInfo = sDB2Manager.GetSkillRaceClassInfo(_spell_idx->second->SkillLine, getRace(), getClass())) LearnDefaultSkill(rcInfo); } @@ -5219,7 +5219,6 @@ bool Player::UpdateGatherSkill(uint32 SkillId, uint32 SkillValue, uint32 RedLeve switch (SkillId) { case SKILL_HERBALISM: - case SKILL_LOCKPICKING: case SKILL_JEWELCRAFTING: case SKILL_INSCRIPTION: return UpdateSkillPro(SkillId, SkillGainChance(SkillValue, RedLevel+100, RedLevel+50, RedLevel+25)*Multiplicator, gathering_skill_gain); @@ -10991,17 +10990,8 @@ InventoryResult Player::CanRollForItemInLFG(ItemTemplate const* proto, WorldObje if (!proto) return EQUIP_ERR_ITEM_NOT_FOUND; - // Used by group, function NeedBeforeGreed, to know if a prototype can be used by a player - - const static uint32 item_weapon_skills[MAX_ITEM_SUBCLASS_WEAPON] = - { - SKILL_AXES, SKILL_2H_AXES, SKILL_BOWS, SKILL_GUNS, SKILL_MACES, - SKILL_2H_MACES, SKILL_POLEARMS, SKILL_SWORDS, SKILL_2H_SWORDS, 0, - SKILL_STAVES, 0, 0, SKILL_FIST_WEAPONS, 0, - SKILL_DAGGERS, SKILL_THROWN, SKILL_ASSASSINATION, SKILL_CROSSBOWS, SKILL_WANDS, - SKILL_FISHING - }; //Copy from function Item::GetSkill() + // Used by group, function NeedBeforeGreed, to know if a prototype can be used by a player if ((proto->GetAllowableClass() & getClassMask()) == 0 || (proto->GetAllowableRace() & getRaceMask()) == 0) return EQUIP_ERR_CANT_EQUIP_EVER; @@ -11018,7 +11008,7 @@ InventoryResult Player::CanRollForItemInLFG(ItemTemplate const* proto, WorldObje uint8 _class = getClass(); - if (proto->GetClass() == ITEM_CLASS_WEAPON && GetSkillValue(item_weapon_skills[proto->GetSubClass()]) == 0) + if (proto->GetClass() == ITEM_CLASS_WEAPON && GetSkillValue(proto->GetSkill()) == 0) return EQUIP_ERR_PROFICIENCY_NEEDED; if (proto->GetClass() == ITEM_CLASS_ARMOR && proto->GetSubClass() > ITEM_SUBCLASS_ARMOR_MISCELLANEOUS && proto->GetSubClass() < ITEM_SUBCLASS_ARMOR_BUCKLER && proto->GetInventoryType() != INVTYPE_CLOAK) @@ -22503,8 +22493,6 @@ void Player::LearnDefaultSkill(SkillRaceClassInfoEntry const* rcInfo) skillValue = std::min(std::max({ 1, uint16((getLevel() - 1) * 5) }), maxValue); else if (skillId == SKILL_FIST_WEAPONS) skillValue = std::max(1, GetSkillValue(SKILL_UNARMED)); - else if (skillId == SKILL_LOCKPICKING) - skillValue = std::max(1, GetSkillValue(SKILL_LOCKPICKING)); SetSkill(skillId, 0, skillValue, maxValue); break; diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 24c2c52387a..1bfbd85e96b 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -177,12 +177,12 @@ LanguageDesc lang_description[LANGUAGES_COUNT] = { LANG_KALIMAG, 817, SKILL_LANG_OLD_TONGUE }, { LANG_GNOMISH, 7340, SKILL_LANG_GNOMISH }, { LANG_TROLL, 7341, SKILL_LANG_TROLL }, - { LANG_GUTTERSPEAK, 17737, SKILL_LANG_GUTTERSPEAK }, + { LANG_GUTTERSPEAK, 17737, SKILL_LANG_FORSAKEN }, { LANG_DRAENEI, 29932, SKILL_LANG_DRAENEI }, { LANG_ZOMBIE, 0, 0 }, { LANG_GNOMISH_BINARY, 0, 0 }, { LANG_GOBLIN_BINARY, 0, 0 }, - { LANG_WORGEN, 69270, SKILL_LANG_WORGEN }, + { LANG_WORGEN, 69270, SKILL_LANG_GILNEAN }, { LANG_GOBLIN, 69269, SKILL_LANG_GOBLIN }, { LANG_PANDAREN_NEUTRAL, 108127, SKILL_LANG_PANDAREN_NEUTRAL }, { LANG_PANDAREN_ALLIANCE, 108130, SKILL_LANG_PANDAREN_ALLIANCE }, @@ -2323,26 +2323,26 @@ uint32 FillMaxDurability(uint32 itemClass, uint32 itemSubClass, uint32 inventory static float const qualityMultipliers[MAX_ITEM_QUALITY] = { - 1.0f, 1.0f, 1.0f, 1.17f, 1.37f, 1.68f, 0.0f, 0.0f + 0.92f, 0.92f, 0.92f, 1.11f, 1.32f, 1.61f, 0.0f, 0.0f }; static float const armorMultipliers[MAX_INVTYPE] = { 0.00f, // INVTYPE_NON_EQUIP - 0.59f, // INVTYPE_HEAD + 0.60f, // INVTYPE_HEAD 0.00f, // INVTYPE_NECK - 0.59f, // INVTYPE_SHOULDERS + 0.60f, // INVTYPE_SHOULDERS 0.00f, // INVTYPE_BODY 1.00f, // INVTYPE_CHEST - 0.35f, // INVTYPE_WAIST - 0.75f, // INVTYPE_LEGS - 0.49f, // INVTYPE_FEET - 0.35f, // INVTYPE_WRISTS - 0.35f, // INVTYPE_HANDS + 0.33f, // INVTYPE_WAIST + 0.72f, // INVTYPE_LEGS + 0.48f, // INVTYPE_FEET + 0.33f, // INVTYPE_WRISTS + 0.33f, // INVTYPE_HANDS 0.00f, // INVTYPE_FINGER 0.00f, // INVTYPE_TRINKET 0.00f, // INVTYPE_WEAPON - 1.00f, // INVTYPE_SHIELD + 0.72f, // INVTYPE_SHIELD 0.00f, // INVTYPE_RANGED 0.00f, // INVTYPE_CLOAK 0.00f, // INVTYPE_2HWEAPON @@ -2361,27 +2361,27 @@ uint32 FillMaxDurability(uint32 itemClass, uint32 itemSubClass, uint32 inventory static float const weaponMultipliers[MAX_ITEM_SUBCLASS_WEAPON] = { - 0.89f, // ITEM_SUBCLASS_WEAPON_AXE - 1.03f, // ITEM_SUBCLASS_WEAPON_AXE2 - 0.77f, // ITEM_SUBCLASS_WEAPON_BOW - 0.77f, // ITEM_SUBCLASS_WEAPON_GUN - 0.89f, // ITEM_SUBCLASS_WEAPON_MACE - 1.03f, // ITEM_SUBCLASS_WEAPON_MACE2 - 1.03f, // ITEM_SUBCLASS_WEAPON_POLEARM - 0.89f, // ITEM_SUBCLASS_WEAPON_SWORD - 1.03f, // ITEM_SUBCLASS_WEAPON_SWORD2 - 0.00f, // ITEM_SUBCLASS_WEAPON_Obsolete - 1.03f, // ITEM_SUBCLASS_WEAPON_STAFF + 0.91f, // ITEM_SUBCLASS_WEAPON_AXE + 1.00f, // ITEM_SUBCLASS_WEAPON_AXE2 + 1.00f, // ITEM_SUBCLASS_WEAPON_BOW + 1.00f, // ITEM_SUBCLASS_WEAPON_GUN + 0.91f, // ITEM_SUBCLASS_WEAPON_MACE + 1.00f, // ITEM_SUBCLASS_WEAPON_MACE2 + 1.00f, // ITEM_SUBCLASS_WEAPON_POLEARM + 0.91f, // ITEM_SUBCLASS_WEAPON_SWORD + 1.00f, // ITEM_SUBCLASS_WEAPON_SWORD2 + 1.00f, // ITEM_SUBCLASS_WEAPON_WARGLAIVES + 1.00f, // ITEM_SUBCLASS_WEAPON_STAFF 0.00f, // ITEM_SUBCLASS_WEAPON_EXOTIC 0.00f, // ITEM_SUBCLASS_WEAPON_EXOTIC2 - 0.64f, // ITEM_SUBCLASS_WEAPON_FIST_WEAPON + 0.66f, // ITEM_SUBCLASS_WEAPON_FIST_WEAPON 0.00f, // ITEM_SUBCLASS_WEAPON_MISCELLANEOUS - 0.64f, // ITEM_SUBCLASS_WEAPON_DAGGER - 0.64f, // ITEM_SUBCLASS_WEAPON_THROWN + 0.66f, // ITEM_SUBCLASS_WEAPON_DAGGER + 0.00f, // ITEM_SUBCLASS_WEAPON_THROWN 0.00f, // ITEM_SUBCLASS_WEAPON_SPEAR - 0.77f, // ITEM_SUBCLASS_WEAPON_CROSSBOW - 0.64f, // ITEM_SUBCLASS_WEAPON_WAND - 0.64f, // ITEM_SUBCLASS_WEAPON_FISHING_POLE + 1.00f, // ITEM_SUBCLASS_WEAPON_CROSSBOW + 0.66f, // ITEM_SUBCLASS_WEAPON_WAND + 0.66f, // ITEM_SUBCLASS_WEAPON_FISHING_POLE }; float levelPenalty = 1.0f; @@ -2393,10 +2393,10 @@ uint32 FillMaxDurability(uint32 itemClass, uint32 itemSubClass, uint32 inventory if (inventoryType > INVTYPE_ROBE) return 0; - return 5 * uint32(23.0f * qualityMultipliers[quality] * armorMultipliers[inventoryType] * levelPenalty + 0.5f); + return 5 * uint32(round(25.0f * qualityMultipliers[quality] * armorMultipliers[inventoryType] * levelPenalty)); } - return 5 * uint32(17.0f * qualityMultipliers[quality] * weaponMultipliers[itemSubClass] * levelPenalty + 0.5f); + return 5 * uint32(round(18.0f * qualityMultipliers[quality] * weaponMultipliers[itemSubClass] * levelPenalty)); }; void FillDisenchantFields(uint32* disenchantID, uint32* requiredDisenchantSkill, ItemTemplate const& itemTemplate) @@ -2482,6 +2482,9 @@ struct ItemSpecStats case ITEM_SUBCLASS_WEAPON_SWORD2: AddStat(ITEM_SPEC_STAT_TWO_HANDED_SWORD); break; + case ITEM_SUBCLASS_WEAPON_WARGLAIVES: + AddStat(ITEM_SPEC_STAT_WARGLAIVES); + break; case ITEM_SUBCLASS_WEAPON_STAFF: AddStat(ITEM_SPEC_STAT_STAFF); break; @@ -2536,6 +2539,34 @@ struct ItemSpecStats break; } } + else if (item->Class == ITEM_CLASS_GEM) + { + if (GemPropertiesEntry const* gem = sGemPropertiesStore.LookupEntry(sparse->GemProperties)) + { + if (gem->Type & SOCKET_COLOR_RELIC_IRON) + AddStat(ITEM_SPEC_STAT_RELIC_IRON); + if (gem->Type & SOCKET_COLOR_RELIC_BLOOD) + AddStat(ITEM_SPEC_STAT_RELIC_BLOOD); + if (gem->Type & SOCKET_COLOR_RELIC_SHADOW) + AddStat(ITEM_SPEC_STAT_RELIC_SHADOW); + if (gem->Type & SOCKET_COLOR_RELIC_FEL) + AddStat(ITEM_SPEC_STAT_RELIC_FEL); + if (gem->Type & SOCKET_COLOR_RELIC_ARCANE) + AddStat(ITEM_SPEC_STAT_RELIC_ARCANE); + if (gem->Type & SOCKET_COLOR_RELIC_FROST) + AddStat(ITEM_SPEC_STAT_RELIC_FROST); + if (gem->Type & SOCKET_COLOR_RELIC_FIRE) + AddStat(ITEM_SPEC_STAT_RELIC_FIRE); + if (gem->Type & SOCKET_COLOR_RELIC_WATER) + AddStat(ITEM_SPEC_STAT_RELIC_WATER); + if (gem->Type & SOCKET_COLOR_RELIC_LIFE) + AddStat(ITEM_SPEC_STAT_RELIC_LIFE); + if (gem->Type & SOCKET_COLOR_RELIC_WIND) + AddStat(ITEM_SPEC_STAT_RELIC_WIND); + if (gem->Type & SOCKET_COLOR_RELIC_HOLY) + AddStat(ITEM_SPEC_STAT_RELIC_HOLY); + } + } else ItemType = 0; @@ -2569,9 +2600,6 @@ struct ItemSpecStats case ITEM_MOD_INTELLECT: AddStat(ITEM_SPEC_STAT_INTELLECT); break; - case ITEM_MOD_SPIRIT: - AddStat(ITEM_SPEC_STAT_SPIRIT); - break; case ITEM_MOD_DODGE_RATING: AddStat(ITEM_SPEC_STAT_DODGE); break; @@ -2584,9 +2612,6 @@ struct ItemSpecStats case ITEM_MOD_CRIT_RATING: AddStat(ITEM_SPEC_STAT_CRIT); break; - case ITEM_MOD_HASTE_MELEE_RATING: - case ITEM_MOD_HASTE_RANGED_RATING: - case ITEM_MOD_HASTE_SPELL_RATING: case ITEM_MOD_HASTE_RATING: AddStat(ITEM_SPEC_STAT_HASTE); break; @@ -7881,7 +7906,7 @@ SkillRangeType GetSkillRangeType(SkillRaceClassInfoEntry const* rcEntry) if (sObjectMgr->GetSkillTier(rcEntry->SkillTierID)) return SKILL_RANGE_RANK; - if (rcEntry->SkillID == SKILL_RUNEFORGING || rcEntry->SkillID == SKILL_RUNEFORGING_2) + if (rcEntry->SkillID == SKILL_RUNEFORGING) return SKILL_RANGE_MONO; switch (skill->CategoryID) diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index 9b6680b7358..54461828da4 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -4085,58 +4085,45 @@ enum SkillType { SKILL_NONE = 0, - SKILL_FROST = 6, - SKILL_FIRE = 8, - SKILL_ARMS = 26, - SKILL_COMBAT = 38, - SKILL_SUBTLETY = 39, SKILL_SWORDS = 43, SKILL_AXES = 44, SKILL_BOWS = 45, SKILL_GUNS = 46, - SKILL_BEAST_MASTERY = 50, - SKILL_SURVIVAL = 51, SKILL_MACES = 54, - SKILL_2H_SWORDS = 55, - SKILL_HOLY = 56, - SKILL_SHADOW = 78, + SKILL_TWO_HANDED_SWORDS = 55, SKILL_DEFENSE = 95, SKILL_LANG_COMMON = 98, - SKILL_RACIAL_DWARVEN = 101, + SKILL_RACIAL_DWARF = 101, SKILL_LANG_ORCISH = 109, SKILL_LANG_DWARVEN = 111, SKILL_LANG_DARNASSIAN = 113, SKILL_LANG_TAURAHE = 115, SKILL_DUAL_WIELD = 118, SKILL_RACIAL_TAUREN = 124, - SKILL_ORC_RACIAL = 125, + SKILL_RACIAL_ORC = 125, SKILL_RACIAL_NIGHT_ELF = 126, SKILL_FIRST_AID = 129, - SKILL_FERAL_COMBAT = 134, SKILL_STAVES = 136, SKILL_LANG_THALASSIAN = 137, SKILL_LANG_DRACONIC = 138, SKILL_LANG_DEMON_TONGUE = 139, SKILL_LANG_TITAN = 140, SKILL_LANG_OLD_TONGUE = 141, - SKILL_SURVIVAL2 = 142, - SKILL_RIDING_HORSE = 148, - SKILL_RIDING_WOLF = 149, - SKILL_RIDING_TIGER = 150, - SKILL_RIDING_RAM = 152, - SKILL_SWIMING = 155, - SKILL_2H_MACES = 160, + SKILL_SURVIVAL = 142, + SKILL_HORSE_RIDING = 148, + SKILL_WOLF_RIDING = 149, + SKILL_TIGER_RIDING = 150, + SKILL_RAM_RIDING = 152, + SKILL_SWIMMING = 155, + SKILL_TWO_HANDED_MACES = 160, SKILL_UNARMED = 162, - SKILL_MARKSMANSHIP = 163, SKILL_BLACKSMITHING = 164, SKILL_LEATHERWORKING = 165, SKILL_ALCHEMY = 171, - SKILL_2H_AXES = 172, + SKILL_TWO_HANDED_AXES = 172, SKILL_DAGGERS = 173, - SKILL_THROWN = 176, SKILL_HERBALISM = 182, SKILL_GENERIC_DND = 183, - SKILL_RETRIBUTION = 184, SKILL_COOKING = 185, SKILL_MINING = 186, SKILL_PET_IMP = 188, @@ -4152,61 +4139,45 @@ enum SkillType SKILL_PET_CAT = 209, SKILL_PET_BEAR = 210, SKILL_PET_BOAR = 211, - SKILL_PET_CROCILISK = 212, + SKILL_PET_CROCOLISK = 212, SKILL_PET_CARRION_BIRD = 213, SKILL_PET_CRAB = 214, SKILL_PET_GORILLA = 215, SKILL_PET_RAPTOR = 217, SKILL_PET_TALLSTRIDER = 218, - SKILL_RACIAL_UNDED = 220, + SKILL_RACIAL_UNDEAD = 220, SKILL_CROSSBOWS = 226, SKILL_WANDS = 228, SKILL_POLEARMS = 229, SKILL_PET_SCORPID = 236, - SKILL_ARCANE = 237, SKILL_PET_TURTLE = 251, - SKILL_ASSASSINATION = 253, - SKILL_FURY = 256, - SKILL_PROTECTION = 257, - SKILL_PROTECTION2 = 267, - SKILL_PET_TALENTS = 270, + SKILL_PET_GENERIC_HUNTER = 270, SKILL_PLATE_MAIL = 293, SKILL_LANG_GNOMISH = 313, SKILL_LANG_TROLL = 315, SKILL_ENCHANTING = 333, - SKILL_DEMONOLOGY = 354, - SKILL_AFFLICTION = 355, SKILL_FISHING = 356, - SKILL_ENHANCEMENT = 373, - SKILL_RESTORATION = 374, - SKILL_ELEMENTAL_COMBAT = 375, SKILL_SKINNING = 393, SKILL_MAIL = 413, SKILL_LEATHER = 414, SKILL_CLOTH = 415, SKILL_SHIELD = 433, SKILL_FIST_WEAPONS = 473, - SKILL_RIDING_RAPTOR = 533, - SKILL_RIDING_MECHANOSTRIDER = 553, - SKILL_RIDING_UNDEAD_HORSE = 554, - SKILL_RESTORATION2 = 573, - SKILL_BALANCE = 574, - SKILL_DESTRUCTION = 593, - SKILL_HOLY2 = 594, - SKILL_DISCIPLINE = 613, - SKILL_LOCKPICKING = 633, + SKILL_RAPTOR_RIDING = 533, + SKILL_MECHANOSTRIDER_PILOTING = 553, + SKILL_UNDEAD_HORSEMANSHIP = 554, SKILL_PET_BAT = 653, SKILL_PET_HYENA = 654, SKILL_PET_BIRD_OF_PREY = 655, SKILL_PET_WIND_SERPENT = 656, - SKILL_LANG_GUTTERSPEAK = 673, - SKILL_RIDING_KODO = 713, + SKILL_LANG_FORSAKEN = 673, + SKILL_KODO_RIDING = 713, SKILL_RACIAL_TROLL = 733, SKILL_RACIAL_GNOME = 753, SKILL_RACIAL_HUMAN = 754, SKILL_JEWELCRAFTING = 755, - SKILL_RACIAL_BLOODELF = 756, - SKILL_PET_EVENT_RC = 758, // SkillCategory = -1 + SKILL_RACIAL_BLOOD_ELF = 756, + SKILL_PET_EVENT_REMOTE_CONTROL = 758, SKILL_LANG_DRAENEI = 759, SKILL_RACIAL_DRAENEI = 760, SKILL_PET_FELGUARD = 761, @@ -4218,12 +4189,8 @@ enum SkillType SKILL_PET_RAVAGER = 767, SKILL_PET_SERPENT = 768, SKILL_INTERNAL = 769, - SKILL_DK_BLOOD = 770, - SKILL_DK_FROST = 771, - SKILL_DK_UNHOLY = 772, SKILL_INSCRIPTION = 773, SKILL_PET_MOTH = 775, - SKILL_RUNEFORGING = 776, SKILL_MOUNTS = 777, SKILL_COMPANIONS = 778, SKILL_PET_EXOTIC_CHIMAERA = 780, @@ -4232,31 +4199,26 @@ enum SkillType SKILL_PET_EXOTIC_SILITHID = 783, SKILL_PET_EXOTIC_WORM = 784, SKILL_PET_WASP = 785, - SKILL_PET_EXOTIC_RHINO = 786, + SKILL_PET_EXOTIC_CLEFTHOOF = 786, SKILL_PET_EXOTIC_CORE_HOUND = 787, SKILL_PET_EXOTIC_SPIRIT_BEAST = 788, SKILL_RACIAL_WORGEN = 789, SKILL_RACIAL_GOBLIN = 790, - SKILL_LANG_WORGEN = 791, + SKILL_LANG_GILNEAN = 791, SKILL_LANG_GOBLIN = 792, SKILL_ARCHAEOLOGY = 794, - SKILL_GENERAL_HUNTER = 795, - SKILL_GENERAL_DEATH_KNIGHT = 796, - SKILL_GENERAL_ROGUE = 797, - SKILL_GENERAL_DRUID = 798, - SKILL_GENERAL_MAGE = 799, - SKILL_GENERAL_PALADIN = 800, - SKILL_GENERAL_SHAMAN = 801, - SKILL_GENERAL_WARLOCK = 802, - SKILL_GENERAL_WARRIOR = 803, - SKILL_GENERAL_PRIEST = 804, + SKILL_HUNTER = 795, + SKILL_DEATH_KNIGHT = 796, + SKILL_DRUID = 798, + SKILL_PALADIN = 800, + SKILL_PRIEST = 804, SKILL_PET_WATER_ELEMENTAL = 805, SKILL_PET_FOX = 808, SKILL_ALL_GLYPHS = 810, SKILL_PET_DOG = 811, SKILL_PET_MONKEY = 815, SKILL_PET_SHALE_SPIDER = 817, - SKILL_PET_BEETLE = 818, + SKILL_BEETLE = 818, SKILL_ALL_GUILD_PERKS = 821, SKILL_PET_HYDRA = 824, SKILL_MONK = 829, @@ -4275,7 +4237,7 @@ enum SkillType SKILL_OBSERVER = 930, SKILL_WRATHGUARD = 931, SKILL_ALL_SPECIALIZATIONS = 934, - SKILL_RUNEFORGING_2 = 960, + SKILL_RUNEFORGING = 960, SKILL_PET_PRIMAL_FIRE_ELEMENTAL = 962, SKILL_PET_PRIMAL_EARTH_ELEMENTAL = 963, SKILL_WAY_OF_THE_GRILL = 975, @@ -4295,28 +4257,31 @@ enum SkillType SKILL_NO_PLAYERS = 999, SKILL_DIREHORN = 1305, SKILL_PET_PRIMAL_STORM_ELEMENTAL = 1748, - SKILL_PET_WATER_MINOR_TALENT_VERSION = 1777, - SKILL_PET_EXOTIC_HOOK_WASP = 1818, + SKILL_PET_WATER_ELEMENTAL_MINOR_TALENT_VERSION = 1777, + SKILL_PET_EXOTIC_RYLAK = 1818, SKILL_PET_RIVERBEAST = 1819, SKILL_UNUSED = 1830, + SKILL_DEMON_HUNTER = 1848, SKILL_LOGGING = 1945, SKILL_PET_TERRORGUARD = 1981, SKILL_PET_ABYSSAL = 1982, SKILL_PET_STAG = 1993, - SKILL_TRADING_POST = 2000 + SKILL_TRADING_POST = 2000, + SKILL_WARGLAIVES = 2152, + SKILL_PET_MECHANICAL = 2189, + SKILL_PET_ABOMINATION = 2216, }; -#define MAX_SKILL_TYPE 2000 - inline SkillType SkillByLockType(LockType locktype) { switch (locktype) { - case LOCKTYPE_PICKLOCK: return SKILL_LOCKPICKING; case LOCKTYPE_HERBALISM: return SKILL_HERBALISM; case LOCKTYPE_MINING: return SKILL_MINING; case LOCKTYPE_FISHING: return SKILL_FISHING; case LOCKTYPE_INSCRIPTION: return SKILL_INSCRIPTION; + case LOCKTYPE_ARCHAELOGY: return SKILL_ARCHAEOLOGY; + case LOCKTYPE_LUMBER_MILL: return SKILL_LOGGING; default: break; } return SKILL_NONE; diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h index a3346f5e6cb..5ec7d87a36e 100644 --- a/src/server/game/Server/Protocol/Opcodes.h +++ b/src/server/game/Server/Protocol/Opcodes.h @@ -52,8 +52,8 @@ enum OpcodeClient : uint32 CMSG_ACTIVATE_TAXI = 0x34A6, CMSG_ADDON_LIST = 0x35D7, CMSG_ADD_BATTLENET_FRIEND = 0x365E, - CMSG_ADD_FRIEND = 0x36D5, - CMSG_ADD_IGNORE = 0x36D9, + CMSG_ADD_FRIEND = 0x36D4, + CMSG_ADD_IGNORE = 0x36D8, CMSG_ADD_TOY = 0x3272, CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0x31E8, CMSG_ADVENTURE_JOURNAL_START_QUEST = 0x331A, @@ -91,18 +91,18 @@ enum OpcodeClient : uint32 CMSG_BATTLEMASTER_JOIN = 0x3510, CMSG_BATTLEMASTER_JOIN_ARENA = 0x3511, CMSG_BATTLEMASTER_JOIN_SKIRMISH = 0x3512, - CMSG_BATTLENET_CHALLENGE_RESPONSE = 0x36D8, - CMSG_BATTLENET_REQUEST = 0x36FC, - CMSG_BATTLENET_REQUEST_REALM_LIST_TICKET = 0x36FD, - CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE = 0x36CF, - CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE = 0x36CE, - CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET = 0x36C6, - CMSG_BATTLE_PAY_GET_PRODUCT_LIST = 0x36C1, - CMSG_BATTLE_PAY_GET_PURCHASE_LIST = 0x36C2, - CMSG_BATTLE_PAY_QUERY_CLASS_TRIAL_BOOST_RESULT = 0x36C8, - CMSG_BATTLE_PAY_START_PURCHASE = 0x36F8, - CMSG_BATTLE_PAY_START_VAS_PURCHASE = 0x36F9, - CMSG_BATTLE_PAY_TRIAL_BOOST_CHARACTER = 0x36C7, + CMSG_BATTLENET_CHALLENGE_RESPONSE = 0x36D7, + CMSG_BATTLENET_REQUEST = 0x36FB, + CMSG_BATTLENET_REQUEST_REALM_LIST_TICKET = 0x36FC, + CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE = 0x36CE, + CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE = 0x36CD, + CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET = 0x36C5, + CMSG_BATTLE_PAY_GET_PRODUCT_LIST = 0x36C0, + CMSG_BATTLE_PAY_GET_PURCHASE_LIST = 0x36C1, + CMSG_BATTLE_PAY_QUERY_CLASS_TRIAL_BOOST_RESULT = 0x36C7, + CMSG_BATTLE_PAY_START_PURCHASE = 0x36F7, + CMSG_BATTLE_PAY_START_VAS_PURCHASE = 0x36F8, + CMSG_BATTLE_PAY_TRIAL_BOOST_CHARACTER = 0x36C6, CMSG_BATTLE_PET_CLEAR_FANFARE = 0x312C, CMSG_BATTLE_PET_DELETE_PET = 0x3623, CMSG_BATTLE_PET_DELETE_PET_CHEAT = 0x3624, @@ -118,30 +118,30 @@ enum OpcodeClient : uint32 CMSG_BLACK_MARKET_BID_ON_ITEM = 0x351A, CMSG_BLACK_MARKET_OPEN = 0x3518, CMSG_BLACK_MARKET_REQUEST_ITEMS = 0x3519, - CMSG_BUG_REPORT = 0x368C, + CMSG_BUG_REPORT = 0x368B, CMSG_BUSY_TRADE = 0x3158, CMSG_BUY_BACK_ITEM = 0x349F, CMSG_BUY_BANK_SLOT = 0x34AF, CMSG_BUY_ITEM = 0x349E, CMSG_BUY_REAGENT_BANK = 0x34B0, - CMSG_BUY_WOW_TOKEN_CONFIRM = 0x36F1, - CMSG_BUY_WOW_TOKEN_START = 0x36F0, + CMSG_BUY_WOW_TOKEN_CONFIRM = 0x36F0, + CMSG_BUY_WOW_TOKEN_START = 0x36EF, CMSG_CAGE_BATTLE_PET = 0x31D8, - CMSG_CALENDAR_ADD_EVENT = 0x3682, - CMSG_CALENDAR_COMPLAIN = 0x367E, - CMSG_CALENDAR_COPY_EVENT = 0x367D, - CMSG_CALENDAR_EVENT_INVITE = 0x3677, - CMSG_CALENDAR_EVENT_MODERATOR_STATUS = 0x367B, - CMSG_CALENDAR_EVENT_RSVP = 0x3679, - CMSG_CALENDAR_EVENT_SIGN_UP = 0x3680, - CMSG_CALENDAR_EVENT_STATUS = 0x367A, - CMSG_CALENDAR_GET = 0x3674, - CMSG_CALENDAR_GET_EVENT = 0x3675, - CMSG_CALENDAR_GET_NUM_PENDING = 0x367F, - CMSG_CALENDAR_GUILD_FILTER = 0x3676, - CMSG_CALENDAR_REMOVE_EVENT = 0x367C, - CMSG_CALENDAR_REMOVE_INVITE = 0x3678, - CMSG_CALENDAR_UPDATE_EVENT = 0x3683, + CMSG_CALENDAR_ADD_EVENT = 0x3681, + CMSG_CALENDAR_COMPLAIN = 0x367D, + CMSG_CALENDAR_COPY_EVENT = 0x367C, + CMSG_CALENDAR_EVENT_INVITE = 0x3676, + CMSG_CALENDAR_EVENT_MODERATOR_STATUS = 0x367A, + CMSG_CALENDAR_EVENT_RSVP = 0x3678, + CMSG_CALENDAR_EVENT_SIGN_UP = 0x367F, + CMSG_CALENDAR_EVENT_STATUS = 0x3679, + CMSG_CALENDAR_GET = 0x3673, + CMSG_CALENDAR_GET_EVENT = 0x3674, + CMSG_CALENDAR_GET_NUM_PENDING = 0x367E, + CMSG_CALENDAR_GUILD_FILTER = 0x3675, + CMSG_CALENDAR_REMOVE_EVENT = 0x367B, + CMSG_CALENDAR_REMOVE_INVITE = 0x3677, + CMSG_CALENDAR_UPDATE_EVENT = 0x3682, CMSG_CANCEL_AURA = 0x31A7, CMSG_CANCEL_AUTO_REPEAT_SPELL = 0x34D7, CMSG_CANCEL_CAST = 0x3277, @@ -153,17 +153,17 @@ enum OpcodeClient : uint32 CMSG_CANCEL_QUEUED_SPELL = 0x317D, CMSG_CANCEL_TEMP_ENCHANTMENT = 0x34E2, CMSG_CANCEL_TRADE = 0x315C, - CMSG_CAN_DUEL = 0x3667, + CMSG_CAN_DUEL = 0x3666, CMSG_CAST_SPELL = 0x3275, CMSG_CHALLENGE_MODE_REQUEST_LEADERS = 0x308F, CMSG_CHALLENGE_MODE_REQUEST_MAP_STATS = 0x308E, CMSG_CHANGE_BAG_SLOT_FLAG = 0x32FC, CMSG_CHANGE_MONUMENT_APPEARANCE = 0x32DC, CMSG_CHANGE_SUB_GROUP = 0x364C, - CMSG_CHARACTER_RENAME_REQUEST = 0x36C4, - CMSG_CHAR_CUSTOMIZE = 0x3694, - CMSG_CHAR_DELETE = 0x36A1, - CMSG_CHAR_RACE_OR_FACTION_CHANGE = 0x369A, + CMSG_CHARACTER_RENAME_REQUEST = 0x36C3, + CMSG_CHAR_CUSTOMIZE = 0x3693, + CMSG_CHAR_DELETE = 0x36A0, + CMSG_CHAR_RACE_OR_FACTION_CHANGE = 0x3699, CMSG_CHAT_ADDON_MESSAGE_CHANNEL = 0x37D0, CMSG_CHAT_ADDON_MESSAGE_GUILD = 0x37D4, CMSG_CHAT_ADDON_MESSAGE_INSTANCE_CHAT = 0x37F7, @@ -212,8 +212,8 @@ enum OpcodeClient : uint32 CMSG_CHAT_REPORT_FILTERED = 0x37CC, CMSG_CHAT_REPORT_IGNORED = 0x37CB, CMSG_CHAT_UNREGISTER_ALL_ADDON_PREFIXES = 0x37CE, - CMSG_CHECK_RAF_EMAIL_ENABLED = 0x36D0, - CMSG_CHECK_WOW_TOKEN_VETERAN_ELIGIBILITY = 0x36EF, + CMSG_CHECK_RAF_EMAIL_ENABLED = 0x36CF, + CMSG_CHECK_WOW_TOKEN_VETERAN_ELIGIBILITY = 0x36EE, CMSG_CHOICE_RESPONSE = 0x3279, CMSG_CLEAR_RAID_MARKER = 0x319F, CMSG_CLEAR_TRADE_ITEM = 0x315E, @@ -225,7 +225,7 @@ enum OpcodeClient : uint32 CMSG_COMMENTATOR_GET_MAP_INFO = 0x35EF, CMSG_COMMENTATOR_GET_PLAYER_INFO = 0x35F0, CMSG_COMMENTATOR_START_WARGAME = 0x35ED, - CMSG_COMPLAINT = 0x3671, + CMSG_COMPLAINT = 0x3670, CMSG_COMPLETE_CINEMATIC = 0x3532, CMSG_COMPLETE_MOVIE = 0x34CD, CMSG_CONFIRM_ARTIFACT_RESPEC = 0x31A4, @@ -238,8 +238,8 @@ enum OpcodeClient : uint32 CMSG_DECLINE_GUILD_INVITES = 0x350E, CMSG_DECLINE_PETITION = 0x3521, CMSG_DELETE_EQUIPMENT_SET = 0x34FC, - CMSG_DEL_FRIEND = 0x36D6, - CMSG_DEL_IGNORE = 0x36DA, + CMSG_DEL_FRIEND = 0x36D5, + CMSG_DEL_IGNORE = 0x36D9, CMSG_DEPOSIT_REAGENT_BANK = 0x3305, CMSG_DESTROY_ITEM = 0x326C, CMSG_DF_BOOT_PLAYER_VOTE = 0x3614, @@ -261,9 +261,9 @@ enum OpcodeClient : uint32 CMSG_ENABLE_ENCRYPTION_ACK = 0x3767, CMSG_ENABLE_NAGLE = 0x376B, CMSG_ENABLE_TAXI_NODE = 0x34A4, - CMSG_ENGINE_SURVEY = 0x36E9, + CMSG_ENGINE_SURVEY = 0x36E8, CMSG_ENUM_CHARACTERS = 0x35E6, - CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT = 0x36E3, + CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT = 0x36E2, CMSG_FAR_SIGHT = 0x34D8, CMSG_GAME_OBJ_REPORT_USE = 0x34DF, CMSG_GAME_OBJ_USE = 0x34DE, @@ -291,17 +291,17 @@ enum OpcodeClient : uint32 CMSG_GARRISON_START_MISSION = 0x32E8, CMSG_GARRISON_SWAP_BUILDINGS = 0x32A5, CMSG_GENERATE_RANDOM_CHARACTER_NAME = 0x35E5, - CMSG_GET_CHALLENGE_MODE_REWARDS = 0x3688, + CMSG_GET_CHALLENGE_MODE_REWARDS = 0x3687, CMSG_GET_GARRISON_INFO = 0x329A, CMSG_GET_ITEM_PURCHASE_DATA = 0x351C, CMSG_GET_MIRROR_IMAGE_DATA = 0x3270, CMSG_GET_PVP_OPTIONS_ENABLED = 0x35EC, - CMSG_GET_REMAINING_GAME_TIME = 0x36F2, + CMSG_GET_REMAINING_GAME_TIME = 0x36F1, CMSG_GET_TROPHY_LIST = 0x32D9, - CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS = 0x36E5, - CMSG_GM_TICKET_ACKNOWLEDGE_SURVEY = 0x3698, - CMSG_GM_TICKET_GET_CASE_STATUS = 0x3697, - CMSG_GM_TICKET_GET_SYSTEM_STATUS = 0x3696, + CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS = 0x36E4, + CMSG_GM_TICKET_ACKNOWLEDGE_SURVEY = 0x3697, + CMSG_GM_TICKET_GET_CASE_STATUS = 0x3696, + CMSG_GM_TICKET_GET_SYSTEM_STATUS = 0x3695, CMSG_GOSSIP_SELECT_OPTION = 0x348B, CMSG_GRANT_LEVEL = 0x34E7, CMSG_GUILD_ADD_BATTLENET_FRIEND = 0x308D, @@ -343,7 +343,7 @@ enum OpcodeClient : uint32 CMSG_GUILD_REPLACE_GUILD_MASTER = 0x3088, CMSG_GUILD_SET_ACHIEVEMENT_TRACKING = 0x306F, CMSG_GUILD_SET_FOCUSED_ACHIEVEMENT = 0x3070, - CMSG_GUILD_SET_GUILD_MASTER = 0x36CA, + CMSG_GUILD_SET_GUILD_MASTER = 0x36C9, CMSG_GUILD_SET_MEMBER_NOTE = 0x3072, CMSG_GUILD_SET_RANK_PERMISSIONS = 0x3067, CMSG_GUILD_SHIFT_RANK = 0x3066, @@ -354,13 +354,13 @@ enum OpcodeClient : uint32 CMSG_INITIATE_ROLE_POLL = 0x35D9, CMSG_INITIATE_TRADE = 0x3156, CMSG_INSPECT = 0x3517, - CMSG_INSPECT_PVP = 0x36A7, + CMSG_INSPECT_PVP = 0x36A6, CMSG_INSTANCE_LOCK_RESPONSE = 0x34FD, CMSG_ITEM_PURCHASE_REFUND = 0x351D, CMSG_ITEM_TEXT_QUERY = 0x32F9, CMSG_JOIN_PET_BATTLE_QUEUE = 0x31C6, CMSG_JOIN_RATED_BATTLEGROUND = 0x3175, - CMSG_KEEP_ALIVE = 0x3684, + CMSG_KEEP_ALIVE = 0x3683, CMSG_KEYBOUND_OVERRIDE = 0x3207, CMSG_LEARN_PVP_TALENTS = 0x3540, CMSG_LEARN_TALENTS = 0x353F, @@ -385,9 +385,9 @@ enum OpcodeClient : uint32 CMSG_LF_GUILD_REMOVE_RECRUIT = 0x307A, CMSG_LF_GUILD_SET_GUILD_POST = 0x361B, CMSG_LIST_INVENTORY = 0x349C, - CMSG_LIVE_REGION_ACCOUNT_RESTORE = 0x36C0, - CMSG_LIVE_REGION_CHARACTER_COPY = 0x36BF, - CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST = 0x36BE, + CMSG_LIVE_REGION_ACCOUNT_RESTORE = 0x36BF, + CMSG_LIVE_REGION_CHARACTER_COPY = 0x36BE, + CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST = 0x36BD, CMSG_LOADING_SCREEN_NOTIFY = 0x35F5, CMSG_LOAD_SELECTED_TROPHY = 0x32DA, CMSG_LOGOUT_CANCEL = 0x34C8, @@ -400,7 +400,7 @@ enum OpcodeClient : uint32 CMSG_LOOT_RELEASE = 0x31F7, CMSG_LOOT_ROLL = 0x31F8, CMSG_LOOT_UNIT = 0x31F1, - CMSG_LOW_LEVEL_RAID1 = 0x36A5, + CMSG_LOW_LEVEL_RAID1 = 0x36A4, CMSG_LOW_LEVEL_RAID2 = 0x3503, CMSG_MAIL_CREATE_TEXT_ITEM = 0x3528, CMSG_MAIL_DELETE = 0x3209, @@ -481,7 +481,7 @@ enum OpcodeClient : uint32 CMSG_NEXT_CINEMATIC_CAMERA = 0x3531, CMSG_OBJECT_UPDATE_FAILED = 0x317E, CMSG_OBJECT_UPDATE_RESCUED = 0x317F, - CMSG_OFFER_PETITION = 0x36B5, + CMSG_OFFER_PETITION = 0x36B4, CMSG_OPENING_CINEMATIC = 0x3530, CMSG_OPEN_ITEM = 0x32FA, CMSG_OPEN_MISSION_NPC = 0x32BF, @@ -492,7 +492,7 @@ enum OpcodeClient : uint32 CMSG_PARTY_INVITE_RESPONSE = 0x3600, CMSG_PARTY_UNINVITE = 0x3647, CMSG_PETITION_BUY = 0x34B9, - CMSG_PETITION_RENAME_GUILD = 0x36CB, + CMSG_PETITION_RENAME_GUILD = 0x36CA, CMSG_PETITION_SHOW_LIST = 0x34B8, CMSG_PETITION_SHOW_SIGNATURES = 0x34BA, CMSG_PET_ABANDON = 0x3484, @@ -509,7 +509,7 @@ enum OpcodeClient : uint32 CMSG_PET_BATTLE_WILD_LOCATION_FAIL = 0x31C3, CMSG_PET_CANCEL_AURA = 0x3485, CMSG_PET_CAST_SPELL = 0x3274, - CMSG_PET_RENAME = 0x368B, + CMSG_PET_RENAME = 0x368A, CMSG_PET_SET_ACTION = 0x3481, CMSG_PET_SPELL_AUTOCAST = 0x3486, CMSG_PET_STOP_ATTACK = 0x3483, @@ -520,24 +520,24 @@ enum OpcodeClient : uint32 CMSG_PVP_LOG_DATA = 0x3179, CMSG_PVP_PRESTIGE_RANK_UP = 0x331E, CMSG_QUERY_BATTLE_PET_NAME = 0x3251, - CMSG_QUERY_CORPSE_LOCATION_FROM_CLIENT = 0x3665, - CMSG_QUERY_CORPSE_TRANSPORT = 0x3666, + CMSG_QUERY_CORPSE_LOCATION_FROM_CLIENT = 0x3664, + CMSG_QUERY_CORPSE_TRANSPORT = 0x3665, CMSG_QUERY_COUNTDOWN_TIMER = 0x31A2, CMSG_QUERY_CREATURE = 0x324B, CMSG_QUERY_GAME_OBJECT = 0x324C, CMSG_QUERY_GARRISON_CREATURE_NAME = 0x3252, - CMSG_QUERY_GUILD_INFO = 0x3693, + CMSG_QUERY_GUILD_INFO = 0x3692, CMSG_QUERY_INSPECT_ACHIEVEMENTS = 0x34F2, CMSG_QUERY_NEXT_MAIL_TIME = 0x3526, CMSG_QUERY_NPC_TEXT = 0x324D, CMSG_QUERY_PAGE_TEXT = 0x324F, CMSG_QUERY_PETITION = 0x3253, CMSG_QUERY_PET_NAME = 0x3250, - CMSG_QUERY_PLAYER_NAME = 0x3691, + CMSG_QUERY_PLAYER_NAME = 0x3690, CMSG_QUERY_QUEST_COMPLETION_NPCS = 0x3172, CMSG_QUERY_QUEST_INFO = 0x324E, CMSG_QUERY_QUEST_REWARDS = 0x3321, - CMSG_QUERY_REALM_NAME = 0x3692, + CMSG_QUERY_REALM_NAME = 0x3691, CMSG_QUERY_SCENARIO_POI = 0x3659, CMSG_QUERY_TIME = 0x34C6, CMSG_QUERY_VOID_STORAGE = 0x319B, @@ -553,23 +553,23 @@ enum OpcodeClient : uint32 CMSG_QUEST_GIVER_STATUS_QUERY = 0x3497, CMSG_QUEST_GIVER_UNIGNORE_QUEST = 0x3492, CMSG_QUEST_LOG_REMOVE_QUEST = 0x351B, - CMSG_QUEST_POI_QUERY = 0x36B6, + CMSG_QUEST_POI_QUERY = 0x36B5, CMSG_QUEST_PUSH_RESULT = 0x349B, CMSG_QUEUED_MESSAGES_END = 0x376C, - CMSG_RAID_OR_BATTLEGROUND_ENGINE_SURVEY = 0x36EA, + CMSG_RAID_OR_BATTLEGROUND_ENGINE_SURVEY = 0x36E9, CMSG_RANDOM_ROLL = 0x3654, CMSG_READY_CHECK_RESPONSE = 0x3634, CMSG_READ_ITEM = 0x32FB, CMSG_RECLAIM_CORPSE = 0x34CB, - CMSG_RECRUIT_A_FRIEND = 0x36D1, - CMSG_REDEEM_WOW_TOKEN_CONFIRM = 0x36F4, - CMSG_REDEEM_WOW_TOKEN_START = 0x36F3, + CMSG_RECRUIT_A_FRIEND = 0x36D0, + CMSG_REDEEM_WOW_TOKEN_CONFIRM = 0x36F3, + CMSG_REDEEM_WOW_TOKEN_START = 0x36F2, CMSG_REORDER_CHARACTERS = 0x35E7, CMSG_REPAIR_ITEM = 0x34DC, CMSG_REPLACE_TROPHY = 0x32DB, CMSG_REPOP_REQUEST = 0x3514, CMSG_REPORT_PVP_PLAYER_AFK = 0x34E4, - CMSG_REQUEST_ACCOUNT_DATA = 0x369B, + CMSG_REQUEST_ACCOUNT_DATA = 0x369A, CMSG_REQUEST_BATTLEFIELD_STATUS = 0x35DB, CMSG_REQUEST_CATEGORY_COOLDOWNS = 0x317B, CMSG_REQUEST_CEMETERY_LIST = 0x3173, @@ -584,7 +584,7 @@ enum OpcodeClient : uint32 CMSG_REQUEST_PET_INFO = 0x3487, CMSG_REQUEST_PLAYED_TIME = 0x3256, CMSG_REQUEST_PVP_REWARDS = 0x318F, - CMSG_REQUEST_RAID_INFO = 0x36CC, + CMSG_REQUEST_RAID_INFO = 0x36CB, CMSG_REQUEST_RATED_BATTLEFIELD_INFO = 0x35E2, CMSG_REQUEST_RESEARCH_HISTORY = 0x3167, CMSG_REQUEST_STABLED_PETS = 0x3488, @@ -592,10 +592,10 @@ enum OpcodeClient : uint32 CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0x321B, CMSG_REQUEST_VEHICLE_PREV_SEAT = 0x321A, CMSG_REQUEST_VEHICLE_SWITCH_SEAT = 0x321C, - CMSG_REQUEST_WOW_TOKEN_MARKET_PRICE = 0x36EC, + CMSG_REQUEST_WOW_TOKEN_MARKET_PRICE = 0x36EB, CMSG_RESET_CHALLENGE_MODE = 0x31EA, - CMSG_RESET_INSTANCES = 0x366D, - CMSG_RESURRECT_RESPONSE = 0x368A, + CMSG_RESET_INSTANCES = 0x366C, + CMSG_RESURRECT_RESPONSE = 0x3689, CMSG_REVERT_MONUMENT_APPEARANCE = 0x32DD, CMSG_RIDE_VEHICLE_INTERACT = 0x321D, CMSG_SAVE_CUF_PROFILES = 0x3189, @@ -606,9 +606,9 @@ enum OpcodeClient : uint32 CMSG_SCENE_TRIGGER_EVENT = 0x3205, CMSG_SELF_RES = 0x351E, CMSG_SELL_ITEM = 0x349D, - CMSG_SELL_WOW_TOKEN_CONFIRM = 0x36EE, - CMSG_SELL_WOW_TOKEN_START = 0x36ED, - CMSG_SEND_CONTACT_LIST = 0x36D4, + CMSG_SELL_WOW_TOKEN_CONFIRM = 0x36ED, + CMSG_SELL_WOW_TOKEN_START = 0x36EC, + CMSG_SEND_CONTACT_LIST = 0x36D3, CMSG_SEND_MAIL = 0x35F7, CMSG_SEND_SOR_REQUEST_VIA_ADDRESS = 0x361F, CMSG_SEND_TEXT_EMOTE = 0x347E, @@ -622,10 +622,10 @@ enum OpcodeClient : uint32 CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0x32FE, CMSG_SET_BANK_AUTOSORT_DISABLED = 0x32FF, CMSG_SET_BANK_BAG_SLOT_FLAG = 0x32FD, - CMSG_SET_CONTACT_NOTES = 0x36D7, + CMSG_SET_CONTACT_NOTES = 0x36D6, CMSG_SET_CURRENCY_FLAGS = 0x3169, CMSG_SET_DIFFICULTY_ID = 0x3206, - CMSG_SET_DUNGEON_DIFFICULTY = 0x3687, + CMSG_SET_DUNGEON_DIFFICULTY = 0x3686, CMSG_SET_EVERYONE_IS_ASSISTANT = 0x3616, CMSG_SET_FACTION_AT_WAR = 0x34CE, CMSG_SET_FACTION_INACTIVE = 0x34D0, @@ -637,12 +637,12 @@ enum OpcodeClient : uint32 CMSG_SET_PARTY_ASSIGNMENT = 0x3651, CMSG_SET_PARTY_LEADER = 0x364A, CMSG_SET_PET_SLOT = 0x3168, - CMSG_SET_PLAYER_DECLINED_NAMES = 0x3690, + CMSG_SET_PLAYER_DECLINED_NAMES = 0x368F, CMSG_SET_PREFERRED_CEMETERY = 0x3174, CMSG_SET_PVP = 0x3283, - CMSG_SET_RAID_DIFFICULTY = 0x36E1, + CMSG_SET_RAID_DIFFICULTY = 0x36E0, CMSG_SET_ROLE = 0x35D8, - CMSG_SET_SAVED_INSTANCE_EXTEND = 0x368E, + CMSG_SET_SAVED_INSTANCE_EXTEND = 0x368D, CMSG_SET_SELECTION = 0x3516, CMSG_SET_SHEATHED = 0x347F, CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x3300, @@ -653,7 +653,7 @@ enum OpcodeClient : uint32 CMSG_SET_TRADE_ITEM = 0x315D, CMSG_SET_USING_PARTY_GARRISON = 0x32C1, CMSG_SET_WATCHED_FACTION = 0x34D1, - CMSG_SHOW_TRADE_SKILL = 0x36C5, + CMSG_SHOW_TRADE_SKILL = 0x36C4, CMSG_SIGN_PETITION = 0x3520, CMSG_SILENCE_PARTY_TALKER = 0x3652, CMSG_SOCKET_GEMS = 0x34DB, @@ -667,7 +667,7 @@ enum OpcodeClient : uint32 CMSG_START_CHALLENGE_MODE = 0x3537, CMSG_START_SPECTATOR_WAR_GAME = 0x35DE, CMSG_START_WAR_GAME = 0x35DD, - CMSG_SUMMON_RESPONSE = 0x366F, + CMSG_SUMMON_RESPONSE = 0x366E, CMSG_SUPPORT_TICKET_SUBMIT_BUG = 0x3645, CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT = 0x3644, CMSG_SUPPORT_TICKET_SUBMIT_SUGGESTION = 0x3646, @@ -683,7 +683,7 @@ enum OpcodeClient : uint32 CMSG_TAXI_QUERY_AVAILABLE_NODES = 0x34A5, CMSG_TAXI_REQUEST_EARLY_LANDING = 0x34A7, CMSG_TELEPORT_TO_GUID = 0x39F5, - CMSG_TELEPORT_TO_UNIT = 0x3668, + CMSG_TELEPORT_TO_UNIT = 0x3667, CMSG_TIME_ADJUSTMENT_RESPONSE = 0x3A3B, CMSG_TIME_SYNC_RESPONSE = 0x3A38, CMSG_TIME_SYNC_RESPONSE_DROPPED = 0x3A3A, @@ -698,24 +698,24 @@ enum OpcodeClient : uint32 CMSG_TRANSMOGRIFY_ITEMS = 0x3190, CMSG_TRANSMOG_APPEARANCE_SET_FAVORITE = 0x3632, CMSG_TURN_IN_PETITION = 0x3522, - CMSG_TUTORIAL = 0x36E2, + CMSG_TUTORIAL = 0x36E1, CMSG_TWITTER_CHECK_STATUS = 0x312A, CMSG_TWITTER_CONNECT = 0x3127, CMSG_TWITTER_DISCONNECT = 0x312B, CMSG_TWITTER_POST = 0x3306, - CMSG_UI_TIME_REQUEST = 0x36A0, + CMSG_UI_TIME_REQUEST = 0x369F, CMSG_UNACCEPT_TRADE = 0x315B, - CMSG_UNDELETE_CHARACTER = 0x36E4, + CMSG_UNDELETE_CHARACTER = 0x36E3, CMSG_UNLEARN_SKILL = 0x34D5, CMSG_UNLEARN_SPECIALIZATION = 0x319E, CMSG_UNLOCK_VOID_STORAGE = 0x319A, - CMSG_UPDATE_ACCOUNT_DATA = 0x369C, - CMSG_UPDATE_CLIENT_SETTINGS = 0x3669, + CMSG_UPDATE_ACCOUNT_DATA = 0x369B, + CMSG_UPDATE_CLIENT_SETTINGS = 0x3668, CMSG_UPDATE_MISSILE_TRAJECTORY = 0x3A3E, CMSG_UPDATE_RAID_TARGET = 0x3650, - CMSG_UPDATE_VAS_PURCHASE_STATES = 0x36FA, - CMSG_UPDATE_WOW_TOKEN_AUCTIONABLE_LIST = 0x36F5, - CMSG_UPDATE_WOW_TOKEN_COUNT = 0x36EB, + CMSG_UPDATE_VAS_PURCHASE_STATES = 0x36F9, + CMSG_UPDATE_WOW_TOKEN_AUCTIONABLE_LIST = 0x36F4, + CMSG_UPDATE_WOW_TOKEN_COUNT = 0x36EA, CMSG_UPGRADE_GARRISON = 0x3293, CMSG_UPGRADE_ITEM = 0x320B, CMSG_USED_FOLLOW = 0x3184, @@ -726,11 +726,11 @@ enum OpcodeClient : uint32 CMSG_VIOLENCE_LEVEL = 0x3182, CMSG_VOICE_ADD_IGNORE = 0x3656, CMSG_VOICE_DEL_IGNORE = 0x3657, - CMSG_VOICE_SESSION_ENABLE = 0x3689, + CMSG_VOICE_SESSION_ENABLE = 0x3688, CMSG_VOID_STORAGE_TRANSFER = 0x319C, CMSG_WARDEN_DATA = 0x35EA, - CMSG_WHO = 0x3686, - CMSG_WHO_IS = 0x3685, + CMSG_WHO = 0x3685, + CMSG_WHO_IS = 0x3684, CMSG_WORLD_PORT_RESPONSE = 0x35F6, CMSG_WORLD_TELEPORT = 0x3326, CMSG_WRAP_ITEM = 0x3994, diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index a3553f6b762..b7239b21a7b 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -5251,17 +5251,6 @@ SpellCastResult Spell::CheckCast(bool strict) SpellCastResult res = CanOpenLock(effect->EffectIndex, lockId, skillId, reqSkillValue, skillValue); if (res != SPELL_CAST_OK) return res; - - // chance for fail at orange mining/herb/LockPicking gathering attempt - // second check prevent fail at rechecks - if (skillId != SKILL_NONE && (!m_selfContainer || ((*m_selfContainer) != this))) - { - bool canFailAtMax = skillId != SKILL_HERBALISM && skillId != SKILL_MINING; - - // chance for failure in orange gather / lockpick (gathering skill can't fail at maxskill) - if ((canFailAtMax || skillValue < sWorld->GetConfigMaxSkillValue()) && reqSkillValue > irand(skillValue - 25, skillValue + 37)) - return SPELL_FAILED_TRY_AGAIN; - } break; } case SPELL_EFFECT_RESURRECT_PET: @@ -6948,13 +6937,16 @@ SpellCastResult Spell::CanOpenLock(uint32 effIndex, uint32 lockId, SkillType& sk skillId = SkillByLockType(LockType(lockInfo->Index[j])); - if (skillId != SKILL_NONE) + if (skillId != SKILL_NONE || lockInfo->Index[j] == LOCKTYPE_PICKLOCK) { reqSkillValue = lockInfo->Skill[j]; // castitem check: rogue using skeleton keys. the skill values should not be added in this case. - skillValue = m_CastItem || m_caster->GetTypeId()!= TYPEID_PLAYER ? - 0 : m_caster->ToPlayer()->GetSkillValue(skillId); + skillValue = 0; + if (!m_CastItem && m_caster->GetTypeId() == TYPEID_PLAYER) + skillValue = m_caster->ToPlayer()->GetSkillValue(skillId); + else if (lockInfo->Index[j] == LOCKTYPE_PICKLOCK) + skillValue = m_caster->getLevel() * 5; // skill bonus provided by casting spell (mostly item spells) // add the effect base points modifier from the spell cast (cheat lock / skeleton key etc.) -- cgit v1.2.3