DEAD_CREATURES_RETURN_TO_POOL(1)

ALLY_PLAYERS(PLAYER0,PLAYER_GOOD)

SET_GENERATE_SPEED(400)

COMPUTER_PLAYER(PLAYER1,1)
COMPUTER_PLAYER(PLAYER2,1)
COMPUTER_PLAYER(PLAYER3,1)

START_MONEY(PLAYER0,9999999)
START_MONEY(PLAYER1,5000)
START_MONEY(PLAYER2,5000)
START_MONEY(PLAYER3,5000)

MAX_CREATURES(PLAYER1,20)
MAX_CREATURES(PLAYER2,20)
MAX_CREATURES(PLAYER3,20)

ADD_CREATURE_TO_POOL(BUG,80)
ADD_CREATURE_TO_POOL(FLY,180)
ADD_CREATURE_TO_POOL(TROLL,180)
ADD_CREATURE_TO_POOL(SPIDER,40)
ADD_CREATURE_TO_POOL(BILE_DEMON,40)
ADD_CREATURE_TO_POOL(DEMONSPAWN,100)
ADD_CREATURE_TO_POOL(SORCEROR,140)

CREATURE_AVAILABLE(PLAYER1,BUG,1,1)
CREATURE_AVAILABLE(PLAYER1,FLY,1,1)
CREATURE_AVAILABLE(PLAYER1,TROLL,1,1)
CREATURE_AVAILABLE(PLAYER1,BILE_DEMON,1,1)
CREATURE_AVAILABLE(PLAYER1,DEMONSPAWN,1,1)
CREATURE_AVAILABLE(PLAYER1,SPIDER,1,1)
CREATURE_AVAILABLE(PLAYER2,SPIDER,1,1)
CREATURE_AVAILABLE(PLAYER3,SPIDER,1,1)
CREATURE_AVAILABLE(PLAYER1,SORCEROR,1,1)
CREATURE_AVAILABLE(PLAYER2,BUG,1,1)
CREATURE_AVAILABLE(PLAYER2,FLY,1,1)
CREATURE_AVAILABLE(PLAYER2,TROLL,1,1)
CREATURE_AVAILABLE(PLAYER2,BILE_DEMON,1,1)
CREATURE_AVAILABLE(PLAYER2,DEMONSPAWN,1,1)
CREATURE_AVAILABLE(PLAYER2,SORCEROR,1,1)
CREATURE_AVAILABLE(PLAYER3,BUG,1,1)
CREATURE_AVAILABLE(PLAYER3,FLY,1,1)
CREATURE_AVAILABLE(PLAYER3,TROLL,1,1)
CREATURE_AVAILABLE(PLAYER3,BILE_DEMON,1,1)
CREATURE_AVAILABLE(PLAYER3,DEMONSPAWN,1,1)
CREATURE_AVAILABLE(PLAYER3,SORCEROR,1,1)

ROOM_AVAILABLE(PLAYER1,TREASURE,1,1)
ROOM_AVAILABLE(PLAYER1,LAIR,1,1)
ROOM_AVAILABLE(PLAYER1,GARDEN,1,1)
ROOM_AVAILABLE(PLAYER1,TRAINING,1,1)
ROOM_AVAILABLE(PLAYER1,RESEARCH,1,1)
ROOM_AVAILABLE(PLAYER2,TREASURE,1,1)
ROOM_AVAILABLE(PLAYER2,LAIR,1,1)
ROOM_AVAILABLE(PLAYER2,GARDEN,1,1)
ROOM_AVAILABLE(PLAYER2,TRAINING,1,1)
ROOM_AVAILABLE(PLAYER2,RESEARCH,1,1)
ROOM_AVAILABLE(PLAYER3,TREASURE,1,1)
ROOM_AVAILABLE(PLAYER3,LAIR,1,1)
ROOM_AVAILABLE(PLAYER3,GARDEN,1,1)
ROOM_AVAILABLE(PLAYER3,TRAINING,1,1)
ROOM_AVAILABLE(PLAYER3,RESEARCH,1,1)
ROOM_AVAILABLE(PLAYER1,WORKSHOP,1,0)
ROOM_AVAILABLE(PLAYER2,WORKSHOP,1,0)
ROOM_AVAILABLE(PLAYER3,WORKSHOP,1,0)

