REM ********************************************
REM Room-destroyers
REM ********************************************
REM Heroes:
REM Thiefs - only spawn
REM Dwarfs, archers, Barbarians, Giants
REM Monks, Wizards, Witches, Fairy, Samurai.
LEVEL_VERSION(1)

SET_GENERATE_SPEED(500)

MAX_CREATURES(PLAYER0,12)
START_MONEY(PLAYER0,10000)

REM Creature pools are mid-sized. In the end, you have an option to discard 25 of 55 creatures
REM A worthwhile idea is to trai spiders/bugs to get Mistresses level 6... if not for Warlocks being more vital.
ADD_CREATURE_TO_POOL(FLY,5)
ADD_CREATURE_TO_POOL(BUG,5)
ADD_CREATURE_TO_POOL(SPIDER,5)
ADD_CREATURE_TO_POOL(DEMONSPAWN,5)
ADD_CREATURE_TO_POOL(TROLL,5)
ADD_CREATURE_TO_POOL(SORCEROR,5)
ADD_CREATURE_TO_POOL(BILE_DEMON,5)
ADD_CREATURE_TO_POOL(DARK_MISTRESS,5)
ADD_CREATURE_TO_POOL(HELL_HOUND,5)
ADD_CREATURE_TO_POOL(DRAGON,5)
ADD_CREATURE_TO_POOL(ORC,5)
REM Vampires are not attracted from portal... but then again, capturing graveyard is bad idea because it limits your time.
CREATURE_AVAILABLE(PLAYER0,FLY,1,0)
CREATURE_AVAILABLE(PLAYER0,BUG,1,0)
CREATURE_AVAILABLE(PLAYER0,SPIDER,1,0)
CREATURE_AVAILABLE(PLAYER0,DEMONSPAWN,1,0)
CREATURE_AVAILABLE(PLAYER0,TROLL,1,0)
CREATURE_AVAILABLE(PLAYER0,SORCEROR,1,0)
CREATURE_AVAILABLE(PLAYER0,BILE_DEMON,1,0)
CREATURE_AVAILABLE(PLAYER0,DARK_MISTRESS,1,0)
CREATURE_AVAILABLE(PLAYER0,HELL_HOUND,1,0)
CREATURE_AVAILABLE(PLAYER0,DRAGON,1,0)
CREATURE_AVAILABLE(PLAYER0,ORC,1,0)
REM Room permissions: guardpost. Yep. That's all.
REM Capturing enough tiles unlocks research. So don't ignore attackers, and... use alarm traps to be safe?
    ROOM_AVAILABLE(PLAYER0,GUARD_POST,1,1)

REM All non-offensive spells
    MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SLAP,1,1)
    MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HAND,1,1)
    MAGIC_AVAILABLE(ALL_PLAYERS,POWER_POSSESS,1,1)
    MAGIC_AVAILABLE(ALL_PLAYERS,POWER_IMP,1,1)
    MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SIGHT,1,0)
    MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CALL_TO_ARMS,1,0)
    MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SPEED,1,0)
    MAGIC_AVAILABLE(ALL_PLAYERS,POWER_PROTECT,1,0)
    MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CONCEAL,1,0)
    MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HEAL_CREATURE,1,0)
    MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HOLD_AUDIENCE,1,0)
    MAGIC_AVAILABLE(ALL_PLAYERS,POWER_DISEASE,1,0)
    MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CHICKEN,1,0)
    MAGIC_AVAILABLE(ALL_PLAYERS,POWER_OBEY,1,0)

REM All doors, non-boulder/lava traps (to avoid lava cheese and boulders killing anything)
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)

REM Thiefs start attacking once workshop is captured.
REM Small parties start attacking on 3rd payday, every 3/4 payday
REM Temple, barracks, graveyard and scavenge depend on those rooms.
REM Big parties start attacking once 21 creatures count achieved, once per payday (total 20ish attackers)
REM Attack sequence is such: barracks/temple, graveyard/scavenge. The attackers alternate; timer sets flag to 1 or 3, which reset to 2 or 4 after spawn.
REM NO witches.
REM The final avatar/2 knight parties spawn a set time after game-breaking event (20000) or when Hero Heart is breached, along with their own tunnellers, making player suffer.
REM Game-breaking are Graveyard, or buildable Torture+Prison+Lair.
CREATE_PARTY(WAVE_STEAL)
CREATE_PARTY(WAVE_SPELL)
CREATE_PARTY(WAVE_FIRST)

