internal static void QuestStats(string name, string[] args) { if (!Context.IsWorldReady) { Monitor.Log("Can't show quest statistics if the game is not loaded", LogLevel.Info); return; } if (args.Length < 1) { Monitor.Log("Choose one of these statistics: accepted, completed, removed, summary, <fullQualifiedQuestName>", LogLevel.Info); return; } Stats.Stats stats = StatsManager.GetStats(Game1.player.UniqueMultiplayerID); StringBuilder builder = new StringBuilder(); builder.AppendLine($"{args[0]} quest stats:"); switch (args[0]) { case "accepted": builder.AppendLine($"Show {stats.AcceptedQuests.Count} accepted quests."); builder.AppendLine(); stats.AcceptedQuests.ForEach(stat => builder.AppendLine($"{stat.FullQuestName}\t{stat.Date.ToLocaleString()}")); break; case "completed": builder.AppendLine($"Show {stats.CompletedQuests.Count} completed quests."); builder.AppendLine(); stats.CompletedQuests.ForEach(stat => builder.AppendLine($"{stat.FullQuestName}\t{stat.Date.ToLocaleString()}")); break; case "removed": builder.AppendLine($"Show {stats.RemovedQuests.Count} removed quests."); builder.AppendLine(); stats.RemovedQuests.ForEach(stat => builder.AppendLine($"{stat.FullQuestName}\t{stat.Date.ToLocaleString()}")); break; case "summary": builder.AppendLine($"{stats.AcceptedQuests.Count} accepted quests"); builder.AppendLine($"{stats.CompletedQuests.Count} completed quests"); builder.AppendLine($"{stats.RemovedQuests.Count} removed quests"); break; default: if (QuestManager.Fetch(args[0]) == null) { builder.AppendLine($"`{args[0]}` is not known managed quest"); break; } var summary = stats.GetQuestStatSummary(args[0]); builder.AppendLine($"Last accepted: {summary.LastAccepted?.ToLocaleString() ?? "never"}"); builder.AppendLine($"Last completed: {summary.LastCompleted?.ToLocaleString() ?? "never"}"); builder.AppendLine($"Last removed from quest log: {summary.LastRemoved?.ToLocaleString() ?? "never"}"); builder.AppendLine(); builder.AppendLine($"{summary.AcceptalCount} times accepted"); builder.AppendLine($"{summary.CompletionCount} times completed"); builder.AppendLine($"{summary.RemovalCount} times removed from quest log"); break; } Monitor.Log(builder.ToString(), LogLevel.Info); }
public void SetStats(long playerId, Stats stats) { this.stats[playerId] = stats; }