LEVEL_VERSION(1)

SET_GENERATE_SPEED(600)

START_MONEY(PLAYER0, 7500)
START_MONEY(PLAYER2, 80000)
START_MONEY(PLAYER3, 80000)

MAX_CREATURES(PLAYER0, 22)
MAX_CREATURES(PLAYER2, 28)
MAX_CREATURES(PLAYER3, 28)

COMPUTER_PLAYER(PLAYER2,10)
COMPUTER_PLAYER(PLAYER3,10)

ALLY_PLAYERS(PLAYER2, PLAYER_GOOD,1)
ALLY_PLAYERS(PLAYER3, PLAYER_GOOD,1)
ALLY_PLAYERS(PLAYER2, PLAYER3,1)

ADD_CREATURE_TO_POOL(SPIDER, 2)
ADD_CREATURE_TO_POOL(BUG,2)
ADD_CREATURE_TO_POOL(DRAGON, 4)
ADD_CREATURE_TO_POOL(SORCEROR, 4)
ADD_CREATURE_TO_POOL(ORC, 4)
ADD_CREATURE_TO_POOL(TROLL, 2)
ADD_CREATURE_TO_POOL(TENTACLE, 3)
ADD_CREATURE_TO_POOL(BILE_DEMON, 4)

ADD_CREATURE_TO_POOL(FAIRY, 5)
ADD_CREATURE_TO_POOL(BARBARIAN, 5)
ADD_CREATURE_TO_POOL(DWARFA, 5)
ADD_CREATURE_TO_POOL(WIZARD, 5)
ADD_CREATURE_TO_POOL(WITCH, 5)
ADD_CREATURE_TO_POOL(GIANT, 5)
ADD_CREATURE_TO_POOL(MONK, 5)
ADD_CREATURE_TO_POOL(ARCHER, 5)

CREATURE_AVAILABLE(PLAYER0, SPIDER, 1, 0)
CREATURE_AVAILABLE(PLAYER0, BUG, 1, 0)
CREATURE_AVAILABLE(PLAYER0, SORCEROR ,1,0)
CREATURE_AVAILABLE(PLAYER0, DRAGON ,1,0)
CREATURE_AVAILABLE(PLAYER0, ORC ,1,0)
CREATURE_AVAILABLE(PLAYER0, TROLL ,1,0)
CREATURE_AVAILABLE(PLAYER0, BILE_DEMON ,1,0)
CREATURE_AVAILABLE(PLAYER0, TENTACLE ,1,0)

CREATURE_AVAILABLE(PLAYER2, FAIRY ,1,10)
CREATURE_AVAILABLE(PLAYER2, BARBARIAN ,1,10)
CREATURE_AVAILABLE(PLAYER2, DWARFA ,1,10)
CREATURE_AVAILABLE(PLAYER2, WIZARD ,1,10)
CREATURE_AVAILABLE(PLAYER2, WITCH ,1,10)
CREATURE_AVAILABLE(PLAYER2, GIANT ,1,10)
CREATURE_AVAILABLE(PLAYER2, MONK ,1,10)
CREATURE_AVAILABLE(PLAYER2, ARCHER ,1,10)

CREATURE_AVAILABLE(PLAYER3, FAIRY ,1,10)
CREATURE_AVAILABLE(PLAYER3, BARBARIAN ,1,10)
CREATURE_AVAILABLE(PLAYER3, DWARFA ,1,10)
CREATURE_AVAILABLE(PLAYER3, WIZARD ,1,10)
CREATURE_AVAILABLE(PLAYER3, WITCH ,1,10)
CREATURE_AVAILABLE(PLAYER3, GIANT ,1,10)
CREATURE_AVAILABLE(PLAYER3, MONK ,1,10)
CREATURE_AVAILABLE(PLAYER3, ARCHER ,1,10)

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)

MAGIC_AVAILABLE(PLAYER0, POWER_IMP, 1, 1)
MAGIC_AVAILABLE(PLAYER2, POWER_SIGHT, 1, 0)
MAGIC_AVAILABLE(PLAYER3, POWER_SIGHT, 1, 0)
MAGIC_AVAILABLE(ALL_PLAYERS, POWER_SPEED, 1, 0)
MAGIC_AVAILABLE(ALL_PLAYERS, POWER_CONCEAL, 1, 0)
MAGIC_AVAILABLE(ALL_PLAYERS, POWER_CALL_TO_ARMS, 1, 0)
MAGIC_AVAILABLE(ALL_PLAYERS, POWER_HOLD_AUDIENCE, 1, 0)
MAGIC_AVAILABLE(ALL_PLAYERS, POWER_HEAL_CREATURE, 1, 0)
MAGIC_AVAILABLE(ALL_PLAYERS, POWER_PROTECT, 1, 0)
MAGIC_AVAILABLE(PLAYER2, POWER_LIGHTNING, 1, 0)
MAGIC_AVAILABLE(PLAYER3, POWER_LIGHTNING, 1, 0)
MAGIC_AVAILABLE(PLAYER2, POWER_CHICKEN, 1, 1)
MAGIC_AVAILABLE(PLAYER3, POWER_CHICKEN, 1, 1)

