diff options
author | jackpoz <giacomopoz@gmail.com> | 2021-06-05 18:41:51 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-03-10 23:57:13 +0100 |
commit | 89ea13ed46744414f74686cf2126dc637188180d (patch) | |
tree | e009a1128f327165a8362d02782f6657b5cf9c34 /src | |
parent | 9a17ac108c3a6318d96bd3944cb96e4e9241e7a2 (diff) |
Core/Player: Log more information when Player::StopCastingCharm() fails
(cherry picked from commit af815e991d3dc407846fcd05000b4e356d7336ed)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 3 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 5 | ||||
-rw-r--r-- | src/server/game/Entities/Vehicle/Vehicle.cpp | 28 | ||||
-rw-r--r-- | src/server/game/Entities/Vehicle/Vehicle.h | 2 |
4 files changed, 36 insertions, 2 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index ce52e299b37..7af4a73643d 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -22031,7 +22031,8 @@ void Player::StopCastingCharm() TC_LOG_FATAL("entities.player", "Player::StopCastingCharm: Player '%s' (%s) is not able to uncharm unit (%s)", GetName().c_str(), GetGUID().ToString().c_str(), GetCharmedGUID().ToString().c_str()); if (!charm->GetCharmerGUID().IsEmpty()) { - TC_LOG_FATAL("entities.player", "Player::StopCastingCharm: Charmed unit has charmer %s", charm->GetCharmerGUID().ToString().c_str()); + TC_LOG_FATAL("entities.player", "Player::StopCastingCharm: Charmed unit has charmer %s\nPlayer debug info: %s\nCharm debug info: %s", + charm->GetCharmerGUID().ToString().c_str(), GetDebugInfo().c_str(), charm->GetDebugInfo().c_str()); ABORT(); } diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 36b96406ffa..b11af5f555f 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -13458,6 +13458,9 @@ std::string Unit::GetDebugInfo() const << "IsAIEnabled: " << IsAIEnabled() << " DeathState: " << std::to_string(getDeathState()) << " UnitMovementFlags: " << GetUnitMovementFlags() << " ExtraUnitMovementFlags: " << GetExtraUnitMovementFlags() << " Class: " << std::to_string(GetClass()) << "\n" - << " " << (movespline ? movespline->ToString() : "Movespline: <none>"); + << "" << (movespline ? movespline->ToString() : "Movespline: <none>\n") + << "GetCharmedGUID(): " << GetCharmedGUID().ToString() << "\n" + << "GetCharmerGUID(): " << GetCharmerGUID().ToString() << "\n" + << "" << (GetVehicleKit() ? GetVehicleKit()->GetDebugInfo() : "No vehicle kit"); return sstr.str(); } diff --git a/src/server/game/Entities/Vehicle/Vehicle.cpp b/src/server/game/Entities/Vehicle/Vehicle.cpp index 4263522ca45..e9ab2b316f1 100644 --- a/src/server/game/Entities/Vehicle/Vehicle.cpp +++ b/src/server/game/Entities/Vehicle/Vehicle.cpp @@ -31,6 +31,7 @@ #include "SpellAuraEffects.h" #include "TemporarySummon.h" #include "Unit.h" +#include <sstream> Vehicle::Vehicle(Unit* unit, VehicleEntry const* vehInfo, uint32 creatureEntry) : UsableSeatNum(0), _me(unit), _vehicleInfo(vehInfo), _creatureEntry(creatureEntry), _status(STATUS_NONE), _lastShootPos() @@ -956,3 +957,30 @@ Milliseconds Vehicle::GetDespawnDelay() return 1ms; } + +std::string Vehicle::GetDebugInfo() const +{ + std::stringstream sstr; + sstr << "Vehicle seats:\n"; + for (SeatMap::const_iterator itr = Seats.begin(); itr != Seats.end(); itr++) + { + sstr << "seat " << std::to_string(itr->first) << ": " << (itr->second.IsEmpty() ? "empty" : itr->second.Passenger.Guid.ToString()) << "\n"; + } + + sstr << "Vehicle pending events:"; + + if (_pendingJoinEvents.empty()) + { + sstr << " none"; + } + else + { + sstr << "\n"; + for (PendingJoinEventContainer::const_iterator itr = _pendingJoinEvents.begin(); itr != _pendingJoinEvents.end(); ++itr) + { + sstr << "seat " << std::to_string((*itr)->Seat->first) << ": " << (*itr)->Passenger->GetGUID().ToString() << "\n"; + } + } + + return sstr.str(); +} diff --git a/src/server/game/Entities/Vehicle/Vehicle.h b/src/server/game/Entities/Vehicle/Vehicle.h index 743d4ade09d..1a899ae2966 100644 --- a/src/server/game/Entities/Vehicle/Vehicle.h +++ b/src/server/game/Entities/Vehicle/Vehicle.h @@ -79,6 +79,8 @@ class TC_GAME_API Vehicle : public TransportBase Milliseconds GetDespawnDelay(); + std::string GetDebugInfo() const; + protected: friend class VehicleJoinEvent; uint32 UsableSeatNum; ///< Number of seats that match VehicleSeatEntry::UsableByPlayer, used for proper display flags |