Пример #1
0
        private void Trip(Fighter attacker, Fighter target, string customAttack)
        {
            if (target.findStatus(target, "Prone") != null)
            {
                Console.WriteLine("");
                Writer.writeFighter(target, "name");
                Console.Write("'s Already prone.");
                return;
            }
            if (target.findStatus(target, "Dodge") != null)
            {
                Writer.writeFighter(target, "name");
                Console.Write(" dodged the attack!");
                target.fighterStatus.Remove(target.findStatus(target, "Guard"));
                return;
            }

            if (target.findStatus(target, "Rage").statusDuration > 0)
            {
                Console.WriteLine("");
                Writer.writeFighter(attacker, "name");
                Console.Write(" made ");
                Writer.writeFighter(target, "name");
                Console.Write(" stumble... for a minute...");
                Console.ReadLine();
                Console.WriteLine("... ");
                Writer.writeFighter(target, "name");
                Console.Write(" does not look happy about it...");
                target.findStatus(target, "Rage soak").statusDuration += 10;
                return;
            }
            Console.WriteLine("");
            Writer.writeFighter(attacker, "name");
            Console.Write($" used {customAttack}");
            if (target.die > 3)
            {
                Console.WriteLine("");
                Writer.writeFighter(target, "name");
                Console.Write(" evaded the attack");
                return;
            }
            if (attacker.findStatus(attacker, "Guard") != null)
            {
                attacker.fighterStatus.Remove(attacker.findStatus(target, "Guard"));
            }

            if (attacker.findStatus(attacker, "Dodge") != null)
            {
                attacker.fighterStatus.Remove(attacker.findStatus(target, "Dodge"));
            }

            Console.WriteLine("");
            Writer.writeFighter(target, "name");
            Console.Write(" fell to ground with a hard smash.");
            target.fighterStatus.Add(new FighterStatus("Prone", 1));
        }
Пример #2
0
        private void Heal(Fighter target, Fighter attacker, string customAttack)
        {
            if (attacker.findStatus(attacker, "Dodge") != null)
            {
                target.fighterStatus.Remove(target.findStatus(target, "Dodge"));
            }

            if (attacker.findStatus(attacker, "Guard") != null)
            {
                attacker.fighterStatus.Remove(attacker.findStatus(target, "Guard"));
            }

            if (attacker.findStatus(attacker, "Dodge") != null)
            {
                attacker.fighterStatus.Remove(target.findStatus(target, "Dodge"));
            }
            Writer.writeFighter(target, "name");
            Console.Write($" used {customAttack}.");
            if (attacker.findStatus(attacker, "Prone") == null)
            {
                if (attacker.die > target.die)
                {
                    Console.WriteLine("");
                    Writer.writeFighter(attacker, "name");
                    Console.Write(" prevented the healing.");
                    target.findStatus(target, "Heal").statusDuration--;
                    Console.ReadLine();
                    return;
                }
            }



            var healthLost = target.maxHealth - target.health;

            if (healthLost >= 30)
            {
                Console.WriteLine("");
                Writer.writeFighter(target, "name");
                Console.Write(" recovered 30HP.");
                target.health += 30;
                target.findStatus(target, "Heal").statusDuration--;
                Console.ReadLine();
                return;
            }
            Writer.writeFighter(target, "name");
            Console.Write($" recovered {healthLost}HP.");
            target.findStatus(target, "Heal").statusDuration--;
            target.health += healthLost;
        }
Пример #3
0
        public void Dodge(Fighter target, Fighter attacker, string customAttack)
        {
            if (target.findStatus(attacker, "Dodge") != null)
            {
                target.fighterStatus.Remove(target.findStatus(target, "Dodge"));
            }

            Console.WriteLine("");
            Writer.writeFighter(target, "name");
            Console.Write(" is trying to predict {attacker.name}'s movement.");
            if (target.die < 4)
            {
                target.fighterStatus.Add(new FighterStatus("Dodge", 1));
            }
            if (attacker.findStatus(attacker, "Guard") != null)
            {
                attacker.fighterStatus.Remove(attacker.findStatus(target, "Guard"));
            }
        }
