



LEVEL_VERSION(1)
SET_GENERATE_SPEED(500)

COMPUTER_PLAYER(PLAYER1,ROAMING)
COMPUTER_PLAYER(PLAYER2,ROAMING)
COMPUTER_PLAYER(PLAYER4,ROAMING)
COMPUTER_PLAYER(PLAYER5,ROAMING)
COMPUTER_PLAYER(PLAYER6,ROAMING)

SET_MUSIC("Revenant - Game Track 07.ogg")

SET_PLAYER_COLOUR(PLAYER0,GREEN)
SET_PLAYER_COLOUR(PLAYER4,BLACK)
SET_PLAYER_COLOUR(PLAYER6,BLACK)

SET_TEXTURE(PLAYER0,STANDARD)

ADD_CREATURE_TO_POOL(DEMONSPAWN,10)
ADD_CREATURE_TO_POOL(TROLL,10)
ADD_CREATURE_TO_POOL(SORCEROR,6)
ADD_CREATURE_TO_POOL(DRUID,6)
ADD_CREATURE_TO_POOL(ORC,2)
ADD_CREATURE_TO_POOL(MAIDEN,2)
ADD_CREATURE_TO_POOL(QUEEN,2)
ADD_CREATURE_TO_POOL(BILE_DEMON,2)
ADD_CREATURE_TO_POOL(DRAGON,2)
ADD_CREATURE_TO_POOL(BUG,2)
ADD_CREATURE_TO_POOL(SPIDER,2)

CREATURE_AVAILABLE(PLAYER0,DEMONSPAWN,1,0)
CREATURE_AVAILABLE(PLAYER0,TROLL,1,0)
CREATURE_AVAILABLE(PLAYER0,TENTACLE,1,0)
CREATURE_AVAILABLE(PLAYER0,SORCEROR,1,0)
CREATURE_AVAILABLE(PLAYER0,DRUID,1,0)
CREATURE_AVAILABLE(PLAYER0,ORC,1,0)
CREATURE_AVAILABLE(PLAYER0,MAIDEN,1,0)
CREATURE_AVAILABLE(PLAYER0,QUEEN,1,0)
CREATURE_AVAILABLE(PLAYER0,BILE_DEMON,1,0)
CREATURE_AVAILABLE(PLAYER0,DRAGON,1,0)
CREATURE_AVAILABLE(PLAYER0,BUG,1,0)
CREATURE_AVAILABLE(PLAYER0,SPIDER,1,0)

CREATURE_AVAILABLE(PLAYER0,DARK_MISTRESS,1,0)
CREATURE_AVAILABLE(PLAYER0,BEHOLDER,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,RESEARCH,1,1)
ROOM_AVAILABLE(PLAYER0,WORKSHOP,1,0)
ROOM_AVAILABLE(PLAYER0,PRISON,3,0)
ROOM_AVAILABLE(PLAYER0,TORTURE,3,0)
ROOM_AVAILABLE(PLAYER0,BARRACKS,3,0)
ROOM_AVAILABLE(PLAYER0,GRAVEYARD,3,0)

SET_ROOM_CONFIGURATION(TEMPLE,PROPERTIES,10)
SET_CREATURE_PROPERTY(KNIGHT,LORD,0)
SET_GAME_RULE(TRAINEFFICIENCY,192)

MAGIC_AVAILABLE(PLAYER0,POWER_HAND,0,0)
MAGIC_AVAILABLE(PLAYER0,POWER_SLAP,0,0)
MAGIC_AVAILABLE(PLAYER0,POWER_POSSESS,0,0)

MAGIC_AVAILABLE(PLAYER0,POWER_IMP,1,1)
MAGIC_AVAILABLE(PLAYER0,POWER_SIGHT,1,1)
MAGIC_AVAILABLE(PLAYER0,POWER_SPEED,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_OBEY,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_CALL_TO_ARMS,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_LIGHTNING,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_DISEASE,1,0)

SET_POWER_CONFIGURATION(POWER_SLOW,PANELTABINDEX,9)
SET_POWER_CONFIGURATION(POWER_FREEZE,PANELTABINDEX,15)

SET_OBJECT_CONFIGURATION(LANTERN_PST,FALLACCELERATION,20)
SET_OBJECT_CONFIGURATION(LANTERN_PST,DESTROYONLIQUID,1)

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

DOOR_AVAILABLE(PLAYER0,WOOD,1,0)
DOOR_AVAILABLE(PLAYER0,BRACED,1,0)
DOOR_AVAILABLE(PLAYER0,STEEL,1,0)
DOOR_AVAILABLE(PLAYER0,MAGIC,1,0)
DOOR_AVAILABLE(PLAYER0,MIDAS,1,0)

ALLY_PLAYERS(PLAYER0,PLAYER6,3)
ALLY_PLAYERS(PLAYER0,PLAYER2,3)

ALLY_PLAYERS(PLAYER1,PLAYER_GOOD,3)
ALLY_PLAYERS(PLAYER1,PLAYER4,3)
ALLY_PLAYERS(PLAYER1,PLAYER5,3)
ALLY_PLAYERS(PLAYER_GOOD,PLAYER4,3)
ALLY_PLAYERS(PLAYER_GOOD,PLAYER5,3)
ALLY_PLAYERS(PLAYER4,PLAYER5,3)

HIDE_HERO_GATE(-10,1)
HIDE_HERO_GATE(-11,1)
HIDE_HERO_GATE(-12,1)
HIDE_HERO_GATE(-13,1)
HIDE_HERO_GATE(-14,1)

SET_HAND_RULE(PLAYER0,ZOMBIE,RULE0,DENY,ALWAYS)
SET_HAND_RULE(PLAYER0,NECROSKELETON,RULE1,DENY,ALWAYS)
SET_HAND_RULE(PLAYER0,FIREFLY,RULE2,DENY,ALWAYS)
SET_HAND_RULE(PLAYER0,SPIDERLING,RULE3,DENY,ALWAYS)
SET_HAND_RULE(PLAYER0,BIRD,RULE4,DENY,ALWAYS)

NEXT_COMMAND_REUSABLE
CONCEAL_MAP_RECT(PLAYER0,1,1,999,1,1)
NEXT_COMMAND_REUSABLE
CONCEAL_MAP_RECT(PLAYER0,1,1,1,999,1)
NEXT_COMMAND_REUSABLE
CONCEAL_MAP_RECT(PLAYER0,358,388,1,999,1)
NEXT_COMMAND_REUSABLE
CONCEAL_MAP_RECT(PLAYER0,358,388,999,1,1)

IF(PLAYER0,ENTRANCE <= 9)
	MAX_CREATURES(PLAYER0,10)
ENDIF
IF(PLAYER0,ENTRANCE == 18)
	MAX_CREATURES(PLAYER0,14)
ENDIF
IF(PLAYER0,ENTRANCE == 27)
	MAX_CREATURES(PLAYER0,18)
	CREATURE_ENTRANCE_LEVEL(PLAYER0,2)
ENDIF
IF(PLAYER0,ENTRANCE == 36)
	MAX_CREATURES(PLAYER0,22)
	CREATURE_ENTRANCE_LEVEL(PLAYER0,3)
ENDIF
IF(PLAYER0,ENTRANCE == 45)
	MAX_CREATURES(PLAYER0,26)
	CREATURE_ENTRANCE_LEVEL(PLAYER0,4)
ENDIF
IF(PLAYER0,ENTRANCE == 56)
	MAX_CREATURES(PLAYER0,30)
	CREATURE_ENTRANCE_LEVEL(PLAYER0,5)
ENDIF



	
	REM -- Level Intro 'cinematic'.

SET_CREATURE_CONFIGURATION(IMP,STAND,980)
SET_CREATURE_CONFIGURATION(IMP,AMBULATE,980)
SET_CREATURE_CONFIGURATION(IMP,PRETTYDANCE,980)
SET_CREATURE_CONFIGURATION(IMP,FOOT,0,0)

	
SET_TIMER(PLAYER0,TIMER0)

IF(PLAYER0,FLAG6 == 0)
	NEXT_COMMAND_REUSABLE
	ZOOM_TO_LOCATION(PLAYER0,50)
ENDIF
IF(PLAYER0,FLAG6 == 1)
	NEXT_COMMAND_REUSABLE
	ZOOM_TO_LOCATION(PLAYER0,51)
	REVEAL_MAP_LOCATION(PLAYER0,PLAYER1,-1)
ENDIF
IF(PLAYER0,FLAG6 == 2)
	NEXT_COMMAND_REUSABLE
	ZOOM_TO_LOCATION(PLAYER0,52)
	REVEAL_MAP_LOCATION(PLAYER0,PLAYER_GOOD,-1)
ENDIF


IF(PLAYER0,TIMER0 > 150)
	SET_FLAG(PLAYER0,FLAG6,1)
ENDIF
IF(PLAYER0,TIMER0 > 215)
	PLAY_MESSAGE(PLAYER0,SPEECH,117)
ENDIF
IF(PLAYER0,TIMER0 > 290)
	SET_FLAG(PLAYER0,FLAG6,2)
ENDIF
IF(PLAYER0,TIMER0 > 350)
	PLAY_MESSAGE(PLAYER0,SPEECH,123)
ENDIF
IF(PLAYER0,TIMER0 > 425)
	SET_FLAG(PLAYER0,FLAG6,0)
ENDIF
IF(PLAYER0,TIMER0 > 440)
	SET_FLAG(PLAYER0,FLAG6,4)
ENDIF
IF(PLAYER0,TIMER0 > 625)
	ZOOM_TO_LOCATION(PLAYER0,50)
	ADD_CREATURE_TO_LEVEL(PLAYER0,IMP,50,1,2,0)
	SET_FLAG(PLAYER0,FLAG6,4)
	
	IF_ACTION_POINT(49,PLAYER0)
		SET_CREATURE_CONFIGURATION(IMP,BASESPEED,0)
		ZOOM_TO_LOCATION(PLAYER0,PLAYER0)
		SET_TIMER(PLAYER0,TIMER1)
	ENDIF
