


REM ### ACTION POINT 1 -- NORTH-EAST HERO FORTRESS. CHECKS IF PLAYER IN PROXIMITY TO FINAL FIGHT.
REM ### ACTION POINT 2 -- NORTH LAVA LAKE. CHECKS IF PLAYER ENTERED CAVE.
REM ### ACTION POINT 3 -- NORTH-EAST HERO FORTRESS. COUNTS HERO QUANTITY FOR FINAL FIGHT.
REM ### ACTION POINT 4 -- MIDDLE. SPAWNS STATIONARY CREATURES.
REM ### ACTION POINT 5 -- SOUTH-MIDDLE. SPAWNS STATIONARY CREATURES.
REM ### ACTION POINT 6 -- NORTH LAVA LAKE. SPAWNS CREATURE FOR PLAYER.
REM ### ACTION POINT 7 -- NORTH LAVA LAKE. SPAWNS CREATURE FOR PLAYER.
REM ### ACTION POINT 8 -- NORTH-MIDDLE. SPAWNS STATIONARY CREATURES.
REM ### ACTION POINT 9 -- NORTH-EAST HERO FORTRESS. REVEAL LOCATION.
REM ### ACTION POINT 10 -- NORTH-MIDDLE LAVA LAKE. MESSAGE DIRECT.
REM ### ACTION POINT 11 -- GREEN DUNGEON HEART. COUNTS CREATURES.
REM ### ACTION POINT 12 -- EAST LAVA POOL. CHECKS IF AVATAR IS KILLING GREEN FIRST, SENDS MESSAGE.
REM ### ACTION POINT 13 -- SOUTH-WEST CAVERN. SENDS WARNING MESSAGE WHEN PLAYER BEGINS EXCAVATING WALLS.
REM ### ACTION POINT 14 -- NORTH PRISON CELLS. MESSAGE DIRECT.

REM ### HERO GATE 1 -- NORTH-EASTERN HERO FORTRESS. SPAWNS LOOPING HERO PARTIES.
REM ### HERO GATE 2 -- NORTH-MIDDLE HERO FORTRESS. SPAWNS PERIODIC HERO PARTIES.
REM ### HERO GATE 3 -- NORTH-WESTERN HERO FORTRESS. SPAWNS LOOPING HERO PARTIES.
REM ### HERO GATE 4 -- SOUTH-WESTERN POND. SPAWNS STATIONARY CREATURES, AND ONE POTENTIAL HERO PARTY.

REM ### P0 FLAG0 -- DIFFICULTY SELECT + LEVEL START.
REM ### P0 FLAG1 -- STARTING IMP SPAWN.

REM ### P2 FLAG0 -- COUNTS PLAYER0 CREATURES AROUND GREEN DUNGEON HEART.
REM ### P2 FLAG1 -- COUNTS PLAYER_GOOD CREATURES AROUND GREEN DUNGEON HEART.
REM ### P2 FLAG2 -- PREVENTS DUPLICATE MESSAGE.

REM ### PG FLAG0 -- RANDOMIZES, CHOOSING ONE OF TWO LOOPING PARTIES.
REM ### PG FLAG1 -- INCREMENTS WITH EACH LOOPING PARTY, PERIODICALLY ADDING TO PARTY DIFFICULTY. STOPS PARTIES AFTER 8 LOOPS.
REM ### PG FLAG2 -- COUNTS HEROES IN LAIR/HEART OF NORTH-EAST CASTLE.
REM ### PG FLAG3 -- FULLY ACTIVATES AVATAR FIGHT.
REM ### PG FLAG4 -- CHECKS IF AVATAR IS TAKING THE SOUTHERN ROUTE ACROSS LAVA.

REM ### P0 TIMER0 -- STARTING IMP SPAWN.
REM ### P0 TIMER7 -- IMP RESPAWN TIMER.

REM ### P2 TIMER0 -- COUNT CREATURE LOOP NEAR GREEN KEEPER HEART.
REM ### P2 TIMER7 -- TUNNELLER RESPAWN TIMER.

REM ### PG TIMER0 -- CONTROLS PERIODIC HERO PARTY SPAWN.
REM ### PG TIMER1 -- CONTROLS RECURRING HERO PARTY SPAWN.
REM ### PG TIMER2 -- LOOPING COUNT OF HERO QUANTITY IN THE FINAL FIGHT, NORTH-EAST CASTLE.
REM ### PG TIMER3 -- AFTER AVATAR ACTIVATED, WAITS SHORT PERIOD BEFORE SENDING OBJECTIVE.
REM ### PG TIMER4 -- COUNTDOWN FOR ARRIVAL OF FROST MAGES THAT CONNECT NE HERO FORTRESS AND PLAYER DUNGEON.
REM ### PG TIMER7 -- CHANGES HERO DUNGEON HEART TO DIRT PATH AFTER HEART IS DESTROYED. TEMPORARY BUGFIX.

REM ### MESSAGE1 -- "Greetings, Keeper. This rather fiery region lay under the administrative purview of a General Hasdrubal..."
REM ### MESSAGE2 -- "Look now, Keeper, it is the oh so mighty army this Hasdrubal fellow has been assembling for us."
REM ### MESSAGE3 -- "Attempting a light thinning of Hasdrubal's herd, are we Keeper?"
REM ### MESSAGE4 -- "Keeper, the Avatar is planning something.."
REM ### MESSAGE5 -- "It seems the Avatar's waiting was not borne of ignorance or cowardice, but of patience."
REM ### MESSAGE6 -- "Our scouts send word of another Lord in this area who reportedly failed to send forces to bolster Hasdrubal's growing army."
REM ### MESSAGE7 -- "A Wizard arrives precisely when he means to."
REM ### MESSAGE8 -- "Keeper look! The Mages have coagulated the molten earth and created paths directly to our Heart!"
REM ### MESSAGE9 -- "Good job, Keeper. Hasdrubal is no more, and what remains of his army, though perhaps still currently incensed, will eventually disperse. Let us move on toward our next conquest."
REM ### MESSAGE10 -- "A quick kill, Keeper. Hasdrubal is no more, and what remains of his army, though perhaps still currently incensed, will eventually disperse. Let us depart post-haste."
REM ### MESSAGE11 -- "So eager to kill some layabout Lord just for the opportunity to pick over his corpse? Oh, truly your ruthlessness is unbounded, Keeper."
REM ### MESSAGE12 -- "Word through the grapevine is Hasdrubal has meted punishment to that defiant Lord."
REM ### MESSAGE13 -- "Our scouts send word of another Lord in this area who seemingly did not send forces to bolster Hasdrubal's growing army, but did however send considerable financial aid."
REM ### MESSAGE14 -- "We've bought some time, Keeper. It seems Hasdrubal is intent on punishing the unruly Lord before he turns his sights toward us. Quick, leap into the fray, add to the chaos, and whittle down his forces."
REM ### MESSAGE15 -- "What tenacious mason would have so thoroughly bricked this passage? To hide their valuable treasures? Gold and treasure? A cask of amontillado perhaps? Or was it rather, to keep something in.."
REM ### MESSAGE16 -- "Keeper, with these albeit cramped cells, we can begin to expand our army and contest that of Hasdrubal's."

REM ### BOX0 -- DRAGON HOARD
REM ### BOX1 -- NORMAL DIFFICULTY
REM ### BOX2 -- HARD DIFFICULTY