Пример #4
0
        public bool StunCheck(Fighter attacker, Fighter target)
        {
            if (target.findStatus(target, "Guard") != null)
            {
                target.fighterStatus.Remove(target.findStatus(target, "Guard"));
            }

            int duration = attacker.findStatus(attacker, "Stunned").statusDuration;

            if (duration == 0)
            {
                Console.WriteLine("Uh-oh...");
                Writer.writeFighter(attacker, "name");
                Console.Write(" is no longer dazed!");
                attacker.fighterStatus.Remove(attacker.findStatus(attacker, "Stunned"));
                attacker.fighterStatus.Remove(attacker.findStatus(attacker, "Is Stunned"));

                return(false);
            }

            if (attacker.die > 2)
            {
                attacker.findStatus(attacker, "Is Stunned").statusDuration = 0;
                attacker.findStatus(attacker, "Stunned").statusDuration--;
                return(false);
            }

            Console.WriteLine("");
            Writer.writeFighter(attacker, "name");
            Console.Write(" is still weary from ");
            Writer.writeFighter(target, "name");
            Console.Write("'s attack");
            attacker.findStatus(attacker, "Stunned").statusDuration--;
            attacker.findStatus(attacker, "Is Stunned").statusDuration = 1;
            return(true);
        }
Пример #5
0
        private void Tackle(Fighter attacker, Fighter target, string customAttack)
        {
            Console.WriteLine("");
            Writer.writeFighter(attacker, "name");
            Console.Write($" used {customAttack}!");

            if (target.findStatus(target, "Prone") == null)
            {
                if (attacker.die < target.die)
                {
                    Console.WriteLine("");
                    Writer.writeFighter(attacker, "name");
                    Console.Write("'s attack missed.");

                    return;
                }
            }


            if (target.findStatus(target, "Dodge") != null)
            {
                Console.WriteLine("");
                Writer.writeFighter(target, "name");
                Console.Write(" dodged the attack!");
                target.fighterStatus.Remove(target.findStatus(target, "Dodge"));
                return;
            }

            if (target.findStatus(target, "Guard") != null)
            {
                Console.WriteLine("");
                Writer.writeFighter(target, "name");
                Console.Write(" was prepared for the attack and took only 5HP Damage.");
                target.health += -5;
                target.fighterStatus.Remove(target.findStatus(target, "Guard"));
                Console.ReadLine();
                return;
            }

            if (target.findStatus(target, "Rage soak").statusDuration > 0)
            {
                target.findStatus(target, "Rage soak").statusDuration += 10;
            }

            Console.WriteLine("");
            Writer.writeFighter(target, "name");
            Console.Write(" took 10HP Damage.");
            target.health += -10;
        }
Пример #6
0
        public void Stun(Fighter attacker, Fighter target, string customAttack)
        {
            if (target.findStatus(target, "Stunned") != null)
            {
                Console.WriteLine("");
                Writer.writeFighter(target, "name");
                Console.Write("'s already stunned.");
                Console.WriteLine("");
                Writer.writeFighter(attacker, "name");
                Console.Write("'s attack had no added effect");
                return;
            }

            Console.WriteLine("");
            Writer.writeFighter(attacker, "name");
            Console.Write($" used {customAttack}.");
            if (target.findStatus(target, "Dodge") != null)
            {
                Console.WriteLine("");
                Writer.writeFighter(target, "name");
                Console.Write(" dodged the attack!");
                target.fighterStatus.Remove(target.findStatus(target, "Guard"));
                return;
            }

            if (target.findStatus(target, "Prone") == null)
            {
                if (attacker.die < target.die)
                {
                    Console.WriteLine("");
                    Writer.writeFighter(attacker, "name");
                    Console.Write("'s attack missed.");

                    return;
                }
            }

            if (target.findStatus(target, "Guard") != null)
            {
                target.fighterStatus.Remove(target.findStatus(target, "Guard"));
            }
            Console.WriteLine("");
            Writer.writeFighter(target, "name");
            Console.Write(" is dazed.");
            target.fighterStatus.Add(new FighterStatus("Stunned", 4));
            target.fighterStatus.Add(new FighterStatus("Is Stunned", 0));
            StunCheck(target, attacker);
        }
