Пример #1
0
        public static void Play()
        {
            Data.Health    = 15;
            Data.MaxHealth = 35;

            Console.WriteLine("\n");
            Text.Message("ACT I");
            Text.Message("Zergling Infestation", Color.Purple);

            Text.Message("\nYou rise from the grass, and you are starving.");
            Text.Message("This forest is full of wildlife, and the trees are brimming with fruit.");
            Text.Message("You think you also hear someone screaming.\n");

            Game.Choice("Hunt", "Fruit", "Find Help");
            if (Data.Answer == "a")
            {
                Text.Message("\nYou walked around and found a lone wolf.");
                Text.Message("You didn't have anything to cook the meat with though.");
                Data.Storage.Add("Uncooked Meat");
            }
            else if (Data.Answer == "b")
            {
                Text.Message("\nYou climbed the trees and knocked off the fruit.");
                Text.Message("You ate the fruit but kept some for later.\n");
                Game.ChangeHealth(20, "Fruit");
                Data.Storage.Add("Fruit");
                Data.Storage.Add("Fruit");
                Data.Storage.Add("Fruit");
                Game.XP(1);
            }
            else if (Data.Answer == "c")
            {
                Text.Message("\nYou shouted for help but heard no response.\n");
                Game.ChangeHealth(Game.Rnd(-4, 0), "Tired/Hungry");
                Text.Message("\nWhile you were searching, you found a bucket of Cooked Fish.");
                Game.HealthKit();
                Data.Storage.Add("Cooked Fish");
            }

            Text.Message("\nYou walk around more and find a weak Zergling.", Color.Red);
            Text.Message("\nBATTLE!!!\n1 Zergling\n----------");
            _zerg1 = 20;
            while (_zerg1 > 0)
            {
                Console.WriteLine();
                Game.Choice("Attack", "Move", "Hold Ground");
                if (Data.Answer == "a")
                {
                    int dmg = Game.Rnd(2, 5);
                    _zerg1 -= dmg;
                    Text.Message($"\nAttacked Zergling (-{dmg}): {_zerg1}/20 HP");
                    Game.ChangeHealth(Game.Rnd(-3, -1), "Zergling");
                }
                else if (Data.Answer == "b")
                {
                    Game.ChangeHealth(Game.Rnd(-1, 0), "Tired");
                    int dmg = Game.Rnd(1, 7);
                    _zerg1 -= dmg;
                    Text.Message($"\nTired Zergling (-{dmg}): {_zerg1}/20 HP");
                }
                else if (Data.Answer == "c")
                {
                    int dmg = Game.Rnd(4, 10);
                    _zerg1 -= dmg;
                    Text.Message($"\nAttacked Zergling (-{dmg}): {_zerg1}/20 HP");
                    Game.ChangeHealth(Game.Rnd(-6, -2), "Zergling");
                }
            }
            Text.Message("\nThe Zergling dropped some meat, but you can't cook it.\n");
            Data.Storage.Add("Uncooked Meat");
            Game.XP(2);
            if (Data.Health < 10)
            {
                Game.HealthKit();
            }

            Text.Message("\nIn front of the Zergling, there is an old hut.");
            Text.Message("It looks as if it hasn't been used in many years.\n");
            Game.Choice("Knock", "Run", "Examine");

            if (Data.Answer == "c")
            {
                Text.Message("\nYou feel around the hut and find a pair of sticks.");
                Text.Message("You grab the sticks and they are very flammable.\n");
                Data.Storage.Add("Flammable Sticks");
                Game.XP(1);
            }
            else if (Data.Answer == "b")
            {
                Text.Message("\nYou made a run for it. You got tired.\n");
                Game.ChangeHealth(Game.Rnd(-3, 0), "Tired");
                Game.HealthKit();
                Text.Message("You found some fruit lying on the ground.\n");
                Data.Storage.Add("Fruit");
                Game.XP(1);
                Text.Message("\nWhen you pick up the fruit, two Zerglings suddenly appear.", Color.Red);
                Text.Message("BATTLE!!\n2 Zerglings\n----------");
                _zerg1 = 35;
                _zerg2 = 35;

                while (_zerg1 > 0 && _zerg2 > 0)
                {
                    Console.WriteLine();
                    Game.Choice("Attack", "Items", "Flee");
                    if (Data.Answer == "a")
                    {
                        Text.Message("Attacked");
                        int dmg1 = Game.Rnd(4, 7);
                        int dmg2 = Game.Rnd(4, 7);
                        _zerg1 -= dmg1;
                        _zerg2 -= dmg2;
                        Text.Message($"Attacked Zergling 1 (-{dmg1}): {_zerg1}/35 HP");
                        Text.Message($"Attacked Zergling 2 (-{dmg2}): {_zerg2}/35 HP");
                        Game.ChangeHealth(Game.Rnd(-4, -2) * Game.Rnd(1, 4), "Zerglings");
                    }
                    else if (Data.Answer == "b")
                    {
                        if (Data.Storage.Count > 0)
                        {
                            Text.Message("Items:");
                            foreach (string item in Data.Storage)
                            {
                                Console.WriteLine($"  - {item}");
                                Thread.Sleep(250);
                            }
                            Game.Input();
                            if (Game.CheckItem("Fruit"))
                            {
                                Game.ChangeHealth(5, "Fruit");
                                Data.Storage.Remove("Fruit");
                            }
                            else if (Game.CheckItem("Uncooked Meat"))
                            {
                                Game.ChangeHealth(5, "Uncooked Meat (+5)");
                                Data.Storage.Remove("Uncooked Meat");
                            }
                            else if (Game.CheckItem("Cooked Fish"))
                            {
                                Game.ChangeHealth(10, "Cooked Fish");
                                Data.Storage.Remove("Cooked Fish");
                            }
                            else if (Game.CheckItem("Steak"))
                            {
                                Game.ChangeHealth(15, "Steak");
                                Data.Storage.Remove("Steak");
                            }
                            else if (Game.CheckItem("Health Kit"))
                            {
                                Game.ChangeHealth(10, "Health Kit");
                                Data.Storage.Remove("Health Kit");
                            }
                            else if (Game.CheckItem("Flammable Sticks"))
                            {
                                if (Game.Rnd(1, 6) > 2)
                                {
                                    Text.Message("You threw burning sticks!");
                                    _zerg1 -= Game.Rnd(0, 9);
                                    _zerg2 -= Game.Rnd(0, 9);
                                    Text.Message($"Zergling 1 has {_zerg1}! Zergling 2 has {_zerg2}!");
                                    Game.ChangeHealth(Game.Rnd(-5, 0), "Sticks");
                                }
                                else
                                {
                                    Text.Message("Burning sticks failed.");
                                }
                                Data.Storage.Remove("Flammable Sticks");
                            }
                        }
                        else
                        {
                            Text.Message("No items.");
                        }
                    }
                    else if (Data.Answer == "c")
                    {
                        if (Game.Rnd(0, 10) > 5)
                        {
                            Text.Message("You ran away!");
                            Game.ChangeHealth(Game.Rnd(-1, 0), "Tired");
                            _zerg1 = 0;
                            _zerg2 = 0;
                        }
                        else
                        {
                            Text.Message("You failed to flee.");
                            Game.ChangeHealth(Game.Rnd(-6, -2), "Zerglings");
                        }
                    }
                }
                if (_zerg1 <= 0 || _zerg2 <= 0)
                {
                    Text.Message("You defeated the Zerglings!");
                    Game.XP(3);
                }
            }
            if (Data.Answer == "a")
            {
                Text.Message("\nYou knocked on the door of the hut. It slowly opened, and walked in.");
            }
            else
            {
                Text.Message("\nYou went back to the hut and knocked. The door slowly opened, and you walked in.");
            }

            Text.Message("\nYou see Zerg Creep crawling on the floor. You notice a Creep Tumor in front of you.\n" +
                         "Other than those, it's empty except for a closet at the other side.");
            Text.Character("Creep Tumor", L("*scowl*\n", "*sss*\n", "*seee*\n"), Color.Purple);

            Game.Choice("Walk around", "Shoot Creep Tumor", "Jump to closet");
            if (Data.Answer == "a")
            {
                Text.Message("\nYou carefully walk around. Zerglings appear from cracks in the walls.", Color.Red);
                Game.Choice("Fight", "Lure away");

                bool fight = false;
                if (Data.Answer == "a")
                {
                    fight = true;
                }
                else if (Data.Answer == "b")
                {
                    if (Data.Storage.Contains("Fruit"))
                    {
                        Text.Message("You used some Fruit to lure the Zerglings away.");
                        Data.Storage.Remove("Fruit");
                        fight = false;
                    }
                    else
                    {
                        Text.Message("You don't have anything to lure them away with.");
                        fight = true;
                    }
                }
                if (fight == true)
                {
                    Text.Message("BATTLE!!\n2 Zerglings\n----------");
                    _zerg1 = 35;
                    _zerg2 = 35;
                    while (_zerg1 > 0 && _zerg2 > 0)
                    {
                        Game.Choice("Attack", "Items", "Flee");
                        if (Data.Answer == "a")
                        {
                            Text.Message("Attacked");
                            int dmg1 = Game.Rnd(4, 7);
                            int dmg2 = Game.Rnd(4, 7);
                            _zerg1 -= dmg1;
                            _zerg2 -= dmg2;
                            Text.Message($"Attacked Zergling 1 (-{dmg1}): {_zerg1}/35 HP");
                            Text.Message($"Attacked Zergling 2 (-{dmg2}): {_zerg2}/35 HP");
                            Game.ChangeHealth(Game.Rnd(-4, -2) * Game.Rnd(1, 4), "Zerglings");
                        }
                        else if (Data.Answer == "b")
                        {
                            if (Data.Storage.Count > 0)
                            {
                                Text.Message("Items:");
                                foreach (string item in Data.Storage)
                                {
                                    Console.WriteLine($"  - {item}");
                                    Thread.Sleep(250);
                                }
                                Game.Input();
                                if (Game.CheckItem("Fruit"))
                                {
                                    Game.ChangeHealth(5, "Fruit");
                                    Data.Storage.Remove("Fruit");
                                }
                                else if (Game.CheckItem("Uncooked Meat"))
                                {
                                    Game.ChangeHealth(5, "Uncooked Meat (+5)");
                                    Data.Storage.Remove("Uncooked Meat");
                                }
                                else if (Game.CheckItem("Cooked Fish"))
                                {
                                    Game.ChangeHealth(10, "Cooked Fish");
                                    Data.Storage.Remove("Cooked Fish");
                                }
                                else if (Game.CheckItem("Steak"))
                                {
                                    Game.ChangeHealth(15, "Steak");
                                    Data.Storage.Remove("Steak");
                                }
                                else if (Game.CheckItem("Health Kit"))
                                {
                                    Game.ChangeHealth(10, "Health Kit");
                                    Data.Storage.Remove("Health Kit");
                                }
                                else if (Game.CheckItem("Flammable Sticks"))
                                {
                                    if (Game.Rnd(1, 6) > 2)
                                    {
                                        Text.Message("You threw burning sticks!");
                                        _zerg1 -= Game.Rnd(0, 9);
                                        _zerg2 -= Game.Rnd(0, 9);
                                        Text.Message($"Zergling 1 has {_zerg1}! Zergling 2 has {_zerg2}!");
                                        Game.ChangeHealth(Game.Rnd(-5, 0), "Sticks");
                                    }
                                    else
                                    {
                                        Text.Message("Burning sticks failed.");
                                    }
                                    Data.Storage.Remove("Flammable Sticks");
                                }
                            }
                            else
                            {
                                Text.Message("No items.");
                            }
                        }
                        else if (Data.Answer == "c")
                        {
                            if (Game.Rnd(0, 10) > 5)
                            {
                                Text.Message("You ran away!");
                                Game.ChangeHealth(Game.Rnd(-1, 0), "Tired");
                                _zerg1 = 0;
                                _zerg2 = 0;
                            }
                            else
                            {
                                Text.Message("You failed to flee.");
                                Game.ChangeHealth(Game.Rnd(-6, -2), "Zerglings");
                            }
                        }
                    }
                    if (_zerg1 <= 0 && _zerg2 <= 0)
                    {
                        Text.Message("You defeated the Zerglings!");
                        Game.XP(3);
                    }
                }
            }
            else if (Data.Answer == "b")
            {
                Text.Message("\nYou tentatively shoot the Creep Tumor.");
                Text.Character("Creep Tumor", L("*SCREAM!!!*", "*CAAA!!!*"), Color.Purple);
                Game.ChangeHealth(Game.Rnd(-3, 0), "Creep");
                Text.Message("A bucket of Cooked Fish is at the corner!");
                Data.Storage.Add("Cooked Fish");
                Game.XP(1);
            }
            else if (Data.Answer == "c")
            {
                if (Game.Rnd(0, 11) > 5)
                {
                    Text.Message("\nYou made the jump!!");
                    Text.Message("The closet is banging. You open it. A Marine is stuck inside.");
                    Text.Character("Marine", L("Thank you! Can I go with you?", "Phew! May I join you?"), Color.Cyan);

                    Game.Choice("Yes", "No");
                    if (Data.Answer == "a")
                    {
                        Text.Character("You", L("Sure!", "That's great!"));
                        Game.XP(5);
                        Data.Companions.Add(Marine);
                        _people++;
                    }
                    else if (Data.Answer == "b")
                    {
                        Text.Character("You", L("Sorry, but no.", "I deny!"));
                        Text.Message("The marine walks away.");
                    }

                    Text.Message("Behind him, there's a box with Steak and Fruit.");
                    Data.Storage.Add("Fruit");
                    Data.Storage.Add("Fruit");
                    Data.Storage.Add("Steak");
                }
                else
                {
                    Text.Message("You step on the gooey creep, and get the shivers.");
                    Game.ChangeHealth(-1, "Scared");
                }
            }

            Text.Message("You walk outside and find more creep. You look up, and see a giant creature looming over you, accompanied by Zerglings.", Color.Purple);
            Text.Character("Marine", Game.List("I'll take out the Zerglings.", "I'll take care of the pesky beasts.", "Don't you worry about them little creatures."));
            Game._HealthKit();

            Text.Message("\nBOSS BATTLE!!!\n----------");
            _zerg1 = 25;
            _zerg2 = 25;
            while (_hatchery > 0)
            {
                Console.WriteLine();
                Game.Choice("Attack", "Items");
                if (Data.Answer == "a")
                {
                    if (_zerg1 > 0 && _zerg2 > 0)
                    {
                        Game.Choice("Hatchery", "Zergling 1", "Zergling 2");
                        if (Data.Answer == "a")
                        {
                            int dmg = Game.Rnd(4, 7);
                            _hatchery -= dmg;
                            Text.Message($"\nAttacked Hatchery (-{dmg}): {_hatchery}/60 HP");
                        }
                        else if (Data.Answer == "b")
                        {
                            int dmg = Game.Rnd(4, 7);
                            _zerg1 -= dmg;
                            Text.Message($"\nAttacked Zergling 1 (-{dmg}): {_zerg1}/25 HP");
                        }
                        else if (Data.Answer == "c")
                        {
                            int dmg = Game.Rnd(4, 7);
                            _zerg2 -= dmg;
                            Text.Message($"\nAttacked Zergling 2 (-{dmg}): {_zerg2}/25 HP");
                        }
                    }
                    else if (_zerg1 > 0)
                    {
                        int dmg = Game.Rnd(4, 7);
                        _zerg1 -= dmg;
                        Text.Message($"\nAttacked Zergling 1 (-{dmg}): {_zerg1}/25 HP");
                    }
                    else if (_zerg2 > 0)
                    {
                        int dmg = Game.Rnd(4, 7);
                        _zerg2 -= dmg;
                        Text.Message($"\nAttacked Zergling 2 (-{dmg}): {_zerg2}/25 HP");
                    }
                    else
                    {
                        int dmg = Game.Rnd(4, 7);
                        _hatchery -= dmg;
                        Text.Message($"\nAttacked Hatchery (-{dmg}): {_hatchery}/60 HP");
                    }
                }
                else if (Data.Answer == "b")
                {
                    if (Data.Storage.Count > 0)
                    {
                        Text.Message("Items:");
                        foreach (string item in Data.Storage)
                        {
                            Console.WriteLine($"  - {item}");
                            Thread.Sleep(250);
                        }
                        Game.Input();
                        if (Game.CheckItem("Fruit"))
                        {
                            Game.ChangeHealth(5, "Fruit");
                            Data.Storage.Remove("Fruit");
                        }
                        else if (Game.CheckItem("Uncooked Meat"))
                        {
                            Game.ChangeHealth(5, "Uncooked Meat (+5)");
                            Data.Storage.Remove("Uncooked Meat");
                        }
                        else if (Game.CheckItem("Cooked Fish"))
                        {
                            Game.ChangeHealth(10, "Cooked Fish");
                            Data.Storage.Remove("Cooked Fish");
                        }
                        else if (Game.CheckItem("Steak"))
                        {
                            Game.ChangeHealth(15, "Steak");
                            Data.Storage.Remove("Steak");
                        }
                        else if (Game.CheckItem("Health Kit"))
                        {
                            Game.ChangeHealth(10, "Health Kit");
                            Data.Storage.Remove("Health Kit");
                        }
                        else if (Game.CheckItem("Big Health Kit"))
                        {
                            Game.ChangeHealth(20, "Big Health Kit");
                            Data.Storage.Remove("Big Health Kit");
                        }
                        else if (Game.CheckItem("Flammable Sticks"))
                        {
                            if (Game.Rnd(1, 6) > 2)
                            {
                                Text.Message("You threw burning sticks!");
                                _zerg1 -= Game.Rnd(0, 9);
                                _zerg2 -= Game.Rnd(0, 9);
                                Text.Message($"Zergling 1 has {_zerg1}! Zergling 2 has {_zerg2}!");
                                Game.ChangeHealth(Game.Rnd(-5, 0), "Sticks");
                            }
                            else
                            {
                                Text.Message("Burning sticks failed.");
                            }
                            Data.Storage.Remove("Flammable Sticks");
                        }
                    }
                    else
                    {
                        Text.Message("No items.");
                    }
                }

                if (Game.Rnd(0, 2) > 0 && _people == 1)
                {
                    int rnd = Game.Rnd(0, 2);
                    if (rnd == 0)
                    {
                        int dmg = Game.Rnd(4, 7);
                        _zerg1 -= dmg;
                        Text.Message($"Marine attacked Zergling 1 (-{dmg}): {_zerg1}/25 HP\n");
                    }
                    else if (rnd == 1)
                    {
                        int dmg = Game.Rnd(4, 7);
                        _zerg2 -= dmg;
                        Text.Message($"Marine attacked Zergling 2 (-{dmg}): {_zerg2}/25 HP\n");
                    }
                }
                if (Game.Rnd(0, 4) > 2 && _zerg1 <= 0 && _zerg2 <= 0)
                {
                    _zerg1 = 35;
                    _zerg2 = 35;
                    Text.Message("Hatchery spawned Zerglings!", Color.Red);
                }
                if (Game.Rnd(0, 2) > 0 && _zerg1 > 0)
                {
                    Game.ChangeHealth(Game.Rnd(-4, -2), "Zergling");
                }
                if (Game.Rnd(0, 2) > 0 && _zerg2 > 0)
                {
                    Game.ChangeHealth(Game.Rnd(-4, -2), "Zergling");
                }
                Game.ChangeHealth(-1, "Creep");
            }
            Game.XP(10);
            Text.Message("The Hatchery slowly disintegrates, spitting out a new Gauss Rifle and clearing the creep.");
            ActII.Play();
        }
