aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2015-08-12 23:05:36 +0200
committerShauren <shauren.trinity@gmail.com>2015-08-12 23:05:36 +0200
commit81abfe93bb96e5a769dc855f06fdc7578b352b39 (patch)
tree66e5231c62ec9dfc180cceb80a714632afaf93a3 /src/server/game/Server
parentf4724badb65a6471df37ef249929548861f86362 (diff)
Core/Void Storage: Implemented saving item upgrade and bonuses for items deposited in void storage
Diffstat (limited to 'src/server/game/Server')
-rw-r--r--src/server/game/Server/Packets/ItemPackets.cpp24
1 files changed, 17 insertions, 7 deletions
diff --git a/src/server/game/Server/Packets/ItemPackets.cpp b/src/server/game/Server/Packets/ItemPackets.cpp
index 26dda8e646e..7d54ebe3ec6 100644
--- a/src/server/game/Server/Packets/ItemPackets.cpp
+++ b/src/server/game/Server/Packets/ItemPackets.cpp
@@ -185,14 +185,13 @@ void WorldPackets::Item::ItemInstance::Initialize(::Item const* item)
ItemBonus->Context = item->GetUInt32Value(ITEM_FIELD_CONTEXT);
}
- uint32 mask = item->GetUInt32Value(ITEM_FIELD_MODIFIERS_MASK);
- if (mask != 0)
- Modifications = WorldPackets::CompactArray<int32>();
-
- for (size_t i = 0; mask != 0; mask >>= 1, ++i)
+ if (uint32 mask = item->GetUInt32Value(ITEM_FIELD_MODIFIERS_MASK))
{
- if ((mask & 1) != 0)
- Modifications->Insert(i, item->GetModifier(ItemModifier(i)));
+ Modifications = boost::in_place();
+
+ for (size_t i = 0; mask != 0; mask >>= 1, ++i)
+ if ((mask & 1) != 0)
+ Modifications->Insert(i, item->GetModifier(ItemModifier(i)));
}
}
@@ -216,6 +215,17 @@ void WorldPackets::Item::ItemInstance::Initialize(::VoidStorageItem const* voidI
ItemID = voidItem->ItemEntry;
RandomPropertiesID = voidItem->ItemRandomPropertyId;
RandomPropertiesSeed = voidItem->ItemSuffixFactor;
+ if (voidItem->ItemUpgradeId)
+ {
+ Modifications = boost::in_place();
+ Modifications->Insert(ITEM_MODIFIER_UPGRADE_ID, voidItem->ItemUpgradeId);
+ }
+
+ if (!voidItem->BonusListIDs.empty())
+ {
+ ItemBonus = boost::in_place();
+ ItemBonus->BonusListIDs = voidItem->BonusListIDs;
+ }
}
WorldPacket const* WorldPackets::Item::InventoryChangeFailure::Write()