REM Kaebordir
REM Level by Oetelaer
REM ####### REALM #######

SET_GENERATE_SPEED(500)

MAX_CREATURES(PLAYER0,25)
MAX_CREATURES(PLAYER1,25)
MAX_CREATURES(PLAYER2,25)
MAX_CREATURES(PLAYER3,25)

START_MONEY(PLAYER0,0)
START_MONEY(PLAYER1,99999)
START_MONEY(PLAYER2,99999)
START_MONEY(PLAYER3,99999)
START_MONEY(PLAYER_GOOD,9999999)

ALLY_PLAYERS(PLAYER2,PLAYER1)
ALLY_PLAYERS(PLAYER3,PLAYER2)
ALLY_PLAYERS(PLAYER1,PLAYER3)
ALLY_PLAYERS(PLAYER_GOOD,PLAYER1)
ALLY_PLAYERS(PLAYER_GOOD,PLAYER2)
ALLY_PLAYERS(PLAYER_GOOD,PLAYER3)

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


REM ####### POOL #######

ADD_CREATURE_TO_POOL(SPIDER,25)
ADD_CREATURE_TO_POOL(BUG,25)
ADD_CREATURE_TO_POOL(SPIDER,25)
ADD_CREATURE_TO_POOL(DEMONSPAWN,25)
ADD_CREATURE_TO_POOL(SORCEROR,25)
ADD_CREATURE_TO_POOL(BILE_DEMON,25)
ADD_CREATURE_TO_POOL(DRAGON,25)
ADD_CREATURE_TO_POOL(TROLL,25)
ADD_CREATURE_TO_POOL(ORC,25)
ADD_CREATURE_TO_POOL(DARK_MISTRESS,25)
ADD_CREATURE_TO_POOL(SKELETON,25)
ADD_CREATURE_TO_POOL(GHOST,25)
ADD_CREATURE_TO_POOL(HELL_HOUND,25)
ADD_CREATURE_TO_POOL(VAMPIRE,25)
ADD_CREATURE_TO_POOL(TENTACLE,25)
ADD_CREATURE_TO_POOL(HORNY,25)
ADD_CREATURE_TO_POOL(WIZARD,25)
ADD_CREATURE_TO_POOL(BARBARIAN,25)
ADD_CREATURE_TO_POOL(ARCHER,25)
ADD_CREATURE_TO_POOL(MONK,25)
ADD_CREATURE_TO_POOL(DWARFA,25)
ADD_CREATURE_TO_POOL(KNIGHT,25)
ADD_CREATURE_TO_POOL(AVATAR,25)
ADD_CREATURE_TO_POOL(TUNNELLER,25)
ADD_CREATURE_TO_POOL(WITCH,25)
ADD_CREATURE_TO_POOL(GIANT,25)
ADD_CREATURE_TO_POOL(FAIRY,25)
ADD_CREATURE_TO_POOL(THIEF,25)
ADD_CREATURE_TO_POOL(SAMURAI,25)

REM ####### MONSTERS #######
REM PLAYER0

