Ejemplo n.º 1
0
        public void CorrectlyGeneratesEnemyTeams_FromRandomizedConfiguration([Values(new [] { FighterType.Goblin, FighterType.Fairy }, new [] { FighterType.Warrior, FighterType.ShieldGuy })] IEnumerable <FighterType> enemyTypes)
        {
            List <FighterType> enemyTypesList = enemyTypes.ToList();

            TeamConfiguration bossConfiguration = new TeamConfiguration(new EnemyConfiguration(FighterType.Barbarian, 5), new EnemyConfiguration(FighterType.ShieldGuy, 2), new EnemyConfiguration(FighterType.ShieldGuy, 3));
            SubRegion         subRegion         = new SubRegion(WorldSubRegion.Fields, 1, new[] { new ChanceEvent <int>(2, 1) }, enemyTypesList, new BattlefieldConfiguration(bossConfiguration));

            SubRegion[] subRegions = { subRegion };

            Region fakeFieldsRegion = new Region(WorldRegion.Fields, new BattleMove[0], subRegions);

            _regionFactory.SetRegion(WorldRegion.Fields, fakeFieldsRegion);

            _regionManager = GetRegionManager();

            _humanFighter1.SetMove(_runawayMove);
            _humanFighter1.SetMoveTarget(_humanFighter1);

            _humanFighter2.SetMove(_doNothingMove);

            _chanceService.PushWhichEventsOccur(0, 0, 1); //first roll determines there will be 2 enemies, then the next 2 specify 1 of each type
            _regionManager.Battle(_battleManager, _humanTeam);

            Team enemyTeam = _battleManager.GetAllEnemyTeams()[0];

            Assert.IsTrue(enemyTypesList[0].IsCorrectType(enemyTeam.Fighters[0]));
            Assert.IsTrue(enemyTypesList[1].IsCorrectType(enemyTeam.Fighters[1]));
        }
Ejemplo n.º 2
0
        public void PrintsDefaultIntroString_UponEnteringRegion_NullOrEmptyIntroSuppliedToSubRegion([Values("", null)] string introMessage)
        {
            TeamConfiguration bossConfiguration = new TeamConfiguration(new EnemyConfiguration(FighterType.Egg, 1));
            SubRegion         subRegion         = new SubRegion(WorldSubRegion.Fields, 1, new[] { new ChanceEvent <int>(1, 1) }, new[] { FighterType.Egg }, new BattlefieldConfiguration(bossConfiguration),
                                                                regionIntro: introMessage);

            SubRegion[] subRegions = { subRegion };

            Region fakeFieldsRegion = new Region(WorldRegion.Fields, new BattleMove[0], subRegions);

            _regionFactory.SetRegion(WorldRegion.Fields, fakeFieldsRegion);

            _teamFactory.PushTeams(_oneEnemyTeam);
            _regionManager = GetRegionManager();

            _humanFighter1.SetMove(_runawayMove);
            _humanFighter1.SetMoveTarget(_humanFighter1);

            _humanFighter2.SetMove(_doNothingMove);

            _regionManager.Battle(_battleManager, _humanTeam);

            MockOutputMessage[] outputs = _output.GetOutputs();

            MockOutputMessage output = outputs[0];

            Assert.AreEqual($"You have entered the {WorldRegion.Fields} region\n", output.Message);

            output = outputs[1];

            Assert.AreEqual($"You have entered the {WorldSubRegion.Fields} sub region\n", output.Message);
        }
Ejemplo n.º 3
0
        public void CorrectlyPrintsIntro_UponEnteringRegion(
            [Values("Welcome to the Jungle!", "flee, for you have entered the graveyard!")] string regionIntroMessage,
            [Values("Welcome to a smaller subset of the jungle", "Spooky ghosts watch your every step")] string subRegionIntroMessage)
        {
            TeamConfiguration bossConfiguration = new TeamConfiguration(new EnemyConfiguration(FighterType.Egg, 1));
            SubRegion         subRegion         = new SubRegion(WorldSubRegion.Fields, 1, new [] { new ChanceEvent <int>(1, 1) }, new[] { FighterType.Egg }, new BattlefieldConfiguration(bossConfiguration, null),
                                                                regionIntro: subRegionIntroMessage);

            SubRegion[] subRegions = { subRegion };

            Region fakeFieldsRegion = new Region(WorldRegion.Fields, new BattleMove[0], subRegions, regionIntroMessage);

            _regionFactory.SetRegion(WorldRegion.Fields, fakeFieldsRegion);

            _teamFactory.PushTeams(_oneEnemyTeam);
            _regionManager = GetRegionManager();

            _humanFighter1.SetMove(_runawayMove);
            _humanFighter1.SetMoveTarget(_humanFighter1);

            _humanFighter2.SetMove(_doNothingMove);

            _regionManager.Battle(_battleManager, _humanTeam);

            MockOutputMessage[] outputs = _output.GetOutputs();

            MockOutputMessage output = outputs[0];

            Assert.AreEqual(regionIntroMessage + "\n", output.Message);

            output = outputs[1];

            Assert.AreEqual(subRegionIntroMessage + "\n", output.Message);
        }