Пример #7
0
        public void Rage(Fighter attacker, Fighter target, string customAttack)
        {
            var duration = attacker.findStatus(attacker, "Rage").statusDuration;
            var rageSoak = attacker.findStatus(attacker, "Rage soak").statusDuration;

            if (duration == 2)
            {
                Console.WriteLine("");
                Writer.writeFighter(attacker, "name");

                Console.Write(" unleached his frenzy in a might blow!");
                attacker.findStatus(attacker, "Rage soak").statusDuration += 10;
                rageSoak = attacker.findStatus(attacker, "Rage soak").statusDuration;

                if (target.findStatus(target, "Dodge") != null)
                {
                    Writer.writeFighter(target, "name");
                    Console.Write(" dodged the attack!");
                    target.fighterStatus.Remove(target.findStatus(target, "Dodge"));
                    return;
                }
                if (target.findStatus(target, "Guard") != null)
                {
                    Console.WriteLine("");
                    Writer.writeFighter(target, "name");
                    Console.Write($" was prepared for the attack and took only {rageSoak/2}HP Damage.");
                    target.health -= (rageSoak / 2);
                    target.fighterStatus.Remove(target.findStatus(target, "Guard"));
                    return;
                }

                Console.WriteLine("");
                Writer.writeFighter(target, "name");
                Console.Write($" took {rageSoak} damage!");
                target.health -= rageSoak;
                attacker.findStatus(attacker, "Rage").statusDuration      = 0;
                attacker.findStatus(attacker, "Rage soak").statusDuration = 0;
                if (target.findStatus(target, "Rage soak").statusDuration > 0)
                {
                    target.findStatus(target, "Rage soak").statusDuration += rageSoak;
                }
                return;
            }

            if (duration == 1)
            {
                if (target.findStatus(target, "Dodge") != null)
                {
                    target.fighterStatus.Remove(target.findStatus(target, "Dodge"));
                }

                Console.WriteLine("");
                Writer.writeFighter(attacker, "name");
                Console.Write("'s rage is building...");
                attacker.findStatus(attacker, "Rage soak").statusDuration += 10;
                attacker.findStatus(attacker, "Rage").statusDuration       = 2;
                return;
            }

            if (target.findStatus(target, "Dodge") != null)
            {
                target.fighterStatus.Remove(target.findStatus(target, "Dodge"));
            }

            Console.WriteLine("");
            Writer.writeFighter(attacker, "name");
            Console.Write(" has begun gathering his rage for ");
            Writer.writeFighter(target, "name");
            attacker.findStatus(attacker, "Rage").statusDuration = 1;

            attacker.findStatus(attacker, "Rage soak").statusDuration = 10;
        }