REM ######################################################
REM ######################################################
REM ### PLAYER2 HAS TUNNELLERS, SO THE CREATURE MAX DISPARITY IS REALISTICALLY ONLY ~7-8.
REM ### PLAYER/S ARE GIVEN MONEY AFTER SELECTING DIFFICULTY.
REM ### WE DON'T WANT TORTURED HEROES TO REVEAL MAP.
REM ### STOP LORD CALLOUTS FROM KNIGHTS, AND STOP AVATAR FROM GOING UNCONSCIOUS.
REM ### HIDDEN TRAPS ARE CRINGE.
REM ### HIDE A HERO GATE THAT ONLY APPEARS IN HARD DIFFICULTY, WHICH IF HARD IS SELECTED WILL REAPPEAR, WHICH WILL LATER BE REMOVED AGAIN. WHY EVEN BOTHER? NOBODY WOULD NOTICE!


LEVEL_VERSION(1)
RUN_AFTER_VICTORY(1)

SET_GENERATE_SPEED(400)

SET_TEXTURE(PLAYER0,STANDARD)
SET_TEXTURE(PLAYER2,SNAKE_KEY)

SET_MUSIC(6)

COMPUTER_PLAYER(PLAYER2,13)

START_MONEY(PLAYER0,0)
START_MONEY(PLAYER2,0)

MAX_CREATURES(PLAYER0,15)
MAX_CREATURES(PLAYER2,30)

SET_CREATURE_PROPERTY(KNIGHT,LORD,0)
SET_CREATURE_PROPERTY(AVATAR,NO_IMPRISONMENT,1)

SET_GAME_RULE(TORTURECONVERTCHANCE,100)

SET_TRAP_CONFIGURATION(ALARM,HIDDEN,0)
SET_TRAP_CONFIGURATION(POISON_GAS,HIDDEN,0)
SET_TRAP_CONFIGURATION(LIGHTNING,HIDDEN,0)
SET_TRAP_CONFIGURATION(WORD_OF_POWER,HIDDEN,0)

HIDE_HERO_GATE(-5,1)



REM ######################################################
REM ######################################################


ADD_CREATURE_TO_POOL(FLY,10)
ADD_CREATURE_TO_POOL(BUG,10)
ADD_CREATURE_TO_POOL(SPIDER,10)
ADD_CREATURE_TO_POOL(SORCEROR,10)
ADD_CREATURE_TO_POOL(DRUID,10)
ADD_CREATURE_TO_POOL(TROLL,10)
ADD_CREATURE_TO_POOL(DEMONSPAWN,20)
ADD_CREATURE_TO_POOL(DRAGON,4)
ADD_CREATURE_TO_POOL(BILE_DEMON,4)
ADD_CREATURE_TO_POOL(ORC,6)
ADD_CREATURE_TO_POOL(TENTACLE,2)
ADD_CREATURE_TO_POOL(DARK_MISTRESS,6)
ADD_CREATURE_TO_POOL(HELL_HOUND,10)

ADD_CREATURE_TO_POOL(WIZARD,5)
ADD_CREATURE_TO_POOL(TIME_MAGE,5)
ADD_CREATURE_TO_POOL(BARBARIAN,5)
ADD_CREATURE_TO_POOL(ARCHER,5)
ADD_CREATURE_TO_POOL(MONK,5)
ADD_CREATURE_TO_POOL(DWARFA,5)
ADD_CREATURE_TO_POOL(WITCH,5)
ADD_CREATURE_TO_POOL(GIANT,5)
ADD_CREATURE_TO_POOL(FAIRY,5)
ADD_CREATURE_TO_POOL(THIEF,5)
ADD_CREATURE_TO_POOL(SAMURAI,5)
ADD_CREATURE_TO_POOL(KNIGHT,2)



REM ######################################################
REM ######################################################


CREATURE_AVAILABLE(PLAYER0,FLY,1,0)
CREATURE_AVAILABLE(PLAYER0,BUG,1,0)
CREATURE_AVAILABLE(PLAYER0,SPIDER,1,0)
CREATURE_AVAILABLE(PLAYER0,SORCEROR,1,0)
CREATURE_AVAILABLE(PLAYER0,DRUID,1,0)
CREATURE_AVAILABLE(PLAYER0,TROLL,1,0)
CREATURE_AVAILABLE(PLAYER0,DEMONSPAWN,1,0)
CREATURE_AVAILABLE(PLAYER0,DRAGON,1,0)
CREATURE_AVAILABLE(PLAYER0,BILE_DEMON,1,0)
CREATURE_AVAILABLE(PLAYER0,ORC,1,0)
CREATURE_AVAILABLE(PLAYER0,TENTACLE,1,0)
CREATURE_AVAILABLE(PLAYER0,DARK_MISTRESS,1,0)
CREATURE_AVAILABLE(PLAYER0,HELL_HOUND,1,0)

CREATURE_AVAILABLE(PLAYER2,WIZARD,1,0)
CREATURE_AVAILABLE(PLAYER2,TIME_MAGE,1,0)
CREATURE_AVAILABLE(PLAYER2,BARBARIAN,1,0)
CREATURE_AVAILABLE(PLAYER2,ARCHER,1,2)
CREATURE_AVAILABLE(PLAYER2,MONK,1,0)
CREATURE_AVAILABLE(PLAYER2,DWARFA,1,3)
CREATURE_AVAILABLE(PLAYER2,WITCH,1,2)
CREATURE_AVAILABLE(PLAYER2,GIANT,1,0)
CREATURE_AVAILABLE(PLAYER2,FAIRY,1,0)
CREATURE_AVAILABLE(PLAYER2,THIEF,1,0)
CREATURE_AVAILABLE(PLAYER2,SAMURAI,1,2)
CREATURE_AVAILABLE(PLAYER2,KNIGHT,1,0)



REM ######################################################
REM ######################################################
REM ### PLAYER MUST FIND SOME ROOMS IN MAP BEFORE THEY CAN CONSTRUCT IT, EITHER THROUGH HERO FORTRESSES OR BY ROBBING GREEN. WE DON'T USE (ROOM_AVAILABLE,3) BECAUSE WE NEED TO SCRIPT IN THE TUTORIAL FLASH ANYWAY.
REM ### CAPTURING NORTHERN CELL BLOCK ALLOWS LIMITED IMPRISONING BY PLAYER, AND ALLOWS GREEN TO BUILD PRISONS. PLAYER CAN BUILD THEIR OWN PRISON ONLY AFTER CAPTURING NORTH-EASTERN PRISON.


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,TRAINING,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,RESEARCH,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,GUARD_POST,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,WORKSHOP,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,BARRACKS,1,0)

ROOM_AVAILABLE(PLAYER2,TORTURE,1,0)
ROOM_AVAILABLE(PLAYER2,TEMPLE,1,1)


IF(PLAYER0,TORTURE != 0)
	ROOM_AVAILABLE(PLAYER0,TORTURE,1,1)
	TUTORIAL_FLASH_BUTTON(​17,0)
ENDIF

IF(PLAYER0,TEMPLE != 0)
	ROOM_AVAILABLE(PLAYER0,TEMPLE,1,1)
	TUTORIAL_FLASH_BUTTON(​12,​0)
ENDIF

IF(PLAYER0,BRIDGE != 0)
	ROOM_AVAILABLE(PLAYER0,BRIDGE,1,1)
	TUTORIAL_FLASH_BUTTON(​18,​0)
ENDIF

IF(PLAYER0,GRAVEYARD != 0)
	ROOM_AVAILABLE(PLAYER0,GRAVEYARD,1,1)
	TUTORIAL_FLASH_BUTTON(​15,​0)
