LEVEL_VERSION(1)

SET_GENERATE_SPEED(600)

COMPUTER_PLAYER(PLAYER0,0)

START_MONEY(PLAYER0,100000)
START_MONEY(PLAYER1,20000)

MAX_CREATURES(PLAYER0,60)
MAX_CREATURES(PLAYER1,35)

ADD_CREATURE_TO_POOL(TROLL,4)
ADD_CREATURE_TO_POOL(SORCEROR,15)
ADD_CREATURE_TO_POOL(BILE_DEMON,25)
ADD_CREATURE_TO_POOL(DARK_MISTRESS,7)
ADD_CREATURE_TO_POOL(DRAGON,20)
ADD_CREATURE_TO_POOL(HELL_HOUND,6)
ADD_CREATURE_TO_POOL(ORC,22)
ADD_CREATURE_TO_POOL(HORNY,6)
ADD_CREATURE_TO_POOL(TENTACLE,5)

REM	Creature availability
CREATURE_AVAILABLE(PLAYER1,TROLL,1,0)
CREATURE_AVAILABLE(PLAYER0,SORCEROR,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,BILE_DEMON,1,0)
CREATURE_AVAILABLE(PLAYER0,DARK_MISTRESS,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,DRAGON,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,HELL_HOUND,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,ORC,1,0)
CREATURE_AVAILABLE(PLAYER0,HORNY,1,0)
CREATURE_AVAILABLE(PLAYER0,TENTACLE,1,0)

REM	Room availability
ROOM_AVAILABLE(ALL_PLAYERS,TREASURE,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,LAIR,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,GARDEN,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,TRAINING,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,RESEARCH,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,WORKSHOP,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,BARRACKS,1,0)
ROOM_AVAILABLE(PLAYER0,PRISON,1,0)
ROOM_AVAILABLE(PLAYER0,TORTURE,1,0)
ROOM_AVAILABLE(PLAYER0,TEMPLE,1,0)
ROOM_AVAILABLE(PLAYER0,GRAVEYARD,1,0)

REM	Spells availability
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HAND,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_IMP,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SLAP,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SIGHT,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_OBEY,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CALL_TO_ARMS,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HOLD_AUDIENCE,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_HEAL_CREATURE,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SPEED,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_LIGHTNING,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_PROTECT,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CONCEAL,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_DISEASE,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_CHICKEN,1,0)

REM	Doors and traps availability
DOOR_AVAILABLE(ALL_PLAYERS,STEEL,1,0)
DOOR_AVAILABLE(ALL_PLAYERS,MAGIC,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,WORD_OF_POWER,1,0)

