REM Burroughs (c) 0etelaer
REM After reading several books by Edgar Rice Burroughs, I noticed he used the same formula for every story he wrote.
REM So I made a Dungeon Keeper Level here, using that formula.
REM




START_MONEY(PLAYER0,28656)
START_MONEY(PLAYER1,28656)
START_MONEY(PLAYER_GOOD,9999999)

COMPUTER_PLAYER(PLAYER1,0)
COMPUTER_PLAYER(PLAYER_GOOD,0)

SET_GENERATE_SPEED(609)

SET_CREATURE_HEALTH(MONK,2310)

SET_COMPUTER_PROCESS(PLAYER1,"BUILD A LAIR ROOM",1,9,8,14,0)
SET_COMPUTER_PROCESS(PLAYER1,"BUILD A HATCHERY",2,6,5,13,0)
SET_COMPUTER_PROCESS(PLAYER1,"BUILD A RESEARCH ROOM",3,7,6,3,0)
SET_COMPUTER_PROCESS(PLAYER1,"BUILD A SCAVENGER ROOM",-1,5,4,9,0)
SET_COMPUTER_PROCESS(PLAYER1,"BUILD A TEMPLE ROOM",-2,5,5,10,0)
SET_COMPUTER_PROCESS(PLAYER1,"BUILD A WORKSHOP ROOM",-3,5,5,8,0)

MAX_CREATURES(PLAYER0,20)
MAX_CREATURES(PLAYER1,20)

ADD_CREATURE_TO_POOL(TROLL,7)
ADD_CREATURE_TO_POOL(DARK_MISTRESS,12)
ADD_CREATURE_TO_POOL(BILE_DEMON,12)
ADD_CREATURE_TO_POOL(DRAGON,7)
ADD_CREATURE_TO_POOL(DEMONSPAWN,12)
ADD_CREATURE_TO_POOL(SORCEROR,4)
ADD_CREATURE_TO_POOL(TENTACLE,4)
ADD_CREATURE_TO_POOL(ORC,20)
ADD_CREATURE_TO_POOL(HELL_HOUND,7)
ADD_CREATURE_TO_POOL(BUG,4)
ADD_CREATURE_TO_POOL(FLY,2)
ADD_CREATURE_TO_POOL(SPIDER,4)

CREATURE_AVAILABLE(ALL_PLAYERS,TROLL,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,DARK_MISTRESS,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,BILE_DEMON,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,DRAGON,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,DEMONSPAWN,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,SORCEROR,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,TENTACLE,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,ORC,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,HELL_HOUND,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,BUG,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,FLY,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,SPIDER,1,1)

ROOM_AVAILABLE(PLAYER1,TREASURE,1,1)
ROOM_AVAILABLE(PLAYER1,LAIR,1,1)
ROOM_AVAILABLE(PLAYER1,GARDEN,1,1)
ROOM_AVAILABLE(PLAYER1,TRAINING,1,1)
ROOM_AVAILABLE(PLAYER1,RESEARCH,1,1)
ROOM_AVAILABLE(PLAYER1,WORKSHOP,1,0)
ROOM_AVAILABLE(PLAYER1,BARRACKS,1,0)
ROOM_AVAILABLE(PLAYER1,GUARD_POST,1,0)
ROOM_AVAILABLE(PLAYER1,BRIDGE,1,0)
ROOM_AVAILABLE(PLAYER1,PRISON,1,0)
ROOM_AVAILABLE(PLAYER1,TORTURE,1,0)
ROOM_AVAILABLE(PLAYER1,SCAVENGER,1,0)
ROOM_AVAILABLE(PLAYER1,TEMPLE,1,0)
ROOM_AVAILABLE(PLAYER1,GRAVEYARD,1,0)

MAGIC_AVAILABLE(PLAYER1,POWER_HAND,1,1)
MAGIC_AVAILABLE(PLAYER1,POWER_SLAP,1,1)
MAGIC_AVAILABLE(PLAYER1,POWER_OBEY,1,0)
MAGIC_AVAILABLE(PLAYER1,POWER_CALL_TO_ARMS,1,0)
MAGIC_AVAILABLE(PLAYER1,POWER_SPEED,1,0)
MAGIC_AVAILABLE(PLAYER1,POWER_IMP,1,1)
MAGIC_AVAILABLE(PLAYER1,POWER_PROTECT,1,0)
MAGIC_AVAILABLE(PLAYER1,POWER_LIGHTNING,1,0)
MAGIC_AVAILABLE(PLAYER1,POWER_CONCEAL,1,0)
MAGIC_AVAILABLE(PLAYER1,POWER_DESTROY_WALLS,1,0)
MAGIC_AVAILABLE(PLAYER1,POWER_CHICKEN,1,0)
MAGIC_AVAILABLE(PLAYER1,POWER_DISEASE,1,0)
MAGIC_AVAILABLE(PLAYER1,POWER_HOLD_AUDIENCE,1,0)

