LEVEL_VERSION(1)
SET_GENERATE_SPEED(300)
START_MONEY(ALL_PLAYERS,250000)
MAX_CREATURES(ALL_PLAYERS,40)

ADD_CREATURE_TO_POOL(DRAGON,20)
ADD_CREATURE_TO_POOL(TROLL,20)
ADD_CREATURE_TO_POOL(SORCEROR,20)
ADD_CREATURE_TO_POOL(DARK_MISTRESS,20)
ADD_CREATURE_TO_POOL(ORC,20)
ADD_CREATURE_TO_POOL(BILE_DEMON,20)

CREATURE_AVAILABLE(PLAYER0,DRAGON,1,0)
CREATURE_AVAILABLE(PLAYER0,TROLL,1,0)
CREATURE_AVAILABLE(PLAYER0,SORCEROR,1,0)
CREATURE_AVAILABLE(PLAYER0,DARK_MISTRESS,1,0)
CREATURE_AVAILABLE(PLAYER0,ORC,1,0)
CREATURE_AVAILABLE(PLAYER0,BILE_DEMON,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,BRIDGE,1,0)
ROOM_AVAILABLE(PLAYER0,WORKSHOP,1,0)
ROOM_AVAILABLE(PLAYER0,PRISON,1,0)
ROOM_AVAILABLE(PLAYER0,TORTURE,1,0)
ROOM_AVAILABLE(PLAYER0,BARRACKS,1,0)
ROOM_AVAILABLE(PLAYER0,GRAVEYARD,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_CALL_TO_ARMS,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_CONCEAL,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_HOLD_AUDIENCE,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_HEAL_CREATURE,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_PROTECT,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_TIME_BOMB,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,MAGIC,1,0)
DOOR_AVAILABLE(PLAYER0,SECRET,1,0)

SET_CREATURE_ARMOUR(AVATAR,255)
SET_CREATURE_HEALTH(AVATAR,7895)
SET_CREATURE_STRENGTH(AVATAR,255)
SET_CREATURE_INSTANCE(AVATAR,3,REBOUND,3)
SET_CREATURE_INSTANCE(AVATAR,5,LIGHTNING,5)
SET_CREATURE_PROPERTY(KNIGHT,LORD,0)

SET_GAME_RULE(ImpWorkExperience,500)

SET_MUSIC(5)

