示例#1
0
        public static string StartRevolt(List <string> strings)
        {
            if (Campaign.Current == null)
            {
                return("Campaign was not started.");
            }

            if (!strings.Any() || CampaignCheats.CheckHelp(strings))
            {
                return("Format is \"revolts.start [Settlement Name]\"");
            }

            var settlementName = strings.Aggregate((i, j) => i + " " + j);

            var settlement = Campaign.Current.Settlements.FirstOrDefault(s => string.Equals(s.Name.ToString(), settlementName, StringComparison.CurrentCultureIgnoreCase));

            if (settlement == null)
            {
                return($"There is no Settlement \"{settlementName}\".");
            }

            var settlementInfo = Managers.Settlement.Get(settlement);

            if (settlementInfo.HasRebellionEvent)
            {
                return($"{settlement.Name} has an running revolt.");
            }

            RevoltBehavior.StartRevolt(settlement);
            return($"Started a Revolt in {settlement.Name}.");
        }
示例#2
0
        public static string EndRevolt(List <string> strings)
        {
            if (Campaign.Current == null)
            {
                return("Campaign was not started.");
            }

            if (strings.Count < 2 || !strings.Contains("-s") || !strings.Contains("-w") || CampaignCheats.CheckHelp(strings))
            {
                return("Format is \"revolts.end -s [Settlement Name] -w [Win (true|false)]\"");
            }

            var       aggregatedString    = strings.Aggregate((i, j) => i + " " + j);
            const int settlementNameIndex = 3;
            var       winIndex            = aggregatedString.IndexOf("-w ", StringComparison.Ordinal) + 3;

            var settlementName = aggregatedString.Substring(settlementNameIndex, winIndex - 7);

            var settlement = Campaign.Current.Settlements.FirstOrDefault(s => string.Equals(s.Name.ToString(), settlementName, StringComparison.CurrentCultureIgnoreCase));

            if (settlement == null)
            {
                return($"There is no Settlement \"{settlementName}\".");
            }

            var revolt = Managers.Revolt.GetRevoltBySettlement(settlement);

            if (revolt == null)
            {
                return($"{settlementName} is not conflicted in a revolt.");
            }

            if (!bool.TryParse(aggregatedString.Substring(winIndex, aggregatedString.Length - winIndex), out var isWin))
            {
                return("Format is \"Revolts.end_Revolt -s [Settlement Name] -w [Win (true|false)]\".");
            }

            if (isWin)
            {
                RevoltBehavior.EndSucceededRevolt(revolt);
            }
            else
            {
                RevoltBehavior.EndFailedRevolt(revolt);
            }

            return($"Ended a {(isWin ? "successful" : "failed")} Revolt in {settlement.Name}.");
        }