aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Player/Player.cpp3
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp5
-rwxr-xr-xsrc/server/game/Entities/Vehicle/Vehicle.cpp27
-rw-r--r--src/server/game/Entities/Vehicle/Vehicle.h2
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