REM ****************************************************************************
REM  Free Play levels - KeeperFX
REM ****************************************************************************
REM  Script for Level 459 - Shackled Hand
REM  Author:  Loobinex
REM  Date:    2021-01-04
REM  Copying and copyrights:
REM    This program is free software; you can redistribute it and/or modify
REM    it under the terms of the GNU General Public License as published by
REM    the Free Software Foundation; either version 2 of the License, or
REM    (at your option) any later version.
REM ****************************************************************************

REM Player needs to play parts without the power hand, he does not know when it might happen, so he needs to design his dungeon in a way that can handle harrassing heroes.

REM Hero Gate 1 - In white mini dungeon near entrance
REM Hero Gate 2 - Far north mini dungeon
REM Hero Gate 3 - At GRAVEYARD
REM Hero Gate 4 - Above bile demon prison


LEVEL_VERSION(1)
SET_GENERATE_SPEED(700)
COMPUTER_PLAYER(PLAYER2,4)
START_MONEY(PLAYER0,10000)
START_MONEY(PLAYER2,100000)
MAX_CREATURES(PLAYER0,19)

ADD_CREATURE_TO_POOL(FLY,2)
ADD_CREATURE_TO_POOL(SPIDER,3)
ADD_CREATURE_TO_POOL(TROLL,6)
ADD_CREATURE_TO_POOL(ORC,2)
ADD_CREATURE_TO_POOL(DEMONSPAWN,4)
ADD_CREATURE_TO_POOL(SORCEROR,3)
ADD_CREATURE_TO_POOL(DARK_MISTRESS,2)
ADD_CREATURE_TO_POOL(HELL_HOUND,2)

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

ROOM_AVAILABLE(PLAYER0,TREASURE,1,1)
ROOM_AVAILABLE(PLAYER0,LAIR,1,1)
ROOM_AVAILABLE(PLAYER0,GARDEN,1,1)
ROOM_AVAILABLE(PLAYER0,TRAINING,1,1)
ROOM_AVAILABLE(PLAYER0,GUARD_POST,4,0)
ROOM_AVAILABLE(PLAYER0,BARRACKS,4,0)
ROOM_AVAILABLE(PLAYER0,TEMPLE,4,0)
ROOM_AVAILABLE(PLAYER0,PRISON,4,0)
ROOM_AVAILABLE(PLAYER0,WORKSHOP,4,0)
ROOM_AVAILABLE(PLAYER0,RESEARCH,4,0)

ROOM_AVAILABLE(PLAYER0,SCAVENGER,0,0)
ROOM_AVAILABLE(PLAYER0,GRAVEYARD,0,0)
ROOM_AVAILABLE(PLAYER0,BRIDGE,0,0)

IF(PLAYER0,DARK_MISTRESS >= 1)
	ROOM_AVAILABLE(PLAYER0,TORTURE,2,0)
ENDIF

MAGIC_AVAILABLE(PLAYER0,POWER_IMP,1,1)
IF(PLAYER0,RESEARCH >= 1)
	MAGIC_AVAILABLE(PLAYER0,POWER_SIGHT,1,0)
	MAGIC_AVAILABLE(PLAYER0,POWER_CALL_TO_ARMS,1,0)
	MAGIC_AVAILABLE(PLAYER0,POWER_PROTECT,1,0)
	MAGIC_AVAILABLE(PLAYER0,POWER_CONCEAL,1,0)
ENDIF
MAGIC_AVAILABLE(PLAYER0,POWER_SPEED,0,0)

IF(PLAYER0,WORKSHOP >= 1)
	DOOR_AVAILABLE(PLAYER0,WOOD,1,0)
	DOOR_AVAILABLE(PLAYER0,BRACED,1,0)
	DOOR_AVAILABLE(PLAYER0,STEEL,1,0)
ENDIF
IF_SLAB_OWNER(48,73,PLAYER0)
	TRAP_AVAILABLE(PLAYER0,ALARM,1,0)
	TRAP_AVAILABLE(PLAYER0,POISON_GAS,1,0)
	IF(PLAYER0,TOTAL_TRAPS_MANUFACTURED > 20)
		TRAP_AVAILABLE(PLAYER0,LIGHTNING,1,0)
	ENDIF
	IF(PLAYER0,TOTAL_TRAPS_MANUFACTURED > 40)
		TRAP_AVAILABLE(PLAYER0,WORD_OF_POWER,1,0)
	ENDIF
