LEVEL_VERSION(1)
SET_GENERATE_SPEED(400)
START_MONEY(PLAYER0,15000)
START_MONEY(PLAYER1,100000)
START_MONEY(PLAYER2,100000)
REM Player 3 doesn't mine his gems for a long time, I have no idea why not
START_MONEY(PLAYER3,10000000)
MAX_CREATURES(PLAYER0,1)
MAX_CREATURES(PLAYER1,1)
MAX_CREATURES(PLAYER2,1)
MAX_CREATURES(PLAYER3,1)

SET_GAME_RULE(ImpWorkExperience, 300)
SET_CREATURE_MAX_LEVEL(PLAYER0, KNIGHT, 6)
SET_PLAYER_COLOR(PLAYER0, WHITE)
SET_PLAYER_COLOR(PLAYER_GOOD, RED)

IF(PLAYER0, CAMPAIGN_FLAG1 == 1)
	REM Level up the existing imps to level 2
	LEVEL_UP_PLAYERS_CREATURES(PLAYER0, IMP, 1)

	REM Number of imps higher than level 1
	SET_FLAG(PLAYER_GOOD, FLAG6, 4)

	REM Number of total imps change
	SET_FLAG(PLAYER_GOOD, FLAG7, 0)

	IF(PLAYER_GOOD, FLAG7 == 0)
		NEXT_COMMAND_REUSABLE
		COMPUTE_FLAG(PLAYER_GOOD, FLAG7, SET, PLAYER0, IMP, 0)

		NEXT_COMMAND_REUSABLE
		COMPUTE_FLAG(PLAYER_GOOD, FLAG7, DECREASE, PLAYER_GOOD, FLAG6, 0)
	ENDIF
	IF(PLAYER_GOOD, FLAG7 > 0)
		NEXT_COMMAND_REUSABLE
		ADD_TO_FLAG(PLAYER_GOOD, FLAG6, 1)
		
		NEXT_COMMAND_REUSABLE
		LEVEL_UP_CREATURE(PLAYER0, IMP, LEAST_EXPERIENCED, 1)
		
		NEXT_COMMAND_REUSABLE
		COMPUTE_FLAG(PLAYER_GOOD, FLAG7, SET, PLAYER0, IMP, 0)

		NEXT_COMMAND_REUSABLE
		COMPUTE_FLAG(PLAYER_GOOD, FLAG7, DECREASE, PLAYER_GOOD, FLAG6, 0)
	ENDIF
	IF(PLAYER_GOOD, FLAG7 < 0)
		NEXT_COMMAND_REUSABLE
		COMPUTE_FLAG(PLAYER_GOOD, FLAG6, SET, PLAYER0, IMP, 0)
		
		NEXT_COMMAND_REUSABLE
		COMPUTE_FLAG(PLAYER_GOOD, FLAG7, SET, PLAYER0, IMP, 0)
		
		NEXT_COMMAND_REUSABLE
		COMPUTE_FLAG(PLAYER_GOOD, FLAG7, DECREASE, PLAYER_GOOD, FLAG6, 0)
	ENDIF
ENDIF

COMPUTER_PLAYER(PLAYER1,0)
COMPUTER_PLAYER(PLAYER2,0)
COMPUTER_PLAYER(PLAYER3,0)

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

CREATURE_AVAILABLE(PLAYER0,DWARFA,1,0)
CREATURE_AVAILABLE(PLAYER0,ARCHER,1,0)
CREATURE_AVAILABLE(PLAYER0,GIANT,1,0)
CREATURE_AVAILABLE(PLAYER0,MONK,1,0)
CREATURE_AVAILABLE(PLAYER0,BARBARIAN,1,0)
CREATURE_AVAILABLE(PLAYER0,FAIRY,1,0)
CREATURE_AVAILABLE(PLAYER0,WIZARD,1,0)
CREATURE_AVAILABLE(PLAYER0,WITCH,1,0)
CREATURE_AVAILABLE(PLAYER0,SAMURAI,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_SIGHT,1,0)

TRAP_AVAILABLE(PLAYER0,ALARM,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,POISON_GAS,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,LIGHTNING,1,0)

DOOR_AVAILABLE(PLAYER0,WOOD,1,1)
DOOR_AVAILABLE(PLAYER0,BRACED,1,0)
DOOR_AVAILABLE(ALL_PLAYERS,STEEL,1,0)
DOOR_AVAILABLE(ALL_PLAYERS,MAGIC,1,0)

REM Constant timer
SET_TIMER(PLAYER0, TIMER0)

REM QUICK_OBJECTIVE(1, "There are no portals in this land, only a limited amount of creatures can be summoned. You best choose wisely keeper.", PLAYER0)
DISPLAY_OBJECTIVE(53, PLAYER0)

REM kill all player's creatures, so they can be accessed via resurrect creature secrets
KILL_CREATURE(PLAYER0, WIZARD, ANYWHERE, 9)
KILL_CREATURE(PLAYER0, BARBARIAN, ANYWHERE, 9)
KILL_CREATURE(PLAYER0, ARCHER, ANYWHERE, 9)
KILL_CREATURE(PLAYER0, MONK, ANYWHERE, 9)
KILL_CREATURE(PLAYER0, DWARFA, ANYWHERE, 9)
KILL_CREATURE(PLAYER0, WITCH, ANYWHERE, 9)
KILL_CREATURE(PLAYER0, GIANT, ANYWHERE, 9)
KILL_CREATURE(PLAYER0, FAIRY, ANYWHERE, 9)

IF(PLAYER0, TIMER0 > 20)
	CONCEAL_MAP_RECT(player0, 226, 109, 30, 30)
ENDIF

IF(PLAYER1, DUNGEON_DESTROYED == 1)
	IF(PLAYER2, DUNGEON_DESTROYED == 1)
		IF(PLAYER3, DUNGEON_DESTROYED == 1)
			REM QUICK_INFORMATION(2, "Superbly done, with these interlopers exterminated we can move onto greater pastures.")	
			DISPLAY_INFORMATION(54)
			WIN_GAME
		ENDIF
	ENDIF
ENDIF

IF(PLAYER0, TREASURE > 0)
	ROOM_AVAILABLE(PLAYER0,TREASURE,1,1)
ENDIF

IF(PLAYER0, LAIR > 0)
	ROOM_AVAILABLE(PLAYER0,LAIR,1,1)
ENDIF

IF(PLAYER0, GARDEN > 0)
	ROOM_AVAILABLE(PLAYER0,GARDEN,1,1)
ENDIF

IF(PLAYER0, TRAINING > 0)
	ROOM_AVAILABLE(PLAYER0,TRAINING,1,1)
ENDIF

IF(PLAYER0, RESEARCH > 0)
	ROOM_AVAILABLE(PLAYER0,RESEARCH,1,1)
ENDIF

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

IF(PLAYER0, WORKSHOP > 0)
	ROOM_AVAILABLE(PLAYER0,WORKSHOP,1,1)
ENDIF

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

IF(PLAYER0, GUARD_POST > 0)
	ROOM_AVAILABLE(PLAYER0,GUARD_POST,1,1)
ENDIF

IF(PLAYER0, BARRACKS > 0)
	ROOM_AVAILABLE(PLAYER0,BARRACKS,1,1)
ENDIF


IF(PLAYER0, KNIGHT == 0)
	LOSE_GAME
ENDIF