REM ANOTHER DUNGEON LEVEL15
REM EbhBC`n̔eҁ`

REM *** SETUP SECTION ***

SET_GENERATE_SPEED(700)

START_MONEY(PLAYER0, 12500)

MAX_CREATURES(PLAYER0, 19)

ADD_CREATURE_TO_POOL(BARBARIAN, 16)
ADD_CREATURE_TO_POOL(DWARFA, 16)
ADD_CREATURE_TO_POOL(ARCHER, 16)
ADD_CREATURE_TO_POOL(THIEF, 16)
ADD_CREATURE_TO_POOL(WITCH, 16)
ADD_CREATURE_TO_POOL(SAMURAI, 16)
ADD_CREATURE_TO_POOL(GIANT, 16)
ADD_CREATURE_TO_POOL(MONK, 16)

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, BARRACKS, 1, 0)
ROOM_AVAILABLE(ALL_PLAYERS, TORTURE, 1, 0)
ROOM_AVAILABLE(ALL_PLAYERS, TEMPLE, 1, 0)

MAGIC_AVAILABLE(ALL_PLAYERS, POWER_POSSESS, 1, 1)
MAGIC_AVAILABLE(ALL_PLAYERS, POWER_IMP, 1, 1)
MAGIC_AVAILABLE(ALL_PLAYERS, POWER_CALL_TO_ARMS, 1, 0)
MAGIC_AVAILABLE(ALL_PLAYERS, POWER_HOLD_AUDIENCE, 1, 0)
MAGIC_AVAILABLE(ALL_PLAYERS, POWER_HEAL_CREATURE, 1, 0)
MAGIC_AVAILABLE(ALL_PLAYERS, POWER_PROTECT, 1, 0)
MAGIC_AVAILABLE(ALL_PLAYERS, POWER_DISEASE, 1, 0)

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

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

SET_CREATURE_HEALTH(TUNNELLER, 1000)
SET_CREATURE_STRENGTH(TUNNELLER, 100)
SET_CREATURE_ARMOUR(TUNNELLER, 100)

REM *** HERO PARTY ***

