REM ANOTHER DUNGEON SECRET LEVEL4
REM `̂肩`

REM *** SETUP SECTION ***

BONUS_LEVEL_TIME(27800)

SET_GENERATE_SPEED(250)

START_MONEY(PLAYER0, 2000)
START_MONEY(PLAYER1, 20000)
START_MONEY(PLAYER2, 20000)
START_MONEY(PLAYER3, 20000)

MAX_CREATURES(ALL_PLAYERS, 15)

COMPUTER_PLAYER(PLAYER1, 0)
rem SET_COMPUTER_PROCESS(PLAYER1, "DIG TO CLOSE GOLD", 0, 10000, 500, 5, 300)
COMPUTER_PLAYER(PLAYER2, 2)
rem SET_COMPUTER_PROCESS(PLAYER2, "DIG TO CLOSE GOLD", 0, 10000, 500, 5, 300)
COMPUTER_PLAYER(PLAYER3, 10)
SET_COMPUTER_PROCESS(PLAYER3, "DIG TO CLOSE GOLD", 0, 30000, 500, 5, 300)

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

ADD_CREATURE_TO_POOL(BUG, 15)
ADD_CREATURE_TO_POOL(FLY, 5)
ADD_CREATURE_TO_POOL(SPIDER, 15)
ADD_CREATURE_TO_POOL(DEMONSPAWN, 15)
ADD_CREATURE_TO_POOL(DRAGON, 2)
ADD_CREATURE_TO_POOL(SORCEROR, 2)
ADD_CREATURE_TO_POOL(SKELETON, 15)
ADD_CREATURE_TO_POOL(GHOST, 15)
ADD_CREATURE_TO_POOL(TENTACLE, 15)
ADD_CREATURE_TO_POOL(HELL_HOUND, 15)

rem CREATURE_AVAILABLE(ALL_PLAYERS, TROLL, 1, 1)
CREATURE_AVAILABLE(PLAYER0, BUG, 1, 1)
CREATURE_AVAILABLE(PLAYER1, SKELETON, 1, 1)
CREATURE_AVAILABLE(PLAYER1, GHOST, 1, 1)
CREATURE_AVAILABLE(PLAYER1, SORCEROR, 1, 1)
CREATURE_AVAILABLE(PLAYER2, TENTACLE, 1, 1)
CREATURE_AVAILABLE(PLAYER2, DEMONSPAWN, 1, 1)
CREATURE_AVAILABLE(PLAYER2, DRAGON, 1, 1)
CREATURE_AVAILABLE(PLAYER3, FLY, 1, 1)
CREATURE_AVAILABLE(PLAYER3, SPIDER, 1, 1)
CREATURE_AVAILABLE(PLAYER3, HELL_HOUND, 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, GUARD_POST, 1, 0)
ROOM_AVAILABLE(ALL_PLAYERS, WORKSHOP, 1, 0)
rem ROOM_AVAILABLE(ALL_PLAYERS, BARRACKS, 1, 0)
rem ROOM_AVAILABLE(ALL_PLAYERS, BRIDGE, 1, 0)
ROOM_AVAILABLE(ALL_PLAYERS, PRISON, 1, 0)
ROOM_AVAILABLE(ALL_PLAYERS, TORTURE, 1, 0)
ROOM_AVAILABLE(ALL_PLAYERS, TEMPLE, 1, 0)
rem ROOM_AVAILABLE(ALL_PLAYERS, GRAVEYARD, 1, 0)
ROOM_AVAILABLE(ALL_PLAYERS, SCAVENGER, 1, 0)
ROOM_AVAILABLE(PLAYER1, PRISON, 1, 1)
ROOM_AVAILABLE(PLAYER1, TORTURE, 1, 1)
ROOM_AVAILABLE(PLAYER2, TEMPLE, 1, 1)
ROOM_AVAILABLE(PLAYER3, SCAVENGER, 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)
rem MAGIC_AVAILABLE(ALL_PLAYERS, POWER_OBEY, 1, 0)
MAGIC_AVAILABLE(ALL_PLAYERS, POWER_DESTROY_WALLS, 1, 0)
MAGIC_AVAILABLE(PLAYER0, POWER_HOLD_AUDIENCE, 1, 0)
MAGIC_AVAILABLE(PLAYER0, POWER_CONCEAL, 1, 0)
MAGIC_AVAILABLE(PLAYER0, POWER_HEAL_CREATURE, 1, 0)
MAGIC_AVAILABLE(PLAYER0, POWER_PROTECT, 1, 0)
MAGIC_AVAILABLE(PLAYER0, POWER_CAVE_IN, 1, 0)
MAGIC_AVAILABLE(PLAYER1, POWER_LIGHTNING, 1, 1)
MAGIC_AVAILABLE(PLAYER2, POWER_DISEASE, 1, 1)
MAGIC_AVAILABLE(PLAYER3, POWER_CHICKEN, 1, 1)

