REM Basics

    LEVEL_VERSION(1)
    RUN_AFTER_VICTORY(1)
    SET_GENERATE_SPEED(400)
    START_MONEY(ALL_PLAYERS,10000)
    MAX_CREATURES(ALL_PLAYERS,25)

    COMPUTER_PLAYER(PLAYER3,ROAMING)
    COMPUTER_PLAYER(PLAYER2,ROAMING)

    SET_MUSIC("campaign_music/fairy_village_temple.mp3")

    SET_PLAYER_COLOR(PLAYER0, BLUE)

REM Availability

    ADD_CREATURE_TO_POOL(DEMONSPAWN,6)
    ADD_CREATURE_TO_POOL(TROLL,6)
    ADD_CREATURE_TO_POOL(SPIDER,6)
    ADD_CREATURE_TO_POOL(TENTACLE,6)
    ADD_CREATURE_TO_POOL(MAIDEN,6)
    ADD_CREATURE_TO_POOL(ORC,6)
    ADD_CREATURE_TO_POOL(ARCHER,6)
    REM Limit the stronger creatures
    ADD_CREATURE_TO_POOL(BILE_DEMON,2)
    ADD_CREATURE_TO_POOL(DRAGON,2)
    ADD_CREATURE_TO_POOL(DARK_MISTRESS,2)


    CREATURE_AVAILABLE(ALL_PLAYERS,DEMONSPAWN,1,0)
    CREATURE_AVAILABLE(ALL_PLAYERS,TROLL,1,0)
    CREATURE_AVAILABLE(ALL_PLAYERS,SPIDER,1,0)
    CREATURE_AVAILABLE(ALL_PLAYERS,TENTACLE,1,0)
    CREATURE_AVAILABLE(ALL_PLAYERS,MAIDEN,1,0)
    CREATURE_AVAILABLE(ALL_PLAYERS,ORC,1,0)
    CREATURE_AVAILABLE(ALL_PLAYERS,ARCHER,1,0)
    REM Stronger ones
    CREATURE_AVAILABLE(ALL_PLAYERS,BILE_DEMON,1,0)
    CREATURE_AVAILABLE(ALL_PLAYERS,DRAGON,1,0)
    CREATURE_AVAILABLE(ALL_PLAYERS,DARK_MISTRESS,1,0)


REM Room availability

    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,PRISON,1,0)
    ROOM_AVAILABLE(ALL_PLAYERS,TORTURE,1,0)
    ROOM_AVAILABLE(ALL_PLAYERS,BARRACKS,1,0)
    ROOM_AVAILABLE(ALL_PLAYERS,TEMPLE,1,0)
    ROOM_AVAILABLE(ALL_PLAYERS,GRAVEYARD,1,0)

REM Magic availability

    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_SIGHT,1,0)
    MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SPEED,1,0)
    MAGIC_AVAILABLE(ALL_PLAYERS,POWER_OBEY,1,0)
    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_CAVE_IN,1,0)
    MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HEAL_CREATURE,1,0)
    MAGIC_AVAILABLE(ALL_PLAYERS,POWER_LIGHTNING,1,0)
    MAGIC_AVAILABLE(ALL_PLAYERS,POWER_PROTECT,1,0)
    MAGIC_AVAILABLE(ALL_PLAYERS,POWER_DISEASE,1,0)

REM Workshop availability

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

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

REM Intro message
    REM "Topaz has taken over this cathedral and remodelled it to his needs. We should pay him a visit and swiftly evict him by destroying his heart. But a seal is placed on its chamber, protected by 3 guardians, so you should get rid of his tenants first. A Wizard, Monk and a Witch are looking like they've not paid their rent in a while."
    DISPLAY_OBJECTIVE(90)