ENDIF


IF(PLAYER0,PRISON != 0)
	ROOM_AVAILABLE(PLAYER2,PRISON,1,1)
ENDIF
IF_SLAB_OWNER(74,21,PLAYER0)
	ROOM_AVAILABLE(PLAYER0,PRISON,1,1)
	TUTORIAL_FLASH_BUTTON(​11,0)
ENDIF



REM ######################################################
REM ######################################################
REM ### NO LAVA
REM ### BOULDERS AVAILABLE IF PLAYER CLAIMS BILE WORKSHOP + IS NOT PLAYING ON HARD.


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)

TRAP_AVAILABLE(ALL_PLAYERS,ALARM,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,LIGHTNING,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,WORD_OF_POWER,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,POISON_GAS,1,0)


IF_SLAB_OWNER(44,5,PLAYER0)
	IF(PLAYER0,BOX1_ACTIVATED == 1)
		TRAP_AVAILABLE(PLAYER0,BOULDER,1,0)
		TUTORIAL_FLASH_BUTTON(​53,0)
	ENDIF
ENDIF



REM ######################################################
REM ######################################################
REM ### NO CAVE-IN.
REM ### CALL TO ARMS, LIGHTNING, MUST OBEY, DESTROY WALLS FOUND IN MAP.
REM ### WHEN PLAYER FINDS A SPELL, GIVE IT TO GREEN AS WELL.
REM ### P0 POWER IMP SCRIPTED DOWN BELOW, P2 HAS TUNNELLERS INSTEAD.
REM ### ONLY ONE LIGHTNING SPELL BOOK EXISTS.


MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SIGHT,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SPEED,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CONCEAL,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_CHICKEN,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_DISEASE,1,0)


IF_AVAILABLE(PLAYER0,POWER_CALL_TO_ARMS != 0)
	MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CALL_TO_ARMS,1,1)
ENDIF

IF_AVAILABLE(PLAYER0,POWER_OBEY != 0)
	MAGIC_AVAILABLE(ALL_PLAYERS,POWER_OBEY,1,1)
ENDIF

IF_AVAILABLE(PLAYER0,POWER_DESTROY_WALLS != 0)
	MAGIC_AVAILABLE(ALL_PLAYERS,POWER_DESTROY_WALLS,1,1)
ENDIF



REM ######################################################
REM ######################################################
REM ### PLAYER0/2 IMP/TUNNELLER RESPAWN SYSTEM + MAKE TUNNELLERS STAY HAPPY


IF(PLAYER0,TIMER7 >= 500)
	IF_CONTROLS(PLAYER0,IMP <= 3)
		NEXT_COMMAND_REUSABLE
		USE_POWER_AT_LOCATION(PLAYER0,PLAYER0,POWER_IMP,1,1)
		NEXT_COMMAND_REUSABLE
		SET_TIMER(PLAYER0,TIMER7)
	ENDIF
ENDIF


IF(PLAYER2,TIMER7 >= 400)
	IF_CONTROLS(PLAYER2,TUNNELLER <= 7)
		NEXT_COMMAND_REUSABLE
		ADD_CREATURE_TO_LEVEL(PLAYER2,TUNNELLER,PLAYER2,1,DRAWFROM(1,2,3),0)
		NEXT_COMMAND_REUSABLE
		CHANGE_CREATURES_ANNOYANCE(PLAYER2,TUNNELLER,SET,0)
		NEXT_COMMAND_REUSABLE
		SET_TIMER(PLAYER2,TIMER7)
	ENDIF
ENDIF



REM ######################################################
REM ######################################################
REM ### BLUE TUNNELLER - LESS FIGHTY, MORE IMPY.
REM ### STOP TOUCHING THE TUNNELLERS.


SET_CREATURE_CONFIGURATION(TUNNELLER,HungerRate,0)
SET_CREATURE_CONFIGURATION(TUNNELLER,LairSize,0)
SET_CREATURE_CONFIGURATION(TUNNELLER,Pay,0)
SET_CREATURE_CONFIGURATION(TUNNELLER,PrimaryJobs,DIG)
SET_CREATURE_CONFIGURATION(TUNNELLER,NotDoJobs,TRAIN)
SET_CREATURE_CONFIGURATION(TUNNELLER,NotDoJobs,MANUFACTURE)
SET_CREATURE_CONFIGURATION(TUNNELLER,NotDoJobs,GUARD)

SET_HAND_RULE(PLAYER2,TUNNELLER,RULE0,DENY,ALWAYS)



REM ######################################################
REM ######################################################
REM ### SET IMP LIMIT of ~12. >255 CREATURE LIMIT WHEN?


IF(PLAYER0,TOTAL_DIGGERS >= 12)
	NEXT_COMMAND_REUSABLE
	MAGIC_AVAILABLE(PLAYER0,POWER_IMP,0,0)
ENDIF
IF(PLAYER0,TOTAL_DIGGERS < 12)
	NEXT_COMMAND_REUSABLE
	MAGIC_AVAILABLE(PLAYER0,POWER_IMP,1,1)
ENDIF



REM ######################################################
REM ######################################################
REM ### STATIONARY PARTIES SETUP + SPAWN


CREATE_PARTY(MOANERS6)
CREATE_PARTY(MOANERS8)
CREATE_PARTY(DRAGON7)
CREATE_PARTY(DEMON9)
CREATE_PARTY(FATBOIS)

ADD_TO_PARTY(MOANERS6,GHOST,6,0,DEFEND_ROOMS,0)
ADD_TO_PARTY(MOANERS8,GHOST,8,0,DEFEND_ROOMS,0)
ADD_TO_PARTY(DRAGON7,DRAGON,7,0,DEFEND_LOCATION,0)
ADD_TO_PARTY(DEMON9,DEMONSPAWN,9,0,DEFEND_LOCATION,0)
ADD_TO_PARTY(FATBOIS,BILE_DEMON,10,0,DEFEND_ROOMS,0)

ADD_PARTY_TO_LEVEL(PLAYER_GOOD,MOANERS6,-4,3)
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,MOANERS8,-4,2)
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DRAGON7,4,2)
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DEMON9,4,DRAWFROM(3,4))
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DEMON9,5,3)
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,FATBOIS,8,3)



REM ######################################################
REM ######################################################
REM ### NORTH HERO FORT BARRACKS - OCCASIONAL HERO PARTY SPAWN. STOPS IF BARRACKS IS CLAIMED, OR PARTIES EXHAUSTED.


