REM ANOTHER DUNGEON LEVEL6
REM XiOf`iv̊肢`

REM *** SETUP_SECTION ***

SET_GENERATE_SPEED(500)

MAX_CREATURES(PLAYER0, 12)

START_MONEY(PLAYER0, 5000)

ADD_CREATURE_TO_POOL(ORC, 8)
ADD_CREATURE_TO_POOL(DARK_MISTRESS, 8)
ADD_CREATURE_TO_POOL(BILE_DEMON, 10)
ADD_CREATURE_TO_POOL(DEMONSPAWN, 12)
ADD_CREATURE_TO_POOL(DRAGON, 8)
ADD_CREATURE_TO_POOL(TROLL, 12)
ADD_CREATURE_TO_POOL(SPIDER, 12)
ADD_CREATURE_TO_POOL(SORCEROR, 12)

CREATURE_AVAILABLE(PLAYER0, ORC, 1, 1)
CREATURE_AVAILABLE(PLAYER0, DRAGON, 1, 1)
CREATURE_AVAILABLE(PLAYER0, SPIDER, 1, 1)
CREATURE_AVAILABLE(PLAYER0, DARK_MISTRESS, 1, 1)
CREATURE_AVAILABLE(PLAYER0, DEMONSPAWN, 1, 1)
CREATURE_AVAILABLE(PLAYER0, TROLL, 1, 1)
CREATURE_AVAILABLE(PLAYER0, SORCEROR, 1, 1)

MAGIC_AVAILABLE(PLAYER0, POWER_IMP, 1, 1)
MAGIC_AVAILABLE(PLAYER0, POWER_SPEED, 1, 0)
MAGIC_AVAILABLE(PLAYER0, POWER_CHICKEN, 1, 0)
MAGIC_AVAILABLE(PLAYER0, POWER_OBEY, 1, 1)
MAGIC_AVAILABLE(PLAYER0, POWER_HOLD_AUDIENCE, 1, 0)
MAGIC_AVAILABLE(PLAYER0, POWER_CONCEAL, 1, 0)

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, GUARD_POST, 1, 1)
ROOM_AVAILABLE(PLAYER0, BARRACKS, 1, 0)

TRAP_AVAILABLE(PLAYER0, ALARM, 1, 0)
TRAP_AVAILABLE(PLAYER0, POISON_GAS, 1, 0)

DOOR_AVAILABLE(PLAYER0, BRACED, 1, 0)

SET_CREATURE_STRENGTH(SKELETON, 100)
SET_CREATURE_ARMOUR(GHOST, 100)
SET_CREATURE_FEAR(SKELETON, 0)

REM *** HERO_PARTY ***

CREATE_PARTY(AT_ROOM1)
ADD_TO_PARTY(AT_ROOM1, HELL_HOUND, 3, 0, ATTACK_ROOMS, 0)

CREATE_PARTY(AT_ROOM2)
ADD_TO_PARTY(AT_ROOM2, SKELETON, 9, 0, ATTACK_ROOMS, 0)

CREATE_PARTY(ST_GOLD1)
ADD_TO_PARTY(ST_GOLD1, GHOST, 3, 0, STEAL_GOLD, 0)

CREATE_PARTY(ST_GOLD2)
ADD_TO_PARTY(ST_GOLD2, GHOST, 6, 0, STEAL_GOLD, 0)

CREATE_PARTY(ST_GOLD3)
ADD_TO_PARTY(ST_GOLD3, HELL_HOUND, 7, 0, STEAL_GOLD, 0)

CREATE_PARTY(BOSS)
ADD_TO_PARTY(BOSS, HORNY, 6, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(BOSS, HORNY, 10, 3000, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(BOSS, HORNY, 6, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(BOSS, HORNY, 6, 0, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(BOSS, HORNY, 6, 0, ATTACK_ENEMIES, 0)

REM *** MAIN ***

ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, SKELETON, 8, 1, 10, 3000)
ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, SKELETON, 20, 1, 10, 3000)

IF_ACTION_POINT(1, PLAYER0)
	SET_FLAG(PLAYER0, FLAG0, 1)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, SKELETON, 16, 20, 10, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, VAMPIRE, 6, 2, 10, 0)
ENDIF

IF_ACTION_POINT(4, PLAYER0)
	SET_FLAG(PLAYER0, FLAG0, 1)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, SKELETON, 3, 20, 10, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, VAMPIRE, 3, 2, 10, 0)