CREATURE_AVAILABLE(PLAYER0,FLY,1,1)
CREATURE_AVAILABLE(PLAYER0,BUG,1,1)
CREATURE_AVAILABLE(PLAYER0,SPIDER,1,1)
CREATURE_AVAILABLE(PLAYER0,DEMONSPAWN,1,1)
CREATURE_AVAILABLE(PLAYER2,SORCEROR,1,1)
CREATURE_AVAILABLE(PLAYER2,BILE_DEMON,1,1)
CREATURE_AVAILABLE(PLAYER1,DRAGON,1,1)
CREATURE_AVAILABLE(PLAYER0,TROLL,1,1)
CREATURE_AVAILABLE(PLAYER2,ORC,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,DARK_MISTRESS,1,1)
CREATURE_AVAILABLE(PLAYER0,SKELETON,1,1)
CREATURE_AVAILABLE(PLAYER0,GHOST,1,1)
CREATURE_AVAILABLE(PLAYER3,HELL_HOUND,1,1)
CREATURE_AVAILABLE(PLAYER2,VAMPIRE,1,1)
CREATURE_AVAILABLE(PLAYER0,TENTACLE,1,1)
CREATURE_AVAILABLE(PLAYER0,HORNY,1,1)
CREATURE_AVAILABLE(PLAYER3,WIZARD,1,1)
CREATURE_AVAILABLE(PLAYER3,BARBARIAN,1,1)
CREATURE_AVAILABLE(PLAYER3,ARCHER,1,1)
CREATURE_AVAILABLE(PLAYER3,MONK,1,1)
CREATURE_AVAILABLE(PLAYER3,DWARFA,1,1)
CREATURE_AVAILABLE(PLAYER3,KNIGHT,1,1)
CREATURE_AVAILABLE(PLAYER3,AVATAR,1,1)
CREATURE_AVAILABLE(PLAYER3,TUNNELLER,1,1)
CREATURE_AVAILABLE(PLAYER3,WITCH,1,1)
CREATURE_AVAILABLE(PLAYER3,GIANT,1,1)
CREATURE_AVAILABLE(PLAYER3,FAIRY,1,1)
CREATURE_AVAILABLE(PLAYER3,THIEF,1,1)
CREATURE_AVAILABLE(PLAYER3,SAMURAI,1,1)

REM ####### ROOMS #######
REM PLAYER0

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(PLAYER3,BRIDGE,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,GUARD_POST,1,0)
ROOM_AVAILABLE(PLAYER2,WORKSHOP,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,BARRACKS,1,0)
ROOM_AVAILABLE(PLAYER1,PRISON,1,0)
ROOM_AVAILABLE(PLAYER2,PRISON,1,0)
ROOM_AVAILABLE(PLAYER3,PRISON,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,TORTURE,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,TEMPLE,1,0)
ROOM_AVAILABLE(PLAYER1,GRAVEYARD,1,0)
ROOM_AVAILABLE(PLAYER2,GRAVEYARD,1,0)
ROOM_AVAILABLE(PLAYER3,GRAVEYARD,1,0)
ROOM_AVAILABLE(PLAYER1,SCAVENGER,1,0)
ROOM_AVAILABLE(PLAYER2,SCAVENGER,1,0)
ROOM_AVAILABLE(PLAYER3,SCAVENGER,1,0)

REM ####### SPELLS #######
REM PLAYER0

MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HAND,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SLAP,1,1)
MAGIC_AVAILABLE(PLAYER0,POWER_IMP,1,1)
MAGIC_AVAILABLE(PLAYER2,POWER_IMP,1,1)
MAGIC_AVAILABLE(PLAYER3,POWER_IMP,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SIGHT,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SPEED,1,0)
MAGIC_AVAILABLE(PLAYER3,POWER_OBEY,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CALL_TO_ARMS,1,0)
MAGIC_AVAILABLE(PLAYER2,POWER_CONCEAL,1,0)
MAGIC_AVAILABLE(PLAYER2,POWER_CAVE_IN,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HEAL_CREATURE,1,0)
MAGIC_AVAILABLE(PLAYER1,POWER_LIGHTNING,1,1)
MAGIC_AVAILABLE(PLAYER2,POWER_LIGHTNING,1,0)
MAGIC_AVAILABLE(PLAYER3,POWER_LIGHTNING,1,0)
MAGIC_AVAILABLE(PLAYER1,POWER_PROTECT,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CHICKEN,1,0)
MAGIC_AVAILABLE(PLAYER2,POWER_DISEASE,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_ARMAGEDDON,1,0)
MAGIC_AVAILABLE(PLAYER1,POWER_DESTROY_WALLS,1,0)
MAGIC_AVAILABLE(PLAYER2,POWER_DESTROY_WALLS,1,0)
MAGIC_AVAILABLE(PLAYER3,POWER_DESTROY_WALLS,1,0)

REM ####### WORKSHOP #######