CREATE_PARTY(HERO0)
    ADD_TO_PARTY(HERO0,DRAWFROM(WITCH,WIZARD),4,250,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(HERO0,DRAWFROM(BARBARIAN,MONK),3,150,DEFEND_PARTY,0)
    ADD_TO_PARTY(HERO0,DRAWFROM(DWARFA,THIEF,ARCHER),2,100,ATTACK_DUNGEON_HEART,0)
    ADD_TO_PARTY(HERO0,DRAWFROM(DWARFA,THIEF,ARCHER),2,100,STEAL_GOLD,0)
	ADD_TO_PARTY(HERO0,DRAWFROM(DWARFA,THIEF,ARCHER),2,100,STEAL_GOLD,0)

CREATE_PARTY(HERO1)
    ADD_TO_PARTY(HERO1,DRAWFROM(GIANT,SAMURAI),5,250,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(HERO1,DRAWFROM(BARBARIAN,MONK),5,150,DEFEND_PARTY,0)
    ADD_TO_PARTY(HERO1,DRAWFROM(DWARFA,THIEF,ARCHER),5,100,ATTACK_DUNGEON_HEART,0)
    ADD_TO_PARTY(HERO1,DRAWFROM(DWARFA,THIEF,ARCHER),4,100,STEAL_GOLD,0)
    ADD_TO_PARTY(HERO1,DRAWFROM(WITCH,WIZARD),4,100,STEAL_SPELLS,0)

CREATE_PARTY(HERO2)
    ADD_TO_PARTY(HERO2,DRAWFROM(THIEF,ARCHER),7,300,STEAL_GOLD,0)
    ADD_TO_PARTY(HERO2,SAMURAI,6,300,ATTACK_DUNGEON_HEART,0)
    ADD_TO_PARTY(HERO2,DRAWFROM(ARCHER,BARBARIAN),6,200,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(HERO2,DRAWFROM(ARCHER,THIEF),6,150,DEFEND_PARTY,0)
    ADD_TO_PARTY(HERO2,BARBARIAN,5,150,DEFEND_PARTY,0)
    ADD_TO_PARTY(HERO2,MONK,5,0,DEFEND_PARTY,0)
    ADD_TO_PARTY(HERO2,DRAWFROM(WIZARD,TIME_MAGE),5,150,STEAL_SPELLS,0)

CREATE_PARTY(HERO3)
	ADD_TO_PARTY(HERO3,DRAWFROM(WIZARD,TIME_MAGE),10,600,STEAL_SPELLS,0)
	ADD_TO_PARTY(HERO3,DRAWFROM(SAMURAI,GIANT),10,500,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(HERO3,DRAWFROM(BARBARIAN,ARCHER),9,250,STEAL_GOLD,0)
	ADD_TO_PARTY(HERO3,DRAWFROM(BARBARIAN,ARCHER,MONK),9,250,STEAL_GOLD,0)
	ADD_TO_PARTY(HERO3,DRAWFROM(THIEF,ARCHER,DWARFA),8,100,DEFEND_PARTY,0)
    ADD_TO_PARTY(HERO3,DRAWFROM(THIEF,ARCHER,DWARFA),8,100,DEFEND_PARTY,0)



IF(PLAYER0,TIMES_LEVELUP_CREATURE >= 20)
	IF_SLAB_OWNER(29,18,PLAYER_GOOD)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,HERO0,-2,1)
		SET_TIMER(PLAYER_GOOD,TIMER0)
	ENDIF
ENDIF


IF(PLAYER_GOOD,TIMER0 > 24000)
	IF_SLAB_OWNER(29,18,PLAYER_GOOD)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,HERO1,-2,1)
		SET_TIMER(PLAYER_GOOD,TIMER1)
	ENDIF
ENDIF


IF(PLAYER_GOOD,TIMER0 > 48000)
	IF_SLAB_OWNER(29,18,PLAYER_GOOD)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,HERO2,-2,1)
		SET_TIMER(PLAYER_GOOD,TIMER1)
	ENDIF
ENDIF


IF(PLAYER_GOOD,TIMER0 > 64000)
	IF_SLAB_OWNER(29,18,PLAYER_GOOD)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,HERO3,-2,1)
		HIDE_HERO_GATE(-2,1)
	ENDIF
ENDIF



IF_SLAB_OWNER(29,19,PLAYER0)
	HIDE_HERO_GATE(-2,1)
ENDIF



REM ######################################################
REM ######################################################
REM ### RECURRING HERO PARTIES, SPAWNING NORTH-WEST CORNER ABOVE PLAYER, OR NORTH-EAST CORNER IN HERO CASTLE.
REM ### ADDS ADDITIONAL UNITS TO PARTIES AS LOOPS ACCRUE. AFTER EIGHT LOOPS, NO MORE PARTIES.
REM ### IF PLAYER CLAIMS SLAB, STOP SPAWNS EARLY AND HIDE HERO GATE. ALSO UNLOCK DOOR WHEN FIRST PARTY SPAWNS.
REM ### IF PLAYER_GOOD FLAG0 ROLLS FOR A DISABLED PARTY, SET IT TO THE OPPOSITE PARTY INSTEAD.


CREATE_PARTY(LOOPHERO)
    ADD_TO_PARTY(LOOPHERO,DRAWFROM(FAIRY,WITCH),7,100,ATTACK_DUNGEON_HEART,0)
    ADD_TO_PARTY(LOOPHERO,DRAWFROM(FAIRY,WITCH),6,100,ATTACK_DUNGEON_HEART,0)
    ADD_TO_PARTY(LOOPHERO,FAIRY,6,100,ATTACK_DUNGEON_HEART,0)
    ADD_TO_PARTY(LOOPHERO,WITCH,6,100,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(LOOPMON)
    ADD_TO_PARTY(LOOPMON,DRAWFROM(DRAGON,HELL_HOUND),6,500,ATTACK_DUNGEON_HEART,0)
    ADD_TO_PARTY(LOOPMON,DEMONSPAWN,6,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(LOOPMON,DRAWFROM(DRAGON,HELL_HOUND,DEMONSPAWN),5,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(LOOPMON,DEMONSPAWN,5,0,ATTACK_DUNGEON_HEART,0)


IF(PLAYER_GOOD,TIMER1 > 12000)
	NEXT_COMMAND_REUSABLE
	RANDOMISE_FLAG(PLAYER_GOOD,FLAG0,2)
	NEXT_COMMAND_REUSABLE
	SET_TIMER(PLAYER_GOOD,TIMER1)
ENDIF



IF(PLAYER_GOOD,FLAG0 == 1)
	IF(PLAYER_GOOD,FLAG1 <= 8)
		IF_SLAB_OWNER(59,21,PLAYER_GOOD)
			NEXT_COMMAND_REUSABLE
			ADD_PARTY_TO_LEVEL(PLAYER_GOOD,LOOPHERO,-1,1)
			NEXT_COMMAND_REUSABLE
			SET_FLAG(PLAYER_GOOD,FLAG0,0)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER_GOOD,FLAG1,1)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER_GOOD,FLAG0 == 2)
	IF_SLAB_OWNER(10,18,PLAYER_GOOD)
		IF(PLAYER_GOOD,FLAG1 <= 8)
			NEXT_COMMAND_REUSABLE
			ADD_PARTY_TO_LEVEL(PLAYER_GOOD,LOOPMON,-3,1)
			NEXT_COMMAND_REUSABLE
			SET_FLAG(PLAYER_GOOD,FLAG0,0)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER_GOOD,FLAG1,1)
		ENDIF
	ENDIF
ENDIF



