diff options
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 | ||||
-rwxr-xr-x | src/server/game/Entities/Vehicle/Vehicle.cpp | 27 | ||||
-rw-r--r-- | src/server/game/Entities/Vehicle/Vehicle.h | 2 |
4 files changed, 35 insertions, 2 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index bbf68c2a1f9..afbde151123 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -20757,7 +20757,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 0c21a169644..e066fedea7b 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -13611,6 +13611,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 7857aa07723..ba9b8ebff4f 100755 --- a/src/server/game/Entities/Vehicle/Vehicle.cpp +++ b/src/server/game/Entities/Vehicle/Vehicle.cpp @@ -960,3 +960,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 26635e81c6f..b9988c6f049 100644 --- a/src/server/game/Entities/Vehicle/Vehicle.h +++ b/src/server/game/Entities/Vehicle/Vehicle.h @@ -74,6 +74,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 |