Exemple #1
0
        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);
        }
Exemple #2
0
 public void SetStats(long playerId, Stats stats)
 {
     this.stats[playerId] = stats;
 }