CREATE_PARTY(INSECTS)
	ADD_TO_PARTY(INSECTS,FLY,10,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(INSECTS,FLY,10,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(INSECTS,BUG,10,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(INSECTS,BUG,10,0,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(INSECTS,SPIDER,10,0,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(RPG)
	ADD_TO_PARTY(RPG,WIZARD,10,300,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(RPG,BARBARIAN,10,300,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(RPG,KNIGHT,10,300,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(RPG,WITCH,10,300,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(RPG,SAMURAI,10,300,ATTACK_DUNGEON_HEART,0)

REM Player can use vampires, buff the avatar to make sure fighting him will still be a challenge
REM Disables his ranged spell so he uses his powerful melee attack more
SET_CREATURE_STRENGTH(AVATAR,255)
SET_CREATURE_ARMOUR(AVATAR,255)
SET_CREATURE_CONFIGURATION(AVATAR,Luck,255)
SET_CREATURE_CONFIGURATION(AVATAR,BaseSpeed,85)
SET_CREATURE_INSTANCE(AVATAR,7,NULL,7)
SET_CREATURE_INSTANCE(AVATAR,8,REBOUND,8)
SET_CREATURE_INSTANCE(AVATAR,9,NULL,9)

CREATE_PARTY(BIG_BOY)
	ADD_TO_PARTY(BIG_BOY,AVATAR,10,200000,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(BRUTES)
	ADD_TO_PARTY(BRUTES,GIANT,10,500,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(BRUTES,GIANT,10,500,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(BRUTES,GIANT,10,500,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(BRUTES,BARBARIAN,10,500,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(BRUTES,BARBARIAN,10,500,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(BRUTES,BARBARIAN,10,500,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(MAGICIANS)
	ADD_TO_PARTY(MAGICIANS,WIZARD,10,550,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(MAGICIANS,FAIRY,10,550,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(MAGICIANS,WITCH,10,550,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(MAGICIANS,SAMURAI,10,550,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(MAGICIANS,MONK,10,550,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(MAGES)
	ADD_TO_PARTY(MAGES,SORCEROR,10,500,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(MAGES,WIZARD,10,500,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(MAGES,MONK,10,500,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(DWARVES)
	ADD_TO_PARTY(DWARVES,DWARFA,10,650,STEAL_GOLD,0)
	ADD_TO_PARTY(DWARVES,DWARFA,10,650,STEAL_GOLD,0)
	ADD_TO_PARTY(DWARVES,DWARFA,10,650,STEAL_GOLD,0)
	ADD_TO_PARTY(DWARVES,ARCHER,10,500,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DWARVES,ARCHER,10,500,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DWARVES,ARCHER,10,500,ATTACK_DUNGEON_HEART,0)

REM ****************************************************************************

QUICK_OBJECTIVE(1,"After his great-grandfather was killed by Red Keeper a century ago, now the young Avatar becomes the new overlord of this underground world. He and his army are much stronger than the ones in the past. This decisive battle will show who is really qualified to rule in here. Red Keeper is also waiting for an opportunity to interfere your course.",PLAYER1)


REM Avatar is buffed to very powerful so don't allow convertion
IF(PLAYER0,GAME_TURN>=150)
	SET_CREATURE_PROPERTY(AVATAR,NO_IMPRISONMENT,1)
	QUICK_INFORMATION(3,"You cannot capture and convert the Avatar this time. Kill him with no mercy! That's what a truly evil Keeper should do.",PLAYER1)
ENDIF

IF(PLAYER1,PRISON>0)
	ROOM_AVAILABLE(PLAYER1,PRISON,1,1)
ENDIF

IF(PLAYER1,TORTURE>0)
	ROOM_AVAILABLE(PLAYER1,TORTURE,1,1)
ENDIF

IF(PLAYER1,TEMPLE>0)
	ROOM_AVAILABLE(PLAYER1,TEMPLE,1,1)
ENDIF


IF(PLAYER1,REWARDED[HORNY] >= 1)
  QUICK_INFORMATION(2, "You can only summon one horned reaper from your temple.", PLAYER1)
  REMOVE_SACRIFICE_RECIPE(TROLL,BILE_DEMON,DARK_MISTRESS)
ENDIF

IF(PLAYER1,SKELETONS_RAISED >= 10)
	SET_GAME_RULE(PrisonSkeletonChance,0)
	QUICK_INFORMATION(11, "You can't get more skeletons from prison.", PLAYER1)
ENDIF

IF(PLAYER1,GHOSTS_RAISED >= 10)
	SET_GAME_RULE(GhostConvertChance,0)
	QUICK_INFORMATION(12, "You can't get more ghosts from torture room.", PLAYER1)
ENDIF

IF(PLAYER1,CREATURES_CONVERTED >= 15)
    SET_GAME_RULE(TortureConvertChance,0)
	SET_GAME_RULE(TortureDeathChance,100)
	QUICK_INFORMATION(13, "You can't convert more creatures from torture room.", PLAYER1)
ENDIF

IF(PLAYER1,VAMPIRES_RAISED >= 3)
	SET_GAME_RULE(BodiesForVampire,12)
ENDIF

IF(PLAYER1,VAMPIRES_RAISED >= 6)
	SET_GAME_RULE(BodiesForVampire,15)
ENDIF

IF(PLAYER1,VAMPIRES_RAISED >= 8)
    SET_GAME_RULE(BodiesForVampire,255)
	QUICK_INFORMATION(14, "You can't get more vampires from graveyard.", PLAYER1)
ENDIF

IF_ACTION_POINT(2,PLAYER1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DWARVES,2,1)
ENDIF

IF_ACTION_POINT(3,PLAYER1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,INSECTS,3,3)
ENDIF

IF_ACTION_POINT(4,PLAYER1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,MAGICIANS,4,1)
ENDIF

IF_ACTION_POINT(7,PLAYER1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,MAGES,7,2)
ENDIF

SET_FLAG(PLAYER_GOOD,FLAG1,1)

REM Computer keeper gets free lv10 imps and infinite golds
SET_TIMER(PLAYER0,TIMER7)

IF(PLAYER0,TIMER7>=400)
IF(PLAYER0,IMP<=5)
	NEXT_COMMAND_REUSABLE
	ADD_CREATURE_TO_LEVEL(PLAYER0,IMP,PLAYER0,1,10,0)
	NEXT_COMMAND_REUSABLE
	SET_TIMER(PLAYER0,TIMER7)
ENDIF
ENDIF

IF(PLAYER0,MONEY < 20000)
  NEXT_COMMAND_REUSABLE
  ADD_GOLD_TO_PLAYER(PLAYER0,1000)
ENDIF

REM Taking down the AVATAR******************************************************
IF(PLAYER_GOOD,FLAG1 == 1)
	IF_CONTROLS(PLAYER_GOOD,AVATAR <= 0)
		IF(PLAYER_GOOD,DUNGEON_DESTROYED == 1)
		SET_TIMER(PLAYER_GOOD,TIMER0)
		QUICK_OBJECTIVE(6,"The Avatar and the hero dungeon are destroyed. But as you may have guessed, this is not the end.",PLAYER1)
		SET_FLAG(PLAYER_GOOD,FLAG1,2)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER_GOOD,FLAG1==2)
IF_SLAB_OWNER(24,63,PLAYER0)
		ADD_CREATURE_TO_LEVEL(PLAYER0,IMP,8,2,10,0)
		SET_TIMER(PLAYER0,TIMER5)
		ENDIF
	ROOM_AVAILABLE(PLAYER0,SCAVENGER,1,1)
ENDIF

IF(PLAYER0,TIMER5>=300)
	SET_DOOR(UNLOCKED,24,63)
ENDIF

REM Optional: taking down PLAYER0***********************************************
REM ****************************************************************************

IF(PLAYER0,DUNGEON_DESTROYED == 1)
	ROOM_AVAILABLE(PLAYER1,BRIDGE,1,1)
	IF(PLAYER_GOOD,FLAG1 == 1)
		QUICK_OBJECTIVE(9,"Red Keeper has been destroyed, and his only Horny guards desperately revenge for him.",PLAYER1)
		ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,HORNY,5,8,10,0)
	ENDIF
ENDIF

REM AVATAR defeated. Final wave approaching.************************************
REM ****************************************************************************

IF(PLAYER_GOOD,TIMER0 >= 1000)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,MAGICIANS,1,1)
	ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,BRUTES,-2,DUNGEON,1,10,100)
	ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,DWARVES,-3,DUNGEON,1,10,100)
	ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,DWARVES,-4,DUNGEON,1,10,100)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,BRUTES,1,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,MAGICIANS,1,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,BRUTES,1,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DWARVES,1,1)
ENDIF

IF(PLAYER_GOOD,TIMER0 >= 1133)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DWARVES,1,1)
	REM PRINT("HA HA ROBBO (LOW COUNT) YOU ARE DEAD")
ENDIF

IF(PLAYER_GOOD,TIMER0 >= 1366)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DWARVES,1,1)
ENDIF

IF(PLAYER_GOOD,TIMER0 >= 1466)
	REM PRINT("I LIVE AGAIN. The Avatar.")
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DWARVES,-1,1)
ENDIF

REM The Avatar is resurrected(Big_Boy)
IF(PLAYER_GOOD,TIMER0 >= 1600)
	PLAY_MESSAGE(PLAYER0,SPEECH,92)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,RPG,-1,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,MAGICIANS,-1,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,BRUTES,-1,1)
ENDIF

IF(PLAYER_GOOD,TIMER0 >= 2000)
	QUICK_OBJECTIVE(7,"What is this? The Avatar has been resurrected and comes again!",-1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,BIG_BOY,-1,1)
	SET_FLAG(PLAYER_GOOD,FLAG2,1)
ENDIF

IF(PLAYER_GOOD,FLAG2 == 1)
	IF_CONTROLS(PLAYER_GOOD,TOTAL_CREATURES <= 0)
		QUICK_OBJECTIVE(10,"The pathetic Avatar and his foolish armies are all eliminated! Now the only thing that stands between you and victory is Red, your nemesis. This is the last dungeon he rules, time to claim it back and finish him!",PLAYER1)
		IF(PLAYER0,DUNGEON_DESTROYED == 1)
			QUICK_OBJECTIVE(16,"The final victory is yours! This marks the end of the history of Red Keeper, and the beginning of yours, Blue Keeper instead! Thanks for playing this campaign--by Gatrithor",PLAYER1)
		REM "You are victorious! All hail the new lord of shadows!"
		PLAY_MESSAGE(PLAYER1,SPEECH,109)
		WIN_GAME
		ENDIF
	ENDIF
ENDIF


