public string DebugString()
{
string sBountyIDs = CurrentBounties.Aggregate("Current IDs: ", (current, cb) => current + (cb.Key + " , "));
string sBountyStates = BountyQuestStates.Aggregate("States: ", (current, sBountyState) => current + (sBountyState.Key + " == " + sBountyState.Value.ToString()));
string sBountyMapMarkers = CurrentBountyMapMarkers.Values.Aggregate("MapMarkers: ", (current, sBountyMapMarker) => current + ("ID: " + sBountyMapMarker.ID + " WorldID: " + sBountyMapMarker.WorldID + " Position: " + sBountyMapMarker.Position + " Distance: " + FunkyGame.Hero.Position.Distance(sBountyMapMarker.Position) + "\r\n"));
string sActiveBounty = ActiveBounty != null ? ActiveBounty.ToString() : "NONE!";
//string sBountyActCache = String.Format("Kills: {0} Clear: {1} CursedEvent: {2}", CurrentActCache.KillBounties.Count, CurrentActCache.ClearBounties.Count, CurrentActCache.CursedEventBounties.Count);
string sBountyCurrentCacheEntry = CurrentBountyCacheEntry == null ? "Null" :
String.Format("Name {0} Type {1} StartingLevelID {2} EndingLevelID {3}",
CurrentBountyCacheEntry.Name, CurrentBountyCacheEntry.Type,
CurrentBountyCacheEntry.StartingLevelAreaID, CurrentBountyCacheEntry.EndingLevelAreaID);
string sActiveQuests = ActiveQuests.Count == 0 ? "" :
ActiveQuests.Aggregate("Active Quest: ", (current, q) => current +
(String.Format("ID: {4} Step: {0} questMeter: {1} killCount: {2} bonusCount: {3}\r\n",
q.Value.Step, q.Value.QuestMeter, q.Value.KillCount, q.Value.BonusCount, q.Key)));
return String.Format("{0}\r\n{1}\r\n{2}\r\n{3}\r\nBountyCacheEntry: {4}\r\n{5}\r\nGreaterRiftIsActiveQuest: {6} RiftTrialIsActiveQuest: {7}",
sActiveBounty, sBountyIDs, sBountyStates, sBountyMapMarkers, sBountyCurrentCacheEntry, sActiveQuests, GreaterRiftIsActiveQuest, RiftTrialIsActiveQuest);
}