LEVEL_VERSION(1)
SET_GENERATE_SPEED(400)
START_MONEY(ALL_PLAYERS,22500)
MAX_CREATURES(ALL_PLAYERS,30)

SET_GAME_RULE(ImpWorkExperience,25)
SET_CREATURE_PROPERTY(IMP,NO_CORPSE_ROTTING,1)
SET_ROOM_CONFIGURATION(TEMPLE,Properties,CANNOT_BE_SOLD,CANNOT_VANDALIZE)


QUICK_OBJECTIVE(1,"Your rival dares to contest your claim over this war-torn realm, Keeper! The powers of both light and dark held in the heart of this domain will aid you in this fight, but be quick, lest they turn them on you instead!")

ADD_CREATURE_TO_POOL(DEMONSPAWN,20)
ADD_CREATURE_TO_POOL(TROLL,20)
ADD_CREATURE_TO_POOL(SPIDER,20)
ADD_CREATURE_TO_POOL(TENTACLE,20)
ADD_CREATURE_TO_POOL(SORCEROR,20)
ADD_CREATURE_TO_POOL(ORC,20)
ADD_CREATURE_TO_POOL(DARK_MISTRESS,20)

CREATURE_AVAILABLE(ALL_PLAYERS,DEMONSPAWN,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,TROLL,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,SPIDER,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,TENTACLE,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,SORCEROR,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,ORC,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,DARK_MISTRESS,1,0)

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,BRIDGE,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,GUARD_POST,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,WORKSHOP,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,TORTURE,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,BARRACKS,1,0)

MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HAND,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SLAP,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_SPEED,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_CONCEAL,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HEAL_CREATURE,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_PROTECT,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CHICKEN,1,0)

TRAP_AVAILABLE(ALL_PLAYERS,POISON_GAS,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,LIGHTNING,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,WORD_OF_POWER,1,0)

DOOR_AVAILABLE(ALL_PLAYERS,STEEL,1,0)
DOOR_AVAILABLE(ALL_PLAYERS,MAGIC,1,0)

SET_BOX_TOOLTIP(22,"ANNOYANCEBOX: Send a Fart to your Enemy.")

REM # "FARTBOX: All friendly minions get happy."
IF(PLAYER0,BOX22_ACTIVATED > 0)
	NEXT_COMMAND_REUSABLE
	PLAY_MESSAGE(PLAYER1,SOUND,95)
ENDIF

IF(PLAYER0,BOX22_ACTIVATED >= 1)
	NEXT_COMMAND_REUSABLE
	SET_FLAG(PLAYER0,BOX22_ACTIVATED,0)
	NEXT_COMMAND_REUSABLE
	ADD_OBJECT_TO_LEVEL(SPECBOX_CUSTOM,1,22,PLAYER0)
ENDIF


SET_BOX_TOOLTIP(23,"ANNOYANCEBOX: Send a Fart to your Enemy.")

REM # "FARTBOX: Fully restores your Dungeon Heart."
IF(PLAYER1,BOX23_ACTIVATED > 0)
	NEXT_COMMAND_REUSABLE
	PLAY_MESSAGE(PLAYER0,SOUND,94)
ENDIF

IF(PLAYER1,BOX23_ACTIVATED >= 1)
	NEXT_COMMAND_REUSABLE
	SET_FLAG(PLAYER1,BOX23_ACTIVATED,0)
	NEXT_COMMAND_REUSABLE
	ADD_OBJECT_TO_LEVEL(SPECBOX_CUSTOM,2,23,PLAYER1)
ENDIF


