REM Player Logic and basic settings
    LEVEL_VERSION(1)
    RUN_AFTER_VICTORY(1)

    SET_GENERATE_SPEED(400)
    START_MONEY(ALL_PLAYERS,5000)
    MAX_CREATURES(ALL_PLAYERS,10)
    SET_PLAYER_COLOR(PLAYER0, BLUE)
    COMPUTER_PLAYER(PLAYER5,ROAMING)

    REM This is there so the stylemixing doesn't break near the hidden realm special
    SET_TEXTURE(PLAYER0, STANDARD)

REM Music Logic - atmospheric music at the start and then transition when the player goes out

    SET_MUSIC("campaign_music/teensie_ambience.mp3")
    IF_ACTION_POINT(2, PLAYER0)
        SET_MUSIC("campaign_music/wfto_labyrinth.mp3")
    ENDIF
    IF_ACTION_POINT(3, PLAYER0)
        SET_MUSIC("campaign_music/wfto_labyrinth.mp3")
    ENDIF
    IF_ACTION_POINT(4, PLAYER0)
        SET_MUSIC("campaign_music/wfto_labyrinth.mp3")
    ENDIF
    IF_ACTION_POINT(5, PLAYER0)
        SET_MUSIC("campaign_music/wfto_labyrinth.mp3")
    ENDIF

REM Basic settings

    REM Regular creatures
    IF (PLAYER0, CAMPAIGN_FLAG5 == 0)
        ADD_CREATURE_TO_POOL(WIZARD,2)
        ADD_CREATURE_TO_POOL(BARBARIAN,2)
        ADD_CREATURE_TO_POOL(ARCHER,2)
        ADD_CREATURE_TO_POOL(MONK,2)
        ADD_CREATURE_TO_POOL(DWARFA,2)
        ADD_CREATURE_TO_POOL(WITCH,2)
        ADD_CREATURE_TO_POOL(GIANT,2)
        ADD_CREATURE_TO_POOL(FAIRY,2)
        ADD_CREATURE_TO_POOL(THIEF,2)
        ADD_CREATURE_TO_POOL(SAMURAI,2)
        REM Just a single knight instead of 2 due to their strength
        ADD_CREATURE_TO_POOL(KNIGHT,1)
    ENDIF

    REM NG+ Creatures
    IF (PLAYER0, CAMPAIGN_FLAG5 == 1)
        ADD_CREATURE_TO_POOL(WIZARD,1)
        ADD_CREATURE_TO_POOL(BARBARIAN,1)
        ADD_CREATURE_TO_POOL(ARCHER,1)
        ADD_CREATURE_TO_POOL(MONK,1)
        ADD_CREATURE_TO_POOL(DWARFA,1)
        ADD_CREATURE_TO_POOL(WITCH,1)
        ADD_CREATURE_TO_POOL(GIANT,1)
        ADD_CREATURE_TO_POOL(FAIRY,1)
        ADD_CREATURE_TO_POOL(THIEF,1)
        ADD_CREATURE_TO_POOL(SAMURAI,1)
    ENDIF

    CREATURE_AVAILABLE(PLAYER0,WIZARD,1,0)
    CREATURE_AVAILABLE(PLAYER0,BARBARIAN,1,0)
    CREATURE_AVAILABLE(PLAYER0,ARCHER,1,0)
    CREATURE_AVAILABLE(PLAYER0,MONK,1,0)
    CREATURE_AVAILABLE(PLAYER0,DWARFA,1,0)
    CREATURE_AVAILABLE(PLAYER0,WITCH,1,0)
    CREATURE_AVAILABLE(PLAYER0,GIANT,1,0)
    CREATURE_AVAILABLE(PLAYER0,FAIRY,1,0)
    CREATURE_AVAILABLE(PLAYER0,THIEF,1,0)
    CREATURE_AVAILABLE(PLAYER0,SAMURAI,1,0)
    CREATURE_AVAILABLE(PLAYER0,KNIGHT,1,0)

    REM Rooms

    ROOM_AVAILABLE(ALL_PLAYERS,TREASURE,1,1)
    ROOM_AVAILABLE(ALL_PLAYERS,LAIR,1,1)
    ROOM_AVAILABLE(ALL_PLAYERS,GARDEN,1,1)
    ROOM_AVAILABLE(ALL_PLAYERS,TRAINING,1,1)
    ROOM_AVAILABLE(ALL_PLAYERS,RESEARCH,1,1)
    ROOM_AVAILABLE(ALL_PLAYERS,BRIDGE,1,0)
    ROOM_AVAILABLE(ALL_PLAYERS,GUARD_POST,1,0)
    ROOM_AVAILABLE(ALL_PLAYERS,WORKSHOP,1,0)
    ROOM_AVAILABLE(ALL_PLAYERS,BARRACKS,1,0)

    REM Magic

    MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HAND,1,1)
    MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SLAP,1,1)
    MAGIC_AVAILABLE(ALL_PLAYERS,POWER_POSSESS,1,1)
    MAGIC_AVAILABLE(ALL_PLAYERS,POWER_IMP,1,1)
    MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CALL_TO_ARMS,1,0)
    MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CONCEAL,1,0)
    MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HOLD_AUDIENCE,1,0)
    MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HEAL_CREATURE,1,0)
    MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CHICKEN,1,0)
    REM Sight, Speed, Protect can be found on the map

    REM Workshop Items

    TRAP_AVAILABLE(ALL_PLAYERS,POISON_GAS,1,0)
    TRAP_AVAILABLE(ALL_PLAYERS,LIGHTNING,1,0)

    DOOR_AVAILABLE(ALL_PLAYERS,WOOD,1,0)
    DOOR_AVAILABLE(ALL_PLAYERS,BRACED,1,0)

