LEVEL_VERSION(1)
SET_GENERATE_SPEED(300)
START_MONEY(ALL_PLAYERS,250000)
MAX_CREATURES(ALL_PLAYERS,40)

ADD_CREATURE_TO_POOL(DRAGON,20)
ADD_CREATURE_TO_POOL(TROLL,20)
ADD_CREATURE_TO_POOL(SORCEROR,20)
ADD_CREATURE_TO_POOL(DARK_MISTRESS,20)
ADD_CREATURE_TO_POOL(ORC,20)
ADD_CREATURE_TO_POOL(BILE_DEMON,20)

CREATURE_AVAILABLE(PLAYER0,DRAGON,1,0)
CREATURE_AVAILABLE(PLAYER0,TROLL,1,0)
CREATURE_AVAILABLE(PLAYER0,SORCEROR,1,0)
CREATURE_AVAILABLE(PLAYER0,DARK_MISTRESS,1,0)
CREATURE_AVAILABLE(PLAYER0,ORC,1,0)
CREATURE_AVAILABLE(PLAYER0,BILE_DEMON,1,0)

ROOM_AVAILABLE(PLAYER0,TREASURE,1,1)
ROOM_AVAILABLE(PLAYER0,LAIR,1,1)
ROOM_AVAILABLE(PLAYER0,GARDEN,1,1)
ROOM_AVAILABLE(PLAYER0,TRAINING,1,1)
ROOM_AVAILABLE(PLAYER0,RESEARCH,1,1)
ROOM_AVAILABLE(PLAYER0,BRIDGE,1,0)
ROOM_AVAILABLE(PLAYER0,WORKSHOP,1,0)
ROOM_AVAILABLE(PLAYER0,PRISON,1,0)
ROOM_AVAILABLE(PLAYER0,TORTURE,1,0)
ROOM_AVAILABLE(PLAYER0,BARRACKS,1,0)
ROOM_AVAILABLE(PLAYER0,GRAVEYARD,1,0)

MAGIC_AVAILABLE(PLAYER0,POWER_HAND,1,1)
MAGIC_AVAILABLE(PLAYER0,POWER_SLAP,1,1)
MAGIC_AVAILABLE(PLAYER0,POWER_POSSESS,1,1)
MAGIC_AVAILABLE(PLAYER0,POWER_IMP,1,1)
MAGIC_AVAILABLE(PLAYER0,POWER_SPEED,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_OBEY,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_CALL_TO_ARMS,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_CONCEAL,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_HOLD_AUDIENCE,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_HEAL_CREATURE,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_PROTECT,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_TIME_BOMB,1,0)

TRAP_AVAILABLE(PLAYER0,POISON_GAS,1,0)
TRAP_AVAILABLE(PLAYER0,LIGHTNING,1,0)
TRAP_AVAILABLE(PLAYER0,WORD_OF_POWER,1,0)

DOOR_AVAILABLE(PLAYER0,MAGIC,1,0)
DOOR_AVAILABLE(PLAYER0,SECRET,1,0)

SET_CREATURE_ARMOUR(AVATAR,255)
SET_CREATURE_HEALTH(AVATAR,7895)
SET_CREATURE_STRENGTH(AVATAR,255)
SET_CREATURE_INSTANCE(AVATAR,3,REBOUND,3)
SET_CREATURE_INSTANCE(AVATAR,5,LIGHTNING,5)
SET_CREATURE_PROPERTY(KNIGHT,LORD,0)

SET_GAME_RULE(ImpWorkExperience,500)

SET_MUSIC(5)