IF(PLAYER_GOOD,FLAG1 == 3)
	ADD_TO_PARTY(LOOPMON,DRAWFROM(DRAGON,HELL_HOUND),7,500,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(LOOPHERO,TIME_MAGE,7,500,STEAL_SPELLS,0)
ENDIF

IF(PLAYER_GOOD,FLAG1 == 6)
	ADD_TO_PARTY(LOOPMON,HORNY,8,500,ATTACK_ROOMS,0)
	ADD_TO_PARTY(LOOPHERO,FAIRY,10,500,STEAL_SPELLS,0)
	ADD_TO_PARTY(LOOPHERO,WITCH,8,500,STEAL_GOLD,0)
ENDIF



IF_SLAB_OWNER(59,21,PLAYER0)
	HIDE_HERO_GATE(-1,1)
ENDIF
IF_SLAB_OWNER(10,18,PLAYER0)
	HIDE_HERO_GATE(-3,1)
ENDIF
IF(PLAYER_GOOD,FLAG0 != 0)
	SET_DOOR(UNLOCKED,8,20)
ENDIF



IF(PLAYER_GOOD,FLAG0 == 1)
	IF_SLAB_OWNER(59,21,PLAYER0)
		NEXT_COMMAND_REUSABLE
		SET_FLAG(PLAYER_GOOD,FLAG0,2)
	ENDIF
ENDIF

IF(PLAYER_GOOD,FLAG0 == 2)
	IF_SLAB_OWNER(10,18,PLAYER0)
		NEXT_COMMAND_REUSABLE
		SET_FLAG(PLAYER_GOOD,FLAG0,1)
	ENDIF
ENDIF



REM ######################################################
REM ######################################################
REM ### SPAWN WEAK TUNNEL PARTIES AT SOUTH TEMPLE AND EASTERN DORF OUTPOST.


IF(PLAYER0,GAME_TURN > 72000)
	IF_SLAB_OWNER(20,78,PLAYER_GOOD)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,IMP,-4,4,8,500)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,GHOST,-4,3,10,0)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,SPIDER,-4,2,8,0)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,BUG,-4,2,10,0)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,TENTACLE,-4,1,9,0)
		HIDE_HERO_GATE(-4,1)
	ENDIF
ENDIF

IF_SLAB_OWNER(20,78,PLAYER0)
	HIDE_HERO_GATE(-4,1)
ENDIF



CREATE_PARTY(DORFS)
    ADD_TO_PARTY(DORFS,DWARFA,7,250,DEFEND_PARTY,0)
	ADD_TO_PARTY(DORFS,DWARFA,7,250,DEFEND_PARTY,0)
	ADD_TO_PARTY(DORFS,DRAWFROM(TUNNELLER,DWARFA),7,250,DEFEND_PARTY,0)
	ADD_TO_PARTY(DORFS,DRAWFROM(TUNNELLER,DWARFA),6,200,DEFEND_PARTY,0)
	ADD_TO_PARTY(DORFS,DRAWFROM(TUNNELLER,DWARFA),6,200,DEFEND_PARTY,0)

IF(PLAYER0,GAME_TURN > 60000)
	IF_SLAB_OWNER(63,50,PLAYER_GOOD)
		ADD_TUNNELLER_PARTY_TO_LEVEL(​PLAYER_GOOD,DORFS,​-5,​DUNGEON,0,​9,​600)
		HIDE_HERO_GATE(-5,1)
	ENDIF
ENDIF

IF_SLAB_OWNER(63,50,PLAYER0)
	HIDE_HERO_GATE(-5,1)
ENDIF



REM ######################################################
REM ######################################################
REM ### REVEAL FINAL FIGHT TO PLAYER + SPAWN AVATAR PARTY.


CREATE_PARTY(GIGADICK)
	ADD_TO_PARTY(GIGADICK,AVATAR,10,2000,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(GIGADICK,KNIGHT,10,1000,DEFEND_PARTY,0)
	ADD_TO_PARTY(GIGADICK,KNIGHT,10,1000,DEFEND_PARTY,0)
	ADD_TO_PARTY(GIGADICK,DRAWFROM(WIZARD,TIME_MAGE),10,700,DEFEND_PARTY,0)
	ADD_TO_PARTY(GIGADICK,DRAWFROM(WIZARD,TIME_MAGE),10,700,DEFEND_PARTY,0)
	ADD_TO_PARTY(GIGADICK,DRAWFROM(GIANT,SAMURAI),10,500,DEFEND_PARTY,0)
	ADD_TO_PARTY(GIGADICK,DRAWFROM(GIANT,SAMURAI),10,500,DEFEND_PARTY,0)
	ADD_TO_PARTY(GIGADICK,DRAWFROM(GIANT,SAMURAI,BARBARIAN,MONK),10,500,DEFEND_PARTY,0)

	
IF_ACTION_POINT(1,PLAYER0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,GIGADICK,PLAYER_GOOD,1)
	REVEAL_MAP_LOCATION(PLAYER0,9,-1)
	REVEAL_MAP_LOCATION(PLAYER0,PLAYER_GOOD,-1)
	QUICK_OBJECTIVE(2,"Look now, Keeper, it is the oh so mighty army this Hasdrubal fellow has been assembling for us. Some thieves guild rejects, burly tavern drunks, old geezers, a troupe of circus midgets.. and a woman? Hah, how droll. This army knows no loyalty to Hasdrubal, only to coin and booze and God. Kill him and watch his army scatter to the wind.",9)
	SET_TIMER(PLAYER_GOOD,TIMER2)
ENDIF



REM ######################################################
REM ######################################################
REM ### PREVENT PLAYER CHEESING FINAL HERO FIGHT WITH LIGHTNING STRIKES. HEROES IN AREA = (39 + 8) = 47.
REM ### GIVE WARNING IF HERO COUNT DROPS TO 45.
REM ### IF HERO COUNT DROPS TO 42, ACTIVATE AVATAR + SPAWN SOME REPLACEMENTS.
REM ### RESET LOOP.


SET_FLAG(PLAYER_GOOD,FLAG2,47)


IF(PLAYER_GOOD,TIMER2 >= 5)
	NEXT_COMMAND_REUSABLE
	COUNT_CREATURES_AT_ACTION_POINT(3,PLAYER_GOOD,ANY_CREATURE,PLAYER_GOOD,FLAG2)
ENDIF


IF(PLAYER_GOOD,TIMER2 >= 30)
	IF(PLAYER_GOOD,FLAG2 <= 45)
		IF(PLAYER_GOOD,FLAG3 == 0)
			PLAY_MESSAGE(PLAYER0,SPEECH,123)
			QUICK_INFORMATION(3,"Attempting a light thinning of Hasdrubal's herd, are we Keeper? A novel idea, but Hasdrubal is no flake and will certainly sally out if your assault should continue.",1)
		ENDIF
	ENDIF
ENDIF


IF(PLAYER_GOOD,FLAG2 <= 42)
	IF(PLAYER_GOOD,FLAG3 == 0)
		SET_FLAG(PLAYER_GOOD,FLAG3,1)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,DRAWFROM(GIANT,BARBARIAN,SAMURAI,TIME_MAGE,WIZARD,ARCHER),9,2,7,0)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,DRAWFROM(GIANT,BARBARIAN,SAMURAI,TIME_MAGE,WIZARD,ARCHER),9,2,7,0)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,DRAWFROM(GIANT,BARBARIAN,SAMURAI,TIME_MAGE,WIZARD,ARCHER),9,2,7,0)
	ENDIF
ENDIF


IF(PLAYER_GOOD,TIMER2 >= 50)
	NEXT_COMMAND_REUSABLE
	SET_TIMER(PLAYER_GOOD,TIMER2)
ENDIF



REM ######################################################
REM ######################################################
REM ### IF PLAYER KNOCKS DOWN EITHER OF THE LAIR DOORS, ACTIVATE AVATAR.


IF_SLAB_TYPE(64,17,PRETTY_PATH)
	SET_FLAG(PLAYER_GOOD,FLAG3,1)
ENDIF
IF_SLAB_TYPE(68,17,PRETTY_PATH)
	SET_FLAG(PLAYER_GOOD,FLAG3,1)
ENDIF