CREATE_PARTY(ONE)
	ADD_TO_PARTY(ONE,GIANT,6,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(ONE,BARBARIAN,6,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(ONE,BARBARIAN,6,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(ONE,DWARFA,7,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(ONE,DWARFA,7,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(ONE,ARCHER,7,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(ONE,ARCHER,7,0,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(TWO)
	ADD_TO_PARTY(TWO,GIANT,5,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(TWO,BARBARIAN,6,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(TWO,BARBARIAN,6,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(TWO,DWARFA,6,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(TWO,DWARFA,6,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(TWO,ARCHER,4,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(TWO,ARCHER,4,0,ATTACK_DUNGEON_HEART,0)
    
CREATE_PARTY(THREE)
	ADD_TO_PARTY(THREE,MONK,8,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(THREE,WIZARD,6,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(THREE,WITCH,6,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(THREE,FAIRY,7,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(THREE,TIME_MAGE,7,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(THREE,MONK,8,0,ATTACK_DUNGEON_HEART,0)

SET_FLAG(PLAYER0,FLAG0,0)
SET_FLAG(PLAYER_GOOD,FLAG0,0)

SET_BOX_TOOLTIP(0,"Receive Imps")

SET_POWER_CONFIGURATION(POWER_TIME_BOMB,Castability,"ONLY_DIGGERS",0)

QUICK_OBJECTIVE(0,"The blithesome townsfolk have never had a care in the world; they've always been so gay that they wouldn't know dolour or anguish if they hit them in the face with a morning star. Ensure that their navet is their undoing.",ALL_PLAYERS)
HEART_LOST_QUICK_OBJECTIVE(1,"Fie! Your crushing defeat has rejoiced the townsfolk; their gleeful mafficking is unbearable! I've never seen a society so gay! You are an absolute disgrace!",ALL_PLAYERS)

IF(PLAYER0,GAME_TURN > 500)
    QUICK_INFORMATION(2,"Poverty is an alien concept to the townsfolk: they all live a gay life of luxury in their castles, palaces, manors, mansions, chteaux, etc. They're so nave, they probably won't even realise anything amiss!",ALL_PLAYERS)
ENDIF

IF(PLAYER0,GAME_TURN > 1000)
    QUICK_INFORMATION(3,"The folk have a couple of underground money vaults, which are empty at the moment; their coffers have evidently been squandered on their undeserved luxuries and gaieties. If we commandeer the vaults, that's them snookered, surely. There are gems within the vaults, which have been funding their extravagant lifestyles; now, they can fund our dungeon instead.",ALL_PLAYERS)
ENDIF

IF(PLAYER0,TOTAL_GOLD_MINED > 0)
    QUICK_INFORMATION(4,"Uh-oh! It seems that stealing the townsfolk's source of competence has revealed our presence to a swarm of intrepid heroes who are determined to rid the world of evil! They are launching a premptive strike; we must hurry to prepare our defences.",ALL_PLAYERS)
    SET_TIMER(PLAYER_GOOD,TIMER0)
	DISPLAY_COUNTDOWN(PLAYER_GOOD, TIMER0, 4000, 1)
ENDIF

IF(PLAYER_GOOD,TIMER0 > 2000)
	QUICK_INFORMATION(5,"The lord has taken a keen interest in the coming battle, with great anticipation; in fact, he will be cordinating the offensives himself, for various factions of goodly heroes want to claim the honour of ousting you. He's a skilled cordinator; he will ensure they're done in a fair and just manner, so that everyone gets an equal share of the glory. What a weirdo...",ALL_PLAYERS)
ENDIF

IF(PLAYER0,GAME_TURN > 2000)
	QUICK_INFORMATION(6,"The lord is a cranky individual, full of bonhomie. If you can wipe the grin off the gladsome crackpot's face, it would strike a blow to the do-gooders' morale; the possibility of defeat has never crossed their happy minds. Dampen their gay spirits; it's one of your raisons d'tre, after all.",ALL_PLAYERS)
ENDIF

IF(PLAYER_GOOD,TIMER0 > 4000)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,DWARFA,-1,10,6,0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,DWARFA,-2,10,6,0)
ENDIF

IF(PLAYER_GOOD,TIMER0 > 7000)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,DWARFA,5,10,6,0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,DWARFA,6,10,6,0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,TWO,7,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,TWO,8,1)
ENDIF

IF(PLAYER_GOOD,TIMER0 > 10000)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,DWARFA,-1,10,6,0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,DWARFA,-2,10,6,0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,TWO,5,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,TWO,6,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,TWO,7,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,TWO,8,1)
	IF_CONTROLS(PLAYER_GOOD,TOTAL_CREATURES == 0)
		QUICK_OBJECTIVE(7,"This battle has also now caught the attention of some chthonic demons. They seem to think that was only a warm-up excercise, so prepare for a tough battle ahead.",ALL_PLAYERS)
		SET_TIMER(PLAYER_GOOD,TIMER1)
		DISPLAY_COUNTDOWN(PLAYER_GOOD, TIMER1, 4000, 1)
	ENDIF
ENDIF

IF(PLAYER_GOOD,TIMER1 > 4000)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,ONE,5,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,ONE,6,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,ONE,7,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,ONE,8,1)
    ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,THIEF,-1,10,4,0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,THIEF,-2,10,4,0)
ENDIF

IF(PLAYER_GOOD,TIMER1 > 7000)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,ONE,5,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,ONE,6,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,ONE,7,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,ONE,8,1)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,GIANT,-1,5,5,0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,GIANT,-2,5,5,0)
ENDIF

IF(PLAYER_GOOD,TIMER1 > 9000)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,DWARFA,5,5,7,0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,DWARFA,6,5,7,0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,DWARFA,7,5,7,0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,DWARFA,8,5,7,0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,GIANT,-1,5,5,0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,GIANT,-2,5,5,0)
ENDIF

IF(PLAYER_GOOD,TIMER1 > 10000)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,THREE,1,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,THREE,2,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,THREE,3,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,THREE,4,1)
    ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,THIEF,-1,5,10,0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,THIEF,-2,5,10,0)
    ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,MONK,5,3,6,0)
    ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,MONK,6,3,6,0)
    ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,MONK,7,3,6,0)
    ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,MONK,8,3,6,0)
	IF_CONTROLS(PLAYER_GOOD,TOTAL_CREATURES == 0)
		QUICK_OBJECTIVE(8,"More demons have come to watch, and their cheers for you are rending the air! The lord, meanwhile, looks on aghast. However, I feel he still has an ace up his sleeve, so do not become complacent; prepare for another long, hard mle.",ALL_PLAYERS)
		SET_TIMER(PLAYER_GOOD,TIMER2)
		DISPLAY_COUNTDOWN(PLAYER_GOOD, TIMER2, 7000, 1)
	ENDIF
ENDIF

IF(PLAYER_GOOD,TIMER2 > 7000)
    ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,SAMURAI,-1,5,5,0)
    ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,SAMURAI,-2,5,5,0)
    SET_TIMER(PLAYER_GOOD,TIMER3)
ENDIF

IF(PLAYER_GOOD,TIMER3 > 600)
	IF(PLAYER_GOOD,FLAG0 < 10)
		NEXT_COMMAND_REUSABLE
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,SAMURAI,5,5,5,0)
		NEXT_COMMAND_REUSABLE
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,SAMURAI,6,5,5,0)
		NEXT_COMMAND_REUSABLE
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,SAMURAI,7,5,5,0)
		NEXT_COMMAND_REUSABLE
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,SAMURAI,8,5,5,0)
		NEXT_COMMAND_REUSABLE
		ADD_TO_FLAG(PLAYER_GOOD,FLAG0,1)
		NEXT_COMMAND_REUSABLE
		SET_TIMER(PLAYER_GOOD,TIMER3)
	ENDIF
    HEART_LOST_QUICK_OBJECTIVE(9,"Well, that was quite a rum do; you were doing so well. The demons have left, dejected at having lost an opportunity for a good feast.",ALL_PLAYERS)
