aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2018-04-11 21:07:39 +0200
committerShauren <shauren.trinity@gmail.com>2018-04-11 21:07:39 +0200
commitd64c3393dbeb159d91b6daae979f3e708c5f6169 (patch)
treedc16ec8ff72df5290586b555110e6bffc825bf4b /src
parent960fdd4deddecc8a1c45f02abfe9114a76ac2feb (diff)
Core/Items: Fixed saving and equipping sets with empty slots
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Handlers/CharacterHandler.cpp24
1 files changed, 15 insertions, 9 deletions
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp
index 61bf3850972..673ced13f10 100644
--- a/src/server/game/Handlers/CharacterHandler.cpp
+++ b/src/server/game/Handlers/CharacterHandler.cpp
@@ -1625,16 +1625,20 @@ void WorldSession::HandleEquipmentSetSave(WorldPackets::EquipmentSet::SaveEquipm
saveEquipmentSet.Set.Appearances[i] = 0;
ObjectGuid const& itemGuid = saveEquipmentSet.Set.Pieces[i];
+ if (!itemGuid.IsEmpty())
+ {
+ Item* item = _player->GetItemByPos(INVENTORY_SLOT_BAG_0, i);
- Item* item = _player->GetItemByPos(INVENTORY_SLOT_BAG_0, i);
-
- /// cheating check 1 (item equipped but sent empty guid)
- if (!item && !itemGuid.IsEmpty())
- return;
+ /// cheating check 1 (item equipped but sent empty guid)
+ if (!item)
+ return;
- /// cheating check 2 (sent guid does not match equipped item)
- if (item && item->GetGUID() != itemGuid)
- return;
+ /// cheating check 2 (sent guid does not match equipped item)
+ if (item->GetGUID() != itemGuid)
+ return;
+ }
+ else
+ saveEquipmentSet.Set.IgnoreMask |= 1 << i;
}
else
{
@@ -1649,6 +1653,8 @@ void WorldSession::HandleEquipmentSetSave(WorldPackets::EquipmentSet::SaveEquipm
if (!hasAppearance)
return;
}
+ else
+ saveEquipmentSet.Set.IgnoreMask |= 1 << i;
}
}
else
@@ -1703,7 +1709,7 @@ void WorldSession::HandleDeleteEquipmentSet(WorldPackets::EquipmentSet::DeleteEq
void WorldSession::HandleUseEquipmentSet(WorldPackets::EquipmentSet::UseEquipmentSet& useEquipmentSet)
{
ObjectGuid ignoredItemGuid;
- ignoredItemGuid.SetRawValue(0, 1);
+ ignoredItemGuid.SetRawValue(0x0C00040000000000, 0xFFFFFFFFFFFFFFFF);
for (uint8 i = 0; i < EQUIPMENT_SLOT_END; ++i)
{