REM ANOTHER DUNGEON LEVEL16
REM `[bvZg`Vg̋F`

REM *** SETUP_SECTION ***

SET_GENERATE_SPEED(1100)

START_MONEY(PLAYER0, 10000)

MAX_CREATURES(PLAYER0, 39)

ADD_CREATURE_TO_POOL(DRAGON, 30)
ADD_CREATURE_TO_POOL(SKELETON, 10)
ADD_CREATURE_TO_POOL(TROLL, 30)
ADD_CREATURE_TO_POOL(BILE_DEMON, 30)
ADD_CREATURE_TO_POOL(ORC, 20)
ADD_CREATURE_TO_POOL(TENTACLE, 30)
ADD_CREATURE_TO_POOL(HELL_HOUND, 30)
ADD_CREATURE_TO_POOL(SAMURAI, 12)
ADD_CREATURE_TO_POOL(FAIRY, 12)
ADD_CREATURE_TO_POOL(ARCHER, 12)

CREATURE_AVAILABLE(ALL_PLAYERS, DRAGON, 1, 1)
CREATURE_AVAILABLE(ALL_PLAYERS, BILE_DEMON, 1, 1)
CREATURE_AVAILABLE(ALL_PLAYERS, ORC, 1, 1)
CREATURE_AVAILABLE(ALL_PLAYERS, TENTACLE, 1, 1)
CREATURE_AVAILABLE(ALL_PLAYERS, TROLL, 1, 1)
CREATURE_AVAILABLE(ALL_PLAYERS, 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, BARRACKS, 1, 0)
ROOM_AVAILABLE(ALL_PLAYERS, WORKSHOP, 1, 0)
ROOM_AVAILABLE(ALL_PLAYERS, GRAVEYARD, 1, 0)
ROOM_AVAILABLE(ALL_PLAYERS, SCAVENGER, 1, 0)

MAGIC_AVAILABLE(ALL_PLAYERS, POWER_POSSESS, 1, 1)
MAGIC_AVAILABLE(ALL_PLAYERS, POWER_IMP, 1, 1)
MAGIC_AVAILABLE(ALL_PLAYERS, POWER_OBEY, 1, 0)
MAGIC_AVAILABLE(ALL_PLAYERS, POWER_HEAL_CREATURE, 1, 0)
MAGIC_AVAILABLE(ALL_PLAYERS, POWER_CONCEAL, 1, 0)
MAGIC_AVAILABLE(ALL_PLAYERS, POWER_DISEASE, 1, 0)

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

SET_CREATURE_ARMOUR(KNIGHT, 140)

REM *** HERO PARTY ***

CREATE_PARTY(SCOUT1)
ADD_TO_PARTY(SCOUT1, DWARFA, 4, 0, ATTACK_ROOMS, 0)
ADD_TO_PARTY(SCOUT1, DWARFA, 4, 0, ATTACK_ROOMS, 0)
ADD_TO_PARTY(SCOUT1, DWARFA, 4, 0, ATTACK_ROOMS, 0)

CREATE_PARTY(SCOUT2)
ADD_TO_PARTY(SCOUT2, FAIRY, 4, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(SCOUT2, GIANT, 7, 0, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(SCOUT2, FAIRY, 4, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(SCOUT2, FAIRY, 4, 0, ATTACK_ENEMIES, 0)

CREATE_PARTY(SCOUT3)
ADD_TO_PARTY(SCOUT3, SAMURAI, 4, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(SCOUT3, SAMURAI, 4, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(SCOUT3, ARCHER, 5, 0, STEAL_GOLD, 0)
ADD_TO_PARTY(SCOUT3, ARCHER, 5, 0, STEAL_GOLD, 0)
ADD_TO_PARTY(SCOUT3, ARCHER, 5, 0, STEAL_GOLD, 0)

CREATE_PARTY(SCOUT4)
ADD_TO_PARTY(SCOUT4, DWARFA, 6, 0, ATTACK_ROOMS, 0)
ADD_TO_PARTY(SCOUT4, DWARFA, 10, 0, ATTACK_ROOMS, 0)
ADD_TO_PARTY(SCOUT4, DWARFA, 6, 0, ATTACK_ROOMS, 0)
ADD_TO_PARTY(SCOUT4, DWARFA, 6, 0, ATTACK_ROOMS, 0)

CREATE_PARTY(SCOUT5)
ADD_TO_PARTY(SCOUT5, GIANT, 5, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(SCOUT5, WIZARD, 6, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(SCOUT5, GIANT, 5, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(SCOUT5, ARCHER, 7, 0, STEAL_GOLD, 0)
ADD_TO_PARTY(SCOUT5, ARCHER, 7, 0, STEAL_GOLD, 0)

CREATE_PARTY(SCOUT6)
ADD_TO_PARTY(SCOUT6, BARBARIAN, 7, 0, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(SCOUT6, BARBARIAN, 7, 0, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(SCOUT6, BARBARIAN, 7, 0, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(SCOUT6, WICTH, 8, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(SCOUT6, WICTH, 8, 0, ATTACK_ENEMIES, 0)

CREATE_PARTY(ATTACK2)
ADD_TO_PARTY(ATTACK2, GIANT, 7, 0, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(ATTACK2, GIANT, 10, 1000, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(ATTACK2, GIANT, 7, 0, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(ATTACK2, GIANT, 7, 0, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(ATTACK2, GIANT, 7, 0, ATTACK_DUNGEON_HEART, 0)

CREATE_PARTY(ATTACK3)
ADD_TO_PARTY(ATTACK3, HELL_HOUND, 8, 0, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(ATTACK3, GIANT, 8, 1000, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(ATTACK3, HELL_HOUND, 8, 0, ATTACK_DUNGEON_HEART, 0)

CREATE_PARTY(ATTACK4)
ADD_TO_PARTY(ATTACK4, FAIRY, 8, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(ATTACK4, DWARFA, 10, 1000, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(ATTACK4, FAIRY, 8, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(ATTACK4, FAIRY, 8, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(ATTACK4, FAIRY, 8, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(ATTACK4, GIANT, 10, 0, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(ATTACK4, GIANT, 10, 0, ATTACK_DUNGEON_HEART, 0)

CREATE_PARTY(ATTACK5)
ADD_TO_PARTY(ATTACK5, TENTACLE, 10, 0, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(ATTACK5, SORCEROR, 10, 1000, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(ATTACK5, TENTACLE, 10, 0, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(ATTACK5, TENTACLE, 10, 0, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(ATTACK5, TENTACLE, 10, 0, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(ATTACK5, TENTACLE, 10, 0, ATTACK_DUNGEON_HEART, 0)

CREATE_PARTY(AT_ROOM1)
ADD_TO_PARTY(AT_ROOM1, DARK_MISTRESS, 6, 0, ATTACK_ROOMS, 0)

CREATE_PARTY(GUARD1)
ADD_TO_PARTY(GUARD1, ORC, 10, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(GUARD1, WIZARD, 10, 2000, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(GUARD1, ORC, 10, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(GUARD1, ORC, 10, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(GUARD1, ORC, 10, 0, ATTACK_ENEMIES, 0)

CREATE_PARTY(GUARD2)
ADD_TO_PARTY(GUARD2, BILE_DEMON, 10, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(GUARD2, WITCH, 10, 2000, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(GUARD2, BILE_DEMON, 10, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(GUARD2, BILE_DEMON, 10, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(GUARD2, BILE_DEMON, 10, 0, ATTACK_ENEMIES, 0)

CREATE_PARTY(BOSS1)
ADD_TO_PARTY(BOSS1, DARK_MISTRESS, 9, 1200, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(BOSS1, KNIGHT, 10, 5000, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(BOSS1, DARK_MISTRESS, 9, 1200, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(BOSS1, DARK_MISTRESS, 9, 1200, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(BOSS1, DARK_MISTRESS, 9, 1200, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(BOSS1, DARK_MISTRESS, 9, 1200, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(BOSS1, DARK_MISTRESS, 9, 1200, ATTACK_ENEMIES, 0)

CREATE_PARTY(BOSS2)
ADD_TO_PARTY(BOSS2, MONK, 10, 1600, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(BOSS2, AVATAR, 10, 8000, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(BOSS2, MONK, 10, 1600, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(BOSS2, MONK, 10, 1600, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(BOSS2, MONK, 10, 1600, ATTACK_DUNGEON_HEART, 0)

REM *** MAIN ***

IF_ACTION_POINT(2, PLAYER0)
	DISPLAY_OBJECTIVE(132, PLAYER0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD, BOSS1, -1, 1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD, GUARD2, -1, 2)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD, GUARD1, 1, 1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD, A_ROOM1, 1, 6)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, BARBARIAN, 1, 6, 10, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, DARK_MISTRESS, -4, 3, 7, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, DARK_MISTRESS, -5, 3, 7, 0)
	SET_FLAG(PLAYER_GOOD, FLAG4, 1)
	IF(PLAYER_GOOD, KNIGHT <= 1)
		SET_FLAG(PLAYER_GOOD, FLAG3, 1)
		SET_CREATURE_STRENGTH(KNIGHT, 240)
		SET_CREATURE_ARMOUR(KNIGHT, 220)
		SET_FLAG(PLAYER_GOOD, FLAG1, 1)
		IF(PLAYER_GOOD, KNIGHT == 0)
			IF(PLAYER_GOOD, DUNGEON_DESTROYED == 1)
				DISPLAY_OBJECTIVE(134, PLAYER0)
				SET_CREATURE_ARMOUR(MONK, 255)
				ADD_PARTY_TO_LEVEL(PLAYER_GOOD, BOSS2, 4, 1)
				ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, SAMURAI, 4, 5, 10, 800)
				ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, ARCHER, 4, 5, 10, 800)
				ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, GIANT, 8, 5, 10, 800)
				ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, WITCH, 8, 5, 10, 800)
				ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, BARBARIAN, 9, 5, 10, 800)
				ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, WIZARD, 9, 5, 10, 800)
				SET_TIMER(PLAYER_GOOD, TIMER6)
				IF(PLAYER_GOOD, TIMER6 > 1000)
					DISPLAY_INFORMATION(135, PLAYER0)
				ENDIF
				IF(PLAYER_GOOD, AVATAR == 0)
					DISPLAY_OBJECTIVE(136, PLAYER0)
					SET_CREATURE_ARMOUR(MONK, 20)
					WIN_GAME
				ENDIF
			ENDIF
		ENDIF
	ENDIF
ENDIF

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

IF_ACTION_POINT(5, PLAYER0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD, ATTACK5, -2, 1)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, GIANT, -2, 6, 10, 400)
ENDIF

IF_ACTION_POINT(8, PLAYER0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, ARCHER, 8, 5, 7, 0)
ENDIF

IF_ACTION_POINT(9, PLAYER0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, DWARFA, 9, 5, 7, 0)
ENDIF

IF_ACTION_POINT(11, PLAYER0)
	SET_TIMER(PLAYER0, TIMER0)
	SET_TIMER(PLAYER_GOOD, TIMER5)
	IF(PLAYER0, TIMER0 < 11000)
		IF(PLAYER_GOOD, TIMER5 > 2000)
			NEXT_COMMAND_REUSABLE
			ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, ARCHER, 12, 6, 7, 0)
			NEXT_COMMAND_REUSABLE
			SET_TIMER(PLAYER_GOOD, TIMER5)
		ENDIF
	ENDIF
ENDIF

IF_ACTION_POINT(14, PLAYER0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, DRAGON, 14, 3, 8, 3000)
ENDIF

IF_ACTION_POINT(17, PLAYER0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, BARBARIAN, -4, 8, 8, 0)
ENDIF

IF_ACTION_POINT(18, PLAYER0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, GIANT, -5, 8, 8, 0)
ENDIF

IF(PLAYER_GOOD, GAME_TURN > 10000)
	DISPLAY_INFORMATION(129, PLAYER0)
	ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD, SCOUT1, 15, DUNGEON_HEART, PLAYER0, 2, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, ARCHER, 15, 4, 3, 0)
ENDIF

IF(PLAYER_GOOD, GAME_TURN > 13800)
	ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD, SCOUT2, 16, DUNGEON_HEART, PLAYER0, 3, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, DWARFA, 16, 4, 3, 0)
ENDIF

IF(PLAYER_GOOD, GAME_TURN > 19500)
	ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD, SCOUT3, 8, DUNGEON_HEART, PLAYER0, 4, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, BARBARIAN, 8, 2, 5, 0)
ENDIF

IF(PLAYER_GOOD, GAME_TURN > 26700)
	ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD, SCOUT4, 9, DUNGEON_HEART, PLAYER0, 5, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, ARCHER, 9, 3, 6, 0)
ENDIF

IF(PLAYER_GOOD, GAME_TURN > 34000)
	ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD, SCOUT5, 8, ACTION_POINT, 13, 6, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, GIANT, 8, 3, 4, 0)
ENDIF

IF(PLAYER_GOOD, GAME_TURN > 41100)
	ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD, SCOUT6, 9, ACTION_POINT, 16, 7, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, FAIRY, 9, 2, 5, 0)
ENDIF

IF(PLAYER_GOOD, GAME_TURN > 49000)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, GIANT, 15, 3, 5, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, BARBARIAN, 16, 3, 5, 0)
ENDIF

IF(PLAYER_GOOD, GAME_TURN > 56200)
	ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD, SCOUT4, 7, DUNGEON_HEART, PLAYER0, 8, 0)
ENDIF

IF(PLAYER_GOOD, FLAG0 == 1)
	IF(PLAYER_GOOD, FLAG4 == 0)
		SET_TIMER(PLAYER_GOOD, TIMER0)
		IF(PLAYER_GOOD, TIMER0 > 5000)
			DISPLAY_OBJECTIVE(130, PLAYER0)
			ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, DEMONSPAWN, -4, 5, 4, 200)
		ENDIF
		IF(PLAYER_GOOD, TIMER0 > 13500)
			ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, SORCEROR, -5, 3, 6, 200)
		ENDIF
		IF(PLAYER_GOOD, TIMER0 > 21700)
			ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, SPIDER, -4, 2, 8, 200)
		ENDIF
		IF(PLAYER_GOOD, TIMER0 > 30600)
			ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, TENTACLE, -4, 5, 5, 200)
		ENDIF
		IF(PLAYER_GOOD, TIMER0 > 38200)
			ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, BILE_DEMON, -5, 2, 7, 200)
		ENDIF
		IF(PLAYER_GOOD, TIMER0 > 48000)
			ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, DARK_MISTRESS, -4, 2, 6, 200)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER_GOOD, FLAG3 == 1)
	DISPLAY_INFORMATION(133, PLAYER0)
ENDIF

IF(PLAYER_GOOD, FLAG5 == 1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD, ATTACK2, -2, 1)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, DWARFA, -2, 4, 7, 0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD, ATTACK3, -4, 2)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, ORC, -5, 6, 6, 0)
ENDIF

IF(PLAYER_GOOD, DUNGEON_DESTROYED == 0)
	IF(PLAYER_GOOD, FLAG1 == 1)
		ADD_CREATURE_TO_LEVEL(PLAYER1, BUG, 3, 1, 1, 0)
		SET_TIMER(PLAYER_GOOD, TIMER3)
		IF(PLAYER_GOOD, TIMER3 > 1500)
			SET_FLAG(PLAYER_GOOD, FLAG5, 1)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER_GOOD, DUNGEON_DESTROYED == 1)
	SET_FLAG(PLAYER_GOOD, FLAG5, 1)
	IF(PLAYER_GOOD, KNIGHT == 2)
		SET_FLAG(PLAYER_GOOD, FLAG3, 1)
	ENDIF
ENDIF

IF(PLAYER0, ENTRANCE >= 10)
	SET_GENERATE_SPEED(800)
ENDIF

IF(PLAYER0, ENTRANCE >= 19)
	SET_GENERATE_SPEED(500)
ENDIF

IF(PLAYER0, SAMURAI >= 1)
	DISPLAY_INFORMATION(163, PLAYER0)
ENDIF

DISPLAY_OBJECTIVE(128, PLAYER0)
