REM ANOTHER DUNGEON LEVEL17
REM }[XV[`K`

REM *** SETUP_SECTION ***

SET_GENERATE_SPEED(400)

START_MONEY(PLAYER0, 15000)
START_MONEY(PLAYER1, 50000)
START_MONEY(PLAYER2, 50000)
START_MONEY(PLAYER3, 50000)

MAX_CREATURES(PLAYER0, 50)
MAX_CREATURES(PLAYER1, 30)
MAX_CREATURES(PLAYER2, 30)
MAX_CREATURES(PLAYER3, 30)

COMPUTER_PLAYER(PLAYER1, 0)
SET_COMPUTER_PROCESS(PLAYER1, "DIG TO CLOSE GOLD", 0, 26000, 500, 7, 300)
COMPUTER_PLAYER(PLAYER2, 0)
SET_COMPUTER_PROCESS(PLAYER2, "DIG TO CLOSE GOLD", 0, 18000, 500, 10, 300)
COMPUTER_PLAYER(PLAYER3, 0)

ALLY_PLAYERS(PLAYER1, PLAYER2)
ALLY_PLAYERS(PLAYER1, PLAYER3)
ALLY_PLAYERS(PLAYER2, PLAYER3)

ADD_CREATURE_TO_POOL(FLY, 20)
ADD_CREATURE_TO_POOL(BUG, 5)
ADD_CREATURE_TO_POOL(SPIDER, 30)
ADD_CREATURE_TO_POOL(DRAGON, 30)
ADD_CREATURE_TO_POOL(SORCEROR, 30)
ADD_CREATURE_TO_POOL(TROLL, 30)
ADD_CREATURE_TO_POOL(DARK_MISTRESS, 30)
ADD_CREATURE_TO_POOL(SKELETON, 30)
ADD_CREATURE_TO_POOL(GHOST, 6)
ADD_CREATURE_TO_POOL(BILE_DEMON, 20)
ADD_CREATURE_TO_POOL(ORC, 20)
ADD_CREATURE_TO_POOL(VAMPIRE, 30)
ADD_CREATURE_TO_POOL(TENTACLE, 30)
ADD_CREATURE_TO_POOL(HELL_HOUND, 30)

CREATURE_AVAILABLE(PLAYER0, FLY, 1, 1)
CREATURE_AVAILABLE(PLAYER0, SPIDER, 1, 1)
CREATURE_AVAILABLE(PLAYER0, SORCEROR, 1, 1)
CREATURE_AVAILABLE(PLAYER0, BILE_DEMON, 1, 1)
CREATURE_AVAILABLE(PLAYER0, DARK_MISTRESS, 1, 1)
CREATURE_AVAILABLE(PLAYER0, SKELETON, 1, 1)
CREATURE_AVAILABLE(PLAYER0, ORC, 1, 1)
CREATURE_AVAILABLE(PLAYER0, TENTACLE, 1, 1)
CREATURE_AVAILABLE(PLAYER0, TROLL, 1, 1)
CREATURE_AVAILABLE(PLAYER0, HELL_HOUND, 1, 1)
CREATURE_AVAILABLE(PLAYER1, ORC, 1, 1)
CREATURE_AVAILABLE(PLAYER1, SORCEROR, 1, 1)
CREATURE_AVAILABLE(PLAYER1, DRAGON, 1, 1)
CREATURE_AVAILABLE(PLAYER1, SKELETON, 1, 1)
CREATURE_AVAILABLE(PLAYER2, SPIDER, 1, 1)
CREATURE_AVAILABLE(PLAYER2, TROLL, 1, 1)
CREATURE_AVAILABLE(PLAYER2, VAMPIRE, 1, 1)
CREATURE_AVAILABLE(PLAYER2, HELL_HOUND, 1, 1)
CREATURE_AVAILABLE(PLAYER3, BUG, 1, 1)
CREATURE_AVAILABLE(PLAYER3, GHOST, 1, 1)
CREATURE_AVAILABLE(PLAYER3, BILE_DEMON, 1, 1)
CREATURE_AVAILABLE(PLAYER3, DARK_MISTRESS, 1, 1)

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, RESEARCH, 1, 1)
ROOM_AVAILABLE(ALL_PLAYERS, TRAINING, 1, 1)
ROOM_AVAILABLE(ALL_PLAYERS, BRIDGE, 1, 0)
ROOM_AVAILABLE(PLAYER0, BARRACKS, 1, 0)
ROOM_AVAILABLE(PLAYER0, WORKSHOP, 1, 0)
ROOM_AVAILABLE(PLAYER0, GUARD_POST, 1, 0)
ROOM_AVAILABLE(PLAYER0, TEMPLE, 1, 0)
ROOM_AVAILABLE(PLAYER0, GRAVEYARD, 1, 0)
ROOM_AVAILABLE(PLAYER1, BARRACKS, 1, 1)
ROOM_AVAILABLE(PLAYER1, WORKSHOP, 1, 0)
ROOM_AVAILABLE(PLAYER1, PRISON, 1, 0)
ROOM_AVAILABLE(PLAYER2, WORKSHOP, 1, 0)
ROOM_AVAILABLE(PLAYER2, SCAVENGER, 1, 0)
ROOM_AVAILABLE(PLAYER2, GRAVEYARD, 1, 0)
ROOM_AVAILABLE(PLAYER3, WORKSHOP, 1, 0)
ROOM_AVAILABLE(PLAYER3, TORTURE, 1, 1)
ROOM_AVAILABLE(PLAYER3, GRAVEYARD, 1, 0)

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(PLAYER0, POWER_OBEY, 1, 0)
MAGIC_AVAILABLE(PLAYER0, POWER_PROTECT, 1, 0)
MAGIC_AVAILABLE(PLAYER0, POWER_HEAL_CREATURE, 1, 0)
MAGIC_AVAILABLE(PLAYER0, POWER_CONCEAL, 1, 0)
MAGIC_AVAILABLE(PLAYER0, POWER_HOLD_AUDIENCE, 1, 0)
MAGIC_AVAILABLE(PLAYER0, POWER_LIGHTNING, 1, 0)
MAGIC_AVAILABLE(PLAYER0, POWER_CAVE_IN, 1, 0)
MAGIC_AVAILABLE(PLAYER0, POWER_CHICKEN, 1, 0)
MAGIC_AVAILABLE(PLAYER0, POWER_DISEASE, 1, 0)
MAGIC_AVAILABLE(PLAYER0, POWER_DESTROY_WALLS, 1, 0)
MAGIC_AVAILABLE(PLAYER1, POWER_LIGHTNING, 1, 0)
MAGIC_AVAILABLE(PLAYER1, POWER_DESTROY_WALLS, 1, 1)
MAGIC_AVAILABLE(PLAYER2, POWER_DISEASE, 1, 0)
MAGIC_AVAILABLE(PLAYER2, POWER_DESTROY_WALLS, 1, 1)
MAGIC_AVAILABLE(PLAYER3, POWER_CHICKEN, 1, 0)
MAGIC_AVAILABLE(PLAYER3, POWER_DESTROY_WALLS, 1, 1)

TRAP_AVAILABLE(ALL_PLAYERS, WORD_OF_POWER, 1, 0)
TRAP_AVAILABLE(PLAYER0, POISON_GAS, 1, 0)
TRAP_AVAILABLE(PLAYER0, LIGHTNING, 1, 0)
TRAP_AVAILABLE(PLAYER0, BOULDER, 1, 0)
TRAP_AVAILABLE(PLAYER1, LIGHTNING, 1, 0)
TRAP_AVAILABLE(PLAYER2, POISON_GAS, 1, 0)
TRAP_AVAILABLE(PLAYER3, LAVA, 1, 0)

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

SET_CREATURE_HEALTH(KNIGHT, 1000)
SET_CREATURE_ARMOUR(KNIGHT, 150)

REM *** MAIN ***

DISPLAY_OBJECTIVE(137, PLAYER0)

IF(PLAYER0, TOTAL_CREATURES > 10)
	SET_FLAG(PLAYER0, FLAG0, 1)
ENDIF

IF(PLAYER0, BATTLES_LOST > 3)
	SET_FLAG(PLAYER0, FLAG0, 1)
ENDIF

IF(PLAYER0, FLAG0 == 1)
	DISPLAY_INFORMATION(138, PLAYER0)
ENDIF

IF(PLAYER1, DUNGEON_DESTROYED == 1)
	IF(PLAYER2, DUNGEON_DESTROYED == 0)
		IF(PLAYER3, DUNGEON_DESTROYED == 0)
			MAX_CREATURES(PLAYER2, 45)
			MAX_CREATURES(PLAYER3, 45)
			ADD_CREATURE_TO_LEVEL(PLAYER2, HELL_HOUND, PLAYER2, 4, 10, 0)
			ADD_CREATURE_TO_LEVEL(PLAYER3, BILE_DEMON, PLAYER3, 4, 10, 0)
			SET_FLAG(PLAYER_GOOD, FLAG0, 1)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER1, DUNGEON_DESTROYED == 0)
	IF(PLAYER2, DUNGEON_DESTROYED == 1)
		IF(PLAYER3, DUNGEON_DESTROYED == 0)
			MAX_CREATURES(PLAYER1, 45)
			MAX_CREATURES(PLAYER3, 45)
			ADD_CREATURE_TO_LEVEL(PLAYER1, DRAGON, PLAYER1, 4, 10, 0)
			ADD_CREATURE_TO_LEVEL(PLAYER3, BILE_DEMON, PLAYER3, 4, 10, 0)
			SET_FLAG(PLAYER_GOOD, FLAG0, 2)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER1, DUNGEON_DESTROYED == 0)
	IF(PLAYER2, DUNGEON_DESTROYED == 0)
		IF(PLAYER3, DUNGEON_DESTROYED == 1)
			MAX_CREATURES(PLAYER1, 45)
			MAX_CREATURES(PLAYER2, 45)
			ADD_CREATURE_TO_LEVEL(PLAYER1, DRAGON, PLAYER1, 4, 10, 0)
			ADD_CREATURE_TO_LEVEL(PLAYER2, HELL_HOUND, PLAYER2, 4, 10, 0)
			SET_FLAG(PLAYER_GOOD, FLAG0, 3)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER1, DUNGEON_DESTROYED == 0)
	IF(PLAYER2, DUNGEON_DESTROYED == 1)
		IF(PLAYER3, DUNGEON_DESTROYED == 1)
			MAX_CREATURES(PLAYER1, 60)
			ADD_CREATURE_TO_LEVEL(PLAYER1, ORC, PLAYER1, 4, 10, 0)
			SET_FLAG(PLAYER_GOOD, FLAG1, 1)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER1, DUNGEON_DESTROYED == 1)
	IF(PLAYER2, DUNGEON_DESTROYED == 0)
		IF(PLAYER3, DUNGEON_DESTROYED == 1)
			MAX_CREATURES(PLAYER2, 60)
			ADD_CREATURE_TO_LEVEL(PLAYER2, VAMPIRE, PLAYER2, 4, 10, 0)
			SET_FLAG(PLAYER_GOOD, FLAG1, 1)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER1, DUNGEON_DESTROYED == 1)
	IF(PLAYER2, DUNGEON_DESTROYED == 1)
		IF(PLAYER3, DUNGEON_DESTROYED == 0)
			MAX_CREATURES(PLAYER3, 60)
			ADD_CREATURE_TO_LEVEL(PLAYER3, DARK_MISTRESS, PLAYER3, 4, 10, 0)
			SET_FLAG(PLAYER_GOOD, FLAG1, 1)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER_GOOD, FLAG0 >= 1)
	DISPLAY_OBJECTIVE(139, PLAYER0)
