diff options
| author | Shauren <shauren.trinity@gmail.com> | 2022-12-04 15:13:20 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2022-12-04 15:13:20 +0100 |
| commit | e98e1283ea0034baf6be9aa2ffb386eb5582801b (patch) | |
| tree | b1dd854d88e6e049d26b208bb259cdc7d31f29f8 /src/server/game/Handlers | |
| parent | de7c03c8385780f05530c2b3cf952a712d5f8f00 (diff) | |
Core: Updated to 10.0.2
Diffstat (limited to 'src/server/game/Handlers')
| -rw-r--r-- | src/server/game/Handlers/AuthHandler.cpp | 1 | ||||
| -rw-r--r-- | src/server/game/Handlers/AzeriteHandler.cpp | 7 | ||||
| -rw-r--r-- | src/server/game/Handlers/BankHandler.cpp | 20 | ||||
| -rw-r--r-- | src/server/game/Handlers/BlackMarketHandler.cpp | 11 | ||||
| -rw-r--r-- | src/server/game/Handlers/CharacterHandler.cpp | 96 | ||||
| -rw-r--r-- | src/server/game/Handlers/ChatHandler.cpp | 6 | ||||
| -rw-r--r-- | src/server/game/Handlers/ItemHandler.cpp | 4 | ||||
| -rw-r--r-- | src/server/game/Handlers/NPCHandler.cpp | 37 | ||||
| -rw-r--r-- | src/server/game/Handlers/TransmogrificationHandler.cpp | 7 | ||||
| -rw-r--r-- | src/server/game/Handlers/VoidStorageHandler.cpp | 2 |
10 files changed, 134 insertions, 57 deletions
diff --git a/src/server/game/Handlers/AuthHandler.cpp b/src/server/game/Handlers/AuthHandler.cpp index 6afd1b5d476..7be557d368b 100644 --- a/src/server/game/Handlers/AuthHandler.cpp +++ b/src/server/game/Handlers/AuthHandler.cpp @@ -93,6 +93,7 @@ void WorldSession::SendSetTimeZoneInformation() WorldPackets::System::SetTimeZoneInformation packet; packet.ServerTimeTZ = "Europe/Paris"; packet.GameTimeTZ = "Europe/Paris"; + packet.ServerRegionalTZ = "Europe/Paris"; SendPacket(packet.Write()); } diff --git a/src/server/game/Handlers/AzeriteHandler.cpp b/src/server/game/Handlers/AzeriteHandler.cpp index 376ad24bd62..a6d951b1a65 100644 --- a/src/server/game/Handlers/AzeriteHandler.cpp +++ b/src/server/game/Handlers/AzeriteHandler.cpp @@ -20,6 +20,7 @@ #include "AzeriteItem.h" #include "AzeritePackets.h" #include "DB2Stores.h" +#include "NPCPackets.h" #include "Player.h" #include "SpellHistory.h" @@ -236,5 +237,9 @@ void WorldSession::HandleAzeriteEmpoweredItemSelectPower(WorldPackets::Azerite:: void WorldSession::SendAzeriteRespecNPC(ObjectGuid npc) { - SendPacket(WorldPackets::Azerite::AzeriteRespecNPC(npc).Write()); + WorldPackets::NPC::NPCInteractionOpenResult npcInteraction; + npcInteraction.Npc = npc; + npcInteraction.InteractionType = PlayerInteractionType::AzeriteRespec; + npcInteraction.Success = true; + SendPacket(npcInteraction.Write()); } diff --git a/src/server/game/Handlers/BankHandler.cpp b/src/server/game/Handlers/BankHandler.cpp index 84f13afff83..4c300b01e35 100644 --- a/src/server/game/Handlers/BankHandler.cpp +++ b/src/server/game/Handlers/BankHandler.cpp @@ -197,13 +197,13 @@ void WorldSession::HandleReagentBankDepositOpcode(WorldPackets::Bank::ReagentBan if (msg != EQUIP_ERR_OK) { if (msg != EQUIP_ERR_REAGENT_BANK_FULL || !anyDeposited) - _player->SendEquipError(msg, item, NULL); + _player->SendEquipError(msg, item, nullptr); break; } if (dest.size() == 1 && dest[0].pos == item->GetPos()) { - _player->SendEquipError(EQUIP_ERR_CANT_SWAP, item, NULL); + _player->SendEquipError(EQUIP_ERR_CANT_SWAP, item, nullptr); continue; } @@ -236,13 +236,13 @@ void WorldSession::HandleAutoBankReagentOpcode(WorldPackets::Bank::AutoBankReage InventoryResult msg = _player->CanBankItem(NULL_BAG, NULL_SLOT, dest, item, false, true, true); if (msg != EQUIP_ERR_OK) { - _player->SendEquipError(msg, item, NULL); + _player->SendEquipError(msg, item, nullptr); return; } if (dest.size() == 1 && dest[0].pos == item->GetPos()) { - _player->SendEquipError(EQUIP_ERR_CANT_SWAP, item, NULL); + _player->SendEquipError(EQUIP_ERR_CANT_SWAP, item, nullptr); return; } @@ -274,7 +274,7 @@ void WorldSession::HandleAutoStoreBankReagentOpcode(WorldPackets::Bank::AutoStor InventoryResult msg = _player->CanStoreItem(NULL_BAG, NULL_SLOT, dest, pItem, false); if (msg != EQUIP_ERR_OK) { - _player->SendEquipError(msg, pItem, NULL); + _player->SendEquipError(msg, pItem, nullptr); return; } @@ -287,7 +287,7 @@ void WorldSession::HandleAutoStoreBankReagentOpcode(WorldPackets::Bank::AutoStor InventoryResult msg = _player->CanBankItem(NULL_BAG, NULL_SLOT, dest, pItem, false, true, true); if (msg != EQUIP_ERR_OK) { - _player->SendEquipError(msg, pItem, NULL); + _player->SendEquipError(msg, pItem, nullptr); return; } @@ -299,7 +299,9 @@ void WorldSession::HandleAutoStoreBankReagentOpcode(WorldPackets::Bank::AutoStor void WorldSession::SendShowBank(ObjectGuid guid) { m_currentBankerGUID = guid; - WorldPackets::NPC::ShowBank packet; - packet.Guid = guid; - SendPacket(packet.Write()); + WorldPackets::NPC::NPCInteractionOpenResult npcInteraction; + npcInteraction.Npc = guid; + npcInteraction.InteractionType = PlayerInteractionType::Banker; + npcInteraction.Success = true; + SendPacket(npcInteraction.Write()); } diff --git a/src/server/game/Handlers/BlackMarketHandler.cpp b/src/server/game/Handlers/BlackMarketHandler.cpp index ea3052a7953..88353f9c735 100644 --- a/src/server/game/Handlers/BlackMarketHandler.cpp +++ b/src/server/game/Handlers/BlackMarketHandler.cpp @@ -21,8 +21,8 @@ #include "DatabaseEnv.h" #include "Item.h" #include "Log.h" +#include "NPCPackets.h" #include "Player.h" -#include "WorldPacket.h" void WorldSession::HandleBlackMarketOpen(WorldPackets::BlackMarket::BlackMarketOpen& blackMarketOpen) { @@ -42,10 +42,11 @@ void WorldSession::HandleBlackMarketOpen(WorldPackets::BlackMarket::BlackMarketO void WorldSession::SendBlackMarketOpenResult(ObjectGuid guid, Creature* /*auctioneer*/) { - WorldPackets::BlackMarket::BlackMarketOpenResult packet; - packet.Guid = guid; - packet.Enable = sBlackMarketMgr->IsEnabled(); - SendPacket(packet.Write()); + WorldPackets::NPC::NPCInteractionOpenResult npcInteraction; + npcInteraction.Npc = guid; + npcInteraction.InteractionType = PlayerInteractionType::BlackMarketAuctioneer; + npcInteraction.Success = sBlackMarketMgr->IsEnabled(); + SendPacket(npcInteraction.Write()); } void WorldSession::HandleBlackMarketRequestItems(WorldPackets::BlackMarket::BlackMarketRequestItems& blackMarketRequestItems) diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index d02d01f512b..98adc84d6fe 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -515,6 +515,15 @@ bool WorldSession::MeetsChrCustomizationReq(ChrCustomizationReqEntry const* req, if (req->ItemModifiedAppearanceID && !GetCollectionMgr()->HasItemAppearance(req->ItemModifiedAppearanceID).first) return false; + if (req->QuestID) + { + if (!_player) + return false; + + if (!_player->IsQuestRewarded(req->QuestID)) + return false; + } + if (checkRequiredDependentChoices) { if (std::unordered_map<uint32, std::vector<uint32>> const* requiredChoices = sDB2Manager.GetRequiredCustomizationChoices(req->ID)) @@ -667,20 +676,32 @@ void WorldSession::HandleCharCreateOpcode(WorldPackets::Character::CreateCharact //} // prevent character creating Expansion class without Expansion account - ClassAvailability const* classExpansionRequirement = sObjectMgr->GetClassExpansionRequirement(charCreate.CreateInfo->Race, charCreate.CreateInfo->Class); - if (!classExpansionRequirement) + if (ClassAvailability const* raceClassExpansionRequirement = sObjectMgr->GetClassExpansionRequirement(charCreate.CreateInfo->Race, charCreate.CreateInfo->Class)) { - TC_LOG_ERROR("entities.player.cheat", "Expansion %u account:[%d] tried to Create character for race/class combination that is missing requirements in db (%u/%u)", - GetAccountExpansion(), GetAccountId(), uint32(charCreate.CreateInfo->Race), uint32(charCreate.CreateInfo->Class)); - SendCharCreate(CHAR_CREATE_EXPANSION_CLASS); - return; + if (raceClassExpansionRequirement->ActiveExpansionLevel > GetExpansion() || raceClassExpansionRequirement->AccountExpansionLevel > GetAccountExpansion()) + { + TC_LOG_ERROR("entities.player.cheat", "Account:[%d] tried to create character with race/class %u/%u without required expansion (had %u/%u, required %u/%u)", + GetAccountId(), uint32(charCreate.CreateInfo->Race), uint32(charCreate.CreateInfo->Class), GetExpansion(), GetAccountExpansion(), + raceClassExpansionRequirement->ActiveExpansionLevel, raceClassExpansionRequirement->AccountExpansionLevel); + SendCharCreate(CHAR_CREATE_EXPANSION_CLASS); + return; + } } - - if (classExpansionRequirement->ActiveExpansionLevel > GetExpansion() || classExpansionRequirement->AccountExpansionLevel > GetAccountExpansion()) + else if (ClassAvailability const* classExpansionRequirement = sObjectMgr->GetClassExpansionRequirementFallback(charCreate.CreateInfo->Class)) + { + if (classExpansionRequirement->MinActiveExpansionLevel > GetExpansion() || classExpansionRequirement->AccountExpansionLevel > GetAccountExpansion()) + { + TC_LOG_ERROR("entities.player.cheat", "Account:[%d] tried to create character with race/class %u/%u without required expansion (had %u/%u, required %u/%u)", + GetAccountId(), uint32(charCreate.CreateInfo->Race), uint32(charCreate.CreateInfo->Class), GetExpansion(), GetAccountExpansion(), + classExpansionRequirement->ActiveExpansionLevel, classExpansionRequirement->AccountExpansionLevel); + SendCharCreate(CHAR_CREATE_EXPANSION_CLASS); + return; + } + } + else { - TC_LOG_ERROR("entities.player.cheat", "Account:[%d] tried to create character with race/class %u/%u without required expansion (had %u/%u, required %u/%u)", - GetAccountId(), uint32(charCreate.CreateInfo->Race), uint32(charCreate.CreateInfo->Class), GetExpansion(), GetAccountExpansion(), - classExpansionRequirement->ActiveExpansionLevel, classExpansionRequirement->AccountExpansionLevel); + TC_LOG_ERROR("entities.player.cheat", "Expansion %u account:[%d] tried to Create character for race/class combination that is missing requirements in db (%u/%u)", + GetAccountExpansion(), GetAccountId(), uint32(charCreate.CreateInfo->Race), uint32(charCreate.CreateInfo->Class)); SendCharCreate(CHAR_CREATE_EXPANSION_CLASS); return; } @@ -792,9 +813,14 @@ void WorldSession::HandleCharCreateOpcode(WorldPackets::Character::CreateCharact bool haveSameRace = false; uint32 demonHunterReqLevel = sWorld->getIntConfig(CONFIG_CHARACTER_CREATING_MIN_LEVEL_FOR_DEMON_HUNTER); bool hasDemonHunterReqLevel = (demonHunterReqLevel == 0); + uint32 evokerReqLevel = sWorld->getIntConfig(CONFIG_CHARACTER_CREATING_MIN_LEVEL_FOR_EVOKER); + bool hasEvokerReqLevel = (evokerReqLevel == 0); bool allowTwoSideAccounts = !sWorld->IsPvPRealm() || HasPermission(rbac::RBAC_PERM_TWO_SIDE_CHARACTER_CREATION); uint32 skipCinematics = sWorld->getIntConfig(CONFIG_SKIP_CINEMATICS); - bool checkDemonHunterReqs = createInfo->Class == CLASS_DEMON_HUNTER && !HasPermission(rbac::RBAC_PERM_SKIP_CHECK_CHARACTER_CREATION_DEMON_HUNTER); + bool checkClassLevelReqs = (createInfo->Class == CLASS_DEMON_HUNTER || createInfo->Class == CLASS_EVOKER) + && !HasPermission(rbac::RBAC_PERM_SKIP_CHECK_CHARACTER_CREATION_DEMON_HUNTER); + int32 evokerLimit = sWorld->getIntConfig(CONFIG_CHARACTER_CREATING_EVOKERS_PER_REALM); + bool hasEvokerLimit = evokerLimit != 0; if (result) { @@ -802,8 +828,9 @@ void WorldSession::HandleCharCreateOpcode(WorldPackets::Character::CreateCharact Field* field = result->Fetch(); uint8 accRace = field[1].GetUInt8(); + uint8 accClass = field[2].GetUInt8(); - if (checkDemonHunterReqs) + if (checkClassLevelReqs) { if (!hasDemonHunterReqLevel) { @@ -811,8 +838,17 @@ void WorldSession::HandleCharCreateOpcode(WorldPackets::Character::CreateCharact if (accLevel >= demonHunterReqLevel) hasDemonHunterReqLevel = true; } + if (!hasEvokerReqLevel) + { + uint8 accLevel = field[0].GetUInt8(); + if (accLevel >= evokerReqLevel) + hasEvokerReqLevel = true; + } } + if (accClass == CLASS_EVOKER) + --evokerLimit; + // need to check team only for first character /// @todo what to if account already has characters of both races? if (!allowTwoSideAccounts) @@ -830,18 +866,19 @@ void WorldSession::HandleCharCreateOpcode(WorldPackets::Character::CreateCharact // search same race for cinematic or same class if need /// @todo check if cinematic already shown? (already logged in?; cinematic field) - while ((skipCinematics == 1 && !haveSameRace) || createInfo->Class == CLASS_DEMON_HUNTER) + while ((skipCinematics == 1 && !haveSameRace) || createInfo->Class == CLASS_DEMON_HUNTER || createInfo->Class == CLASS_EVOKER) { if (!result->NextRow()) break; field = result->Fetch(); accRace = field[1].GetUInt8(); + accClass = field[2].GetUInt8(); if (!haveSameRace) haveSameRace = createInfo->Race == accRace; - if (checkDemonHunterReqs) + if (checkClassLevelReqs) { if (!hasDemonHunterReqLevel) { @@ -849,13 +886,36 @@ void WorldSession::HandleCharCreateOpcode(WorldPackets::Character::CreateCharact if (accLevel >= demonHunterReqLevel) hasDemonHunterReqLevel = true; } + if (!hasEvokerReqLevel) + { + uint8 accLevel = field[0].GetUInt8(); + if (accLevel >= evokerReqLevel) + hasEvokerReqLevel = true; + } } + + if (accClass == CLASS_EVOKER) + --evokerLimit; + } + } + + if (checkClassLevelReqs) + { + if (!hasDemonHunterReqLevel) + { + SendCharCreate(CHAR_CREATE_NEW_PLAYER); + return; + } + if (!hasEvokerReqLevel) + { + SendCharCreate(CHAR_CREATE_DRACTHYR_LEVEL_REQUIREMENT); + return; } } - if (checkDemonHunterReqs && !hasDemonHunterReqLevel) + if (createInfo->Class == CLASS_EVOKER && hasEvokerLimit && evokerLimit < 1) { - SendCharCreate(CHAR_CREATE_NEW_PLAYER); + SendCharCreate(CHAR_CREATE_DRACTHYR_DUPLICATE); return; } @@ -922,7 +982,7 @@ void WorldSession::HandleCharCreateOpcode(WorldPackets::Character::CreateCharact CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_CREATE_INFO); stmt->setUInt32(0, GetAccountId()); - stmt->setUInt32(1, (skipCinematics == 1 || createInfo->Class == CLASS_DEMON_HUNTER) ? 1200 : 1); // 200 (max chars per realm) + 1000 (max deleted chars per realm) + stmt->setUInt32(1, (skipCinematics == 1 || createInfo->Class == CLASS_DEMON_HUNTER || createInfo->Class == CLASS_EVOKER) ? 1200 : 1); // 200 (max chars per realm) + 1000 (max deleted chars per realm) queryCallback.WithPreparedCallback(std::move(finalizeCharacterCreation)).SetNextQuery(CharacterDatabase.AsyncQuery(stmt)); })); } diff --git a/src/server/game/Handlers/ChatHandler.cpp b/src/server/game/Handlers/ChatHandler.cpp index d5c92e8cf63..b6b89f9b0b4 100644 --- a/src/server/game/Handlers/ChatHandler.cpp +++ b/src/server/game/Handlers/ChatHandler.cpp @@ -217,7 +217,7 @@ void WorldSession::HandleChatMessage(ChatMsg type, Language lang, std::string ms return; } - if (msg.size() > 255) + if (msg.size() > 511) return; if (msg.empty()) @@ -564,7 +564,7 @@ void WorldSession::HandleChatMessageAFKOpcode(WorldPackets::Chat::ChatMessageAFK if (sender->IsInCombat()) return; - if (chatMessageAFK.Text.length() > 255) + if (chatMessageAFK.Text.length() > 511) return; // do message validity checks @@ -610,7 +610,7 @@ void WorldSession::HandleChatMessageDNDOpcode(WorldPackets::Chat::ChatMessageDND if (sender->IsInCombat()) return; - if (chatMessageDND.Text.length() > 255) + if (chatMessageDND.Text.length() > 511) return; // do message validity checks diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp index 554dc5038ae..2f102c2304c 100644 --- a/src/server/game/Handlers/ItemHandler.cpp +++ b/src/server/game/Handlers/ItemHandler.cpp @@ -955,8 +955,8 @@ void WorldSession::HandleSocketGems(WorldPackets::Item::SocketGems& socketGems) gems[i] = gem; gemData[i].ItemId = gem->GetEntry(); gemData[i].Context = gem->m_itemData->Context; - for (std::size_t b = 0; b < gem->m_itemData->BonusListIDs->size() && b < 16; ++b) - gemData[i].BonusListIDs[b] = (*gem->m_itemData->BonusListIDs)[b]; + for (std::size_t b = 0; b < gem->GetBonusListIDs().size() && b < 16; ++b) + gemData[i].BonusListIDs[b] = gem->GetBonusListIDs()[b]; gemProperties[i] = sGemPropertiesStore.LookupEntry(gem->GetTemplate()->GetGemProperties()); } diff --git a/src/server/game/Handlers/NPCHandler.cpp b/src/server/game/Handlers/NPCHandler.cpp index d19a83da7a7..644ae8e9881 100644 --- a/src/server/game/Handlers/NPCHandler.cpp +++ b/src/server/game/Handlers/NPCHandler.cpp @@ -29,7 +29,6 @@ #include "Item.h" #include "ItemPackets.h" #include "Log.h" -#include "MailPackets.h" #include "Map.h" #include "NPCPackets.h" #include "ObjectMgr.h" @@ -39,7 +38,6 @@ #include "ReputationMgr.h" #include "SpellInfo.h" #include "Trainer.h" -#include "World.h" #include "WorldPacket.h" enum class StableResult : uint8 @@ -71,16 +69,20 @@ void WorldSession::HandleTabardVendorActivateOpcode(WorldPackets::NPC::Hello& pa void WorldSession::SendTabardVendorActivate(ObjectGuid guid) { - WorldPackets::NPC::PlayerTabardVendorActivate packet; - packet.Vendor = guid; - SendPacket(packet.Write()); + WorldPackets::NPC::NPCInteractionOpenResult npcInteraction; + npcInteraction.Npc = guid; + npcInteraction.InteractionType = PlayerInteractionType::TabardVendor; + npcInteraction.Success = true; + SendPacket(npcInteraction.Write()); } void WorldSession::SendShowMailBox(ObjectGuid guid) { - WorldPackets::Mail::ShowMailbox packet; - packet.PostmasterGUID = guid; - SendPacket(packet.Write()); + WorldPackets::NPC::NPCInteractionOpenResult npcInteraction; + npcInteraction.Npc = guid; + npcInteraction.InteractionType = PlayerInteractionType::MailInfo; + npcInteraction.Success = true; + SendPacket(npcInteraction.Write()); } void WorldSession::HandleTrainerListOpcode(WorldPackets::NPC::Hello& packet) @@ -188,7 +190,8 @@ void WorldSession::HandleGossipHelloOpcode(WorldPackets::NPC::Hello& packet) void WorldSession::HandleGossipSelectOptionOpcode(WorldPackets::NPC::GossipSelectOption& packet) { - if (!_player->PlayerTalkClass->GetGossipMenu().GetItem(packet.GossipIndex)) + GossipMenuItem const* gossipMenuItem = _player->PlayerTalkClass->GetGossipMenu().GetItem(packet.GossipOptionID); + if (!gossipMenuItem) return; // Prevent cheating on C++ scripted menus @@ -242,26 +245,26 @@ void WorldSession::HandleGossipSelectOptionOpcode(WorldPackets::NPC::GossipSelec { if (unit) { - if (!unit->AI()->OnGossipSelectCode(_player, packet.GossipID, packet.GossipIndex, packet.PromotionCode.c_str())) - _player->OnGossipSelect(unit, packet.GossipIndex, packet.GossipID); + if (!unit->AI()->OnGossipSelectCode(_player, packet.GossipID, gossipMenuItem->OrderIndex, packet.PromotionCode.c_str())) + _player->OnGossipSelect(unit, packet.GossipOptionID, packet.GossipID); } else { - if (!go->AI()->OnGossipSelectCode(_player, packet.GossipID, packet.GossipIndex, packet.PromotionCode.c_str())) - _player->OnGossipSelect(go, packet.GossipIndex, packet.GossipID); + if (!go->AI()->OnGossipSelectCode(_player, packet.GossipID, gossipMenuItem->OrderIndex, packet.PromotionCode.c_str())) + _player->OnGossipSelect(go, packet.GossipOptionID, packet.GossipID); } } else { if (unit) { - if (!unit->AI()->OnGossipSelect(_player, packet.GossipID, packet.GossipIndex)) - _player->OnGossipSelect(unit, packet.GossipIndex, packet.GossipID); + if (!unit->AI()->OnGossipSelect(_player, packet.GossipID, gossipMenuItem->OrderIndex)) + _player->OnGossipSelect(unit, packet.GossipOptionID, packet.GossipID); } else { - if (!go->AI()->OnGossipSelect(_player, packet.GossipID, packet.GossipIndex)) - _player->OnGossipSelect(go, packet.GossipIndex, packet.GossipID); + if (!go->AI()->OnGossipSelect(_player, packet.GossipID, gossipMenuItem->OrderIndex)) + _player->OnGossipSelect(go, packet.GossipOptionID, packet.GossipID); } } } diff --git a/src/server/game/Handlers/TransmogrificationHandler.cpp b/src/server/game/Handlers/TransmogrificationHandler.cpp index 855fd3bebb3..21606cc4bde 100644 --- a/src/server/game/Handlers/TransmogrificationHandler.cpp +++ b/src/server/game/Handlers/TransmogrificationHandler.cpp @@ -20,6 +20,7 @@ #include "DB2Stores.h" #include "Item.h" #include "Log.h" +#include "NPCPackets.h" #include "ObjectMgr.h" #include "Player.h" #include "TransmogrificationPackets.h" @@ -331,5 +332,9 @@ void WorldSession::HandleTransmogrifyItems(WorldPackets::Transmogrification::Tra void WorldSession::SendOpenTransmogrifier(ObjectGuid const& guid) { - SendPacket(WorldPackets::Transmogrification::TransmogrifyNPC(guid).Write()); + WorldPackets::NPC::NPCInteractionOpenResult npcInteraction; + npcInteraction.Npc = guid; + npcInteraction.InteractionType = PlayerInteractionType::Transmogrifier; + npcInteraction.Success = true; + SendPacket(npcInteraction.Write()); } diff --git a/src/server/game/Handlers/VoidStorageHandler.cpp b/src/server/game/Handlers/VoidStorageHandler.cpp index a586e64672c..cf9eb5b307a 100644 --- a/src/server/game/Handlers/VoidStorageHandler.cpp +++ b/src/server/game/Handlers/VoidStorageHandler.cpp @@ -155,7 +155,7 @@ void WorldSession::HandleVoidStorageTransfer(WorldPackets::VoidStorage::VoidStor VoidStorageItem itemVS(sObjectMgr->GenerateVoidStorageItemId(), item->GetEntry(), item->GetCreator(), item->GetItemRandomBonusListId(), item->GetModifier(ITEM_MODIFIER_TIMEWALKER_LEVEL), item->GetModifier(ITEM_MODIFIER_ARTIFACT_KNOWLEDGE_LEVEL), - item->GetContext(), item->m_itemData->BonusListIDs); + item->GetContext(), item->GetBonusListIDs()); WorldPackets::VoidStorage::VoidItem voidItem; voidItem.Guid = ObjectGuid::Create<HighGuid::Item>(itemVS.ItemId); |