REM Victory sequence and event

    IF (PLAYER3, DUNGEON_DESTROYED == 1)
        ZOOM_TO_LOCATION(PLAYER0, 28)
        SET_TIMER(PLAYER0, TIMER7)
    ENDIF

    IF (PLAYER0, TIMER7 > 20)

        REM PLAY_MESSAGE(PLAYER0, SOUND, "42")
        USE_POWER_AT_LOCATION(PLAYER5, 28, POWER_CAVE_IN, 9, 1)
    ENDIF

    IF (PLAYER0, TIMER7 > 35)
        USE_POWER_AT_LOCATION(PLAYER5, 29, POWER_LIGHTNING, 9, 1)
        USE_POWER_AT_LOCATION(PLAYER6, 29, POWER_CAVE_IN, 9, 1)
    ENDIF

    IF (PLAYER0, TIMER7 > 60)
        USE_POWER_AT_LOCATION(PLAYER5, 30, POWER_LIGHTNING, 9, 1)
        USE_POWER_AT_LOCATION(PLAYER6, 30, POWER_CAVE_IN, 9, 1)
    ENDIF

    IF (PLAYER0, TIMER7 > 75)
        USE_POWER_AT_LOCATION(PLAYER5, 32, POWER_LIGHTNING, 9, 1)
        USE_POWER_AT_LOCATION(PLAYER6, 32, POWER_CAVE_IN, 9, 1)
    ENDIF

    IF (PLAYER0, TIMER7 > 80)
        USE_POWER_AT_LOCATION(PLAYER5, 31, POWER_LIGHTNING, 9, 1)
        USE_POWER_AT_LOCATION(PLAYER6, 31, POWER_CAVE_IN, 9, 1)
    ENDIF

    IF (PLAYER0, TIMER7 > 95)
        USE_POWER_AT_LOCATION(PLAYER5, 33, POWER_LIGHTNING, 9, 1)
        USE_POWER_AT_LOCATION(PLAYER6, 33, POWER_CAVE_IN, 9, 1)
    ENDIF

    IF (PLAYER0, TIMER7 > 110)
        REM CREATE_EFFECT_AT_POS(EFFECT_COLOURFUL_FIRE_CIRCLE, 121, 220)
        USE_POWER_AT_LOCATION(PLAYER5, 34, POWER_LIGHTNING, 9, 1)
        USE_POWER_AT_LOCATION(PLAYER6, 34, POWER_CAVE_IN, 9, 1)
    ENDIF

    IF (PLAYER0, TIMER7 > 125)
        REM CREATE_EFFECT_AT_POS(EFFECT_COLOURFUL_FIRE_CIRCLE, 121, 220)
        USE_POWER_AT_LOCATION(PLAYER5, 29, POWER_LIGHTNING, 9, 1)
        USE_POWER_AT_LOCATION(PLAYER6, 29, POWER_CAVE_IN, 9, 1)
    ENDIF

    IF (PLAYER0, TIMER7 > 140)
        PLAY_MESSAGE(PLAYER0, SOUND, "152")

        CREATE_EFFECT_AT_POS(EFFECT_WORD_OF_POWER, 121, 220)

        QUICK_MESSAGE(7, "You may have bested me, but I'll have my revenge!", PLAYER3)
        REM "Looks like you destroyed his heart, but your own dungeon heart has been cursed by Topaz. You'll have to see what his curse did in the next realm..."
        DISPLAY_INFORMATION(92, PLAYER0)

        ADD_OBJECT_TO_LEVEL(HEARTFLAME_YELLOW, 24, 1, PLAYER3)
        ADD_OBJECT_TO_LEVEL(HEARTFLAME_YELLOW, 25, 1, PLAYER3)
        ADD_OBJECT_TO_LEVEL(HEARTFLAME_YELLOW, 26, 1, PLAYER3)
        ADD_OBJECT_TO_LEVEL(HEARTFLAME_YELLOW, 27, 1, PLAYER3)

        ADD_OBJECT_TO_LEVEL(HEARTFLAME_YELLOW, 35, 1, PLAYER3)
        ADD_OBJECT_TO_LEVEL(HEARTFLAME_YELLOW, 36, 1, PLAYER3)
        ADD_OBJECT_TO_LEVEL(HEARTFLAME_YELLOW, 37, 1, PLAYER3)
        ADD_OBJECT_TO_LEVEL(HEARTFLAME_YELLOW, 38, 1, PLAYER3)

        USE_POWER_AT_LOCATION(PLAYER5, 28, POWER_LIGHTNING, 9, 1)
    ENDIF

    IF (PLAYER0, TIMER7 > 200)
        WIN_GAME

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

    ENDIF