ENDIF

IF(PLAYER_GOOD, FLAG1 == 1)
	SET_TIMER(PLAYER_GOOD, TIMER0)
	IF(PLAYER0, TOTAL_CREATURES <= 100)
		SET_FLAG(PLAYER_GOOD, FLAG1, 2)
	ENDIF
	IF(PLAYER0, TOTAL_CREATURES > 100)
		IF(PLAYER_GOOD, TIMER0 > 10000)
			SET_FLAG(PLAYER_GOOD, FLAG1, 2)
		ENDIF
	ENDIF
	IF(PLAYER0, ALL_DUNGEONS_DESTROYED == 1)
		SET_FLAG(PLAYER_GOOD, FLAG1, 2)
	ENDIF
ENDIF

IF(PLAYER_GOOD, FLAG1 == 2)
	DISPLAY_OBJECTIVE(140, PLAYER0)
	IF(PLAYER_GOOD, FLAG0 == 1)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, KNIGHT, 1, 1, 10, 4000)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, GIANT, 1, 5, 10, 800)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, WIZARD, 1, 5, 10, 800)
	ENDIF
	IF(PLAYER_GOOD, FLAG0 == 2)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, KNIGHT, 2, 1, 10, 4000)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, BARBARIAN, 2, 5, 10, 800)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, MONK, 2, 5, 10, 800)
	ENDIF
	IF(PLAYER_GOOD, FLAG0 == 3)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, KNIGHT, 3, 1, 10, 4000)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, SAMURAI, 3, 5, 10, 800)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, WITCH, 3, 5, 10, 800)
	ENDIF
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, DWARFA, 4, 3, 6, 400)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, ARCHER, 4, 3, 6, 400)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, DWARFA, 5, 3, 6, 400)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, ARCHER, 5, 3, 6, 400)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, DWARFA, 6, 3, 6, 400)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, ARCHER, 6, 3, 6, 400)
	SET_TIMER(PLAYER_GOOD, TIMER1)
	IF(PLAYER_GOOD, TIMER1 > 100)
		IF(PLAYER_GOOD, KNIGHT == 0)
			IF(PLAYER0, ALL_DUNGEONS_DESTROYED == 1)
				DISPLAY_OBJECTIVE(141, PLAYER0)
				WIN_GAME
			ENDIF
		ENDIF
	ENDIF