ENDIF

IF(PLAYER_GOOD,FLAG0 >= 10)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,SAMURAI,1,5,5,0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,SAMURAI,2,5,5,0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,SAMURAI,3,5,5,0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,SAMURAI,4,5,5,0)
	IF_CONTROLS(PLAYER_GOOD,TOTAL_CREATURES == 0)
		QUICK_OBJECTIVE(10,"The shock troops lie defeated. The demons' cheers and roars are so deafening, the lord is getting desperate...",ALL_PLAYERS)
		SET_TIMER(PLAYER_GOOD,TIMER4)
		DISPLAY_COUNTDOWN(PLAYER_GOOD, TIMER4, 5000, 1)
	ENDIF
ENDIF

IF(PLAYER_GOOD,TIMER4 > 2000)
    QUICK_OBJECTIVE(11,"Spies report that the lord will be sending his panoplied elite soldiers against you.",ALL_PLAYERS)
ENDIF

IF(PLAYER_GOOD,TIMER4 > 5000)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,KNIGHT,-1,15,10,0)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,KNIGHT,-2,15,10,0)
	IF_CONTROLS(PLAYER_GOOD,TOTAL_CREATURES == 0)
        QUICK_OBJECTIVE(12,"The lord would dearly love to confront you tte--tte; you are his new bte noire! But he'll have to get past your stalwart army first. He's the last man standing, so it's time to deliver the coup de grce!",ALL_PLAYERS)
		SET_TIMER(PLAYER_GOOD,TIMER5)
		DISPLAY_COUNTDOWN(PLAYER_GOOD, TIMER5, 5000, 1)
	ENDIF
ENDIF

IF(PLAYER_GOOD,TIMER5 > 5000)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,AVATAR,DRAWFROM(-1,-2),1,10,0)
    QUICK_INFORMATION(13,"The lord is not only a mle combat ace: he can cast a deflexion shield, and he is an expert in fulgural magic. Also, is that some kind of super armour? Egads!",ALL_PLAYERS)
	IF_CONTROLS(PLAYER_GOOD,TOTAL_CREATURES == 0)
        QUICK_OBJECTIVE(14,"Marvellous! The town's defenders are vanquished, and the sound of the townsfolk's gay merrymaking has been replaced with screams of terror as they flee for their lives! Music to my (and the demons') ears!",ALL_PLAYERS)
		WIN_GAME
	ENDIF
ENDIF

IF_AVAILABLE(PLAYER0,POWER_TIME_BOMB >= 1)
    QUICK_INFORMATION(15,"Your erudite researchers have devised a new magic for the good of evil: the Time Bomb spell. When cast, the target will willingly sacrifice themself by bombing an enemy, if they can find one. Its pice de rsistance, however, is the fact that the target's fate is sealed from the moment of casting, so use it carefully.",ALL_PLAYERS)
    SET_TIMER(PLAYER0,TIMER0)
    IF(PLAYER0,TIMER0 > 300)
        QUICK_INFORMATION(16,"I've just noticed something: this is no ordinary Time Bomb; it can be attached to any creature. This could prove useful...",ALL_PLAYERS)
    ENDIF
ENDIF

IF(PLAYER0,FLAG0 > 0)
    NEXT_COMMAND_REUSABLE
    ADD_CREATURE_TO_LEVEL(PLAYER0,IMP,PLAYER0,30,10,0)
    NEXT_COMMAND_REUSABLE
    SET_FLAG(PLAYER0,FLAG0,0)
ENDIF

IF(PLAYER0,BOX0_ACTIVATED == 1)
  	SET_FLAG(PLAYER0,FLAG0,1)
ENDIF

IF(PLAYER0,BOX0_ACTIVATED == 2)
  	SET_FLAG(PLAYER0,FLAG0,1)
ENDIF