REM Logic to add the dwarfs on the left

    IF_ACTION_POINT(1, PLAYER0)
        SET_FLAG(PLAYER0, FLAG0, 1)
    ENDIF

    IF_ACTION_POINT(2, PLAYER0)
        SET_FLAG(PLAYER0, FLAG0, 1)
    ENDIF

    IF(PLAYER0, FLAG0 == 1)
        ADD_CREATURE_TO_LEVEL(PLAYER3, DWARFA, 3, 1, 8, 1000)
        ADD_CREATURE_TO_LEVEL(PLAYER3, DWARFA, 4, 1, 8, 1000)
        ADD_CREATURE_TO_LEVEL(PLAYER3, DWARFA, 5, 1, 8, 1000)
        ADD_CREATURE_TO_LEVEL(PLAYER3, DWARFA, 6, 1, 8, 1000)

        ADD_CREATURE_TO_LEVEL(PLAYER3, DWARFA, 3, 1, 8, 1000)
        ADD_CREATURE_TO_LEVEL(PLAYER3, DWARFA, 4, 1, 8, 1000)
        ADD_CREATURE_TO_LEVEL(PLAYER3, DWARFA, 5, 1, 8, 1000)
        ADD_CREATURE_TO_LEVEL(PLAYER3, DWARFA, 6, 1, 8, 1000)
    ENDIF

REM Thieves in the middle

    IF_ACTION_POINT(15, PLAYER0)
        ADD_CREATURE_TO_LEVEL(PLAYER3, THIEF, 16, 1, 6, 1000)
        ADD_CREATURE_TO_LEVEL(PLAYER3, THIEF, 17, 1, 6, 1000)
        ADD_CREATURE_TO_LEVEL(PLAYER3, THIEF, 18, 1, 6, 1000)
        ADD_CREATURE_TO_LEVEL(PLAYER3, THIEF, 19, 1, 6, 1000)
    ENDIF

REM Logic for killing the 3 guardians

    IF_CONTROLS(PLAYER3, MONK == 0)
        REM Flame hinzufügen
        PLAY_MESSAGE(PLAYER0, SOUND, 148)
        CREATE_EFFECT_AT_POS(EFFECT_SPANGLE_RED, 118, 191)
        ADD_OBJECT_TO_LEVEL(HEARTFLAME_RED, 10, NULL, PLAYER3)
    ENDIF

    IF_CONTROLS(PLAYER3, WIZARD == 0)
        REM Flame hinzufügen
        PLAY_MESSAGE(PLAYER0, SOUND, 148)
        CREATE_EFFECT_AT_POS(EFFECT_SPANGLE_RED, 121, 191)
        ADD_OBJECT_TO_LEVEL(HEARTFLAME_RED, 11, NULL, PLAYER3)
    ENDIF

    IF_CONTROLS(PLAYER3, WITCH == 0)
        REM Flame hinzufügen
        PLAY_MESSAGE(PLAYER0, SOUND, 148)
        CREATE_EFFECT_AT_POS(EFFECT_SPANGLE_RED, 124, 191)
        ADD_OBJECT_TO_LEVEL(HEARTFLAME_RED, 12, NULL, PLAYER3)
    ENDIF

    IF_CONTROLS(PLAYER3, MONK == 0)
        IF_CONTROLS(PLAYER3, WITCH == 0)
            IF_CONTROLS(PLAYER3, WIZARD == 0)
                CHANGE_SLAB_TYPE(40, 67, PATH, NONE)
                PLAY_MESSAGE(PLAYER0, SOUND, "152")
                CREATE_EFFECT_AT_POS(EFFECT_WORD_OF_POWER, 121, 202)
                REM "The barrier is open. Destroy the heart of Topaz and get out of here!"
                DISPLAY_OBJECTIVE(93, 20)
            ENDIF
        ENDIF
    ENDIF