MAGIC_AVAILABLE(PLAYER1,POWER_IMP,1,1)
MAGIC_AVAILABLE(PLAYER1,POWER_SIGHT,1,0)
MAGIC_AVAILABLE(PLAYER1,POWER_SPEED,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_SPEED,1,1)
MAGIC_AVAILABLE(PLAYER0,POWER_DESTROY_WALLS,1,1)
MAGIC_AVAILABLE(PLAYER1,POWER_HEAL_CREATURE,1,0)
MAGIC_AVAILABLE(PLAYER1,POWER_CALL_TO_ARMS,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_SIGHT,1,1)
MAGIC_AVAILABLE(PLAYER1,POWER_CAVE_IN,1,0)
MAGIC_AVAILABLE(PLAYER2,POWER_IMP,1,1)
MAGIC_AVAILABLE(PLAYER2,POWER_SIGHT,1,0)
MAGIC_AVAILABLE(PLAYER2,POWER_SPEED,1,0)
MAGIC_AVAILABLE(PLAYER2,POWER_HEAL_CREATURE,1,0)
MAGIC_AVAILABLE(PLAYER2,POWER_CALL_TO_ARMS,1,0)
MAGIC_AVAILABLE(PLAYER2,POWER_CAVE_IN,1,0)
MAGIC_AVAILABLE(PLAYER3,POWER_IMP,1,1)
MAGIC_AVAILABLE(PLAYER3,POWER_SIGHT,1,0)
MAGIC_AVAILABLE(PLAYER3,POWER_SPEED,1,0)
MAGIC_AVAILABLE(PLAYER3,POWER_HEAL_CREATURE,1,0)
MAGIC_AVAILABLE(PLAYER3,POWER_PROTECT,1,0)
MAGIC_AVAILABLE(PLAYER2,POWER_PROTECT,1,0)
MAGIC_AVAILABLE(PLAYER1,POWER_PROTECT,1,0)
MAGIC_AVAILABLE(PLAYER3,POWER_CALL_TO_ARMS,1,0)
MAGIC_AVAILABLE(PLAYER3,POWER_CAVE_IN,1,0)

DOOR_AVAILABLE(PLAYER1,WOOD,1,0)
TRAP_AVAILABLE(PLAYER1,POISON_GAS,1,0)
DOOR_AVAILABLE(PLAYER2,WOOD,1,0)
TRAP_AVAILABLE(PLAYER2,POISON_GAS,1,0)
DOOR_AVAILABLE(PLAYER3,WOOD,1,0)
TRAP_AVAILABLE(PLAYER3,POISON_GAS,1,0)
TRAP_AVAILABLE(PLAYER1,ALARM,1,0)
TRAP_AVAILABLE(PLAYER2,ALARM,1,0)
TRAP_AVAILABLE(PLAYER3,ALARM,1,0)

IF(PLAYER1,DUNGEON_DESTROYED==1)
	IF(PLAYER2,DUNGEON_DESTROYED==1)
		IF(PLAYER3,DUNGEON_DESTROYED==1)
			WIN_GAME
		ENDIF
	ENDIF
ENDIF

IF(PLAYER_GOOD,KNIGHT==0)
	LOSE_GAME
ENDIF

CREATE_PARTY(TUNNELLER)
CREATE_PARTY(THIEF)
CREATE_PARTY(ARCHER)
CREATE_PARTY(DWARF)
CREATE_PARTY(BARBARIAN)
CREATE_PARTY(KNIGHT)
CREATE_PARTY(FAIRY)

ADD_TO_PARTY(TUNNELLER,TUNNELLER,6,600,DEFEND_PARTY,0)
ADD_TO_PARTY(TUNNELLER,TUNNELLER,5,500,DEFEND_PARTY,0)
ADD_TO_PARTY(TUNNELLER,TUNNELLER,4,400,DEFEND_PARTY,0)
ADD_TO_PARTY(TUNNELLER,TUNNELLER,3,300,DEFEND_PARTY,0)