DOOR_AVAILABLE(ALL_PLAYERS,STEEL, 1, 0)
TRAP_AVAILABLE(ALL_PLAYERS, POISON_GAS, 1, 0)
TRAP_AVAILABLE(ALL_PLAYERS, LIGHTNING, 1, 0)

CREATURE_ENTRANCE_LEVEL(PLAYER2,2)
CREATURE_ENTRANCE_LEVEL(PLAYER3,2)

CREATE_PARTY(WAVE1)
	ADD_TO_PARTY(WAVE1,THIEF,6,100,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(WAVE1,ARCHER,6,100,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(WAVE1,DWARFA,6,100,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(WAVE1,BARBARIAN,6,100,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(WAVE1,GIANT,6,100,ATTACK_ENEMIES,0)

CREATE_PARTY(WAVE2)
	ADD_TO_PARTY(WAVE2,MONK,8,100,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(WAVE2,GIANT,7,100,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(WAVE2,BARBARIAN,7,100,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(WAVE2,WITCH,8,100,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(WAVE2,FAIRY,8,100,ATTACK_ENEMIES,0)

CREATE_PARTY(WAVE3)
	ADD_TO_PARTY(WAVE3,FAIRY,9,100,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(WAVE3,GIANT,10,100,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(WAVE3,WIZARD,8,100,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(WAVE3,SAMURAI,9,100,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(WAVE2,BARBARIAN,8,100,ATTACK_ENEMIES,0)

CREATE_PARTY(PARTY1)
	ADD_TO_PARTY(PARTY1,THIEF,8,300,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(PARTY1,DWARFA,8,300,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(PARTY1,ARCHER,8,300,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(PARTY1,ARCHER,8,300,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(PARTY1,BARBARIAN,8,300,ATTACK_ENEMIES,0)

CREATE_PARTY(PARTY2)
	ADD_TO_PARTY(PARTY2,WITCH,8,300,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(PARTY2,GIANT,8,300,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(PARTY2,WIZARD,8,300,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(PARTY2,BARBARIAN,8,300,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(PARTY2,SAMURAI,8,300,ATTACK_ENEMIES,0)

CREATE_PARTY(LORD)
	ADD_TO_PARTY(LORD,KNIGHT,10,1000,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(LORD,GIANT,10,500,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(LORD,GIANT,10,500,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(LORD,FAIRY,9,500,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(LORD,FAIRY,9,500,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(LORD,SAMURAI,10,500,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(LORD,SAMURAI,10,500,ATTACK_ENEMIES,0)

QUICK_OBJECTIVE(1,"This is the realm of treasury. However, to get them you will have to compete with heroes and prove that they all belong to you. Are you ready, Keeper?",PLAYER0)

SET_TIMER(PLAYER2,TIMER1)

IF(PLAYER2, DUNGEON_DESTROYED==0)
IF(PLAYER2, TUNNELLER<6)
	IF(PLAYER2, TIMER1>=600)
	NEXT_COMMAND_REUSABLE
	ADD_CREATURE_TO_LEVEL(PLAYER2,TUNNELLER,PLAYER2,1,2,0)
	NEXT_COMMAND_REUSABLE
	SET_TIMER(PLAYER2,TIMER1)
	ENDIF
ENDIF
ENDIF

SET_TIMER(PLAYER3,TIMER1)

IF(PLAYER3, DUNGEON_DESTROYED==0)
IF(PLAYER3, TUNNELLER<6)
	IF(PLAYER3, TIMER1>=600)
	NEXT_COMMAND_REUSABLE
	ADD_CREATURE_TO_LEVEL(PLAYER3,TUNNELLER,PLAYER3,1,2,0)
	NEXT_COMMAND_REUSABLE
	SET_TIMER(PLAYER3,TIMER1)
	ENDIF
ENDIF
ENDIF

SET_FLAG(PLAYER0,FLAG0,0)
SET_FLAG(PLAYER0,FLAG1,0)
SET_FLAG(PLAYER0,FLAG2,0)
SET_FLAG(PLAYER1,FLAG0,0)

SET_TIMER(PLAYER_GOOD,TIMER1)
SET_TIMER(PLAYER_GOOD,TIMER2)

IF(PLAYER2,DUNGEON_DESTROYED==1)
	SET_FLAG(PLAYER0,FLAG0,1)
	SET_FLAG(PLAYER1,FLAG0,1)
ENDIF

IF(PLAYER3,DUNGEON_DESTROYED==1)
	SET_FLAG(PLAYER0,FLAG1,1)
	SET_FLAG(PLAYER1,FLAG0,1)
ENDIF

IF(PLAYER1,FLAG0==1)
	QUICK_INFORMATION(2,"Knowing that one of their dungeons has been destroyed, hero reinforcements are coming to revenge for this!",PLAYER0)
ENDIF

IF(PLAYER0,FLAG0==1)
IF(PLAYER_GOOD, TIMER1>=5000)
	NEXT_COMMAND_REUSABLE
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WAVE1,-2,1)
	NEXT_COMMAND_REUSABLE
	SET_TIMER(PLAYER_GOOD,TIMER1)
ENDIF
ENDIF

IF(PLAYER0,FLAG1==1)
IF(PLAYER_GOOD, TIMER2>=5000)
	NEXT_COMMAND_REUSABLE
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WAVE1,-3,1)
	NEXT_COMMAND_REUSABLE
	SET_TIMER(PLAYER_GOOD,TIMER2)
ENDIF
ENDIF

IF(PLAYER0,FLAG0==1)
IF(PLAYER0,FLAG1==1)
	SET_FLAG(PLAYER0,FLAG0,0)
	SET_FLAG(PLAYER0,FLAG1,0)
	SET_TIMER(PLAYER_GOOD,TIMER3)
ENDIF
ENDIF

IF(PLAYER_GOOD, TIMER3>=5000)
	IF(PLAYER0,FLAG2==0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WAVE2,-1,1)
	ENDIF
	IF(PLAYER0,FLAG2==1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WAVE3,-1,1)
	ENDIF
ENDIF


IF_ACTION_POINT(1,PLAYER0)
	QUICK_INFORMATION(3,"You accidentally triggered the alarm when stepping into the hero fortress. Their elite army is coming!",PLAYER0)
	SET_TIMER(PLAYER_GOOD,TIMER3)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WAVE3,-1,1)
ENDIF

IF_ACTION_POINT(2,PLAYER0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,PARTY1,2,1)
ENDIF

IF_ACTION_POINT(3,PLAYER0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,PARTY1,3,1)
ENDIF

IF_ACTION_POINT(4,PLAYER0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,PARTY2,4,1)
ENDIF

IF_ACTION_POINT(5,PLAYER0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,PARTY2,5,1)
ENDIF

IF_ACTION_POINT(6,PLAYER0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,LORD,6,1)
	SET_FLAG(PLAYER_GOOD,FLAG2,1)
ENDIF

IF(PLAYER0,PRISON>0)
	QUICK_INFORMATION(4,"Great! You claimed the prison. However it's not as useful as the usual ones.",PLAYER0)
ENDIF

IF(PLAYER0,TORTURE>0)
	   ADD_CREATURE_TO_LEVEL(PLAYER0,DARK_MISTRESS,7,1,4,100)
	QUICK_INFORMATION(5,"Your torture room attracts a mistress to join you!",PLAYER0)
ENDIF

IF(PLAYER0,TOTAL_CREATURES>=35)
    QUICK_INFORMATION(6,"You've got so many creatures! Now the function of prison and torture room have disappeared!",PLAYER0)
    NEXT_COMMAND_REUSABLE
	SET_CREATURE_TENDENCIES(PLAYER0,IMPRISON,0)
   SET_GAME_RULE(PrisonSkeletonChance,0)
    SET_GAME_RULE(GhostConvertChance,0)
    SET_GAME_RULE(TortureConvertChance,0)
ENDIF

IF(PLAYER_GOOD,FLAG2==1)
IF(PLAYER0,ALL_DUNGEONS_DESTROYED==1)
IF(PLAYER_GOOD, TOTAL_CREATURES==0)
	QUICK_OBJECTIVE(7,"Now you can take away all the treasury in this realm and become a millonaire, Keeper!",PLAYER0)	
	WIN_GAME
ENDIF
ENDIF
ENDIF