REM Logic for the dialogue of the 3 guardians and their dialogue/spawns

    REM Logic for the bit with the temple on the lower left
        IF_CONTROLS(PLAYER3, HORNY > 0)
            LEVEL_UP_CREATURE(PLAYER3, HORNY, ANYWHERE, 7)
        ENDIF

        REM Add zoom to
        REM changed from IF_ACTION_POINT(8, PLAYER0)
        IF_SLAB_TYPE(10,69,PRETTY_PATH)
            REM Show the temple
            ZOOM_TO_LOCATION(PLAYER0, 8)
            REVEAL_MAP_LOCATION(PLAYER0, 8, 9)

            QUICK_MESSAGE(2, "Your defilement of this cathedral ends here!", MONK)

            SET_TIMER(PLAYER0, TIMER1)
        ENDIF

        REM After a small amount of time, spawn the horny
        IF (PLAYER0, TIMER1 >= 35)
            SET_FLAG(PLAYER3, SACRIFICED[AVATAR], 1)
            ADD_CREATURE_TO_LEVEL(PLAYER3, ARCHER, 9, 7, 8, 200)
        ENDIF

    REM Wizard
    
        REM changed from action point 14
        REM IF_ACTION_POINT(14, PLAYER0)

        IF_SLAB_TYPE(52,68,PRETTY_PATH)
            QUICK_MESSAGE(3, "You shall not leave this place alive!", WIZARD)
            REM Left ghosts
            ADD_CREATURE_TO_LEVEL(PLAYER3, GHOST, 7, 6, 10, 0)
            REM Right ghosts
            ADD_CREATURE_TO_LEVEL(PLAYER3, GHOST, 13, 6, 10, 0)
        ENDIF

    REM Witch
    
        REM changed from action point 21 to checking the slab type
        REM IF_ACTION_POINT(21, PLAYER0)

        IF_SLAB_TYPE(76,69,PRETTY_PATH)
            QUICK_MESSAGE(5, "Don't think you will claim this realm for yourself!", WITCH)
            REM Adds
            ADD_CREATURE_TO_LEVEL(PLAYER3, TENTACLE, 23, 4, 8, 0)
            ADD_CREATURE_TO_LEVEL(PLAYER3, TENTACLE, 22, 4, 8, 0)
        ENDIF

