LEVEL_VERSION(1)
SET_GENERATE_SPEED(400)
START_MONEY(ALL_PLAYERS,2000)
MAX_CREATURES(ALL_PLAYERS,25)

REM Play custom track
SET_MUSIC("map01816_start.ogg")

SET_PLAYER_COLOR(PLAYER0, BLUE)

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,WORKSHOP,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,BARRACKS,1,0)

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_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_LIGHTNING,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_PROTECT,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CHICKEN,1,0)

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

DOOR_AVAILABLE(ALL_PLAYERS,STEEL,1,0)

QUICK_OBJECTIVE(1,"This lava-flooded land and its inhabitants used to be controlled by a keeper like you. Heroes have destroyed his domain and left you no portal, you'll need to be mindful of your resources and explore. Consider heading north first. But don't be lazy, enemy scouts are on their way. Treat them with utmost disrespect.")

REM Memo: 20 turns -> 1s

REM Intro message when player has creatures and basic rooms
IF (PLAYER0, TOTAL_CREATURES > 0)
    IF (PLAYER0, LAIR > 0)
        IF (PLAYER0, TRAINING > 0)
            SET_TIMER(PLAYER0,TIMER1)
            REM For debugging the timer
            REM DISPLAY_TIMER(PLAYER0, TIMER1, 0)
        ENDIF
    ENDIF
ENDIF

IF(PLAYER0,TIMER1 >= 750)
	QUICK_INFORMATION(4,"The heroes will not wait forever before they notice you, and you should destroy their heart sooner rather than later. You don't want to be around for their final assault. The clock is ticking.")
ENDIF

REM All parties

    REM Party North 1
    CREATE_PARTY(party1)
        ADD_TO_PARTY(party1,FAIRY,2,400,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party1,DEMONSPAWN,2,0,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party1,DEMONSPAWN,2,0,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party1,DEMONSPAWN,2,0,ATTACK_DUNGEON_HEART,0)

    REM Party South 1
    CREATE_PARTY(party2)
        ADD_TO_PARTY(party2,MONK,1,200,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party2,MONK,1,200,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party2,MONK,1,200,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party2,MONK,1,200,ATTACK_DUNGEON_HEART,0)

    REM Party South 2
    CREATE_PARTY(party3)
        ADD_TO_PARTY(party3,DEMONSPAWN,3,200,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party3,DEMONSPAWN,3,200,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party3,DEMONSPAWN,3,200,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party3,WIZARD,2,200,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party3,WIZARD,2,200,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party3,WIZARD,2,200,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party3,DRAGON,1,200,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party3,DRAGON,1,200,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party3,DRAGON,1,200,ATTACK_DUNGEON_HEART,0)

    REM Party North 2
    CREATE_PARTY(party4)
        ADD_TO_PARTY(party4,FAIRY,3,400,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party4,HELL_HOUND,2,200,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party4,HELL_HOUND,2,200,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party4,HELL_HOUND,2,200,ATTACK_DUNGEON_HEART,0)

    REM Party South 3
    CREATE_PARTY(party5)
        ADD_TO_PARTY(party5,BARBARIAN,3,200,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party5,WIZARD,2,200,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party5,WIZARD,2,200,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party5,WIZARD,2,200,ATTACK_DUNGEON_HEART,0)

    REM BREAK TIME

    REM Wave 5

    REM Party South 4
    CREATE_PARTY(party6)
        ADD_TO_PARTY(party6,GIANT,10,200,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party6,DWARFA,1,200,ATTACK_DUNGEON_HEART,0)

    REM Party North 3
    CREATE_PARTY(party7)
        ADD_TO_PARTY(party7,DEMONSPAWN,7,200,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party7,DRAGON,4,200,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party7,DRAGON,4,200,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party7,FAIRY,4,400,ATTACK_DUNGEON_HEART,0)

    REM Wave 6

    REM Party South 5
    CREATE_PARTY(party8)
        ADD_TO_PARTY(party8,ARCHER,7,200,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party8,ARCHER,3,200,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party8,ARCHER,3,200,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party8,ARCHER,3,200,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party8,ARCHER,4,200,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party8,ARCHER,4,200,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party8,WIZARD,8,200,ATTACK_DUNGEON_HEART,0)

    REM Party North 4
    CREATE_PARTY(party9)
        ADD_TO_PARTY(party9,DRAGON,8,200,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party9,FAIRY,8,200,ATTACK_DUNGEON_HEART,0)

    REM SECOND BREAK

    REM Wave 7

    REM Party South 6
    CREATE_PARTY(party10)
        ADD_TO_PARTY(party10,MONK,7,200,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party10,DWARFA,7,200,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party10,WIZARD,7,200,ATTACK_DUNGEON_HEART,0)

    REM Party North 5
    CREATE_PARTY(party11)
        ADD_TO_PARTY(party11,DRAGON,9,200,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party11,DEMONSPAWN,9,200,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party11,DEMONSPAWN,9,200,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party11,DEMONSPAWN,9,200,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party11,HELL_HOUND,7,200,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party11,HELL_HOUND,7,200,ATTACK_DUNGEON_HEART,0)
        ADD_TO_PARTY(party11,HELL_HOUND,7,200,ATTACK_DUNGEON_HEART,0)

REM Manage groups spawning

	IF(PLAYER0,TIMER1 >= 3500)
        SET_MUSIC("map01816_main.ogg")
		QUICK_INFORMATION(3,"The first wave has arrived in the north. Get to work and dispose of these fools who would dare challenge you.")
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,party1,-1,1)
	ENDIF

	IF(PLAYER0,TIMER1 >= 9500)
		QUICK_INFORMATION(5,"Be ready, footsteps of the second wave are approaching.")
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,party1,-1,1)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,party2,-2,1)
	ENDIF

	IF(PLAYER0,TIMER1 >= 15500)
		QUICK_INFORMATION(6,"Looks like a greater assault from the south for the third wave. I hope you have been training, keeper.")
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,party3,-2,1)
	ENDIF

    IF(PLAYER0,TIMER1 >= 20500)
		QUICK_INFORMATION(7,"One more assault from both sides. After this you should be able to rest easy for a while. Don't be lazy, however. There are many worthwhile things to find...")
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,party4,-1,1)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,party5,-2,1)
	ENDIF

    REM Don't spawn enemies for a while - half an hour has passed

    IF(PLAYER0,TIMER1 >= 34500)
		QUICK_INFORMATION(8,"The fifth wave is here. The enemy is getting stronger and you should be wary of the time, keeper.")
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,party7,-1,1)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,party6,-2,1)
	ENDIF

    IF(PLAYER0,TIMER1 >= 39500)
		QUICK_INFORMATION(9,"The sixth wave is here, be careful. The next one will hurt, you should finish your business here soon. Use the time after this round well to destroy their heart in the northern fortress.")
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,party9,-1,1)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,party8,-2,1)
	ENDIF

    REM Another long break

    IF(PLAYER0,TIMER1 >= 55500)
		QUICK_INFORMATION(10,"The enemy draws near. You would better be ready and wrap things up in a timely manner.")
	ENDIF

    IF(PLAYER0,TIMER1 >= 61000)
		QUICK_INFORMATION(11,"The last wave has arrived. If you haven't destroyed the dungeon heart yet, good luck.")
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,party11,-1,1)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,party10,-2,3)
	ENDIF

REM Victory Condition

    IF(PLAYER_GOOD,DUNGEON_DESTROYED == 1)
        QUICK_OBJECTIVE(2,"Excellent work crushing these fools. They will bother us no longer in our conquest.")
        WIN_GAME
    ENDIF