DOOR_AVAILABLE(ALL_PLAYERS,WOOD,1,0)
DOOR_AVAILABLE(PLAYER2,STEEL,1,4)
DOOR_AVAILABLE(PLAYER1,STEEL,1,12)
DOOR_AVAILABLE(PLAYER3,STEEL,1,6)
TRAP_AVAILABLE(ALL_PLAYERS,LIGHTNING,1,0)
TRAP_AVAILABLE(PLAYER2,LAVA,1,0)
TRAP_AVAILABLE(PLAYER3,LAVA,1,0)
TRAP_AVAILABLE(PLAYER2,BOULDER,1,0)


REM ####### PARTIES #######

REM WIZARDBARBARIANARCHERMONKDWARFAKNIGHTAVATARTUNNELLERWITCHGIANTFAIRYTHIEFSAMURAI
REM IMPHORNYSKELETONTROLLDRAGONDEMONSPAWNFLYDARK_MISTRESSSORCERORBILE_DEMONBUGVAMPIRESPIDERHELL_HOUNDGHOSTTENTACLEORC

CREATE_PARTY(SAMURAIS)
    ADD_TO_PARTY(SAMURAIS,SAMURAI,10,150,DEFEND_PARTY,0)
    ADD_TO_PARTY(SAMURAIS,SAMURAI,7,200,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(SAMURAIS,SAMURAI,7,200,DEFEND_PARTY,0)
    ADD_TO_PARTY(SAMURAIS,SAMURAI,8,300,DEFEND_PARTY,0)
    ADD_TO_PARTY(SAMURAIS,SAMURAI,8,300,DEFEND_PARTY,0)
    ADD_TO_PARTY(SAMURAIS,SAMURAI,9,400,ATTACK_DUNGEON_HEART,0)
    ADD_TO_PARTY(SAMURAIS,SAMURAI,10,150,DEFEND_PARTY,0)

CREATE_PARTY(FAIRIES)
    ADD_TO_PARTY(FAIRIES,FAIRY,6,76,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(FAIRIES,FAIRY,6,83,STEAL_GOLD,0)
    ADD_TO_PARTY(FAIRIES,FAIRY,10,21,DEFEND_PARTY,0)
    ADD_TO_PARTY(FAIRIES,FAIRY,10,76,DEFEND_PARTY,0)
    ADD_TO_PARTY(FAIRIES,FAIRY,10,202,DEFEND_PARTY,0)
    ADD_TO_PARTY(FAIRIES,FAIRY,6,23,ATTACK_DUNGEON_HEART,0)

CREATE_PARTY(WAIT)
    ADD_TO_PARTY(WAIT,MONK,10,0,ATTACK_DUNGEON_HEART,0)
    ADD_TO_PARTY(WAIT,WIZARD,8,200,DEFEND_PARTY,0)
    ADD_TO_PARTY(WAIT,ARCHER,6,50,DEFEND_PARTY,0)
    ADD_TO_PARTY(WAIT,ARCHER,6,50,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(WAIT,BARBARIAN,6,10,DEFEND_PARTY,0)

CREATE_PARTY(KNIGHTS)
    ADD_TO_PARTY(KNIGHTS,KNIGHT,10,12000,ATTACK_DUNGEON_HEART,0)
    ADD_TO_PARTY(KNIGHTS,MONK,10,120,DEFEND_PARTY,0)
    ADD_TO_PARTY(KNIGHTS,MONK,10,120,DEFEND_PARTY,0)
    ADD_TO_PARTY(KNIGHTS,MONK,10,120,DEFEND_PARTY,0)
    ADD_TO_PARTY(KNIGHTS,MONK,10,120,DEFEND_PARTY,0)
    ADD_TO_PARTY(KNIGHTS,MONK,10,120,DEFEND_PARTY,0)
    ADD_TO_PARTY(KNIGHTS,BARBARIAN,10,120,ATTACK_ENEMIES,0)

CREATE_PARTY(KNIGHTS2)
    ADD_TO_PARTY(KNIGHTS2,AVATAR,10,12000,ATTACK_DUNGEON_HEART,0)
    ADD_TO_PARTY(KNIGHTS2,MONK,10,120,DEFEND_PARTY,0)
    ADD_TO_PARTY(KNIGHTS2,MONK,10,120,DEFEND_PARTY,0)
    ADD_TO_PARTY(KNIGHTS2,MONK,10,120,DEFEND_PARTY,0)
    ADD_TO_PARTY(KNIGHTS2,MONK,10,120,DEFEND_PARTY,0)
    ADD_TO_PARTY(KNIGHTS2,MONK,10,120,DEFEND_PARTY,0)
    ADD_TO_PARTY(KNIGHTS2,BARBARIAN,10,120,ATTACK_ENEMIES,0)


REM ####### OCCURENCES #######

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

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

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

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

IF(PLAYER1,BRIDGE > 0)
    ROOM_AVAILABLE(PLAYER1,BRIDGE,1,1)
ENDIF

IF(PLAYER2,BRIDGE > 0)
    ROOM_AVAILABLE(PLAYER2,BRIDGE,1,1)
ENDIF

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

IF_ACTION_POINT(1,PLAYER0)
    ADD_CREATURE_TO_LEVEL(PLAYER1,IMP,2,8,4,500)
    ADD_CREATURE_TO_LEVEL(PLAYER1,DARK_MISTRESS,2,4,7,0)
    ADD_CREATURE_TO_LEVEL(PLAYER1,VAMPIRE,2,4,7,0)
    ADD_CREATURE_TO_LEVEL(PLAYER1,ORC,2,4,7,500)
    ADD_CREATURE_TO_LEVEL(PLAYER1,BILE_DEMON,2,8,9,500)
    MAGIC_AVAILABLE(PLAYER1,POWER_IMP,1,1)
ENDIF

IF_ACTION_POINT(6,PLAYER0)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,SAMURAIS,3,1)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,SAMURAIS,4,1)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,SAMURAIS,5,1)
ENDIF

