REM ********************************************
REM		    The Portal
REM             Script for Level 211
REM		   Steve Tupper
REM ********************************************


REM ************************************
REM ********** SETUP COMMANDS **********
REM ************************************


REM ********** Set up player information **********

REM *** Number of turns wait for new creature (max 12 turns per second depending on computer speed) ***
SET_GENERATE_SPEED(500)

REM *** money sart with - duh ***
START_MONEY(PLAYER0, 900000)

REM *** remember max of 255 in all dungeons on level at any time ***
MAX_CREATURES(PLAYER0, 40)

REM ********** Set up rooms, traps, doors and magic **********

REM *** rooms available to players also ENTRANCE but don't need here ***
ROOM_AVAILABLE(PLAYER0, TREASURE,  1,1)
ROOM_AVAILABLE(PLAYER0, RESEARCH,  1,1)
ROOM_AVAILABLE(PLAYER0, PRISON,    1,1)
ROOM_AVAILABLE(PLAYER0, TRAINING,  1,1)
ROOM_AVAILABLE(PLAYER0, WORKSHOP,  1,1)
ROOM_AVAILABLE(PLAYER0, BARRACKS,  1,1)
ROOM_AVAILABLE(PLAYER0, GARDEN,    1,1)
ROOM_AVAILABLE(PLAYER0, LAIR,      1,1)
ROOM_AVAILABLE(PLAYER0, BRIDGE,    1,0)
ROOM_AVAILABLE(PLAYER0, GUARD_POST,1,0)

REM *** spells available to players ***
MAGIC_AVAILABLE(PLAYER0, POWER_OBEY,         1,0)
MAGIC_AVAILABLE(PLAYER0, POWER_CALL_TO_ARMS, 1,0)
MAGIC_AVAILABLE(PLAYER0, POWER_HEAL_CREATURE,1,0)
MAGIC_AVAILABLE(PLAYER0, POWER_HOLD_AUDIENCE,1,0)
MAGIC_AVAILABLE(PLAYER0, POWER_SPEED,        1,0)
MAGIC_AVAILABLE(PLAYER0, POWER_PROTECT,      1,0)
MAGIC_AVAILABLE(PLAYER0, POWER_DESTROY_WALLS,1,0)
MAGIC_AVAILABLE(PLAYER0, POWER_ARMAGEDDON,   1,0)

REM *** doors available to players ***
DOOR_AVAILABLE(PLAYER0, BRACED,1,0)
DOOR_AVAILABLE(PLAYER0, STEEL, 1,0)
DOOR_AVAILABLE(PLAYER0, MAGIC, 1,0)

REM *** traps available to players ***
TRAP_AVAILABLE(PLAYER0, BOULDER,      1,0)
TRAP_AVAILABLE(PLAYER0, ALARM,        1,0)
TRAP_AVAILABLE(PLAYER0, LIGHTNING,    1,0)
TRAP_AVAILABLE(PLAYER0, WORD_OF_POWER,1,0)


REM ********** Set up creature information **********

REM *** remember to have enough to cover all players ***
REM *** normally good creatures ***
ADD_CREATURE_TO_POOL(ARCHER,       10)
ADD_CREATURE_TO_POOL(MONK,         2)
ADD_CREATURE_TO_POOL(KNIGHT,       10)
ADD_CREATURE_TO_POOL(THIEF,        27)
ADD_CREATURE_TO_POOL(TUNNELLER,    1)

REM *** the 1 field must be in here ***

CREATURE_AVAILABLE(PLAYER0,ARCHER,       1, 1)
CREATURE_AVAILABLE(PLAYER0,MONK,         1, 1)
CREATURE_AVAILABLE(PLAYER0,KNIGHT,       1, 1)
CREATURE_AVAILABLE(PLAYER0,THIEF,        1, 1)
CREATURE_AVAILABLE(PLAYER0,TUNNELLER,    1, 1)

REM *** ? = 1 - 10 ***
SET_CREATURE_MAX_LEVEL(PLAYER0, AVATAR, 5)


REM *** PARTY? can actually be any name in capitals as long as not one used elsewhere eg VAMPYRES but not VAMPIRE ***
CREATE_PARTY(WEAK)
CREATE_PARTY(MEDIUM)
CREATE_PARTY(STRONG)
CREATE_PARTY(DEADLY)
CREATE_PARTY(UNDEAD)
CREATE_PARTY(DEMONS)
CREATE_PARTY(ORCS)