Ejemplo n.º 4
0
        public void CorrectlySetsBattleMoves_UponEnteringRegion()
        {
            BattleMove superAttack = new AttackBattleMove("foo", TargetType.SingleEnemy, 80, 20, 5);
            BattleMove fastAttack  = new AttackBattleMove("bar", TargetType.SingleEnemy, 100, 0, 0, 2);

            Assert.False(_humanFighter1.AllSpecialMoves.Contains(superAttack));
            Assert.False(_humanFighter1.AllSpecialMoves.Contains(fastAttack));

            TeamConfiguration bossConfiguration = new TeamConfiguration(new EnemyConfiguration(FighterType.Egg, 1));
            SubRegion         subRegion         = new SubRegion(WorldSubRegion.Fields, 1, new [] { new ChanceEvent <int>(1, 1), }, new[] { FighterType.Egg }, new BattlefieldConfiguration(bossConfiguration, null));

            SubRegion[] subRegions = { subRegion };

            Region fakeFieldsRegion = new Region(WorldRegion.Fields, new[] { superAttack, fastAttack }, subRegions);

            _regionFactory.SetRegion(WorldRegion.Fields, fakeFieldsRegion);

            _teamFactory.PushTeams(_oneEnemyTeam);
            _regionManager = GetRegionManager();

            _humanFighter1.SetMove(_runawayMove);
            _humanFighter1.SetMoveTarget(_humanFighter1);

            _humanFighter2.SetMove(_doNothingMove);

            _regionManager.Battle(_battleManager, _humanTeam);

            Assert.True(_humanFighter1.AllSpecialMoves.Contains(superAttack));
            Assert.True(_humanFighter1.AllSpecialMoves.Contains(fastAttack));
        }
Ejemplo n.º 5
0
        public void CorrectlyGeneratesEnemyTeams_FromBattlefieldConfiguration([Values(new[] { FighterType.Goblin, FighterType.Fairy }, new[] { FighterType.Warrior, FighterType.ShieldGuy })] IEnumerable <FighterType> enemyTypes)
        {
            List <FighterType> enemyTypesList = enemyTypes.ToList();

            TeamConfiguration bossConfiguration = new TeamConfiguration(new EnemyConfiguration(FighterType.Barbarian, 5), new EnemyConfiguration(FighterType.ShieldGuy, 2), new EnemyConfiguration(FighterType.ShieldGuy, 3));

            ShadeGroupingConfiguration shadeGroupingConfig = new ShadeGroupingConfiguration(3, 1);

            BellType[] bellTypes = { BellType.Silver, BellType.Copper };
            BellTerrainConfiguration bellConfig   = new BellTerrainConfiguration(bellTypes);
            BattlefieldConfiguration battleConfig = new BattlefieldConfiguration(shadeGroupingConfig, bellConfig);

            List <ScriptedBattlefieldConfiguration> scriptedBattlefieldConfigurations = new List
                                                                                        <ScriptedBattlefieldConfiguration>
            {
                new ScriptedBattlefieldConfiguration(battleConfig, 0)
            };

            SubRegion subRegion = new SubRegion(WorldSubRegion.Fields,
                                                1,
                                                new[] { new ChanceEvent <int>(2, 1) },
                                                enemyTypesList,
                                                new BattlefieldConfiguration(bossConfiguration),
                                                scriptedBattlefieldConfigurations);

            SubRegion[] subRegions = { subRegion };

            Region fakeFieldsRegion = new Region(WorldRegion.Fields, new BattleMove[0], subRegions);

            _regionFactory.SetRegion(WorldRegion.Fields, fakeFieldsRegion);

            _regionManager = GetRegionManager();

            _humanFighter1.SetMove(_runawayMove);
            _humanFighter1.SetMoveTarget(_humanFighter1);

            _humanFighter2.SetMove(_doNothingMove);

            _regionManager.Battle(_battleManager, _humanTeam);

            Team            enemyTeam     = _battleManager.GetAllEnemyTeams()[0];
            List <IFighter> enemyFighters = enemyTeam.Fighters;

            Assert.AreEqual(3, enemyFighters.Count);
            Assert.True(enemyFighters.TrueForAll(ef => ef is Shade));

            List <TerrainInteractable> terrainInteractables = _battleManager.GetAllTerrainInteractableLists()[0];

            Assert.NotNull(terrainInteractables);
            Assert.AreEqual(2, terrainInteractables.Count);

            List <Bell> bells = terrainInteractables.OfType <Bell>().ToList();

            Assert.AreEqual(bellTypes.Length, bells.Count);
            for (var i = 0; i < bellTypes.Length; ++i)
            {
                Assert.AreEqual(bellTypes[i], bells[i].BellType);
            }
        }