ENDIF

SET_TIMER(PLAYER1, TIMER0)
IF(PLAYER1, DUNGEON_DESTROYED == 0)
	IF(PLAYER1, IMP < 4)
		IF(PLAYER1, TIMER0 > 2000)
			NEXT_COMMAND_REUSABLE
			ADD_CREATURE_TO_LEVEL(PLAYER1, IMP, PLAYER1, 1, 10, 0)
			NEXT_COMMAND_REUSABLE
			SET_TIMER(PLAYER1, TIMER0)
		ENDIF
	ENDIF
ENDIF

SET_TIMER(PLAYER2, TIMER0)
IF(PLAYER2, DUNGEON_DESTROYED == 0)
	IF(PLAYER2, IMP < 13)
		IF(PLAYER2, TIMER0 > 800)
			NEXT_COMMAND_REUSABLE
			ADD_CREATURE_TO_LEVEL(PLAYER2, IMP, PLAYER2, 1, 3, 0)
			NEXT_COMMAND_REUSABLE
			SET_TIMER(PLAYER2, TIMER0)
		ENDIF
	ENDIF
ENDIF

SET_TIMER(PLAYER3, TIMER0)
IF(PLAYER3, DUNGEON_DESTROYED == 0)
	IF(PLAYER3, IMP < 15)
		IF(PLAYER3, TIMER0 > 500)
			NEXT_COMMAND_REUSABLE
			ADD_CREATURE_TO_LEVEL(PLAYER3, IMP, PLAYER3, 1, 1, 0)
			NEXT_COMMAND_REUSABLE
			SET_TIMER(PLAYER3, TIMER0)
		ENDIF
	ENDIF
ENDIF