REM Spawn the waves that carry extra gold

    SET_TIMER(PLAYER0, TIMER0)
    REM DISPLAY_TIMER(PLAYER0, TIMER0, 0)

    CREATE_PARTY(party1)
        ADD_TO_PARTY(party1, SKELETON, 1, 750, ATTACK_DUNGEON_HEART, 0)
        ADD_TO_PARTY(party1, GHOST, 1, 750, ATTACK_DUNGEON_HEART, 0)

    CREATE_PARTY(party2)
        ADD_TO_PARTY(party2, SKELETON, 2, 750, ATTACK_DUNGEON_HEART, 0)
        ADD_TO_PARTY(party2, GHOST, 2, 750, ATTACK_DUNGEON_HEART, 0)

    CREATE_PARTY(party3)
        ADD_TO_PARTY(party3, SKELETON, 3, 750, ATTACK_DUNGEON_HEART, 0)
        ADD_TO_PARTY(party3, GHOST, 3, 750, ATTACK_DUNGEON_HEART, 0)

    CREATE_PARTY(party4)
        ADD_TO_PARTY(party4, SKELETON, 4, 750, ATTACK_DUNGEON_HEART, 0)
        ADD_TO_PARTY(party4, GHOST, 4, 750, ATTACK_DUNGEON_HEART, 0)

    CREATE_PARTY(party5)
        ADD_TO_PARTY(party5, SKELETON, 5, 750, ATTACK_DUNGEON_HEART, 0)
        ADD_TO_PARTY(party5, GHOST, 5, 750, ATTACK_DUNGEON_HEART, 0)

    CREATE_PARTY(party6)
        ADD_TO_PARTY(party6, SKELETON, 6, 750, ATTACK_DUNGEON_HEART, 0)
        ADD_TO_PARTY(party6, GHOST, 6, 750, ATTACK_DUNGEON_HEART, 0)

    CREATE_PARTY(party7)
        ADD_TO_PARTY(party7, SKELETON, 7, 750, ATTACK_DUNGEON_HEART, 0)
        ADD_TO_PARTY(party7, GHOST, 7, 750, ATTACK_DUNGEON_HEART, 0)

    CREATE_PARTY(party8)
        ADD_TO_PARTY(party8, SKELETON, 8, 750, ATTACK_DUNGEON_HEART, 0)
        ADD_TO_PARTY(party8, GHOST, 8, 750, ATTACK_DUNGEON_HEART, 0)

    CREATE_PARTY(party9)
        ADD_TO_PARTY(party9, SKELETON, 9, 750, ATTACK_DUNGEON_HEART, 0)
        ADD_TO_PARTY(party9, GHOST, 9, 750, ATTACK_DUNGEON_HEART, 0)

    CREATE_PARTY(party10)
        ADD_TO_PARTY(party10, SKELETON, 10, 750, ATTACK_DUNGEON_HEART, 0)
        ADD_TO_PARTY(party10, GHOST, 10, 750, ATTACK_DUNGEON_HEART, 0)

    CREATE_PARTY(annoying_ghosts_weak)
        ADD_TO_PARTY(annoying_ghosts_weak, GHOST, 3, 400, ATTACK_DUNGEON_HEART, 0)

    CREATE_PARTY(annoying_ghosts_mid)
        ADD_TO_PARTY(annoying_ghosts_mid, GHOST, 6, 400, ATTACK_DUNGEON_HEART, 0)

    CREATE_PARTY(annoying_ghosts_hard)
        ADD_TO_PARTY(annoying_ghosts_hard, GHOST, 9, 400, ATTACK_DUNGEON_HEART, 0)


    REM Only spawns skeletons while the yellow heart is still alive
    IF (PLAYER3, DUNGEON_DESTROYED == 0)

        IF (PLAYER0, TIMER0 > 12000)
            REM "These corpses of dead heroes seem to sense your evil presence, Keeper. Show them the way back to their grave."
            DISPLAY_INFORMATION(97, -2)
            ADD_PARTY_TO_LEVEL(PLAYER3, party2, -2, 3)
        ENDIF

        IF (PLAYER0, TIMER0 > 18000)
            ADD_PARTY_TO_LEVEL(PLAYER3, party3, -2, 3)
        ENDIF

        REM Spawn some ghosts to annoy the player and potentially trigger boulder traps
        IF (PLAYER0, TIMER0 > 21000)
            ADD_PARTY_TO_LEVEL(PLAYER3, annoying_ghosts_weak, -2, 3)
        ENDIF

        IF (PLAYER0, TIMER0 > 24000)
            ADD_PARTY_TO_LEVEL(PLAYER3, party4, -2, 4)
        ENDIF

        IF (PLAYER0, TIMER0 > 30000)
            ADD_PARTY_TO_LEVEL(PLAYER3, party5, -2, 4)
        ENDIF

        IF (PLAYER0, TIMER0 > 36000)
            ADD_PARTY_TO_LEVEL(PLAYER3, party6, -2, 4)
        ENDIF

        REM Spawn some ghosts to annoy the player and potentially trigger boulder traps
        IF (PLAYER0, TIMER0 > 39000)
            ADD_PARTY_TO_LEVEL(PLAYER3, annoying_ghosts_mid, -2, 4)
        ENDIF

        IF (PLAYER0, TIMER0 > 42000)
            ADD_PARTY_TO_LEVEL(PLAYER3, party7, -2, 4)
        ENDIF

        IF (PLAYER0, TIMER0 > 48000)
            ADD_PARTY_TO_LEVEL(PLAYER3, party8, -2, 4)
        ENDIF

        IF (PLAYER0, TIMER0 > 54000)
            ADD_PARTY_TO_LEVEL(PLAYER3, party9, -2, 4)
        ENDIF

        REM Spawn some ghosts to annoy the player and potentially trigger boulder traps
        IF (PLAYER0, TIMER0 > 57000)
            ADD_PARTY_TO_LEVEL(PLAYER3, annoying_ghosts_hard, -2, 4)
        ENDIF

        IF (PLAYER0, TIMER0 > 60000)
            ADD_PARTY_TO_LEVEL(PLAYER3, party10, -2, 4)
        ENDIF

        IF (PLAYER0, TIMER0 > 70000)
            ADD_PARTY_TO_LEVEL(PLAYER3, party10, -2, 4)
        ENDIF

        IF (PLAYER0, TIMER0 > 80000)
            ADD_PARTY_TO_LEVEL(PLAYER3, party10, -2, 4)
        ENDIF

        IF (PLAYER0, TIMER0 > 90000)
            ADD_PARTY_TO_LEVEL(PLAYER3, party10, -2, 6)
        ENDIF

        IF (PLAYER0, TIMER0 > 100000)
            ADD_PARTY_TO_LEVEL(PLAYER3, party10, -2, 8)
        ENDIF

    ENDIF