CREATE_PARTY(PRISONPARTY)
	ADD_TO_PARTY(PRISONPARTY,ARCHER,8,250,DEFEND_LOCATION,0)
	ADD_TO_PARTY(PRISONPARTY,ARCHER,8,250,DEFEND_LOCATION,0)
	ADD_TO_PARTY(PRISONPARTY,ARCHER,8,250,DEFEND_LOCATION,0)
	ADD_TO_PARTY(PRISONPARTY,ARCHER,8,250,DEFEND_LOCATION,0)
	ADD_TO_PARTY(PRISONPARTY,WIZARD,8,250,DEFEND_LOCATION,0)
	ADD_TO_PARTY(PRISONPARTY,WIZARD,8,250,DEFEND_LOCATION,0)
	ADD_TO_PARTY(PRISONPARTY,BARBARIAN,8,250,DEFEND_LOCATION,0)
	ADD_TO_PARTY(PRISONPARTY,BARBARIAN,8,250,DEFEND_LOCATION,0)
	ADD_TO_PARTY(PRISONPARTY,BARBARIAN,8,250,DEFEND_LOCATION,0)
	ADD_TO_PARTY(PRISONPARTY,BARBARIAN,8,250,DEFEND_LOCATION,0)
	ADD_TO_PARTY(PRISONPARTY,MONK,8,250,DEFEND_LOCATION,0)
	ADD_TO_PARTY(PRISONPARTY,MONK,8,250,DEFEND_LOCATION,0)
	ADD_TO_PARTY(PRISONPARTY,MONK,8,250,DEFEND_LOCATION,0)
	ADD_TO_PARTY(PRISONPARTY,MONK,8,250,DEFEND_LOCATION,0)


CREATE_PARTY(GRAVEYARDERS)
	ADD_TO_PARTY(GRAVEYARDERS,KNIGHT,10,250,DEFEND_ROOMS,0)
	ADD_TO_PARTY(GRAVEYARDERS,KNIGHT,10,250,DEFEND_ROOMS,0)
	ADD_TO_PARTY(GRAVEYARDERS,FAIRY,10,250,DEFEND_ROOMS,0)
	ADD_TO_PARTY(GRAVEYARDERS,FAIRY,10,250,DEFEND_ROOMS,0)
	ADD_TO_PARTY(GRAVEYARDERS,FAIRY,10,250,DEFEND_ROOMS,0)
	ADD_TO_PARTY(GRAVEYARDERS,GIANT,10,250,DEFEND_ROOMS,0)
	ADD_TO_PARTY(GRAVEYARDERS,GIANT,10,250,DEFEND_ROOMS,0)
	ADD_TO_PARTY(GRAVEYARDERS,SAMURAI,10,250,DEFEND_ROOMS,0)
	ADD_TO_PARTY(GRAVEYARDERS,SAMURAI,10,250,DEFEND_ROOMS,0)
	ADD_TO_PARTY(GRAVEYARDERS,SAMURAI,10,250,DEFEND_ROOMS,0)

CREATE_PARTY(INBETWEEN)
	ADD_TO_PARTY(INBETWEEN,BARBARIAN,10,250,DEFEND_LOCATION,0)
	ADD_TO_PARTY(INBETWEEN,BARBARIAN,10,250,DEFEND_LOCATION,0)
	ADD_TO_PARTY(INBETWEEN,DRUID,10,250,DEFEND_LOCATION,0)
	ADD_TO_PARTY(INBETWEEN,DRUID,10,250,DEFEND_LOCATION,0)
	ADD_TO_PARTY(INBETWEEN,FAIRY,10,250,DEFEND_LOCATION,0)
	ADD_TO_PARTY(INBETWEEN,FAIRY,10,250,DEFEND_LOCATION,0)
	ADD_TO_PARTY(INBETWEEN,TIME_MAGE,10,250,DEFEND_LOCATION,0)
	ADD_TO_PARTY(INBETWEEN,TIME_MAGE,10,250,DEFEND_LOCATION,0)
	ADD_TO_PARTY(INBETWEEN,SAMURAI,10,250,DEFEND_LOCATION,0)
	ADD_TO_PARTY(INBETWEEN,SAMURAI,10,250,DEFEND_LOCATION,0)

