aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2025-05-21 18:45:37 +0200
committerShauren <shauren.trinity@gmail.com>2025-05-21 18:45:37 +0200
commit357a6b63975cf56e6bdca18adfc211e88f97410d (patch)
tree9c76ba4fff1de25a8963ba562d8645534bfdb400 /src/server/game/Entities
parentfe206ee1c8d280ede34b065f63fdb0cfe76cc7ee (diff)
Core/PacketIO: Migration to PacketUtilities bit/string operations part 2
Diffstat (limited to 'src/server/game/Entities')
-rw-r--r--src/server/game/Entities/Player/EquipmentSet.h9
-rw-r--r--src/server/game/Entities/Player/Player.cpp8
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp10
3 files changed, 19 insertions, 8 deletions
diff --git a/src/server/game/Entities/Player/EquipmentSet.h b/src/server/game/Entities/Player/EquipmentSet.h
index 8ffcd296eb4..00ec331e30d 100644
--- a/src/server/game/Entities/Player/EquipmentSet.h
+++ b/src/server/game/Entities/Player/EquipmentSet.h
@@ -15,11 +15,12 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef EquipmentSet_h__
-#define EquipmentSet_h__
+#ifndef TRINITYCORE_EQUIPMENT_SET_H
+#define TRINITYCORE_EQUIPMENT_SET_H
#include "Define.h"
#include "ObjectGuid.h"
+#include "Optional.h"
#include <array>
#include <map>
@@ -48,7 +49,7 @@ struct EquipmentSetInfo
uint64 Guid = 0; ///< Set Identifier
uint32 SetID = 0; ///< Index
uint32 IgnoreMask = 0; ///< Mask of EquipmentSlot
- int32 AssignedSpecIndex = -1; ///< Index of character specialization that this set is automatically equipped for
+ Optional<int32> AssignedSpecIndex; ///< Index of character specialization that this set is automatically equipped for
std::string SetName;
std::string SetIcon;
std::array<ObjectGuid, EQUIPMENT_SET_SLOTS> Pieces = {};
@@ -68,4 +69,4 @@ struct EquipmentSetInfo
typedef std::map<uint64, EquipmentSetInfo> EquipmentSetContainer;
-#endif // EquipmentSet_h__
+#endif // TRINITYCORE_EQUIPMENT_SET_H
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 69319ef113a..b4174fe0a91 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -17634,7 +17634,9 @@ void Player::_LoadEquipmentSets(PreparedQueryResult result)
eqSet.Data.SetName = fields[2].GetString();
eqSet.Data.SetIcon = fields[3].GetString();
eqSet.Data.IgnoreMask = fields[4].GetUInt32();
- eqSet.Data.AssignedSpecIndex = fields[5].GetInt32();
+ if (int32 assignedSpecIndex = fields[5].GetInt32(); assignedSpecIndex != -1)
+ eqSet.Data.AssignedSpecIndex = assignedSpecIndex;
+
eqSet.State = EQUIPMENT_SET_UNCHANGED;
for (uint32 i = EQUIPMENT_SLOT_START; i < EQUIPMENT_SLOT_END; ++i)
@@ -27856,7 +27858,7 @@ void Player::_SaveEquipmentSets(CharacterDatabaseTransaction trans)
stmt->setString(j++, eqSet.Data.SetName);
stmt->setString(j++, eqSet.Data.SetIcon);
stmt->setUInt32(j++, eqSet.Data.IgnoreMask);
- stmt->setInt32(j++, eqSet.Data.AssignedSpecIndex);
+ stmt->setInt32(j++, eqSet.Data.AssignedSpecIndex.value_or(-1));
for (uint8 i = EQUIPMENT_SLOT_START; i < EQUIPMENT_SLOT_END; ++i)
stmt->setUInt64(j++, eqSet.Data.Pieces[i].GetCounter());
stmt->setUInt64(j++, GetGUID().GetCounter());
@@ -27893,7 +27895,7 @@ void Player::_SaveEquipmentSets(CharacterDatabaseTransaction trans)
stmt->setString(j++, eqSet.Data.SetName);
stmt->setString(j++, eqSet.Data.SetIcon);
stmt->setUInt32(j++, eqSet.Data.IgnoreMask);
- stmt->setInt32(j++, eqSet.Data.AssignedSpecIndex);
+ stmt->setInt32(j++, eqSet.Data.AssignedSpecIndex.value_or(-1));
for (uint8 i = EQUIPMENT_SLOT_START; i < EQUIPMENT_SLOT_END; ++i)
stmt->setUInt64(j++, eqSet.Data.Pieces[i].GetCounter());
}
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 2dea5dda211..80ea5a2d1fe 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -2525,7 +2525,15 @@ void Unit::SendMeleeAttackStart(Unit* victim)
void Unit::SendMeleeAttackStop(Unit* victim)
{
- SendMessageToSet(WorldPackets::Combat::SAttackStop(this, victim).Write(), true);
+ WorldPackets::Combat::SAttackStop attackStop;
+ attackStop.Attacker = GetGUID();
+ if (victim)
+ {
+ attackStop.Victim = victim->GetGUID();
+ attackStop.NowDead = !victim->IsAlive();
+ }
+
+ SendMessageToSet(attackStop.Write(), true);
if (victim)
TC_LOG_DEBUG("entities.unit", "{} stopped attacking {}", GetGUID().ToString(), victim->GetGUID().ToString());