LEVEL_VERSION(1)
SET_GENERATE_SPEED(400)
START_MONEY(PLAYER0,10000)
MAX_CREATURES(PLAYER0,30)
RUN_AFTER_VICTORY(1)

ADD_CREATURE_TO_POOL(FLY,20)
ADD_CREATURE_TO_POOL(BUG,80)
ADD_CREATURE_TO_POOL(DEMONSPAWN,50)
ADD_CREATURE_TO_POOL(TROLL,30)
ADD_CREATURE_TO_POOL(SORCEROR,30)
ADD_CREATURE_TO_POOL(ORC,30)
ADD_CREATURE_TO_POOL(TUNNELLER,30)

CREATURE_AVAILABLE(PLAYER0,FLY,1,0)
CREATURE_AVAILABLE(PLAYER0,BUG,1,0)
CREATURE_AVAILABLE(PLAYER0,DEMONSPAWN,1,0)
CREATURE_AVAILABLE(PLAYER0,TROLL,1,0)
CREATURE_AVAILABLE(PLAYER0,SORCEROR,1,0)
CREATURE_AVAILABLE(PLAYER0,ORC,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,GUARD_POST,1,0)
ROOM_AVAILABLE(PLAYER0,WORKSHOP,1,0)
ROOM_AVAILABLE(PLAYER0,BARRACKS,1,0)
ROOM_AVAILABLE(PLAYER0,TEMPLE,1,0)

MAGIC_AVAILABLE(PLAYER0,POWER_HAND,1,1)
MAGIC_AVAILABLE(PLAYER0,POWER_SLAP,1,1)
MAGIC_AVAILABLE(PLAYER0,POWER_POSSESS,1,1)
MAGIC_AVAILABLE(PLAYER0,POWER_IMP,1,1)
MAGIC_AVAILABLE(PLAYER0,POWER_SPEED,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_OBEY,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_CONCEAL,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_HOLD_AUDIENCE,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_LIGHTNING,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_PROTECT,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,STEEL,1,0)
DOOR_AVAILABLE(PLAYER0,MAGIC,1,0)

SET_CREATURE_HEALTH(WIZARD,7895)
SET_CREATURE_ARMOUR(WIZARD,80)
SET_CREATURE_INSTANCE(WIZARD,2,LIGHTNING,10)
SET_CREATURE_FEARSOME_FACTOR(WIZARD,80)

SET_FLAG(PLAYER_GOOD,FLAG0,0)
SET_FLAG(PLAYER_GOOD,FLAG1,0)
SET_FLAG(PLAYER_GOOD,FLAG2,0)
SET_FLAG(PLAYER_GOOD,FLAG3,0)
SET_FLAG(PLAYER_GOOD,FLAG4,0)
SET_FLAG(PLAYER0,FLAG1,0)
SET_FLAG(PLAYER0,FLAG2,0)
SET_FLAG(PLAYER0,FLAG3,0)
SET_FLAG(PLAYER0,FLAG4,0)
SET_FLAG(PLAYER0,FLAG5,0)
SET_FLAG(PLAYER0,FLAG6,0)
SET_FLAG(PLAYER0,FLAG7,0)
SET_FLAG(PLAYER0,CAMPAIGN_FLAG0,0)