REM Intro

    REM Regular objective
    IF (PLAYER0, CAMPAIGN_FLAG5 == 0)
        REM "Awaken, and get ready for work, Keeper! A group of Onyx rogue wizards are trying to prevent you from entering the island, buying time by throwing an army of insects at you. Worse things than bugs are coming if you don't hurry... you'd better claim the portals to deactivate them."
        DISPLAY_OBJECTIVE(18)
    ENDIF

    REM NG+ Objective
    IF (PLAYER0, CAMPAIGN_FLAG5 == 1)
        REM "Welcome back, Keeper. The Onyx Rogues have brought bigger forces this time, and your entrance can only attract one of each hero. Deactivate their portals, destroy their heart, and stomp these bugs before they stomp you."
        DISPLAY_OBJECTIVE(19, PLAYER5)
    ENDIF

    REM regular game entrance note
    IF (PLAYER0, CAMPAIGN_FLAG5 == 0)
        IF (PLAYER0, ENTRANCE > 0)
            REM "The only thing the Diamond Guild heroes hate more than you, is their miscreant Onyx brethren. These heroes are willing to help you wipe out their sworn rivals for the time being. However, keep in mind you can only attract 10 of them at most... make use of this temporary alliance while it lasts."
            DISPLAY_INFORMATION(20, 6)
        ENDIF
    ENDIF

    REM NG+ Objective
    IF (PLAYER0, CAMPAIGN_FLAG5 == 1)
        IF (PLAYER0, ENTRANCE > 0)
            REM "You will only get 10 heroes from this entrance, and only one of each. Make the most of their unique abilities."
            DISPLAY_INFORMATION(21, 17)
        ENDIF
    ENDIF