REM *** objective = STEAL_GOLD, STEAL_SPELLS, ATTACK_ENEMIES, ATTACK_DUNGEON_HEART, ATTACK_ROOMS, DEFEND_PARTY ***
ADD_TO_PARTY(WEAK, FLY,   10, 0,    ATTACK_ROOMS, 0)
ADD_TO_PARTY(WEAK, BUG,    5, 0,    ATTACK_ROOMS, 0)
ADD_TO_PARTY(WEAK, IMP,    5, 1000, ATTACK_ROOMS, 0)
ADD_TO_PARTY(WEAK, SPIDER, 3, 0,    ATTACK_ROOMS, 0)

ADD_TO_PARTY(MEDIUM, DEMONSPAWN, 6, 0,    STEAL_SPELLS, 0)
ADD_TO_PARTY(MEDIUM, HELL_HOUND, 7, 0,    STEAL_SPELLS, 0)
ADD_TO_PARTY(MEDIUM, TENTACLE,  10, 0,    STEAL_SPELLS, 0)
ADD_TO_PARTY(MEDIUM, SORCEROR,  10, 1000, STEAL_SPELLS, 0)

ADD_TO_PARTY(STRONG, DRAGON,        5, 1000, ATTACK_ENEMIES, 0)
ADD_TO_PARTY(STRONG, DARK_MISTRESS, 6, 400,  ATTACK_ENEMIES, 0)
ADD_TO_PARTY(STRONG, BILE_DEMON,    5, 400,  ATTACK_ENEMIES, 0)
ADD_TO_PARTY(STRONG, VAMPIRE,       8, 800,  ATTACK_ENEMIES, 0)

