Esempio n. 1
0
        protected bool CanGetBossRoomAndDefeat(Dungeon dungeon, GraphResult result)
        {
            bool bossRoom = false;
            bool bossWin  = false;

            switch (dungeon.BossRoomId)
            {
            case RoomIdConstants.R200_EasternPalace_ArmosKnights:
                bossRoom = result.NodesVisited.Any(x => x.LogicalId == "eastern-armos");
                bossWin  = result.ItemsObtained.Any(x => x.LogicalId == "[Eastern Boss]");
                break;

            case RoomIdConstants.R51_DesertPalace_Lanmolas:
                bossRoom = result.NodesVisited.Any(x => x.LogicalId == "desert-lanmolas");
                bossWin  = result.ItemsObtained.Any(x => x.LogicalId == "[Desert Boss]");
                break;

            case RoomIdConstants.R7_TowerofHera_Moldorm:
                bossRoom = result.NodesVisited.Any(x => x.LogicalId == "hera-moldorm");
                bossWin  = result.ItemsObtained.Any(x => x.LogicalId == "[Hera Boss]");
                break;

            case RoomIdConstants.R90_PalaceofDarkness_HelmasaurKing:
                bossRoom = result.NodesVisited.Any(x => x.LogicalId == "pod-helmasaur");
                bossWin  = result.ItemsObtained.Any(x => x.LogicalId == "[PoD Boss]");
                break;

            case RoomIdConstants.R6_SwampPalace_Arrghus:
                bossRoom = result.NodesVisited.Any(x => x.LogicalId == "swamp-arrghus");
                bossWin  = result.ItemsObtained.Any(x => x.LogicalId == "[Swamp Boss]");
                break;

            case RoomIdConstants.R41_SkullWoods_Mothula:
                bossRoom = result.NodesVisited.Any(x => x.LogicalId == "skull-mothula");
                bossWin  = result.ItemsObtained.Any(x => x.LogicalId == "[Skull Boss]");
                break;

            case RoomIdConstants.R172_ThievesTown_BlindTheThief:
                bossRoom = result.NodesVisited.Any(x => x.LogicalId == "thieves-blind");
                bossWin  = result.ItemsObtained.Any(x => x.LogicalId == "[Thieves Boss]");
                break;

            case RoomIdConstants.R222_IcePalace_Kholdstare:
                bossRoom = result.NodesVisited.Any(x => x.LogicalId == "ice-kholdstare");
                bossWin  = result.ItemsObtained.Any(x => x.LogicalId == "[Ice Boss]");
                break;

            case RoomIdConstants.R144_MiseryMire_Vitreous:
                bossRoom = result.NodesVisited.Any(x => x.LogicalId == "mire-vitreous");
                bossWin  = result.ItemsObtained.Any(x => x.LogicalId == "[Mire Boss]");
                break;

            case RoomIdConstants.R164_TurtleRock_Trinexx:
                bossRoom = result.NodesVisited.Any(x => x.LogicalId == "turtle-trinexx");
                bossWin  = result.ItemsObtained.Any(x => x.LogicalId == "[Turtle Boss]");
                break;

            case RoomIdConstants.R28_GanonsTower_IceArmos:
                bossRoom = result.NodesVisited.Any(x => x.LogicalId == "gt-armos");
                bossWin  = result.ItemsObtained.Any(x => x.LogicalId == "[GT Armos Boss]");
                break;

            case RoomIdConstants.R108_GanonsTower_LanmolasRoom:
                bossRoom = result.NodesVisited.Any(x => x.LogicalId == "gt-lanmolas");
                bossWin  = result.ItemsObtained.Any(x => x.LogicalId == "[GT Lanmolas Boss]");
                break;

            case RoomIdConstants.R77_GanonsTower_MoldormRoom:
                bossRoom = result.NodesVisited.Any(x => x.LogicalId == "gt-moldorm");
                bossWin  = result.ItemsObtained.Any(x => x.LogicalId == "[GT Moldorm Boss]");
                break;
            }
            // if we can't even get to the room no need to switch it, because something else is blocking the seed
            return(!bossRoom || bossWin);
        }
Esempio n. 2
0
 public override Boss GetRandomBoss(Dungeon dungeon, Graph graph)
 {
     return(Boss.GetRandomBoss(rand, dungeon, dungeon.DisallowedBosses, graph));
 }