ENDIF

IF_ACTION_POINT(7, PLAYER0)
	DISPLAY_INFORMATION(37, PLAYER0)
ENDIF

IF_ACTION_POINT(9, PLAYER0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, GHOST, 10, 1, 6, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, SKELETON, 10, 2, 4, 0)
ENDIF

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

IF_ACTION_POINT(15, PLAYER0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, SKELETON, 3, 1, 8, 0)
ENDIF

IF_ACTION_POINT(16, PLAYER0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, GHOST, 3, 1, 9, 0)
ENDIF

IF_ACTION_POINT(17, PLAYER0)
	SET_FLAG(PLAYER_GOOD, FLAG0, 1)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, SKELETON, 14, 2, 5, 0)
ENDIF

IF_ACTION_POINT(18, PLAYER0)
	DISPLAY_INFORMATION(39, PLAYER0)
	SET_FLAG(PLAYER_GOOD, FLAG3, 2)
	SET_TIMER(PLAYER_GOOD, TIMER0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD, AT_ROOM2, 10, 4)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD, ST_GOLD2, 12, 4)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, GHOST, 13, 4, 8, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, HELL_HOUND, 14, 4, 10, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, SKELETON, 19, 2, 10, 3000)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, SKELETON, 22, 5, 10, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, SKELETON, 24, 2, 6, 0)
ENDIF

IF_ACTION_POINT(21, PLAYER0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, SKELETON, -1, 4, 4, 0)
ENDIF

IF_ACTION_POINT(26, PLAYER0)
	SET_FLAG(PLAYER0, FLAG1, 1)
	SET_TIMER(PLAYER_GOOD, TIMER1)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, GHOST, 27, 3, 10, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, GHOST, 28, 3, 10, 0)
ENDIF

IF(PLAYER_GOOD, TIMER1 >= 1000)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, SKELETON, 27, 3, 10, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, SKELETON, 28, 3, 10, 0)
ENDIF

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

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

IF(PLAYER_GOOD, FLAG1 == 1)
	DISPLAY_OBJECTIVE(40, PLAYER_GOOD)
	SET_TIMER(PLAYER_GOOD, TIMER0)
	SET_TIMER(PLAYER_GOOD, TIMER2)
ENDIF

IF(PLAYER_GOOD, TIMER2 >= 200)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD, BOSS, 30, 1)
	SET_FLAG(PLAYER_GOOD, FLAG2, 1)
ENDIF

IF(PLAYER0, FLAG0 == 1)
	DISPLAY_OBJECTIVE(38, PLAYER0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, SKELETON, 23, 4, 10, 0)
	SET_TIMER(PLAYER_GOOD, TIMER0)
	IF(PLAYER_GOOD, FLAG3 == 0)
		SET_FLAG(PLAYER_GOOD, FLAG3, 1)
	ENDIF
ENDIF