rem 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, LAVA, 1, 0)
TRAP_AVAILABLE(ALL_PLAYERS, BOULDER, 1, 0)
rem TRAP_AVAILABLE(ALL_PLAYERS, WORD_OF_POWER, 1, 0)

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

REM *** HERO PARTY ***

CREATE_PARTY(SCOUT1)
ADD_TO_PARTY(SCOUT1, THIEF, 2, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(SCOUT1, MONK, 2, 400, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(SCOUT1, THIEF, 2, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(SCOUT1, THIEF, 2, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(SCOUT1, THIEF, 2, 0, ATTACK_ENEMIES, 0)

CREATE_PARTY(SCOUT2)
ADD_TO_PARTY(SCOUT2, BARBARIAN, 2, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(SCOUT2, BARBARIAN, 5, 400, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(SCOUT2, BARBARIAN, 2, 0, ATTACK_ENEMIES, 0)

CREATE_PARTY(SCOUT3)
ADD_TO_PARTY(SCOUT3, ARCHER, 3, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(SCOUT3, ARCHER, 5, 400, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(SCOUT3, ARCHER, 3, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(SCOUT3, GIANT, 5, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(SCOUT3, GIANT, 5, 0, ATTACK_ENEMIES, 0)

CREATE_PARTY(GUARD)
ADD_TO_PARTY(GUARD, BARBARIAN, 4, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(GUARD, WIZARD, 6, 800, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(GUARD, BARBARIAN, 4, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(GUARD, ARCHER, 5, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(GUARD, ARCHER, 5, 0, ATTACK_ENEMIES, 0)

CREATE_PARTY(A_ROOM1)
ADD_TO_PARTY(A_ROOM1, DWARFA, 6, 0, ATTACK_ROOMS, 0)

CREATE_PARTY(A_ROOM2)
ADD_TO_PARTY(A_ROOM2, GIANT, 10, 0, ATTACK_ROOMS, 0)

CREATE_PARTY(S_GOLD)
ADD_TO_PARTY(S_GOLD, THIEF, 8, 0, STEAL_GOLD, 0)

CREATE_PARTY(BOSS)
ADD_TO_PARTY(BOSS, ARCHER, 7, 800, DEFEND_PARTY, 0)
ADD_TO_PARTY(BOSS, KNIGHT, 10, 1600, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(BOSS, ARCHER, 7, 800, DEFEND_PARTY, 0)
ADD_TO_PARTY(BOSS, ARCHER, 7, 800, DEFEND_PARTY, 0)
ADD_TO_PARTY(BOSS, ARCHER, 7, 800, DEFEND_PARTY, 0)
ADD_TO_PARTY(BOSS, ARCHER, 7, 800, DEFEND_PARTY, 0)
ADD_TO_PARTY(BOSS, ARCHER, 7, 800, DEFEND_PARTY, 0)

REM *** MAIN ***

DISPLAY_OBJECTIVE(166, PLAYER0)

SET_TIMER(PLAYER1, TIMER0)
IF(PLAYER1, DUNGEON_DESTROYED == 0)
	IF(PLAYER1, IMP < 3)
		IF(PLAYER1, TIMER0 > 600)
			NEXT_COMMAND_REUSABLE
			ADD_CREATURE_TO_LEVEL(PLAYER1, IMP, PLAYER1, 1, 1, 0)
			NEXT_COMMAND_REUSABLE
			SET_TIMER(PLAYER1, TIMER0)
		ENDIF
	ENDIF
ENDIF

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

IF(PLAYER_GOOD, GAME_TURN >= 2000)
	ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD, SCOUT1, 6, DUNGEON_HEART, PLAYER3, 5, 0)
ENDIF

IF(PLAYER_GOOD, GAME_TURN >= 3200)
	DISPLAY_INFORMATION(167, PLAYER0)
	ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD, SCOUT2, 8, DUNGEON_HEART, PLAYER2, 3, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, ARCHER, 6, 5, 6, 0)
ENDIF

IF(PLAYER_GOOD, GAME_TURN >= 3600)
	ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD, SCOUT2, 4, DUNGEON_HEART, PLAYER1, 3, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, GIANT, 4, 4, 5, 0)
ENDIF

IF(PLAYER_GOOD, GAME_TURN >= 6400)
	ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD, SCOUT3, 2, DUNGEON_HEART, PLAYER0, 4, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, GIANT, 6, 1, 9, 0)
ENDIF

IF(PLAYER_GOOD, GAME_TURN >= 9100)
	rem ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD, SCOUT4, 1, DUNGEON_HEART, PLAYER0, 3, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, BARBARIAN, 4, 2, 8, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, ARCHER, 8, 2, 8, 0)
ENDIF

IF(PLAYER_GOOD, GAME_TURN >= 10000)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD, A_ROOM1, 2, 4)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD, S_GOLD, 6, 4)
ENDIF

IF(PLAYER_GOOD, GAME_TURN >= 10800)
	ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD, SCOUT3, 8, DUNGEON, PLAYER3, 6, 0)
	ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD, SCOUT3, 4, DUNGEON, PLAYER3, 3, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, ARCHER, 2, 4, 5, 0)
ENDIF

IF(PLAYER_GOOD, GAME_TURN >= 13000)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, BARBARIAN, 2, 1, 10, 0)
ENDIF

IF(PLAYER_GOOD, GAME_TURN >= 16000)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, DWARFA, 2, 2, 6, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, DWARFA, 4, 3, 5, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, DWARFA, 6, 2, 4, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, DWARFA, 8, 3, 5, 0)
ENDIF

IF(PLAYER_GOOD, GAME_TURN >= 20000)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, SAMURAI, 4, 2, 7, 0)
ENDIF

IF(PLAYER_GOOD, GAME_TURN >= 21000)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, GIANT, 8, 2, 10, 0)
ENDIF

IF(PLAYER_GOOD, GAME_TURN >= 22600)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, WITCH, 6, 8, 4, 0)
ENDIF

IF(PLAYER_GOOD, GAME_TURN >= 24000)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD, BOSS, 6, 1)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, ARCHER, 2, 2, 7, 0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD, A_ROOM2, 2, 4)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, BARBARIAN, 4, 2, 6, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, FAIRY, 4, 2, 4, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, THIEF, 8, 2, 8, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, WIZARD, 8, 2, 4, 0)
ENDIF