REM ######################################################
REM ######################################################
REM ### AVATAR FIGHT FULLY ACTIVATED.
REM ### UNLOCK DOORS BETWEEN DUNGEON HEART AND LAIR.
REM ### BLOW OUT THE WALLS NEAR THE LAIR.
REM ### SET TIMER FOR THE NEXT PHASE OF FIGHT.
REM ### ADD A MASSIVE AMOUNT OF TIME TO THE LOOPING PARTY SPAWN TIMER TO EFFECTIVELY DISABLE IT. YEAH I COULD JUST USE A FLAG, BUT WHY DO YOU CARE? WHY ARE YOU READING THIS? SWEATY NERD, KEEP SCROLLING.


IF(PLAYER_GOOD,FLAG3 == 1)
	PLAY_MESSAGE(PLAYER0,SPEECH,125)
	SET_DOOR(UNLOCKED,71,10)
	SET_DOOR(UNLOCKED,71,12)
	USE_POWER_AT_POS(PLAYER_GOOD,190,52,POWER_DESTROY_WALLS,9,1)
	USE_POWER_AT_POS(PLAYER_GOOD,196,52,POWER_DESTROY_WALLS,9,1)
	USE_POWER_AT_POS(PLAYER_GOOD,202,52,POWER_DESTROY_WALLS,9,1)
	USE_POWER_AT_POS(PLAYER_GOOD,208,52,POWER_DESTROY_WALLS,9,1)
	SET_TIMER(PLAYER_GOOD,TIMER3)
	ADD_TO_TIMER(PLAYER_GOOD,TIMER1,-999999)
ENDIF


IF(PLAYER_GOOD,TIMER3 > 1200)
	IF(PLAYER_GOOD,AVATAR != 0)
		SET_TIMER(PLAYER_GOOD,TIMER4)
		DISPLAY_COUNTDOWN(PLAYER_GOOD,TIMER4,3600,1)
		QUICK_OBJECTIVE(4,"Keeper, it seems Hasdrubal was waiting for one final contingent of seemingly important troops to arrive. Dispose of Hasdrubal before we have yet more adversaries to contend with.")
	ENDIF
ENDIF



REM ######################################################
REM ######################################################
REM ### AVATAR SUMMONS FROST MAGES TO CREATE PATHS ACROSS THE LAVA. TUNNELLERS MOSTLY FOR FLAVOUR.
REM ### BLOW OUT WALL NEAR TRAINING ROOM TO FACILITATE PATH ACCESS.
REM ### UNLOCK SOME DOORS THAT REALLY SHOULDN'T EXIST ANYMORE.


CREATE_PARTY(TUNNELTIME)
    ADD_TO_PARTY(TUNNELTIME,DWARFA,9,150,DEFEND_PARTY,0)
	ADD_TO_PARTY(TUNNELTIME,DWARFA,9,150,DEFEND_PARTY,0)

	
IF(PLAYER_GOOD,TIMER4 >= 3600)
	IF(PLAYER_GOOD,AVATAR != 0)
		QUICK_MESSAGE(7,"A Wizard arrives precisely when he means to.",WIZARD)
		QUICK_INFORMATION(5,"The final reinforcements have arrived; A council of the Kingdom's finest elementalists, and some Dwarven saboteurs. What is Hasdrubal' playing at?",PLAYER_GOOD)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,WIZARD,9,2,10,0)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,TIME_MAGE,9,2,10,0)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,SORCEROR,9,2,10,0)
		ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,TUNNELTIME,9,DUNGEON_HEART,0,10,250)
		SET_DOOR(UNLOCKED,61,10)
		SET_DOOR(UNLOCKED,61,12)
		USE_POWER_AT_POS(PLAYER_GOOD,160,34,POWER_DESTROY_WALLS,9,1)
		USE_POWER_AT_POS(PLAYER_GOOD,211,64,POWER_DESTROY_WALLS,9,1)
		USE_POWER_AT_POS(PLAYER_GOOD,220,76,POWER_DESTROY_WALLS,9,1)
		USE_POWER_AT_POS(PLAYER_GOOD,220,100,POWER_DESTROY_WALLS,9,1)
		USE_POWER_AT_POS(PLAYER_GOOD,172,181,POWER_DESTROY_WALLS,9,1)
		SET_DOOR(UNLOCKED,38,14)
		SET_DOOR(UNLOCKED,70,46)
		SET_DOOR(UNLOCKED,55,58)
		CHANGE_SLAB_TYPE(46,11,PATH,NONE)
		CHANGE_SLAB_TYPE(47,11,PATH,NONE)
		CHANGE_SLAB_TYPE(45,12,PATH,NONE)
		CHANGE_SLAB_TYPE(46,12,PATH,NONE)
		CHANGE_SLAB_TYPE(47,12,PATH,NONE)
		CHANGE_SLAB_TYPE(48,12,PATH,NONE)
		CHANGE_SLAB_TYPE(44,13,PATH,NONE)
		CHANGE_SLAB_TYPE(45,13,PATH,NONE)
		CHANGE_SLAB_TYPE(46,13,PATH,NONE)
		CHANGE_SLAB_TYPE(47,13,PATH,NONE)
		CHANGE_SLAB_TYPE(43,14,PATH,NONE)
		CHANGE_SLAB_TYPE(44,14,PATH,NONE)
		CHANGE_SLAB_TYPE(45,14,PATH,NONE)
		CHANGE_SLAB_TYPE(25,33,PATH,NONE)
		CHANGE_SLAB_TYPE(24,34,PATH,NONE)
		CHANGE_SLAB_TYPE(25,34,PATH,NONE)
		CHANGE_SLAB_TYPE(26,34,PATH,NONE)
		CHANGE_SLAB_TYPE(25,35,PATH,NONE)
		CHANGE_SLAB_TYPE(74,35,PATH,NONE)
		CHANGE_SLAB_TYPE(74,36,PATH,NONE)
		CHANGE_SLAB_TYPE(74,37,PATH,NONE)
		CHANGE_SLAB_TYPE(73,34,PATH,NONE)
		CHANGE_SLAB_TYPE(73,35,PATH,NONE)
		CHANGE_SLAB_TYPE(73,36,PATH,NONE)
		CHANGE_SLAB_TYPE(73,37,PATH,NONE)
		CHANGE_SLAB_TYPE(73,38,PATH,NONE)
		CHANGE_SLAB_TYPE(73,39,PATH,NONE)
		CHANGE_SLAB_TYPE(72,36,PATH,NONE)
		CHANGE_SLAB_TYPE(72,37,PATH,NONE)
		CHANGE_SLAB_TYPE(72,38,PATH,NONE)
		CHANGE_SLAB_TYPE(72,39,PATH,NONE)
		CHANGE_SLAB_TYPE(72,40,PATH,NONE)	
		CHANGE_SLAB_TYPE(71,38,PATH,NONE)
		CHANGE_SLAB_TYPE(71,39,PATH,NONE)
		CHANGE_SLAB_TYPE(71,40,PATH,NONE)
		CHANGE_SLAB_TYPE(71,41,PATH,NONE)		
	ENDIF
ENDIF


IF(PLAYER_GOOD,TIMER4 >= 3850)
	IF(PLAYER_GOOD,AVATAR != 0)
		QUICK_INFORMATION(8,"Keeper look! The Mages have coagulated the molten earth and created paths directly to our Heart! Stop them Keeper, kill Hasdrubal now!",10)
	ENDIF
ENDIF



REM ######################################################
REM ######################################################
REM ### CHECK IF AVATAR IS TAKING THE SOUTHERN ROUTE.


IF(PLAYER_GOOD,TIMER2 >= 5)
	NEXT_COMMAND_REUSABLE
	COUNT_CREATURES_AT_ACTION_POINT(12,PLAYER_GOOD,AVATAR,PLAYER_GOOD,FLAG4)