ADD_TO_PARTY(THIEF,THIEF,4,0,STEAL_GOLD,0)

ADD_TO_PARTY(ARCHER,ARCHER,6,600,DEFEND_PARTY,0)
ADD_TO_PARTY(ARCHER,ARCHER,4,400,DEFEND_PARTY,0)
ADD_TO_PARTY(ARCHER,ARCHER,4,400,DEFEND_PARTY,0)
ADD_TO_PARTY(ARCHER,ARCHER,4,400,DEFEND_PARTY,0)

ADD_TO_PARTY(DWARF,DWARFA,6,600,DEFEND_PARTY,0)
ADD_TO_PARTY(DWARF,DWARFA,4,400,DEFEND_PARTY,0)
ADD_TO_PARTY(DWARF,DWARFA,4,400,DEFEND_PARTY,0)
ADD_TO_PARTY(DWARF,DWARFA,4,400,DEFEND_PARTY,0)

ADD_TO_PARTY(BARBARIAN,BARBARIAN,6,600,DEFEND_PARTY,0)
ADD_TO_PARTY(BARBARIAN,BARBARIAN,4,400,DEFEND_PARTY,0)
ADD_TO_PARTY(BARBARIAN,BARBARIAN,4,400,DEFEND_PARTY,0)
ADD_TO_PARTY(BARBARIAN,BARBARIAN,4,400,DEFEND_PARTY,0)

ADD_TO_PARTY(KNIGHT,KNIGHT,4,4000,DEFEND_PARTY,0)
ADD_TO_PARTY(KNIGHT,BARBARIAN,6,600,DEFEND_PARTY,0)
ADD_TO_PARTY(KNIGHT,ARCHER,6,600,DEFEND_PARTY,0)
ADD_TO_PARTY(KNIGHT,ARCHER,6,600,DEFEND_PARTY,0)
ADD_TO_PARTY(KNIGHT,TUNNELLER,9,900,DEFEND_PARTY,0)
ADD_TO_PARTY(KNIGHT,DWARFA,7,700,DEFEND_PARTY,0)
ADD_TO_PARTY(KNIGHT,DWARFA,7,700,DEFEND_PARTY,0)

SET_FLAG(PLAYER0,FLAG0,0)

IF(PLAYER_GOOD,TUNNELLER==0)
	NEXT_COMMAND_REUSABLE
	ADD_TUNNELLER_TO_LEVEL(PLAYER_GOOD,-1,DUNGEON,1,1,0)
	NEXT_COMMAND_REUSABLE
	ADD_TUNNELLER_TO_LEVEL(PLAYER_GOOD,-1,DUNGEON,2,1,0)
	NEXT_COMMAND_REUSABLE
	ADD_TUNNELLER_TO_LEVEL(PLAYER_GOOD,-1,DUNGEON,3,1,0)
ENDIF

IF(PLAYER0,FLAG0==0)
	IF(PLAYER0,TOTAL_CREATURES==0)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER0,TUNNELLER,-1,1)
		NEXT_COMMAND_REUSABLE
		SET_FLAG(PLAYER0,FLAG0,1)
	ENDIF
ENDIF

IF(PLAYER0,FLAG0==1)
	IF(PLAYER0,TOTAL_CREATURES==0)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER0,ARCHER,-1,1)
		NEXT_COMMAND_REUSABLE
		SET_FLAG(PLAYER0,FLAG0,2)
	ENDIF
ENDIF

IF(PLAYER0,FLAG0==2)
	IF(PLAYER0,TOTAL_CREATURES==0)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER0,DWARF,-1,1)
		NEXT_COMMAND_REUSABLE
		SET_FLAG(PLAYER0,FLAG0,3)
	ENDIF
ENDIF

IF(PLAYER0,FLAG0==3)
	IF(PLAYER0,TOTAL_CREATURES==0)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER0,BARBARIAN,-1,1)
		NEXT_COMMAND_REUSABLE
		SET_FLAG(PLAYER0,FLAG0,4)
	ENDIF