Ejemplo n.º 6
0
        public void CorrectlyExecutesCutscene_SubRegionCompleted()
        {
            const MagicType firstBossEggType  = MagicType.Fire;
            const MagicType secondBossEggType = MagicType.Ice;

            ColorString[] firstSceneLines  = { new ColorString("foo"), new ColorString("bar") };
            SingleScene   firstSingleScene = new SingleScene(firstSceneLines);

            ColorString[] secondSceneLines  = { new ColorString("baz"), new ColorString("fwee") };
            SingleScene   secondSingleScene = new SingleScene(secondSceneLines);

            SingleScene[] scenes          = { firstSingleScene, secondSingleScene };
            Cutscene      regionACutscene = new Cutscene(scenes);

            TeamConfiguration firstBossConfiguration = new TeamConfiguration(new EnemyConfiguration(FighterType.Egg, 1, firstBossEggType));
            SubRegion         subRegionA             = new SubRegion(WorldSubRegion.Fields, 0, new ChanceEvent <int> [0], new FighterType[0], new BattlefieldConfiguration(firstBossConfiguration), regionCompletedCutscene: regionACutscene);

            TeamConfiguration secondBossConfiguration = new TeamConfiguration(new EnemyConfiguration(FighterType.Egg, 1, secondBossEggType));
            SubRegion         subRegionB = new SubRegion(WorldSubRegion.DesertCrypt, 0, new ChanceEvent <int> [0], new FighterType[0], new BattlefieldConfiguration(secondBossConfiguration));

            SubRegion[] subRegions = { subRegionA, subRegionB };

            Region fakeFieldsRegion = new Region(WorldRegion.Fields, new BattleMove[0], subRegions);

            _regionFactory.SetRegion(WorldRegion.Fields, fakeFieldsRegion);

            AreaMap <Region, WorldRegion> regionMap = new AreaMap <Region, WorldRegion>(fakeFieldsRegion, new MapPath <Region, WorldRegion>(fakeFieldsRegion));

            AreaMap <SubRegion, WorldSubRegion> subRegionMap = new AreaMap <SubRegion, WorldSubRegion>(subRegionA, new MapPath <SubRegion, WorldSubRegion>(subRegionA, subRegionB));

            _mapManager.SetRegionalMap(regionMap);
            _mapManager.SetSubRegionalMap(WorldRegion.Fields, subRegionMap);

            _regionManager = GetRegionManager();

            TestEnemyFighter target = (TestEnemyFighter)TestFighterFactory.GetFighter(TestFighterType.TestEnemy, 1);

            target.SetHealth(1, 0);

            _humanFighter1.SetMove(_basicAttackMove, 1);
            _humanFighter1.SetMove(_runawayMove, 1);
            _humanFighter1.SetMoveTarget(target);

            _humanFighter2.SetMove(_doNothingMove);

            _chanceService.PushAttackHitsNotCrit();

            _regionManager.Battle(_battleManager, _humanTeam);

            List <MockOutputMessage> outputs = _output.GetOutputs().ToList();

            List <ColorString> allCutsceneLines = firstSceneLines.Concat(secondSceneLines).ToList();

            foreach (ColorString cutsceneLine in allCutsceneLines)
            {
                Assert.NotNull(outputs.FirstOrDefault(output => output.Message == cutsceneLine.Value + "\n" && output.Color == cutsceneLine.Color));
            }
        }