ENDIF

IF(PLAYER_GOOD,FLAG4 != 0)
	IF_SLAB_TYPE(73,37,PATH)
		IF(PLAYER2,DUNGEON_DESTROYED == 0)
			IF(PLAYER0,BOX1_ACTIVATED == 1)
				QUICK_INFORMATION(14,"We've bought some time, Keeper. It seems Hasdrubal is intent on punishing the unruly Lord before he turns his sights toward us. Quick, leap into the fray, add to the chaos, and whittle down his forces.",12)
			ENDIF
		ENDIF
	ENDIF
ENDIF



REM ######################################################
REM ######################################################
REM ### WIN CONDITION IF PLAYER KILLED AVATAR SLOWLY.
REM ### WIN CONDITION IF PLAYER KILLED AVATAR QUICKLY.


IF(PLAYER_GOOD,FLAG3 == 1)
	IF(PLAYER_GOOD,AVATAR == 0)
		IF(PLAYER_GOOD,GOOD_CREATURES <= 18)
			QUICK_OBJECTIVE(9,"Good job, Keeper. Hasdrubal is no more, and what remains of his army, though perhaps still currently incensed, will eventually disperse. Let us move on toward our next conquest.")
			WIN_GAME
		ENDIF
	ENDIF
ENDIF

IF(PLAYER_GOOD,FLAG3 == 1)
	IF(PLAYER_GOOD,AVATAR == 0)
		IF(PLAYER_GOOD,GOOD_CREATURES > 18)
			QUICK_OBJECTIVE(10,"A quick kill, Keeper. Hasdrubal is no more, and what remains of his army, though perhaps still currently incensed, will eventually disperse. Let us depart post-haste.")
			WIN_GAME
		ENDIF
	ENDIF
ENDIF



REM ######################################################
REM ######################################################
REM ### SECRET DEMONSPAWN IN NORTH-CENTER ROCK.


IF_ACTION_POINT(2,PLAYER0)
	ADD_CREATURE_TO_LEVEL(PLAYER0,DEMONSPAWN,6,1,7,0)
	ADD_CREATURE_TO_LEVEL(PLAYER0,DEMONSPAWN,7,1,8,0)
	PLAY_MESSAGE(PLAYER0,SPEECH,75)
ENDIF



REM ######################################################
REM ######################################################
REM ### UNLOAD THE TOADS, NORTH-WEST LAVA POOL.


IF_SLAB_OWNER(8,12,PLAYER0)
	PLAY_MESSAGE(PLAYER0,SOUND,856)
	CHANGE_SLAB_TYPE(7,7,LAVA)
	CHANGE_SLAB_TYPE(8,7,LAVA)
	CHANGE_SLAB_TYPE(9,7,LAVA)
ENDIF



REM ######################################################
REM ######################################################
REM ### LOOSE MESSAGES.


QUICK_OBJECTIVE(1,"Greetings, Keeper. This rather fiery region lay under the administrative purview of a General Hasdrubal the who cares, from House yada-yada. I do apologize, but the scout reports are always so woefully boring. Somewhere in the north-east is this Hasdrubal fellow who is reportedly amassing a rather large mob of chaps with swords, and it's probably in our interests to have him... not do that. Find him, kill him.",9)

IF(PLAYER2,TOTAL_CREATURES > 18)
	IF(PLAYER0,BOX1_ACTIVATED == 1)
		QUICK_INFORMATION(6,"Our scouts send word of another Lord in this area who reportedly failed to send forces to bolster Hasdrubal's growing army. Though one could say the enemy of our enemy is our friend, we have no need of friends. Kill this Lord, or don't, it doesn't matter. Just know that he is there.",PLAYER2)
	ENDIF
ENDIF

IF(PLAYER2,TOTAL_CREATURES > 18)
	IF(PLAYER0,BOX2_ACTIVATED == 1)
		QUICK_INFORMATION(13,"Our scouts send word of another Lord in this area who seemingly did not send forces to bolster Hasdrubal's growing army, but did however send considerable financial aid. It seems Hasdrubal has acknowledged this contribution to the war effort, and the two factions have no further quarrel.",PLAYER2)
	ENDIF
ENDIF



REM ######################################################
REM ######################################################
REM ### SEND MESSAGE ON GREEN'S DEATH, DIFFERING IF KILLED BY PLAYER0 OR BY PLAYER_GOOD.


SET_TIMER(PLAYER2,TIMER0)

IF(PLAYER2,TIMER0 > 1)
	NEXT_COMMAND_REUSABLE
	COUNT_CREATURES_AT_ACTION_POINT(11,PLAYER0,ANY_CREATURE,PLAYER2,FLAG0)
	NEXT_COMMAND_REUSABLE
	COUNT_CREATURES_AT_ACTION_POINT(11,PLAYER_GOOD,ANY_CREATURE,PLAYER2,FLAG1)
ENDIF

IF(PLAYER2,TIMER0 > 200)
	SET_TIMER(PLAYER2,TIMER0)
ENDIF


IF(PLAYER2,DUNGEON_DESTROYED == 1)
	IF(PLAYER2,FLAG2 == 0)
		IF(PLAYER2,FLAG0 > PLAYER2,FLAG1)
			QUICK_INFORMATION(11,"So eager to kill some layabout Lord just for the opportunity to pick over his corpse? Oh, truly your ruthlessness is unbounded, Keeper.",PLAYER2)
			SET_FLAG(PLAYER2,FLAG2,1)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER2,DUNGEON_DESTROYED == 1)
	IF(PLAYER2,FLAG2 == 0)
		IF(PLAYER2,FLAG0 < PLAYER2,FLAG1)
			QUICK_INFORMATION(12,"Word through the grapevine is Hasdrubal has meted punishment to that defiant Lord. Our goal remains the same, but perhaps their old keep holds some yet hidden treasures?",PLAYER2)
			SET_FLAG(PLAYER2,FLAG2,1)
		ENDIF
	ENDIF
ENDIF



REM ######################################################
REM ######################################################
REM ### CENTRAL CUSTOM BOX


SET_BOX_TOOLTIP(0,"Dragon's Hoard: Add 15,000 gold to your coffers.")

IF(PLAYER0,BOX0_ACTIVATED == 1)
	ADD_GOLD_TO_PLAYER(PLAYER0,15000)
	PLAY_MESSAGE(PLAYER0,SOUND,34)
ENDIF



REM ######################################################
REM ######################################################
REM ### DIFFICULTY SELECTION + LEVEL START
REM ### SET TOOLTIPS AND MAKE CUSTOM BOXES DISPOSABLE
REM ### WHEN ONE BOX IS PICKED, THE OTHER GETS DESTROYED IN LAVA.
REM ### RESTORE CHANGED SLABS, GIVE PLAYERS STARTING GOLD, START IMP TIMERS, SPAWN PLAYER IMPS/TUNNELLERS, MAKE CUSTOM BOXES SAFE IN LAVA.


SET_BOX_TOOLTIP(1,"Balanced Difficulty")
SET_BOX_TOOLTIP(2,"Brutal Difficulty")
SET_OBJECT_CONFIGURATION(SPECBOX_CUSTOM,DestroyOnLava,1)


IF(PLAYER0,BOX1_ACTIVATED == 1)
	IF(PLAYER0,BOX2_ACTIVATED == 0)
		SET_FLAG(PLAYER0,FLAG0,1)
		CHANGE_SLAB_TYPE(10,40,LAVA)
		PLAY_MESSAGE(PLAYER0,SPEECH,80)
	ENDIF
