diff options
author | Roc13x <roc13x@gmail.com> | 2018-04-11 20:04:43 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2018-04-11 22:04:43 +0300 |
commit | 960fdd4deddecc8a1c45f02abfe9114a76ac2feb (patch) | |
tree | 39a68aea3ea9dd44fb71073bcd5d453cf0909dc0 /src | |
parent | b57a4d7d211fe26e14b63611a0281cbe41d88029 (diff) |
Core/Player: Fix equipment set GUID handling (#21646)
Setting max GUID at server load was not taking transmog outfits into consideration.
New equip sets were always stored in _equipmentSets[0], overwriting eachother
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 9 | ||||
-rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 2 |
2 files changed, 5 insertions, 6 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index ba55f9b85f6..a0117149937 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -26591,15 +26591,14 @@ void Player::SetEquipmentSet(EquipmentSetInfo::EquipmentSetData const& newEqSet) } } - EquipmentSetInfo& eqSlot = _equipmentSets[newEqSet.Guid]; - - EquipmentSetUpdateState oldState = eqSlot.State; + uint64 setGuid = (newEqSet.Guid != 0) ? newEqSet.Guid : sObjectMgr->GenerateEquipmentSetGuid(); + EquipmentSetInfo& eqSlot = _equipmentSets[setGuid]; eqSlot.Data = newEqSet; if (eqSlot.Data.Guid == 0) { - eqSlot.Data.Guid = sObjectMgr->GenerateEquipmentSetGuid(); + eqSlot.Data.Guid = setGuid; WorldPackets::EquipmentSet::EquipmentSetID data; data.GUID = eqSlot.Data.Guid; @@ -26608,7 +26607,7 @@ void Player::SetEquipmentSet(EquipmentSetInfo::EquipmentSetData const& newEqSet) SendDirectMessage(data.Write()); } - eqSlot.State = oldState == EQUIPMENT_SET_NEW ? EQUIPMENT_SET_NEW : EQUIPMENT_SET_CHANGED; + eqSlot.State = eqSlot.State == EQUIPMENT_SET_NEW ? EQUIPMENT_SET_NEW : EQUIPMENT_SET_CHANGED; } void Player::_SaveEquipmentSets(SQLTransaction& trans) diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index e7ce10fceef..07d13c1d303 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -6728,7 +6728,7 @@ void ObjectMgr::SetHighestGuids() if (result) sArenaTeamMgr->SetNextArenaTeamId((*result)[0].GetUInt32()+1); - result = CharacterDatabase.Query("SELECT MAX(setguid) FROM character_equipmentsets"); + result = CharacterDatabase.Query("SELECT MAX(maxguid) FROM ((SELECT MAX(setguid) AS maxguid FROM character_equipmentsets) UNION (SELECT MAX(setguid) AS maxguid FROM character_transmog_outfits)) allsets"); if (result) _equipmentSetGuid = (*result)[0].GetUInt64()+1; |