CREATE_PARTY(ATTACK)
ADD_TO_PARTY(ATTACK, TUNNELLER, 5, 500, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(ATTACK, GIANT, 10, 1000, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(ATTACK, TUNNELLER, 5, 500, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(ATTACK, TUNNELLER, 5, 500, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(ATTACK, TUNNELLER, 5, 500, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(ATTACK, TUNNELLER, 5, 500, ATTACK_ENEMIES, 0)

CREATE_PARTY(DWARF_P)
ADD_TO_PARTY(DWARF_P, TUNNELLER, 7, 500, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(DWARF_P, TUNNELLER, 10, 2000, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(DWARF_P, TUNNELLER, 7, 500, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(DWARF_P, TUNNELLER, 7, 500, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(DWARF_P, TUNNELLER, 7, 500, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(DWARF_P, TUNNELLER, 7, 500, ATTACK_DUNGEON_HEART, 0)

CREATE_PARTY(AT_ROOM)
ADD_TO_PARTY(AT_ROOM, DWARFA, 10, 400, ATTACK_ROOMS, 0)

CREATE_PARTY(GUARD1)
ADD_TO_PARTY(GUARD1, MONK, 10, 500, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(GUARD1, WIZARD, 10, 2000, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(GUARD1, MONK, 10, 500, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(GUARD1, BARBARIAN, 10, 500, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(GUARD1, BARBARIAN, 10, 500, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(GUARD1, BARBARIAN, 10, 500, ATTACK_DUNGEON_HEART, 0)

CREATE_PARTY(GUARD2)
ADD_TO_PARTY(GUARD2, DWARFA, 10, 500, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(GUARD2, WITCH, 10, 1000, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(GUARD2, DWARFA, 10, 500, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(GUARD2, ARCHER, 10, 500, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(GUARD2, ARCHER, 10, 500, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(GUARD2, ARCHER, 10, 500, ATTACK_DUNGEON_HEART, 0)

CREATE_PARTY(BOSS)
ADD_TO_PARTY(BOSS, TUNNELLER, 8, 500, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(BOSS, AVATAR, 10, 8000, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(BOSS, TUNNELLER, 8, 500, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(BOSS, TUNNELLER, 8, 500, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(BOSS, TUNNELLER, 8, 500, ATTACK_DUNGEON_HEART, 0)

REM *** MAIN ***

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

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

IF_ACTION_POINT(3, PLAYER0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, DWARFA, 3, 6, 8, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, FAIRY, 4, 5, 5, 0)
ENDIF

IF_ACTION_POINT(6, PLAYER0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, THIEF, 6, 4, 8, 800)
ENDIF

IF_ACTION_POINT(11, PLAYER0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, THIEF, 10, 3, 6, 400)
ENDIF

IF_ACTION_POINT(12, PLAYER0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, BARBARIAN, 19, 4, 4, 0)
ENDIF

IF_ACTION_POINT(13, PLAYER0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, ARCHER, 5, 6, 5, 400)
ENDIF

IF_ACTION_POINT(14, PLAYER0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, GIANT, 7, 4, 4, 400)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, SAMURAI, 7, 2, 6, 400)
ENDIF

IF_ACTION_POINT(17, PLAYER0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, DWARFA, 16, 6, 4, 0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, ARCHER, 16, 3, 6, 0)
ENDIF

IF_ACTION_POINT(22, PLAYER0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, SAMURAI, 21, 4, 8, 800)
ENDIF

IF(PLAYER_GOOD, FLAG1 == 0)
	IF_ACTION_POINT(8, PLAYER0)
		SET_FLAG(PLAYER_GOOD, FLAG1, 1)	
	ENDIF
	IF_ACTION_POINT(9, PLAYER0)
		SET_FLAG(PLAYER_GOOD, FLAG1, 1)	
	ENDIF
ENDIF

IF(PLAYER_GOOD, FLAG0 == 1)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, DWARFA, 3, 6, 6, 0)
ENDIF

IF(PLAYER_GOOD, FLAG1 == 1)
	DISPLAY_INFORMATION(121, PLAYER0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, MONK, -1, 3, 10, 0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD, ATTACK, -2, 1)
	SET_TIMER(PLAYER_GOOD, TIMER0)
	IF(PLAYER_GOOD, TIMER0 > 3300)
	    NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD, ATTACK, -2, 1)
	    NEXT_COMMAND_REUSABLE
		SET_TIMER(PLAYER_GOOD, TIMER0)
	ENDIF
	SET_TIMER(PLAYER_GOOD, TIMER1)
	IF(PLAYER_GOOD, TIMER1 > 13000)
		SET_FLAG(PLAYER_GOOD, FLAG1, 2)
	ENDIF
ENDIF

IF(PLAYER_GOOD, FLAG1 == 2)
	DISPLAY_INFORMATION(119, PLAYER0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD, ATTACK, -2, 1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD, AT_ROOM, -2, 3)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD, AT_ROOM, -1, 3)
	IF(PLAYER_GOOD, TUNNELLER <= 4)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD, DWARF_P, 15, 1)
		SET_FLAG(PLAYER_GOOD, FLAG2, 1)
		IF(PLAYER_GOOD, TUNNELLER == 0)
			DISPLAY_INFORMATION(124, PLAYER0)
			SET_FLAG(PLAYER_GOOD, FLAG1, 3)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER_GOOD, TOTAL_CREATURES == 0)
	DISPLAY_OBJECTIVE(125, PLAYER0)
	SET_CREATURE_ARMOUR(AVATAR, 200)
	SET_CREATURE_ARMOUR(WIZARD, 160)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD, BOSS, -1, 1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD, GUARD1, -1, 1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD, GUARD2, -1, 2)
	SET_FLAG(PLAYER_GOOD, FLAG3, 1)
	SET_FLAG(PLAYER_GOOD, FLAG4, 1)
	SET_TIMER(PLAYER_GOOD, TIMER2)
ENDIF

IF(PLAYER_GOOD, FLAG4 == 1)
	IF(PLAYER_GOOD, AVATAR == 0)
		DISPLAY_OBJECTIVE(127, PLAYER0)
		WIN_GAME
	ENDIF
ENDIF

IF(PLAYER_GOOD, FLAG3 == 1)
	IF(PLAYER_GOOD, TIMER2 > 1000)
		NEXT_COMMAND_REUSABLE
		SET_CREATURE_STRENGTH(AVATAR, 255)
	    NEXT_COMMAND_REUSABLE
		SET_CREATURE_ARMOUR(AVATAR, 60)
	    NEXT_COMMAND_REUSABLE
		SET_TIMER(PLAYER_GOOD, TIMER2)
	    NEXT_COMMAND_REUSABLE
		SET_FLAG(PLAYER_GOOD, FLAG3, 2)
	ENDIF
ENDIF

IF(PLAYER_GOOD, FLAG3 == 2)
	IF(PLAYER_GOOD, TIMER2 > 500)
		DISPLAY_INFORMATION(126, PLAYER0)
		NEXT_COMMAND_REUSABLE
		SET_CREATURE_STRENGTH(AVATAR, 100)
	    NEXT_COMMAND_REUSABLE
		SET_CREATURE_ARMOUR(AVATAR, 200)
	    NEXT_COMMAND_REUSABLE
		SET_TIMER(PLAYER_GOOD, TIMER2)
	    NEXT_COMMAND_REUSABLE
		SET_FLAG(PLAYER_GOOD, FLAG3, 1)
	ENDIF
ENDIF

IF(PLAYER0, TREASURE >= 25)
	NEXT_COMMAND_REUSABLE
	CREATURE_AVAILABLE(PLAYER0, THIEF, 1, 1)
ENDIF

IF(PLAYER0, TRAINING >= 9)
	DISPLAY_INFORMATION(118, PLAYER0)
	NEXT_COMMAND_REUSABLE
	CREATURE_AVAILABLE(PLAYER0, BARBARIAN, 1, 1)
ENDIF

IF(PLAYER0, GARDEN >= 25)
	NEXT_COMMAND_REUSABLE
	CREATURE_AVAILABLE(PLAYER0, GIANT, 1, 1)
ENDIF

IF(PLAYER0, WORKSHOP >= 9)
	NEXT_COMMAND_REUSABLE
	CREATURE_AVAILABLE(PLAYER0, DWARFA, 1, 1)
ENDIF

IF(PLAYER0, TEMPLE >= 9)
	NEXT_COMMAND_REUSABLE
	CREATURE_AVAILABLE(PLAYER0, MONK, 1, 1)
ENDIF

IF(PLAYER0, RESEARCH >= 9)
	NEXT_COMMAND_REUSABLE
	CREATURE_AVAILABLE(PLAYER0, WITCH, 1, 1)
ENDIF

IF(PLAYER0, BARRACKS >= 1)
	NEXT_COMMAND_REUSABLE
	CREATURE_AVAILABLE(PLAYER0, ARCHER, 1, 1)
ENDIF

IF(PLAYER0, ENTRANCE >= 10)
	IF(PLAYER0, BARRACKS >= 25)
		NEXT_COMMAND_REUSABLE
		CREATURE_AVAILABLE(PLAYER0, SAMURAI, 1, 1)
	ENDIF
ENDIF

SET_TIMER(PLAYER0, TIMER0)
IF(PLAYER0, TIMER0 > 41)
	NEXT_COMMAND_REUSABLE
	CREATURE_AVAILABLE(PLAYER0, THIEF, 1, 0)
	NEXT_COMMAND_REUSABLE
	CREATURE_AVAILABLE(PLAYER0, BARBARIAN, 1, 0)
	NEXT_COMMAND_REUSABLE
	CREATURE_AVAILABLE(PLAYER0, GIANT, 1, 0)
	NEXT_COMMAND_REUSABLE
	CREATURE_AVAILABLE(PLAYER0, DWARFA, 1, 0)
	NEXT_COMMAND_REUSABLE
	CREATURE_AVAILABLE(PLAYER0, MONK, 1, 0)
	NEXT_COMMAND_REUSABLE
	CREATURE_AVAILABLE(PLAYER0, WITCH, 1, 0)
	NEXT_COMMAND_REUSABLE
	CREATURE_AVAILABLE(PLAYER0, ARCHER, 1, 0)
	NEXT_COMMAND_REUSABLE
	CREATURE_AVAILABLE(PLAYER0, SAMURAI, 1, 0)
	NEXT_COMMAND_REUSABLE
	SET_TIMER(PLAYER0, TIMER0)
ENDIF

DISPLAY_OBJECTIVE(117, PLAYER0)
