diff options
| author | Shauren <shauren.trinity@gmail.com> | 2025-05-21 18:45:37 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2025-05-21 18:45:37 +0200 |
| commit | 357a6b63975cf56e6bdca18adfc211e88f97410d (patch) | |
| tree | 9c76ba4fff1de25a8963ba562d8645534bfdb400 /src/server/game/Entities | |
| parent | fe206ee1c8d280ede34b065f63fdb0cfe76cc7ee (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.h | 9 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 8 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 10 |
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()); |