ENDIF
IF(PLAYER0,BOX2_ACTIVATED == 1)
	IF(PLAYER0,BOX1_ACTIVATED == 0)
		SET_FLAG(PLAYER0,FLAG0,1)
		CHANGE_SLAB_TYPE(6,40,LAVA)
		PLAY_MESSAGE(PLAYER0,SPEECH,80)
	ENDIF
ENDIF


IF(PLAYER0,FLAG0 == 1)
	CHANGE_SLAB_TYPE(10,40,PRETTY_PATH)
	CHANGE_SLAB_OWNER(10,40,PLAYER0)
	CHANGE_SLAB_TYPE(6,40,PRETTY_PATH)
	CHANGE_SLAB_OWNER(6,40,PLAYER0)
	SET_TIMER(PLAYER0,TIMER7)
	SET_TIMER(PLAYER2,TIMER7)
	SET_TIMER(PLAYER0,TIMER0)
	ADD_GOLD_TO_PLAYER(PLAYER0,5000)
	ADD_GOLD_TO_PLAYER(PLAYER2,12500)
	ADD_CREATURE_TO_LEVEL(PLAYER2,TUNNELLER,PLAYER2,3,DRAWFROM(2,3),0)
	SET_OBJECT_CONFIGURATION(SPECBOX_CUSTOM,DestroyOnLava,0)
ENDIF


IF(PLAYER0,FLAG0 == 1)
	IF(PLAYER0,FLAG1 <= 3)
		IF(PLAYER0,TIMER0 > 15)
			NEXT_COMMAND_REUSABLE
			USE_POWER_AT_LOCATION(PLAYER0,PLAYER0,POWER_IMP,1,1)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(​PLAYER0,FLAG1,1)
			NEXT_COMMAND_REUSABLE
			SET_TIMER(PLAYER0,TIMER0)
		ENDIF
	ENDIF
ENDIF



REM ######################################################
REM ######################################################
REM ### HARD DIFFICULTY SELECTION DIFFERENCES.
REM ### FILL IN A LAVA POOL AND WATER POND NEAR GREEN TO HELP FACILITATE AGGRESSIVE DIGGING.
REM ### GREEN AND WHITE ARE ALLIED.
REM ### SLIGHTLY HASTEN HERO PARTY TIMERS.
REM ### ADD EXTRA PARTIES TO FINAL FIGHT.
REM ### PLAYER ALSO RESTRICTED TO ONLY THREE BOULDERS.


IF(PLAYER0,BOX2_ACTIVATED == 1)
	CHANGE_SLAB_TYPE(52,59,PATH,MATCH)
	CHANGE_SLAB_TYPE(50,59,HARD)
	CHANGE_SLAB_TYPE(49,60,HARD)
	CHANGE_SLAB_TYPE(52,57,PATH)
	CHANGE_SLAB_TYPE(54,60,DIRT)
	CHANGE_SLAB_TYPE(50,63,DIRT)
	CHANGE_SLAB_TYPE(51,62,DIRT)
	CHANGE_SLAB_TYPE(41,69,PATH,MATCH)
	CHANGE_SLAB_TYPE(40,68,HARD)
	CHANGE_SLAB_TYPE(42,68,HARD)
	CHANGE_SLAB_TYPE(39,69,HARD)
	CHANGE_SLAB_TYPE(42,70,DIRT)
	CHANGE_SLAB_TYPE(40,71,DIRT)
	LEVEL_UP_CREATURE(​PLAYER_GOOD,ANY_CREATURE,ANYWHERE,40)
	HIDE_HERO_GATE(-5,0)
	ALLY_PLAYERS(PLAYER2,PLAYER_GOOD,3)
ENDIF


IF(PLAYER0,BOX2_ACTIVATED == 1)
	IF(PLAYER_GOOD,TIMER0 > 5)
		ADD_TO_TIMER(PLAYER_GOOD,TIMER0,3000)
	ENDIF
ENDIF


IF(PLAYER0,BOX2_ACTIVATED == 1)
	IF_SLAB_TYPE(46,12,PATH)
		HIDE_HERO_GATE(-1,0)
		HIDE_HERO_GATE(-2,0)
		HIDE_HERO_GATE(-3,0)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,LOOPHERO,-1,1)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,HERO3,-2,1)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,LOOPMON,-3,1)
	ENDIF
ENDIF







REM ######################################################
REM ######################################################
REM ### 1.1 Changes



REM ######################################################
REM ######################################################
REM ### WARNS PLAYER WHEN DIGGING INTO SOUTH-WEST PASSAGE.


IF_ACTION_POINT(13,PLAYER0)
	QUICK_INFORMATION(15,"What tenacious mason would have so thoroughly bricked this passage, and to what end? To protect their valuable treasures? Gold and jewels? Bolts of satin? A cask of amontillado perhaps? Or was this sturdy bulwark rather, to keep something in..",13)
ENDIF



REM ######################################################
REM ######################################################
REM ### TELLS PLAYER ABOUT HASDRUBAL'S PRISON SO THEY DON'T HAVE A CRY THAT THEY CAN'T BUILD THEIR OWN ONE YET.


IF_SLAB_OWNER(35,9,PLAYER0)
	IF_AVAILABLE(PLAYER0,PRISON == 0)
		QUICK_INFORMATION(16,"Keeper, with these albeit cramped cells, we can begin to expand our army and contest that of Hasdrubal's. Undoubtedly he garrisons a prison of his own, housing the derelicts, rabble-rousers and failed deserters. Find that prison, recruit the unwilling louses within, and let our army grow.",14)
	ENDIF
ENDIF



REM ######################################################
REM ######################################################
REM ### HEART PEDESTALS ARE BUGGED AND DON'T IMPLODE CORRECTLY IF THEY'RE ANY SHAPE OTHER THAN 3x3. WHEN THIS IS FIXED, REMOVE THIS SCRIPT. 


IF(PLAYER_GOOD,DUNGEON_DESTROYED == 1)
	SET_TIMER(PLAYER_GOOD,TIMER7)
ENDIF

IF(PLAYER_GOOD,TIMER7 > 65)
	CHANGE_SLAB_TYPE(76,9,PATH)
	CHANGE_SLAB_TYPE(77,9,PATH)
	CHANGE_SLAB_TYPE(78,9,PATH)
	CHANGE_SLAB_TYPE(75,10,PATH)
	CHANGE_SLAB_TYPE(76,10,PATH)
	CHANGE_SLAB_TYPE(77,10,PATH)
	CHANGE_SLAB_TYPE(78,10,PATH)
	CHANGE_SLAB_TYPE(79,10,PATH)
	CHANGE_SLAB_TYPE(75,11,PATH)
	CHANGE_SLAB_TYPE(76,11,PATH)
	CHANGE_SLAB_TYPE(77,11,PATH)
	CHANGE_SLAB_TYPE(78,11,PATH)
	CHANGE_SLAB_TYPE(79,11,PATH)
	CHANGE_SLAB_TYPE(75,12,PATH)
	CHANGE_SLAB_TYPE(76,12,PATH)
	CHANGE_SLAB_TYPE(77,12,PATH)
	CHANGE_SLAB_TYPE(78,12,PATH)
	CHANGE_SLAB_TYPE(79,12,PATH)
	CHANGE_SLAB_TYPE(76,13,PATH)
	CHANGE_SLAB_TYPE(77,13,PATH)
	CHANGE_SLAB_TYPE(78,13,PATH)
ENDIF