REM parties and timer

    CREATE_PARTY(party1)
        ADD_TO_PARTY(party1,FLY,6,0,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party1,FLY,6,0,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party1,FLY,6,0,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party1,FLY,6,0,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party1,FLY,6,0,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party1,FLY,6,0,ATTACK_DUNGEON_HEART,0)

    CREATE_PARTY(party2)
        ADD_TO_PARTY(party2,MAIDEN,7,0,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party2,SPIDER,6,0,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party2,SPIDER,6,0,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party2,SPIDER,6,0,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party2,SPIDER,6,0,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party2,SPIDER,6,0,ATTACK_DUNGEON_HEART,0)

    CREATE_PARTY(party3)
        ADD_TO_PARTY(party3,BUG,6,0,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party3,BUG,6,0,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party3,BUG,6,0,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party3,BUG,6,0,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party3,BUG,6,0,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party3,BUG,6,0,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party3,BUG,6,0,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party3,BUG,6,0,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party3,BUG,6,0,ATTACK_DUNGEON_HEART,0)

    CREATE_PARTY(party4)
        ADD_TO_PARTY(party4,KNIGHT,10,0,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party4,WIZARD,10,0,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party4,MAIDEN,10,0,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party4,SPIDER,10,0,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party4,SPIDER,10,0,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party4,SPIDER,10,0,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party4,SPIDER,10,0,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party4,SPIDER,10,0,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party4,SPIDER,10,0,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party4,SPIDER,10,0,ATTACK_DUNGEON_HEART,0)
        
    REM Hero parties if the player takes too long

    CREATE_PARTY(party_top_heroes)
        ADD_TO_PARTY(party_top_heroes,FAIRY,8,0,ATTACK_DUNGEON_HEART,0)

    CREATE_PARTY(party_mid_heroes)
        ADD_TO_PARTY(party_mid_heroes,WIZARD,8,0,ATTACK_DUNGEON_HEART,0)

    CREATE_PARTY(party_bot_heroes)
        ADD_TO_PARTY(party_bot_heroes,HELL_HOUND,8,0,ATTACK_DUNGEON_HEART,0)

    IF (PLAYER0, TOTAL_CREATURES > 5)
        SET_TIMER(PLAYER0, TIMER0)
    ENDIF