MAGIC_AVAILABLE(PLAYER0,POWER_CALL_TO_ARMS,1,1)

IF(PLAYER0,TOTAL_AREA>=50)
	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,WORKSHOP,1,0)
	ROOM_AVAILABLE(PLAYER0,BARRACKS,1,0)
	ROOM_AVAILABLE(PLAYER0,GUARD_POST,1,0)
	ROOM_AVAILABLE(PLAYER0,BRIDGE,1,0)
	ROOM_AVAILABLE(PLAYER0,PRISON,1,0)
	ROOM_AVAILABLE(PLAYER0,TORTURE,1,0)
	ROOM_AVAILABLE(PLAYER0,SCAVENGER,1,0)
	ROOM_AVAILABLE(PLAYER0,TEMPLE,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_OBEY,1,0)
	MAGIC_AVAILABLE(PLAYER0,POWER_SPEED,1,0)
	MAGIC_AVAILABLE(PLAYER0,POWER_IMP,1,1)
	MAGIC_AVAILABLE(PLAYER0,POWER_PROTECT,1,0)
	MAGIC_AVAILABLE(PLAYER0,POWER_LIGHTNING,1,0)
	MAGIC_AVAILABLE(PLAYER0,POWER_CONCEAL,1,0)
	MAGIC_AVAILABLE(PLAYER0,POWER_DESTROY_WALLS,1,0)
	MAGIC_AVAILABLE(PLAYER0,POWER_CHICKEN,1,0)
	MAGIC_AVAILABLE(PLAYER0,POWER_DISEASE,1,0)
	MAGIC_AVAILABLE(PLAYER0,POWER_HOLD_AUDIENCE,1,0)
ENDIF

TRAP_AVAILABLE(ALL_PLAYERS,ALARM,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,LIGHTNING,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,WORD_OF_POWER,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,BOULDER,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,LAVA,1,0)
DOOR_AVAILABLE(ALL_PLAYERS,BRACED,1,0)
DOOR_AVAILABLE(ALL_PLAYERS,STEEL,1,0)
DOOR_AVAILABLE(ALL_PLAYERS,WOOD,1,0)

CREATE_PARTY(THIEVES0)
	ADD_TO_PARTY(THIEVES0,THIEF,10,4180,STEAL_GOLD,376)
	ADD_TO_PARTY(THIEVES0,THIEF,10,6764,STEAL_GOLD,609)
	ADD_TO_PARTY(THIEVES0,THIEF,10,10945,STEAL_GOLD,2584)

CREATE_PARTY(THIEVES1)
	ADD_TO_PARTY(THIEVES1,FAIRY,10,6764,STEAL_GOLD,376)
	ADD_TO_PARTY(THIEVES1,FAIRY,10,2583,STEAL_GOLD,609)
	ADD_TO_PARTY(THIEVES1,FAIRY,10,2583,STEAL_GOLD,2584)

CREATE_PARTY(TUNNELGANG0)
	ADD_TO_PARTY(TUNNELGANG0,MONK,8,986,ATTACK_DUNGEON_HEART,88)
	ADD_TO_PARTY(TUNNELGANG0,BARBARIAN,8,4180,DEFEND_PARTY,88)
	ADD_TO_PARTY(TUNNELGANG0,GIANT,10,6764,DEFEND_PARTY,88)
	ADD_TO_PARTY(TUNNELGANG0,ARCHER,8,1596,DEFEND_PARTY,88)

CREATE_PARTY(TUNNELGANG1)
	ADD_TO_PARTY(TUNNELGANG1,MONK,7,986,ATTACK_DUNGEON_HEART,88)
	ADD_TO_PARTY(TUNNELGANG1,BARBARIAN,6,4180,DEFEND_PARTY,88)
	ADD_TO_PARTY(TUNNELGANG1,GIANT,10,6764,DEFEND_PARTY,88)
	ADD_TO_PARTY(TUNNELGANG1,ARCHER,6,1596,DEFEND_PARTY,88)
	ADD_TO_PARTY(TUNNELGANG1,WIZARD,7,2583,DEFEND_PARTY,88)

