REM ANOTHER DUNGEON LEVEL4
REM t[nbg`D鍑`

REM *** SETUP SECTION ***

SET_GENERATE_SPEED(320)

START_MONEY(PLAYER0, 10000)
START_MONEY(PLAYER1, 100000)
START_MONEY(PLAYER2, 20000)

MAX_CREATURES(PLAYER0, 20)
MAX_CREATURES(PLAYER1, 16)
MAX_CREATURES(PLAYER2, 26)

COMPUTER_PLAYER(PLAYER1, 1)
SET_COMPUTER_PROCESS(PLAYER1, "DIG TO CLOSE GOLD", 0, 20000, 100, 5, 50)
COMPUTER_PLAYER(PLAYER2, 2)
SET_COMPUTER_PROCESS(PLAYER2, "DIG TO CLOSE GOLD", 0, 25000, 1500, 3, 50)

ADD_CREATURE_TO_POOL(FLY, 3)
ADD_CREATURE_TO_POOL(BUG, 20)
ADD_CREATURE_TO_POOL(SPIDER, 20)
ADD_CREATURE_TO_POOL(DEMONSPAWN, 20)
ADD_CREATURE_TO_POOL(DRAGON, 20)
ADD_CREATURE_TO_POOL(SORCEROR, 12)
ADD_CREATURE_TO_POOL(BILE_DEMON, 16)
ADD_CREATURE_TO_POOL(TROLL, 20)
ADD_CREATURE_TO_POOL(ORC, 20)
ADD_CREATURE_TO_POOL(SKELETON, 18)
ADD_CREATURE_TO_POOL(DARK_MISTRESS, 15)
ADD_CREATURE_TO_POOL(TENTACLE, 25)
ADD_CREATURE_TO_POOL(HELL_HOUND, 5)

CREATURE_AVAILABLE(ALL_PLAYERS, HELL_HOUND, 1, 1)
CREATURE_AVAILABLE(PLAYER0, DEMONSPAWN, 1, 1)
CREATURE_AVAILABLE(PLAYER0, SORCEROR, 1, 1)
CREATURE_AVAILABLE(PLAYER0, SPIDER, 1, 1)
CREATURE_AVAILABLE(PLAYER0, TROLL, 1, 1)
CREATURE_AVAILABLE(PLAYER0, TENTACLE, 1, 1)
CREATURE_AVAILABLE(PLAYER0, ORC, 1, 1)
CREATURE_AVAILABLE(PLAYER0, DRAGON, 1, 1)
CREATURE_AVAILABLE(PLAYER0, DARK_MISTRESS, 1, 1)
CREATURE_AVAILABLE(PLAYER1, ORC, 1, 1)
rem CREATURE_AVAILABLE(PLAYER1, DRAGON, 1, 1)
CREATURE_AVAILABLE(PLAYER1, DARK_MISTRESS, 1, 1)
CREATURE_AVAILABLE(PLAYER2, ORC, 1, 1)
CREATURE_AVAILABLE(PLAYER2, DRAGON, 1, 1)
CREATURE_AVAILABLE(PLAYER2, DARK_MISTRESS, 1, 1)
CREATURE_AVAILABLE(PLAYER2, FLY, 1, 1)
CREATURE_AVAILABLE(PLAYER2, SKELETON, 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, BARRACKS, 1, 0)
ROOM_AVAILABLE(ALL_PLAYERS, TORTURE, 1, 0)
ROOM_AVAILABLE(PLAYER0, WORKSHOP, 1, 0)
ROOM_AVAILABLE(PLAYER0, GRAVEYARD, 1, 0)
ROOM_AVAILABLE(PLAYER1, BARRACKS, 1, 0)
ROOM_AVAILABLE(PLAYER1, SCAVENGER, 1, 0)
ROOM_AVAILABLE(PLAYER2, WORKSHOP, 1, 0)
ROOM_AVAILABLE(PLAYER2, BARRACKS, 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_OBEY, 1, 0)
MAGIC_AVAILABLE(ALL_PLAYERS, POWER_HEAL_CREATURE, 1, 0)
MAGIC_AVAILABLE(ALL_PLAYERS, POWER_PROTECT, 1, 0)
MAGIC_AVAILABLE(ALL_PLAYERS, POWER_ARMAGEDDON, 1, 0)
rem MAGIC_AVAILABLE(ALL_PLAYERS, POWER_DESTROY_WALLS, 1, 0)
MAGIC_AVAILABLE(PLAYER0, POWER_SPEED, 1, 0)
MAGIC_AVAILABLE(PLAYER0, POWER_CALL_TO_ARMS, 1, 0)
MAGIC_AVAILABLE(PLAYER0, POWER_DISEASE, 1, 0)
MAGIC_AVAILABLE(PLAYER1, POWER_SIGHT, 1, 1)
MAGIC_AVAILABLE(PLAYER1, POWER_SPEED, 1, 1)
MAGIC_AVAILABLE(PLAYER1, POWER_LIGHTNING, 1, 1)
MAGIC_AVAILABLE(PLAYER1, POWER_DESTROY_WALLS, 1, 0)
MAGIC_AVAILABLE(PLAYER2, POWER_CAVE_IN, 1, 0)
MAGIC_AVAILABLE(PLAYER2, POWER_CHICKEN, 1, 0)
rem MAGIC_AVAILABLE(PLAYER2, POWER_SPEED, 1, 0)

RESEARCH(PLAYER1, MAGIC, POWER_DESTROY_WALLS, 1600000)

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

DOOR_AVAILABLE(ALL_PLAYERS, BRACED, 1, 0)
DOOR_AVAILABLE(ALL_PLAYERS, STEEL, 1, 0)
DOOR_AVAILABLE(PLAYER0, MAGIC, 1, 0)
DOOR_AVAILABLE(PLAYER1, MAGIC, 1, 0)

REM *** MAIN ***

DISPLAY_OBJECTIVE(23, PLAYER0)

IF_ACTION_POINT(3, PLAYER0)
	SET_FLAG(PLAYER_GOOD, FLAG0, 1)
ENDIF

IF_ACTION_POINT(5, PLAYER0)
	SET_FLAG(PLAYER_GOOD, FLAG1, 1)
ENDIF

IF_ACTION_POINT(8, PLAYER0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, BARBARIAN, -1, 4, 10, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, WIZARD, -1, 2, 10, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, MONK, -1, 2, 10, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, GIANT, -1, 4, 10, 0)
ENDIF

IF_ACTION_POINT(9, PLAYER0)
	DISPLAY_INFORMATION(25, PLAYER0)
	SET_FLAG(PLAYER_GOOD, FLAG2, 1)
ENDIF

IF_ACTION_POINT(9, PLAYER1)
	SET_FLAG(PLAYER_GOOD, FLAG2, 1)
ENDIF

IF_ACTION_POINT(9, PLAYER2)
	SET_FLAG(PLAYER_GOOD, FLAG2, 1)
ENDIF

IF(PLAYER1, GAME_TURN >= 30000)
	ROOM_AVAILABLE(PLAYER1, BRIDGE, 1, 1)
ENDIF

IF(PLAYER_GOOD, FLAG0 == 1)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, BARBARIAN, 1, 1, 5, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, ARCHER, 1, 2, 4, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, DWARFA, 2, 1, 5, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, FAIRY, 2, 2, 4, 0)
ENDIF

