LEVEL_VERSION(1)
SET_GENERATE_SPEED(400)
START_MONEY(ALL_PLAYERS,5000)
MAX_CREATURES(PLAYER1,40)
MAX_CREATURES(PLAYER2,30)
MAX_CREATURES(PLAYER0,20)

SET_GAME_RULE(DisplayPortalLimit,1)

SET_GAME_RULE(ImpWorkExperience,250)

COMPUTER_PLAYER(PLAYER1,0)
COMPUTER_PLAYER(PLAYER2,0)

ADD_CREATURE_TO_POOL(FLY,20)
ADD_CREATURE_TO_POOL(BUG,20)
ADD_CREATURE_TO_POOL(DEMONSPAWN,20)
ADD_CREATURE_TO_POOL(TROLL,20)
ADD_CREATURE_TO_POOL(SPIDER,20)
ADD_CREATURE_TO_POOL(HELL_HOUND,20)
ADD_CREATURE_TO_POOL(SORCEROR,20)
ADD_CREATURE_TO_POOL(ORC,20)
ADD_CREATURE_TO_POOL(BILE_DEMON,20)
ADD_CREATURE_TO_POOL(DRAGON,20)
ADD_CREATURE_TO_POOL(DARK_MISTRESS,20)
ADD_CREATURE_TO_POOL(MAIDEN,20)
ADD_CREATURE_TO_POOL(BEHOLDER,20)

CREATURE_AVAILABLE(PLAYER0,FLY,1,0)
CREATURE_AVAILABLE(PLAYER0,BUG,1,0)
CREATURE_AVAILABLE(PLAYER0,DEMONSPAWN,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,TROLL,1,0)
CREATURE_AVAILABLE(PLAYER0,SPIDER,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,HELL_HOUND,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,SORCEROR,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,ORC,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,BILE_DEMON,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,DRAGON,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,DARK_MISTRESS,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,MAIDEN,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,BEHOLDER,1,0)

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)

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(PLAYER0,POWER_CALL_TO_ARMS,1,0)
MAGIC_AVAILABLE(PLAYER1,POWER_CALL_TO_ARMS,0,0)
MAGIC_AVAILABLE(PLAYER2,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_CHICKEN,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_ARMAGEDDON,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_DESTROY_WALLS,1,0)

TRAP_AVAILABLE(ALL_PLAYERS,ALARM,1,0)
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,1)
DOOR_AVAILABLE(ALL_PLAYERS,BRACED,1,0)
DOOR_AVAILABLE(ALL_PLAYERS,STEEL,1,0)
DOOR_AVAILABLE(ALL_PLAYERS,MAGIC,1,0)

ALLY_PLAYERS(PLAYER1,PLAYER2,3)
ALLY_PLAYERS(PLAYER2,PLAYER1,3)
ALLY_PLAYERS(PLAYER_GOOD,PLAYER2,3)
ALLY_PLAYERS(PLAYER_GOOD,PLAYER1,3)

QUICK_OBJECTIVE(1,"In this realm, they hath all united, to cast the legendary Keeper into exile eternal. Yet every thorn they wield shall but further kindle his wrath. The days be numbered, shall darkness rise and devour all.")

SET_CREATURE_PROPERTY(IMP,NO_IMPRISONMENT,1)

SET_CREATURE_PROPERTY(KNIGHT,LORD,0)

CREATE_PARTY(GUARD)
 ADD_TO_PARTY(GUARD,WIZARD,5,0,DEFEND_ROOMS,-350)
 ADD_TO_PARTY(GUARD,WIZARD,4,0,DEFEND_ROOMS,-350)
 ADD_TO_PARTY(GUARD,MONK,5,0,DEFEND_ROOMS,-350)

ADD_PARTY_TO_LEVEL(PLAYER_GOOD,GUARD,1,1)
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,GUARD,2,1)
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,GUARD,3,1)
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,GUARD,4,1)

