aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRoc13x <roc13x@gmail.com>2024-06-27 14:18:49 +0300
committerShauren <shauren.trinity@gmail.com>2024-06-27 17:43:20 +0200
commit6c15d7f7502d50520b502067c6401a4bf11075a2 (patch)
treebe4e0abcee42b947d9d5603ee5d2fbb6ba99016a /src
parent0327f16d110baa4479c73b4fcece6c99b2f89a8b (diff)
Core/Player: Fix equipment sets not saving correctly
New sets were always saved to _equipmentSets[0], overwriting eachother (cherry picked from commit 3a84661114eabf02b3061ebd378ca9df9f481140)
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Player/Player.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 0849cd1952c..8428886ee34 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -25669,14 +25669,14 @@ void Player::SetEquipmentSet(EquipmentSetInfo::EquipmentSetData const& eqSet)
}
}
- EquipmentSetInfo& eqSlot = _equipmentSets[eqSet.Guid];
+ uint64 setGuid = (eqSet.Guid != 0) ? eqSet.Guid : sObjectMgr->GenerateEquipmentSetGuid();
- EquipmentSetUpdateState oldState = eqSlot.State;
+ EquipmentSetInfo& eqSlot = _equipmentSets[setGuid];
eqSlot.Data = eqSet;
if (eqSet.Guid == 0)
{
- eqSlot.Data.Guid = sObjectMgr->GenerateEquipmentSetGuid();
+ eqSlot.Data.Guid = setGuid;
WorldPacket data(SMSG_EQUIPMENT_SET_SAVED, 4 + 1);
data << uint32(eqSlot.Data.SetID);
@@ -25684,7 +25684,7 @@ void Player::SetEquipmentSet(EquipmentSetInfo::EquipmentSetData const& eqSet)
SendDirectMessage(&data);
}
- 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(CharacterDatabaseTransaction trans)