ENDIF

IF(PLAYER0,TIMER1 > 30)
	PLAY_MESSAGE(PLAYER0,SOUND,834)
ENDIF

IF(PLAYER0,TIMER1 > 80)
	TRANSFER_CREATURE(PLAYER0,IMP,ANYWHERE,1)
	SET_PLAYER_COLOR(PLAYER0,RED)
	SET_TIMER(PLAYER0,TIMER7)
	ADD_GOLD_TO_PLAYER(PLAYER0,7500)
	
	MAGIC_AVAILABLE(PLAYER0,POWER_SLAP,1,1)
	MAGIC_AVAILABLE(PLAYER0,POWER_HAND,1,1)
	MAGIC_AVAILABLE(PLAYER0,POWER_POSSESS,1,1)
	
	CHANGE_CREATURE_OWNER(PLAYER2,DRUID,ANYWHERE,PLAYER0)
	CHANGE_CREATURE_OWNER(PLAYER2,TENTACLE,ANYWHERE,PLAYER0)
	CHANGE_CREATURE_OWNER(PLAYER2,TENTACLE,ANYWHERE,PLAYER0)
	CHANGE_CREATURE_OWNER(PLAYER2,SPIDER,ANYWHERE,PLAYER0)
	CHANGE_CREATURE_OWNER(PLAYER2,BUG,ANYWHERE,PLAYER0)
	CHANGE_SLAB_OWNER(88,16,PLAYER0,MATCH)
	CHANGE_SLAB_OWNER(87,17,PLAYER0,MATCH)
	
	SET_CREATURE_CONFIGURATION(IMP,STAND,556)
	SET_CREATURE_CONFIGURATION(IMP,AMBULATE,554)
	SET_CREATURE_CONFIGURATION(IMP,PRETTYDANCE,564)
	SET_CREATURE_CONFIGURATION(IMP,FOOT,9,4)
ENDIF

IF(PLAYER0,FLAG7 <= 4)
	IF(PLAYER0,TIMER7 > 15)
		SET_CREATURE_CONFIGURATION(IMP,BASESPEED,96)
		NEXT_COMMAND_REUSABLE
		USE_POWER_AT_LOCATION(PLAYER0,PLAYER0,POWER_IMP,1,1)
		NEXT_COMMAND_REUSABLE
		ADD_TO_FLAG(PLAYER0,FLAG7,1)
		NEXT_COMMAND_REUSABLE
		SET_TIMER(PLAYER0,TIMER7)
	ENDIF
ENDIF




	REM -- Imps respawn if less than 4.