CREATE_PARTY(ONE)
	ADD_TO_PARTY(ONE,GIANT,6,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(ONE,BARBARIAN,6,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(ONE,BARBARIAN,6,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(ONE,DWARFA,7,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(ONE,DWARFA,7,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(ONE,ARCHER,7,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(ONE,ARCHER,7,0,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(TWO)
	ADD_TO_PARTY(TWO,GIANT,5,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(TWO,BARBARIAN,6,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(TWO,BARBARIAN,6,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(TWO,DWARFA,6,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(TWO,DWARFA,6,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(TWO,ARCHER,4,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(TWO,ARCHER,4,0,ATTACK_DUNGEON_HEART,0)
    
CREATE_PARTY(THREE)
	ADD_TO_PARTY(THREE,MONK,8,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(THREE,WIZARD,6,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(THREE,WITCH,6,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(THREE,FAIRY,7,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(THREE,TIME_MAGE,7,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(THREE,MONK,8,0,ATTACK_DUNGEON_HEART,0)

SET_FLAG(PLAYER0,FLAG0,0)
SET_FLAG(PLAYER_GOOD,FLAG0,0)

SET_BOX_TOOLTIP_ID(0,19)

SET_POWER_CONFIGURATION(POWER_TIME_BOMB,Castability,"ONLY_DIGGERS",0)

DISPLAY_OBJECTIVE(2,ALL_PLAYERS)
HEART_LOST_OBJECTIVE(3,ALL_PLAYERS)

IF(PLAYER0,GAME_TURN > 500)
    DISPLAY_INFORMATION(4,ALL_PLAYERS)
ENDIF

IF(PLAYER0,GAME_TURN > 1000)
    DISPLAY_INFORMATION(5,ALL_PLAYERS)
ENDIF

IF(PLAYER0,TOTAL_GOLD_MINED > 0)
    DISPLAY_INFORMATION(6,ALL_PLAYERS)
    SET_TIMER(PLAYER_GOOD,TIMER0)
	DISPLAY_COUNTDOWN(PLAYER_GOOD, TIMER0, 4000, 1)
ENDIF

IF(PLAYER_GOOD,TIMER0 > 2000)
	DISPLAY_INFORMATION(7,ALL_PLAYERS)
ENDIF

IF(PLAYER0,GAME_TURN > 2000)
	DISPLAY_INFORMATION(8,ALL_PLAYERS)
ENDIF

IF(PLAYER_GOOD,TIMER0 > 4000)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,DWARFA,-1,10,6,0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,DWARFA,-2,10,6,0)
ENDIF

IF(PLAYER_GOOD,TIMER0 > 7000)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,DWARFA,5,10,6,0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,DWARFA,6,10,6,0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,TWO,7,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,TWO,8,1)
ENDIF

IF(PLAYER_GOOD,TIMER0 > 10000)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,DWARFA,-1,10,6,0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,DWARFA,-2,10,6,0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,TWO,5,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,TWO,6,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,TWO,7,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,TWO,8,1)
	IF_CONTROLS(PLAYER_GOOD,TOTAL_CREATURES == 0)
		DISPLAY_OBJECTIVE(9,ALL_PLAYERS)
		SET_TIMER(PLAYER_GOOD,TIMER1)
		DISPLAY_COUNTDOWN(PLAYER_GOOD, TIMER1, 4000, 1)
	ENDIF
ENDIF

IF(PLAYER_GOOD,TIMER1 > 4000)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,ONE,5,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,ONE,6,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,ONE,7,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,ONE,8,1)
    ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,THIEF,-1,10,4,0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,THIEF,-2,10,4,0)
ENDIF

IF(PLAYER_GOOD,TIMER1 > 7000)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,ONE,5,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,ONE,6,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,ONE,7,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,ONE,8,1)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,GIANT,-1,5,5,0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,GIANT,-2,5,5,0)
ENDIF

IF(PLAYER_GOOD,TIMER1 > 9000)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,DWARFA,5,5,7,0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,DWARFA,6,5,7,0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,DWARFA,7,5,7,0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,DWARFA,8,5,7,0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,GIANT,-1,5,5,0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,GIANT,-2,5,5,0)
ENDIF

IF(PLAYER_GOOD,TIMER1 > 10000)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,THREE,1,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,THREE,2,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,THREE,3,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,THREE,4,1)
    ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,THIEF,-1,5,10,0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,THIEF,-2,5,10,0)
    ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,MONK,5,3,6,0)
    ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,MONK,6,3,6,0)
    ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,MONK,7,3,6,0)
    ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,MONK,8,3,6,0)
	IF_CONTROLS(PLAYER_GOOD,TOTAL_CREATURES == 0)
		DISPLAY_OBJECTIVE(10,ALL_PLAYERS)
		SET_TIMER(PLAYER_GOOD,TIMER2)
		DISPLAY_COUNTDOWN(PLAYER_GOOD, TIMER2, 7000, 1)
	ENDIF
ENDIF

IF(PLAYER_GOOD,TIMER2 > 7000)
    ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,SAMURAI,-1,5,5,0)
    ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,SAMURAI,-2,5,5,0)
    SET_TIMER(PLAYER_GOOD,TIMER3)
ENDIF

IF(PLAYER_GOOD,TIMER3 > 600)
	IF(PLAYER_GOOD,FLAG0 < 10)
		NEXT_COMMAND_REUSABLE
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,SAMURAI,5,5,5,0)
		NEXT_COMMAND_REUSABLE
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,SAMURAI,6,5,5,0)
		NEXT_COMMAND_REUSABLE
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,SAMURAI,7,5,5,0)
		NEXT_COMMAND_REUSABLE
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,SAMURAI,8,5,5,0)
		NEXT_COMMAND_REUSABLE
		ADD_TO_FLAG(PLAYER_GOOD,FLAG0,1)
		NEXT_COMMAND_REUSABLE
		SET_TIMER(PLAYER_GOOD,TIMER3)
	ENDIF
    HEART_LOST_OBJECTIVE(11,ALL_PLAYERS)