ENDIF

REM ****************************************************************************
REM Custom Rules
REM ****************************************************************************

REM Dragons can only be gotten from Demon Spawn, so extra buff to make it worth your while.
SET_CREATURE_ARMOUR(DRAGON,160)
SET_CREATURE_HEALTH(DRAGON,1200)

REM You can't get too much stuff from your powerful rooms.
SET_GAME_RULE(PrisonSkeletonChance,30)
SET_GAME_RULE(GhostConvertChance,80)
SET_GAME_RULE(TortureDeathChance,40)
SET_GAME_RULE(TortureConvertChance,80)
SET_GAME_RULE(StunEvilEnemyChance,40)
SET_GAME_RULE(StunGoodEnemyChance,20)

REM Player may get a few vampires quickly, but not too many.
SET_CREATURE_PROPERTY(IMP,NO_CORPSE_ROTTING,1)
IF(PLAYER0,VAMPIRE >= 4)
	NEXT_COMMAND_REUSABLE
	SET_GAME_RULE(BodiesForVampire,45)
ENDIF
IF(PLAYER0,VAMPIRE <= 2)
	NEXT_COMMAND_REUSABLE
	SET_GAME_RULE(BodiesForVampire,7)
ENDIF

REM Wizards on the map means you can't use your hand. They glow to indicate their special significance.
SET_CREATURE_PROPERTY(WIZARD,ILLUMINATED,1)
SET_CREATURE_PROPERTY(WIZARD,NO_CORPSE_ROTTING,1)
SET_CREATURE_PROPERTY(WIZARD,NO_IMPRISONMENT,1)
SET_CREATURE_CONFIGURATION(WIZARD,CorpseVanishEffect,24)

IF_CONTROLS(PLAYER_GOOD,WIZARD <= 0)
	NEXT_COMMAND_REUSABLE
	MAGIC_AVAILABLE(PLAYER0,POWER_HAND,1,1)
ENDIF
IF_CONTROLS(PLAYER_GOOD,WIZARD > 0)
	NEXT_COMMAND_REUSABLE
	MAGIC_AVAILABLE(PLAYER0,POWER_HAND,0,0)
	SET_TIMER(PLAYER0,TIMER6)
	IF(PLAYER0,TIMER6 > 60)
		NEXT_COMMAND_REUSABLE
		CREATE_EFFECT(47,PLAYER0)
		NEXT_COMMAND_REUSABLE
		PLAY_MESSAGE(PLAYER0,SOUND,874)
		NEXT_COMMAND_REUSABLE
		SET_TIMER(PLAYER0,TIMER6)
	ENDIF
ENDIF

REM This land is rules by Wizards.
SET_CREATURE_PROPERTY(KNIGHT,LORD,0)

REM Change poison trap into fireball trap
SET_TRAP_CONFIGURATION(POISON_GAS,Model,TRAP_PEACH)
SET_TRAP_CONFIGURATION(POISON_GAS,Shots,22)
SET_TRAP_CONFIGURATION(POISON_GAS,TimeBetweenShots,45)
SET_TRAP_CONFIGURATION(POISON_GAS,TriggerType,3)
SET_TRAP_CONFIGURATION(POISON_GAS,ActivationType,5)
SET_TRAP_CONFIGURATION(POISON_GAS,EffectType,1)
SET_TRAP_CONFIGURATION(POISON_GAS,SymbolSprites,521,402)
SET_TRAP_CONFIGURATION(POISON_GAS,PointerSprites,158)
SET_TRAP_CONFIGURATION(POISON_GAS,NameTextID,984)
SET_TRAP_CONFIGURATION(POISON_GAS,TooltipTextID,984)

REM ****************************************************************************
REM Hero Parties
REM ****************************************************************************

CREATE_PARTY(start)
	ADD_TO_PARTY(start,THIEF,3,93,STEAL_GOLD,0)
	ADD_TO_PARTY(start,THIEF,2,112,STEAL_GOLD,0)

CREATE_PARTY(intro)
	ADD_TO_PARTY(intro,WIZARD,4,410,ATTACK_ENEMIES,1000)
	ADD_TO_PARTY(intro,BARBARIAN,3,110,ATTACK_ENEMIES,1000)
	ADD_TO_PARTY(intro,BARBARIAN,4,163,ATTACK_ENEMIES,1000)
	ADD_TO_PARTY(intro,BARBARIAN,3,309,ATTACK_ENEMIES,1000)

