private static void PlagueOutbreak(SituationContainer sc = null) { var plagueFaction = PickFaction(); var infected = Random.Range(1, (int)(plagueFaction.Population * .05)) * -1; plagueFaction.ChangePopulation(infected); var nextSituations = new List <string> { "plague continues", "plague ends naturally", "plague cured" }; var id = Guid.NewGuid(); while (HistoryGenerator.SituationIdExists(id)) { id = Guid.NewGuid(); } var situationContainer = new SituationContainer { SituationId = id, NextSituations = nextSituations, Factions = new List <Faction> { plagueFaction }, TurnsTilNextSituation = HistoryGenerator.TurnsPerTime["week"] }; HistoryGenerator.AddToActiveSituations(situationContainer); }
private static void FactionLeaderDisappears(SituationContainer sc = null) { var faction = PickFaction(); faction.CreateLeader(); //TODO: Write fluff }
public Situation(SituationContainer sc) { _situationContainer = new SituationContainer { SituationId = sc.SituationId, NextSituations = sc.NextSituations, Factions = sc.Factions, NamedCharacters = sc.NamedCharacters, TurnsTilNextSituation = sc.TurnsTilNextSituation }; }
private static void PlagueCured(SituationContainer sc) { var plagueFaction = sc.Factions.SingleOrDefault(); if (plagueFaction == null) { return; } //TODO: Write fluff HistoryGenerator.RemoveFromActiveSituations(sc); }
public void RunSituation(string situation, SituationContainer sc = null) { if (!_allSituations.ContainsKey(situation)) { return; } try { _allSituations[situation](sc); } catch (KeyNotFoundException e) { Debug.Log( $"Error running situation: {situation}\n {e.Message}"); throw; } }
private static void FactionLeaderAssassination(SituationContainer sc) { var faction = PickFaction(); sc = new SituationContainer { Factions = new List <Faction> { faction }, NamedCharacters = new List <Entity> { faction.Leader } }; faction.CreateLeader(); sc.NamedCharacters.Add(faction.Leader); StoryGenerator.Instance.Write("faction leader assassination", sc); }
private static void FactionLeaderAssassination(SituationContainer details) { const string file = "faction_leader_assassination.json"; const string oldFactionLeader = "oldfactionleader"; const string newFactionLeader = "newfactionleader"; WorldData.Instance.FactionLeaders.Remove(details.NamedCharacters[0]); WorldData.Instance.FactionLeaders.Add(details.NamedCharacters[1]); var story = GenerateText(file); story = story.Replace(oldFactionLeader, details.NamedCharacters[0].Fluff.Name); story = story.Replace(newFactionLeader, details.NamedCharacters[1].Fluff.Name); details.NamedCharacters[1].Fluff.AddToBackground(story); //DisplayText(story); }
private static void PlagueContinues(SituationContainer sc) { var plagueFaction = sc.Factions.SingleOrDefault(); if (plagueFaction == null) { return; } var infected = Random.Range(1, (int)(plagueFaction.Population * .1)) * -1; plagueFaction.ChangePopulation(infected); const int chanceOfLeaderDeath = 5; var roll = Random.Range(0, 100); if (roll < chanceOfLeaderDeath) { FactionLeaderDiesFromPlague(plagueFaction); } sc.TurnsTilNextSituation = HistoryGenerator.TurnsPerTime["week"]; }
public GameController(SituationContainer situations, ItemContainer items) { this.situations = situations; this.items = items; currentSituation = situations.GetSituation(MAIN_SITUATION_NAME); }
public void UnloadData() { TagsetSet = false; TaggedIds.Clear(); SituationContainer.Clear(); }
public static void RemoveFromActiveSituations(SituationContainer sc) { ActiveSituations.Remove(sc.SituationId); }
public static void AddToActiveSituations(SituationContainer sc) { ActiveSituations.Add(sc.SituationId, new Situation(sc)); }
public void Write(string storyTitle, SituationContainer details) { _stories[storyTitle].Invoke(details); }