CREATE_PARTY(TUNNELGANG2)
	ADD_TO_PARTY(TUNNELGANG2,MONK,4,986,ATTACK_DUNGEON_HEART,88)
	ADD_TO_PARTY(TUNNELGANG2,BARBARIAN,2,4180,DEFEND_PARTY,88)
	ADD_TO_PARTY(TUNNELGANG2,GIANT,5,6764,DEFEND_PARTY,88)
	ADD_TO_PARTY(TUNNELGANG2,ARCHER,4,1596,DEFEND_PARTY,88)

CREATE_PARTY(DUNGEONGANG0)
	ADD_TO_PARTY(DUNGEONGANG0,AVATAR,10,1346268,DEFEND_PARTY,376)
	ADD_TO_PARTY(DUNGEONGANG0,DWARFA,8,986,ATTACK_ROOMS,232)
	ADD_TO_PARTY(DUNGEONGANG0,DWARFA,7,986,ATTACK_ROOMS,376)
	ADD_TO_PARTY(DUNGEONGANG0,DWARFA,9,986,ATTACK_ROOMS,986)
	ADD_TO_PARTY(DUNGEONGANG0,DWARFA,10,986,ATTACK_ROOMS,376)

CREATE_PARTY(DUNGEONGANG1)
	ADD_TO_PARTY(DUNGEONGANG1,ARCHER,8,610,DEFEND_PARTY,376)
	ADD_TO_PARTY(DUNGEONGANG1,DWARFA,8,986,ATTACK_ROOMS,232)
	ADD_TO_PARTY(DUNGEONGANG1,DWARFA,7,986,ATTACK_ROOMS,376)
	ADD_TO_PARTY(DUNGEONGANG1,DWARFA,9,986,ATTACK_ROOMS,986)
	ADD_TO_PARTY(DUNGEONGANG1,DWARFA,10,986,ATTACK_ROOMS,376)

CREATE_PARTY(CASTLEGANG0)
	ADD_TO_PARTY(CASTLEGANG0,BARBARIAN,8,610,DEFEND_PARTY,376)
	ADD_TO_PARTY(CASTLEGANG0,WIZARD,8,610,ATTACK_ENEMIES,376)
	ADD_TO_PARTY(CASTLEGANG0,GIANT,8,610,DEFEND_PARTY,376)
	ADD_TO_PARTY(CASTLEGANG0,BARBARIAN,8,610,DEFEND_PARTY,376)
	ADD_TO_PARTY(CASTLEGANG0,ARCHER,8,610,DEFEND_PARTY,376)

CREATE_PARTY(CASTLEGANG1)
	ADD_TO_PARTY(CASTLEGANG1,BARBARIAN,8,610,DEFEND_PARTY,376)
	ADD_TO_PARTY(CASTLEGANG1,MONK,8,610,ATTACK_ENEMIES,376)
	ADD_TO_PARTY(CASTLEGANG1,GIANT,8,610,DEFEND_PARTY,376)
	ADD_TO_PARTY(CASTLEGANG1,ARCHER,8,610,DEFEND_PARTY,376)
	ADD_TO_PARTY(CASTLEGANG1,ARCHER,8,610,DEFEND_PARTY,376)

CREATE_PARTY(CASTLEGANG2)
	ADD_TO_PARTY(CASTLEGANG2,BARBARIAN,9,610,DEFEND_PARTY,376)
	ADD_TO_PARTY(CASTLEGANG2,WIZARD,8,610,ATTACK_ENEMIES,376)
	ADD_TO_PARTY(CASTLEGANG2,GIANT,10,610,DEFEND_PARTY,376)
	ADD_TO_PARTY(CASTLEGANG2,MONK,8,610,DEFEND_PARTY,376)
	ADD_TO_PARTY(CASTLEGANG2,MONK,8,610,DEFEND_PARTY,376)

CREATE_PARTY(WITCHPARTY)
	ADD_TO_PARTY(WITCHPARTY,WIZARD,7,610,DEFEND_PARTY,376)
	ADD_TO_PARTY(WITCHPARTY,WITCH,8,10945,ATTACK_ENEMIES,376)
	ADD_TO_PARTY(WITCHPARTY,DWARFA,10,610,DEFEND_PARTY,376)
	ADD_TO_PARTY(WITCHPARTY,FAIRY,8,610,DEFEND_PARTY,376)
	ADD_TO_PARTY(WITCHPARTY,DWARFA,8,610,DEFEND_PARTY,376)


