LEVEL_VERSION(1)
SET_GENERATE_SPEED(200)

MAX_CREATURES(PLAYER0,17)
MAX_CREATURES(PLAYER1,40)
MAX_CREATURES(PLAYER2,40)

START_MONEY(PLAYER0,1000)
START_MONEY(PLAYER1,9999999)
START_MONEY(PLAYER2,9999999)

REM     Computer Player stuff
COMPUTER_PLAYER(PLAYER1,1)
COMPUTER_PLAYER(PLAYER2,1)
ALLY_PLAYERS(PLAYER1,PLAYER2,1)

SET_CREATURE_PROPERTY(GHOST,PASS_LOCKED_DOORS,0)

ADD_CREATURE_TO_POOL(TROLL,8)
ADD_CREATURE_TO_POOL(SORCEROR,10)
ADD_CREATURE_TO_POOL(DARK_MISTRESS,4)
ADD_CREATURE_TO_POOL(DRAGON,10)
ADD_CREATURE_TO_POOL(HELL_HOUND,5)
ADD_CREATURE_TO_POOL(VAMPIRE,10)
ADD_CREATURE_TO_POOL(ORC,10)
ADD_CREATURE_TO_POOL(HORNY,10)
ADD_CREATURE_TO_POOL(BILE_DEMON,10)
ADD_CREATURE_TO_POOL(SPIDER,10)
ADD_CREATURE_TO_POOL(BUG,10)
ADD_CREATURE_TO_POOL(FLY,20)
ADD_CREATURE_TO_POOL(DEMONSPAWN,15)
ADD_CREATURE_TO_POOL(SKELETON,20)
ADD_CREATURE_TO_POOL(GHOST,10)


REM ALL PLAYERS
	REM Creature_Availability

CREATURE_AVAILABLE(PLAYER1,DEMONSPAWN,1,0)
CREATURE_AVAILABLE(PLAYER2,DEMONSPAWN,1,0)
CREATURE_AVAILABLE(PLAYER2,TROLL,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,SORCEROR,1,0)
CREATURE_AVAILABLE(PLAYER0,DARK_MISTRESS,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,DRAGON,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,HELL_HOUND,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,VAMPIRE,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,ORC,1,0)
CREATURE_AVAILABLE(PLAYER1,HORNY,1,0)
CREATURE_AVAILABLE(PLAYER2,HORNY,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,BILE_DEMON,1,0)
CREATURE_AVAILABLE(PLAYER0,SPIDER,1,0)
CREATURE_AVAILABLE(PLAYER2,SPIDER,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,BUG,1,0)
CREATURE_AVAILABLE(PLAYER1,FLY,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,SKELETON,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,GHOST,1,0)
CREATURE_AVAILABLE(PLAYER1,TENTACLE,1,0)

REM Room_Availability

ROOM_AVAILABLE(PLAYER0,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,2,0)
ROOM_AVAILABLE(ALL_PLAYERS,BARRACKS,2,0)
ROOM_AVAILABLE(ALL_PLAYERS,GUARD_POST,2,0)
ROOM_AVAILABLE(ALL_PLAYERS,BRIDGE,2,0)
ROOM_AVAILABLE(ALL_PLAYERS,PRISON,2,0)
ROOM_AVAILABLE(ALL_PLAYERS,TORTURE,2,0)
ROOM_AVAILABLE(ALL_PLAYERS,SCAVENGER,2,0)
ROOM_AVAILABLE(ALL_PLAYERS,TEMPLE,2,0)
ROOM_AVAILABLE(ALL_PLAYERS,GRAVEYARD,2,0)
ROOM_AVAILABLE(PLAYER0,PRISON,3,0)

REM Spells

MAGIC_AVAILABLE(ALL_PLAYERS,POWER_IMP,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SIGHT,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CALL_TO_ARMS,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HEAL_CREATURE,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SPEED,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_LIGHTNING,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_PROTECT,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CONCEAL,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_DISEASE,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CAVE_IN,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CHICKEN,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HOLD_AUDIENCE,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_ARMAGEDDON,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_OBEY,1,1)

REM  doors & traps

DOOR_AVAILABLE(ALL_PLAYERS,STEEL,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,BOULDER,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,WORD_OF_POWER,1,0)
DOOR_AVAILABLE(PLAYER0,MAGIC,1,0)

