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}."); }
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}."); }