Esempio n. 1
0
        public ShrimpBattleTurnResults Attack(Random rng, ref ShrimpBattlePerson target)
        {
            var results = new ShrimpBattleTurnResults();

            results.DamageDealt = rng.Next(1, 11);
            target.Health      -= results.DamageDealt;
            results.Response    = $"{Name} hit {target.Name} with their mighty sword.";
            return(results);
        }
Esempio n. 2
0
        public (ShrimpBattleTurnResults proResults, ShrimpBattleTurnResults eneResults) DoTurn(ShrimpBattleActionType action)
        {
            if (Turns >= 15)
            {
                InBlitzMode = true;
            }
            var rng = new Random();
            // enemy AI
            ShrimpBattleActionType turn;
            var defaultPerson = new ShrimpBattlePerson(); // A default person used to make some decisions

            if ((Enemy.Health < defaultPerson.Health / 2) && Enemy.Mana > ShrimpBattlePerson.ManaNeededForHealingMagic && !InBlitzMode)
            {
                turn = ShrimpBattleActionType.Heal;
            }
            else
            {
                if (Protagonist.Health < defaultPerson.Health / 2 && Enemy.Mana > ShrimpBattlePerson.ManaNeededForOffensiveMagic)
                {
                    turn = ShrimpBattleActionType.UseMagic;
                }
                else
                {
                    turn = ShrimpBattleActionType.Attack;
                }
            }

            // turn
            var protagonist = Protagonist;
            var enemy       = Enemy;
            var proResults  = PerformActionForType(action, rng, protagonist, enemy, this);
            var eneResults  = PerformActionForType(turn, rng, enemy, protagonist, this);

            Protagonist = protagonist;
            Enemy       = enemy;

            Protagonist.Mana += 3;
            Enemy.Mana       += 3;

            Turns++;
            return(proResults, eneResults);
        }
Esempio n. 3
0
        public ShrimpBattleTurnResults UseMagic(Random rng, ref ShrimpBattlePerson target)
        {
            var results = new ShrimpBattleTurnResults();

            results.DamageDealt = rng.Next(10, 21);
            results.ManaUsed    = ManaNeededForOffensiveMagic;
            if (Mana - results.ManaUsed > -1)
            {
                target.Health   -= results.DamageDealt;
                Mana            -= results.ManaUsed;
                results.Response = $"{Name} cast magic on {target.Name}.";
            }
            else
            {
                results.Response    = $"{Name} didn't have enough mana to use their magic, so it didn't do anything.";
                results.DamageDealt = 0;
                results.ManaUsed    = 0;
            }
            return(results);
        }
Esempio n. 4
0
 public static ShrimpBattleTurnResults PerformActionForType(ShrimpBattleActionType type, Random rng, ShrimpBattlePerson attacker, ShrimpBattlePerson target, ShrimpBattle battle) => type switch
 {