CREATE_PARTY(WAVE_FEY_SML)
CREATE_PARTY(WAVE_FEY_BIG)

CREATE_PARTY(WAVE_TEMPLE_SML)
CREATE_PARTY(WAVE_TEMPLE_BIG)
CREATE_PARTY(WAVE_BARRACKS_SML)
CREATE_PARTY(WAVE_BARRACKS_BIG)
CREATE_PARTY(WAVE_GRAVEYARD_SML)
CREATE_PARTY(WAVE_GRAVEYARD_BIG)

CREATE_PARTY(WAVE_AVATAR)
CREATE_PARTY(WAVE_LORDS)
CREATE_PARTY(WAVE_FINAL)

REM A first thief heads for treasury

ADD_TO_PARTY(WAVE_STEAL,THIEF,7,0,STEAL_GOLD,200)
ADD_TO_PARTY(WAVE_STEAL,THIEF,7,0,STEAL_SPELLS,200)

ADD_TO_PARTY(WAVE_SPELL,FAIRY,7,0,STEAL_SPELLS,200)
ADD_TO_PARTY(WAVE_SPELL,THIEF,7,0,STEAL_GOLD,200)

ADD_TO_PARTY(WAVE_FIRST,THIEF,2,0,ATTACK_ENEMIES,200)
ADD_TO_PARTY(WAVE_FIRST,DWARFA,2,0,ATTACK_ENEMIES,200)

ADD_TO_PARTY(WAVE_FEY_SML,ARCHER,4,0,ATTACK_ROOMS,200)
ADD_TO_PARTY(WAVE_FEY_SML,FAIRY,3,0,STEAL_SPELLS,200)
ADD_TO_PARTY(WAVE_FEY_SML,DWARFA,2,0,ATTACK_ROOMS,200)
ADD_TO_PARTY(WAVE_FEY_SML,DWARFA,2,0,ATTACK_ROOMS,200)

ADD_TO_PARTY(WAVE_FEY_BIG,DWARFA,8,0,ATTACK_ROOMS,200)
ADD_TO_PARTY(WAVE_FEY_BIG,DWARFA,8,0,ATTACK_ROOMS,200)
ADD_TO_PARTY(WAVE_FEY_BIG,DWARFA,8,0,ATTACK_ROOMS,200)
ADD_TO_PARTY(WAVE_FEY_BIG,DWARFA,8,0,ATTACK_ROOMS,200)
ADD_TO_PARTY(WAVE_FEY_BIG,FAIRY,7,200,STEAL_SPELLS,200)
ADD_TO_PARTY(WAVE_FEY_BIG,ARCHER,6,0,ATTACK_ROOMS,200)
ADD_TO_PARTY(WAVE_FEY_BIG,ARCHER,6,0,ATTACK_ROOMS,200)

ADD_TO_PARTY(WAVE_TEMPLE_SML,MONK,3,0,ATTACK_DUNGEON_HEART,200)
ADD_TO_PARTY(WAVE_TEMPLE_SML,MONK,3,0,ATTACK_DUNGEON_HEART,200)
ADD_TO_PARTY(WAVE_TEMPLE_SML,SAMURAI,2,0,ATTACK_DUNGEON_HEART,200)
ADD_TO_PARTY(WAVE_TEMPLE_SML,WIZARD,2,0,STEAL_SPELLS,200)

ADD_TO_PARTY(WAVE_TEMPLE_BIG,MONK,7,0,ATTACK_DUNGEON_HEART,200)
ADD_TO_PARTY(WAVE_TEMPLE_BIG,MONK,7,0,ATTACK_DUNGEON_HEART,200)
ADD_TO_PARTY(WAVE_TEMPLE_BIG,MONK,7,0,ATTACK_DUNGEON_HEART,200)
ADD_TO_PARTY(WAVE_TEMPLE_BIG,SAMURAI,6,0,ATTACK_DUNGEON_HEART,200)
ADD_TO_PARTY(WAVE_TEMPLE_BIG,SAMURAI,6,0,ATTACK_DUNGEON_HEART,200)
ADD_TO_PARTY(WAVE_TEMPLE_BIG,WIZARD,6,200,STEAL_SPELLS,200)