ENDIF

IF(PLAYER0,FLAG0==4)
	IF(PLAYER0,TOTAL_CREATURES==0)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER0,KNIGHT,-1,1)
		NEXT_COMMAND_REUSABLE
		SET_FLAG(PLAYER0,FLAG0,0)
	ENDIF
ENDIF

SET_FLAG(PLAYER1,FLAG0,0)

IF(PLAYER1,MONEY>=15000)
	IF(PLAYER1,FLAG0==0)
		IF(PLAYER_GOOD,THIEF==0)
			NEXT_COMMAND_REUSABLE
			ADD_PARTY_TO_LEVEL(PLAYER_GOOD,THIEF,-1,1)
			NEXT_COMMAND_REUSABLE
			SET_FLAG(PLAYER1,FLAG0,1)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER1,MONEY>=30000)
	IF(PLAYER1,FLAG0==1)
		IF(PLAYER_GOOD,THIEF==0)
			NEXT_COMMAND_REUSABLE
			ADD_PARTY_TO_LEVEL(PLAYER_GOOD,THIEF,-1,1)
			NEXT_COMMAND_REUSABLE
			SET_FLAG(PLAYER1,FLAG0,2)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER1,MONEY>=45000)
	IF(PLAYER1,FLAG0==1)
		IF(PLAYER_GOOD,THIEF==0)
			NEXT_COMMAND_REUSABLE
			ADD_PARTY_TO_LEVEL(PLAYER_GOOD,THIEF,-1,1)
			NEXT_COMMAND_REUSABLE
			SET_FLAG(PLAYER1,FLAG0,0)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER2,MONEY>=15000)
	IF(PLAYER1,FLAG0==0)
		IF(PLAYER_GOOD,THIEF==0)
			NEXT_COMMAND_REUSABLE
			ADD_PARTY_TO_LEVEL(PLAYER_GOOD,THIEF,-1,1)
			NEXT_COMMAND_REUSABLE
			SET_FLAG(PLAYER1,FLAG0,1)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER2,MONEY>=30000)
	IF(PLAYER1,FLAG0==1)
		IF(PLAYER_GOOD,THIEF==0)
			NEXT_COMMAND_REUSABLE
			ADD_PARTY_TO_LEVEL(PLAYER_GOOD,THIEF,-1,1)
			NEXT_COMMAND_REUSABLE
			SET_FLAG(PLAYER1,FLAG0,2)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER2,MONEY>=45000)
	IF(PLAYER1,FLAG0==1)
		IF(PLAYER_GOOD,THIEF==0)
			NEXT_COMMAND_REUSABLE
			ADD_PARTY_TO_LEVEL(PLAYER_GOOD,THIEF,-1,1)
			NEXT_COMMAND_REUSABLE
			SET_FLAG(PLAYER1,FLAG0,0)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER3,MONEY>=15000)
	IF(PLAYER1,FLAG0==0)
		IF(PLAYER_GOOD,THIEF==0)
			NEXT_COMMAND_REUSABLE
			ADD_PARTY_TO_LEVEL(PLAYER_GOOD,THIEF,-1,1)
			NEXT_COMMAND_REUSABLE
			SET_FLAG(PLAYER1,FLAG0,1)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER3,MONEY>=30000)
	IF(PLAYER1,FLAG0==1)
		IF(PLAYER_GOOD,THIEF==0)
			NEXT_COMMAND_REUSABLE
			ADD_PARTY_TO_LEVEL(PLAYER_GOOD,THIEF,-1,1)
			NEXT_COMMAND_REUSABLE
			SET_FLAG(PLAYER1,FLAG0,2)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER3,MONEY>=45000)
	IF(PLAYER1,FLAG0==1)
		IF(PLAYER_GOOD,THIEF==0)
			NEXT_COMMAND_REUSABLE
			ADD_PARTY_TO_LEVEL(PLAYER_GOOD,THIEF,-1,1)
			NEXT_COMMAND_REUSABLE
			SET_FLAG(PLAYER1,FLAG0,0)
		ENDIF
	ENDIF
ENDIF