IF(PLAYER0,TIMER7 >= 500)
	IF(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




	REM -- Stationary parties.
	
CREATE_PARTY(FLY6)
	ADD_TO_PARTY(FLY6,FLY,6,0,DEFEND_LOCATION,0)
CREATE_PARTY(MAID5)
	ADD_TO_PARTY(MAID5,MAIDEN,5,0,DEFEND_LOCATION,0)
CREATE_PARTY(TEN4)
	ADD_TO_PARTY(TEN4,TENTACLE,4,0,DEFEND_LOCATION,0)

	CREATE_PARTY(TOAD4)
		ADD_TO_PARTY(TOAD4,TOAD,4,0,DEFEND_LOCATION,0)
	CREATE_PARTY(DRUID6)
		ADD_TO_PARTY(DRUID6,DRUID,6,0,DEFEND_LOCATION,0)
	
CREATE_PARTY(SKEL6)
	ADD_TO_PARTY(SKEL6,SKELETON,6,0,DEFEND_LOCATION,0)
CREATE_PARTY(ZOM6)
	ADD_TO_PARTY(ZOM6,ZOMBIE,6,0,DEFEND_LOCATION,0)
	
	CREATE_PARTY(SALA7)
		ADD_TO_PARTY(SALA7,SALAMANDER,7,0,DEFEND_LOCATION,0)
	CREATE_PARTY(QUEEN8)
		ADD_TO_PARTY(QUEEN8,QUEEN,8,0,DEFEND_LOCATION,0)
	
CREATE_PARTY(THIEF6)
	ADD_TO_PARTY(THIEF6,THIEF,6,0,DEFEND_LOCATION,100)
CREATE_PARTY(DORF5)
	ADD_TO_PARTY(DORF5,DWARFA,5,0,DEFEND_LOCATION,50)
CREATE_PARTY(ARCH5)
	ADD_TO_PARTY(ARCH5,ARCHER,5,0,DEFEND_LOCATION,100)
CREATE_PARTY(BARB4)
	ADD_TO_PARTY(BARB4,BARBARIAN,4,0,DEFEND_LOCATION,100)
CREATE_PARTY(GIANT4)
	ADD_TO_PARTY(GIANT4,GIANT,4,0,DEFEND_LOCATION,100)
CREATE_PARTY(FAE4)
	ADD_TO_PARTY(FAE4,FAIRY,4,0,DEFEND_LOCATION,50)
	
	CREATE_PARTY(DORF3)
		ADD_TO_PARTY(DORF3,DWARFA,3,0,DEFEND_LOCATION,0)
	CREATE_PARTY(THIEF4)
		ADD_TO_PARTY(THIEF4,THIEF,4,0,DEFEND_LOCATION,0)
	CREATE_PARTY(ARCH3)
		ADD_TO_PARTY(ARCH3,ARCHER,3,0,DEFEND_LOCATION,0)

CREATE_PARTY(LOCK9)
	ADD_TO_PARTY(LOCK9,WARLOCK,9,0,DEFEND_LOCATION,300)
CREATE_PARTY(MIS7)
	ADD_TO_PARTY(MIS7,MISTRESS,7,0,DEFEND_LOCATION,200)
CREATE_PARTY(SORC7)
	ADD_TO_PARTY(SORC7,SORCEROR,7,0,DEFEND_LOCATION,150)
CREATE_PARTY(SERV6)
	ADD_TO_PARTY(SERV6,SERVANT,6,0,DEFEND_LOCATION,50)

CREATE_PARTY(NECRO9)
	ADD_TO_PARTY(NECRO9,NECROMANCER,9,0,DEFEND_LOCATION,300)
CREATE_PARTY(NECRO7)
	ADD_TO_PARTY(NECRO7,NECROMANCER,7,0,DEFEND_LOCATION,200)


	


	REM -- Active parties.
	
REM -- T1
CREATE_PARTY(BONKBROS)
	ADD_TO_PARTY(BONKBROS,DRAWFROM(GIANT,SERVANT,BARBARIAN),DRAWFROM(4,5),150,ATTACK_DUNGEON_HEART,DRAWFROM(1~500))
	ADD_TO_PARTY(BONKBROS,DRAWFROM(GIANT,SERVANT,BARBARIAN),DRAWFROM(4,5),150,ATTACK_DUNGEON_HEART,DRAWFROM(1~500))
	ADD_TO_PARTY(BONKBROS,DRAWFROM(GIANT,SERVANT,BARBARIAN),DRAWFROM(4,5),150,ATTACK_DUNGEON_HEART,DRAWFROM(1~500))
	
CREATE_PARTY(KNIFEWIFE)
	ADD_TO_PARTY(KNIFEWIFE,MISTRESS,DRAWFROM(4,5),150,ATTACK_DUNGEON_HEART,DRAWFROM(1~500))
	ADD_TO_PARTY(KNIFEWIFE,VESTAL,DRAWFROM(4,5),150,ATTACK_DUNGEON_HEART,DRAWFROM(1~500))
	ADD_TO_PARTY(KNIFEWIFE,ASSASSIN,DRAWFROM(4,5),150,ATTACK_DUNGEON_HEART,DRAWFROM(1~500))

CREATE_PARTY(HOUNDSMAN)
	ADD_TO_PARTY(HOUNDSMAN,ARCHER,6,400,ATTACK_ENEMIES,DRAWFROM(1~500))
	ADD_TO_PARTY(HOUNDSMAN,HELL_HOUND,DRAWFROM(3,4),0,DEFEND_PARTY,0)
	ADD_TO_PARTY(HOUNDSMAN,HELL_HOUND,DRAWFROM(3,4),0,DEFEND_PARTY,0)
	ADD_TO_PARTY(HOUNDSMAN,HELL_HOUND,DRAWFROM(3,4),0,DEFEND_PARTY,0)
	
CREATE_PARTY(CHOPPAH)
	ADD_TO_PARTY(CHOPPAH,EXECUTIONER,6,300,ATTACK_DUNGEON_HEART,DRAWFROM(1~500))
	ADD_TO_PARTY(CHOPPAH,DWARFA,DRAWFROM(3,4),50,DEFEND_PARTY,0)
	ADD_TO_PARTY(CHOPPAH,DWARFA,DRAWFROM(3,4),50,DEFEND_PARTY,0)
	ADD_TO_PARTY(CHOPPAH,DWARFA,DRAWFROM(2~4),50,DEFEND_PARTY,0)
	ADD_TO_PARTY(CHOPPAH,DWARFA,DRAWFROM(2~4),50,DEFEND_PARTY,0)
	
CREATE_PARTY(YOINK)
	ADD_TO_PARTY(YOINK,DRAWFROM(WARLOCK,TIME_MAGE),4,125,STEAL_SPELLS,DRAWFROM(1~500))
	ADD_TO_PARTY(YOINK,DRAWFROM(SORCEROR,WIZARD),4,125,STEAL_SPELLS,0)
	ADD_TO_PARTY(YOINK,DRAWFROM(THIEF,DWARFA),DRAWFROM(4,5),100,STEAL_GOLD,0)
	ADD_TO_PARTY(YOINK,DRAWFROM(THIEF,DWARFA),DRAWFROM(2~4),50,DEFEND_PARTY,0)
	ADD_TO_PARTY(YOINK,DRAWFROM(THIEF,DWARFA),DRAWFROM(2~4),50,DEFEND_PARTY,0)

	
REM -- T2
CREATE_PARTY(BONKBROS_BIG)
	ADD_TO_PARTY(BONKBROS_BIG,GIANT,6,250,ATTACK_DUNGEON_HEART,DRAWFROM(1~500))
	ADD_TO_PARTY(BONKBROS_BIG,SERVANT,DRAWFROM(6,7),250,ATTACK_DUNGEON_HEART,DRAWFROM(1~500))
	ADD_TO_PARTY(BONKBROS_BIG,BARBARIAN,DRAWFROM(6,7),250,ATTACK_DUNGEON_HEART,DRAWFROM(1~500))
	ADD_TO_PARTY(BONKBROS_BIG,BARBARIAN,DRAWFROM(4,5),150,DEFEND_PARTY,0)

CREATE_PARTY(KNIFEWIFE_BIG)
	ADD_TO_PARTY(KNIFEWIFE_BIG,MISTRESS,DRAWFROM(6,7),250,ATTACK_DUNGEON_HEART,DRAWFROM(1~500))
	ADD_TO_PARTY(KNIFEWIFE_BIG,VESTAL,DRAWFROM(6,7),250,ATTACK_DUNGEON_HEART,DRAWFROM(1~500))
	ADD_TO_PARTY(KNIFEWIFE_BIG,ASSASSIN,DRAWFROM(6,7),250,ATTACK_DUNGEON_HEART,DRAWFROM(1~500))
	ADD_TO_PARTY(KNIFEWIFE_BIG,ASSASSIN,5,100,DEFEND_PARTY,0)
	ADD_TO_PARTY(KNIFEWIFE_BIG,ASSASSIN,5,100,DEFEND_PARTY,0)

CREATE_PARTY(HOUNDSMAN_BIG)
	ADD_TO_PARTY(HOUNDSMAN_BIG,ARCHER,9,650,ATTACK_ENEMIES,DRAWFROM(1~500))
	ADD_TO_PARTY(HOUNDSMAN_BIG,HELL_HOUND,DRAWFROM(5,6),0,DEFEND_PARTY,0)
	ADD_TO_PARTY(HOUNDSMAN_BIG,HELL_HOUND,DRAWFROM(5,6),0,DEFEND_PARTY,0)
	ADD_TO_PARTY(HOUNDSMAN_BIG,HELL_HOUND,DRAWFROM(5,6),0,DEFEND_PARTY,0)
	ADD_TO_PARTY(HOUNDSMAN_BIG,HELL_HOUND,DRAWFROM(4,5),0,DEFEND_PARTY,0)
	ADD_TO_PARTY(HOUNDSMAN_BIG,HELL_HOUND,DRAWFROM(3,4),0,DEFEND_PARTY,0)
	
CREATE_PARTY(CHOPPAH_BIG)
	ADD_TO_PARTY(CHOPPAH_BIG,EXECUTIONER,7,300,ATTACK_DUNGEON_HEART,DRAWFROM(1~500))
	ADD_TO_PARTY(CHOPPAH_BIG,EXECUTIONER,7,300,ATTACK_DUNGEON_HEART,DRAWFROM(1~500))
	ADD_TO_PARTY(CHOPPAH_BIG,DWARFA,DRAWFROM(4~6),100,DEFEND_PARTY,0)
	ADD_TO_PARTY(CHOPPAH_BIG,DWARFA,DRAWFROM(4~6),100,DEFEND_PARTY,0)
	ADD_TO_PARTY(CHOPPAH_BIG,DWARFA,DRAWFROM(3,4),50,DEFEND_PARTY,0)
	ADD_TO_PARTY(CHOPPAH_BIG,DWARFA,DRAWFROM(3,4),50,DEFEND_PARTY,0)
	
CREATE_PARTY(YOINK_BIG)
	ADD_TO_PARTY(YOINK_BIG,DRAWFROM(WARLOCK,TIME_MAGE,CRONE),7,200,STEAL_SPELLS,DRAWFROM(1~500))
	ADD_TO_PARTY(YOINK_BIG,DRAWFROM(SORCEROR,WIZARD,WITCH),7,200,STEAL_SPELLS,0)
	ADD_TO_PARTY(YOINK_BIG,DRAWFROM(THIEF,DWARFA),7,200,STEAL_GOLD,0)
	ADD_TO_PARTY(YOINK_BIG,DRAWFROM(THIEF,DWARFA),7,200,STEAL_GOLD,0)
	ADD_TO_PARTY(YOINK_BIG,DRAWFROM(THIEF,DWARFA),DRAWFROM(4~6),85,DEFEND_PARTY,0)
	ADD_TO_PARTY(YOINK_BIG,DRAWFROM(THIEF,DWARFA),DRAWFROM(4~6),85,DEFEND_PARTY,0)
	
	
REM -- TFinal
CREATE_PARTY(FINAL_HEROES)
	ADD_TO_PARTY(FINAL_HEROES,KNIGHT,10,500,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(FINAL_HEROES,SAMURAI,10,500,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(FINAL_HEROES,GIANT,10,350,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(FINAL_HEROES,BARBARIAN,10,350,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(FINAL_HEROES,ARCHER,10,300,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(FINAL_HEROES,DWARFA,10,300,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(FINAL_NEWGUYS)
	ADD_TO_PARTY(FINAL_NEWGUYS,BLACK_KNIGHT,10,500,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(FINAL_NEWGUYS,MISTRESS,10,500,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(FINAL_NEWGUYS,EXECUTIONER,10,350,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(FINAL_NEWGUYS,SERVANT,10,350,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(FINAL_NEWGUYS,VESTAL,10,300,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(FINAL_NEWGUYS,ASSASSIN,10,300,ATTACK_DUNGEON_HEART,0)
	
CREATE_PARTY(FINAL_AVATAR1)
	ADD_TO_PARTY(FINAL_AVATAR1,AVATAR,10,1250,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(FINAL_AVATAR1,KNIGHT,10,500,DEFEND_PARTY,0)
	ADD_TO_PARTY(FINAL_AVATAR1,WIZARD,10,350,DEFEND_PARTY,0)
	ADD_TO_PARTY(FINAL_AVATAR1,FAIRY,10,350,DEFEND_PARTY,0)

CREATE_PARTY(FINAL_AVATAR2)
	ADD_TO_PARTY(FINAL_AVATAR2,AVATAR,10,1250,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(FINAL_AVATAR2,BLACK_KNIGHT,10,500,DEFEND_PARTY,0)
	ADD_TO_PARTY(FINAL_AVATAR2,TIME_MAGE,10,350,DEFEND_PARTY,0)
	ADD_TO_PARTY(FINAL_AVATAR2,WARLOCK,10,350,DEFEND_PARTY,0)
	
CREATE_PARTY(FINAL_AVATAR3)
	ADD_TO_PARTY(FINAL_AVATAR3,AVATAR,10,1250,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(FINAL_AVATAR3,EXECUTIONER,10,500,DEFEND_PARTY,0)
	ADD_TO_PARTY(FINAL_AVATAR3,NECROMANCER,10,350,DEFEND_PARTY,0)
	ADD_TO_PARTY(FINAL_AVATAR3,WITCH,10,350,DEFEND_PARTY,0)


REM -- Assorted.
CREATE_PARTY(RAIDING)
	ADD_TO_PARTY(RAIDING,DRAWFROM(DRUID,MAIDEN),10,300,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(RAIDING,DRAWFROM(ORC,BARBARIAN),8,100,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(RAIDING,DRAWFROM(ORC,BARBARIAN),8,100,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(RAIDING,DRAWFROM(ORC,BARBARIAN,TROLL),8,100,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(RAIDING,DRAWFROM(TROLL,BUG,SPIDER),7,0,DEFEND_PARTY,0)
	ADD_TO_PARTY(RAIDING,DRAWFROM(TROLL,BUG,SPIDER),7,0,DEFEND_PARTY,0)
	ADD_TO_PARTY(RAIDING,DRAWFROM(TROLL,BUG,SPIDER),6,0,DEFEND_PARTY,0)

	
	
	
	
	REM -- Attack parties.
	REM -- First few parties come from the three central hero gates.
	
IF(PLAYER6,TIMER0 == 0)
	IF(PLAYER0,TOTAL_CREATURES >= 8)
		SET_TIMER(PLAYER6,TIMER0)
	ENDIF
	IF(PLAYER0,GAME_TURN >= 8000)
		SET_TIMER(PLAYER6,TIMER0)
	ENDIF
	IF(PLAYER0,TIMES_LEVELUP_CREATURE >= 14)
		SET_TIMER(PLAYER6,TIMER0)
	ENDIF
ENDIF


IF(PLAYER6,TIMER0 > 16000)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DRAWFROM(BONKBROS,KNIFEWIFE,HOUNDSMAN,CHOPPAH,YOINK),DRAWFROM(-7,-8,-9),1)
ENDIF
IF(PLAYER6,TIMER0 > 35000)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DRAWFROM(BONKBROS,KNIFEWIFE,HOUNDSMAN,CHOPPAH,YOINK),DRAWFROM(-7,-8,-9),1)
ENDIF
IF(PLAYER6,TIMER0 > 48000)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DRAWFROM(BONKBROS,KNIFEWIFE,HOUNDSMAN,CHOPPAH,YOINK),DRAWFROM(-7,-8,-9),1)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,THIEF,DRAWFROM(-7,-8,-9),3,6,80)
	SET_TIMER(PLAYER6,TIMER1)
ENDIF

REM -- Extremely unlikely this does anything more than hide the hero gates.
IF(PLAYER6,TIMER0 > 96000)
	IF_SLAB_OWNER(38,29,PLAYER_GOOD)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DRAWFROM(BONKBROS,KNIFEWIFE,HOUNDSMAN,CHOPPAH,YOINK),-7,1)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,ASSASSIN,-7,8,2,300,NONE)
	ENDIF
	IF_SLAB_OWNER(69,56,PLAYER_GOOD)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DRAWFROM(BONKBROS,KNIFEWIFE,HOUNDSMAN,CHOPPAH,YOINK),-8,1)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,ASSASSIN,-8,8,2,300,NONE)
	ENDIF
	IF_SLAB_OWNER(49,50,PLAYER_GOOD)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DRAWFROM(BONKBROS,KNIFEWIFE,HOUNDSMAN,CHOPPAH,YOINK),-9,1)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,ASSASSIN,-9,8,2,300,NONE)
	ENDIF
	
	HIDE_HERO_GATE(-7,1)
	HIDE_HERO_GATE(-8,1)
	HIDE_HERO_GATE(-9,1)
ENDIF




	REM -- Stronger parties coming from distant map borders. Repeats forever.
	REM -- FLAG0 determines the location (35,35,36) and FLAG1 determines the party spawned.

IF(PLAYER6,TIMER1 > 18000)
	NEXT_COMMAND_REUSABLE
	RANDOMIZE_FLAG(PLAYER6,FLAG0,3)
	NEXT_COMMAND_REUSABLE
	RANDOMIZE_FLAG(PLAYER6,FLAG1,5)
ENDIF

IF(PLAYER6,FLAG0 == 1)
	IF(PLAYER6,FLAG1 == 1)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,BONKBROS_BIG,-12,1)
	ENDIF
	IF(PLAYER6,FLAG1 == 2)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,KNIFEWIFE_BIG,-12,1)
	ENDIF
	IF(PLAYER6,FLAG1 == 3)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,HOUNDSMAN_BIG,-12,1)
	ENDIF
	IF(PLAYER6,FLAG1 == 4)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,CHOPPAH_BIG,-12,1)
	ENDIF
	IF(PLAYER6,FLAG1 == 5)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,YOINK_BIG,-12,1)
	ENDIF
ENDIF

IF(PLAYER6,FLAG0 == 2)
	IF(PLAYER6,FLAG1 == 1)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,BONKBROS_BIG,-11,1)
	ENDIF
	IF(PLAYER6,FLAG1 == 2)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,KNIFEWIFE_BIG,-11,1)
	ENDIF
	IF(PLAYER6,FLAG1 == 3)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,HOUNDSMAN_BIG,-11,1)
	ENDIF
	IF(PLAYER6,FLAG1 == 4)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,CHOPPAH_BIG,-11,1)
	ENDIF
	IF(PLAYER6,FLAG1 == 5)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,YOINK_BIG,-11,1)
	ENDIF
