public static void Initialize_NewGame() { AccusationEncounters.Initialize_Accusation(); Conversation.Initialize_Conversation(); Flood.Initialize_Flood(); // Lists.Initialize_Lists(); LocationEncounters.Initialize_Locations(); Map.Initialize_Map(); Movement.Initialize_Movement(); Notebook.Initialize_Notebook(); NPC_AI.Initialize_AI_Variables(); NPC_AI.Initialize_NPCs(); NPC_Traits.Initialize_Traits(); RandomEncounters.Initialize_Actors(); RandomEncounters.Initialize_RandomEncounters(); Search.Initialize_Search(); TheBunny.Initialize_Bunny(); Title.Initialize_TitleVars(); Title.Initialize_Secrets(); Variables.Initialize_MainVars(); }
static void Main(string[] args) { Game_StartNewGame(); // Title screen. Title.ScreenDimensions(); Title.TitleScreen(); // Gah. Start the game. Get on with it already. while (Variables.bGameActive) { if (iInitializeGame == 1) { Lists.Initialize_Lists(); iInitializeGame = 2; } if (Variables.iRemainingTurns > Variables.iTurn60) // end of game, i.e. 0 turns remaining { // First, check for cutscene. These scenes preempt the game display. Cutscenes.ShouldSomethingBePlaying(); // Second, check for Bunny Text. And ditto the aforementioned preemption. TheBunny.BunnyText(); // NPCs Scavenge each round, behind the scenes. NPC_AI.NPCs_Go_Looting(); // Opening cutscene. Odd place for it but its a legacy of the port. Cutscenes.GameStart_Cutscene(); if (Variables.iRemainingTurns != 125) // Ugly, but this is to prevent text from flashing on screen and then instantly disappearing, on turn 125. { // Display Header Info (minutes remaining, current location). First thing player sees outside of story text. Display_UIHeader(); // If everyone is dead, set the proper variable accordingly. AnyoneStillAliveICanFixThat(); if (Variables.iRemainingTurns == (Variables.iTurn50 - 1)) // If turn = 19. { RandomEncounters.DitchTheBestie(); } // Reset the Lists I'm using to track data. Lists.ClearMostLists(); // Populate the NPC Roster list Lists.PopulateNPCRoster(); // Check/Increment Island Flooding Flood.HereComesTheFlood(); Flood.FloodBlocksSomeLocations(); // Add space before shuffler, if anyone is here: NPC_AI.AnyoneHere_NeedShufflerSpace(); // The "Shuffler" Loop where NPC actions are shown. // Order: NPCs come/go/emote, corpse, lightning, bunny. for (int i = 1; Lists.NPCRoster.Count > 0; i++) { NPC_AI.SetUpForShuffler(); NPC_AI.Shuffler_01To89(); NPC_AI.NPC100_ShufflerOverride(); NPC_AI.Shuffler_90To100(); Notebook.DoYouComeHereOftenYouLookFamiliar(); Flood.HopeYouNPCsCanSwim(); NPC_AI.SetAllNPCLocals(); NPC_AI.CanIStopShufflingYet(); // Note: Triggers SoWhoAllIsDead() when everyone has been accounted for. } TheBunny.BunnyCode(); Title.ButPopularityIsImportant(); // Reset NPC Roster, modify spacing. Lists.PopulateNPCRoster(); NPC_AI.IsAnyoneHere(); // The killer's attack routine. NPC_AI.NPC100_PantsDownGenderCheck(); Killer.KillerIsHunting(); } // Random Encounters RandomEncounters.PickAnyRandomEncounter(); // Launches Run_RandomEncounter##(); RandomEncounters.Resolve_RandomEncounters(); // Launches SetAllActorLocals(); & Initialize_Actors(); // Drown Player (if necessary, of course) Flood.ThePlayerCantSwim(); // Random Encounter #8, The Special Friend RandomEncounters.YourVeryOwnBestie(); // Player options. PlayerOptions.PlayerOptionsList(); // Dock one turn and Loop (unless game is over) Variables.waitMove = true; Variables.iRemainingTurns--; Console.Clear(); if (Variables.iRemainingTurns == 0) { Cutscenes.GameOver_OutOfTurns(); } } else { // Handle game over scoring, etc. Title.ShowScore(); } } }