CREATE_PARTY(raiders)
	ADD_TO_PARTY(raiders,DWARFA,5,0,ATTACK_ROOMS,0)
	ADD_TO_PARTY(raiders,THIEF,4,0,STEAL_GOLD,0)
	ADD_TO_PARTY(raiders,FAIRY,4,0,STEAL_SPELLS,0)
	ADD_TO_PARTY(raiders,DWARFA,4,0,DEFEND_PARTY,0)

CREATE_PARTY(conservatives)
	ADD_TO_PARTY(conservatives,MONK,6,0,STEAL_SPELLS,0)
	ADD_TO_PARTY(conservatives,WITCH,4,0,STEAL_SPELLS,0)
	ADD_TO_PARTY(conservatives,FAIRY,3,0,STEAL_SPELLS,0)

CREATE_PARTY(progressives)
	ADD_TO_PARTY(progressives,THIEF,6,0,STEAL_GOLD,0)
	ADD_TO_PARTY(progressives,BARBARIAN,4,0,STEAL_GOLD,0)
	ADD_TO_PARTY(progressives,DWARFA,3,0,STEAL_GOLD,0)
	
CREATE_PARTY(anarchists)
	ADD_TO_PARTY(anarchists,GIANT,5,0,ATTACK_ROOMS,0)
	ADD_TO_PARTY(anarchists,ARCHER,6,0,DEFEND_PARTY,0)
	ADD_TO_PARTY(anarchists,SAMURAI,3,0,ATTACK_ROOMS,0)

CREATE_PARTY(magic)
	ADD_TO_PARTY(magic,WIZARD,6,410,STEAL_SPELLS,1000)
	ADD_TO_PARTY(magic,WITCH,5,110,ATTACK_ENEMIES,1000)
	ADD_TO_PARTY(magic,FAIRY,5,163,ATTACK_ENEMIES,1000)
	ADD_TO_PARTY(magic,FAIRY,3,309,ATTACK_ENEMIES,1000)

CREATE_PARTY(defenders)
	ADD_TO_PARTY(defenders,MONK,10,0,DEFEND_ROOMS,0)
	ADD_TO_PARTY(defenders,MONK,7,0,DEFEND_ROOMS,0)
	ADD_TO_PARTY(defenders,WITCH,8,0,DEFEND_ROOMS,0)
	ADD_TO_PARTY(defenders,MONK,8,0,DEFEND_ROOMS,0)
	ADD_TO_PARTY(defenders,DWARFA,6,0,DEFEND_ROOMS,0)
	ADD_TO_PARTY(defenders,DWARFA,5,0,DEFEND_ROOMS,0)
	ADD_TO_PARTY(defenders,FAIRY,7,0,DEFEND_ROOMS,0)