rem CREATE_TEXT(3,116"Take what you can from this ancient dungeon, it may we hold items which may be of interest to you.")

QUICK_OBJECTIVE(113,"You are one of three dungeon keepers vying for power in this land. Your rivals will give you no quarter here. Make sure none of their number escape your torture room.")

IF(PLAYER0,GAME_TURN >= 15000)
	IF(PLAYER1,TOTAL_CREATURES <= 10)
		IF(PLAYER1,DUNGEON_DESTROYED == 0)
			QUICK_INFORMATION(1,"One of your opponents is weak destroy him.",PLAYER1)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER0,GAME_TURN >= 20000)
	IF(PLAYER2,TOTAL_CREATURES <= 10)
		IF(PLAYER2,DUNGEON_DESTROYED == 0)
			QUICK_INFORMATION(2,"Your other opponent has few creatures, strike now.",PLAYER2)
		ENDIF
	ENDIF
ENDIF

IF_AVAILABLE(PLAYER0,POWER_DESTROY_WALLS == 1)
	QUICK_INFORMATION(3,"Your researchers have crafted a destroy walls spell from the ether. Use it to smash down the protected walls of your unsuspecting enemy.")
ENDIF

IF(PLAYER0,FLAG0 == 0)
	IF_AVAILABLE(PLAYER1,POWER_DESTROY_WALLS == 1)
		QUICK_INFORMATION(4,"One of your opponents has developed a spell which can break down your protected walls, be on your guard.",PLAYER1)
		SET_FLAG(PLAYER0,FLAG0,1)
	ENDIF
ENDIF

IF(PLAYER0,FLAG0 == 0)
	IF_AVAILABLE(PLAYER2,POWER_DESTROY_WALLS == 1)
		QUICK_INFORMATION(5,"One of your opponents has developed a spell which can break down your protected walls, be on your guard.",PLAYER2)
		SET_FLAG(PLAYER0,FLAG0,1)
	ENDIF
ENDIF

IF_AVAILABLE(PLAYER0,POWER_ARMAGEDDON == 1)
	QUICK_INFORMATION(6,"You have developed a spell to end worlds. You may summon armageddon, but will you be the victor at judgement day.",ALL_PLAYERS)
ENDIF

IF(PLAYER0,ALL_DUNGEONS_DESTROYED == 1)
	IF_CONTROLS(PLAYER_GOOD, TOTAL_CREATURES == 0)
		WIN_GAME
	ENDIF
ENDIF

CREATE_PARTY(ONE)
	ADD_TO_PARTY(ONE,ARCHER,4,500,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(ONE,ARCHER,4,500,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(ONE,ARCHER,4,500,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(ONE,ARCHER,4,500,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(ONE,WIZARD,5,600,ATTACK_ENEMIES,0)

CREATE_PARTY(TWO)
	ADD_TO_PARTY(TWO,DWARFA,4,800,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(TWO,DWARFA,4,800,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(TWO,DWARFA,4,800,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(TWO,DWARFA,4,800,ATTACK_ENEMIES,0)

CREATE_PARTY(THREE)
	ADD_TO_PARTY(THREE,WITCH,6,1800,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(THREE,WITCH,6,1800,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(THREE,WITCH,6,1800,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(THREE,WITCH,6,1800,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(THREE,WITCH,6,1800,ATTACK_ENEMIES,0)

CREATE_PARTY(FOUR)
	ADD_TO_PARTY(FOUR,BARBARIAN,5,900,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(FOUR,BARBARIAN,5,900,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(FOUR,BARBARIAN,5,900,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(FOUR,BARBARIAN,5,900,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(FOUR,BARBARIAN,5,900,ATTACK_ENEMIES,0)

IF_ACTION_POINT(2,PLAYER0)
	SET_FLAG(PLAYER2,FLAG5,1)
ENDIF
IF_ACTION_POINT(3,PLAYER0)
	SET_FLAG(PLAYER2,FLAG5,1)
ENDIF
IF(PLAYER2,FLAG5 == 1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,ONE,-1,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,FOUR,-1,1)
ENDIF

IF_ACTION_POINT(1,PLAYER0)
	SET_TIMER(PLAYER_GOOD,TIMER0)
ENDIF
IF(PLAYER_GOOD,TIMER0 >= 500)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,TWO,4,1)
ENDIF
IF(PLAYER_GOOD,TIMER0 >= 1000)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,THREE,5,1)
ENDIF