ENDIF

IF(PLAYER6,FLAG0 == 3)
	IF(PLAYER6,FLAG1 == 1)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,BONKBROS_BIG,-13,1)
	ENDIF
	IF(PLAYER6,FLAG1 == 2)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,KNIFEWIFE_BIG,-13,1)
	ENDIF
	IF(PLAYER6,FLAG1 == 3)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,HOUNDSMAN_BIG,-13,1)
	ENDIF
	IF(PLAYER6,FLAG1 == 4)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,CHOPPAH_BIG,-13,1)
	ENDIF
	IF(PLAYER6,FLAG1 == 5)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,YOINK_BIG,-13,1)
	ENDIF
ENDIF

IF(PLAYER6,FLAG1 > 0)
	NEXT_COMMAND_REUSABLE
	SET_FLAG(PLAYER6,FLAG0,0)
	NEXT_COMMAND_REUSABLE
	SET_FLAG(PLAYER6,FLAG1,0)
	NEXT_COMMAND_REUSABLE
	SET_TIMER(PLAYER6,TIMER1)
ENDIF




	REM -- Activates after player comes across necromancer library. Repeats forever until Necromancers are killed.
	REM -- Toads in the connected swamp also repeat forever until their lair is claimed. Timer is long so player probably only sees this party 0~2 times.
	
IF_ACTION_POINT(8,PLAYER0)
	SET_TIMER(PLAYER6,TIMER2)
	SET_TIMER(PLAYER6,TIMER3)
	
	NEXT_COMMAND_REUSABLE
	COUNT_CREATURES_AT_ACTION_POINT(40,PLAYER5,NECROMANCER,PLAYER6,FLAG2)

	IF(PLAYER6,TIMER2 > 12000)
		IF(PLAYER6,FLAG2 > 0)
			NEXT_COMMAND_REUSABLE
			ADD_PARTY_TO_LEVEL(PLAYER5,SKEL6,8,1)
			NEXT_COMMAND_REUSABLE
			ADD_PARTY_TO_LEVEL(PLAYER5,ZOM6,8,2)
			NEXT_COMMAND_REUSABLE
			ADD_CREATURE_TO_LEVEL(PLAYER5,SKELETON,8,3,5,0)
			NEXT_COMMAND_REUSABLE
			ADD_CREATURE_TO_LEVEL(PLAYER5,GHOST,8,2,6,0)
			NEXT_COMMAND_REUSABLE
			SET_TIMER(PLAYER6,TIMER2)
		ENDIF
	ENDIF
	
	IF(PLAYER6,TIMER3 > 42000)
		IF_SLAB_OWNER(54,121,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_CREATURE_TO_LEVEL(PLAYER5,DRUID,7,1,9,250,NONE)
			NEXT_COMMAND_REUSABLE
			ADD_CREATURE_TO_LEVEL(PLAYER5,TENTACLE,7,1,8,0,NONE)
			NEXT_COMMAND_REUSABLE
			ADD_CREATURE_TO_LEVEL(PLAYER5,TOAD,7,5,7,0,NONE)
			NEXT_COMMAND_REUSABLE
			SET_TIMER(PLAYER6,TIMER3)
		ENDIF
	ENDIF
ENDIF


	REM -- Once-off spawn in the far south-west corner, after player has been to the southern temple. Just for flavour and to make the map feel more alive.
	
IF_ACTION_POINT(9,PLAYER0)
	SET_TIMER(PLAYER6,TIMER4)
	
	IF(PLAYER6,TIMER4 > 26000)
		ADD_CREATURE_TO_LEVEL(PLAYER5,DRAWFROM(SALAMANDER,DRAGON),42,3,7,0,NONE)
	ENDIF
ENDIF	
	
	
	REM -- Once-off spawn at the east map border, after player has raided the orc caves. Flavour.
	
IF_ACTION_POINT(14,PLAYER0)
	SET_TIMER(PLAYER6,TIMER6)
	
	IF(PLAYER6,TIMER6 > 32000)
		ADD_PARTY_TO_LEVEL(PLAYER5,RAIDING,43,1)
	ENDIF
ENDIF	
	

	REM -- Horde of dwarves when player reaches the south-west castle garden. The original map has a massive pile of dwarves crammed into a cupboard so the only reason this is here is to pay respects to that original decision. Frankly it's bad for the pacing but whatever.
	REM -- Doesn't happen if player skips it by using destroy_walls to reach and destroy the heart.
	
IF_ACTION_POINT(17,PLAYER0)
	IF(PLAYER_GOOD,DUNGEON_DESTROYED == 0)
		PLAY_MESSAGE(PLAYER0,SOUND,"SFXCharge.WAV")
		ZOOM_TO_LOCATION(PLAYER0,17)
		SET_TIMER(PLAYER_GOOD,TIMER2)
		REVEAL_MAP_RECT(PLAYER0,272,379,20,20)
	ENDIF
ENDIF
	
IF(PLAYER_GOOD,FLAG4 <= 20)
	IF(PLAYER_GOOD,TIMER2 > 25)
		PLAY_MESSAGE(PLAYER0,SOUND,"SFXGetEm.WAV")
		NEXT_COMMAND_REUSABLE
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,DWARFA,44,1,5,100,NONE)
		NEXT_COMMAND_REUSABLE
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,DWARFA,45,1,6,100,NONE)
		NEXT_COMMAND_REUSABLE
		SET_TIMER(PLAYER_GOOD,TIMER2)
		NEXT_COMMAND_REUSABLE
		ADD_TO_FLAG(PLAYER_GOOD,FLAG4,1)
	ENDIF
	
	IF(PLAYER_GOOD,FLAG4 == 5)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,GIANT,44,1,DRAWFROM(5~7),200,NONE)
		LEVEL_UP_CREATURE(PLAYER_GOOD,DWARFA,AT_ACTION_POINT[46],DRAWFROM(1~3))
		LEVEL_UP_CREATURE(PLAYER_GOOD,ANY_CREATURE,AT_ACTION_POINT[46],DRAWFROM(1~2))
	ENDIF
	IF(PLAYER_GOOD,FLAG4 == 10)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,GIANT,45,1,DRAWFROM(5~7),200,NONE)
		LEVEL_UP_CREATURE(PLAYER_GOOD,DWARFA,AT_ACTION_POINT[46],DRAWFROM(1~3))
		LEVEL_UP_CREATURE(PLAYER_GOOD,ANY_CREATURE,AT_ACTION_POINT[46],DRAWFROM(1~2))
	ENDIF
	IF(PLAYER_GOOD,FLAG4 == 15)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,GIANT,44,1,DRAWFROM(5~7),200,NONE)
		LEVEL_UP_CREATURE(PLAYER_GOOD,DWARFA,AT_ACTION_POINT[46],DRAWFROM(1~3))
		LEVEL_UP_CREATURE(PLAYER_GOOD,ANY_CREATURE,AT_ACTION_POINT[46],DRAWFROM(1~2))
	ENDIF
	IF(PLAYER_GOOD,FLAG4 == 20)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,GIANT,45,1,DRAWFROM(5~7),200,NONE)
		LEVEL_UP_CREATURE(PLAYER_GOOD,DWARFA,AT_ACTION_POINT[46],DRAWFROM(1~3))
		LEVEL_UP_CREATURE(PLAYER_GOOD,ANY_CREATURE,AT_ACTION_POINT[46],DRAWFROM(1~2))
	ENDIF
	IF(PLAYER_GOOD,FLAG4 == 25)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,GIANT,45,1,DRAWFROM(5~7),200,NONE)
		LEVEL_UP_CREATURE(PLAYER_GOOD,DWARFA,AT_ACTION_POINT[46],DRAWFROM(1~3))
		LEVEL_UP_CREATURE(PLAYER_GOOD,ANY_CREATURE,AT_ACTION_POINT[46],DRAWFROM(1~2))
	ENDIF
	IF(PLAYER_GOOD,FLAG4 == 30)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,GIANT,44,1,DRAWFROM(5~7),200,NONE)
		LEVEL_UP_CREATURE(PLAYER_GOOD,DWARFA,AT_ACTION_POINT[46],DRAWFROM(1~3))
		LEVEL_UP_CREATURE(PLAYER_GOOD,ANY_CREATURE,AT_ACTION_POINT[46],DRAWFROM(1~2))
	ENDIF