CREATE_PARTY(brutes)
	ADD_TO_PARTY(brutes,GIANT,10,0,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(brutes,DWARFA,9,0,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(brutes,DWARFA,9,0,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(brutes,ARCHER,8,0,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(brutes,THIEF,8,0,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(brutes,THIEF,7,0,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(brutes,FAIRY,7,0,ATTACK_ENEMIES,0)

CREATE_PARTY(lasthurrah)
	ADD_TO_PARTY(lasthurrah,SAMURAI,8,1000,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(lasthurrah,SAMURAI,7,1000,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(lasthurrah,SAMURAI,7,1000,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(lasthurrah,ARCHER,8,1000,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(lasthurrah,ARCHER,7,1000,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(lasthurrah,FAIRY,9,1000,DEFEND_PARTY,0)

CREATE_PARTY(archwizard)
	ADD_TO_PARTY(archwizard,WIZARD,10,2000,DEFEND_ROOMS,0)
	ADD_TO_PARTY(archwizard,KNIGHT,6,0,DEFEND_PARTY,0)
	ADD_TO_PARTY(archwizard,KNIGHT,6,0,DEFEND_PARTY,0)
	ADD_TO_PARTY(archwizard,KNIGHT,5,0,DEFEND_PARTY,0)
	ADD_TO_PARTY(archwizard,KNIGHT,5,0,DEFEND_PARTY,0)
	ADD_TO_PARTY(archwizard,WITCH,8,0,DEFEND_LOCATION,0)
	ADD_TO_PARTY(archwizard,WITCH,8,0,DEFEND_LOCATION,0)

REM ****************************************************************************
REM Level starts here
REM ****************************************************************************

QUICK_OBJECTIVE(1,"Wizards have found a way to limit your reach. Design your dungeon in such a way that it can survive without your help.",ALL_PLAYERS)

IF(PLAYER0,SACRIFICED[IMP] <= 2)
	IF(PLAYER0,IMP <= 0)
		QUICK_INFORMATION(7,"You should try to keep your imps alive. They are quite useful. They mine gold and do assorted jobs around the dungeon")
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,IMP,9,1,1,150)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,IMP,6,1,1,150)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,IMP,5,1,1,150)
	ENDIF
ENDIF

REM There's green biles in prison that auto convert to red when the prison is claimed.
IF_CONTROLS(PLAYER2,BILE_DEMON > 0)
	NEXT_COMMAND_REUSABLE
	CHANGE_CREATURE_OWNER(PLAYER2,BILE_DEMON,ANYWHERE,PLAYER0)
ENDIF

IF(PLAYER0,TOTAL_CREATURES >= 3)
	ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,start,-4,ACTION_POINT,1,2,423)
ENDIF
IF(PLAYER0,TOTAL_CREATURES > 8)
	ADD_CREATURE_TO_POOL(TENTACLE,2)
ENDIF

REM Inside the barracks up north, is a mystery box giving the player access to bridges.
IF(PLAYER0,BOX1_ACTIVATED >= 1)
	TUTORIAL_FLASH_BUTTON(18,400)
	PLAY_MESSAGE(PLAYER0,SPEECH,91)
	ROOM_AVAILABLE(PLAYER0,BRIDGE,1,1)
ENDIF

IF(PLAYER0,GUARD_POST > 15)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,TUNNELLER,-1,1,3,0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,TUNNELLER,-5,1,3,0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,TUNNELLER,-7,1,3,0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,TUNNELLER,5,1,3,0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,TUNNELLER,6,1,3,0)
ENDIF

REM First phase, wizard one assault. Ends in player getting a library.
REM ****************************************************************************
IF(PLAYER0,TOTAL_CREATURES >= 15)
	SET_FLAG(PLAYER_GOOD,FLAG1,1)
	REVEAL_MAP_LOCATION(PLAYER0,1,11)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,intro,1,1)
	ADD_TO_FLAG(PLAYER0,FLAG7,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,start,-2,2)
	QUICK_OBJECTIVE(2,"The Wizard can block your hand. Defend against their assault, or start plotting your revenge.",1)
	SET_TIMER(PLAYER0,TIMER1)
ENDIF

IF(PLAYER0,TIMER1 >= 2000)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,ARCHER,-2,2,3,150)
ENDIF
IF(PLAYER0,TIMER1 >= 4000)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,BARBARIAN,-1,3,3,175)
ENDIF
IF(PLAYER0,TIMER1 >= 6000)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,DWARFA,-2,10,1,50)
ENDIF
IF(PLAYER0,TIMER1 >= 8000) 
	CHANGE_SLAB_TYPE(12,62,PRETTY_PATH)
	CHANGE_SLAB_OWNER(13,62,PLAYER_GOOD)
	CHANGE_SLAB_TYPE(14,62,BRIDGE_FRAME)
	CHANGE_SLAB_OWNER(14,62,PLAYER_GOOD)
	ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,start,2,ACTION_POINT,3,4,663)
	REM Release the Wizard party, so that when killed the player gets his hand back
	CHANGE_SLAB_TYPE(41,3,PRETTY_PATH)
	SET_DOOR(UNLOCKED,39,4)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,defenders,1,1)
ENDIF

IF(PLAYER_GOOD,FLAG1 == 1)
	IF_CONTROLS(PLAYER_GOOD,WIZARD == 0)
		QUICK_INFORMATION(3,"That was fun, let's do it again sometimes.")
		SET_FLAG(PLAYER_GOOD,FLAG1,2)
		SET_TIMER(PLAYER_GOOD,TIMER1)
	ENDIF
ENDIF

REM Second phase, recovery, then wizard two assault.
REM ****************************************************************************

IF(PLAYER_GOOD,TIMER1 > 600)
	QUICK_OBJECTIVE(4,"More heroes will surely come. Add their biological distinctiveness to your own. Just hope the Wizards sit this one out.")
	ADD_TO_TIMER(PLAYER_GOOD,TIMER1,1500)
ENDIF