CREATE_PARTY(INV)
 ADD_TO_PARTY(INV,GIANT,5,0,ATTACK_DUNGEON_HEART,-350)
 ADD_TO_PARTY(INV,BARBARIAN,4,0,ATTACK_DUNGEON_HEART,-350)

CREATE_PARTY(INV1)
 ADD_TO_PARTY(INV1,FAIRY,5,0,ATTACK_DUNGEON_HEART,-350)
 ADD_TO_PARTY(INV1,DWARFA,4,0,ATTACK_DUNGEON_HEART,-350)

CREATE_PARTY(INV2)
 ADD_TO_PARTY(INV2,MONK,5,0,ATTACK_DUNGEON_HEART,-350)
 ADD_TO_PARTY(INV2,ARCHER,5,0,ATTACK_DUNGEON_HEART,-350)

 CREATE_PARTY(INV3)
 ADD_TO_PARTY(INV3,SAMURAI,5,0,ATTACK_DUNGEON_HEART,-350)
 ADD_TO_PARTY(INV3,SAMURAI,4,0,ATTACK_DUNGEON_HEART,-350)

 CREATE_PARTY(INV4)
 ADD_TO_PARTY(INV4,FAIRY,7,0,ATTACK_DUNGEON_HEART,-350)
 ADD_TO_PARTY(INV4,FAIRY,6,0,ATTACK_DUNGEON_HEART,-350)

 CREATE_PARTY(INV5)
 ADD_TO_PARTY(INV5,FAIRY,10,0,DEFEND_HEART,-350)
 ADD_TO_PARTY(INV5,FAIRY,10,0,DEFEND_HEART,-350)
 ADD_TO_PARTY(INV5,AVATAR,10,0,DEFEND_HEART,-350)
 ADD_TO_PARTY(INV5,SAMURAI,10,0,DEFEND_HEART,-350)
 ADD_TO_PARTY(INV5,SAMURAI,10,0,DEFEND_HEART,-350)
 ADD_TO_PARTY(INV5,WIZARD,10,0,DEFEND_HEART,-350)
 ADD_TO_PARTY(INV5,WIZARD,10,0,DEFEND_HEART,-350)

 CREATE_PARTY(INV6)
 ADD_TO_PARTY(INV6,FAIRY,6,0,ATTACK_DUNGEON_HEART,-350)
 ADD_TO_PARTY(INV6,FAIRY,6,0,ATTACK_DUNGEON_HEART,-350)
 ADD_TO_PARTY(INV6,SAMURAI,6,0,ATTACK_DUNGEON_HEART,-350)
 ADD_TO_PARTY(INV6,SAMURAI,6,0,ATTACK_DUNGEON_HEART,-350)

 CREATE_PARTY(INV7)
 ADD_TO_PARTY(INV7,KNIGHT,10,0,ATTACK_DUNGEON_HEART,-350)
 ADD_TO_PARTY(INV7,KNIGHT,10,0,ATTACK_DUNGEON_HEART,-350)

HIDE_HERO_GATE(-3,1)

IF_ACTION_POINT(5,PLAYER0)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,INV5,5,1)
ENDIF

SET_TIMER(PLAYER0,TIMER5)

IF(PLAYER0,TIMER5 >= 5000)
    ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,INV,-3,DUNGEON_HEART,0,2,0)
ENDIF

IF(PLAYER0,TIMER5 >= 7500)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,INV1,-1,1)
ENDIF

IF(PLAYER0,TIMER5 >= 10000)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,INV2,-2,1)
ENDIF

IF(PLAYER0,TIMER5 >= 12500)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,INV3,-1,1)
ENDIF

IF(PLAYER0,TIMER5 >= 15000)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,INV4,-2,1)
ENDIF

IF(PLAYER0,TIMER5 >= 17500)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,INV6,-1,1)
ENDIF

IF(PLAYER0,TIMER5 >= 20000)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,INV7,-2,1)
ENDIF


IF(PLAYER0,ALL_DUNGEONS_DESTROYED == 1)
	WIN_GAME
ENDIF
