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 | ||||
-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 |