public void ShouldThrowExceptionIfBattleOverAndActionPerformed()
        {
            var g = new Game
            {
                CurrentBattleDetails = new BattleDetails
                {
                    BattleStatus = BattleStatus.InBattle,
                    BattleMode = BattleMode.PlayerVsComputer
                },
                Player = new Player()
            };
            g.Player.SetName("Player");
            g.Player.ChangeAlliance(Alliance.TeamOne);
            g.CurrentBattleDetails.Participants.Add(new Participant
            {
                Character = g.Player,
                Status = ParticipantStatus.InBattle
            });
            var b = new Dumbass();
            b.ChangeAlliance(Alliance.TeamTwo);
            b.SetName("Dumbass");
            g.CurrentBattleDetails.Participants.Add(new Participant
            {
                Character = b,
                Status = ParticipantStatus.InBattle
            });
            g.EndBattle(Alliance.TeamOne);

            g.CurrentBattleDetails.Arena.AddCharacterToArena(g.Player, 0, 0);
            var tile = g.CurrentBattleDetails.Arena.SelectFloorTile(new ArenaFloorPosition(0, 1));
            var actions = g.Player.TargetTileAndSelectActions(tile);
            g.PerformPlayerAction(actions.Find(i => i.Name == "Run"));
        }
 public void ShouldPerformMoveAction()
 {
     var g = new Game
     {
         CurrentBattleDetails = new BattleDetails
         {
             BattleStatus = BattleStatus.InBattle,
             BattleMode = BattleMode.PlayerVsComputer
         },
         Player = new Player()
     };
     g.Player.SetName("Player");
     g.CurrentBattleDetails.Participants.Add(new Participant
     {
         Character = g.Player,
         Status = ParticipantStatus.InBattle
     });
     var b = new Dumbass();
     b.SetName("Dumbass");
     g.CurrentBattleDetails.Participants.Add(new Participant
     {
         Character = b,
         Status = ParticipantStatus.InBattle
     });
     g.CurrentBattleDetails.Arena.AddCharacterToArena(g.Player, Alliance.TeamOne, 0, 0);
     var tile = g.CurrentBattleDetails.Arena.SelectFloorTile(new ArenaFloorPosition(0, 1));
     var actions = g.Player.TargetTileAndSelectActions(tile);
     g.PerformPlayerAction(actions.Find(i => i.Name == "Run"));
     Assert.IsTrue(g.Player.ArenaLocation == tile);
     Assert.IsTrue(g.Player.CurrentAvailableActions == null);
 }
 public void ShouldMakeSureParticipantNamesUnique()
 {
     var t = new Tournament();
     var c = new Dumbass();
     c.SetName("Idiot");
     t.AddCharacterToTournament(c);
     var d = new Dumbass();
     d.SetName("Idiot");
     t.AddCharacterToTournament(d);
     Assert.IsTrue(t.Participants.Count == 2 && t.Participants.Count(i => i.Character.Name == "Idiot") == 1);
 }
 public void ShouldAddDumbassBotToArena()
 {
     var arena = new Arena();
     arena.BuildArenaFloor(5);
     var p = new Player();
     EquipmentHelper.EquipEquipment(p, new Sword());
     arena.AddCharacterToArena(p, Alliance.TeamOne);
     var b = new Dumbass();
     b.SetName("Dumbass Bot");
     EquipmentHelper.EquipEquipment(b, new Sword());
     arena.AddCharacterToArena(b, Alliance.TeamTwo);
 }
 public void ShouldThrowExceptionIfTournamentStartedWithoutEnoughValidParticipants()
 {
     var t = new Tournament();
     var c1 = new Dumbass();
     c1.SetName("1");
     t.Participants.Add(new Participant
     {
         Battles = 5,
         Character = c1,
         Status = ParticipantStatus.Active
     });
     var c2 = new Dumbass();
     c2.SetName("2");
     t.Participants.Add(new Participant
     {
         Battles = 1,
         Character = c2,
         Status = ParticipantStatus.KnockedOut
     });
     t.Start();
 }
 public void ShouldLevelPlayerUpWhenBotDefeated()
 {
     var g = new Game
     {
         CurrentBattleDetails = new BattleDetails
         {
             BattleMode = BattleMode.PlayerVsComputer,
             BattleStatus = BattleStatus.InBattle,
             BattleTurn = Alliance.TeamOne
         },
         Player = new Player()
     };
     g.Player.SetName("Player");
     var b = new Dumbass();
     b.SetName("Idiot");
     g.Tournament.AddCharacterToTournament(b);
     g.StartPlayerVsComputerTournament();
     g.CurrentBattleDetails.Arena.Characters.First(i => i is Dumbass).LoseHealth(200);
     g.EndBattle(g.Player.GetAlliance());
     g.ProcessBattleOver();
     Assert.IsTrue(g.Player.GetLevel() == 2);
 }
        public void ShouldAddMagicDamagePercentageToSpell()
        {
            var g = new Game
            {
                CurrentBattleDetails = new BattleDetails
                {
                    BattleMode = BattleMode.PlayerVsComputer,
                    BattleStatus = BattleStatus.InBattle,
                    BattleTurn = Alliance.TeamOne
                },
                Player = new Player()
            };
            g.Player.LevelUp();
            g.Player.ChooseSkill(new PathOfTheWizard());
            g.Player.SetName("Player");
            g.CurrentBattleDetails.Participants.Add(new Participant
            {
                Status = ParticipantStatus.InBattle,
                Character = g.Player
            });
            g.CurrentBattleDetails.Arena.BuildArenaFloor(10);
            g.Player.AddAction(new SpellSpear());
            g.Player.AddMagicDamageBonusPercent(1000);
            g.CurrentBattleDetails.Arena.AddCharacterToArena(g.Player, Alliance.TeamOne, 0, 0);
            var o = new Dumbass();
            o.SetName("Dumbass");
            g.CurrentBattleDetails.Participants.Add(new Participant
            {
                Status = ParticipantStatus.InBattle,
                Character = o
            });

            g.CurrentBattleDetails.Arena.AddCharacterToArena(o, Alliance.TeamTwo, 0, 1);
            var tile = g.CurrentBattleDetails.Arena.SelectFloorTile(new ArenaFloorPosition(0, 1));
            var actions = g.Player.TargetTileAndSelectActions(tile);
            g.PerformPlayerAction(actions.Find(i => i is SpellSpear));
            Assert.IsTrue(o.Health < 0);
        }
 public void ShouldResetCharacterAfterBattle()
 {
     const int playerStartingHealth = 150;
     var g = new Game
     {
         CurrentBattleDetails = new BattleDetails
         {
             BattleMode = BattleMode.PlayerVsComputer,
             BattleStatus = BattleStatus.InBattle,
             BattleTurn = Alliance.TeamOne
         },
         Player = new Player()
     };
     g.Player.SetName("Player");
     var b = new Dumbass();
     b.SetName("Idiot");
     g.Tournament.AddCharacterToTournament(b);
     g.StartPlayerVsComputerTournament();
     g.CurrentBattleDetails.Arena.Characters.First(i => i is Player).LoseHealth(50);
     Assert.IsTrue(g.Player.Health == playerStartingHealth - 50);
     g.EndBattle(g.Player.GetAlliance());
     g.ProcessBattleOver();
     Assert.IsTrue(g.Player.Health == playerStartingHealth);
 }