Beispiel #1
0
            public static void Spawn(CityLevel level, Room room)
            {
                if (Spawned || Dungeon.Depth <= 16 || Random.Int(20 - Dungeon.Depth) != 0)
                {
                    return;
                }

                var npc = new Imp();

                do
                {
                    npc.pos = level.RandomRespawnCell();
                }while (npc.pos == -1 || level.heaps[npc.pos] != null);

                level.mobs.Add(npc);
                OccupyCell(npc);

                Spawned     = true;
                Alternative = Random.Int(2) == 0;

                Given = false;

                do
                {
                    reward = (Ring)Generator.Random(Generator.Category.RING);
                }while (reward.cursed);

                reward.Upgrade(2);
                reward.cursed = true;
            }
Beispiel #2
0
        public static Level NewLevel()
        {
            Level = null;
            Actor.Clear();

            Depth++;
            if (Depth > Statistics.DeepestFloor)
            {
                Statistics.DeepestFloor = Depth;

                if (Statistics.QualifiedForNoKilling)
                {
                    Statistics.CompletedWithNoKilling = true;
                }
                else
                {
                    Statistics.CompletedWithNoKilling = false;
                }
            }

            Arrays.Fill(Visible, false);

            Level level;

            switch (Depth)
            {
            case 1:
            case 2:
            case 3:
            case 4:
                level = new SewerLevel();
                break;

            case 5:
                level = new SewerBossLevel();
                break;

            case 6:
            case 7:
            case 8:
            case 9:
                level = new PrisonLevel();
                break;

            case 10:
                level = new PrisonBossLevel();
                break;

            case 11:
            case 12:
            case 13:
            case 14:
                level = new CavesLevel();
                break;

            case 15:
                level = new CavesBossLevel();
                break;

            case 16:
            case 17:
            case 18:
            case 19:
                level = new CityLevel();
                break;

            case 20:
                level = new CityBossLevel();
                break;

            case 21:
                level = new LastShopLevel();
                break;

            case 22:
            case 23:
            case 24:
                level = new HallsLevel();
                break;

            case 25:
                level = new HallsBossLevel();
                break;

            case 26:
                level = new LastLevel();
                break;

            default:
                level = new DeadEndLevel();
                Statistics.DeepestFloor--;
                break;
            }

            level.Create();

            Statistics.QualifiedForNoKilling = !BossLevel();

            return(level);
        }