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); }
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); }
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); }
public static ShrimpBattleTurnResults PerformActionForType(ShrimpBattleActionType type, Random rng, ShrimpBattlePerson attacker, ShrimpBattlePerson target, ShrimpBattle battle) => type switch {