CREATE_PARTY(DWARVES)
	ADD_TO_PARTY(DWARVES,DWARFA,7,500,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(DWARVES,DWARFA,7,500,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(DWARVES,DWARFA,7,500,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(DWARVES,DWARFA,7,500,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(DWARVES,DWARFA,7,500,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(DWARVES,DWARFA,7,500,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(DWARVES,DWARFA,7,500,ATTACK_ENEMIES,0)

CREATE_PARTY(THIEVES)
	ADD_TO_PARTY(THIEVES,THIEF,10,500,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(THIEVES,THIEF,10,500,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(THIEVES,THIEF,10,500,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(THIEVES,THIEF,10,500,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(THIEVES,THIEF,10,500,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(THIEVES,THIEF,10,500,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(THIEVES,THIEF,10,500,ATTACK_ENEMIES,0)

CREATE_PARTY(SAMURAI)
	ADD_TO_PARTY(SAMURAI,SAMURAI,7,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(SAMURAI,SAMURAI,7,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(SAMURAI,SAMURAI,7,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(SAMURAI,SAMURAI,7,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(SAMURAI,SAMURAI,7,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(SAMURAI,SAMURAI,7,0,ATTACK_DUNGEON_HEART,0)

SET_TIMER(PLAYER_GOOD,TIMER0)
SET_TIMER(PLAYER0,TIMER4)

CHANGE_SLAB_TYPE(72, 55, DOOR_MAGIC2)
CHANGE_SLAB_TYPE(75, 28, DOOR_MAGIC2)

SET_BOX_TOOLTIP(2,"U")
SET_BOX_TOOLTIP(3,"D")
SET_BOX_TOOLTIP(4,"L")
SET_BOX_TOOLTIP(5,"R")
SET_BOX_TOOLTIP(6,"B")
SET_BOX_TOOLTIP(7,"A")
SET_BOX_TOOLTIP(9,"Magical Explosives: Fires a large volley of magical bombs straight at the heart of your enemy.")
SET_BOX_TOOLTIP(10,"Hint: Receive a hint for your quest.")

SET_CREATURE_CONFIGURATION(TUNNELLER,HurtByLava,6)

QUICK_OBJECTIVE(23,"An ostentatiously cocky Wizard resides here. The townsfolk are easily impressed by his foolish, feeble displays of gay spark showers and other such rubbish. Your power is much more impressive.....",ALL_PLAYERS)

IF_ACTION_POINT(1,PLAYER0)
	CHANGE_SLAB_OWNER(72,56,PLAYER0)
	CHANGE_SLAB_TYPE(72,55,PRETTY_PATH)
	PLAY_MESSAGE(PLAYER0,SOUND,943)
ENDIF

IF_ACTION_POINT(2,PLAYER0)
	CHANGE_SLAB_TYPE(6,55,GEMS)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DWARVES,2,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DWARVES,3,1)
	IF_CONTROLS(PLAYER_GOOD,DWARFA==0)
		CREATURE_AVAILABLE(PLAYER0,TUNNELLER,1,0)
		QUICK_INFORMATION(33,"Disllusioned dwarves who wanted the gold for themselves have agreed to help you overthrow the Wizard in return for removing the mine's guardians.",ALL_PLAYERS)
	ENDIF
ENDIF

IF_ACTION_POINT(4,PLAYER0)
	IF_CONTROLS(PLAYER_GOOD,WIZARD>0)
		QUICK_MESSAGE(16, "Murum erige!", WIZARD)
		CHANGE_SLAB_TYPE(41,15,DRAPE_WALL)
		CHANGE_SLAB_TYPE(42,15,DRAPE_WALL)
		CHANGE_SLAB_TYPE(43,15,DRAPE_WALL)
		CHANGE_SLAB_TYPE(44,15,DRAPE_WALL)
		CHANGE_SLAB_TYPE(45,15,DRAPE_WALL)
		CHANGE_SLAB_TYPE(46,15,DRAPE_WALL)
		CHANGE_SLAB_TYPE(47,15,DRAPE_WALL)
		CHANGE_SLAB_TYPE(48,15,DRAPE_WALL)
		CHANGE_SLAB_TYPE(49,15,DRAPE_WALL)
		QUICK_INFORMATION(11,"The Wizard has conjured a wall to protect himself.....",4)
		SET_TIMER(PLAYER_GOOD,TIMER1)
		IF(PLAYER0,TOTAL_CREATURES<5)
			IF(PLAYER0,BATTLES_LOST>40)
				QUICK_INFORMATION(25,"The Wizard is clearly far more powerful than we thought. We really need something to penetrate that shield of his....",4)
			ENDIF
		ENDIF
		NEXT_COMMAND_REUSABLE
	ENDIF
	NEXT_COMMAND_REUSABLE
	RESET_ACTION_POINT(4)
ENDIF

IF_ACTION_POINT(5,PLAYER0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,THIEVES,5,3)
ENDIF

IF_ACTION_POINT(6,PLAYER0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,FAIRY,6,15,7,1000)
ENDIF

IF_ACTION_POINT(7,PLAYER0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,WITCH,7,15,6,1000)
ENDIF

IF_ACTION_POINT(8,PLAYER0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,GIANT,8,15,8,1000)
ENDIF

IF_ACTION_POINT(9,PLAYER0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,SAMURAI,9,10,7,1000)
ENDIF

IF_ACTION_POINT(10,PLAYER0)
	QUICK_INFORMATION(2,"Rumour has it there's an abandoned gold mine in the snowy caverns....",ALL_PLAYERS)
ENDIF

IF_ACTION_POINT(11,PLAYER0)
	ROOM_AVAILABLE(PLAYER0,TORTURE,1,1)
	QUICK_INFORMATION(13,"You have discovered this Keeper's stashed torture paraphernalia. These should prove useful.",ALL_PLAYERS)
ENDIF

IF_ACTION_POINT(12,PLAYER0)
	SET_FLAG(PLAYER_GOOD,FLAG1,1)
	REVEAL_MAP_LOCATION(PLAYER0,13,5)
	QUICK_INFORMATION(3,"You pick a book up from the shelf and read it. It tells you of the source of the protective magic around the Wizard's heart and how to dispel it.",13)
ENDIF

IF_ACTION_POINT(13,PLAYER0)
	SET_FLAG(PLAYER_GOOD,FLAG0,1)
	PLAY_MESSAGE(PLAYER0,SOUND,944)
	QUICK_INFORMATION(4,"You have disabled the protective magic around the Wizard's heart!",ALL_PLAYERS)
ENDIF

IF_ACTION_POINT(14,PLAYER0)
	IF(PLAYER0,FLAG2==0)
		NEXT_COMMAND_REUSABLE
		PLAY_MESSAGE(PLAYER0,SOUND,959)
		NEXT_COMMAND_REUSABLE
		SET_FLAG(PLAYER0,FLAG2,1)
		
	ENDIF
	NEXT_COMMAND_REUSABLE
	SET_TIMER(PLAYER0,TIMER0)
	NEXT_COMMAND_REUSABLE
	CHANGE_SLAB_TYPE(22,57,HARD)
	NEXT_COMMAND_REUSABLE
	CHANGE_SLAB_TYPE(23,57,HARD)
	QUICK_INFORMATION(9,"It seems the book neglected to mention that the magics can detect intruders and have self-defence mechanisms. Looks like you'll have to find another way into the chamber.....",ALL_PLAYERS)
	NEXT_COMMAND_REUSABLE
	RESET_ACTION_POINT(14)
ENDIF

IF_ACTION_POINT(15,PLAYER0)
	IF_CONTROLS(PLAYER_GOOD,WIZARD>0)
		QUICK_MESSAGE(18, "Magicae Impedimentum!", WIZARD)
		SET_CREATURE_INSTANCE(SORCEROR,2,NULL,2)
		SET_CREATURE_INSTANCE(SORCEROR,3,NULL,3)
		SET_CREATURE_INSTANCE(SORCEROR,4,NULL,4)
		SET_CREATURE_INSTANCE(SORCEROR,5,NULL,5)
		SET_CREATURE_INSTANCE(SORCEROR,6,NULL,6)
		SET_CREATURE_INSTANCE(SORCEROR,7,NULL,7)
		SET_CREATURE_INSTANCE(SORCEROR,8,NULL,8)
		SET_CREATURE_INSTANCE(SORCEROR,9,NULL,9)
		SET_CREATURE_INSTANCE(SORCEROR,10,NULL,10)
		QUICK_INFORMATION(5,"Oh no! The Wizard has sapped all your Warlocks' powers! Damn him!",ALL_PLAYERS)
		SET_FLAG(PLAYER_GOOD,FLAG2,1)
	ENDIF
ENDIF

IF_ACTION_POINT(16,PLAYER0)
	QUICK_INFORMATION(34,"Keeper, I sense something queer about this door.....",16)
ENDIF

IF_ACTION_POINT(17,PLAYER0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,SAMURAI,-2,14,7,500)
ENDIF

IF_ACTION_POINT(18,PLAYER0)
	IF(PLAYER_GOOD,FLAG1==1)
		CHANGE_SLAB_TYPE(16,57,PATH)
		PLAY_MESSAGE(PLAYER0,SOUND,856)
		IF(PLAYER0,DEMONSPAWN<5)
			NEXT_COMMAND_REUSABLE
			ADD_CREATURE_TO_LEVEL(PLAYER0,DEMONSPAWN,18,1,1,0)
		ENDIF
	ENDIF
	NEXT_COMMAND_REUSABLE
	RESET_ACTION_POINT(18)
ENDIF

IF_ACTION_POINT(19,PLAYER0)
	QUICK_INFORMATION(12,"The Wizard resides to the north. It would be unwise to challenge him before you are ready.....",ALL_PLAYERS)
	MAX_CREATURES(PLAYER0,50)
ENDIF

IF_ACTION_POINT(21,PLAYER0)
	SET_FLAG(PLAYER0,FLAG3,1)
ENDIF

IF_ACTION_POINT(22,PLAYER0)
	SET_FLAG(PLAYER0,FLAG3,1)
ENDIF

IF_ACTION_POINT(23,PLAYER0)
	SET_FLAG(PLAYER_GOOD,FLAG3,1)
ENDIF

IF_ACTION_POINT(24,PLAYER0)
	SET_FLAG(PLAYER_GOOD,FLAG3,1)
ENDIF

IF_ACTION_POINT(25,PLAYER0)
	CHANGE_SLAB_OWNER(32,42,PLAYER0)
	CHANGE_SLAB_OWNER(33,42,PLAYER0)
	CHANGE_SLAB_OWNER(34,42,PLAYER0)
	QUICK_INFORMATION(32,"The Wizard has imprisoned a corrupt warrior, who turned against him, in this dungeon. If you release him, he'll surely be a great asset.",25)
	REVEAL_MAP_RECT(PLAYER0,89,130,3,3)
ENDIF

IF_ACTION_POINT(26,PLAYER0)
	CHANGE_SLAB_OWNER(43,24,PLAYER0)
	CHANGE_SLAB_TYPE(43,23,PRETTY_PATH)
ENDIF

IF_ACTION_POINT(27,PLAYER0)
	CHANGE_SLAB_OWNER(74,27,PLAYER0)
	CHANGE_SLAB_TYPE(75,28,PRETTY_PATH)
	REM CHANGE_SLAB_TYPE(76,31,PRETTY_PATH)
	CHANGE_SLAB_OWNER(76,31,PLAYER0)
	REM CHANGE_SLAB_TYPE(77,26,PRETTY_PATH)
	CHANGE_SLAB_OWNER(77,26,PLAYER0)
	REM CHANGE_SLAB_TYPE(73,25,PRETTY_PATH)
	CHANGE_SLAB_OWNER(73,25,PLAYER0)
	REM CHANGE_SLAB_TYPE(72,32,PRETTY_PATH)
	CHANGE_SLAB_OWNER(72,32,PLAYER0)
	REM CHANGE_SLAB_TYPE(77,33,PRETTY_PATH)
	CHANGE_SLAB_OWNER(77,33,PLAYER0)
	REM CHANGE_SLAB_TYPE(79,24,PRETTY_PATH)
	CHANGE_SLAB_OWNER(79,24,PLAYER0)
	REM CHANGE_SLAB_TYPE(72,23,PRETTY_PATH)
	CHANGE_SLAB_OWNER(72,23,PLAYER0)
	REM CHANGE_SLAB_TYPE(70,29,PRETTY_PATH)
	CHANGE_SLAB_OWNER(70,29,PLAYER0)
	REM CHANGE_SLAB_TYPE(71,35,PRETTY_PATH)
	CHANGE_SLAB_OWNER(71,35,PLAYER0)
	REM CHANGE_SLAB_TYPE(80,35,PRETTY_PATH)
	CHANGE_SLAB_OWNER(80,35,PLAYER0)
	REM CHANGE_SLAB_TYPE(81,22,PRETTY_PATH)
	CHANGE_SLAB_OWNER(81,22,PLAYER0)
	PLAY_MESSAGE(PLAYER0,SOUND,943)
ENDIF

IF_ACTION_POINT(28,PLAYER0)
	IF_CONTROLS(PLAYER_GOOD,WIZARD>0)
		NEXT_COMMAND_REUSABLE
		QUICK_MESSAGE(15, "Electro Deus!", WIZARD)
		NEXT_COMMAND_REUSABLE
		PLAY_MESSAGE(PLAYER0,SOUND,974)
		NEXT_COMMAND_REUSABLE
		USE_POWER_AT_POS(PLAYER_GOOD,13,145,POWER_LIGHTNING,9,1)
	ENDIF
	NEXT_COMMAND_REUSABLE
	RESET_ACTION_POINT(28)
ENDIF

IF_ACTION_POINT(29,PLAYER0)
	NEXT_COMMAND_REUSABLE
	PLAY_MESSAGE(PLAYER0,SOUND,42)
	NEXT_COMMAND_REUSABLE
	CHANGE_SLAB_TYPE(2,32,TWINS_WALL)
	NEXT_COMMAND_REUSABLE
	CHANGE_SLAB_OWNER(2,32,PLAYER_NEUTRAL)
	NEXT_COMMAND_REUSABLE
	RESET_ACTION_POINT(29)
ENDIF

IF_ACTION_POINT(30,PLAYER0)
	IF(PLAYER0,FLAG6!=1)
		NEXT_COMMAND_REUSABLE
		PLAY_MESSAGE(PLAYER0,SOUND,856)
		NEXT_COMMAND_REUSABLE
		CHANGE_SLAB_TYPE(81,20,PATH)
		NEXT_COMMAND_REUSABLE
		SET_FLAG(PLAYER0,FLAG6,1)
	ENDIF
	NEXT_COMMAND_REUSABLE
	RESET_ACTION_POINT(30)
ENDIF

IF_ACTION_POINT(31,PLAYER0)
	IF(PLAYER0,FLAG6!=0)
		NEXT_COMMAND_REUSABLE
		PLAY_MESSAGE(PLAYER0,SOUND,959)
		NEXT_COMMAND_REUSABLE
		CHANGE_SLAB_TYPE(81,20,HARD)
		NEXT_COMMAND_REUSABLE
		SET_FLAG(PLAYER0,FLAG6,0)
	ENDIF
	NEXT_COMMAND_REUSABLE
	RESET_ACTION_POINT(31)
ENDIF

IF(PLAYER_GOOD,TIMER0>=100)
	NEXT_COMMAND_REUSABLE
	USE_SPELL_ON_CREATURE(PLAYER_GOOD,WIZARD,ANYWHERE,SPELL_REBOUND,0)
	NEXT_COMMAND_REUSABLE
	USE_SPELL_ON_CREATURE(PLAYER_GOOD,WIZARD,ANYWHERE,SPELL_HEAL,10)
	NEXT_COMMAND_REUSABLE
	USE_SPELL_ON_CREATURE(PLAYER_GOOD,WIZARD,ANYWHERE,SPELL_HEAL,10)
	NEXT_COMMAND_REUSABLE
	USE_SPELL_ON_CREATURE(PLAYER_GOOD,WIZARD,ANYWHERE,SPELL_HEAL,10)
	NEXT_COMMAND_REUSABLE
	USE_SPELL_ON_CREATURE(PLAYER_GOOD,WIZARD,ANYWHERE,SPELL_ARMOUR,10)
	NEXT_COMMAND_REUSABLE
	SET_TIMER(PLAYER_GOOD,TIMER0)
ENDIF

IF(PLAYER_GOOD,DUNGEON_DESTROYED==1)
	IF_CONTROLS(PLAYER_GOOD,TOTAL_CREATURES == 0)
		QUICK_OBJECTIVE(31,"You are victorious! The Wizard is vanquished, his power gone, and the townsfolk come trembling in fear towards you, as they should.",PLAYER_GOOD)
		WIN_GAME
	ENDIF
ENDIF

IF(PLAYER0,BOX0_ACTIVATED > 0)
  	RANDOMISE_FLAG(PLAYER0,FLAG1,4)
	IF(PLAYER0,FLAG1==1)
		PLAY_MESSAGE(PLAYER0,SOUND,47)
		SET_HEART_HEALTH(PLAYER0,0)
		QUICK_OBJECTIVE(1,"Bang! You're dead. Whoopsie......",PLAYER0)
	ENDIF
	IF(PLAYER0,FLAG1==2)
		PLAY_MESSAGE(PLAYER0,SOUND,47)
		KILL_CREATURE(PLAYER0,IMP,ANYWHERE,255)
		QUICK_INFORMATION(7,"How silly of you to assume that all magic here is good....",ALL_PLAYERS)
	ENDIF
	IF(PLAYER0,FLAG1==3)
		PLAY_MESSAGE(PLAYER0,SOUND,860)
		ADD_CREATURE_TO_LEVEL(PLAYER0,DRAGON,20,10,10,0)
	ENDIF
	IF(PLAYER0,FLAG1==4)
		QUICK_INFORMATION(8,"Hmm..... nothing happened.",ALL_PLAYERS)
	ENDIF
ENDIF

IF(PLAYER0,BOX1_ACTIVATED > 0)
	PLAY_MESSAGE(PLAYER0,SOUND,856)
  	CHANGE_SLAB_TYPE(3,59,DIRT)
	CHANGE_SLAB_TYPE(1,59,DIRT)
	CHANGE_SLAB_TYPE(2,59,DIRT)
	CHANGE_SLAB_TYPE(4,59,DIRT)
	CHANGE_SLAB_TYPE(5,59,DIRT)
	QUICK_INFORMATION(35,"Ooh, look! An entrance has opened!",2)
ENDIF

IF(PLAYER0,BOX2_ACTIVATED == 1)
	IF(PLAYER0,CAMPAIGN_FLAG0 == 0)
  		ADD_TO_FLAG(PLAYER0,FLAG4,1)
		PLAY_MESSAGE(PLAYER0,SOUND,76)
	ENDIF
ENDIF

IF(PLAYER0,BOX2_ACTIVATED == 2)
	IF(PLAYER0,FLAG4 < 1)
  		SET_FLAG(PLAYER0,CAMPAIGN_FLAG0,1)
	ENDIF
	IF(PLAYER0,CAMPAIGN_FLAG0 == 0)
		IF(PLAYER0,FLAG4 == 1)
  			ADD_TO_FLAG(PLAYER0,FLAG4,1)
			PLAY_MESSAGE(PLAYER0,SOUND,76)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER0,BOX3_ACTIVATED == 1)
	IF(PLAYER0,FLAG4 < 2)
  		SET_FLAG(PLAYER0,CAMPAIGN_FLAG0,1)
	ENDIF
	IF(PLAYER0,CAMPAIGN_FLAG0 == 0)
		IF(PLAYER0,FLAG4 == 2)
  			ADD_TO_FLAG(PLAYER0,FLAG4,1)
			PLAY_MESSAGE(PLAYER0,SOUND,76)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER0,BOX3_ACTIVATED == 2)
	IF(PLAYER0,FLAG4 < 3)
  		SET_FLAG(PLAYER0,CAMPAIGN_FLAG0,1)
	ENDIF
	IF(PLAYER0,CAMPAIGN_FLAG0 == 0)
		IF(PLAYER0,FLAG4 == 3)
  			ADD_TO_FLAG(PLAYER0,FLAG4,1)
			PLAY_MESSAGE(PLAYER0,SOUND,76)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER0,BOX4_ACTIVATED == 1)
	IF(PLAYER0,FLAG4 < 4)
  		SET_FLAG(PLAYER0,CAMPAIGN_FLAG0,1)
	ENDIF
	IF(PLAYER0,CAMPAIGN_FLAG0 == 0)
		IF(PLAYER0,FLAG4 == 4)
  			ADD_TO_FLAG(PLAYER0,FLAG4,1)
			PLAY_MESSAGE(PLAYER0,SOUND,76)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER0,BOX5_ACTIVATED == 1)
	IF(PLAYER0,FLAG4 < 5)
  		SET_FLAG(PLAYER0,CAMPAIGN_FLAG0,1)
	ENDIF
	IF(PLAYER0,CAMPAIGN_FLAG0 == 0)
		IF(PLAYER0,FLAG4 == 5)
  			ADD_TO_FLAG(PLAYER0,FLAG4,1)
			PLAY_MESSAGE(PLAYER0,SOUND,76)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER0,BOX4_ACTIVATED == 2)
	IF(PLAYER0,FLAG4 < 6)
  		SET_FLAG(PLAYER0,CAMPAIGN_FLAG0,1)
	ENDIF
	IF(PLAYER0,CAMPAIGN_FLAG0 == 0)
		IF(PLAYER0,FLAG4 == 6)
  			ADD_TO_FLAG(PLAYER0,FLAG4,1)
			PLAY_MESSAGE(PLAYER0,SOUND,76)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER0,BOX5_ACTIVATED == 2)
	IF(PLAYER0,FLAG4 < 7)
  		SET_FLAG(PLAYER0,CAMPAIGN_FLAG0,1)
	ENDIF
	IF(PLAYER0,CAMPAIGN_FLAG0 == 0)
		IF(PLAYER0,FLAG4 == 7)
  			ADD_TO_FLAG(PLAYER0,FLAG4,1)
			PLAY_MESSAGE(PLAYER0,SOUND,76)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER0,BOX6_ACTIVATED == 1)
	IF(PLAYER0,FLAG4 < 8)
  		SET_FLAG(PLAYER0,CAMPAIGN_FLAG0,1)
	ENDIF
	IF(PLAYER0,CAMPAIGN_FLAG0 == 0)
		IF(PLAYER0,FLAG4 == 8)
  			ADD_TO_FLAG(PLAYER0,FLAG4,1)
			PLAY_MESSAGE(PLAYER0,SOUND,76)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER0,BOX7_ACTIVATED == 1)
	IF(PLAYER0,FLAG4 < 9)
  		SET_FLAG(PLAYER0,CAMPAIGN_FLAG0,1)
	ENDIF
	IF(PLAYER0,CAMPAIGN_FLAG0 == 0)
		IF(PLAYER0,FLAG4 == 9)
  			ADD_TO_FLAG(PLAYER0,FLAG4,1)
			PLAY_MESSAGE(PLAYER0,SOUND,944)
			CHANGE_SLAB_TYPE(31, 43, DIRT)
			USE_POWER_AT_POS(PLAYER0,94,130,POWER_DESTROY_WALLS,4,1)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER0,BOX8_ACTIVATED == 1)
	ADD_GOLD_TO_PLAYER(PLAYER0,10000000)
	PLAY_MESSAGE(PLAYER0,SOUND,34)
ENDIF

IF(PLAYER0,BOX9_ACTIVATED == 1)
	SET_TIMER(PLAYER0,TIMER1)
	QUICK_INFORMATION(21, "You've lit the fuse....", ALL_PLAYERS)
	DISPLAY_COUNTDOWN(PLAYER0, TIMER1, 1000, 1)
ENDIF

IF(PLAYER0,BOX10_ACTIVATED == 1)
	QUICK_INFORMATION(36, "Flying is a very useful ability...", ALL_PLAYERS)
ENDIF

IF(PLAYER0,BOX10_ACTIVATED == 2)
	QUICK_INFORMATION(37, "...but you don't need flying creatures for their flying ability.", ALL_PLAYERS)
ENDIF

IF(PLAYER0,BOX10_ACTIVATED == 3)
	QUICK_INFORMATION(38, "If you can't break a door down, maybe you should try going through it?", ALL_PLAYERS)
ENDIF

IF(PLAYER0,BOX10_ACTIVATED == 4)
	QUICK_INFORMATION(39, "Demon Spawn don't hatch here for no reason...", 18)
ENDIF

IF(PLAYER0,TIMER0>=600)
	IF(PLAYER0,FLAG2==1)
		NEXT_COMMAND_REUSABLE
		PLAY_MESSAGE(PLAYER0,SOUND,856)
		NEXT_COMMAND_REUSABLE
		CHANGE_SLAB_TYPE(22,57,LAVA)
		NEXT_COMMAND_REUSABLE
		CHANGE_SLAB_TYPE(23,57,LAVA)
		QUICK_INFORMATION(22, "The entrance has opened up again!", 13)
		NEXT_COMMAND_REUSABLE
		SET_FLAG(PLAYER0,FLAG2,0)
	ENDIF
ENDIF

IF(PLAYER0,TIMER1>=1000)
	IF_CONTROLS(PLAYER_GOOD,WIZARD>0)
		IF(PLAYER_GOOD,DUNGEON_DESTROYED==0)
			QUICK_MESSAGE(19, "Deflecto!", WIZARD)
			PLAY_MESSAGE(PLAYER0,SOUND,926)
			SET_TIMER(PLAYER0,TIMER2)
			SET_FLAG(PLAYER0,FLAG7,1)
		ENDIF
	ENDIF
	IF_CONTROLS(PLAYER_GOOD,WIZARD==0)
		IF(PLAYER_GOOD,DUNGEON_DESTROYED==0)
			SET_TIMER(PLAYER_GOOD,TIMER2)
			SET_FLAG(PLAYER0,FLAG7,1)
		ENDIF
	ENDIF
	IF(PLAYER_GOOD,DUNGEON_DESTROYED==1)
		IF(PLAYER0,FLAG7==0)
			QUICK_INFORMATION(40, "The explosives have targeted the only heart they could find: yours!", PLAYER0)
			SET_TIMER(PLAYER0,TIMER2)
			SET_FLAG(PLAYER0,FLAG7,1)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER0,TIMER2>=20)
	SET_FLAG(PLAYER0,FLAG7,1)
	IF(PLAYER0,FLAG5<=10)
		NEXT_COMMAND_REUSABLE
		CREATE_EFFECT_AT_POS(EFFECT_EXPLOSION_1,124,223)
		NEXT_COMMAND_REUSABLE
		CREATE_EFFECT_AT_POS(EFFECT_EXPLOSION_2,123,222)
		NEXT_COMMAND_REUSABLE
		CREATE_EFFECT_AT_POS(EFFECT_EXPLOSION_3,124,222)
		NEXT_COMMAND_REUSABLE
		CREATE_EFFECT_AT_POS(EFFECT_EXPLOSION_4,125,222)
		NEXT_COMMAND_REUSABLE
		CREATE_EFFECT_AT_POS(EFFECT_EXPLOSION_5,123,223)
		NEXT_COMMAND_REUSABLE
		CREATE_EFFECT_AT_POS(EFFECT_EXPLOSION_6,125,223)
		NEXT_COMMAND_REUSABLE
		CREATE_EFFECT_AT_POS(EFFECT_EXPLOSION_7,123,224)
		NEXT_COMMAND_REUSABLE
		CREATE_EFFECT_AT_POS(EFFECT_EXPLOSION_1,124,224)
		NEXT_COMMAND_REUSABLE
		CREATE_EFFECT_AT_POS(EFFECT_EXPLOSION_1,125,224)
		NEXT_COMMAND_REUSABLE
		ADD_HEART_HEALTH(PLAYER0,-2500,1)
		NEXT_COMMAND_REUSABLE
		ADD_TO_FLAG(PLAYER0,FLAG5,1)
		NEXT_COMMAND_REUSABLE
		SET_TIMER(PLAYER0,TIMER2)
	ENDIF
	IF(PLAYER0,FLAG5>10)
		IF(PLAYER0,HEART_HEALTH>0)
			IF_CONTROLS(PLAYER_GOOD,WIZARD>0)
				IF(PLAYER_GOOD,DUNGEON_DESTROYED==0)
					QUICK_INFORMATION(20, "Phew! That was a close call. It seems we underestimated him...", PLAYER0)
				ENDIF
			ENDIF
		ENDIF
	ENDIF
ENDIF

IF(PLAYER0,TIMER3>=2000)
	SET_CREATURE_INSTANCE(SORCEROR,2,FIREBALL,2)
	SET_CREATURE_INSTANCE(SORCEROR,3,HEAL,3)
	SET_CREATURE_INSTANCE(SORCEROR,4,FIRE_BOMB,4)
	SET_CREATURE_INSTANCE(SORCEROR,5,INVISIBILITY,5)
	SET_CREATURE_INSTANCE(SORCEROR,6,NAVIGATING_MISSILE,6)
	SET_CREATURE_INSTANCE(SORCEROR,7,SIGHT,7)
	SET_CREATURE_INSTANCE(SORCEROR,8,WIND,8)
	SET_CREATURE_INSTANCE(SORCEROR,9,WORD_OF_POWER,9)
	ADD_CREATURE_TO_LEVEL(PLAYER0,SORCEROR,PLAYER0,10,10,0)
	QUICK_INFORMATION(6,"These Warlocks have secretly utilised the combined resources of the Libraries to reverse the Wizard's curse and have sworn to exact their revenge on him.",ALL_PLAYERS)
ENDIF

IF(PLAYER_GOOD,TIMER1>=2500)
	IF_CONTROLS(PLAYER_GOOD,WIZARD>0)
		QUICK_MESSAGE(17, "Penitenziagite! Erigere pontem!", WIZARD)
		USE_POWER_AT_POS(PLAYER1,124,190,POWER_DESTROY_WALLS,9,1)
		CHANGE_SLAB_TYPE(41,57,BRIDGE_FRAME)
		CHANGE_SLAB_TYPE(41,58,BRIDGE_FRAME)
		CHANGE_SLAB_TYPE(41,59,BRIDGE_FRAME)
		CHANGE_SLAB_TYPE(41,60,BRIDGE_FRAME)
		CHANGE_SLAB_TYPE(41,61,BRIDGE_FRAME)
		CHANGE_SLAB_TYPE(41,62,BRIDGE_FRAME)
		CHANGE_SLAB_OWNER(41,57,PLAYER_GOOD)
		ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,SAMURAI,-1,DUNGEON_HEART,0,9,0)
	ENDIF	
ENDIF

IF(PLAYER_GOOD,TIMER1>=5000)
	IF_CONTROLS(PLAYER_GOOD,WIZARD>0)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,FAIRY,-1,10,10,0)
	ENDIF	
ENDIF

IF(PLAYER_GOOD,TIMER1>=7500)
	IF_CONTROLS(PLAYER_GOOD,WIZARD>0)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,MONK,-1,15,10,0)
	ENDIF	
ENDIF

IF(PLAYER_GOOD,TIMER1>=10000)
	IF_CONTROLS(PLAYER_GOOD,WIZARD>0)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,DWARFA,-1,25,10,0)
	ENDIF	
ENDIF

IF(PLAYER_GOOD,TIMER2>=20)
	IF(PLAYER_GOOD,DUNGEON_DESTROYED==0)
		SET_FLAG(PLAYER0,FLAG7,1)
		IF(PLAYER_GOOD,FLAG4<=10)
			NEXT_COMMAND_REUSABLE
			CREATE_EFFECT_AT_POS(EFFECT_EXPLOSION_1,138,22)
			NEXT_COMMAND_REUSABLE
			CREATE_EFFECT_AT_POS(EFFECT_EXPLOSION_2,137,21)
			NEXT_COMMAND_REUSABLE
			CREATE_EFFECT_AT_POS(EFFECT_EXPLOSION_3,138,21)
			NEXT_COMMAND_REUSABLE
			CREATE_EFFECT_AT_POS(EFFECT_EXPLOSION_4,139,21)
			NEXT_COMMAND_REUSABLE
			CREATE_EFFECT_AT_POS(EFFECT_EXPLOSION_5,137,22)
			NEXT_COMMAND_REUSABLE
			CREATE_EFFECT_AT_POS(EFFECT_EXPLOSION_6,139,22)
			NEXT_COMMAND_REUSABLE
			CREATE_EFFECT_AT_POS(EFFECT_EXPLOSION_7,137,23)
			NEXT_COMMAND_REUSABLE
			CREATE_EFFECT_AT_POS(EFFECT_EXPLOSION_1,138,23)
			NEXT_COMMAND_REUSABLE
			CREATE_EFFECT_AT_POS(EFFECT_EXPLOSION_1,139,23)
			IF(PLAYER_GOOD,FLAG0>0)
				NEXT_COMMAND_REUSABLE
				ADD_HEART_HEALTH(PLAYER_GOOD,-2500,0)
			ENDIF
			IF(PLAYER_GOOD,FLAG0==0)
				NEXT_COMMAND_REUSABLE
				ADD_HEART_HEALTH(PLAYER0,-2500,1)
			ENDIF
			NEXT_COMMAND_REUSABLE
			ADD_TO_FLAG(PLAYER_GOOD,FLAG4,1)
			NEXT_COMMAND_REUSABLE
			SET_TIMER(PLAYER_GOOD,TIMER2)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER0,FLAG3==1)
	QUICK_INFORMATION(10,"Before you lie the remains of the dungeons of Keepers who had dared to challenge the Wizard. Looks like there's some truth to those rumours after all.....",ALL_PLAYERS)
ENDIF

IF(PLAYER_GOOD,FLAG3==1)
	SET_DOOR(UNLOCKED,42,4)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,SAMURAI,-3,30,10,1000)
