diff options
author | Shauren <shauren.trinity@gmail.com> | 2018-04-11 21:07:39 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2018-04-11 21:07:39 +0200 |
commit | d64c3393dbeb159d91b6daae979f3e708c5f6169 (patch) | |
tree | dc16ec8ff72df5290586b555110e6bffc825bf4b /src | |
parent | 960fdd4deddecc8a1c45f02abfe9114a76ac2feb (diff) |
Core/Items: Fixed saving and equipping sets with empty slots
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Handlers/CharacterHandler.cpp | 24 |
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) { |