CREATE_PARTY(SACREDGUARDIANS)
	ADD_TO_PARTY(SACREDGUARDIANS,BARBARIAN,10,250,DEFEND_LOCATION,0)
	ADD_TO_PARTY(SACREDGUARDIANS,BARBARIAN,10,250,DEFEND_LOCATION,0)
	ADD_TO_PARTY(SACREDGUARDIANS,DRUID,10,250,DEFEND_LOCATION,0)
	ADD_TO_PARTY(SACREDGUARDIANS,DRUID,10,250,DEFEND_LOCATION,0)
	ADD_TO_PARTY(SACREDGUARDIANS,FAIRY,10,250,DEFEND_LOCATION,0)
	ADD_TO_PARTY(SACREDGUARDIANS,FAIRY,10,250,DEFEND_LOCATION,0)
	ADD_TO_PARTY(SACREDGUARDIANS,TIME_MAGE,10,250,DEFEND_LOCATION,0)
	ADD_TO_PARTY(SACREDGUARDIANS,TIME_MAGE,10,250,DEFEND_LOCATION,0)
	ADD_TO_PARTY(SACREDGUARDIANS,SAMURAI,10,250,DEFEND_LOCATION,0)
	ADD_TO_PARTY(SACREDGUARDIANS,SAMURAI,10,250,DEFEND_LOCATION,0)
	ADD_TO_PARTY(SACREDGUARDIANS,KNIGHT,10,250,DEFEND_LOCATION,0)
	ADD_TO_PARTY(SACREDGUARDIANS,AVATAR,10,250,DEFEND_LOCATION,0)

CREATE_PARTY(TEMPLEPARTY)
	ADD_TO_PARTY(TEMPLEPARTY,WITCH,10,250,DEFEND_LOCATION,0)
	ADD_TO_PARTY(TEMPLEPARTY,WITCH,10,250,DEFEND_LOCATION,0)
	ADD_TO_PARTY(TEMPLEPARTY,WITCH,10,250,DEFEND_LOCATION,0)
	ADD_TO_PARTY(TEMPLEPARTY,WITCH,10,250,DEFEND_LOCATION,0)


CREATE_PARTY(DISTURBANCE)
	ADD_TO_PARTY(DISTURBANCE,ARCHER,6,250,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DISTURBANCE,ARCHER,6,250,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DISTURBANCE,THIEF,6,250,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DISTURBANCE,THIEF,6,250,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DISTURBANCE,BARBARIAN,6,250,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DISTURBANCE,WIZARD,6,250,ATTACK_DUNGEON_HEART,0)
	ADD_TO_PARTY(DISTURBANCE,DWARFA,6,250,ATTACK_DUNGEON_HEART,0)



REM PLAYER RED

IF_ACTION_POINT(8,PLAYER0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,PRISONPARTY,-2,1)
	QUICK_INFORMATION(6,"You near the ancient Stronghold at the heart of this realm. Be wary, keeper, for the path ahead is wrought with danger, yet power awaits, should you have the mettle to claim it",PLAYER0)
ENDIF

IF_ACTION_POINT(9,PLAYER0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,GRAVEYARDERS,4,1)
	PLAY_MESSAGE(PLAYER0,SPEECH,96)
ENDIF

IF_ACTION_POINT(11,PLAYER0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,INBETWEEN,-5,1)
ENDIF

IF_ACTION_POINT(14,PLAYER0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,INBETWEEN,14,1)
ENDIF

IF_ACTION_POINT(16,PLAYER0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,SACREDGUARDIANS,-4,1)
ENDIF

IF_ACTION_POINT(6,PLAYER0)
	SET_TIMER(PLAYER0,TIMER0)
	QUICK_INFORMATION(3,"The heroes of this realm will not tolerate this transgression, Keeper. Prepare for their retribution!",PLAYER0)
ENDIF

IF(PLAYER0,TIMER0 >= 8400)
	NEXT_COMMAND_REUSABLE
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DISTURBANCE,18,1)
	NEXT_COMMAND_REUSABLE
	SET_TIMER(PLAYER0,TIMER0)
	CHANGE_SLAB_TYPE(5,30,DIRT,NONE)
	CHANGE_SLAB_TYPE(5,31,DIRT,NONE)
	CHANGE_SLAB_TYPE(5,32,DIRT,NONE)
	CHANGE_SLAB_TYPE(5,33,DIRT,NONE)
ENDIF

IF(PLAYER0,PRISON >= 1)
	ROOM_AVAILABLE(PLAYER0,PRISON,1,1)
ENDIF

IF(PLAYER0,GRAVEYARD >= 1)
	ROOM_AVAILABLE(PLAYER0,GRAVEYARD,1,1)
ENDIF

IF(PLAYER0,VAMPIRE >= 5)
	NEXT_COMMAND_REUSABLE
	KILL_CREATURE(PLAYER0,VAMPIRE,LEAST_EXPERIENCED,1)