ENDIF

IF(PLAYER_GOOD,HEART_HEALTH < 30000)
	IF(PLAYER_GOOD,FLAG0==0)
		NEXT_COMMAND_REUSABLE
		SET_HEART_HEALTH(PLAYER_GOOD, 30000)
		NEXT_COMMAND_REUSABLE
		ADD_HEART_HEALTH(PLAYER0, -25, 0)
		NEXT_COMMAND_REUSABLE
		RANDOMISE_FLAG(PLAYER0,FLAG0,50)
		IF(PLAYER0,FLAG0==1)
			PLAY_MESSAGE(PLAYER0,SPEECH,8)
			QUICK_INFORMATION(0,"What is this?! Strange magic is deflecting harm to the Wizard's heart onto your own!",PLAYER0)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER0,GAME_TURN>=500)
	QUICK_INFORMATION(26,"Strange magic prevents new Libraries from being constructed here. Perhaps there's one around here we could sieze? We're going to need one to take this land.",ALL_PLAYERS)
ENDIF

IF(PLAYER0,GAME_TURN>=2500)
	QUICK_INFORMATION(28,"Powerful adversaries lurk north. Beware.",ALL_PLAYERS)
ENDIF

IF(PLAYER0,GAME_TURN>=5000)
	QUICK_INFORMATION(24,"Rumour has it that the Wizard, despite his gay disposition, is feared by those who oppose him or his ridiculous notions of fairness, equality, and opportunity. But that's just half-witted make-believe, right?",ALL_PLAYERS)
ENDIF

IF(PLAYER0,GAME_TURN>=7500)
	QUICK_INFORMATION(29,"Reports suggest that there are powerful magical artefacts hidden in the caves. We should seek them out.",ALL_PLAYERS)
ENDIF

IF(PLAYER0,RESEARCH>0)
	QUICK_INFORMATION(27,"You have taken control of a Dark Library, which the Wizard buried and guarded to prevent study of the dark arts.",ALL_PLAYERS)
ENDIF

IF_CONTROLS(PLAYER_GOOD,WIZARD==0)
	IF(PLAYER_GOOD,DUNGEON_DESTROYED==0)
		QUICK_OBJECTIVE(30,"The Wizard is defeated, yet I can feel his power lingering.....",PLAYER_GOOD)
	ENDIF
ENDIF

IF(PLAYER0,RESEARCH>81)
	IF(PLAYER_GOOD,FLAG2==1)
		SET_TIMER(PLAYER0,TIMER3)
	ENDIF
ENDIF