REM ####### CLIMAX #######

IF(PLAYER0,DUNGEON_DESTROYED == 1)
    LOSE_GAME
ENDIF

IF(PLAYER2,DUNGEON_DESTROYED == 1)
    IF(PLAYER3,DUNGEON_DESTROYED == 0)
        DOOR_AVAILABLE(PLAYER0,STEEL,1,0)
        ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,FAIRIES,1,ACTION_POINT,7,10,500)
        ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,WAIT,1,ACTION_POINT,8,5,500)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,SAMURAIS,1,1)
    ENDIF
ENDIF

IF(PLAYER2,DUNGEON_DESTROYED == 0)
    IF(PLAYER3,DUNGEON_DESTROYED == 1)
        DOOR_AVAILABLE(PLAYER0,STEEL,1,0)
        ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,FAIRIES,1,ACTION_POINT,7,10,500)
        ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,WAIT,1,ACTION_POINT,8,5,500)
        ADD_PARTY_TO_LEVEL(PLAYER_GOOD,SAMURAIS,1,1)
    ENDIF
ENDIF

IF(PLAYER1,DUNGEON_DESTROYED == 1)
    TRAP_AVAILABLE(PLAYER0,BOULDER,1,0)
    TRAP_AVAILABLE(PLAYER0,LAVA,1,0)
    ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,WAIT,3,DUNGEON,0,5,500)
    ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,WAIT,4,DUNGEON,0,5,500)
    ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,WAIT,5,DUNGEON,0,5,500)
    ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,WAIT,6,DUNGEON,0,5,500)
    ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,WAIT,6,DUNGEON,2,5,500)
    ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,WAIT,6,DUNGEON,0,5,500)
    ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,WAIT,7,DUNGEON,0,5,500)
    ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,WAIT,8,DUNGEON,0,5,500)
    ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,FAIRIES,-2,DUNGEON,0,10,500)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,SAMURAIS,6,3)
ENDIF

IF(PLAYER_GOOD,DUNGEON_DESTROYED == 1)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,SAMURAIS,6,3)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,KNIGHTS,6,1)
    ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,KNIGHTS2,-1,DUNGEON,0,5,500)
    ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,WIZARD,6,8,10,200)
    IF(PLAYER_GOOD,TOTAL_CREATURES == 0)
        WIN_GAME
    ENDIF
ENDIF