ENDIF




	REM -- Populating areas with stationary creatures and/or randomizing their levels.
	REM -- Central-south swamp.

IF_ACTION_POINT(26,PLAYER0)
	ADD_PARTY_TO_LEVEL(PLAYER5,TOAD4,7,12)
	ADD_PARTY_TO_LEVEL(PLAYER5,TEN4,7,4)
	ADD_PARTY_TO_LEVEL(PLAYER5,DRUID6,7,1)

	IF(PLAYER3,FLAG0 <= 40)
		NEXT_COMMAND_REUSABLE
		LEVEL_UP_CREATURE(PLAYER5,ANY_CREATURE,AT_ACTION_POINT[7],1)
		NEXT_COMMAND_REUSABLE
		ADD_TO_FLAG(PLAYER3,FLAG0,1)
	ENDIF
	
	IF(PLAYER3,FLAG0 >= 36)
		ADD_CREATURE_TO_LEVEL(PLAYER5,DRUID,7,1,9,250)
		ADD_CREATURE_TO_LEVEL(PLAYER5,TENTACLE,7,1,9,0)
		ADD_CREATURE_TO_LEVEL(PLAYER5,TOAD,7,6,7,85)
	ENDIF
	
	ADD_CREATURE_TO_LEVEL(PLAYER5,TENTACLE,27,3,7,0)
	ADD_CREATURE_TO_LEVEL(PLAYER5,TOAD,27,2,9,0)
	ADD_CREATURE_TO_LEVEL(PLAYER5,TOAD,27,6,8,0)
	ADD_CREATURE_TO_LEVEL(PLAYER5,TOAD,27,4,5,0)
ENDIF

	REM -- Southern necromancer library.

ADD_PARTY_TO_LEVEL(PLAYER5,SKEL6,8,5)
ADD_PARTY_TO_LEVEL(PLAYER5,ZOM6,8,5)

IF(PLAYER3,FLAG1 <= 16)
	NEXT_COMMAND_REUSABLE
	LEVEL_UP_CREATURE(PLAYER5,ANY_CREATURE,AT_ACTION_POINT[8],1)
	NEXT_COMMAND_REUSABLE
	ADD_TO_FLAG(PLAYER3,FLAG1,1)
ENDIF

	REM -- Eastern cavern.

IF(PLAYER3,FLAG2 <= 26)
	NEXT_COMMAND_REUSABLE
	LEVEL_UP_CREATURE(PLAYER5,ANY_CREATURE,AT_ACTION_POINT[14],1)
	NEXT_COMMAND_REUSABLE
	ADD_TO_FLAG(PLAYER3,FLAG2,1)
ENDIF

	REM -- South-west lava caves.

ADD_PARTY_TO_LEVEL(PLAYER5,SALA7,12,6)
ADD_PARTY_TO_LEVEL(PLAYER5,QUEEN8,13,3)
	
IF_ACTION_POINT(9,PLAYER0)
	ADD_CREATURE_TO_LEVEL(PLAYER5,BEHOLDER,28,2,8,0)
	ADD_CREATURE_TO_LEVEL(PLAYER5,HORNY,28,2,7,0)
	ADD_CREATURE_TO_LEVEL(PLAYER5,TERROR,28,8,6,666)
	ADD_CREATURE_TO_LEVEL(PLAYER5,HELL_HOUND,28,2,7,0)
ENDIF

	REM -- North-west river crossing.
	
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DORF5,29,1)
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DORF3,29,3)
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DORF5,30,1)
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DORF3,30,3)

	REM -- Crack alley.

ADD_PARTY_TO_LEVEL(PLAYER_GOOD,THIEF4,32,3)
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DORF3,32,DRAWFROM(1~2))
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,ARCH3,32,DRAWFROM(1~2))

ADD_PARTY_TO_LEVEL(PLAYER_GOOD,THIEF4,33,3)
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DORF3,33,DRAWFROM(1~2))
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,ARCH3,33,DRAWFROM(1~2))

IF(PLAYER3,FLAG5 <= 10)
	NEXT_COMMAND_REUSABLE
	LEVEL_UP_CREATURE(PLAYER_GOOD,ANY_CREATURE,AT_ACTION_POINT[32],1)
	NEXT_COMMAND_REUSABLE
	LEVEL_UP_CREATURE(PLAYER_GOOD,ANY_CREATURE,AT_ACTION_POINT[33],1)
	NEXT_COMMAND_REUSABLE
	ADD_TO_FLAG(PLAYER3,FLAG5,1)
ENDIF

	REM -- Central hero fortress barracks.

ADD_PARTY_TO_LEVEL(PLAYER_GOOD,BARB4,-8,DRAWFROM(1,2))
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,GIANT4,-8,DRAWFROM(1,2))
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,ARCH5,-8,DRAWFROM(1,2))
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,THIEF6,-8,DRAWFROM(2~4))

	REM -- North-west blue player entryway.
	
IF_AVAILABLE(PLAYER0,POWER_DESTROY_WALLS == 1)
	ADD_PARTY_TO_LEVEL(PLAYER1,FLY6,37,8)
	ADD_PARTY_TO_LEVEL(PLAYER1,TEN4,37,8)
	ADD_PARTY_TO_LEVEL(PLAYER1,QUEEN8,37,4)
	
	IF(PLAYER3,FLAG4 <= 25)
		NEXT_COMMAND_REUSABLE
		LEVEL_UP_CREATURE(PLAYER1,ANY_CREATURE,AT_ACTION_POINT[37],1)
		NEXT_COMMAND_REUSABLE
		ADD_TO_FLAG(PLAYER3,FLAG4,1)
	ENDIF
ENDIF

	REM -- North-east corner ritual site.

ADD_PARTY_TO_LEVEL(PLAYER5,LOCK9,47,1)
ADD_PARTY_TO_LEVEL(PLAYER5,SORC7,47,2)
ADD_PARTY_TO_LEVEL(PLAYER5,MIS7,47,2)
ADD_PARTY_TO_LEVEL(PLAYER5,SERV6,47,DRAWFROM(3~4))

	REM -- Blue's Hatchery

ADD_PARTY_TO_LEVEL(PLAYER1,NECRO9,48,1)
ADD_PARTY_TO_LEVEL(PLAYER1,NECRO7,48,2)




	REM -- Populate south-eastern castle and surrounds only after player is capable of entering it; Reduces creatures on map, necessary to improve framerate/performance.

IF_AVAILABLE(PLAYER0,POWER_DESTROY_WALLS == 1)
	CHANGE_SLAB_TYPE(85,123,PRETTY_PATH)
	PLACE_DOOR(PLAYER_GOOD,STEEL,85,123,LOCKED,FREE)

	REM -- Gem Cave.
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,CRONE,18,3,10,350)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,FAIRY,18,6,8,200)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,FAIRY,18,2,9,250)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,WITCH,18,2,9,250)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,WITCH,18,2,8,200)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,BIRD,18,6,10,0)
	
	REM -- Training/Hatchery.
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,GIANT,19,2,10,400)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,EXECUTIONER,19,2,10,400)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,BARBARIAN,19,4,9,250)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,BARBARIAN,19,4,8,225)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,SERVANT,19,4,9,250)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,SERVANT,19,4,8,225)
	
	REM -- Temple.
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,WITCH,20,2,10,300)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,VESTAL,20,4,10,300)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,MONK,20,6,10,300)
	
	REM -- Lair/Workshop.
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,KNIGHT,21,4,10,400)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,EXECUTIONER,21,3,10,400)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,BLACK_KNIGHT,21,3,10,400)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,WIZARD,21,4,10,300)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,TIME_MAGE,21,1,10,300)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,ASSASSIN,21,6,10,200)
	
	REM -- Antechamber.
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,REAPER,22,2,10,800)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,WARLOCK,22,5,10,300)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,HORNY,22,5,10,500)
ENDIF

	REM -- South hero fortress, entrance causeway.

IF_ACTION_POINT(25,PLAYER0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,THIEF6,15,4)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,THIEF6,16,4)

	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DORF5,15,2)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DORF5,16,2)

	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,ARCH5,15,2)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,ARCH5,16,2)

	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,FAE4,15,2)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,FAE4,16,2)

	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DRAWFROM(BARB4,GIANT4),15,2)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DRAWFROM(BARB4,GIANT4),16,2)

	IF(PLAYER3,FLAG3 <= 15)
		NEXT_COMMAND_REUSABLE
		LEVEL_UP_CREATURE(PLAYER_GOOD,ANY_CREATURE,AT_ACTION_POINT[15],1)
		NEXT_COMMAND_REUSABLE
		LEVEL_UP_CREATURE(PLAYER_GOOD,ANY_CREATURE,AT_ACTION_POINT[16],1)
		NEXT_COMMAND_REUSABLE
		ADD_TO_FLAG(PLAYER3,FLAG3,1)
	ENDIF
ENDIF

	REM -- Eastern Workshop.
IF_ACTION_POINT(24,PLAYER0)
	ADD_CREATURE_TO_LEVEL(PLAYER5,BILE_DEMON,23,2,10,300)
	ADD_CREATURE_TO_LEVEL(PLAYER5,TROLL,23,3,10,125)