REM Parties that spawn depending on the timer and hero portal ownership

    IF (PLAYER0, TIMER0 > 6000)
        IF_SLAB_OWNER(30, 5, PLAYER5)

            REM Testing another way of spawning the party
            REM ADD_CREATURE_TO_LEVEL(PLAYER5, IMP, -1, 1, 1, 200)
            REM ADD_PARTY_TO_LEVEL(PLAYER5, party1, -1, 1)

            ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER5, party1, -1, DUNGEON, 0, 1, 200)

            REM "The first enemies are on their way. Pay attention to the map, they will keep sending swarms until you stop them by claiming their portals."
            DISPLAY_INFORMATION(22)
        ENDIF
    ENDIF

    IF (PLAYER0, TIMER0 > 10000)
        IF_SLAB_OWNER(30, 5, PLAYER5)
            ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER5, party1, -1, DUNGEON, 0, 1, 200)
        ENDIF
    ENDIF

    IF (PLAYER0, TIMER0 > 14000)
        IF_SLAB_OWNER(67, 71, PLAYER5)
            REM the lower bug portal
            ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER5, party3, -3, DUNGEON, 0, 1, 200)
        ENDIF
    ENDIF

    IF (PLAYER0, TIMER0 > 18000)
        IF_SLAB_OWNER(54, 27, PLAYER5)
            ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER5, party2, -2, DUNGEON, 0, 1, 200)
        ENDIF
    ENDIF


    REM Logic for spawning all waves at once

    IF (PLAYER0, TIMER0 > 23000)
        REM "Enemy reinforcements are on their way... if you haven't claimed any portals yet, you should consider doing so soon."
        DISPLAY_INFORMATION(23)
    ENDIF

    IF (PLAYER0, TIMER0 > 26000)

        IF_SLAB_OWNER(30, 5, PLAYER5)
            REM Hero Gate 1 - Flies, top
            ADD_PARTY_TO_LEVEL(PLAYER5, party1, -1, 2)
        ENDIF

        IF_SLAB_OWNER(54, 27, PLAYER5)
            REM Hero gate 2 - Spiders, middle
            ADD_PARTY_TO_LEVEL(PLAYER5, party2, -2, 1)
        ENDIF

        IF_SLAB_OWNER(67, 71, PLAYER5)
            REM Hero Gate 3 - bugs, lower right
            ADD_PARTY_TO_LEVEL(PLAYER5, party3, -3, 2)
        ENDIF

    ENDIF

    REM Give the player a warning about heroes coming up

    REM Set the flag that determines the warning
    SET_FLAG(PLAYER0, FLAG5, 0)

    IF (PLAYER0, TIMER0 > 36000)
        IF (PLAYER0, FLAG5 > 0)
            REM "You have wasted too much time. Onyx heroes have arrived to support their brothers."
            DISPLAY_OBJECTIVE(24)
        ENDIF
    ENDIF

    REM If any of the portals are still active, show a message
    IF (PLAYER0, TIMER0 > 36000)

        IF_SLAB_OWNER(30, 5, PLAYER5)
            SET_FLAG(PLAYER0, FLAG5, 1)
        ENDIF

        IF_SLAB_OWNER(54, 27, PLAYER5)
            SET_FLAG(PLAYER0, FLAG5, 1)
        ENDIF

        IF_SLAB_OWNER(67, 71, PLAYER5)
            SET_FLAG(PLAYER0, FLAG5, 1)
        ENDIF
    ENDIF

    REM Spawn heroes on each unclaimed gate

    IF (PLAYER0, TIMER0 > 36010)
        IF_SLAB_OWNER(30, 5, PLAYER5)
            REM Hero Gate 1 - Flies, top
            DISPLAY_MESSAGE(25, FAIRY)
            ADD_PARTY_TO_LEVEL(PLAYER5, party_top_heroes, -1, 4)
        ENDIF
    ENDIF

    IF (PLAYER0, TIMER0 > 36020)
        IF_SLAB_OWNER(54, 27, PLAYER5)
            REM Hero gate 2 - Spiders, middle
            DISPLAY_MESSAGE(26, WIZARD)
            ADD_PARTY_TO_LEVEL(PLAYER5, party_mid_heroes, -2, 4)
        ENDIF
    ENDIF

    IF (PLAYER0, TIMER0 > 36030)
        IF_SLAB_OWNER(67, 71, PLAYER5)
            REM Hero Gate 3 - bugs, lower right
            DISPLAY_MESSAGE(27, HELL_HOUND)
            ADD_PARTY_TO_LEVEL(PLAYER5, party_bot_heroes, -3, 4)
        ENDIF
    ENDIF

REM Final wave logic

    IF_ACTION_POINT(1, PLAYER0)
        ADD_PARTY_TO_LEVEL(PLAYER5, party4, -4, 1)
    ENDIF

REM Logic for the hero portals and win con

    IF(PLAYER5, DUNGEON_DESTROYED == 1)

        WIN_GAME

        REM Count campaign flag up by one
        IF(PLAYER0, CAMPAIGN_FLAG6 < 2)
            SET_FLAG(PLAYER0, CAMPAIGN_FLAG6, 2)
        ENDIF
        
        REM If player is in NG+, advance the state of that too
        IF (PLAYER0, CAMPAIGN_FLAG5 == 1)
            IF(PLAYER0, CAMPAIGN_FLAG7 == 1)
                SET_FLAG(PLAYER0, CAMPAIGN_FLAG7, 2)
            ENDIF
        ENDIF
    ENDIF

    IF_SLAB_OWNER(54, 27, PLAYER0)
        IF_SLAB_OWNER(67, 71, PLAYER0)
            IF_SLAB_OWNER(30, 5, PLAYER0)

                REM "With all 3 portals taken over, time to bring the fight to the enemy. Teach these corrupt heroes a lesson that the real evil here is you."
                DISPLAY_OBJECTIVE(28, 7)
                USE_POWER_AT_LOCATION(PLAYER0,7,POWER_SIGHT,9,1)

            ENDIF
        ENDIF
    ENDIF