Ejemplo n.º 7
0
        public void CorrectlyMovesToNextSubRegion_OnlyOneNextSubRegion()
        {
            const MagicType firstBossEggType  = MagicType.Fire;
            const MagicType secondBossEggType = MagicType.Ice;

            TeamConfiguration firstBossConfiguration = new TeamConfiguration(new EnemyConfiguration(FighterType.Egg, 1, firstBossEggType));
            SubRegion         subRegionA             = new SubRegion(WorldSubRegion.Fields, 0, new ChanceEvent <int> [0], new FighterType[0], new BattlefieldConfiguration(firstBossConfiguration));

            const string      secondRegionIntro       = "Who wants donuts?!?";
            TeamConfiguration secondBossConfiguration = new TeamConfiguration(new EnemyConfiguration(FighterType.Egg, 1, secondBossEggType));
            SubRegion         subRegionB = new SubRegion(WorldSubRegion.DesertCrypt, 0, new ChanceEvent <int> [0], new FighterType[0], new BattlefieldConfiguration(secondBossConfiguration), regionIntro: secondRegionIntro);

            SubRegion[] subRegions = { subRegionA, subRegionB };

            Region fakeFieldsRegion = new Region(WorldRegion.Fields, new BattleMove[0], subRegions);

            _regionFactory.SetRegion(WorldRegion.Fields, fakeFieldsRegion);

            AreaMap <Region, WorldRegion> regionMap = new AreaMap <Region, WorldRegion>(fakeFieldsRegion, new MapPath <Region, WorldRegion>(fakeFieldsRegion));

            AreaMap <SubRegion, WorldSubRegion> subRegionMap = new AreaMap <SubRegion, WorldSubRegion>(subRegionA, new MapPath <SubRegion, WorldSubRegion>(subRegionA, subRegionB));

            _mapManager.SetRegionalMap(regionMap);
            _mapManager.SetSubRegionalMap(WorldRegion.Fields, subRegionMap);

            _regionManager = GetRegionManager();

            TestEnemyFighter target = (TestEnemyFighter)TestFighterFactory.GetFighter(TestFighterType.TestEnemy, 1);

            target.SetHealth(1, 0);

            _humanFighter1.SetMove(_basicAttackMove, 1);
            _humanFighter1.SetMove(_runawayMove, 1);
            _humanFighter1.SetMoveTarget(target);

            _humanFighter2.SetMove(_doNothingMove);

            _chanceService.PushAttackHitsNotCrit();

            _regionManager.Battle(_battleManager, _humanTeam);

            MockOutputMessage[] outputs = _output.GetOutputs();

            Assert.NotNull(outputs.FirstOrDefault(o => o.Message == secondRegionIntro + "\n"));

            List <Team> enemyTeams = _battleManager.GetAllEnemyTeams();

            Assert.AreEqual(2, enemyTeams.Count);

            Egg secondBoss = enemyTeams[1].Fighters[0] as Egg;

            Assert.NotNull(secondBoss);
            Assert.AreEqual(secondBossEggType, secondBoss.MagicType);

            Assert.AreEqual(WorldSubRegion.DesertCrypt, subRegionMap.CurrentArea.AreaId);
        }