ENDIF

IF(PLAYER0,SKELETON >= 10)
	NEXT_COMMAND_REUSABLE
	KILL_CREATURE(PLAYER0,SKELETON,LEAST_EXPERIENCED,1)
ENDIF

IF(PLAYER0,TOTAL_CREATURES >= 50)
	NEXT_COMMAND_REUSABLE
	SET_CREATURE_TENDENCIES(PLAYER0,IMPRISON,0)
ENDIF

IF(PLAYER0,TOTAL_CREATURES <=50)
	NEXT_COMMAND_REUSABLE
	SET_CREATURE_TENDENCIES(PLAYER0,IMPRISON,1)
ENDIF



REM PLAYER BLUE

IF_ACTION_POINT(7,PLAYER1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,PRISONPARTY,-1,1)
	QUICK_INFORMATION(5,"You near the ancient Stronghold at the heart of this realm. Be wary, keeper, for the path ahead is wrought with danger, yet power awaits, should you have the mettle to claim it",PLAYER1)
ENDIF

IF_ACTION_POINT(10,PLAYER1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,GRAVEYARDERS,3,1)
	PLAY_MESSAGE(PLAYER1,SPEECH,96)
ENDIF

IF_ACTION_POINT(12,PLAYER1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,INBETWEEN,-6,1)
ENDIF

IF_ACTION_POINT(13,PLAYER1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,INBETWEEN,13,1)
ENDIF

IF_ACTION_POINT(15,PLAYER1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,SACREDGUARDIANS,-3,1)
ENDIF

IF_ACTION_POINT(5,PLAYER1)
	SET_TIMER(PLAYER1,TIMER0)
	QUICK_INFORMATION(4,"The heroes of this realm will not tolerate this transgression, Keeper. Prepare for their retribution!",PLAYER1)
ENDIF

IF(PLAYER1,TIMER0 >= 8400)
	NEXT_COMMAND_REUSABLE
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,DISTURBANCE,19,1)
	NEXT_COMMAND_REUSABLE
	SET_TIMER(PLAYER1,TIMER0)
	CHANGE_SLAB_TYPE(82,50,DIRT,NONE)
ENDIF

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

IF(PLAYER1,GRAVEYARD >= 1)
	ROOM_AVAILABLE(PLAYER1,GRAVEYARD,1,1)
ENDIF

IF(PLAYER1,VAMPIRE >= 5)
	NEXT_COMMAND_REUSABLE
	KILL_CREATURE(PLAYER1,VAMPIRE,LEAST_EXPERIENCED,1)
ENDIF

IF(PLAYER1,SKELETON >= 10)
	NEXT_COMMAND_REUSABLE
	KILL_CREATURE(PLAYER1,SKELETON,LEAST_EXPERIENCED,1)
ENDIF

IF(PLAYER1,TOTAL_CREATURES >= 50)
	NEXT_COMMAND_REUSABLE
	SET_CREATURE_TENDENCIES(PLAYER1,IMPRISON,0)
ENDIF

IF(PLAYER1,TOTAL_CREATURES <=50)
	NEXT_COMMAND_REUSABLE
	SET_CREATURE_TENDENCIES(PLAYER1,IMPRISON,1)
ENDIF




REM TEMPLEPARTY

IF_ACTION_POINT(17,ALL_PLAYERS)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,TEMPLEPARTY,17,1)
	QUICK_INFORMATION(2,"The favour of the dark gods will belong to whomever controls this dark font! Hold fast your claim, Keeper.")
ENDIF

REM TRAPS

IF(PLAYER0,FLAG1 >= 6)
  NEXT_COMMAND_REUSABLE
  TRAP_AVAILABLE(PLAYER0,POISON_GAS,0,0)
ENDIF
IF(PLAYER0,FLAG1 < 6)
  NEXT_COMMAND_REUSABLE
  TRAP_AVAILABLE(PLAYER0,POISON_GAS,1,0)
ENDIF


IF(PLAYER0,FLAG2 >= 6)
  NEXT_COMMAND_REUSABLE
  TRAP_AVAILABLE(PLAYER0,LIGHTNING,0,0)
ENDIF
IF(PLAYER0,FLAG2 < 6)
  NEXT_COMMAND_REUSABLE
  TRAP_AVAILABLE(PLAYER0,LIGHTNING,1,0)