ENDIF




	REM -- Assorted minor scripts spread across the map.


	REM -- Drop skeletons outside south bile-demon house. Reveals the traps and suggests the skeletons sometimes attack them.
IF_ACTION_POINT(10,PLAYER0)
	ADD_CREATURE_TO_LEVEL(PLAYER6,SKELETON,11,4,1,0)
ENDIF


	REM -- Kill dark mistress when player gets close to digging through.
IF_ACTION_POINT(31,PLAYER0)
	KILL_CREATURE(PLAYER6,DARK_MISTRESS,AT_ACTION_POINT[31],1)
ENDIF


	REM -- Unlock bridge.
SET_BOX_TOOLTIP_ID(2,50)
IF(PLAYER0,BOX2_ACTIVATED == 1)
	PLAY_MESSAGE(PLAYER0,SPEECH,80)
	ROOM_AVAILABLE(PLAYER0,BRIDGE,1,1)
	TUTORIAL_FLASH_BUTTON(18,0)
ENDIF

	REM -- Custom box, SW corner. Battle Rush.
SET_BOX_TOOLTIP_ID(0,49)
IF(PLAYER0,BOX0_ACTIVATED == 1)
	PLAY_MESSAGE(PLAYER0,SOUND,"SFXKrolm.WAV")
	USE_SPELL_ON_PLAYERS_CREATURES(PLAYER0,ANY_CREATURE,SPELL_SPEED,10)
ENDIF


	REM -- Reward player for killing cultists in north-east corner.
NEXT_COMMAND_REUSABLE
COUNT_CREATURES_AT_ACTION_POINT(39,PLAYER5,ANY_CREATURE,PLAYER3,FLAG6)
IF(PLAYER0,GAME_TURN > 500)
	IF(PLAYER3,FLAG6 == 0)
		ZOOM_TO_LOCATION(PLAYER0,47)
		ADD_CREATURE_TO_LEVEL(PLAYER0,HORNY,38,1,7,500,NONE)
		ADD_CREATURE_TO_LEVEL(PLAYER0,SALAMANDER,38,2,8,300,NONE)
		PLAY_MESSAGE(PLAYER0,SPEECH,66)
		REVEAL_MAP_RECT(PLAYER0,343,19,26,36)
	ENDIF
ENDIF


	REM -- Make sure player can't fuck themselves by deleting mission critical bridges before being able to build them.
IF_SLAB_OWNER(49,25,PLAYER0)
	CHANGE_SLAB_OWNER(48,23,PLAYER0)
	CHANGE_SLAB_OWNER(46,25,PLAYER0)
	CHANGE_SLAB_OWNER(51,26,PLAYER0)
	CHANGE_SLAB_OWNER(49,28,PLAYER0)
ENDIF
IF_SLAB_OWNER(40,6,PLAYER0)
	CHANGE_SLAB_TYPE(36,13,PATH)
	CHANGE_SLAB_TYPE(37,13,PATH)
	CHANGE_SLAB_TYPE(36,14,PATH)
ENDIF


	REM -- Custom box, both central libraries. Panacea.
SET_BOX_TOOLTIP_ID(1,48)
IF(PLAYER0,BOX1_ACTIVATED == 1)
	NEXT_COMMAND_REUSABLE
	PLAY_MESSAGE(PLAYER0,SPEECH,80)
	NEXT_COMMAND_REUSABLE
	SET_GAME_RULE(DISEASETRANSFERPERCENTAGE,0)
	NEXT_COMMAND_REUSABLE
	SET_TIMER(PLAYER1,TIMER1)
	NEXT_COMMAND_REUSABLE
	SET_FLAG(PLAYER0,BOX1_ACTIVATED,0)
ENDIF
IF(PLAYER1,TIMER1 > 500)
	NEXT_COMMAND_REUSABLE
	SET_GAME_RULE(DISEASETRANSFERPERCENTAGE,15)
ENDIF


	REM -- Point player toward Destroy_Walls if they haven't already gotten it when reaching Blue.
IF_SLAB_TYPE(79,43,PRETTY_PATH)
	SET_FLAG(PLAYER1,FLAG0,1)
ENDIF
IF_SLAB_TYPE(79,47,PRETTY_PATH)
	SET_FLAG(PLAYER1,FLAG0,1)
ENDIF

IF_ACTION_POINT(36,PLAYER0)
	IF(PLAYER1,FLAG0 == 0)
		SET_FLAG(PLAYER1,FLAG0,1)
		SET_TIMER(PLAYER1,TIMER0)
		ZOOM_TO_LOCATION(PLAYER0,36)
	ENDIF
ENDIF
IF(PLAYER1,TIMER0 > 80)
	ZOOM_TO_LOCATION(PLAYER0,34)
	REVEAL_MAP_LOCATION(PLAYER0,34,-1)
ENDIF




	REM -- Final battle and win condition.

IF_SLAB_TYPE(84,93,PATH)
	CHANGE_SLAB_TYPE(84,93,LAVA,MATCH)
ENDIF
IF_SLAB_TYPE(84,93,LAVA)
	IF(PLAYER_GOOD,AVATAR == 0)
		SET_TIMER(PLAYER2,TIMER0)
	ENDIF
ENDIF


IF(PLAYER2,TIMER0 > 250)
	IF(PLAYER2,FLAG0 == 0)
		NEXT_COMMAND_REUSABLE
		ZOOM_TO_LOCATION(PLAYER0,52)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,FINAL_AVATAR1,-10,1)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,FINAL_HEROES,-10,1)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DRAWFROM(BONKBROS_BIG,KNIFEWIFE_BIG,HOUNDSMAN_BIG,CHOPPAH_BIG,YOINK_BIG),-10,1)
		SET_FLAG(PLAYER2,FLAG0,1)
	ENDIF
ENDIF
IF(PLAYER2,TIMER0 > 300)
	IF(PLAYER2,FLAG0 == 1)
		NEXT_COMMAND_REUSABLE
		ZOOM_TO_LOCATION(PLAYER0,-10)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,FINAL_AVATAR2,-11,1)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,FINAL_NEWGUYS,-11,1)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DRAWFROM(BONKBROS_BIG,KNIFEWIFE_BIG,HOUNDSMAN_BIG,CHOPPAH_BIG,YOINK_BIG),-11,1)
		PLAY_MESSAGE(PLAYER0,SPEECH,121)
		SET_FLAG(PLAYER2,FLAG0,2)
	ENDIF
ENDIF
IF(PLAYER2,TIMER0 > 375)
	IF(PLAYER2,FLAG0 == 2)
		NEXT_COMMAND_REUSABLE
		ZOOM_TO_LOCATION(PLAYER0,-11)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,FINAL_AVATAR1,-12,1)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,FINAL_HEROES,-12,1)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DRAWFROM(BONKBROS_BIG,KNIFEWIFE_BIG,HOUNDSMAN_BIG,CHOPPAH_BIG,YOINK_BIG),-12,1)
		PLAY_MESSAGE(PLAYER0,SPEECH,120)
		SET_FLAG(PLAYER2,FLAG0,3)
	ENDIF
ENDIF
IF(PLAYER2,TIMER0 > 450)
	IF(PLAYER2,FLAG0 == 3)
		NEXT_COMMAND_REUSABLE
		ZOOM_TO_LOCATION(PLAYER0,-12)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,FINAL_AVATAR3,-13,1)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,FINAL_NEWGUYS,-13,1)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DRAWFROM(BONKBROS_BIG,KNIFEWIFE_BIG,HOUNDSMAN_BIG,CHOPPAH_BIG,YOINK_BIG),-13,1)
		PLAY_MESSAGE(PLAYER0,SPEECH,119)
		SET_FLAG(PLAYER2,FLAG0,4)
	ENDIF
ENDIF
IF(PLAYER2,TIMER0 > 525)
	IF(PLAYER2,FLAG0 == 4)
		NEXT_COMMAND_REUSABLE
		ZOOM_TO_LOCATION(PLAYER0,-13)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DRAWFROM(FINAL_AVATAR1,FINAL_AVATAR2,FINAL_AVATAR3),-14,1)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DRAWFROM(FINAL_HEROES,FINAL_NEWGUYS),-14,1)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DRAWFROM(BONKBROS_BIG,KNIFEWIFE_BIG,HOUNDSMAN_BIG,CHOPPAH_BIG,YOINK_BIG),-14,1)
		PLAY_MESSAGE(PLAYER0,SPEECH,122)
		SET_FLAG(PLAYER2,FLAG0,5)
	ENDIF
ENDIF
IF(PLAYER2,TIMER0 > 600)
	IF(PLAYER2,FLAG0 == 5)
		NEXT_COMMAND_REUSABLE
		ZOOM_TO_LOCATION(PLAYER0,-14)
		PLAY_MESSAGE(PLAYER0,SPEECH,124)
		SET_FLAG(PLAYER2,FLAG0,6)
	ENDIF
ENDIF


IF(PLAYER_GOOD,DUNGEON_DESTROYED == 1)
	IF_CONTROLS(PLAYER_GOOD,AVATAR == 0)
		IF(PLAYER2,FLAG0 == 6)
			SET_TIMER(PLAYER2,TIMER1)
			
			IF(PLAYER2,TIMER1 > 300)
				IF(PLAYER0,ACTIVE_BATTLES == 0)
					WIN_GAME
				ENDIF
			ENDIF
		ENDIF
	ENDIF
ENDIF




	REM -- Wildlife lair existence check.

REM 	PLAYER_GOOD,FLAG7 sequentially passes through each lair, counting the individual tiles and adding them to their respective PLAYER4,FLAG.
REM 	We increment PLAYER_GOOD,FLAG7 with each pass so lairs do not count themselves more than once per cycle.
REM 	At the end of the cycle, controlled by PLAYER5,TIMER0, we check the flags for each lair.
REM		Any lair with less than a few tiles remaining is 'destroyed', and the respective flag is set to 50, stopping further creature spawns.
REM		Any lair with more than a few tiles resets its flag back to 0, and a new cycle begins.