IF(PLAYER_GOOD,FLAG1 == 2)
	IF(PLAYER_GOOD,TIMER1 > 4000)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,raiders,-2,1)
		NEXT_COMMAND_REUSABLE
		ADD_TO_FLAG(PLAYER_GOOD,FLAG2,1)
		NEXT_COMMAND_REUSABLE
		SET_TIMER(PLAYER_GOOD,TIMER1)
	ENDIF
ENDIF

IF(PLAYER_GOOD,FLAG2 == 2)
	ADD_TO_PARTY(raiders,GIANT,6,0,ATTACK_ENEMIES,0)
	RESET_ACTION_POINT(4)
ENDIF

IF(PLAYER_GOOD,FLAG2 == 3)
	DELETE_FROM_PARTY(raiders,GIANT,6)
	IF_ACTION_POINT(8,PLAYER0)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,progressives,6,1)
		ADD_TO_FLAG(PLAYER0,FLAG2,1)
	ENDIF
		IF_ACTION_POINT(7,PLAYER0)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,progressives,5,1)
		ADD_TO_FLAG(PLAYER0,FLAG2,1)
	ENDIF
	IF(PLAYER0,FLAG2 > 0)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,conservatives,9,1)
		NEXT_COMMAND_REUSABLE
		ADD_TO_FLAG(PLAYER0,FLAG2,-1)
	ENDIF
ENDIF

IF(PLAYER_GOOD,FLAG2 >= 4)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,magic,-2,1)
	ADD_TO_FLAG(PLAYER0,FLAG7,1)
	QUICK_OBJECTIVE(5,"Great zombie Gandalf, something tickles. Lets go scratch that itch.")
	IF_ACTION_POINT(4,PLAYER0)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,MONK,-2,3,5,500)
	ENDIF
	IF(PLAYER_GOOD,TIMER1 > 200)
		IF_CONTROLS(PLAYER_GOOD,WIZARD <= 0)
			SET_FLAG(PLAYER_GOOD,FLAG1,3)
			SET_TIMER(PLAYER_GOOD,TIMER2)
		ENDIF
	ENDIF
ENDIF

REM Third phase, the coven. Wizard come and go, until all libraries are taken.
REM ****************************************************************************

IF(PLAYER_GOOD,TIMER2 >= 300)
	QUICK_OBJECTIVE(6,"What does a blue wizard even do? I think we just have to sit and wait.")
ENDIF

REM The magic party has a wizard. It stops the hand.
IF(PLAYER_GOOD,FLAG1 == 3)
	IF(PLAYER_GOOD,TIMER2 > 2400)
		NEXT_COMMAND_REUSABLE
		ADD_TO_FLAG(PLAYER_GOOD,FLAG3,1)
		NEXT_COMMAND_REUSABLE
		RANDOMISE_FLAG(PLAYER0,FLAG2,3)
		IF(PLAYER0,FLAG2 == 1)
			NEXT_COMMAND_REUSABLE
			ADD_PARTY_TO_LEVEL(PLAYER_GOOD,start,-2,2)
			NEXT_COMMAND_REUSABLE
			SET_TIMER(PLAYER_GOOD,TIMER2)
		ENDIF
		IF(PLAYER0,FLAG2 == 2)
			NEXT_COMMAND_REUSABLE
			ADD_PARTY_TO_LEVEL(PLAYER_GOOD,magic,-2,1)
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER0,FLAG7,1)
			NEXT_COMMAND_REUSABLE
			SET_TIMER(PLAYER_GOOD,TIMER2)
		ENDIF
		IF(PLAYER0,FLAG2 == 3)
			NEXT_COMMAND_REUSABLE
			ADD_PARTY_TO_LEVEL(PLAYER_GOOD,anarchists,6,1)
			IF(PLAYER_GOOD,FLAG3 >= 15)
				NEXT_COMMAND_REUSABLE
				ADD_TO_FLAG(PLAYER0,FLAG7,1)
			ENDIF
			NEXT_COMMAND_REUSABLE
			SET_TIMER(PLAYER_GOOD,TIMER2)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER_GOOD,FLAG3 >= 3)
	ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,magic,-5,ACTION_POINT,2,5,500)
	ADD_TO_FLAG(PLAYER0,FLAG7,1)
ENDIF
IF(PLAYER_GOOD,FLAG3 >= 6)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,ARCHER,5,4,4,100)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,ARCHER,6,4,4,100)
	IF(PLAYER2,WORKSHOP > 1)
		QUICK_INFORMATION(8,"It's not easy being green. Go make red splashes.",PLAYER2)
	ENDIF