ADD_TO_PARTY(WAVE_BARRACKS_SML,BARBARIAN,2,0,ATTACK_ENEMIES,200)
ADD_TO_PARTY(WAVE_BARRACKS_SML,BARBARIAN,2,0,ATTACK_ENEMIES,200)
ADD_TO_PARTY(WAVE_BARRACKS_SML,GIANT,1,0,ATTACK_ROOMS,200)
ADD_TO_PARTY(WAVE_BARRACKS_SML,ARCHER,2,0,ATTACK_ROOMS,200)

ADD_TO_PARTY(WAVE_BARRACKS_BIG,BARBARIAN,7,0,ATTACK_ENEMIES,200)
ADD_TO_PARTY(WAVE_BARRACKS_BIG,BARBARIAN,7,0,ATTACK_ENEMIES,200)
ADD_TO_PARTY(WAVE_BARRACKS_BIG,BARBARIAN,7,0,ATTACK_ENEMIES,200)
ADD_TO_PARTY(WAVE_BARRACKS_BIG,BARBARIAN,7,0,ATTACK_ENEMIES,200)
ADD_TO_PARTY(WAVE_BARRACKS_BIG,GIANT,6,200,ATTACK_ROOMS,200)
ADD_TO_PARTY(WAVE_BARRACKS_BIG,ARCHER,6,0,ATTACK_ROOMS,200)

ADD_TO_PARTY(WAVE_GRAVEYARD_SML,GHOST,4,0,STEAL_SPELLS,200)
ADD_TO_PARTY(WAVE_GRAVEYARD_SML,WITCH,3,0,STEAL_SPELLS,200)
ADD_TO_PARTY(WAVE_GRAVEYARD_SML,SKELETON,2,0,STEAL_SPELLS,200)
ADD_TO_PARTY(WAVE_GRAVEYARD_SML,SKELETON,2,0,STEAL_SPELLS,200)

ADD_TO_PARTY(WAVE_GRAVEYARD_BIG,WITCH,9,200,STEAL_SPELLS,200)
ADD_TO_PARTY(WAVE_GRAVEYARD_BIG,GHOST,8,0,STEAL_SPELLS,200)
ADD_TO_PARTY(WAVE_GRAVEYARD_BIG,SKELETON,7,0,ATTACK_ROOMS,200)
ADD_TO_PARTY(WAVE_GRAVEYARD_BIG,SKELETON,7,0,ATTACK_ROOMS,200)
ADD_TO_PARTY(WAVE_GRAVEYARD_BIG,SKELETON,7,0,ATTACK_ROOMS,200)
ADD_TO_PARTY(WAVE_GRAVEYARD_BIG,SKELETON,7,0,ATTACK_ROOMS,200)

ADD_TO_PARTY(WAVE_AVATAR,AVATAR,10,1000,ATTACK_DUNGEON_HEART,200)
ADD_TO_PARTY(WAVE_AVATAR,WIZARD,10,0,ATTACK_DUNGEON_HEART,200)
ADD_TO_PARTY(WAVE_AVATAR,WIZARD,10,0,ATTACK_DUNGEON_HEART,200)
ADD_TO_PARTY(WAVE_AVATAR,MONK,10,0,ATTACK_DUNGEON_HEART,200)
ADD_TO_PARTY(WAVE_AVATAR,MONK,10,0,ATTACK_DUNGEON_HEART,200)
ADD_TO_PARTY(WAVE_AVATAR,FAIRY,10,0,ATTACK_DUNGEON_HEART,200)
ADD_TO_PARTY(WAVE_AVATAR,FAIRY,10,0,ATTACK_DUNGEON_HEART,200)

ADD_TO_PARTY(WAVE_LORDS,KNIGHT,10,500,ATTACK_DUNGEON_HEART,200)
ADD_TO_PARTY(WAVE_LORDS,SAMURAI,9,0,ATTACK_DUNGEON_HEART,200)
ADD_TO_PARTY(WAVE_LORDS,SAMURAI,9,0,ATTACK_DUNGEON_HEART,200)
ADD_TO_PARTY(WAVE_LORDS,SAMURAI,9,0,ATTACK_DUNGEON_HEART,200)
ADD_TO_PARTY(WAVE_LORDS,WIZARD,9,0,ATTACK_DUNGEON_HEART,200)
ADD_TO_PARTY(WAVE_LORDS,ARCHER,9,0,ATTACK_DUNGEON_HEART,200)