REM When the enemy heart is hurt

    CREATE_PARTY(final_party)
        REM The main lads
        ADD_TO_PARTY(final_party, WITCH, 10, 0, ATTACK_ENEMIES, 0)
        ADD_TO_PARTY(final_party, WIZARD, 10, 0, ATTACK_ENEMIES, 0)
        ADD_TO_PARTY(final_party, MONK, 10, 0, ATTACK_ENEMIES, 0)
        REM Smaller guys
        ADD_TO_PARTY(final_party, GIANT, 10, 0, ATTACK_ENEMIES, 0)
        ADD_TO_PARTY(final_party, HORNY, 10, 0, ATTACK_ENEMIES, 0)
        ADD_TO_PARTY(final_party, DWARFA, 10, 0, ATTACK_ENEMIES, 0)

        ADD_TO_PARTY(final_party, THIEF, 10, 0, ATTACK_ENEMIES, 0)
        ADD_TO_PARTY(final_party, THIEF, 10, 0, ATTACK_ENEMIES, 0)
        ADD_TO_PARTY(final_party, THIEF, 10, 0, ATTACK_ENEMIES, 0)
        ADD_TO_PARTY(final_party, THIEF, 10, 0, ATTACK_ENEMIES, 0)
        ADD_TO_PARTY(final_party, THIEF, 10, 0, ATTACK_ENEMIES, 0)

        ADD_TO_PARTY(final_party, ARCHER, 10, 0, ATTACK_ENEMIES, 0)
        ADD_TO_PARTY(final_party, ARCHER, 10, 0, ATTACK_ENEMIES, 0)
        ADD_TO_PARTY(final_party, ARCHER, 10, 0, ATTACK_ENEMIES, 0)
        ADD_TO_PARTY(final_party, ARCHER, 10, 0, ATTACK_ENEMIES, 0)
        ADD_TO_PARTY(final_party, ARCHER, 10, 0, ATTACK_ENEMIES, 0)

    IF (PLAYER3, HEART_HEALTH < 30000)
        QUICK_MESSAGE(10, "fast! Prepare to die!", MONK)
        QUICK_MESSAGE(9, "so...", WIZARD)
        QUICK_MESSAGE(8, "Not...", WITCH)
        ADD_PARTY_TO_LEVEL(PLAYER3, final_party, -1, 1)
    ENDIF

REM Maiden description

    IF_CONTROLS(PLAYER0, MAIDEN > 0)
        TUTORIAL_FLASH_BUTTON(5, 200)
        REM "You have attracted a Maiden. This strange looking combination of spider and human enjoys researching in the library, but can be a fierce fighter too with some training, if you're not arachnophobic."
        DISPLAY_INFORMATION(101)
    ENDIF
    
REM Description for the lockroom

    IF_ACTION_POINT(39, PLAYER0)
        REM "This room holds the magical lock. The statues will light up when you have defeated the individual guardians. Defeat all 3 of them and the way to the heart is open, to smash your opponent."
        DISPLAY_OBJECTIVE(102, 39)
    ENDIF

REM Hide the impenetrable block in the lower middle

    CONCEAL_MAP_RECT(PLAYER0, 121, 202, 3, 3, 1)