Пример #2
0
        public static void Play()
        {
            if (Data.MaxHealth == 0)
            {
                Data.MaxHealth = 35;
            }
            Data.Health = Data.MaxHealth;

            Console.WriteLine("\n");
            Text.Message("ACT II");
            Text.Message("Never on the Surface\n", Color.Purple);

            Game.HealthKit();
            Text.Message("\nYou keep walking on your path, carrying the new Gauss Rifle.");
            Text.Message("It was badly damaged, as it had been digested a Hatchery.");

            Data.Companions.Add(ActI.Marine);
            if (Data.Companions.Contains(ActI.Marine))
            {
                Text.Character("\nMarine", Game.List("Hey, I know someone who could fix that.",
                                                     "I have a friend who is a master at fixing things.",
                                                     "There is a guy that could take a look at that."));
                Game.Choice("'Contact him!'", "'Where is he now?'");
                if (Data.Answer == "a")
                {
                    Text.Character("\nYou", Game.List("Give him a call!", "Contact him!"), Color.Green);
                    Text.Message("The Marine reached into their pocket, and pulled out a strange device.");
                    Text.Character("Marine", Game.List("He said he would try to come to come here.", "He'll come to us, but we need to stay here."));
                    Text.Message("Marine's Friend will now come sooner!", Color.Yellow);
                }
                else if (Data.Answer == "b")
                {
                    Text.Character("\nYou", Game.List("Do you know what he's doing?", "Where is he now?"), Color.Green);
                    Text.Character("Marine", Game.List("I think he's trying to make a new weapon now.",
                                                       "I'm pretty sure he's testing out a new weapon for the Dominion."));
                }
            }

            Text.Message("\nImmediately after that, the ground starts rumbling.");
            if (Data.Companions.Contains(ActI.Marine))
            {
                Text.Character("Marine", Game.List("Is this an earthquake?", "Look out, this looks bad!"));
            }
            Text.Message("Out of the ground comes a monstrosity, with green saliva dripping from its tusks, melting the ground beneath it.", Color.Red);
            Text.Message("On its head are a few health items, which would be useful if you defeat it.", Color.Red);

            Roach.Add();
            Roach.Announce();

            Console.WriteLine("\n");

            while (Roach.HP() > 0)
            {
                Game.Choice("Attack", "Items", "Order");
                if (Data.Answer == "a")
                {
                    Roach.ChangeHP("Attacked Roach", Game.Rnd(-7, -4));
                }
                else if (Data.Answer == "b")
                {
                    Game.ChooseItem();
                }
                else if (Data.Answer == "c")
                {
                    Text.Message("\nCompanions:");
                    foreach (People person in Data.Companions)
                    {
                        Color.Text(Color.Yellow);
                        Console.WriteLine($"\n{person.Name}");
                        Color.Reset();
                        Console.Write("Description: ");
                        Text.Message(person.Description, ConsoleColor.Gray);
                    }
                    Console.WriteLine();
                    Game.Input();

                    if (Data.Answer == "marine" && Data.Companions.Contains(ActI.Marine))
                    {
                        ActI.Marine.Ordering();
                        Game.Choice("Attack", "Stimpack");
                        if (Data.Answer == "a")
                        {
                            Console.WriteLine();
                            for (int i = 0; i < ActI.Marine.Attacks(); i++)
                            {
                                Text.Message("Enemies:");
                                foreach (Enemy enemy in Data.Foes)
                                {
                                    Console.WriteLine($"  - {enemy.Name} ({enemy.Health}/{enemy.MaxHealth})");
                                    Thread.Sleep(250);
                                }
                                Game.Input();

                                if (Data.Answer == "roach" && Data.Foes.Contains(Roach))
                                {
                                    Roach.ChangeHP("Marine attacked Roach", ActI.Marine.Dmg());
                                }
                            }
                        }
                        else if (Data.Answer == "b")
                        {
                            ActI.Marine.ChangeMinDmg(-2);
                            ActI.Marine.ChangeMaxDmg(-4);
                            ActI.Marine.ChangeAttacks(2);
                            Text.Message("\nDamage was halved and now can attack twice.\n", Color.Yellow);
                        }
                    }
                }

                if (Data.Companions.Contains(ActI.Marine))
                {
                    if (Game.Rnd(0, 2) == 0 && !ActI.Marine.Order())
                    {
                        Roach.ChangeHP("Marine attacked Roach", ActI.Marine.Dmg());
                    }
                    ActI.Marine.Ordering();
                }

                if (Game.Rnd(0, 2) == 0)
                {
                    Game.ChangeHealth(Roach.Dmg(), "Roach");
                    if (Game.Rnd(0, 3) == 0 && Data.AcidEffect == 0)
                    {
                        Text.Message("You've been acidified!", Color.Yellow);
                        Data.AcidEffect = 1;
                    }
                }
                if (Data.AcidEffect > 0)
                {
                    Game.ChangeHealth(-Data.AcidEffect, "Acid");
                }
            }
            if (Data.Companions.Contains(ActI.Marine))
            {
                ActI.Marine.ChangeMinDmg(-4);
                ActI.Marine.ChangeMaxDmg(-7);
                ActI.Marine.ChangeAttacks(1);
                Text.Message("Marine's damage and attacks have reset.\n", Color.Yellow);
            }
        }