ENDIF
IF(PLAYER_GOOD,FLAG3 >= 7)
	ADD_TO_FLAG(PLAYER0,FLAG7,1)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,WIZARD,6,1,6,250)
ENDIF
IF(PLAYER_GOOD,FLAG3 >= 8)
	ADD_TO_PARTY(start,THIEF,6,100,STEAL_GOLD,0)
	ADD_TO_PARTY(start,THIEF,5,100,STEAL_GOLD,0)
	DELETE_FROM_PARTY(start,THIEF,2)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,SAMURAI,-2,1,8,600)
ENDIF
IF(PLAYER_GOOD,FLAG3 >= 9)
	IF_SLAB_OWNER(67,47,PLAYER_GOOD)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,WIZARD,10,1,8,800)
		ADD_TO_FLAG(PLAYER0,FLAG7,1)
		ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,raiders,3,DUNGEON,0,4,250)
	ENDIF
	IF_SLAB_OWNER(67,47,PLAYER0)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,WIZARD,9,1,8,800)
		ADD_TO_FLAG(PLAYER0,FLAG7,1)
	ENDIF
ENDIF
IF(PLAYER_GOOD,FLAG3 == 10)
	IF(PLAYER0,FLAG7 > 2)
		QUICK_OBJECTIVE(12,"There seems to be no end to the magic these Wizards posses. Cut them off from their magic, take all their libraries from them.")
	ENDIF
ENDIF
IF(PLAYER_GOOD,FLAG3 >= 11)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,GIANT,-7,5,6,300)
ENDIF
IF(PLAYER_GOOD,FLAG3 >= 13)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,brutes,-7,1)
ENDIF
IF(PLAYER_GOOD,FLAG3 >= 15)
	ADD_TO_PARTY(anarchists,WIZARD,6,0,DEFEND_PARTY,0)
ENDIF
IF(PLAYER_GOOD,FLAG3 >= 17)
	ADD_TO_FLAG(PLAYER0,FLAG7,1)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,WIZARD,-2,1,7,350)
ENDIF
IF(PLAYER_GOOD,FLAG3 >= 18)
	ADD_TO_FLAG(PLAYER0,FLAG7,1)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,WIZARD,-1,1,8,350)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,SAMURAI,-1,4,5,200)
ENDIF

REM ****************************************************************************
REM Cave in script based on wizards killed. Also upgrades the wizards.
REM ****************************************************************************