IF(PLAYER0,GAME_TURN > 300)
	SET_TIMER(PLAYER5,TIMER0)
ENDIF

IF(PLAYER5,TIMER0 > 100)
	IF(PLAYER4,FLAG0 <= 3)
		SET_FLAG(PLAYER4,FLAG0,50)
	ENDIF
	IF(PLAYER4,FLAG0 >= 5)
		IF(PLAYER4,FLAG0 != 50)
			NEXT_COMMAND_REUSABLE
			SET_FLAG(PLAYER4,FLAG0,0)
		ENDIF
	ENDIF
	
	IF(PLAYER4,FLAG1 <= 3)
		SET_FLAG(PLAYER4,FLAG1,50)
	ENDIF
	IF(PLAYER4,FLAG1 != 50)
		IF(PLAYER4,FLAG1 >= 4)
			NEXT_COMMAND_REUSABLE
			SET_FLAG(PLAYER4,FLAG1,0)
		ENDIF
	ENDIF

	IF(PLAYER4,FLAG2 <= 3)
		SET_FLAG(PLAYER4,FLAG2,50)
	ENDIF
	IF(PLAYER4,FLAG2 != 50)
		IF(PLAYER4,FLAG2 >= 4)
			NEXT_COMMAND_REUSABLE
			SET_FLAG(PLAYER4,FLAG2,0)
		ENDIF
	ENDIF
	
	IF(PLAYER4,FLAG3 <= 3)
		SET_FLAG(PLAYER4,FLAG3,50)
	ENDIF
	IF(PLAYER4,FLAG3 != 50)
		IF(PLAYER4,FLAG3 >= 4)
			NEXT_COMMAND_REUSABLE
			SET_FLAG(PLAYER4,FLAG3,0)
		ENDIF
	ENDIF
	
	IF(PLAYER4,FLAG4 <= 3)
		SET_FLAG(PLAYER4,FLAG4,50)
	ENDIF
	IF(PLAYER4,FLAG4 != 50)
		IF(PLAYER4,FLAG4 >= 4)
			NEXT_COMMAND_REUSABLE
			SET_FLAG(PLAYER4,FLAG4,0)
		ENDIF
	ENDIF
	
	IF(PLAYER4,FLAG5 <= 3)
		SET_FLAG(PLAYER4,FLAG5,50)
	ENDIF
	IF(PLAYER4,FLAG5 != 50)
		IF(PLAYER4,FLAG5 >= 4)
			NEXT_COMMAND_REUSABLE
			SET_FLAG(PLAYER4,FLAG5,0)
		ENDIF
	ENDIF
	
	
	IF(PLAYER5,TIMER0 > 100)
		NEXT_COMMAND_REUSABLE
		SET_FLAG(PLAYER_GOOD,FLAG7,0)
		NEXT_COMMAND_REUSABLE
		SET_TIMER(PLAYER5,TIMER0)
	ENDIF
	
ENDIF


	REM CENTRE-NORTH BUG LAIR, AP1

IF(PLAYER_GOOD,FLAG7 == 0)
	IF(PLAYER4,FLAG0 != 50)
		IF_SLAB_OWNER(61,2,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG0,1)
		ENDIF
		IF_SLAB_OWNER(62,2,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG0,1)
		ENDIF
		IF_SLAB_OWNER(60,3,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG0,1)
		ENDIF
		IF_SLAB_OWNER(61,3,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG0,1)
		ENDIF
		IF_SLAB_OWNER(62,3,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG0,1)
		ENDIF
		IF_SLAB_OWNER(63,3,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG0,1)
		ENDIF
		IF_SLAB_OWNER(60,4,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG0,1)
		ENDIF
		IF_SLAB_OWNER(61,4,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG0,1)
		ENDIF
		IF_SLAB_OWNER(62,4,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG0,1)
		ENDIF
		IF_SLAB_OWNER(61,5,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG0,1)
		ENDIF
		IF_SLAB_OWNER(62,5,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG0,1)
		ENDIF
	ENDIF
	
	IF(PLAYER_GOOD,FLAG3 == 0)
		IF(PLAYER_GOOD,FLAG7 == 0)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER_GOOD,FLAG7,1)
		ENDIF
	ENDIF
ENDIF


	REM -- CENTRE-NORTH FLY/TENTACLE LAIR, AP2

IF(PLAYER_GOOD,FLAG7 == 1)
	IF(PLAYER4,FLAG1 != 50)
		IF_SLAB_OWNER(62,27,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG1,1)
		ENDIF
		IF_SLAB_OWNER(63,27,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG1,1)
		ENDIF
		IF_SLAB_OWNER(61,28,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG1,1)
		ENDIF
		IF_SLAB_OWNER(62,28,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG1,1)
		ENDIF
		IF_SLAB_OWNER(63,28,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG1,1)
		ENDIF
		IF_SLAB_OWNER(64,28,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG1,1)
		ENDIF
		IF_SLAB_OWNER(62,29,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG1,1)
		ENDIF
		IF_SLAB_OWNER(63,29,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG1,1)
		ENDIF
		IF_SLAB_OWNER(64,29,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG1,1)
		ENDIF
	ENDIF
	
	IF(PLAYER_GOOD,FLAG3 == 0)
		IF(PLAYER_GOOD,FLAG7 == 1)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER_GOOD,FLAG7,1)
		ENDIF
	ENDIF
ENDIF


	REM -- NORTH-EAST TENTACLE LAIR, AP3

IF(PLAYER_GOOD,FLAG7 == 2)
	IF(PLAYER4,FLAG2 != 50)
		IF_SLAB_OWNER(95,36,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG2,1)
		ENDIF
		IF_SLAB_OWNER(94,37,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG2,1)
		ENDIF
		IF_SLAB_OWNER(95,37,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG2,1)
		ENDIF
		IF_SLAB_OWNER(96,37,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG2,1)
		ENDIF
		IF_SLAB_OWNER(93,38,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG2,1)
		ENDIF
		IF_SLAB_OWNER(94,38,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG2,1)
		ENDIF
		IF_SLAB_OWNER(95,38,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG2,1)
		ENDIF
		IF_SLAB_OWNER(96,38,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG2,1)
		ENDIF
		IF_SLAB_OWNER(94,39,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG2,1)
		ENDIF
		IF_SLAB_OWNER(95,39,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG2,1)
		ENDIF
	ENDIF
	
	IF(PLAYER_GOOD,FLAG3 == 0)
		IF(PLAYER_GOOD,FLAG7 == 2)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER_GOOD,FLAG7,1)
		ENDIF
	ENDIF
ENDIF


	REM -- EAST FLY/TENTACLE LAIR, AP4

IF(PLAYER_GOOD,FLAG7 == 3)
	IF(PLAYER4,FLAG3 != 50)
		IF_SLAB_OWNER(91,51,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG3,1)
		ENDIF
		IF_SLAB_OWNER(90,52,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG3,1)
		ENDIF
		IF_SLAB_OWNER(91,52,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG3,1)
		ENDIF
		IF_SLAB_OWNER(90,53,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG3,1)
		ENDIF
		IF_SLAB_OWNER(91,53,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG3,1)
		ENDIF
		IF_SLAB_OWNER(92,53,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG3,1)
		ENDIF
		IF_SLAB_OWNER(89,54,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG3,1)
		ENDIF
		IF_SLAB_OWNER(90,54,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG3,1)
		ENDIF
		IF_SLAB_OWNER(91,54,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG3,1)
		ENDIF
		IF_SLAB_OWNER(92,54,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG3,1)
		ENDIF
		IF_SLAB_OWNER(88,55,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG3,1)
		ENDIF
		IF_SLAB_OWNER(89,55,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG3,1)
		ENDIF
		IF_SLAB_OWNER(90,55,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG3,1)
		ENDIF
		IF_SLAB_OWNER(91,55,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG3,1)
		ENDIF
		IF_SLAB_OWNER(89,56,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG3,1)
		ENDIF
		IF_SLAB_OWNER(90,56,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG3,1)
		ENDIF
	ENDIF
	
	IF(PLAYER_GOOD,FLAG3 == 0)
		IF(PLAYER_GOOD,FLAG7 == 3)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER_GOOD,FLAG7,1)
		ENDIF
	ENDIF
ENDIF


	REM -- CENTRE-WEST FLY/TENTACLE LAIR, AP5

IF(PLAYER_GOOD,FLAG7 == 4)
	IF(PLAYER4,FLAG4 != 50)
		IF_SLAB_OWNER(38,72,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG4,1)
		ENDIF
		IF_SLAB_OWNER(37,73,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG4,1)
		ENDIF
		IF_SLAB_OWNER(38,73,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG4,1)
		ENDIF
		IF_SLAB_OWNER(36,74,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG4,1)
		ENDIF
		IF_SLAB_OWNER(37,74,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG4,1)
		ENDIF
		IF_SLAB_OWNER(38,74,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG4,1)
		ENDIF
		IF_SLAB_OWNER(39,74,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG4,1)
		ENDIF
		IF_SLAB_OWNER(37,75,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG4,1)
		ENDIF
		IF_SLAB_OWNER(38,75,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG4,1)
		ENDIF
		IF_SLAB_OWNER(39,75,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG4,1)
		ENDIF
		IF_SLAB_OWNER(38,76,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG4,1)
		ENDIF
	ENDIF
	
	IF(PLAYER_GOOD,FLAG3 == 0)
		IF(PLAYER_GOOD,FLAG7 == 4)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER_GOOD,FLAG7,1)
		ENDIF
	ENDIF
ENDIF


	REM -- SOUTH-WEST FLY/TENTACLE LAIR, AP6