ADD_TO_PARTY(DEADLY, HORNY,         8, 800, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(DEADLY, BILE_DEMON,    8, 800, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(DEADLY, DARK_MISTRESS, 8, 800, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(DEADLY, DRAGON,        8, 800, ATTACK_DUNGEON_HEART, 0)

ADD_TO_PARTY(UNDEAD, VAMPIRE,  10, 400, DEFEND_PARTY, 0)
ADD_TO_PARTY(UNDEAD, SKELETON, 10, 10,  DEFEND_PARTY, 0)
ADD_TO_PARTY(UNDEAD, GHOST,    10, 0,   DEFEND_PARTY, 0)
ADD_TO_PARTY(UNDEAD, VAMPIRE,   3, 100, DEFEND_PARTY, 0)

ADD_TO_PARTY(DEMONS, BILE_DEMON,    10, 100,  ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(DEMONS, HORNY,         10, 4000, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(DEMONS, DEMONSPAWN,    10, 0,    ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(DEMONS, DARK_MISTRESS, 10, 1000, ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(DEMONS, DEMONSPAWN,    5,  0,    ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(DEMONS, DEMONSPAWN,    3,  0,    ATTACK_DUNGEON_HEART, 0)
ADD_TO_PARTY(DEMONS, DEMONSPAWN,    2,  0,    ATTACK_DUNGEON_HEART, 0)

ADD_TO_PARTY(ORCS, ORC,   10, 100, STEAL_GOLD, 0)
ADD_TO_PARTY(ORCS, TROLL, 10, 200, STEAL_GOLD, 0)
ADD_TO_PARTY(ORCS, ORC,   3,  10,  STEAL_GOLD, 0)
ADD_TO_PARTY(ORCS, TROLL, 5,  20,  STEAL_GOLD, 0)
ADD_TO_PARTY(ORCS, ORC,   2,  5,   STEAL_GOLD, 0)
ADD_TO_PARTY(ORCS, TROLL, 3,  10,  STEAL_GOLD, 0)
ADD_TO_PARTY(ORCS, TROLL, 2,  0,   STEAL_GOLD, 0)

REM ************************************************
REM ********** CONDITIONS & GAME COMMANDS **********
REM ************************************************

REM *** if PLAYER? creature sets foot near action pt ***
NEXT_COMMAND_REUSABLE
IF_ACTION_POINT(1, PLAYER0)
   NEXT_COMMAND_REUSABLE
   RESET_ACTION_POINT(1)
   NEXT_COMMAND_REUSABLE
   ADD_CREATURE_TO_LEVEL(PLAYER_GOOD, HORNY, 1, 1, 10, 5000)
ENDIF
IF_ACTION_POINT(2, PLAYER0)
  QUICK_INFORMATION(5, "You have found a secret room in this creaky old castle, and look a ghost haunts it!")
ENDIF

QUICK_OBJECTIVE(1, "Dark times have come to the lands of the Knights, an unusually dark, long winter grips the land and now scouts from the North have brought you disturbing news. A strange structure has appeared from nowhere at the ancient Standing Stones of Aberfras, spitting the land asunder. Fearing an attack your superiors have sent you to investigate.", PLAYER0)

IF(PLAYER0, GAME_TURN > 350)
  QUICK_INFORMATION(2, "You are your Order's Avatar, Knight Protector, and have been given permission to use the old deserted castle at Aberfras, the only stronghold that stands between the structure and your lands to the South. The castle has stood empty for many years and is in need of repair and ridding of the animals that have settled there before your charges can arrive.")
ENDIF
IF(PLAYER0, GAME_TURN > 400)
  QUICK_INFORMATION(3, "You are accompanied to the castle by a small unit of young knights, your order's Chaplain and Caretaker to repair the doors and walls. You have been given orders to set up a training school for young squires hoping to become Knights whilst continually monitoring the mysterious structure for any unusual occurances. After all it could just be nothing.")
ENDIF
IF(PLAYER0, GAME_TURN > 500)
  QUICK_INFORMATION(4, "Your superiors are obviously worried, although the Knights generally shun magic, distrusting it with a passion, they have provided you with some magical items and plans for a library to research spells incase the worst should happen.")
ENDIF

REM *** FIRST WAVE ***
IF(PLAYER0, GAME_TURN > 7200)
  ADD_PARTY_TO_LEVEL(PLAYER_GOOD, WEAK, -1, 1)
ENDIF
IF(PLAYER0, GAME_TURN > 10800)
  ADD_PARTY_TO_LEVEL(PLAYER_GOOD, MEDIUM, -1, 1)
ENDIF
IF(PLAYER0, GAME_TURN > 14400)
  ADD_PARTY_TO_LEVEL(PLAYER_GOOD, STRONG, -1, 1)
  QUICK_INFORMATION(6, "It is as you feared, this structure is a portal from some dark land, defend the pass as long as you can while you send a messenger. Hopefully your homelands will have time to prepare or evacuate before some dark horde devours them all!")
ENDIF

REM *** SECOND WAVE ***
IF(PLAYER0, GAME_TURN > 25200)
  ADD_PARTY_TO_LEVEL(PLAYER_GOOD, WEAK, -1, 5)
ENDIF
IF(PLAYER0, GAME_TURN > 32400)
  ADD_PARTY_TO_LEVEL(PLAYER_GOOD, MEDIUM, -1, 5)
ENDIF
IF(PLAYER0, GAME_TURN > 39600)
  ADD_PARTY_TO_LEVEL(PLAYER_GOOD, STRONG, -1, 3)
ENDIF
IF(PLAYER0, GAME_TURN > 46800)
  ADD_PARTY_TO_LEVEL(PLAYER_GOOD, DEADLY, -1, 1)
ENDIF

REM *** ORC ARMY ***
IF(PLAYER0, GAME_TURN > 54000)
  ADD_PARTY_TO_LEVEL(PLAYER_GOOD, ORCS, -1, 5)
ENDIF

REM *** UNDEAD ARMY ***
IF(PLAYER0, GAME_TURN > 61200)
  ADD_PARTY_TO_LEVEL(PLAYER_GOOD, UNDEAD, -1, 5)
ENDIF

REM *** DEMONS ***
IF(PLAYER0, GAME_TURN > 68400)
  ADD_PARTY_TO_LEVEL(PLAYER_GOOD, DEMONS, -1, 3)
ENDIF

REM *** THIRD WAVE ***
IF(PLAYER0, GAME_TURN > 79200)
  ADD_PARTY_TO_LEVEL(PLAYER_GOOD, MEDIUM, -1, 10)
ENDIF
IF(PLAYER0, GAME_TURN > 82800)
  ADD_PARTY_TO_LEVEL(PLAYER_GOOD, STRONG, -1, 7)
ENDIF
IF(PLAYER0, GAME_TURN > 86400)
  ADD_PARTY_TO_LEVEL(PLAYER_GOOD, DEADLY, -1, 5)
ENDIF

REM *** FINAL BATTLE ***
IF(PLAYER0, GAME_TURN > 97200)
  ADD_PARTY_TO_LEVEL(PLAYER_GOOD, WEAK,   -1, 10)
  ADD_PARTY_TO_LEVEL(PLAYER_GOOD, MEDIUM, -1, 1)
  ADD_PARTY_TO_LEVEL(PLAYER_GOOD, STRONG, -1, 1)
  ADD_PARTY_TO_LEVEL(PLAYER_GOOD, DEADLY, -1, 1)
  ADD_PARTY_TO_LEVEL(PLAYER_GOOD, DEMONS, -1, 3)
  ADD_PARTY_TO_LEVEL(PLAYER_GOOD, ORCS,   -1, 2)
  ADD_PARTY_TO_LEVEL(PLAYER_GOOD, UNDEAD, -1, 1)
ENDIF


REM ************************************************
REM ********** WIN / LOSE GAME CONDITIONS **********
REM ************************************************

REM *** Win or lose condition ***
IF(PLAYER0, GAME_TURN > 97200)
   IF(PLAYER_GOOD, TOTAL_CREATURES == 0)
      WIN_GAME
   ENDIF
ENDIF
