LEVEL_VERSION(1)
SET_GENERATE_SPEED(400)
START_MONEY(PLAYER0,15000)
START_MONEY(PLAYER1,20000)
MAX_CREATURES(PLAYER0,25)
MAX_CREATURES(PLAYER1,25)

SET_GAME_RULE(ImpWorkExperience, 300)
SET_PLAYER_COLOR(PLAYER0, WHITE)
SET_PLAYER_COLOR(PLAYER_GOOD, RED)

COMPUTER_PLAYER(PLAYER1,0)

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

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)

ADD_CREATURE_TO_POOL(TROLL,10)
ADD_CREATURE_TO_POOL(DRAGON,16)
ADD_CREATURE_TO_POOL(DARK_MISTRESS,10)
ADD_CREATURE_TO_POOL(BILE_DEMON,10)
ADD_CREATURE_TO_POOL(TENTACLE,3)
ADD_CREATURE_TO_POOL(ORC,16)
ADD_CREATURE_TO_POOL(HELL_HOUND,10)

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)

CREATURE_AVAILABLE(PLAYER1,TROLL,1,0)
CREATURE_AVAILABLE(PLAYER1,DRAGON,1,0)
CREATURE_AVAILABLE(PLAYER1,DARK_MISTRESS,1,0)
CREATURE_AVAILABLE(PLAYER1,BILE_DEMON,1,0)
CREATURE_AVAILABLE(PLAYER1,TENTACLE,1,0)
CREATURE_AVAILABLE(PLAYER1,ORC,1,0)
CREATURE_AVAILABLE(PLAYER1,HELL_HOUND,1,0)

MAGIC_AVAILABLE(ALL_PLAYERS,POWER_IMP,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HAND,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_POSSESS,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HAND,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SLAP,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HEAL_CREATURE,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CONCEAL,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SIGHT,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SPEED,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_PROTECT,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_OBEY,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CALL_TO_ARMS,1,0)

TRAP_AVAILABLE(ALL_PLAYERS,ALARM,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)

REM No workshop for AI, otherwise it half asses training units and will probably just kill itself
REM And no prison or the classic bile demon x skeleton issue
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,TEMPLE,1,0)
ROOM_AVAILABLE(PLAYER0,WORKSHOP,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,TORTURE,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,GUARD_POST,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,BARRACKS,1,0)
ROOM_AVAILABLE(PLAYER0,PRISON,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 Do not disrupt my fly based shenanigans AI
SET_HAND_RULE(PLAYER1, FLY, RULE0, DENY, ALWAYS)

SET_TIMER(PLAYER1, TIMER0)

REM QUICK_OBJECTIVE(1, "Our ward seems to have betrayed us and joined the enemy. He is out of our reach for now, but the king's spies are searching and will track him down shortly.", 1)
DISPLAY_OBJECTIVE(58, 1)

IF(PLAYER0, ENTRANCE > 9)
	MAX_CREATURES(PLAYER0,30)
ENDIF

IF(PLAYER0, ENTRANCE > 18)
	MAX_CREATURES(PLAYER0,35)
ENDIF

IF(PLAYER1, ENTRANCE > 9)
	MAX_CREATURES(PLAYER1,30)
ENDIF

IF(PLAYER1, ENTRANCE > 18)
	MAX_CREATURES(PLAYER1,35)
ENDIF

IF(PLAYER1, FLY == 0)
	IF(PLAYER1, TIMER0 >= 18000)
		SET_DOOR(UNLOCKED, 42, 22)
	
		NEXT_COMMAND_REUSABLE
		ADD_CREATURE_TO_LEVEL(PLAYER1, FLY, 1, 5, 3, 0)
		
		NEXT_COMMAND_REUSABLE
		SET_TIMER(PLAYER1, TIMER0)
	ENDIF
ENDIF

REM Vampire snowballing
IF(PLAYER1, VAMPIRE >= 6 )
    SET_GAME_RULE( BodiesForVampire, 10 )
ENDIF
IF(PLAYER1, VAMPIRE >= 10 )
    SET_GAME_RULE( BodiesForVampire, 15 )
ENDIF

IF(PLAYER1, DUNGEON_DESTROYED == 1)
	REM QUICK_INFORMATION(2, "With this pest out of the way, we will soon be able to deal with the traitor appropriately.")
	DISPLAY_INFORMATION(59)
	WIN_GAME
ENDIF