ENDIF

IF(PLAYER_GOOD,FLAG0 >= 10)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,SAMURAI,1,5,5,0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,SAMURAI,2,5,5,0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,SAMURAI,3,5,5,0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,SAMURAI,4,5,5,0)
	IF_CONTROLS(PLAYER_GOOD,TOTAL_CREATURES == 0)
		DISPLAY_OBJECTIVE(12,ALL_PLAYERS)
		SET_TIMER(PLAYER_GOOD,TIMER4)
		DISPLAY_COUNTDOWN(PLAYER_GOOD, TIMER4, 5000, 1)
	ENDIF
ENDIF

IF(PLAYER_GOOD,TIMER4 > 2000)
    DISPLAY_OBJECTIVE(13,ALL_PLAYERS)
ENDIF

IF(PLAYER_GOOD,TIMER4 > 5000)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,KNIGHT,-1,15,10,0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,KNIGHT,-2,15,10,0)
	IF_CONTROLS(PLAYER_GOOD,TOTAL_CREATURES == 0)
        DISPLAY_OBJECTIVE(14,ALL_PLAYERS)
		SET_TIMER(PLAYER_GOOD,TIMER5)
		DISPLAY_COUNTDOWN(PLAYER_GOOD, TIMER5, 5000, 1)
	ENDIF
ENDIF

IF(PLAYER_GOOD,TIMER5 > 5000)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,AVATAR,DRAWFROM(-1,-2),1,10,0)
    DISPLAY_INFORMATION(15,ALL_PLAYERS)
	IF_CONTROLS(PLAYER_GOOD,TOTAL_CREATURES == 0)
        DISPLAY_OBJECTIVE(16,ALL_PLAYERS)
		WIN_GAME
	ENDIF
ENDIF

IF_AVAILABLE(PLAYER0,POWER_TIME_BOMB >= 1)
    DISPLAY_INFORMATION(17,ALL_PLAYERS)
    SET_TIMER(PLAYER0,TIMER0)
    IF(PLAYER0,TIMER0 > 300)
        DISPLAY_INFORMATION(18,ALL_PLAYERS)
    ENDIF
ENDIF

IF(PLAYER0,FLAG0 > 0)
    NEXT_COMMAND_REUSABLE
    ADD_CREATURE_TO_LEVEL(PLAYER0,IMP,PLAYER0,30,10,0)
    NEXT_COMMAND_REUSABLE
    SET_FLAG(PLAYER0,FLAG0,0)
ENDIF

IF(PLAYER0,BOX0_ACTIVATED == 1)
  	SET_FLAG(PLAYER0,FLAG0,1)
ENDIF

IF(PLAYER0,BOX0_ACTIVATED == 2)
  	SET_FLAG(PLAYER0,FLAG0,1)
ENDIF