IF_ACTION_POINT(1, PLAYER0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD, GUARD, -1, 1)
ENDIF

IF_ACTION_POINT(3, PLAYER0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD, GUARD, -2, 1)
ENDIF

IF_ACTION_POINT(5, PLAYER0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD, GUARD, -3, 1)
ENDIF

IF_ACTION_POINT(7, PLAYER0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD, GUARD, -4, 1)
ENDIF

IF(PLAYER_GOOD, GAME_TURN >= 27800)
	IF(PLAYER1, DUNGEON_DESTROYED == 0)
		IF(PLAYER2, DUNGEON_DESTROYED == 0)
			IF(PLAYER3, DUNGEON_DESTROYED == 0)
				DISPLAY_OBJECTIVE(169, PLAYER0)
				WIN_GAME
			ENDIF
		ENDIF
	ENDIF
	IF(PLAYER_GOOD, KNIGHT >= 1)
		SET_FLAG(PLAYER0, FLAG0, 1)
	ENDIF
	IF(PLAYER1, DUNGEON_DESTROYED == 1)
		SET_FLAG(PLAYER0, FLAG0, 1)
	ENDIF
	IF(PLAYER2, DUNGEON_DESTROYED == 1)
		SET_FLAG(PLAYER0, FLAG0, 1)
	ENDIF
	IF(PLAYER3, DUNGEON_DESTROYED == 1)
		SET_FLAG(PLAYER0, FLAG0, 1)
	ENDIF
ENDIF

IF(PLAYER0, FLAG0 == 1)
	DISPLAY_OBJECTIVE(168, PLAYER0)
	LOSE_GAME
ENDIF