IF(PLAYER0, FLAG2 == 0)
	IF(PLAYER_GOOD, TIMER0 >= 3500)
		IF(PLAYER_GOOD, FLAG3 == 1)
			NEXT_COMMAND_REUSABLE
			SET_FLAG(PLAYER0, FLAG3, 1)
		ENDIF
		IF(PLAYER_GOOD, FLAG3 == 2)
			NEXT_COMMAND_REUSABLE
			SET_FLAG(PLAYER0, FLAG3, 2)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER0, FLAG2 == 1)
	IF(PLAYER_GOOD, TIMER0 >= 7000)
		IF(PLAYER_GOOD, FLAG3 == 1)
			NEXT_COMMAND_REUSABLE
			SET_FLAG(PLAYER0, FLAG3, 1)
		ENDIF
		IF(PLAYER_GOOD, FLAG3 == 2)
			NEXT_COMMAND_REUSABLE
			SET_FLAG(PLAYER0, FLAG3, 2)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER0, FLAG3 == 1)
	NEXT_COMMAND_REUSABLE
	SET_FLAG(PLAYER0, FLAG3, 0)
	NEXT_COMMAND_REUSABLE
	SET_TIMER(PLAYER_GOOD, TIMER0)
	NEXT_COMMAND_REUSABLE
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, GHOST, 10, 2, 2, 0)
	NEXT_COMMAND_REUSABLE
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, GHOST, 12, 1, 5, 0)
	IF(PLAYER_GOOD, TOTAL_CREATURES < 100)
		NEXT_COMMAND_REUSABLE
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, GHOST, 13, 1, 4, 0)
		IF(PLAYER_GOOD, FLAG0 == 1)
			NEXT_COMMAND_REUSABLE
			ADD_PARTY_TO_LEVEL(PLAYER_GOOD, ST_GOLD1, 14, 1)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER0, FLAG3 == 2)
	NEXT_COMMAND_REUSABLE
	SET_FLAG(PLAYER0, FLAG3, 0)
	NEXT_COMMAND_REUSABLE
	SET_TIMER(PLAYER_GOOD, TIMER0)
	NEXT_COMMAND_REUSABLE
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, SKELETON, 10, 1, 7, 0)
	NEXT_COMMAND_REUSABLE
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD, AT_ROOM1, 12, 1)
	NEXT_COMMAND_REUSABLE
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, GHOST, 12, 1, 4, 0)
	NEXT_COMMAND_REUSABLE
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD, ST_GOLD1, 25, 1)
	NEXT_COMMAND_REUSABLE
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, SKELETON, 19, 1, 10, 5000)
	IF(PLAYER_GOOD, TOTAL_CREATURES < 100)
		NEXT_COMMAND_REUSABLE
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, GHOST, 13, 1, 7, 0)
	ENDIF
ENDIF

IF(PLAYER_GOOD, BATTLES_LOST >= 100)
	SET_TIMER(PLAYER_GOOD, TIMER0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD, AT_ROOM2, 10, 2)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD, ST_GOLD2, 12, 2)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, GHOST, 13, 3, 8, 1000)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, HELL_HOUND, 14, 3, 6, 1000)
ENDIF

IF(PLAYER_GOOD, BATTLES_LOST >= 180)
	DISPLAY_INFORMATION(42, PLAYER0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD, ST_GOLD2, 10, 3)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, VAMPIRE, 12, 3, 5, 1000)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD, AT_ROOM1, 13, 5)
ENDIF

IF(PLAYER0, FLAG1 == 0)
	IF(PLAYER_GOOD, BATTLES_LOST >= 260)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, GHOST, 10, 3, 7, 400)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, SKELETON, 12, 3, 6, 400)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, VAMPIRE, 19, 7, 4, 1000)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD, ST_GOLD3, 13, 3)
	ENDIF
ENDIF

IF(PLAYER_GOOD, TREASURE == 0)
	DISPLAY_INFORMATION(120, PLAYER0)
	SET_FLAG(PLAYER0, FLAG2, 1)
ENDIF

IF(PLAYER0, ENTRANCE >= 10)
	CREATURE_AVAILABLE(PLAYER0, BILE_DEMON, 1, 1)
ENDIF

IF(PLAYER0, RESEARCH >= 1)
	ROOM_AVAILABLE(PLAYER0, RESEARCH, 1, 1)
ENDIF

IF(PLAYER0, TEMPLE >= 1)
	ROOM_AVAILABLE(PLAYER0, TEMPLE, 1, 1)
ENDIF

IF(PLAYER0, WORKSHOP >= 1)
	ROOM_AVAILABLE(PLAYER0, WORKSHOP, 1, 1)
ENDIF

IF(PLAYER0, TORTURE >= 1)
	ROOM_AVAILABLE(PLAYER0, TORTURE, 1, 1)
ENDIF

IF(PLAYER0, GRAVEYARD >= 1)
	ROOM_AVAILABLE(PLAYER0, GRAVEYARD, 1, 1)
ENDIF

IF(PLAYER_GOOD, DUNGEON_DESTROYED == 1)
	IF(PLAYER_GOOD, FLAG2 == 1)
		IF(PLAYER_GOOD, HORNY == 0)
			DISPLAY_OBJECTIVE(43, PLAYER0)
			WIN_GAME
		ENDIF
	ENDIF
ENDIF

DISPLAY_OBJECTIVE(36, PLAYER0)