ADD_TO_PARTY(WAVE_FINAL,GIANT,8,200,ATTACK_ROOMS,200)
ADD_TO_PARTY(WAVE_FINAL,DWARFA,7,0,ATTACK_ROOMS,200)
ADD_TO_PARTY(WAVE_FINAL,THIEF,7,0,STEAL_GOLD,200)
ADD_TO_PARTY(WAVE_FINAL,ARCHER,8,0,ATTACK_ROOMS,200)
ADD_TO_PARTY(WAVE_FINAL,BARBARIAN,7,0,ATTACK_ROOMS,200)


REM ACtion points:
REM 1 - hero heart
REM Hero gates:
REM 1,2 - west and east trail
REM 3,4 - outer and inner dungeon heart
REM 5,6 - northeast and northwest

REM Startup
    SET_TIMER(PLAYER0,TIMER0)
    QUICK_OBJECTIVE(1,"A potent enchantment laid upon this dungeon disrupts any attempts to construct any rooms more sophisticated than Guardpost. To bypass this enchantment, you must capture and study all of the rooms within region, and then amass forces to defeat the Avatar and his heroic cronies.", PLAYER0)
REM Start stronger attacks over time.
IF(PLAYER0,TIMER0 >= 10000)
	SET_TIMER(PLAYER0,TIMER1)
ENDIF
IF(PLAYER0,TIMER0 >= 30000)
	SET_FLAG(PLAYER_GOOD,FLAG2,1)
	SET_TIMER(PLAYER0,TIMER2)
ENDIF
IF(PLAYER0,TIMER0 >= 50000)
	SET_FLAG(PLAYER_GOOD,FLAG3,1)
	SET_TIMER(PLAYER0,TIMER3)
ENDIF

REM Basic thief attack timer. The spawn spot is random, but constant over the course of game so you can put two Lightning Traps and forget of them.
IF(PLAYER0,TIMER1 >= 5000)
REM Start more attacks if flag 0 is tripped - time or second entrance.
	QUICK_INFORMATION(2,"Your rich treasures have attracted attention of first heroes, Thieves's Guild in particular, and they will never forget their way towards your dungeon as long as Avatar protects their lives.", PLAYER0)
	ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,WAVE_FIRST,-3,DUNGEON,0,1,0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WAVE_FEY_BIG,3,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WAVE_FEY_BIG,4,1)
	NEXT_COMMAND_REUSABLE
	SET_TIMER(PLAYER0,TIMER1)
	NEXT_COMMAND_REUSABLE
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WAVE_STEAL,DRAWFROM(-1,-2,-3),1)
ENDIF

REM Second attack timer - weak parties
IF(PLAYER0,TIMER2 >= 7500)
	IF(PLAYER_GOOD,FLAG2 == 1)
		NEXT_COMMAND_REUSABLE
		SET_FLAG(PLAYER_GOOD,FLAG2,2)
	ENDIF
	IF(PLAYER_GOOD,FLAG2 == 3)
		NEXT_COMMAND_REUSABLE
		SET_FLAG(PLAYER_GOOD,FLAG2,4)
	ENDIF
	NEXT_COMMAND_REUSABLE
	SET_TIMER(PLAYER0,TIMER2)
ENDIF

IF(PLAYER_GOOD,FLAG2 == 2)
	QUICK_INFORMATION(7,"More of the righteous heroes are headed towards your dungeon. They are gathering near the two largest outposts in the central part of the region.", PLAYER0)
	NEXT_COMMAND_REUSABLE
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WAVE_SPELL,DRAWFROM(-1,-2,-3),1)
	ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,WAVE_GRAVEYARD_SML,-1,DUNGEON,0,4,0)
	IF(PLAYER_GOOD, TEMPLE>=1)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WAVE_TEMPLE_SML,-6,1)
	ENDIF
	IF(PLAYER_GOOD, BARRACKS>=1)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WAVE_BARRACKS_SML,-5,1)
	ENDIF
	NEXT_COMMAND_REUSABLE
	SET_FLAG(PLAYER_GOOD,FLAG2,3)
ENDIF

IF(PLAYER_GOOD,FLAG2 == 4)
	QUICK_INFORMATION(8,"Yet more heroes have arrived to destroy you, keeper. The witches seems to be crowding at the Graveyard, while fairies and dwarves gather at the Scavenger Room.", PLAYER0)
	ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,WAVE_FEY_SML,-2,DUNGEON,0,4,0)
	NEXT_COMMAND_REUSABLE
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WAVE_STEAL,DRAWFROM(-1,-2,-3),1)
	IF(PLAYER1, SCAVENGER>=1)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WAVE_FEY_SML,-2,1)
	ENDIF
	IF(PLAYER1, GRAVEYARD>=1)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WAVE_GRAVEYARD_SML,-1,1)
	ENDIF
	NEXT_COMMAND_REUSABLE
	SET_FLAG(PLAYER_GOOD,FLAG2,1)