IF(PLAYER_GOOD,WIZARD == 0)
	IF(PLAYER0,FLAG7 >= 1)
		USE_POWER_AT_POS(PLAYER_GOOD,109,82,POWER_CAVE_IN,9,1)
		CHANGE_SLAB_TYPE(36,27,PATH)
		PLAY_MESSAGE(PLAYER0,SOUND,DRAWFROM(72,73,74))
	ENDIF
	IF(PLAYER0,FLAG7 >= 2)
		QUICK_OBJECTIVE(10,"Our battle is shaking the earth. Be prepared to appreciate what you meet.")
		USE_POWER_AT_POS(PLAYER_GOOD,148,70,POWER_CAVE_IN,9,1)
		CHANGE_SLAB_TYPE(49,23,PATH)
		PLAY_MESSAGE(PLAYER0,SOUND,DRAWFROM(72,73,74))
	ENDIF
	IF(PLAYER0,FLAG7 >= 3)
		SET_CREATURE_INSTANCE(WIZARD,2,NAVIGATING_MISSILE, 1)
		USE_POWER_AT_POS(PLAYER_GOOD,64,228,POWER_CAVE_IN,9,1)
		USE_POWER_AT_POS(PLAYER_GOOD,154,67,POWER_CAVE_IN,9,1)
		CHANGE_SLAB_TYPE(21,76,PATH)
		PLAY_MESSAGE(PLAYER0,SOUND,DRAWFROM(72,73,74))
	ENDIF
	IF(PLAYER0,FLAG7 >= 4)
		SET_CREATURE_INSTANCE(WIZARD,3,FIRE_BOMB, 3)
		SET_CREATURE_INSTANCE(WIZARD,10,FIREBALL, 10)
		USE_POWER_AT_POS(PLAYER_GOOD,226,145,POWER_CAVE_IN,9,1)
		CHANGE_SLAB_TYPE(75,48,PATH)
		PLAY_MESSAGE(PLAYER0,SOUND,DRAWFROM(72,73,74))
	ENDIF
	IF(PLAYER0,FLAG7 >= 5)
		USE_POWER_AT_POS(PLAYER_GOOD,226,133,POWER_CAVE_IN,9,1)
		CHANGE_SLAB_TYPE(75,44,PATH)
		PLAY_MESSAGE(PLAYER0,SOUND,DRAWFROM(72,73,74))
	ENDIF
	IF(PLAYER0,FLAG7 >= 6)
		SET_CREATURE_INSTANCE(WIZARD,6,LIZARD, 6)
		USE_POWER_AT_POS(PLAYER_GOOD,202,166,POWER_CAVE_IN,9,1)
		CHANGE_SLAB_TYPE(67,55,PATH)
		USE_POWER_AT_POS(PLAYER_GOOD,142,67,POWER_CAVE_IN,9,1)
		CHANGE_SLAB_TYPE(47,22,PATH)
		PLAY_MESSAGE(PLAYER0,SOUND,DRAWFROM(72,73,74))
	ENDIF
	IF(PLAYER0,FLAG7 >= 7)
		USE_POWER_AT_POS(PLAYER_GOOD,229,130,POWER_CAVE_IN,9,1)
		CHANGE_SLAB_TYPE(76,43,PATH)
		PLAY_MESSAGE(PLAYER0,SOUND,DRAWFROM(72,73,74))
	ENDIF
	IF(PLAYER0,FLAG7 >= 8)
		SET_CREATURE_INSTANCE(WIZARD,8,LIGHTNING, 8)
		USE_POWER_AT_POS(PLAYER_GOOD,226,136,POWER_CAVE_IN,9,1)
		USE_POWER_AT_POS(PLAYER_GOOD,226,142,POWER_CAVE_IN,9,1)
		CHANGE_SLAB_TYPE(75,46,PATH,MATCH)
		PLAY_MESSAGE(PLAYER0,SOUND,DRAWFROM(72,73,74))
	ENDIF
	IF(PLAYER0,FLAG7 >= 9)
		USE_POWER_AT_POS(PLAYER_GOOD,202,196,POWER_CAVE_IN,9,1)
		CHANGE_SLAB_TYPE(67,65,PATH)
		USE_POWER_AT_POS(PLAYER_GOOD,145,64,POWER_CAVE_IN,9,1)
		CHANGE_SLAB_TYPE(48,21,PATH)
		USE_POWER_AT_POS(PLAYER_GOOD,214,79,POWER_CAVE_IN,9,1)
		CHANGE_SLAB_TYPE(71,26,PATH)
		PLAY_MESSAGE(PLAYER0,SOUND,DRAWFROM(72,73,74))
	ENDIF
	IF(PLAYER0,FLAG7 >= 10)
		USE_POWER_AT_POS(PLAYER_GOOD,229,130,POWER_CAVE_IN,9,1)
		CHANGE_SLAB_TYPE(76,43,PATH)
		USE_POWER_AT_POS(PLAYER_GOOD,31,148,POWER_CAVE_IN,9,1)
		CHANGE_SLAB_TYPE(10,49,PATH)
		PLAY_MESSAGE(PLAYER0,SOUND,DRAWFROM(72,73,74))
	ENDIF
	REM With the below cave in, the player gains access to the north-east sector
	IF(PLAYER0,FLAG7 >= 11)
		USE_POWER_AT_POS(PLAYER_GOOD,229,133,POWER_CAVE_IN,9,1)
		CHANGE_SLAB_TYPE(76,44,PATH)
		PLAY_MESSAGE(PLAYER0,SOUND,DRAWFROM(72,73,74))
	ENDIF
	IF(PLAYER0,FLAG7 >= 12)
		USE_POWER_AT_POS(PLAYER_GOOD,226,127,POWER_CAVE_IN,9,1)
		CHANGE_SLAB_TYPE(75,42,PATH)
		USE_POWER_AT_POS(PLAYER_GOOD,214,103,POWER_CAVE_IN,9,1)
		CHANGE_SLAB_TYPE(71,34,PATH)
		PLAY_MESSAGE(PLAYER0,SOUND,DRAWFROM(72,73,74))
	ENDIF
	REM Lucky number 13, can now reach the entire map
	IF(PLAYER0,FLAG7 >= 13)
		USE_POWER_AT_POS(PLAYER_GOOD,226,130,POWER_CAVE_IN,9,1)
		CHANGE_SLAB_TYPE(75,43,PATH)
		USE_POWER_AT_POS(PLAYER_GOOD,151,64,POWER_CAVE_IN,9,1)
		CHANGE_SLAB_TYPE(50,21,PATH)
		PLAY_MESSAGE(PLAYER0,SOUND,DRAWFROM(72,73,74))
	ENDIF

	REM With bridges, no need for cave in. One last time and then just fake cave-ins.
	IF(PLAYER0,FLAG7 >= 14)
		USE_POWER_AT_POS(PLAYER_GOOD,151,64,POWER_CAVE_IN,9,1)
		IF_SLAB_TYPE(49,21,WATER)
			CHANGE_SLAB_TYPE(49,21,PATH)
		ENDIF
		NEXT_COMMAND_REUSABLE
		PLAY_MESSAGE(PLAYER0,SOUND,DRAWFROM(72,73,74))
		NEXT_COMMAND_REUSABLE
		ADD_TO_FLAG(PLAYER0,FLAG7,-1)
	ENDIF