Ejemplo n.º 8
0
        public void CorrectNumberOfBattlesBeforeBoss([Range(1, 3)] int numberBattles)
        {
            TeamConfiguration bossConfiguration = new TeamConfiguration(new EnemyConfiguration(FighterType.Barbarian, 5), new EnemyConfiguration(FighterType.ShieldGuy, 2), new EnemyConfiguration(FighterType.ShieldGuy, 3));
            SubRegion         subRegion         = new SubRegion(WorldSubRegion.Fields, numberBattles, new[] { new ChanceEvent <int>(1, 1) }, new[] { FighterType.Egg },
                                                                new BattlefieldConfiguration(bossConfiguration));

            SubRegion[] subRegions = { subRegion };

            Region fakeFieldsRegion = new Region(WorldRegion.Fields, new BattleMove[0], subRegions);

            _regionFactory.SetRegion(WorldRegion.Fields, fakeFieldsRegion);

            for (int i = 0; i < numberBattles; ++i)
            {
                Team team = GetSingleEnemyTeam();
                _teamFactory.PushTeams(team);
                _chanceService.PushWhichEventOccurs(0);
            }

            _regionManager = GetRegionManager();

            IFighter target = TestFighterFactory.GetFighter(TestFighterType.TestEnemy, 1);

            target.PhysicalDamage(target.MaxHealth);

            _humanFighter1.SetMove(_basicAttackMove, numberBattles);
            _humanFighter1.SetMoveTarget(target);
            _chanceService.PushAttackHitsNotCrit(numberBattles);
            _humanFighter1.SetMove(_runawayMove);

            _humanFighter2.SetMove(_doNothingMove);

            _chanceService.PushWhichEventsOccur(0, 0, 0, 0, 0, 0); //used for when the bosses are selecting their moves

            _regionManager.Battle(_battleManager, _humanTeam);

            List <Team> enemyTeams = _battleManager.GetAllEnemyTeams();

            Assert.AreEqual(numberBattles + 1, enemyTeams.Count);

            Team bossTeam = enemyTeams[numberBattles];

            Assert.AreEqual(3, bossTeam.Fighters.Count);

            Assert.True(bossTeam.Fighters.Exists(f => f is Barbarian && f.Level == 5));
            Assert.True(bossTeam.Fighters.Exists(f => f is ShieldGuy && f.Level == 2));
            Assert.True(bossTeam.Fighters.Exists(f => f is ShieldGuy && f.Level == 3));
        }
Ejemplo n.º 9
0
        public void CorrectlyMovesToNextSubRegion_MultipleNextSubRegions([Values(1, 2)] int selectedArea)
        {
            const int groupingId = 10;

            _decisionManager.SetGroupingChoice(selectedArea - 1);
            TeamConfiguration firstBossConfiguration = new TeamConfiguration(new EnemyConfiguration(FighterType.Egg, 1, MagicType.Fire));
            SubRegion         firstSubRegion         = new SubRegion(WorldSubRegion.Fields, 0, new ChanceEvent <int> [0], new FighterType[0], new BattlefieldConfiguration(firstBossConfiguration));

            FighterType       bossA   = FighterType.Barbarian;
            WorldSubRegion    regionA = WorldSubRegion.DesertCrypt;
            TeamConfiguration secondBossConfiguration = new TeamConfiguration(new EnemyConfiguration(bossA, 1));
            SubRegion         subRegionA = new SubRegion(regionA, 0, new ChanceEvent <int> [0], new FighterType[0], new BattlefieldConfiguration(secondBossConfiguration));

            FighterType       bossB   = FighterType.MegaChicken;
            WorldSubRegion    regionB = WorldSubRegion.Oasis;
            TeamConfiguration thirdBossConfiguration = new TeamConfiguration(new EnemyConfiguration(bossB, 1));
            SubRegion         subRegionB             = new SubRegion(regionB, 0, new ChanceEvent <int> [0], new FighterType[0], new BattlefieldConfiguration(thirdBossConfiguration));

            SubRegion[] subRegions = { firstSubRegion, subRegionA, subRegionB };

            Region fakeFieldsRegion = new Region(WorldRegion.Fields, new BattleMove[0], subRegions);

            _regionFactory.SetRegion(WorldRegion.Fields, fakeFieldsRegion);

            AreaMap <Region, WorldRegion> regionMap = new AreaMap <Region, WorldRegion>(fakeFieldsRegion, new MapPath <Region, WorldRegion>(fakeFieldsRegion));

            MapGrouping <SubRegion, WorldSubRegion> grouping = new MapGrouping <SubRegion, WorldSubRegion>(groupingId, subRegionA, subRegionB);

            AreaMap <SubRegion, WorldSubRegion> subRegionMap = new AreaMap <SubRegion, WorldSubRegion>(firstSubRegion, new MapPath <SubRegion, WorldSubRegion>(firstSubRegion, grouping));

            _mapManager.SetRegionalMap(regionMap);
            _mapManager.SetSubRegionalMap(WorldRegion.Fields, subRegionMap);

            _regionManager = GetRegionManager();

            TestEnemyFighter target = (TestEnemyFighter)TestFighterFactory.GetFighter(TestFighterType.TestEnemy, 1);

            target.SetHealth(1, 0);

            _humanFighter1.SetMove(_basicAttackMove, 1);
            _humanFighter1.SetMove(_runawayMove, 1);
            _humanFighter1.SetMoveTarget(target);

            _humanFighter2.SetMove(_doNothingMove);

            _chanceService.PushAttackHitsNotCrit();

            _regionManager.Battle(_battleManager, _humanTeam);

            List <Team> enemyTeams = _battleManager.GetAllEnemyTeams();

            Assert.AreEqual(2, enemyTeams.Count);

            IFighter secondBoss = enemyTeams[1].Fighters[0];

            FighterType    selectedBossType   = selectedArea == 1 ? bossA : bossB;
            WorldSubRegion selectedBossRegion = selectedArea == 1 ? regionA : regionB;

            Assert.NotNull(secondBoss);
            Assert.True(selectedBossType.IsCorrectType(secondBoss));
            Assert.AreEqual(selectedBossRegion, subRegionMap.CurrentArea.AreaId);
        }
