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();
                }
            }
        }
Exemple #2
0
        public static void Cutscene05_MetByTheKiller()
        {
            NPC_AI.NPC100_PantsDownGenderCheck();

            NPC_AI.NPC100_CurrentNumLocation = Variables.iCurrentLocation;
            NPC_AI.NPC100_CurrentStrLocation = Variables.sGetLocation;
            NPC_AI.NPC100_LastStrLocation    = NPC_AI.NPC100_CurrentStrLocation;
            NPC_AI.DesireToMove100           = 0;
            TheBunny.iBunnyLocation          = 0;

            Console.WriteLine("'There you are.'");
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("You turn around to see " + NPC_AI.NPC_100 + ", a slight smile on " + NPC_AI.sGenderHisHer + " face.");
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("'Wondered when it would be our turn, whether it'd be later. Or sooner. ");
            Console.WriteLine("And there's always not-at-all, though those times make me sad.'");
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("As " + NPC_AI.sGenderHeShe + " speaks, the falling rain grows warmer, as does the deep, soft");
            Console.WriteLine("puddles hugging your ankles. You imagine how nice it would be to");
            Console.WriteLine("spread out your arms and fall backward, to fall asleep and float away.");
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine(NPC_AI.NPC_100 + " looks down, then raises " + NPC_AI.sGenderHisHer + " gaze to meet yours. 'A little bunny");
            Console.WriteLine("tells me you've been busy, but not at what. Busy at nothing or");
            Console.WriteLine("something? The right or the wrong things -- whatever those might be?'");
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine(NPC_AI.NPC_100 + " offers up a playful wink, and the world fades away into a furry");
            Console.WriteLine("embrace. You catch yourself holding your breath and tell yourself that");
            Console.WriteLine("it's OK to rest your eyes, but just until it's time to breathe again.");
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("The ground rotates to rest against your back, and you curl up into a ball");
            Console.WriteLine("so small that nothing can get to you. Warmth and safety hold you tight,");
            Console.WriteLine("and everything falls impossibly still. Even the rain stops in place.");
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("'... we know better than to believe that fluffy animals are talking.'");
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("The words slip through the tranquility with care, but still knock the");
            Console.WriteLine("occasional thought astray. " + NPC_AI.NPC_100 + "? Is " + NPC_AI.sGenderHeShe + " talking about the bunny? You");
            Console.WriteLine("want to look, to see. Was it all in my head? Why does it matter to " + NPC_AI.sGenderHimHer + "?");
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("The world falls back and stands you up. Your eyes open and you breathe");
            Console.WriteLine("in cool, fresh air. Sensations dance across your face as you take a step,");
            Console.WriteLine("then another. You breathe again, and smell the rain, the ocean. You feel");
            Console.WriteLine("the hunger in your belly. You break into a run, bubbles of rain popping");
            Console.WriteLine("all around you, a hint of deepest blue clawing up on the horizon.");

            NPC_AI.bHunting = true;

            // the following is to allow the player to reclaim some of his lost MacGuffins in order to escape.
            // this ensures that areas 9-25 can be searched even if they were already searched.
            Search.bSearchedLocation_A09 = false;
            Search.bSearchedLocation_A10 = false;
            Search.bSearchedLocation_A11 = false;
            Search.bSearchedLocation_A12 = false;
            Search.bSearchedLocation_A13 = false;
            Search.bSearchedLocation_A14 = false;
            Search.bSearchedLocation_A15 = false;
            Search.bSearchedLocation_A16 = false;
            Search.bSearchedLocation_A17 = false;
            Search.bSearchedLocation_A18 = false;
            Search.bSearchedLocation_A19 = false;
            Search.bSearchedLocation_A20 = false;
            Search.bSearchedLocation_A21 = false;
            Search.bSearchedLocation_A22 = false;
            Search.bSearchedLocation_A23 = false;
            Search.bSearchedLocation_A24 = false;
            Search.bSearchedLocation_A25 = false;

            // If the player previously used the lighthouse, they can still search again.
            Search.bSearchedLocation_B09 = false;
            Search.bSearchedLocation_B10 = false;
            Search.bSearchedLocation_B11 = false;
            Search.bSearchedLocation_B12 = false;
            Search.bSearchedLocation_B13 = false;
            Search.bSearchedLocation_B14 = false;
            Search.bSearchedLocation_B15 = false;
            Search.bSearchedLocation_B16 = false;
            Search.bSearchedLocation_B17 = false;
            Search.bSearchedLocation_B18 = false;
            Search.bSearchedLocation_B19 = false;
            Search.bSearchedLocation_B20 = false;
            Search.bSearchedLocation_B21 = false;
            Search.bSearchedLocation_B22 = false;
            Search.bSearchedLocation_B23 = false;
            Search.bSearchedLocation_B24 = false;
            Search.bSearchedLocation_B25 = false;

            int iRunFromKiller = Program.rand.Next(9, 26);

            while (iRunFromKiller == Variables.iCurrentLocation)
            {
                iRunFromKiller = Program.rand.Next(9, 26); // areas 1-8 are now flooded.
            }
            if (iRunFromKiller == 9)
            {
                Variables.sGetLocation     = LocationEncounters.location_009; NPC_AI.NPC100_CurrentNumLocation = 9;
                Variables.iCurrentLocation = NPC_AI.NPC100_CurrentNumLocation; NPC_AI.NPC100_CurrentStrLocation = LocationEncounters.location_009;
            }
            if (iRunFromKiller == 10)
            {
                Variables.sGetLocation     = LocationEncounters.location_010; NPC_AI.NPC100_CurrentNumLocation = 10;
                Variables.iCurrentLocation = NPC_AI.NPC100_CurrentNumLocation; NPC_AI.NPC100_CurrentStrLocation = LocationEncounters.location_010;
            }
            if (iRunFromKiller == 11)
            {
                Variables.sGetLocation     = LocationEncounters.location_011; NPC_AI.NPC100_CurrentNumLocation = 11;
                Variables.iCurrentLocation = NPC_AI.NPC100_CurrentNumLocation; NPC_AI.NPC100_CurrentStrLocation = LocationEncounters.location_011;
            }
            if (iRunFromKiller == 12)
            {
                Variables.sGetLocation     = LocationEncounters.location_012; NPC_AI.NPC100_CurrentNumLocation = 12;
                Variables.iCurrentLocation = NPC_AI.NPC100_CurrentNumLocation; NPC_AI.NPC100_CurrentStrLocation = LocationEncounters.location_012;
            }
            if (iRunFromKiller == 13)
            {
                Variables.sGetLocation     = LocationEncounters.location_013; NPC_AI.NPC100_CurrentNumLocation = 13;
                Variables.iCurrentLocation = NPC_AI.NPC100_CurrentNumLocation; NPC_AI.NPC100_CurrentStrLocation = LocationEncounters.location_013;
            }
            if (iRunFromKiller == 14)
            {
                Variables.sGetLocation     = LocationEncounters.location_014; NPC_AI.NPC100_CurrentNumLocation = 14;
                Variables.iCurrentLocation = NPC_AI.NPC100_CurrentNumLocation; NPC_AI.NPC100_CurrentStrLocation = LocationEncounters.location_014;
            }
            if (iRunFromKiller == 15)
            {
                Variables.sGetLocation     = LocationEncounters.location_015; NPC_AI.NPC100_CurrentNumLocation = 15;
                Variables.iCurrentLocation = NPC_AI.NPC100_CurrentNumLocation; NPC_AI.NPC100_CurrentStrLocation = LocationEncounters.location_015;
            }
            if (iRunFromKiller == 16)
            {
                Variables.sGetLocation     = LocationEncounters.location_016; NPC_AI.NPC100_CurrentNumLocation = 16;
                Variables.iCurrentLocation = NPC_AI.NPC100_CurrentNumLocation; NPC_AI.NPC100_CurrentStrLocation = LocationEncounters.location_016;
            }
            if (iRunFromKiller == 17)
            {
                Variables.sGetLocation     = LocationEncounters.location_017; NPC_AI.NPC100_CurrentNumLocation = 17;
                Variables.iCurrentLocation = NPC_AI.NPC100_CurrentNumLocation; NPC_AI.NPC100_CurrentStrLocation = LocationEncounters.location_017;
            }
            if (iRunFromKiller == 18)
            {
                Variables.sGetLocation     = LocationEncounters.location_018; NPC_AI.NPC100_CurrentNumLocation = 18;
                Variables.iCurrentLocation = NPC_AI.NPC100_CurrentNumLocation; NPC_AI.NPC100_CurrentStrLocation = LocationEncounters.location_018;
            }
            if (iRunFromKiller == 19)
            {
                Variables.sGetLocation     = LocationEncounters.location_019; NPC_AI.NPC100_CurrentNumLocation = 19;
                Variables.iCurrentLocation = NPC_AI.NPC100_CurrentNumLocation; NPC_AI.NPC100_CurrentStrLocation = LocationEncounters.location_019;
            }
            if (iRunFromKiller == 20)
            {
                Variables.sGetLocation     = LocationEncounters.location_020; NPC_AI.NPC100_CurrentNumLocation = 20;
                Variables.iCurrentLocation = NPC_AI.NPC100_CurrentNumLocation; NPC_AI.NPC100_CurrentStrLocation = LocationEncounters.location_020;
            }
            if (iRunFromKiller == 21)
            {
                Variables.sGetLocation     = LocationEncounters.location_021; NPC_AI.NPC100_CurrentNumLocation = 21;
                Variables.iCurrentLocation = NPC_AI.NPC100_CurrentNumLocation; NPC_AI.NPC100_CurrentStrLocation = LocationEncounters.location_021;
            }
            if (iRunFromKiller == 22)
            {
                Variables.sGetLocation     = LocationEncounters.location_022; NPC_AI.NPC100_CurrentNumLocation = 22;
                Variables.iCurrentLocation = NPC_AI.NPC100_CurrentNumLocation; NPC_AI.NPC100_CurrentStrLocation = LocationEncounters.location_022;
            }
            if (iRunFromKiller == 23)
            {
                Variables.sGetLocation     = LocationEncounters.location_023; NPC_AI.NPC100_CurrentNumLocation = 23;
                Variables.iCurrentLocation = NPC_AI.NPC100_CurrentNumLocation; NPC_AI.NPC100_CurrentStrLocation = LocationEncounters.location_023;
            }
            if (iRunFromKiller == 24)
            {
                Variables.sGetLocation     = LocationEncounters.location_024; NPC_AI.NPC100_CurrentNumLocation = 24;
                Variables.iCurrentLocation = NPC_AI.NPC100_CurrentNumLocation; NPC_AI.NPC100_CurrentStrLocation = LocationEncounters.location_024;
            }
            if (iRunFromKiller == 25)
            {
                Variables.sGetLocation     = LocationEncounters.location_025; NPC_AI.NPC100_CurrentNumLocation = 25;
                Variables.iCurrentLocation = NPC_AI.NPC100_CurrentNumLocation; NPC_AI.NPC100_CurrentStrLocation = LocationEncounters.location_025;
            }
        }