IF(PLAYER_GOOD, FLAG1 == 1)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, GIANT, 6, 3, 6, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, WIZARD, 6, 1, 8, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, GIANT, 7, 3, 6, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, WIZARD, 7, 1, 8, 0)
ENDIF

IF(PLAYER_GOOD, FLAG2 == 1)
rem	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, DEMONSPAWN, 10, 4, 10, 0)
rem	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, DEMONSPAWN, 4, 6, 10, 0)
	CREATURE_AVAILABLE(PLAYER1, BUG, 1, 1)
	CREATURE_AVAILABLE(PLAYER1, ORC, 1, 0)
	CREATURE_AVAILABLE(PLAYER1, DARK_MISTRESS, 1, 0)
	CREATURE_AVAILABLE(PLAYER1, DRAGON, 1, 0)
	CREATURE_AVAILABLE(PLAYER1, HELL_HOUND, 1, 0)
ENDIF


IF(PLAYER1, FLAG0 == 1)
	IF(PLAYER1, TOTAL_CREATURES < 8)
		SET_FLAG(PLAYER1, FLAG0, 2)
	ENDIF
	IF(PLAYER1, ORC == 0)
		IF(PLAYER1, DARK_MISTRESS == 0)
			SET_FLAG(PLAYER1, FLAG0, 2)
		ENDIF
	ENDIF
	IF_AVAILABLE(PLAYER1, POWER_DESTROY_WALLS == 1)
		SET_FLAG(PLAYER1, FLAG0, 2)
	ENDIF
ENDIF

IF(PLAYER1, TOTAL_CREATURES >= 16)
	SET_TIMER(PLAYER_GOOD, TIMER0)
ENDIF

IF(PLAYER1, TOTAL_CREATURES >= 25)
	DISPLAY_INFORMATION(24, PLAYER0)
	SET_FLAG(PLAYER1, FLAG0, 1)
ENDIF

IF(PLAYER1, TOTAL_CREATURES >= 40)
	ROOM_AVAILABLE(PLAYER1, BRIDGE, 1, 1)
ENDIF

SET_TIMER(PLAYER1, TIMER0)
IF(PLAYER1, DUNGEON_DESTROYED == 0)
	IF(PLAYER_GOOD, GAME_TURN >= 3500)
		SET_TIMER(PLAYER_GOOD, TIMER0)
	ENDIF
	IF(PLAYER1, FLAG0 <= 1)
		IF(PLAYER_GOOD, TIMER0 >= 1500)
			NEXT_COMMAND_REUSABLE
			ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, DEMONSPAWN, 4, 1, 7, 0)
			NEXT_COMMAND_REUSABLE
			SET_TIMER(PLAYER_GOOD, TIMER0)
		ENDIF
	ENDIF
	IF(PLAYER1, IMP >= 13)
		IF(PLAYER1, IMP < 15)
			IF(PLAYER1, TIMER0 >= 2000)
				NEXT_COMMAND_REUSABLE
				ADD_CREATURE_TO_LEVEL(PLAYER1, IMP, PLAYER1, 1, 1, 0)
				NEXT_COMMAND_REUSABLE
				SET_TIMER(PLAYER1, TIMER0)
			ENDIF
		ENDIF
	ENDIF
ENDIF

IF(PLAYER1, DUNGEON_DESTROYED == 1)
	DISPLAY_OBJECTIVE(27, PLAYER0)
	SET_FLAG(PLAYER1, FLAG1, 1)
ENDIF

IF(PLAYER2, DUNGEON_DESTROYED == 1)
	DISPLAY_OBJECTIVE(26, PLAYER0)
	ROOM_AVAILABLE(PLAYER0, BRIDGE, 1, 0)
	SET_FLAG(PLAYER2, FLAG1, 1)
ENDIF

IF(PLAYER1, FLAG1 == 1)
	IF(PLAYER2, FLAG1 == 1)
		WIN_GAME
	ENDIF
ENDIF