Пример #8
0
        public void Rnd(Fighter fighter, Fighter target)
        {
            Console.Clear();
            if (fighter.name == player.name)
            {
                Console.ForegroundColor = ConsoleColor.Cyan;
            }
            else
            {
                Console.ForegroundColor = ConsoleColor.Red;
            }
            Console.WriteLine($"{fighter.name}: {fighter.health}HP");
            if (target.name == player.name)
            {
                Console.ForegroundColor = ConsoleColor.Cyan;
            }
            else
            {
                Console.ForegroundColor = ConsoleColor.Red;
            }
            Console.WriteLine($"{target.name}: {target.health}HP");
            Console.ResetColor();
            Console.WriteLine();



            if (fighter.findStatus(fighter, "Rage").statusDuration > 0)
            {
                var rageAttackIndex = fighter.attacks.FindIndex(attackEffect => attackEffect.effect == "Rage");

                fighter.attacks[rageAttackIndex].invokeAttacks(fighter, target);
                Console.ReadLine();
                return;
            }
            if (fighter.findStatus(fighter, "Prone") != null)
            {
                if (fighter.findStatus(fighter, "Prone").statusDuration == 1)
                {
                    Console.WriteLine("");
                    writeFighter(fighter, "name");
                    Console.Write("'s starts to get back on their feet...");
                    fighter.findStatus(fighter, "Prone").statusDuration = 2;
                    Console.ReadLine();
                    return;
                }

                Console.WriteLine("");
                writeFighter(fighter, "name");
                Console.ResetColor();
                Console.Write(" is back up again!");
                fighter.fighterStatus.Remove(fighter.findStatus(fighter, "Prone"));
                Console.ReadLine();
                return;
            }

            Console.WriteLine("");
            Console.WriteLine("");
            Console.Write("What will ");
            writeFighter(fighter, "name");
            Console.Write(" do?");

            var selectAction = new Menu();

            Console.ReadLine();
            selectAction.options = new[]
            {
                $"{fighter.attacks[0].attack} ({fighter.attacks[0].effect})",
                $"{fighter.attacks[1].attack} ({fighter.attacks[1].effect})",
                $"{fighter.attacks[2].attack} ({fighter.attacks[2].effect})",
                $"{fighter.attacks[3].attack} ({fighter.attacks[3].effect})",
                "Do nothing",
                "Give up"
            };

            selectAction.Render();
            if (selectAction.getSelected() < 4)
            {
                if (fighter.attacks[selectAction.getSelected()].effect == "Heal")
                {
                    if (fighter.health == fighter.maxHealth)
                    {
                        Console.WriteLine("");
                        writeFighter(fighter, "name");
                        Console.Write("'s health is already full!");
                        Console.ReadLine();
                        Rnd(fighter, target);
                        return;
                    }

                    if (fighter.findStatus(fighter, "Heal").statusDuration < 1)
                    {
                        Console.WriteLine("You're out of Heals!");
                        Console.ReadLine();
                        Rnd(fighter, target);
                        return;
                    }


                    fighter.attacks[selectAction.getSelected()].invokeAttacks(fighter, target);
                    return;
                }
            }


            if (fighter.findStatus(fighter, "Stunned") != null && selectAction.getSelected() < 4)
            {
                if (fighter.attacks[selectAction.getSelected()].StunCheck(fighter, target))
                {
                    return;
                }
            }

            switch (selectAction.getSelected())
            {
            case 0:


                fighter.attacks[0].invokeAttacks(fighter, target);

                break;

            case 1:


                fighter.attacks[1].invokeAttacks(fighter, target);
                break;

            case 2:

                fighter.attacks[2].invokeAttacks(fighter, target);
                break;

            case 3:

                fighter.attacks[3].invokeAttacks(fighter, target);
                break;

            case 4:
                Console.WriteLine("");
                writeFighter(fighter, "name");
                Console.Write(" chose not to attack.");
                break;

            case 5:
                Console.WriteLine("");
                writeFighter(fighter, "name");
                Console.Write(" surrendered!");
                fighter.health = 0;
                break;
            }

            Console.ReadLine();
            Console.Clear();
        }
Пример #9
0
        public void FoeAttack(Fighter foe, Fighter target)
        {
            if (foe.health < 1)
            {
                return;
            }
            int attackIndex = foe.randomAttack;

            if (foe.attacks[attackIndex].effect == "Heal")
            {
                if (foe.health == foe.maxHealth)
                {
                    FoeAttack(foe, target);
                    return;
                }

                if (foe.findStatus(foe, "Heal").statusDuration < 1)
                {
                    FoeAttack(foe, target);
                    return;
                }


                foe.attacks[attackIndex].invokeAttacks(foe, target);
                return;
            }
            if (foe.findStatus(foe, "Stunned") != null)
            {
                if (foe.attacks[attackIndex].StunCheck(foe, target))
                {
                    return;
                }
            }

            if (foe.findStatus(foe, "Rage").statusDuration > 0)
            {
                var rageAttackIndex = foe.attacks.FindIndex(attackEffect => attackEffect.effect == "Rage");

                foe.attacks[rageAttackIndex].invokeAttacks(foe, target);
                return;
            }

            if (foe.findStatus(foe, "Prone") != null)
            {
                if (foe.findStatus(foe, "Prone").statusDuration == 1)
                {
                    writeFighter(foe, "name");
                    Console.Write("{'s starts to get back on their feet...");
                    foe.findStatus(foe, "Prone").statusDuration = 2;
                    Console.ReadLine();
                    return;
                }
                writeFighter(foe, "name");
                Console.Write(" is back up again!");
                foe.fighterStatus.Remove(foe.findStatus(foe, "Prone"));
                Console.ReadLine();
                return;
            }

            switch (attackIndex)
            {
            case 0:

                foe.attacks[0].invokeAttacks(foe, target);
                break;

            case 1:

                foe.attacks[1].invokeAttacks(foe, target);
                break;

            case 2:

                foe.attacks[2].invokeAttacks(foe, target);
                break;

            case 3:
                foe.attacks[3].invokeAttacks(foe, target);
                break;
            }
        }