ENDIF

IF(PLAYER0,FLAG3 >= 6)
  NEXT_COMMAND_REUSABLE
  TRAP_AVAILABLE(PLAYER0,WORD_OF_POWER,0,0)
ENDIF
IF(PLAYER0,FLAG3 < 6)
  NEXT_COMMAND_REUSABLE
  TRAP_AVAILABLE(PLAYER0,WORD_OF_POWER,1,0)
ENDIF

NEXT_COMMAND_REUSABLE
COMPUTE_FLAG(PLAYER0,FLAG1,SET,PLAYER0,POISON_GAS,0)
NEXT_COMMAND_REUSABLE
COMPUTE_FLAG(PLAYER0,FLAG1,INCREASE,PLAYER0,POISON_GAS,1)

NEXT_COMMAND_REUSABLE
COMPUTE_FLAG(PLAYER0,FLAG2,SET,PLAYER0,LIGHTNING,0)
NEXT_COMMAND_REUSABLE
COMPUTE_FLAG(PLAYER0,FLAG2,INCREASE,PLAYER0,LIGHTNING,1)

NEXT_COMMAND_REUSABLE
COMPUTE_FLAG(PLAYER0,FLAG3,SET,PLAYER0,WORD_OF_POWER,0)
NEXT_COMMAND_REUSABLE
COMPUTE_FLAG(PLAYER0,FLAG3,INCREASE,PLAYER0,WORD_OF_POWER,1)


IF(PLAYER1,FLAG1 >= 6)
  NEXT_COMMAND_REUSABLE
  TRAP_AVAILABLE(PLAYER1,POISON_GAS,0,0)
ENDIF
IF(PLAYER1,FLAG1 < 6)
  NEXT_COMMAND_REUSABLE
  TRAP_AVAILABLE(PLAYER1,POISON_GAS,1,0)
ENDIF


IF(PLAYER1,FLAG2 >= 6)
  NEXT_COMMAND_REUSABLE
  TRAP_AVAILABLE(PLAYER1,LIGHTNING,0,0)
ENDIF
IF(PLAYER1,FLAG2 < 6)
  NEXT_COMMAND_REUSABLE
  TRAP_AVAILABLE(PLAYER1,LIGHTNING,1,0)
ENDIF

IF(PLAYER1,FLAG3 >= 6)
  NEXT_COMMAND_REUSABLE
  TRAP_AVAILABLE(PLAYER1,WORD_OF_POWER,0,0)
ENDIF
IF(PLAYER1,FLAG3 < 6)
  NEXT_COMMAND_REUSABLE
  TRAP_AVAILABLE(PLAYER1,WORD_OF_POWER,1,0)
ENDIF

NEXT_COMMAND_REUSABLE
COMPUTE_FLAG(PLAYER1,FLAG1,SET,PLAYER1,POISON_GAS,0)
NEXT_COMMAND_REUSABLE
COMPUTE_FLAG(PLAYER1,FLAG1,INCREASE,PLAYER1,POISON_GAS,1)

NEXT_COMMAND_REUSABLE
COMPUTE_FLAG(PLAYER1,FLAG2,SET,PLAYER1,LIGHTNING,0)
NEXT_COMMAND_REUSABLE
COMPUTE_FLAG(PLAYER1,FLAG2,INCREASE,PLAYER1,LIGHTNING,1)

NEXT_COMMAND_REUSABLE
COMPUTE_FLAG(PLAYER1,FLAG3,SET,PLAYER1,WORD_OF_POWER,0)
NEXT_COMMAND_REUSABLE
COMPUTE_FLAG(PLAYER1,FLAG3,INCREASE,PLAYER1,WORD_OF_POWER,1)




IF(PLAYER0,ALL_DUNGEONS_DESTROYED == 1)
	WIN_GAME
ENDIF

IF(PLAYER1,ALL_DUNGEONS_DESTROYED == 1)
	WIN_GAME
ENDIF

IF(PLAYER0,DUNGEON_DESTROYED == 1)
	LOSE_GAME
ENDIF

IF(PLAYER1,DUNGEON_DESTROYED == 1)
	LOSE_GAME
ENDIF