Ejemplo n.º 10
0
        public void CorrectlyMovesToNextSubRegion_TwoNextSubRegionsButOneIsLocked()
        {
            const MagicType firstBossEggType  = MagicType.Fire;
            const MagicType secondBossEggType = MagicType.Ice;

            TeamConfiguration firstBossConfiguration =
                new TeamConfiguration(new EnemyConfiguration(FighterType.Egg, 1, firstBossEggType));
            SubRegion subRegionA = new SubRegion(WorldSubRegion.Fields, 0, new ChanceEvent <int> [0], new FighterType[0],
                                                 new BattlefieldConfiguration(firstBossConfiguration));

            const string      secondRegionIntro       = "Who wants donuts?!?";
            TeamConfiguration secondBossConfiguration =
                new TeamConfiguration(new EnemyConfiguration(FighterType.Egg, 1, secondBossEggType));
            SubRegion subRegionB = new SubRegion(WorldSubRegion.DesertCrypt, 0, new ChanceEvent <int> [0],
                                                 new FighterType[0], new BattlefieldConfiguration(secondBossConfiguration), regionIntro: secondRegionIntro);

            const string      lockedRegionIntro         = "watch me do a flip!";
            TeamConfiguration lockedRegionConfiguration =
                new TeamConfiguration(new EnemyConfiguration(FighterType.Goblin, 1));
            SubRegion lockedSubRegion = new SubRegion(WorldSubRegion.AncientLibrary, 0, new ChanceEvent <int> [0],
                                                      new FighterType[0], new BattlefieldConfiguration(lockedRegionConfiguration), regionIntro: lockedRegionIntro);

            SubRegion[] subRegions = { subRegionA, subRegionB, lockedSubRegion };

            Region fakeFieldsRegion = new Region(WorldRegion.Fields, new BattleMove[0], subRegions);

            _regionFactory.SetRegion(WorldRegion.Fields, fakeFieldsRegion);

            AreaMap <Region, WorldRegion> regionMap = new AreaMap <Region, WorldRegion>(fakeFieldsRegion, new MapPath <Region, WorldRegion>(fakeFieldsRegion));

            MapGrouping <SubRegion, WorldSubRegion> grouping = new MapGrouping <SubRegion, WorldSubRegion>(0, subRegionB, lockedSubRegion);

            grouping.Lock(sr => sr.AreaId == WorldSubRegion.AncientLibrary);

            AreaMap <SubRegion, WorldSubRegion> subRegionMap = new AreaMap <SubRegion, WorldSubRegion>(subRegionA, new MapPath <SubRegion, WorldSubRegion>(subRegionA, grouping));

            _mapManager.SetRegionalMap(regionMap);
            _mapManager.SetSubRegionalMap(WorldRegion.Fields, subRegionMap);

            _regionManager = GetRegionManager();

            TestEnemyFighter target = (TestEnemyFighter)TestFighterFactory.GetFighter(TestFighterType.TestEnemy, 1);

            target.SetHealth(1, 0);

            _humanFighter1.SetMove(_basicAttackMove, 1);
            _humanFighter1.SetMove(_runawayMove, 1);
            _humanFighter1.SetMoveTarget(target);

            _humanFighter2.SetMove(_doNothingMove);

            _chanceService.PushAttackHitsNotCrit();

            _regionManager.Battle(_battleManager, _humanTeam);

            MockOutputMessage[] outputs = _output.GetOutputs();

            Assert.Null(outputs.FirstOrDefault(o => o.Message == lockedRegionIntro + "\n"));

            List <Team> enemyTeams = _battleManager.GetAllEnemyTeams();

            Assert.AreEqual(2, enemyTeams.Count);

            Goblin lockedBoss = enemyTeams[1].Fighters[0] as Goblin;

            Assert.Null(lockedBoss);
        }