ENDIF


REM Third attack timer - strong parties
IF(PLAYER0,TIMER3 >= 10000)
	QUICK_INFORMATION(9,"The most powerful heroes have moved out to destroy your dungeon, keeper. If you haven't yet captured their outposts in this land, their attacks will only intensify.", PLAYER0)
	ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,WAVE_BARRACKS_SML,-5,DUNGEON,0,4,0)
	ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,WAVE_TEMPLE_SML,-6,DUNGEON,0,4,0)
	NEXT_COMMAND_REUSABLE
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WAVE_SPELL,DRAWFROM(-1,-2,-3,-5,-6),1)
	IF(PLAYER_GOOD,FLAG3 == 1)
		NEXT_COMMAND_REUSABLE
		SET_FLAG(PLAYER_GOOD,FLAG3,2)
	ENDIF
	IF(PLAYER_GOOD,FLAG3 == 3)
		NEXT_COMMAND_REUSABLE
		SET_FLAG(PLAYER_GOOD,FLAG3,4)
	ENDIF
	NEXT_COMMAND_REUSABLE
	SET_TIMER(PLAYER0,TIMER3)
ENDIF

IF(PLAYER_GOOD,FLAG3 == 2)
	NEXT_COMMAND_REUSABLE
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WAVE_STEAL,DRAWFROM(-1,-2,-3,-5,-6),1)
	NEXT_COMMAND_REUSABLE
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WAVE_FEY_SML,-3,1)
	IF(PLAYER_GOOD, TEMPLE>=1)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WAVE_TEMPLE_BIG,-6,1)
	ENDIF
	IF(PLAYER_GOOD, BARRACKS>=1)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WAVE_BARRACKS_BIG,-5,1)
	ENDIF
	NEXT_COMMAND_REUSABLE
	SET_FLAG(PLAYER_GOOD,FLAG3,3)
ENDIF

IF(PLAYER_GOOD,FLAG3 == 4)
	NEXT_COMMAND_REUSABLE
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WAVE_STEAL,DRAWFROM(-1,-2,-3,-5,-6),1)
	NEXT_COMMAND_REUSABLE
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WAVE_FEY_BIG,-3,1)
	IF(PLAYER1, SCAVENGER>=1)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WAVE_FEY_BIG,-2,1)
	ENDIF
	IF(PLAYER1, GRAVEYARD>=1)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WAVE_GRAVEYARD_BIG,-1,1)
	ENDIF
	NEXT_COMMAND_REUSABLE
	SET_FLAG(PLAYER_GOOD,FLAG3,1)
ENDIF

REM Avatar attack, 2.4 paydays = 1200 seconds, 20 minutes
IF(PLAYER_GOOD,TIMER4 >= 12000)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WAVE_FINAL,-4,1)
	QUICK_INFORMATION(5,"The spies from surface world report that Avatar has already recruited fifteen strongest heroes of this realm - three of his most trusted Knights and nine Samurai. Forewarned is forearmed, keeper.", PLAYER0)
ENDIF

IF(PLAYER_GOOD,TIMER4 >= 24000)
	SET_FLAG(PLAYER_GOOD,FLAG4,1)
ENDIF

REM Do take notes of handful as your army size limit
IF(PLAYER_GOOD,FLAG1 >= 1)
	QUICK_OBJECTIVE(3,"Beware, keeper - the Avatar has arrived, to oversee his heroes preparing for a counterattack. It might be wise to not make yourself a threat ahead of time, limiting the size of your army to five handfuls. You must thoroughly prepare those forces for the Avatar's arrival, and then destroy any remaining heroes in the region.", PLAYER0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WAVE_STEAL,-4,4)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WAVE_AVATAR,-4,1)
	SET_TIMER(PLAYER_GOOD,TIMER4)
ENDIF

IF(PLAYER_GOOD,FLAG4 >= 1)
	QUICK_INFORMATION(4,"The Avatar himself have moved out, alarmed by your thorough cruelty and rapid increase in strength! Inspired by his arrival, many more lesser heroes have emerged from hiding.", PLAYER0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WAVE_FINAL,-3,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WAVE_FINAL,-5,2)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WAVE_FINAL,-6,2)
	ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,WAVE_LORDS,-4,DUNGEON,0,9,0)
	ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,WAVE_LORDS,-4,DUNGEON,0,9,0)
	ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,WAVE_LORDS,-4,DUNGEON_HEART,0,9,0)
