aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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)
{