REM Action Point 1: East between PLAYER_GOOD and PLAYER1 for tunneller.
REM Action Point 2: Water before the castle.
REM Action Point 3: Hero Workshop.
REM Action Point 4: Empty room below Hero Workshop.
REM Action Point 5: First empty room under corridor.
REM Action Point 6: Second empty room under corridor.
REM Action Point 7: Third empty room under corridor.
REM Action Point 8: Fourth empty room under corridor.
REM Action Point 9: PLAYER_GOOD Barracks.
REM Action Point 10: Large around Hero Hearth, in order to trigger defensive creatures there.
REM Action Point 11: Small on Hero Hearth, for creatures to fall.
REM Action Point 12: Small South East, for tunneller pathfinding from Hero Castle.
REM Action Point 13: Small South West, for tunneler to Dungeon Hearth PLAYER0.
REM Hero Gate -1: North above water, entering through rock cave.
REM Hero Gate -2: West next to Heart PLAYER_GOOD, entering through rock cave.
REM Hero Gate -3: South West at the Prison with Mistress and Imp.

SET_TIMER(PLAYER0,TIMER2)

IF(PLAYER0,TIMER2<=17711)
	IF(PLAYER0,DRAGON==0)
		LOSE_GAME
	ENDIF
ENDIF

IF(PLAYER0,TOTAL_CREATURES>=20)
	ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,TUNNELGANG2,13,DUNGEON_HEART,0,8,232)
ENDIF

IF(PLAYER1,DUNGEON_DESTROYED==1)
	MAGIC_AVAILABLE(PLAYER_GOOD,POWER_SIGHT,1,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,TUNNELGANG1,1,1)
	ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,TUNNELGANG0,1,ACTION_POINT,12,8,232)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DUNGEONGANG1,1,1)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,ARCHER,1,3,10,1596)
	SET_TIMER(PLAYER0,TIMER0)
ENDIF

IF(PLAYER0,TIMER0 >= 4180)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,THIEVES1,-1,1)
ENDIF

IF_ACTION_POINT(2,PLAYER0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,BARBARIAN,-1,5,6,986)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DUNGEONGANG1,-1,1)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,MONK,3,2,7,376)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,MONK,3,2,8,376)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WITCHPARTY,4,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,CASTLEGANG0,5,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,CASTLEGANG1,6,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,CASTLEGANG2,7,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,CASTLEGANG1,8,1)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,MONK,8,2,7,376)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,BARBARIAN,9,7,9,986)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,SAMURAI,11,2,10,986)
	SET_TIMER(PLAYER0,TIMER1)
ENDIF

IF(PLAYER0,TIMER1 >= 6764)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,THIEVES0,-1,1)
ENDIF

IF_ACTION_POINT(10,PLAYER0)
	MAGIC_AVAILABLE(PLAYER_GOOD,POWER_SPEED,1,1)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,SAMURAI,11,8,10,986)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,THIEVES0,-1,1)
	IF(PLAYER_GOOD,SAMURAI<=9)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,CASTLEGANG1,-2,1)
		IF(PLAYER_GOOD,SAMURAI<=8)
			ADD_PARTY_TO_LEVEL(PLAYER_GOOD,CASTLEGANG2,-2,1)
			IF(PLAYER_GOOD,SAMURAI<=6)
				MAGIC_AVAILABLE(PLAYER_GOOD,POWER_PROTECT,1,1)
				ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WITCHPARTY,-2,1)
				IF(PLAYER_GOOD,SAMURAI<=3)
					MAGIC_AVAILABLE(PLAYER_GOOD,POWER_CALL_TO_ARMS,1,1)
					ADD_PARTY_TO_LEVEL(PLAYER_GOOD,CASTLEGANG0,-2,1)
					ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DUNGEONGANG0,-3,1)
					ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,KNIGHT,11,1,10,46367)
					IF(PLAYER_GOOD,DUNGEON_DESTROYED==1)
						IF(PLAYER_GOOD,KNIGHT==0)
							IF(PLAYER_GOOD,AVATAR==0)
								WIN_GAME
							ENDIF
						ENDIF
					ENDIF
				ENDIF
			ENDIF
		ENDIF
	ENDIF
ENDIF