REM Logic for hiding hero gates

    IF_SLAB_OWNER(30, 5, PLAYER0)
        REM Hero Gate 1 - Flies, top
        HIDE_HERO_GATE(1, 1)
        CREATE_EFFECT_AT_POS(EFFECT_SPANGLE_WHITE, 91, 16)
    ENDIF

    IF_SLAB_OWNER(54, 27, PLAYER0)
        REM Hero gate 2 - Spiders, middle
        HIDE_HERO_GATE(2, 1)
        CREATE_EFFECT_AT_POS(EFFECT_SPANGLE_WHITE, 163, 82)
    ENDIF

    IF_SLAB_OWNER(67, 71, PLAYER0)
        REM Hero Gate 3 - bugs, lower right
        HIDE_HERO_GATE(3, 1)
        CREATE_EFFECT_AT_POS(EFFECT_SPANGLE_WHITE, 202, 214)
    ENDIF

REM just some funny flair at the start

    SET_TIMER(PLAYER0, TIMER4)

    IF (PLAYER0, TIMER4 >= 40)
        REM USE_POWER_AT_LOCATION(PLAYER0, PLAYER0, POWER_LIGHTNING, 1, 1)
    ENDIF

    IF (PLAYER0, TIMER4 >= 50)
        PLAY_MESSAGE(PLAYER0, SOUND, 147)

        CREATE_EFFECT_AT_POS(EFFECT_SPANGLE_BLUE, 70, 184)
        CREATE_EFFECT_AT_POS(EFFECT_SPANGLE_BLUE, 76, 184)
        CREATE_EFFECT_AT_POS(EFFECT_SPANGLE_BLUE, 70, 190)
        CREATE_EFFECT_AT_POS(EFFECT_SPANGLE_BLUE, 76, 190)

        ADD_OBJECT_TO_LEVEL(HEARTFLAME_BLUE, 8, 0, PLAYER0)
        ADD_OBJECT_TO_LEVEL(HEARTFLAME_BLUE, 9, 0, PLAYER0)
        ADD_OBJECT_TO_LEVEL(HEARTFLAME_BLUE, 10, 0, PLAYER0)
        ADD_OBJECT_TO_LEVEL(HEARTFLAME_BLUE, 11, 0, PLAYER0)
    ENDIF

    IF (PLAYER0, TIMER4 >= 75)
        PLAY_MESSAGE(PLAYER0, SOUND, 148)

        CREATE_EFFECT_AT_POS(EFFECT_SPANGLE_BLUE, 67, 181)
        CREATE_EFFECT_AT_POS(EFFECT_SPANGLE_BLUE, 79, 181)
        CREATE_EFFECT_AT_POS(EFFECT_SPANGLE_BLUE, 67, 193)
        CREATE_EFFECT_AT_POS(EFFECT_SPANGLE_BLUE, 79, 193)

        ADD_OBJECT_TO_LEVEL(HEARTFLAME_BLUE, 12, 0, PLAYER0)
        ADD_OBJECT_TO_LEVEL(HEARTFLAME_BLUE, 13, 0, PLAYER0)
        ADD_OBJECT_TO_LEVEL(HEARTFLAME_BLUE, 14, 0, PLAYER0)
        ADD_OBJECT_TO_LEVEL(HEARTFLAME_BLUE, 15, 0, PLAYER0)
    ENDIF