ENDIF

IF(PLAYER0,ENTRANCE >= 10)
	MAX_CREATURES(PLAYER0,18)
	IF(PLAYER0,ENTRANCE >= 20)
		MAX_CREATURES(PLAYER0,24)
	ENDIF
ENDIF

IF(PLAYER1,TREASURE <= 0)
    ROOM_AVAILABLE(PLAYER0,TREASURE,1,0)
ENDIF
IF(PLAYER1,LAIR <= 0)
    ROOM_AVAILABLE(PLAYER0,LAIR,1,0)
ENDIF
IF(PLAYER1,GARDEN <= 0)
    ROOM_AVAILABLE(PLAYER0,GARDEN,1,0)
ENDIF
IF(PLAYER1,TRAINING <= 0)
    ROOM_AVAILABLE(PLAYER0,TRAINING,1,0)
ENDIF
IF(PLAYER1,RESEARCH <= 0)
	ROOM_AVAILABLE(PLAYER0,RESEARCH,1,0)
	MAGIC_AVAILABLE(ALL_PLAYERS,POWER_DESTROY_WALLS,1,0)
ENDIF
REM Send Avatar forth if: gems are mined, Destroy Walls researched, creatures converted
IF_ACTION_POINT(2,PLAYER0)
	SET_FLAG(PLAYER_GOOD,FLAG1,1)
ENDIF
REM Send Avatar forth.
IF_AVAILABLE(PLAYER0,POWER_DESTROY_WALLS >= 1)
	SET_FLAG(PLAYER_GOOD,FLAG1,1)
ENDIF
IF(PLAYER0,VAMPIRE >= 8)
	SET_FLAG(PLAYER_GOOD,FLAG1,1)
	SET_FLAG(PLAYER_GOOD,FLAG4,1)
ENDIF
IF(PLAYER0,TOTAL_CREATURES >= 32)
	SET_FLAG(PLAYER_GOOD,FLAG1,1)
REM Immediately attack if player is getting stronger through converting or breaks into Dungeon Heart
REM In short: use traps instead.
	IF(PLAYER0,TOTAL_CREATURES > 40)
		SET_FLAG(PLAYER_GOOD,FLAG4,1)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WAVE_FINAL,-1,1)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WAVE_FINAL,-2,1)
	ENDIF
ENDIF
IF_ACTION_POINT(1,PLAYER0)
	SET_FLAG(PLAYER_GOOD,FLAG1,1)
	SET_FLAG(PLAYER_GOOD,FLAG4,1)
ENDIF
IF(PLAYER1,WORKSHOP <= 0)
    ROOM_AVAILABLE(PLAYER0,WORKSHOP,1,0)
ENDIF
IF(PLAYER1,PRISON <= 0)
    ROOM_AVAILABLE(PLAYER0,PRISON,1,0)
ENDIF
IF(PLAYER1,TORTURE <= 0)
    ROOM_AVAILABLE(PLAYER0,TORTURE,1,0)
ENDIF
IF(PLAYER1,BARRACKS <= 0)
    ROOM_AVAILABLE(PLAYER0,BARRACKS,1,0)
ENDIF
IF(PLAYER1,TEMPLE <= 0)
    ROOM_AVAILABLE(PLAYER0,TEMPLE,1,0)
ENDIF
REM Send Avatar forth.
IF(PLAYER1,GRAVEYARD <= 0)
	ROOM_AVAILABLE(PLAYER0,GRAVEYARD,1,0)
	SET_FLAG(PLAYER_GOOD,FLAG1,1)
ENDIF
REM Send Avatar forth
IF(PLAYER1,SCAVENGER <= 0)
	ROOM_AVAILABLE(PLAYER0,SCAVENGER,1,0)
	SET_FLAG(PLAYER_GOOD,FLAG1,1)
ENDIF

REM Win game when all heroes and Dungeon Heart are destroyed.
IF_CONTROLS(PLAYER_GOOD,TOTAL_CREATURES <= 0)
	IF(PLAYER_GOOD,DUNGEON_DESTROYED >= 1)
	QUICK_OBJECTIVE(10,"Every single hero who once obeyed the Avatar is dead, and evil reigns supreme. Well done, keeper.", PLAYER0)
		WIN_GAME
	ENDIF
ENDIF