IF(PLAYER_GOOD,FLAG7 == 5)
	IF(PLAYER4,FLAG5 != 50)
		IF_SLAB_OWNER(36,91,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG5,1)
		ENDIF
		IF_SLAB_OWNER(35,92,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG5,1)
		ENDIF
		IF_SLAB_OWNER(36,92,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG5,1)
		ENDIF
		IF_SLAB_OWNER(37,92,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG5,1)
		ENDIF
		IF_SLAB_OWNER(39,92,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG5,1)
		ENDIF
		IF_SLAB_OWNER(36,93,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG5,1)
		ENDIF
		IF_SLAB_OWNER(37,93,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG5,1)
		ENDIF
		IF_SLAB_OWNER(38,93,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG5,1)
		ENDIF
		IF_SLAB_OWNER(39,93,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG5,1)
		ENDIF
		IF_SLAB_OWNER(37,94,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG5,1)
		ENDIF
		IF_SLAB_OWNER(38,94,PLAYER5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER4,FLAG5,1)
		ENDIF
	ENDIF
	
	IF(PLAYER_GOOD,FLAG3 == 0)
		IF(PLAYER_GOOD,FLAG7 == 5)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER_GOOD,FLAG7,1)
		ENDIF
	ENDIF
ENDIF



	REM -- Wildlife creature spawning.

HIDE_HERO_GATE(-1,1)
HIDE_HERO_GATE(-2,1)
HIDE_HERO_GATE(-3,1)
HIDE_HERO_GATE(-4,1)
HIDE_HERO_GATE(-5,1)
HIDE_HERO_GATE(-6,1)

ADD_PARTY_TO_LEVEL(PLAYER5,MAID5,-1,DRAWFROM(1~2))
ADD_PARTY_TO_LEVEL(PLAYER5,FLY6,-2,DRAWFROM(2~4))
ADD_PARTY_TO_LEVEL(PLAYER5,TEN4,-2,DRAWFROM(1~2))
ADD_PARTY_TO_LEVEL(PLAYER5,TEN4,-3,DRAWFROM(3~5))
ADD_PARTY_TO_LEVEL(PLAYER5,FLY6,-4,DRAWFROM(3~4))
ADD_PARTY_TO_LEVEL(PLAYER5,TEN4,-4,DRAWFROM(3~4))
ADD_PARTY_TO_LEVEL(PLAYER5,FLY6,-5,DRAWFROM(3~7))
ADD_PARTY_TO_LEVEL(PLAYER5,TEN4,-5,DRAWFROM(1~3))
ADD_PARTY_TO_LEVEL(PLAYER5,FLY6,-6,DRAWFROM(1~3))
ADD_PARTY_TO_LEVEL(PLAYER5,TEN4,-6,DRAWFROM(4~6))

SET_TIMER(PLAYER_GOOD,TIMER0)
SET_TIMER(PLAYER_GOOD,TIMER1)

IF(PLAYER_GOOD,TIMER0 > 12000)
	IF(PLAYER4,FLAG0 != 50)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER5,MAID5,-1,1)
	ENDIF
	IF(PLAYER4,FLAG1 != 50)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER5,FLY6,-2,2)
	ENDIF
	IF(PLAYER4,FLAG2 != 50)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER5,TEN4,-3,1)
	ENDIF
	IF(PLAYER4,FLAG3 != 50)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER5,TEN4,-4,1)
	ENDIF
	IF(PLAYER4,FLAG4 != 50)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER5,FLY6,-5,1)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER5,TEN4,-5,1)
	ENDIF
	IF(PLAYER4,FLAG5 != 50)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER5,TEN4,-6,2)
	ENDIF
	IF(PLAYER_GOOD,FLAG6 == 0)
		NEXT_COMMAND_REUSABLE
		SET_TIMER(PLAYER_GOOD,TIMER0)
	ENDIF
ENDIF



	REM -- Wildlife creature levelling.

IF(PLAYER_GOOD,TIMER1 > 2500)
	IF(PLAYER5,FLAG7 == 0)
		NEXT_COMMAND_REUSABLE
		COMPUTE_FLAG(PLAYER5,FLAG7,INCREASE,PLAYER5,FLY,1)
		NEXT_COMMAND_REUSABLE
		COMPUTE_FLAG(PLAYER5,FLAG7,INCREASE,PLAYER5,TENTACLE,1)
	ENDIF
	IF(PLAYER5,FLAG7 > 30)
		NEXT_COMMAND_REUSABLE
		LEVEL_UP_CREATURE(PLAYER5,FLY,ANYWHERE,2)
		NEXT_COMMAND_REUSABLE
		LEVEL_UP_CREATURE(PLAYER5,FLY,ANYWHERE,1)
		NEXT_COMMAND_REUSABLE
		LEVEL_UP_CREATURE(PLAYER5,TENTACLE,ANYWHERE,1)
	ENDIF
	IF(PLAYER5,FLAG7 > 40)
		NEXT_COMMAND_REUSABLE
		LEVEL_UP_CREATURE(PLAYER5,FLY,ANYWHERE,2)
		NEXT_COMMAND_REUSABLE
		LEVEL_UP_CREATURE(PLAYER5,FLY,ANYWHERE,1)
		NEXT_COMMAND_REUSABLE
		LEVEL_UP_CREATURE(PLAYER5,TENTACLE,ANYWHERE,1)
	ENDIF
	IF(PLAYER5,FLAG7 > 50)
		NEXT_COMMAND_REUSABLE
		LEVEL_UP_CREATURE(PLAYER5,FLY,ANYWHERE,2)
		NEXT_COMMAND_REUSABLE
		LEVEL_UP_CREATURE(PLAYER5,FLY,ANYWHERE,1)
		NEXT_COMMAND_REUSABLE
		LEVEL_UP_CREATURE(PLAYER5,TENTACLE,ANYWHERE,1)
	ENDIF
	IF(PLAYER5,FLAG7 > 60)
		NEXT_COMMAND_REUSABLE
		LEVEL_UP_CREATURE(PLAYER5,FLY,ANYWHERE,2)
		NEXT_COMMAND_REUSABLE
		LEVEL_UP_CREATURE(PLAYER5,FLY,ANYWHERE,1)
		NEXT_COMMAND_REUSABLE
		LEVEL_UP_CREATURE(PLAYER5,TENTACLE,ANYWHERE,1)
	ENDIF
	IF(PLAYER_GOOD,FLAG6 == 0)
		NEXT_COMMAND_REUSABLE
		SET_TIMER(PLAYER_GOOD,TIMER1)
		NEXT_COMMAND_REUSABLE
		SET_FLAG(PLAYER5,FLAG7,0)
	ENDIF
ENDIF



	REM -- An over abundance of wildlife turns into periodic harass parties.
	REM -- Once a quantity near a lair grows large enough, convert to player4 and attack.

NEXT_COMMAND_REUSABLE
COUNT_CREATURES_AT_ACTION_POINT(1,PLAYER5,MAIDEN,PLAYER5,FLAG0)
IF(PLAYER5,FLAG0 >= 3)
	NEXT_COMMAND_REUSABLE
	CHANGE_CREATURE_OWNER(PLAYER5,MAIDEN,AT_ACTION_POINT[1],PLAYER4)
ENDIF

NEXT_COMMAND_REUSABLE
COUNT_CREATURES_AT_ACTION_POINT(2,PLAYER5,ANY_CREATURE,PLAYER5,FLAG1)
IF(PLAYER5,FLAG1 >= 12)
	NEXT_COMMAND_REUSABLE
	CHANGE_CREATURE_OWNER(PLAYER5,ANY_CREATURE,AT_ACTION_POINT[2],PLAYER4)
ENDIF
	
NEXT_COMMAND_REUSABLE
COUNT_CREATURES_AT_ACTION_POINT(3,PLAYER5,ANY_CREATURE,PLAYER5,FLAG2)
IF(PLAYER5,FLAG2 >= 14)
	NEXT_COMMAND_REUSABLE
	CHANGE_CREATURE_OWNER(PLAYER5,ANY_CREATURE,AT_ACTION_POINT[3],PLAYER4)
ENDIF
	
NEXT_COMMAND_REUSABLE
COUNT_CREATURES_AT_ACTION_POINT(4,PLAYER5,ANY_CREATURE,PLAYER5,FLAG3)
IF(PLAYER5,FLAG3 >= 14)
	NEXT_COMMAND_REUSABLE
	CHANGE_CREATURE_OWNER(PLAYER5,ANY_CREATURE,AT_ACTION_POINT[4],PLAYER4)
ENDIF

NEXT_COMMAND_REUSABLE
COUNT_CREATURES_AT_ACTION_POINT(5,PLAYER5,ANY_CREATURE,PLAYER5,FLAG4)
IF(PLAYER5,FLAG4 >= 14)
	NEXT_COMMAND_REUSABLE
	CHANGE_CREATURE_OWNER(PLAYER5,ANY_CREATURE,AT_ACTION_POINT[5],PLAYER4)
ENDIF

NEXT_COMMAND_REUSABLE
COUNT_CREATURES_AT_ACTION_POINT(6,PLAYER5,ANY_CREATURE,PLAYER5,FLAG5)
IF(PLAYER5,FLAG4 >= 14)
	NEXT_COMMAND_REUSABLE
	CHANGE_CREATURE_OWNER(PLAYER5,ANY_CREATURE,AT_ACTION_POINT[6],PLAYER4)
ENDIF







REM -- Known issues.

REM -- Populating the map only when the player is nearby skews Steal_Hero specials. A necessary sacrifice to improve overall framerate and performance.
REM -- I -should- do further optimizations because it did seem to slow down a bit in the mid-game, but I can't be fucking bothered ;).
REM -- During level intro, player can see that they have an Imp when it's supposed to look like a floating spirit. They can also see that they're green coloured, so could assume the heart is theirs.
REM -- Creatures in the far bottom-left lava caves have trouble figuring out how to pathfind to the player, often causing them to slowly trickle out one at a time.