ENDIF

REM ****************************************************************************
REM Win game
REM ****************************************************************************

REM When the player has claimed all but the final library, the final battle starts and the looping parties stop
IF(PLAYER_GOOD,RESEARCH <= 9)
	SET_FLAG(PLAYER_GOOD,FLAG1,4)
	QUICK_OBJECTIVE(11,"We have taken all libraries, yet the wizards have not given up their assault. It seems they had a secret all along. Sort it out",11)
	ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,lasthurrah,11,DUNGEON_HEART,0,8,69)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,FAIRY,11,7,8,420)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,FAIRY,6,3,9,12)
	SET_CREATURE_INSTANCE(WIZARD,9,SPEED, 9)
	SET_CREATURE_INSTANCE(WIZARD,10,TELEPORT, 10)
	SET_CREATURE_CONFIGURATION(WIZARD,Health,1000)
	IF(PLAYER_GOOD,FAIRY < 3)
		SET_GAME_RULE(StunGoodEnemyChance,100)
	ENDIF
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,archwizard,11,1)
	SET_TIMER(PLAYER0,TIMER3)
	ADD_TO_FLAG(PLAYER0,FLAG7,1)
	IF(PLAYER_GOOD,WIZARD == 1)
		SET_CREATURE_PROPERTY(WIZARD,NO_CORPSE_ROTTING,0)
		SET_CREATURE_PROPERTY(WIZARD,NO_IMPRISONMENT,0)
	ENDIF
ENDIF

IF(PLAYER_GOOD,WIZARD > 1)
	IF(PLAYER0,TIMER3 > 5400)
		QUICK_INFORMATION(13,"The Wizard seems to have more tricks. Kill him.")
	ENDIF
	IF(PLAYER0,TIMER3 > 6000)
		CHANGE_SLAB_TYPE(5,18,GOLD)
	ENDIF
	IF(PLAYER0,TIMER3 > 7500)
		IF_ACTION_POINT(8,PLAYER0)
			CHANGE_SLAB_TYPE(8,75,GOLD)
		ENDIF
	ENDIF
	IF(PLAYER0,TIMER3 > 7800)
		IF_ACTION_POINT(7,PLAYER0)
			CHANGE_SLAB_TYPE(75,74,GOLD)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER0,TIMER3 > 100)
	IF(PLAYER_GOOD,WIZARD <= 0)
		IF(PLAYER_GOOD,RESEARCH > 0)
			QUICK_OBJECTIVE(14,"With all Wizards gone, claim their libraries before more spawn.")
		ENDIF
	ENDIF
ENDIF
	

IF_CONTROLS(PLAYER_GOOD,WIZARD <= 0)
	IF(PLAYER_GOOD,RESEARCH <= 0)
		SET_CREATURE_PROPERTY(WIZARD,ILLUMINATED,0)
		QUICK_OBJECTIVE(9,"These were hands down the most annoying wizards you have ever had to face. Im sure their families above are in good hands with your orcs you send after them.")
		MAGIC_AVAILABLE(PLAYER0,POWER_HAND,1,1)
		PLAY_MESSAGE(PLAYER0,SPEECH,21)
		WIN_GAME
	ENDIF
ENDIF

REM ****************************************************************************
REM End of file
REM ****************************************************************************