REM ---------------------------------------------------------------------------------------------------------------
REM WIP / TODO - Do new game+ conditions
REM ---------------------------------------------------------------------------------------------------------------

    IF (PLAYER0, CAMPAIGN_FLAG5 == 1)
        DISPLAY_MESSAGE(29, HORNY)
    ENDIF

    CREATE_PARTY(heart_bugs_light)
        ADD_TO_PARTY(heart_bugs_light, BUG, 3, 100, ATTACK_DUNGEON_HEART, 300)
        ADD_TO_PARTY(heart_bugs_light, FLY, 3, 100, ATTACK_DUNGEON_HEART, 300)
        ADD_TO_PARTY(heart_bugs_light, SPIDER, 3, 100, ATTACK_DUNGEON_HEART, 300)

    CREATE_PARTY(heart_bugs_medium)
        ADD_TO_PARTY(heart_bugs_medium, BUG, 7, 100, ATTACK_DUNGEON_HEART, 300)
        ADD_TO_PARTY(heart_bugs_medium, FLY, 7, 100, ATTACK_DUNGEON_HEART, 300)
        ADD_TO_PARTY(heart_bugs_medium, SPIDER, 7, 100, ATTACK_DUNGEON_HEART, 300)

    CREATE_PARTY(heart_bugs_hard)
        ADD_TO_PARTY(heart_bugs_hard, BUG, 10, 100, ATTACK_DUNGEON_HEART, 300)
        ADD_TO_PARTY(heart_bugs_hard, FLY, 10, 100, ATTACK_DUNGEON_HEART, 300)
        ADD_TO_PARTY(heart_bugs_hard, SPIDER, 10, 100, ATTACK_DUNGEON_HEART, 300)

        IF (PLAYER0, TIMER0 > 8000)
            IF (PLAYER0, CAMPAIGN_FLAG5 == 1)
                ADD_PARTY_TO_LEVEL(PLAYER5, heart_bugs_light, -5, 2)
            ENDIF
        ENDIF

        IF (PLAYER0, TIMER0 > 16000)
            IF (PLAYER0, CAMPAIGN_FLAG5 == 1)
                ADD_PARTY_TO_LEVEL(PLAYER5, heart_bugs_medium, -5, 2)
            ENDIF
        ENDIF

        IF (PLAYER0, TIMER0 > 20000)
            IF (PLAYER0, CAMPAIGN_FLAG5 == 1)
                ADD_PARTY_TO_LEVEL(PLAYER5, heart_bugs_medium, -5, 2)
            ENDIF
        ENDIF

        IF (PLAYER0, TIMER0 > 41000)
            IF (PLAYER0, CAMPAIGN_FLAG5 == 1)
                ADD_PARTY_TO_LEVEL(PLAYER5, heart_bugs_hard, -5, 2)
            ENDIF
        ENDIF

        IF (PLAYER0, CAMPAIGN_FLAG5 == 1)
            IF_ACTION_POINT(16, PLAYER0)
                REM "This portal is not on solid ground, so you can't deactivate it by claiming it. Keep an eye on it."
                DISPLAY_INFORMATION(30, -5)
            ENDIF
        ENDIF

    REM Code that makes sure the level functions as normal in NG
    IF (PLAYER0, CAMPAIGN_FLAG5 == 0)
        REM Remove the hero portal on the left
        HIDE_HERO_GATE(5, 1)
        CHANGE_SLAB_TYPE(4, 66, DIRT, NONE)
    ENDIF

    REM NG+ changes
    IF (PLAYER0, CAMPAIGN_FLAG5 == 1)

        REM Add the hero portal area on the left

        CHANGE_SLAB_TYPE(6, 66, WATER, NONE)

        CHANGE_SLAB_TYPE(3, 65, WATER, NONE)
        CHANGE_SLAB_TYPE(3, 66, WATER, NONE)
        CHANGE_SLAB_TYPE(3, 67, WATER, NONE)

        CHANGE_SLAB_TYPE(4, 65, WATER, NONE)
        CHANGE_SLAB_TYPE(4, 66, WATER, NONE)
        CHANGE_SLAB_TYPE(4, 67, WATER, NONE)

        CHANGE_SLAB_TYPE(5, 65, WATER, NONE)
        CHANGE_SLAB_TYPE(5, 66, WATER, NONE)
        CHANGE_SLAB_TYPE(5, 67, WATER, NONE)

        CHANGE_SLAB_TYPE(2, 66, WATER, NONE)

        CHANGE_SLAB_TYPE(33, 42, GEMS, NONE)

        ADD_EFFECT_GENERATOR_TO_LEVEL(EFFECTGENERATOR_DRY_ICE, -5, 2)

        REM Move the portal

        CHANGE_SLAB_TYPE(20, 78, WATER, MATCH)

        CHANGE_SLAB_TYPE(19, 79, WATER, MATCH)
        CHANGE_SLAB_TYPE(23, 79, WATER, MATCH)

        CHANGE_SLAB_OWNER(14, 50, PLAYER_NEUTRAL, NONE)

        CHANGE_SLAB_TYPE(14, 49, ENTRANCE_ZONE, NONE)
        CHANGE_SLAB_TYPE(15, 49, ENTRANCE_ZONE, NONE)
        CHANGE_SLAB_TYPE(16, 49, ENTRANCE_ZONE, NONE)

        CHANGE_SLAB_TYPE(14, 50, ENTRANCE_ZONE, NONE)
        CHANGE_SLAB_TYPE(15, 50, ENTRANCE_ZONE, NONE)
        CHANGE_SLAB_TYPE(16, 50, ENTRANCE_ZONE, NONE)

        CHANGE_SLAB_TYPE(14, 51, ENTRANCE_ZONE, NONE)
        CHANGE_SLAB_TYPE(15, 51, ENTRANCE_ZONE, NONE)
        CHANGE_SLAB_TYPE(16, 51, ENTRANCE_ZONE, NONE)

        REM Hide the old and show the new entrance
        REVEAL_MAP_RECT(PLAYER0, 46, 151, 9, 9)

        REVEAL_MAP_RECT(PLAYER0, 46, 145, 9, 3)
        REVEAL_MAP_RECT(PLAYER0, 46, 157, 9, 3)

        REVEAL_MAP_RECT(PLAYER0, 40, 151, 3, 9)
        REVEAL_MAP_RECT(PLAYER0, 52, 151, 3, 9)

        CONCEAL_MAP_RECT(PLAYER0, 64,238, 12, 12, 1)

        CHANGE_SLAB_TYPE(15, 52, DIRT, NONE)

        REM Add new land

        CHANGE_SLAB_TYPE(13, 71, DIRT, NONE)
        CHANGE_SLAB_TYPE(13, 72, DIRT, NONE)
        CHANGE_SLAB_TYPE(14, 72, DIRT, NONE)
        CHANGE_SLAB_TYPE(15, 72, DIRT, NONE)

        CHANGE_SLAB_TYPE(16, 48, DIRT, NONE)
        CHANGE_SLAB_TYPE(17, 48, DIRT, NONE)

        REM Add more water

        CHANGE_SLAB_TYPE(20, 58, WATER, NONE)
        CHANGE_SLAB_TYPE(21, 58, WATER, NONE)
        CHANGE_SLAB_TYPE(22, 58, WATER, NONE)
        CHANGE_SLAB_TYPE(20, 59, WATER, NONE)
        CHANGE_SLAB_TYPE(20, 60, WATER, NONE)

        CHANGE_SLAB_TYPE(19, 61, WATER, NONE)

        CHANGE_SLAB_TYPE(17, 79, WATER, NONE)
        CHANGE_SLAB_TYPE(18, 79, WATER, NONE)

        REM Add enemies

        REM Spiders near the gold and gems
        ADD_CREATURE_TO_LEVEL(PLAYER5, SPIDER, 18, 2, 3, 0)

        REM Bugs near the increase level special
        ADD_CREATURE_TO_LEVEL(PLAYER5, BUG, 19, 3, 5, 0)

        REM Modify parties and add more enemies

        ADD_TO_PARTY(party1,FLY,10,0,ATTACK_DUNGEON_HEART,0)

        ADD_TO_PARTY(party2,SPIDER,10,0,ATTACK_DUNGEON_HEART,0)

        ADD_TO_PARTY(party3,BUG,10,0,ATTACK_DUNGEON_HEART,0)

        ADD_TO_PARTY(party4,MAIDEN,10,0,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party4,MAIDEN,10,0,ATTACK_DUNGEON_HEART,0)

    ENDIF

    REM Debugging NG+
    REM SET_FLAG(PLAYER0, CAMPAIGN_FLAG5, 1)
    REM QUICK_INFORMATION(11, "DEBUGGING NG+", BLUE)
