[comp.sources.games] v03i056: omega - rogue like dungeon exploration, Part09/15

games-request@tekred.TEK.COM (01/21/88)

Submitted by: "Laurence R. Brothers" <brothers@paul.rutgers.edu>
Comp.sources.games: Volume 3, Issue 56
Archive-name: omega/Part09

#! /bin/sh

# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 9 (of 15)."
# Contents:  odepths.c oetc.c oinitmon8to10.c omega.hiscore
# Wrapped by billr@tekred on Mon Jan 18 10:20:34 1988
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f odepths.c -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"odepths.c\"
else
echo shar: Extracting \"odepths.c\" \(9091 characters\)
sed "s/^X//" >odepths.c <<'END_OF_odepths.c'
X/* omega copyright (C) by Laurence Raphael Brothers, 1987 */
X/* odepths.c */
X/* some functions to make the final level */
X
X#include <stdio.h>
X#include <strings.h>
X#include "oglob.h"
X
X/* from olev */
Xextern pmt make_creature();
Xextern void make_thing();
X
X/* from oaux */
Xextern void drop_at(),tacmode();
X
X/* from ofile */
Xextern FILE *checkfopen();
X
X/* from outil */
Xextern int random_range();
X
X/* from oscr */
Xextern void mprint(),drawomega(),morewait();
X
X/* from omon */
Xextern void m_status_set();
X
X/* from ocom */
Xextern void levelchange();
X
X/* odepths functions */
Xvoid load_depths(),make_double(),final_duel(),makedepthsmonster();
Xvoid assign_depths_site();
X
X
X/* loads the final level */
Xvoid load_depths()
X{
X  int i,j;
X  char site,digit;
X  pol item;
X  
X  FILE *fd;
X  
X  strcpy(Str1,OMEGALIB);
X  strcat(Str1,"odepths.dat");
X  fd = checkfopen(Str1,"r");
X  Mlist[NUMLEVELS-1] = NULL;
X
X  for(j=0;j<LENGTH;j++) {
X    for(i=0;i<WIDTH;i++) {
X      Dungeon[NUMLEVELS-1][i][j].roomnumber = RS_ADEPT;
X      Dungeon[NUMLEVELS-1][i][j].things = NULL;
X      Dungeon[NUMLEVELS-1][i][j].creature = NULL;
X      Dungeon[NUMLEVELS-1][i][j].stopsrun = FALSE;
X      site = getc(fd);
X      if (site == 'S') {
X	Dungeon[NUMLEVELS-1][i][j].locchar = FLOOR;
X	Dungeon[NUMLEVELS-1][i][j].secret = TRUE;
X      }
X      else if (site == '^') {
X	Dungeon[NUMLEVELS-1][i][j].locchar = FLOOR;
X	Dungeon[NUMLEVELS-1][i][j].p_locf = TRAP_BASE+random_range(NUMTRAPS);
X      }
X      else if (site == HEDGE) {
X	Dungeon[NUMLEVELS-1][i][j].locchar = HEDGE;
X	Dungeon[NUMLEVELS-1][i][j].p_locf = L_TRIFID;
X      }
X      else if (site == WATER) {
X	Dungeon[NUMLEVELS-1][i][j].locchar = WATER;
X	Dungeon[NUMLEVELS-1][i][j].p_locf = L_WATER;
X      }
X      else if (site == FIRE) {
X	Dungeon[NUMLEVELS-1][i][j].locchar = FIRE;
X	Dungeon[NUMLEVELS-1][i][j].p_locf = L_FIRE;
X      }
X      else if (site == WHIRLWIND) {
X	Dungeon[NUMLEVELS-1][i][j].locchar = WHIRLWIND;
X	Dungeon[NUMLEVELS-1][i][j].p_locf = L_WHIRLWIND;
X      }
X      else if (site == LAVA) {
X	Dungeon[NUMLEVELS-1][i][j].locchar = LAVA;
X	Dungeon[NUMLEVELS-1][i][j].p_locf = L_LAVA;
X      }
X      else if (site == ABYSS) {
X	Dungeon[NUMLEVELS-1][i][j].locchar = ABYSS;
X	Dungeon[NUMLEVELS-1][i][j].p_locf = L_FINAL_ABYSS;
X      }
X      else if (site == 'Y') {
X	Dungeon[NUMLEVELS-1][i][j].locchar = FLOOR;
X	Dungeon[NUMLEVELS-1][i][j].p_locf = L_PORTCULLIS;
X      }	  
X      else if (site == 'X') {
X	Dungeon[NUMLEVELS-1][i][j].locchar = FLOOR;
X	Dungeon[NUMLEVELS-1][i][j].p_locf = L_PORTCULLIS_TRAP;
X      }	  
X      else if (site == 'M') {
X	Dungeon[NUMLEVELS-1][i][j].locchar = FLOOR;
X	Dungeon[NUMLEVELS-1][i][j].p_locf = L_WARNING;
X      }
X      else if (site == CLOSED_DOOR) {
X	Dungeon[NUMLEVELS-1][i][j].locchar = CLOSED_DOOR;
X	Dungeon[NUMLEVELS-1][i][j].aux = LOCKED;
X	Dungeon[NUMLEVELS-1][i][j].p_locf = L_STATUE_WAKE;
X      }
X      else if (site == 'K') {
X	Dungeon[NUMLEVELS-1][i][j].locchar = FLOOR;
X	item = (pol) malloc(sizeof(oltype));
X	item->thing = (pob) malloc(sizeof(objtype));
X	item->next = NULL;
X	make_thing(item->thing,7); /* key */
X	Dungeon[NUMLEVELS-1][i][j].things = item;
X      }
X      else if (site == 'B') {
X	Dungeon[NUMLEVELS-1][i][j].locchar = FLOOR;
X	item = (pol) malloc(sizeof(oltype));
X	item->thing = (pob) malloc(sizeof(objtype));
X	item->next = NULL;
X	make_thing(item->thing,6); /* salt water */
X	Dungeon[NUMLEVELS-1][i][j].things = item;
X      }
X      else if (site == 'A') {
X	Dungeon[NUMLEVELS-1][i][j].locchar = FLOOR;
X	makedepthsmonster(i,j,ML10+6);
X      }
X      else if (site == 'E') {
X	Dungeon[NUMLEVELS-1][i][j].locchar = FLOOR;
X	makedepthsmonster(i,j,ML10+5);
X      }
X      else if (site == 'W') {
X	Dungeon[NUMLEVELS-1][i][j].locchar = FLOOR;
X	makedepthsmonster(i,j,ML10+7);
X      }
X      else if (site == 'F') {
X	Dungeon[NUMLEVELS-1][i][j].locchar = FLOOR;
X	makedepthsmonster(i,j,ML10+8);
X      }
X      else if (site == 'I') {
X	Dungeon[NUMLEVELS-1][i][j].locchar = FLOOR;
X	makedepthsmonster(i,j,ML0+2);
X      }
X      else if (site == 'o') {
X	Dungeon[NUMLEVELS-1][i][j].locchar = PORTAL;
X	Dungeon[NUMLEVELS-1][i][j].p_locf = L_ADEPT;
X      }
X      else if (site == 'G') {
X	Dungeon[NUMLEVELS-1][i][j].locchar = UP;
X	Dungeon[NUMLEVELS-1][i][j].p_locf = L_CHALLENGE;
X      }
X      else if (site == 'D') 
X	assign_depths_site(i,j);
X      else if (site == UP) {
X	Dungeon[NUMLEVELS-1][i][j].locchar = UP;
X	Dungeon[NUMLEVELS-1][i][j].aux = NUMLEVELS-2;
X      }
X      else if (site == WALL) {
X	Dungeon[NUMLEVELS-1][i][j].locchar = WALL;
X	Dungeon[NUMLEVELS-1][i][j].aux = 500;
X      }
X      else Dungeon[NUMLEVELS-1][i][j].locchar = site;
X    }
X    getc(fd);
X  }
X  Player.x = 31;
X  Player.y = 3;
X}
X
X
Xvoid final_duel()
X{
X  struct monster *m;
X  m = (pmt) (calloc(1,sizeof(montype)));
X  morewait();
X  mprint("You alight on a glowing blue disk floating in an endless void.");
X  mprint("Inscribed in the disk is a giant omega.");
X  mprint("On the far side of the disk, you find another adventurer.");
X  mprint("The stranger looks familiar.... Just like you!");
X  mprint("Your doppelganger moves to the attack.");
X  mprint("After a moment of ego-imbalance, you move to defend yourself.");
X  morewait();
X  drawomega();
X  make_double(m);
X  if (Player.patron == DESTINY) {
X    mprint("As you cross the image of the omega, you suddenly feel stronger.");
X    mprint("You imagine the Lords of Destiny radiating approval....");
X    Player.str += Player.rank[PRIESTHOOD]*2;
X    Player.dex += Player.rank[PRIESTHOOD]*2;
X    Player.agi += Player.rank[PRIESTHOOD]*2;
X    Player.hp += Player.rank[PRIESTHOOD]*20;
X    Player.mana += Player.rank[PRIESTHOOD]*20;
X  }
X  Final = TRUE;
X  tacmode(m);
X  Final = FALSE;
X  if (Player.hp > 0) {
X    mprint("You feel infused with power....");
X    mprint("You feel like you can completely control your environment.");
X    mprint("[ie, try hitting control-x]");
X    Player.rank[ADEPT]=TRUE;
X    mprint("Your vision blurs....");
X    levelchange(0,ABYSS);
X  }
X}
X
X
Xvoid make_double(m)
Xstruct monster *m;
X{
X  int i,numspells=0;
X  strcpy(m->monstring,Player.name);
X  strcpy(m->corpsestr,"Your corpse");
X  m->id = 0;
X  m->hit = Player.hit;
X  m->sense = Player.vision;
X  m->sleep = 0;
X  m->treasure = 0;
X  m->corpseweight = 1800;
X  m->attacked = 1;
X  m->uniqueness = 2;
X  m->monchar = PLAYER;
X  m->hitloc = 0;
X  m->possessions = 0;
X  m->hp = Player.hp;
X  m->ac = (Player.defense+Player.absorption)/2;
X  m->actions = 2+Player.level/10;
X  if (Player.rank[ARENA]) m->actions++;
X  m->tactics = MM_GOOD;
X  m->dmg = Player.dmg;
X  for (i=0;i<NUMSPELLS;i++)
X    if (Spells[i].known) numspells++;
X  m->xpv = Player.xp;
X  m->level = min(10,numspells/3);
X  m->talkf = M_TALK_SILENT;
X  m->movef = M_MOVE_SMART;
X  m->meleef = M_MELEE_NORMAL;
X  m->strikef = M_NO_OP;
X  m->specialf = M_SP_SPELL;
X}
X
X
Xvoid makedepthsmonster(i,j,id)
Xint i,j,id;
X{
X  pml tml = ((pml) (calloc(1,sizeof(mltype))));
X  Dungeon[NUMLEVELS-1][i][j].creature = make_creature(id);
X  tml->m = Dungeon[NUMLEVELS-1][i][j].creature;
X  tml->m->x = i;
X  tml->m->y = j;
X  tml->next = Mlist[NUMLEVELS-1];
X  Mlist[NUMLEVELS-1] = tml;
X  if (Monsters[id].uniqueness == UNIQUE_UNMADE)
X    Monsters[id].uniqueness = UNIQUE_MADE;
X}
X
Xvoid assign_depths_site(x,y)
Xint x,y;
X{
X  static int setup=0;
X  static int next=0;
X  static int permutation[6];
X  pol item;
X
X  int i,j,k,l;
X
X  if (setup == 0) {
X    setup = 1;
X    for(i=0;i<6;i++)
X      permutation[i] = i;
X    for(i=0;i<100;i++) {
X      j = random_range(6);
X      k = random_range(6);
X      l = permutation[j];
X      permutation[j] = permutation[k];
X      permutation[k] = l;
X    }
X  }
X
X  Dungeon[NUMLEVELS-1][x][y].locchar = FLOOR;
X  item = (pol) malloc(sizeof(oltype));
X  item->thing = (pob) malloc(sizeof(objtype));
X  item->next = NULL;
X  make_thing(item->thing,7); /* key */
X  Dungeon[NUMLEVELS-1][x][y].things = item;
X
X  if (next > 5) { /* in case someone changes the no. of D's */
X    Dungeon[NUMLEVELS-1][x][y].locchar = ABYSS;
X    Dungeon[NUMLEVELS-1][x][y].p_locf = L_ABYSS;
X  }
X  else {
X    Dungeon[NUMLEVELS-1][x][y].locchar = FLOOR;
X    Dungeon[NUMLEVELS-1][x][y].p_locf = L_GUARDIAN;
X    switch(permutation[next]) {
X    case 0:
X      if (Monsters[ML10+0].uniqueness == UNIQUE_UNMADE) {
X	makedepthsmonster(x,y,ML10+0);
X	if (Player.rank[THIEVES]) 
X	  m_status_set(Dungeon[NUMLEVELS-1][x][y].creature,HOSTILE);
X      }
X      break;
X    case 1:
X      if (Monsters[ML10+1].uniqueness == UNIQUE_UNMADE) {
X	makedepthsmonster(x,y,ML10+1);
X	if (Player.rank[COLLEGE]) 
X	  m_status_set(Dungeon[NUMLEVELS-1][x][y].creature,HOSTILE);
X      }
X      break;
X    case 2:
X      if (Monsters[ML10+2].uniqueness == UNIQUE_UNMADE) {
X	makedepthsmonster(x,y,ML10+2);
X	if (Player.rank[CIRCLE]) 
X	  m_status_set(Dungeon[NUMLEVELS-1][x][y].creature,HOSTILE);
X      }
X      break;
X    case 3:
X      if (Monsters[ML10+4].uniqueness == UNIQUE_UNMADE) {
X	makedepthsmonster(x,y,ML10+4);
X	if (Player.rank[LEGION]) 
X	  m_status_set(Dungeon[NUMLEVELS-1][x][y].creature,HOSTILE);
X      }
X      break;
X    default:
X      makedepthsmonster(x,y,ML9+random_range(NML_9));
X      m_status_set(Dungeon[NUMLEVELS-1][x][y].creature,HOSTILE);
X      break;
X    }
X    next++;
X  }
X}
X
END_OF_odepths.c
if test 9091 -ne `wc -c <odepths.c`; then
    echo shar: \"odepths.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f oetc.c -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"oetc.c\"
else
echo shar: Extracting \"oetc.c\" \(10288 characters\)
sed "s/^X//" >oetc.c <<'END_OF_oetc.c'
X/* omega copyright (C) by Laurence Raphael Brothers, 1987 */
X/* oetc.c */
X/* grab bag of random functions used in random places */
X
X#include <strings.h>
X#include "oglob.h"
X
X/* from oscr */
Xextern void mprint();
X
X/* from outil */
Xextern int random_range();
X
Xvoid hint(),learnclericalspells(),add_new_npc(),nameprint();
Xchar *slotstr(),*wordnum();
X
X/* there are various ways for the player to receive one of these hints */
Xvoid hint()
X{
X  switch(random_range(60)) {
X    case 0:mprint("There is a dungeon entrance in the Garden.");break;
X    case 1:mprint("Statues can be dangerous.");break;
X    case 2:mprint("Identify Artifacts.");break;
X    case 3:mprint("The higher form of mercury is desirable.");break;
X    case 4:mprint("A sense of unease is a good thing to have.");break;
X    case 5:mprint("If you dig too much, you might cause a cave in!.");break;
X    case 6:mprint("Be Lawful: Live and Let Live.");break;
X    case 7:mprint("Be Chaotic: Live and Let Die."); break;
X    case 8:mprint("The world doesn't slow down; you speed up.");break;
X    case 9:mprint("Security is a sense of dislocation.");break;
X    case 10:mprint("Tullimore Dew is a panacea.");break;
X    case 11:mprint("Thieves hide behind locked doors.");break;
X    case 12:mprint("`No jail is escapeproof' -- John Dillinger.");break;
X    case 13:mprint("Oh, to have an apartment of your own!");break;
X    case 14:mprint("Some homes have money and treasure.");break;
X    case 15:mprint("Some homes have burglar alarms.");break;
X    case 16:mprint("Oh, how I wish I was more powerful!"); break;
X    case 17:mprint("Oh, how I wish I was more wealthy!");break;
X    case 18:mprint("Oh, how I wish I was more skillful!"); break;
X    case 19:mprint("Oh, how I wish I was more balanced!"); break;
X    case 20:mprint("Don't anger fnords or fungi.");break;
X    case 21:mprint("Some fairies are good.");break;
X    case 22:mprint("An affair with a demon can be heartbreaking."); break;
X    case 23:mprint("The Explorer's Club knows a useful spell."); break;
X    case 24:mprint("Some Lyzzard partes are rotten."); break;
X    case 25:mprint("Magic pools are totally random."); break;
X    case 26:mprint("^F aborts the spell of Shadow Form."); break;
X    case 27:mprint("Humans can be good or evil, lawful or chaotic."); break;
X    case 28:mprint("There are six kinds of wishes."); break;
X    case 29:mprint("The fifth level is the lair of the Goblin King."); break;
X    case 30:mprint("Donaldson's Giants can withstand lava.");break;
X    case 31:mprint("Ritual magic can have many different effects.");break;
X    case 32:mprint("The Mercenaries are the best equipped fighters."); break;
X    case 33:mprint("The Gladiators are the most skilled fighters."); break;
X    case 34:mprint("Rent a flat and lose any bad stati you may have."); break;
X    case 35:mprint("Some junk may be worth a fortune if identified."); break;
X    case 36:mprint("Identify humans by talking to them."); break;
X    case 37:mprint("They say the Duke has a treasure trove."); break;
X    case 38:mprint("If you yield, your opponent will gain experience."); break;
X    case 39:mprint("The 33d level is the lair of the Dragon Lord."); break;
X    case 40:mprint("A full moon bodes well for the followers of Law."); break;
X    case 41:mprint("A new moon omens evil for the Law-abiding."); break;
X    case 42:mprint("Druids revere the half-moon."); break;
X    case 43:mprint("Most grot is useless."); break;
X    case 44:mprint("Cash can sometimes be found in the walls."); break;
X    case 45:mprint("Pointy weapons break often but dig better."); break;
X    case 46:mprint("The DREADED AQUAE MORTIS is invulnerable."); break;
X    case 47:mprint("There must be *some* reason to worship Destiny!"); break;
X    case 48:mprint("Kill a trifid? A puzzle! Try a saline solution!"); break;
X    case 49:mprint("Beware! The Eater of Souls inhabits the abyss!"); break;
X    case 50:mprint("They say there's a red-light district."); break;
X    case 51:mprint("The House of the Eclipse is behind a closed door.");
X    case 52:mprint("Don't block and attack in the same line."); break;
X    case 53:mprint("The Champion should never refuse a challenge."); break;
X    case 54:mprint("They say that the autoteller program is buggy."); break;
X    case 55:mprint("It's better not to sleep on the ground."); break;
X    case 56:mprint("Try ritual magic in a room with charred walls."); break;
X    case 57:mprint("Breaking down a wall by bashing it is a bad idea!"); break;
X    case 58:mprint("Don't be a three-time loser!"); break;
X    case 59:mprint("The Archdruid is always glad to welcome visitors.");break;
X  }
X}
X
X/* for when a deity teaches spells to a devotee */
Xvoid learnclericalspells(deity,level)
Xint deity,level;
X{
X  mprint("With your new clerical rank comes knowledge of magic...");
X  Player.pow+=level;
X  Player.maxpow+=level;
X  switch(level) {
X    case LAY: 
X      if (deity==ODIN) 
X	Spells[S_MISSILE].known = TRUE;
X      else if (deity==SET)
X	Spells[S_INVISIBLE].known = TRUE;
X      else if (deity==ATHENA)
X	Spells[S_IDENTIFY].known = TRUE;
X      else if (deity==HECATE)
X	Spells[S_DRAIN].known = TRUE;
X      else if (deity==DRUID) {
X	Spells[S_KNOWLEDGE].known = TRUE;
X	Spells[S_MON_DET].known = TRUE;
X      }
X      break;
X    case ACOLYTE: 
X      if (deity==ODIN) {
X	Spells[S_LBALL].known = TRUE;
X	Spells[S_TRUESIGHT].known = TRUE;
X      }
X      else if (deity==SET) {
X	Spells[S_SUMMON].known = TRUE;
X	Spells[S_FIREBOLT].known = TRUE;
X      }
X      else if (deity==ATHENA) {
X	Spells[S_HEAL].known = TRUE;
X	Spells[S_SANCTUARY].known = TRUE;
X      }
X      else if (deity==HECATE) {
X	Spells[S_SLEEP].known = TRUE;
X	Spells[S_DISPEL].known = TRUE;
X      }
X      else if (deity==DRUID) {
X	Spells[S_HEAL].known = TRUE;
X	Spells[S_CURE].known = TRUE;
X      }
X      else if (deity==DESTINY)
X	mprint("An acolyte of the Lords of Destiny. Gee whiz.");
X      break;
X    case PRIEST: 
X      Spells[S_SANCTIFY].known = TRUE;
X      if (deity==ODIN) {
X	Spells[S_HERO].known = TRUE;
X	Spells[S_HEAL].known = TRUE;
X      }
X      else if (deity==SET) {
X	Spells[S_INVISIBLE].known = TRUE;
X	Spells[S_DISPEL].known = TRUE;
X      }
X      else if (deity==ATHENA) {
X	Spells[S_INVULNERABLE].known = TRUE;
X	Spells[S_ACCURACY].known = TRUE;
X      }
X      else if (deity==HECATE) {
X	Spells[S_SHADOWFORM].known = TRUE;
X	Spells[S_CURE].known = TRUE;
X      }
X      else if (deity==DRUID) {
X	Spells[S_DISRUPT].known = TRUE;
X	Spells[S_ALERT].known = TRUE;
X	Spells[S_CLAIRVOYANCE].known = TRUE;
X      }
X      else if (deity==DESTINY)
X	mprint("How useless, a new priest of the Lords of Destiny.");
X      break;
X    case SPRIEST:
X      Spells[S_BLESS].known = TRUE;
X      if (deity == ODIN) 
X	Spells[S_ACCURACY].known = TRUE;
X      else if (deity == SET)
X	Spells[S_INVULNERABLE].known = TRUE;
X      else if (deity == ATHENA)
X	Spells[S_HERO].known = TRUE;
X      else if (deity == HECATE)
X	Spells[S_POLYMORPH].known = TRUE;
X      else if (deity == DRUID) {
X	Spells[S_POLYMORPH].known = TRUE;	
X	Spells[S_LEVITATE].known = TRUE;
X      }
X      else if (deity == DESTINY)
X	mprint("Wow, a new senior priest of the Lords of Destiny.");
X      break;
X    case HIGHPRIEST:
X      if (deity == ODIN)
X	Spells[S_INVULNERABLE].known = TRUE;
X      else if (deity == SET)
X	Spells[S_HELLFIRE].known = TRUE;
X      else if (deity == ATHENA)
X	Spells[S_HELLFIRE].known = TRUE;
X      else if (deity == HECATE)
X	Spells[S_DESECRATE].known = TRUE;
X      else if (deity == DRUID) {
X	Spells[S_DISINTEGRATE].known = TRUE;
X	Spells[S_HERO].known = TRUE;
X      }
X      else if (deity == DESTINY) {
X	mprint("So you're now the high priest of the Lords of Destiny.");
X	mprint("You didn't think you were going to get anything, did you?");
X      }
X    }
X}
X
X/* for the use of the casino slot machine */
Xchar *slotstr(num)
Xint num;
X{
X  switch(num) {
X  case 0:
X    return("<Slime Mold>");
X    break;
X  case 1:
X    return("<Lemon>");
X    break;
X  case 2:
X    return("<Copper>");
X    break;
X  case 3:
X    return("<Nymph>");
X    break;
X  case 4:
X    return("<Sword>");
X    break;
X  case 5:
X    return("<Shield>");
X    break;
X  case 6:
X    return("<Chest>");
X    break;
X  case 7:
X    return("<Bar>");
X    break;
X  case 8:
X    return("<Orb>");
X    break;
X  case 9:
X    return("<Mithril Nugget>");
X    break;
X  }
X}
X
X/* random names for various uses */
Xvoid nameprint()
X{
X  switch(random_range(40)) {
X  case 0:mprint("Orion Splash");
X  case 1:mprint("Gorgar");break;
X  case 2:mprint("Hieronymous");break;
X  case 3:mprint("Quantifor Quotron");break;
X  case 4:mprint("Leon");break;
X  case 5:mprint("Joyce");break;
X  case 6:mprint("Leticia Smiley");break;
X  case 7:mprint("Ogilvy the Grim");break;
X  case 8:mprint("Salara Storn");break;
X  case 9:mprint("Murgo");break;
X  case 10:mprint("Jonathan Atwilder");break;
X  case 11:mprint("Xylos the Tan");break;
X  case 12:mprint("Terence");break;
X  case 13:mprint("Toronado");break;
X  case 14:mprint("Kelly");break;
X  case 15:mprint("Cantinflas");break;
X  case 16:mprint("Ixel");break;
X  case 17:mprint("Toto");break;
X  case 18:mprint("Frost");break;
X  case 19:mprint("Aliera Erinyes");break;
X  case 20:mprint("Godel");break;
X  case 21:mprint("Kerst Blackblade");break;
X  case 22:mprint("Ebenezer");break;
X  case 23:mprint("Jeremiah");break;
X  case 24:mprint("Triskelion Shadow");break;
X  case 25:mprint("Eleskir Eremar");break;
X  case 26:mprint("Tyron");break;
X  case 27:mprint("Morgon");break;
X  case 28:mprint("Achmed");break;
X  case 29:mprint("Chin");break;
X  case 30:mprint("Fujimoto");break;
X  case 31:mprint("Dos Santos");break;
X  case 32:mprint("Federico");break;
X  case 33:mprint("Jaime");break;
X  case 34:mprint("Siobhan");break;
X  case 35:mprint("Hans");break;
X  case 36:mprint("Gurkov");break;
X  case 37:mprint("Krilos the Slayer");break;
X  case 38:mprint("Oxxblud");break;
X  case 39:mprint("Dorian");break;
X  }
X}
X
X
X/* returns english string equivalent of number */
Xchar *wordnum(num)
X{
X  switch(num) {
X  case 0: return("zero "); break;
X  case 1: return("one "); break;
X  case 2: return("two "); break;
X  case 3: return("three "); break;
X  case 4: return("four "); break;
X  case 5: return("five "); break;
X  case 6: return("six "); break;
X  case 7: return("seven "); break;
X  case 8: return("eight "); break;
X  case 9: return("nine "); break;
X  case 10: return("ten "); break;
X  default: return(""); break;
X  }
X}
END_OF_oetc.c
if test 10288 -ne `wc -c <oetc.c`; then
    echo shar: \"oetc.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f oinitmon8to10.c -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"oinitmon8to10.c\"
else
echo shar: Extracting \"oinitmon8to10.c\" \(34254 characters\)
sed "s/^X//" >oinitmon8to10.c <<'END_OF_oinitmon8to10.c'
X/* omega copyright (c) 1987 by Laurence Raphael Brothers */
X/* oinitmon8to10.c */
X/* monster levels 8 to 10 */
X
X#include <strings.h>
X#include "oglob.h"
X
X/* from oitem */
Xextern void make_weapon(), make_artifact(), make_thing();
X
X/* from omon */
Xextern void m_pickup();
X
Xvoid initmon8to10()
X{
X  pob tob;
X
X  /* the good fairy */
X  Monsters[ML8+0].id = ML8+0;
X  Monsters[ML8+0].hp = 1;
X  Monsters[ML8+0].speed = 3;
X  Monsters[ML8+0].hit = 0;
X  Monsters[ML8+0].actions = 0;
X  Monsters[ML8+0].tactics = MM_GOOD+MM_TIMID;
X  Monsters[ML8+0].ac = 100;
X  Monsters[ML8+0].dmg = 0;
X  Monsters[ML8+0].sense = 6;
X  Monsters[ML8+0].wakeup = 2;
X  Monsters[ML8+0].level = 8;
X  Monsters[ML8+0].status = MOBILE+FLYING;
X  Monsters[ML8+0].immunity = pow2(FLAME)+pow2(COLD)+pow2(SLEEP);
X  Monsters[ML8+0].sleep = 0;
X  Monsters[ML8+0].treasure = 0;
X  Monsters[ML8+0].possessions = NULL;
X  Monsters[ML8+0].xpv = 50;
X  Monsters[ML8+0].x = -1;
X  Monsters[ML8+0].y = -1;
X  Monsters[ML8+0].transformid = -1;
X  Monsters[ML8+0].corpsevalue = 0;
X  Monsters[ML8+0].monchar = 'f';
X  strcpy(Monsters[ML8+0].monstring,"fairy");
X  strcpy(Monsters[ML8+0].corpsestr,"good fairy dust");
X  Monsters[ML8+0].corpseweight = 100;
X  Monsters[ML8+0].talkf = M_TALK_GF;
X  Monsters[ML8+0].movef = M_MOVE_RANDOM;
X  Monsters[ML8+0].meleef = M_NO_OP;
X  Monsters[ML8+0].strikef = M_NO_OP;
X  Monsters[ML8+0].specialf = M_NO_OP;
X
X  /* the evil fairy */
X  Monsters[ML8+1].id = ML8+1;
X  Monsters[ML8+1].hp = 100;
X  Monsters[ML8+1].speed = 3;
X  Monsters[ML8+1].hit = 50;
X  Monsters[ML8+1].actions = 6;
X  Monsters[ML8+1].tactics = MM_GOOD+MM_BERSERK;
X  Monsters[ML8+1].hitloc = LOW;
X  Monsters[ML8+1].ac = 50;
X  Monsters[ML8+1].dmg = 20;
X  Monsters[ML8+1].sense = 10;
X  Monsters[ML8+1].wakeup = 10;
X  Monsters[ML8+1].level = 8;
X  Monsters[ML8+1].status = HOSTILE+MOBILE+FLYING;
X  Monsters[ML8+1].immunity = pow2(FLAME)+pow2(COLD)+pow2(SLEEP);
X  Monsters[ML8+1].xpv = 500;
X  Monsters[ML8+1].treasure = 0;
X  Monsters[ML8+1].possessions = NULL;
X  Monsters[ML8+1].sleep = 0;
X  Monsters[ML8+1].x = -1;
X  Monsters[ML8+1].y = -1;
X  Monsters[ML8+1].transformid = -1;
X  Monsters[ML8+1].corpsevalue = 0;
X  Monsters[ML8+1].monchar = 'f';
X  strcpy(Monsters[ML8+1].monstring,"fairy");
X  strcpy(Monsters[ML8+1].corpsestr,"evil fairy dust");
X  Monsters[ML8+1].corpseweight = 3;
X  Monsters[ML8+1].talkf = M_TALK_EF;
X  Monsters[ML8+1].movef = M_MOVE_RANDOM;
X  Monsters[ML8+1].meleef = M_NO_OP;
X  Monsters[ML8+1].strikef = M_NO_OP;
X  Monsters[ML8+1].specialf = M_NO_OP;
X
X  /* Automaton Major */
X  Monsters[ML8+2].id = ML8+2;
X  Monsters[ML8+2].hp = 500;
X  Monsters[ML8+2].speed = 3;
X  Monsters[ML8+2].hit = 30;
X  Monsters[ML8+2].actions = 6;
X  Monsters[ML8+2].tactics = MM_AVERAGE;
X  Monsters[ML8+2].ac = 50;
X  Monsters[ML8+2].dmg = 100;
X  Monsters[ML8+2].sense = 5;
X  Monsters[ML8+2].wakeup = 2;
X  Monsters[ML8+2].level = 8;
X  Monsters[ML8+2].status = HOSTILE+MOBILE;
X  Monsters[ML8+2].immunity = pow2(SLEEP)+pow2(POISON)+pow2(FEAR)+
X                             pow2(ELECTRICITY);
X  Monsters[ML8+2].xpv = 500;
X  Monsters[ML8+2].treasure = 0;
X  Monsters[ML8+2].possessions = NULL;
X  Monsters[ML8+2].sleep = 100;
X  Monsters[ML8+2].x = -1;
X  Monsters[ML8+2].y = -1;
X  Monsters[ML8+2].transformid = WEAPONID+23;
X  Monsters[ML8+2].corpsevalue = 500;
X  Monsters[ML8+2].monchar = 'A';
X  strcpy(Monsters[ML8+2].monstring,"automatum major");
X  strcpy(Monsters[ML8+2].corpsestr,"automatum major components");
X  Monsters[ML8+2].corpseweight = 1000;
X  Monsters[ML8+2].talkf = M_TALK_ROBOT;
X  Monsters[ML8+2].movef = M_MOVE_SMART;
X  Monsters[ML8+2].meleef = M_MELEE_NORMAL;
X  Monsters[ML8+2].strikef = M_STRIKE_LBALL;
X  Monsters[ML8+2].specialf = M_SP_POISON_CLOUD;
X
X  /* dragon */
X  Monsters[ML8+3].id = ML8+3;
X  Monsters[ML8+3].hp = 500;
X  Monsters[ML8+3].speed = 5;
X  Monsters[ML8+3].hit = 50;
X  Monsters[ML8+3].actions = 7;
X  Monsters[ML8+3].tactics = MM_FORCED+MM_GOOD;
X  Monsters[ML8+3].hitloc = HIGH;
X  Monsters[ML8+3].ac = 30;
X  Monsters[ML8+3].dmg = 75;
X  Monsters[ML8+3].sense = 20;
X  Monsters[ML8+3].wakeup = 1;
X  Monsters[ML8+3].level = 8;
X  Monsters[ML8+3].status = HOSTILE+HUNGRY+GREEDY+MOBILE+FLYING;
X  Monsters[ML8+3].immunity = pow2(FLAME)+pow2(SLEEP)+pow2(POISON);
X  Monsters[ML8+3].xpv = 750;
X  Monsters[ML8+3].treasure = 7;
X  Monsters[ML8+3].possessions = NULL;
X  Monsters[ML8+3].sleep = 100;
X  Monsters[ML8+3].x = -1;
X  Monsters[ML8+3].y = -1;
X  Monsters[ML8+3].transformid = ARMORID+12;
X  Monsters[ML8+3].corpsevalue = 1000;
X  Monsters[ML8+3].monchar = 'D';
X  strcpy(Monsters[ML8+3].monstring,"dragon");
X  strcpy(Monsters[ML8+3].corpsestr,"dragon scales");
X  Monsters[ML8+3].corpseweight = 500;
X  Monsters[ML8+3].talkf = M_TALK_GREEDY;
X  Monsters[ML8+3].movef = M_MOVE_NORMAL;
X  Monsters[ML8+3].meleef = M_MELEE_DRAGON;
X  Monsters[ML8+3].strikef = M_STRIKE_FBOLT;
X  Monsters[ML8+3].specialf = M_NO_OP;
X
X
X  /* jabberwock */
X  Monsters[ML8+4].id = ML8+4;
X  Monsters[ML8+4].hp = 500;
X  Monsters[ML8+4].speed = 2;
X  Monsters[ML8+4].hit = 40;
X  Monsters[ML8+4].actions = 6;
X  Monsters[ML8+4].tactics = MM_GOOD;
X  Monsters[ML8+4].ac = 25;
X  Monsters[ML8+4].dmg = 100;
X  Monsters[ML8+4].sense = 5;
X  Monsters[ML8+4].wakeup = 1;
X  Monsters[ML8+4].level = 8;
X  Monsters[ML8+4].status = HOSTILE+HUNGRY+MOBILE;
X  Monsters[ML8+4].immunity = pow2(SLEEP)+pow2(POISON);
X  Monsters[ML8+4].xpv = 600;
X  Monsters[ML8+4].treasure = 2;
X  Monsters[ML8+4].possessions = NULL;
X  Monsters[ML8+4].sleep = 75;
X  Monsters[ML8+4].x = -1;
X  Monsters[ML8+4].y = -1;
X  Monsters[ML8+4].transformid = -1;
X  Monsters[ML8+4].corpsevalue = 1000;
X  Monsters[ML8+4].monchar = 'J';
X  strcpy(Monsters[ML8+4].monstring,"jabberwock");
X  strcpy(Monsters[ML8+4].corpsestr,"jabberwock's head");
X  Monsters[ML8+4].corpseweight = 500;
X  Monsters[ML8+4].talkf = M_TALK_BURBLE;
X  Monsters[ML8+4].movef = M_MOVE_FLUTTER;
X  Monsters[ML8+4].meleef = M_MELEE_NORMAL;
X  Monsters[ML8+4].strikef = M_NO_OP;
X  Monsters[ML8+4].specialf = M_NO_OP;
X
X  /* frost demon lord */
X  Monsters[ML8+5].id = ML8+5;
X  Monsters[ML8+5].hp = 350;
X  Monsters[ML8+5].speed = 2;
X  Monsters[ML8+5].hit = 40;
X  Monsters[ML8+5].actions = 8;
X  Monsters[ML8+5].tactics = MM_GOOD;
X  Monsters[ML8+5].ac = 40;
X  Monsters[ML8+5].dmg = 40;
X  Monsters[ML8+5].sense = 10;
X  Monsters[ML8+5].wakeup = 10;
X  Monsters[ML8+5].level = 8;
X  Monsters[ML8+5].status = HOSTILE+HUNGRY+MOBILE;
X  Monsters[ML8+5].immunity = pow2(POISON)+pow2(SLEEP)+pow2(FEAR)+pow2(COLD);
X  Monsters[ML8+5].xpv = 700;
X  Monsters[ML8+5].treasure = 5;
X  Monsters[ML8+5].possessions = NULL;
X  Monsters[ML8+5].sleep = 25;
X  Monsters[ML8+5].x = -1;
X  Monsters[ML8+5].y = -1;
X  Monsters[ML8+5].transformid = WEAPONID+24;
X  Monsters[ML8+5].corpsevalue = 500;
X  Monsters[ML8+5].monchar = 'F';
X  strcpy(Monsters[ML8+5].monstring,"frost demon lord");
X  strcpy(Monsters[ML8+5].corpsestr,"frost demon lord's sigil");
X  Monsters[ML8+5].corpseweight = 100;
X  Monsters[ML8+5].talkf = M_TALK_EVIL;
X  Monsters[ML8+5].movef = M_MOVE_SMART;
X  Monsters[ML8+5].meleef = M_MELEE_COLD;
X  Monsters[ML8+5].strikef = M_STRIKE_SNOWBALL;
X  Monsters[ML8+5].specialf = M_SP_DEMON;
X
X
X  /* tigershark */
X  Monsters[ML8+6].id = ML8+6;
X  Monsters[ML8+6].hp = 350;
X  Monsters[ML8+6].speed = 2;
X  Monsters[ML8+6].hit = 30;
X  Monsters[ML8+6].actions = 4;
X  Monsters[ML8+6].tactics = MM_FORCED+MM_BERSERK;
X  Monsters[ML8+6].hitloc = LOW;
X  Monsters[ML8+6].ac = 30;
X  Monsters[ML8+6].dmg = 40;
X  Monsters[ML8+6].sense = 10;
X  Monsters[ML8+6].wakeup = 4;
X  Monsters[ML8+6].level = 8;
X  Monsters[ML8+6].status = HOSTILE+HUNGRY+MOBILE+SWIMMING;
X  Monsters[ML8+6].immunity = pow2(POISON)+pow2(SLEEP)+pow2(FEAR)+pow2(COLD);
X  Monsters[ML8+6].xpv = 700;
X  Monsters[ML8+6].treasure = 0;
X  Monsters[ML8+6].possessions = NULL;
X  Monsters[ML8+6].sleep = 25;
X  Monsters[ML8+6].x = -1;
X  Monsters[ML8+6].y = -1;
X  Monsters[ML8+6].transformid = -1;
X  Monsters[ML8+6].corpsevalue = 100;
X  Monsters[ML8+6].monchar = 'F';
X  strcpy(Monsters[ML8+6].monstring,"tigershark");
X  strcpy(Monsters[ML8+6].corpsestr,"tigershark pelt");
X  Monsters[ML8+6].corpseweight = 100;
X  Monsters[ML8+6].talkf = M_NO_OP;
X  Monsters[ML8+6].movef = M_MOVE_NORMAL;
X  Monsters[ML8+6].meleef = M_MELEE_NORMAL;
X  Monsters[ML8+6].strikef = M_NO_OP;
X  Monsters[ML8+6].specialf = M_NO_OP;
X
X
X  /* Master Assassin */
X  Monsters[ML8+7].id = ML8+7;
X  Monsters[ML8+7].hp = 250;
X  Monsters[ML8+7].speed = 3;
X  Monsters[ML8+7].hit = 30;
X  Monsters[ML8+7].actions = 6;
X  Monsters[ML8+7].tactics = MM_GOOD;
X  Monsters[ML8+7].ac = 20;
X  Monsters[ML8+7].dmg = 50;
X  Monsters[ML8+7].sense = 10;
X  Monsters[ML8+7].wakeup = 4;
X  Monsters[ML8+7].level = 8;
X  Monsters[ML8+7].status = HOSTILE+MOBILE+M_INVISIBLE;
X  Monsters[ML8+7].immunity = pow2(POISON)+pow2(SLEEP);
X  Monsters[ML8+7].xpv = 800;
X  Monsters[ML8+7].treasure = 2;
X  Monsters[ML8+7].possessions = NULL;
X  Monsters[ML8+7].sleep = 0;
X  Monsters[ML8+7].x = -1;
X  Monsters[ML8+7].y = -1;
X  Monsters[ML8+7].transformid = -1;
X  Monsters[ML8+7].corpsevalue = 100;
X  if (random_range(2)) {
X    Monsters[ML8+7].monchar = 'm';
X    strcpy(Monsters[ML8+7].monstring,"man");
X  }
X  else {
X    Monsters[ML8+7].monchar = 'w';
X    strcpy(Monsters[ML8+7].monstring,"woman");
X  }
X  strcpy(Monsters[ML8+7].corpsestr,"Master Assassin's corpse");
X  Monsters[ML8+7].corpseweight = 100;
X  Monsters[ML8+7].talkf = M_TALK_ASSASSIN;
X  Monsters[ML8+7].movef = M_MOVE_NORMAL;
X  Monsters[ML8+7].meleef = M_MELEE_POISON;
X  Monsters[ML8+7].strikef = M_STRIKE_MISSILE;
X  Monsters[ML8+7].specialf = M_SP_SURPRISE;
X
X
X  /* Shadow Slayer */
X  Monsters[ML8+8].id = ML8+8;
X  Monsters[ML8+8].hp = 250;
X  Monsters[ML8+8].speed = 3;
X  Monsters[ML8+8].hit = 30;
X  Monsters[ML8+8].actions = 4;
X  Monsters[ML8+8].tactics = MM_AVERAGE;
X  Monsters[ML8+8].ac = 40;
X  Monsters[ML8+8].dmg = 30;
X  Monsters[ML8+8].sense = 10;
X  Monsters[ML8+8].wakeup = 4;
X  Monsters[ML8+8].level = 8;
X  Monsters[ML8+8].status = HOSTILE+MOBILE+INTANGIBLE+M_INVISIBLE;
X  Monsters[ML8+8].immunity = pow2(NORMAL_DAMAGE)+pow2(POISON)+pow2(SLEEP);
X  Monsters[ML8+8].xpv = 500;
X  Monsters[ML8+8].treasure = 3;
X  Monsters[ML8+8].possessions = NULL;
X  Monsters[ML8+8].sleep = 0;
X  Monsters[ML8+8].x = -1;
X  Monsters[ML8+8].y = -1;
X  Monsters[ML8+8].transformid = RINGID+0;
X  Monsters[ML8+8].corpsevalue = 75;
X  Monsters[ML8+7].monchar = 'S';
X  strcpy(Monsters[ML8+8].monstring,"shadow slayer");
X  strcpy(Monsters[ML8+8].corpsestr,"shadow matrix");
X  Monsters[ML8+8].corpseweight = 10;
X  Monsters[ML8+8].talkf = M_TALK_EVIL;
X  Monsters[ML8+8].movef = M_MOVE_SPIRIT;
X  Monsters[ML8+8].meleef = M_MELEE_POISON;
X  Monsters[ML8+8].strikef = M_SP_SPELL;
X  Monsters[ML8+8].specialf = M_SP_BLACKOUT;
X
X  /* Militant Priest */
X  Monsters[ML8+9].id = ML8+9;
X  Monsters[ML8+9].hp = 250;
X  Monsters[ML8+9].speed = 6;
X  Monsters[ML8+9].hit = 25;
X  Monsters[ML8+9].actions = 8;
X  Monsters[ML8+9].tactics = MM_GOOD;
X  Monsters[ML8+9].ac = 20;
X  Monsters[ML8+9].dmg = 30;
X  Monsters[ML8+9].sense = 10;
X  Monsters[ML8+9].wakeup = 4;
X  Monsters[ML8+9].level = 8;
X  Monsters[ML8+9].status = HOSTILE+MOBILE;
X  Monsters[ML8+9].immunity = pow2(SLEEP);
X  Monsters[ML8+9].xpv = 700;
X  Monsters[ML8+9].treasure = 3;
X  Monsters[ML8+9].possessions = NULL;
X  Monsters[ML8+9].sleep = 0;
X  Monsters[ML8+9].x = -1;
X  Monsters[ML8+9].y = -1;
X  Monsters[ML8+9].transformid = -1;
X  Monsters[ML8+9].monchar = 'M';
X  Monsters[ML8+9].corpsevalue = 75;
X  strcpy(Monsters[ML8+9].monstring,"militant priest");
X  strcpy(Monsters[ML8+9].corpsestr,"dead militant priest");
X  Monsters[ML8+9].corpseweight = 10;
X  Monsters[ML8+9].talkf = M_TALK_SILENT;
X  Monsters[ML8+9].movef = M_MOVE_SMART;
X  Monsters[ML8+9].meleef = M_MELEE_NORMAL;
X  Monsters[ML8+9].strikef = M_STRIKE_MISSILE;
X  Monsters[ML8+9].specialf = M_SP_SPELL;
X
X
X  /* Coma Beast */
X  Monsters[ML8+10].id = ML8+10;
X  Monsters[ML8+10].hp = 150;
X  Monsters[ML8+10].speed = 5;
X  Monsters[ML8+10].hit = 25;
X  Monsters[ML8+10].actions = 2;
X  Monsters[ML8+10].tactics = MM_POOR;
X  Monsters[ML8+10].ac = 40;
X  Monsters[ML8+10].dmg = 30;
X  Monsters[ML8+10].sense = 10;
X  Monsters[ML8+10].wakeup = 4;
X  Monsters[ML8+10].level = 8;
X  Monsters[ML8+10].status = HOSTILE+MOBILE+M_INVISIBLE;
X  Monsters[ML8+10].immunity = pow2(SLEEP);
X  Monsters[ML8+10].xpv = 500;
X  Monsters[ML8+10].treasure = 3;
X  Monsters[ML8+10].possessions = NULL;
X  Monsters[ML8+10].sleep = 0;
X  Monsters[ML8+10].x = -1;
X  Monsters[ML8+10].y = -1;
X  Monsters[ML8+10].transformid = -1;
X  Monsters[ML8+10].corpsevalue = 75;
X  Monsters[ML8+10].monchar = 'C';
X  strcpy(Monsters[ML8+10].monstring,"coma beast");
X  strcpy(Monsters[ML8+10].corpsestr,"dead coma beast");
X  Monsters[ML8+10].corpseweight = 10;
X  Monsters[ML8+10].talkf = M_TALK_SILENT;
X  Monsters[ML8+10].movef = M_MOVE_SMART;
X  Monsters[ML8+10].meleef = M_MELEE_SLEEP;
X  Monsters[ML8+10].strikef = M_NO_OP;
X  Monsters[ML8+10].specialf = M_NO_OP;
X
X
X
X  /* the jotun */
X  Monsters[ML9+0].id = ML9+0;
X  Monsters[ML9+0].hp = 750;
X  Monsters[ML9+0].speed = 8;
X  Monsters[ML9+0].hit = 80;
X  Monsters[ML9+0].actions = 3;
X  Monsters[ML9+0].tactics = MM_GOOD+MM_FORCED;
X  Monsters[ML9+0].hitloc = HIGH;
X  Monsters[ML9+0].ac = 50;
X  Monsters[ML9+0].dmg = 200;
X  Monsters[ML9+0].sense = 10;
X  Monsters[ML9+0].wakeup = 2;
X  Monsters[ML9+0].level = 9;
X  Monsters[ML9+0].status = HOSTILE+HUNGRY+GREEDY+MOBILE;
X  Monsters[ML9+0].immunity = pow2(COLD)+pow2(FEAR);
X  Monsters[ML9+0].xpv = 1000;
X  Monsters[ML9+0].treasure = 5;
X  Monsters[ML9+0].possessions = NULL;
X  Monsters[ML9+0].sleep = 90;
X  Monsters[ML9+0].x = -1;
X  Monsters[ML9+0].y = -1;
X  Monsters[ML9+0].transformid = -1;
X  Monsters[ML9+0].corpsevalue = 2000;
X  Monsters[ML9+0].monchar = 'J';
X  strcpy(Monsters[ML9+0].monstring,"jotun");
X  strcpy(Monsters[ML9+0].corpsestr,"jotun's head");
X  Monsters[ML9+0].corpseweight = 500;
X  Monsters[ML9+0].talkf = M_TALK_GREEDY;
X  Monsters[ML9+0].movef = M_MOVE_NORMAL;
X  Monsters[ML9+0].meleef = M_MELEE_NORMAL;
X  Monsters[ML9+0].strikef = M_STRIKE_MISSILE;
X  Monsters[ML9+0].specialf = M_SP_HUGE;
X
X  /* Invisible Slayer */
X  Monsters[ML9+1].id = ML9+1;
X  Monsters[ML9+1].hp = 1000;
X  Monsters[ML9+1].speed = 4;
X  Monsters[ML9+1].hit = 50;
X  Monsters[ML9+1].ac = 30;
X  Monsters[ML9+1].actions = 6;
X  Monsters[ML9+1].tactics = MM_GOOD;
X  Monsters[ML9+1].dmg = 40;
X  Monsters[ML9+1].sense = 20;
X  Monsters[ML9+1].wakeup = 2;
X  Monsters[ML9+1].level = 9;
X  Monsters[ML9+1].status = HOSTILE+MOBILE+FLYING+M_INVISIBLE;
X  Monsters[ML9+1].immunity = pow2(ELECTRICITY);
X  Monsters[ML9+1].xpv = 750;
X  Monsters[ML9+1].treasure = 0;
X  Monsters[ML9+1].possessions = NULL;
X  Monsters[ML9+1].sleep = 40;
X  Monsters[ML9+1].x = -1;
X  Monsters[ML9+1].y = -1;
X  Monsters[ML9+1].transformid = CLOAKID+2;
X  Monsters[ML9+1].corpsevalue = 200;
X  Monsters[ML9+1].monchar = 'i';
X  strcpy(Monsters[ML9+1].monstring,"invisible slayer");
X  strcpy(Monsters[ML9+1].corpsestr,"dead slayer");
X  Monsters[ML9+1].corpseweight = 100;
X  Monsters[ML9+1].talkf = M_TALK_SILENT;
X  Monsters[ML9+1].movef = M_MOVE_FLUTTER;
X  Monsters[ML9+1].meleef = M_MELEE_NORMAL;
X  Monsters[ML9+1].strikef = M_NO_OP;
X  Monsters[ML9+1].specialf = M_NO_OP;
X
X
X
X  /* the king wyvern */
X  Monsters[ML9+2].id = ML9+2;
X  Monsters[ML9+2].hp = 700;
X  Monsters[ML9+2].speed = 3;
X  Monsters[ML9+2].hit = 50;
X  Monsters[ML9+2].actions = 6;
X  Monsters[ML9+2].tactics = MM_BERSERK+MM_AVERAGE;
X  Monsters[ML9+2].ac = 32;
X  Monsters[ML9+2].dmg = 50;
X  Monsters[ML9+2].sense = 5;
X  Monsters[ML9+2].wakeup = 2;
X  Monsters[ML9+2].level = 9;
X  Monsters[ML9+2].status = GREEDY+HOSTILE+MOBILE+FLYING;
X  Monsters[ML9+2].immunity = pow2(POISON)+pow2(FLAME);
X  Monsters[ML9+2].xpv = 1000;
X  Monsters[ML9+2].treasure = 4;
X  Monsters[ML9+2].possessions = NULL;
X  Monsters[ML9+2].sleep = 80;
X  Monsters[ML9+2].x = -1;
X  Monsters[ML9+2].y = -1;
X  Monsters[ML9+2].transformid = RINGID+6;
X  Monsters[ML9+2].corpsevalue = 50;
X  Monsters[ML9+2].monchar = 'W';
X  strcpy(Monsters[ML9+2].monstring,"king wyvern");
X  strcpy(Monsters[ML9+2].corpsestr,"king wyvern's sting");
X  Monsters[ML9+2].corpseweight = 100;
X  Monsters[ML9+2].talkf = M_TALK_GREEDY;
X  Monsters[ML9+2].movef = M_MOVE_NORMAL;
X  Monsters[ML9+2].meleef = M_MELEE_POISON;
X  Monsters[ML9+2].strikef = M_NO_OP;
X  Monsters[ML9+2].specialf = M_NO_OP;
X
X
X
X  /* the deathstar */
X  Monsters[ML9+3].id = ML9+3;
X  Monsters[ML9+3].hp = 500;
X  Monsters[ML9+3].speed = 4;
X  Monsters[ML9+3].hit = 30;
X  Monsters[ML9+3].actions = 3;
X  Monsters[ML9+3].tactics = MM_FORCED+MM_BERSERK;
X  Monsters[ML9+3].hitloc = CENTER;
X  Monsters[ML9+3].ac = 50;
X  Monsters[ML9+3].dmg = 30;
X  Monsters[ML9+3].sense = 10;
X  Monsters[ML9+3].wakeup = 2;
X  Monsters[ML9+3].level = 9;
X  Monsters[ML9+3].status = HUNGRY+HOSTILE+MOBILE+FLYING;
X  Monsters[ML9+3].immunity = pow2(FLAME);
X  Monsters[ML9+3].xpv = 500;
X  Monsters[ML9+3].treasure = 0;
X  Monsters[ML9+3].possessions = NULL;
X  Monsters[ML9+3].sleep = 50;
X  Monsters[ML9+3].x = -1;
X  Monsters[ML9+3].y = -1;
X  Monsters[ML9+3].transformid = WEAPONID+33;
X  Monsters[ML9+3].corpsevalue = 500;
X  Monsters[ML9+3].monchar = 'd';
X  strcpy(Monsters[ML9+3].monstring,"deathstar");
X  strcpy(Monsters[ML9+3].corpsestr,"deathstar's eye");
X  Monsters[ML9+3].corpseweight = 40;
X  Monsters[ML9+3].talkf = M_NO_OP;
X  Monsters[ML9+3].movef = M_MOVE_RANDOM;
X  Monsters[ML9+3].meleef = M_MELEE_NORMAL;
X  Monsters[ML9+3].strikef = M_NO_OP;
X  Monsters[ML9+3].specialf = M_SP_EXPLODE;
X
X
X  /* Archmage */
X  Monsters[ML9+4].id = ML9+4;
X  Monsters[ML9+4].hp = 250;
X  Monsters[ML9+4].speed = 4;
X  Monsters[ML9+4].hit = 20;
X  Monsters[ML9+4].actions = 4;
X  Monsters[ML9+4].tactics = MM_TIMID+MM_AVERAGE;
X  Monsters[ML9+4].ac = 25;
X  Monsters[ML9+4].dmg = 25;
X  Monsters[ML9+4].sense = 5;
X  Monsters[ML9+4].wakeup = 5;
X  Monsters[ML9+4].level = 9;
X  Monsters[ML9+4].status = MOBILE+COWARDLY;
X  Monsters[ML9+4].immunity = pow2(FLAME)+pow2(COLD)+pow2(ELECTRICITY);
X  Monsters[ML9+4].xpv = 1500;
X  Monsters[ML9+4].treasure = 4;
X  Monsters[ML9+4].possessions = NULL;
X  Monsters[ML9+4].sleep = 50;
X  Monsters[ML9+4].x = -1;
X  Monsters[ML9+4].y = -1;
X  Monsters[ML9+4].transformid = -1;
X  Monsters[ML9+4].corpsevalue = 3000;
X  Monsters[ML9+4].monchar = 'A';
X  strcpy(Monsters[ML9+4].monstring,"archmage");
X  strcpy(Monsters[ML9+4].corpsestr,"archmage's staff");
X  Monsters[ML9+4].corpseweight = 50;
X  Monsters[ML9+4].talkf = M_TALK_EVIL;
X  Monsters[ML9+4].movef = M_MOVE_SMART;
X  Monsters[ML9+4].meleef = M_MELEE_NORMAL;
X  Monsters[ML9+4].strikef = M_NO_OP;
X  Monsters[ML9+4].specialf = M_SP_SPELL;
X
X
X  /* vampire lord */
X  Monsters[ML9+5].id = ML9+5;
X  Monsters[ML9+5].hp = 750;
X  Monsters[ML9+5].speed = 2;
X  Monsters[ML9+5].hit = 70;
X  Monsters[ML9+5].actions = 9;
X  Monsters[ML9+5].tactics = MM_GOOD;
X  Monsters[ML9+5].ac = 50;
X  Monsters[ML9+5].dmg = 50;
X  Monsters[ML9+5].sense = 10;
X  Monsters[ML9+5].wakeup = 1;
X  Monsters[ML9+5].level = 9;
X  Monsters[ML9+5].status = HOSTILE+MOBILE+COWARDLY+FLYING+M_INVISIBLE;
X  Monsters[ML9+5].immunity = pow2(SLEEP)+pow2(POISON)+pow2(FEAR);
X  Monsters[ML9+5].xpv = 1000;
X  Monsters[ML9+5].treasure = 0;
X  Monsters[ML9+5].possessions = NULL;
X  Monsters[ML9+5].sleep = 50;
X  Monsters[ML9+5].x = -1;
X  Monsters[ML9+5].y = -1;
X  Monsters[ML9+5].transformid = CLOAKID+1;
X  Monsters[ML9+5].corpsevalue = 200;
X  Monsters[ML9+5].monchar = 'V';
X  strcpy(Monsters[ML9+5].monstring,"vampire lord");
X  strcpy(Monsters[ML9+5].corpsestr,"vampire dust");
X  Monsters[ML9+5].corpseweight = 1;
X  Monsters[ML9+5].talkf = M_TALK_EVIL;
X  Monsters[ML9+5].movef = M_MOVE_SPIRIT;
X  Monsters[ML9+5].meleef = M_MELEE_SPIRIT;
X  Monsters[ML9+5].strikef = M_MELEE_SPIRIT;
X  Monsters[ML9+5].specialf = M_SP_SURPRISE;
X
X
X
X  /* great wyrm */
X  Monsters[ML9+6].id = ML9+6;
X  Monsters[ML9+6].hp = 1000;
X  Monsters[ML9+6].speed = 5;
X  Monsters[ML9+6].hit = 50;
X  Monsters[ML9+6].actions = 5;
X  Monsters[ML9+6].tactics = MM_BERSERK+MM_POOR;
X  Monsters[ML9+6].ac = 50;
X  Monsters[ML9+6].dmg = 50;
X  Monsters[ML9+6].sense = 10;
X  Monsters[ML9+6].wakeup = 1;
X  Monsters[ML9+6].level = 9;
X  Monsters[ML9+6].status = HOSTILE+MOBILE+SWIMMING;
X  Monsters[ML9+6].immunity = pow2(SLEEP)+pow2(POISON)+pow2(FEAR)+pow2(COLD);
X  Monsters[ML9+6].xpv = 1500;
X  Monsters[ML9+6].treasure = 8;
X  Monsters[ML9+6].uniqueness = 2;
X  Monsters[ML9+6].possessions = NULL;
X  tob = ((pob) (calloc(1,sizeof(objtype))));
X  make_weapon(tob,34); /* Defender */
X  m_pickup(&(Monsters[ML9+6]),tob);
X  Monsters[ML9+6].sleep = 100;
X  Monsters[ML9+6].x = -1;
X  Monsters[ML9+6].y = -1;
X  Monsters[ML9+6].transformid = -1;
X  Monsters[ML9+6].corpsevalue = 2000;
X  Monsters[ML9+6].monchar = 'W';
X  strcpy(Monsters[ML9+6].monstring,"Great Wyrm");
X  strcpy(Monsters[ML9+6].corpsestr,"The head of the Great Wyrm");
X  Monsters[ML9+6].corpseweight = 1500;
X  Monsters[ML9+6].talkf = M_TALK_EVIL;
X  Monsters[ML9+6].movef = M_MOVE_NORMAL;
X  Monsters[ML9+6].meleef = M_MELEE_NORMAL;
X  Monsters[ML9+6].strikef = M_MELEE_COLD;
X  Monsters[ML9+6].specialf = M_SP_WYRM;
X
X
X
X
X
X
X/* level 10 mostly unique */
X
X  /* Morgon the Justiciar */
X  Monsters[ML10+0].id = ML10+0;
X  Monsters[ML10+0].uniqueness = 1;
X  Monsters[ML10+0].hp = 500;
X  Monsters[ML10+0].speed = 2;
X  Monsters[ML10+0].hit = 100;
X  Monsters[ML10+0].actions = 10;
X  Monsters[ML10+0].tactics = MM_GOOD;
X  Monsters[ML10+0].ac = 50;
X  Monsters[ML10+0].dmg = 50;
X  Monsters[ML10+0].sense = 5;
X  Monsters[ML10+0].wakeup = 1;
X  Monsters[ML10+0].level = 10;
X  Monsters[ML10+0].status = MOBILE;
X  Monsters[ML10+0].immunity = pow2(POISON)+pow2(FEAR)+pow2(SLEEP);
X  Monsters[ML10+0].xpv = 2000;
X  Monsters[ML10+0].treasure = 0;
X  Monsters[ML10+0].possessions = NULL;
X  /******* this is OK, since both creature and object are unique */
X  tob = ((pob) (malloc(sizeof(objtype))));
X  make_thing(tob,16); /* Morgon's Badge */
X  m_pickup(&(Monsters[ML10+0]),tob);
X  /*******/
X  Monsters[ML10+0].sleep = 50;
X  Monsters[ML10+0].x = -1;
X  Monsters[ML10+0].y = -1;
X  Monsters[ML10+0].transformid = -1;
X  Monsters[ML10+0].corpsevalue = 0;
X  Monsters[ML10+0].monchar = 'M';
X  strcpy(Monsters[ML10+0].monstring,"Morgon, the Justiciar");
X  strcpy(Monsters[ML10+0].corpsestr,"Morgon's body");
X  Monsters[ML10+0].corpseweight = 1000;
X  Monsters[ML10+0].talkf = M_TALK_MORGON;
X  Monsters[ML10+0].movef = M_MOVE_SMART;
X  Monsters[ML10+0].meleef = M_MELEE_NORMAL;
X  Monsters[ML10+0].strikef = M_NO_OP;
X  Monsters[ML10+0].specialf = M_SP_MORGON;
X
X  /* The Eater of Magic */
X  Monsters[ML10+1].id = ML10+1;
X  Monsters[ML10+1].uniqueness = 1;
X  Monsters[ML10+1].hp = 1000;
X  Monsters[ML10+1].speed = 5;
X  Monsters[ML10+1].hit = 0;
X  Monsters[ML10+1].actions = 0;
X  Monsters[ML10+1].tactics = MM_TIMID+MM_POOR;
X  Monsters[ML10+1].ac = 20;
X  Monsters[ML10+1].dmg = 0;
X  Monsters[ML10+1].sense = 3;
X  Monsters[ML10+1].wakeup = 3;
X  Monsters[ML10+1].level = 10;
X  Monsters[ML10+1].status = MOBILE;
X  Monsters[ML10+1].immunity = EVERYTHING - pow2(NORMAL_DAMAGE);
X  Monsters[ML10+1].xpv = 2000;
X  Monsters[ML10+1].treasure = 0;
X  Monsters[ML10+1].possessions = NULL;
X  Monsters[ML10+1].sleep = 50;
X  Monsters[ML10+1].x = -1;
X  Monsters[ML10+1].y = -1;
X  Monsters[ML10+1].transformid = STICKID+13;
X  Monsters[ML10+1].corpsevalue = 250;
X  Monsters[ML10+1].monchar = 'E';
X  strcpy(Monsters[ML10+1].monstring,"The Eater of Magic");
X  strcpy(Monsters[ML10+1].corpsestr,"The Heart of the Eater of Magic");
X  Monsters[ML10+1].corpseweight = 1000;
X  Monsters[ML10+1].talkf = M_TALK_SILENT;
X  Monsters[ML10+1].movef = M_MOVE_RANDOM;
X  Monsters[ML10+1].meleef = M_NO_OP;
X  Monsters[ML10+1].strikef = M_NO_OP;
X  Monsters[ML10+1].specialf = M_SP_EATER;
X
X
X  /* The LawBringer */
X  Monsters[ML10+2].id = ML10+2;
X  Monsters[ML10+2].uniqueness = 1;
X  Monsters[ML10+2].hp = 500;
X  Monsters[ML10+2].speed = 5;
X  Monsters[ML10+2].hit = 50;
X  Monsters[ML10+2].actions = 9;
X  Monsters[ML10+2].tactics = MM_BERSERK+MM_GOOD;
X  Monsters[ML10+2].ac = 50;
X  Monsters[ML10+2].dmg = 50;
X  Monsters[ML10+2].sense = 5;
X  Monsters[ML10+2].wakeup = 3;
X  Monsters[ML10+2].level = 10;
X  Monsters[ML10+2].status = MOBILE;
X  Monsters[ML10+2].immunity = pow2(UNSTOPPABLE)+pow2(NORMAL_DAMAGE);
X  Monsters[ML10+2].xpv = 2000;
X  Monsters[ML10+2].treasure = 0;
X  Monsters[ML10+2].possessions = NULL;
X  Monsters[ML10+2].sleep = 50;
X  Monsters[ML10+2].x = -1;
X  Monsters[ML10+2].y = -1;
X  Monsters[ML10+2].transformid = -1;
X  Monsters[ML10+2].corpsevalue = 2000;
X  Monsters[ML10+2].monchar = 'L';
X  strcpy(Monsters[ML10+2].monstring,"The LawBringer");
X  strcpy(Monsters[ML10+2].corpsestr,"The LawBringer's Crown");
X  Monsters[ML10+2].corpseweight = 1000;
X  Monsters[ML10+2].talkf = M_TALK_LB;
X  Monsters[ML10+2].movef = M_MOVE_SMART;
X  Monsters[ML10+2].meleef = M_MELEE_NORMAL;
X  Monsters[ML10+2].strikef = M_NO_OP;
X  Monsters[ML10+2].specialf = M_SP_LAWBRINGER;
X
X  /* The Dragon Lord */
X  Monsters[ML10+3].id = ML10+3;
X  Monsters[ML10+3].uniqueness = 2;
X  Monsters[ML10+3].hp = 2000;
X  Monsters[ML10+3].speed = 1;
X  Monsters[ML10+3].hit = 100;
X  Monsters[ML10+3].actions = 10;
X  Monsters[ML10+3].tactics = MM_GOOD;
X  Monsters[ML10+3].ac = 70;
X  Monsters[ML10+3].dmg = 100;
X  Monsters[ML10+3].sense = 10;
X  Monsters[ML10+3].wakeup = 1;
X  Monsters[ML10+3].level = 10;
X  Monsters[ML10+3].status = HOSTILE+MOBILE+FLYING;
X  Monsters[ML10+3].immunity = 
X    pow2(FLAME)+pow2(ELECTRICITY)+pow2(COLD)+ pow2(ACID)+pow2(NORMAL_DAMAGE);
X  Monsters[ML10+3].xpv = 5000;
X  Monsters[ML10+3].treasure = 10;
X  Monsters[ML10+3].possessions = NULL;
X  Monsters[ML10+3].sleep = 100;
X  Monsters[ML10+3].x = -1;
X  Monsters[ML10+3].y = -1;
X  Monsters[ML10+3].transformid = ARMORID+12;
X  Monsters[ML10+3].corpsevalue = 2000;
X  Monsters[ML10+3].monchar = 'D';
X  strcpy(Monsters[ML10+3].monstring,"The Dragon Lord");
X  strcpy(Monsters[ML10+3].corpsestr,"The Dragon Lord's Armor");
X  Monsters[ML10+3].corpseweight = 1000;
X  Monsters[ML10+3].talkf = M_TALK_EVIL;
X  Monsters[ML10+3].movef = M_MOVE_NORMAL;
X  Monsters[ML10+3].meleef = M_MELEE_DRAGON;
X  Monsters[ML10+3].strikef = M_STRIKE_FBOLT;
X  Monsters[ML10+3].specialf = M_SP_DRAGONLORD;
X
X  /* The Dark Emperor */
X  Monsters[ML10+4].id = ML10+4;
X  Monsters[ML10+4].hp = 3000;
X  Monsters[ML10+4].speed = 2;
X  Monsters[ML10+4].hit = 200;
X  Monsters[ML10+4].actions = 10;
X  Monsters[ML10+4].tactics = MM_GOOD;
X  Monsters[ML10+4].ac = 200;
X  Monsters[ML10+4].dmg = 200;
X  Monsters[ML10+4].sense = 20;
X  Monsters[ML10+4].wakeup = 20;
X  Monsters[ML10+4].level = 10;
X  Monsters[ML10+4].status = MOBILE+INTANGIBLE+M_INVISIBLE;
X  Monsters[ML10+4].immunity = 
X    EVERYTHING - pow2(NORMAL_DAMAGE) - pow2(UNSTOPPABLE)-1;
X  Monsters[ML10+4].xpv = 10000;
X  Monsters[ML10+4].treasure = 7;
X  Monsters[ML10+4].possessions = NULL;
X  /******* this is OK, since both creature and object are unique */
X  tob = ((pob) (calloc(1,sizeof(objtype))));
X  make_weapon(tob,37); /* Dark Emperor's Sword */
X  m_pickup(&(Monsters[ML10+4]),tob);
X  /*******/
X  Monsters[ML10+4].sleep = 0;
X  Monsters[ML10+4].x = -1;
X  Monsters[ML10+4].y = -1;
X  Monsters[ML10+4].transformid = -1;
X  Monsters[ML10+4].corpsevalue = 3000;
X  Monsters[ML10+4].monchar = 'D';
X  strcpy(Monsters[ML10+4].monstring,"The Dark Emperor");
X  strcpy(Monsters[ML10+4].corpsestr,"The Dark Emperor's Regalia");
X  Monsters[ML10+4].corpseweight = 1000;
X  Monsters[ML10+4].talkf = M_TALK_EVIL;
X  Monsters[ML10+4].movef = M_MOVE_SPIRIT;
X  Monsters[ML10+4].meleef = M_MELEE_SPIRIT;
X  Monsters[ML10+4].strikef = M_MELEE_SPIRIT;
X  Monsters[ML10+4].specialf = M_SP_SURPRISE;
X
X
X
X  /* The Elemental Lord of Earth */
X  Monsters[ML10+5].id = ML10+5;
X  Monsters[ML10+5].hp = 2000;
X  Monsters[ML10+5].speed = 12;
X  Monsters[ML10+5].hit = 200;
X  Monsters[ML10+5].actions = 4;
X  Monsters[ML10+5].tactics = MM_POOR;
X  Monsters[ML10+5].ac = 100;
X  Monsters[ML10+5].dmg = 200;
X  Monsters[ML10+5].sense = 5;
X  Monsters[ML10+5].wakeup = 1;
X  Monsters[ML10+5].level = 10;
X  Monsters[ML10+5].status = MOBILE+INTANGIBLE;
X  Monsters[ML10+5].immunity = 
X    EVERYTHING - pow2(ELECTRICITY) - pow2(NORMAL_DAMAGE) - pow2(UNSTOPPABLE);
X  Monsters[ML10+5].xpv = 5000;
X  Monsters[ML10+5].treasure = 0;
X  Monsters[ML10+5].possessions = NULL;
X  /******* this is OK, since both creature and object are unique */
X  tob = ((pob) (calloc(1,sizeof(objtype))));
X  make_artifact(tob,4); /* Orb of Air */
X  m_pickup(&(Monsters[ML10+5]),tob);
X  /*******/
X  Monsters[ML10+5].sleep = 0;
X  Monsters[ML10+5].x = -1;
X  Monsters[ML10+5].y = -1;
X  Monsters[ML10+5].transformid = -1;
X  Monsters[ML10+5].corpsevalue = 1;
X  Monsters[ML10+5].monchar = 'E';
X  strcpy(Monsters[ML10+5].monstring,"The Elemental Lord of Earth");
X  strcpy(Monsters[ML10+5].corpsestr,"some dirt");
X  Monsters[ML10+5].corpseweight = 10000;
X  Monsters[ML10+5].talkf = M_TALK_SILENT;
X  Monsters[ML10+5].movef = M_MOVE_SPIRIT;
X  Monsters[ML10+5].meleef = M_MELEE_NORMAL;
X  Monsters[ML10+5].strikef = M_MELEE_NORMAL;
X  Monsters[ML10+5].specialf = M_SP_DE;
X
X  /* The Elemental Lord of Air */
X  Monsters[ML10+6].id = ML10+6;
X  Monsters[ML10+6].hp = 1000;
X  Monsters[ML10+6].speed = 1;
X  Monsters[ML10+6].hit = 100;
X  Monsters[ML10+6].actions = 6;
X  Monsters[ML10+6].tactics = MM_GOOD;
X  Monsters[ML10+6].ac = 50;
X  Monsters[ML10+6].dmg = 50;
X  Monsters[ML10+6].sense = 20;
X  Monsters[ML10+6].wakeup = 1;
X  Monsters[ML10+6].level = 10;
X  Monsters[ML10+6].status = MOBILE+INTANGIBLE+FLYING+M_INVISIBLE;
X  Monsters[ML10+6].immunity =   
X    EVERYTHING - pow2(OTHER_MAGIC) - pow2(NORMAL_DAMAGE) - pow2(UNSTOPPABLE);
X  Monsters[ML10+6].xpv = 5000;
X  Monsters[ML10+6].treasure = 0;
X  Monsters[ML10+6].possessions = NULL;
X  /******* this is OK, since both creature and object are unique */
X  tob = ((pob) (calloc(1,sizeof(objtype))));
X  make_artifact(tob,3); /* orb of earth */
X  m_pickup(&(Monsters[ML10+6]),tob);
X  /*******/
X  Monsters[ML10+6].sleep = 100;
X  Monsters[ML10+6].x = -1;
X  Monsters[ML10+6].y = -1;
X  Monsters[ML10+6].transformid = -1;
X  Monsters[ML10+6].corpsevalue = 1;
X  Monsters[ML10+6].monchar = 'A';
X  strcpy(Monsters[ML10+6].monstring,"The Elemental Lord of Air");
X  strcpy(Monsters[ML10+6].corpsestr,"some air");
X  Monsters[ML10+6].corpseweight = 0;
X  Monsters[ML10+6].talkf = M_TALK_SILENT;
X  Monsters[ML10+6].movef = M_MOVE_SPIRIT;
X  Monsters[ML10+6].meleef = M_MELEE_NORMAL;
X  Monsters[ML10+6].strikef = M_STRIKE_LBALL;
X  Monsters[ML10+6].specialf = M_SP_WHIRL;
X
X  /* The Elemental Lord of Water */
X  Monsters[ML10+7].id = ML10+7;
X  Monsters[ML10+7].hp = 1500;
X  Monsters[ML10+7].speed = 5;
X  Monsters[ML10+7].hit = 100;
X  Monsters[ML10+7].actions = 5;
X  Monsters[ML10+7].tactics = MM_AVERAGE;
X  Monsters[ML10+7].ac = 100;
X  Monsters[ML10+7].dmg = 100;
X  Monsters[ML10+7].sense = 5;
X  Monsters[ML10+7].wakeup = 1;
X  Monsters[ML10+7].level = 10;
X  Monsters[ML10+7].status = MOBILE+SWIMMING;
X  Monsters[ML10+7].immunity = 
X    EVERYTHING - pow2(NORMAL_DAMAGE) - pow2(FLAME) - pow2(UNSTOPPABLE);
X  Monsters[ML10+7].xpv = 5000;
X  Monsters[ML10+7].treasure = 0;
X  Monsters[ML10+7].possessions = NULL;
X  /******* this is OK, since both creature and object are unique */
X  tob = ((pob) (calloc(1,sizeof(objtype))));
X  make_artifact(tob,1); /* Orb of Fire */
X  m_pickup(&(Monsters[ML10+7]),tob);
X  /*******/
X  Monsters[ML10+7].sleep = 100;
X  Monsters[ML10+7].x = -1;
X  Monsters[ML10+7].y = -1;
X  Monsters[ML10+7].transformid = -1;
X  Monsters[ML10+7].corpsevalue = 1;
X  Monsters[ML10+7].monchar = 'W';
X  strcpy(Monsters[ML10+7].monstring,"The Elemental Lord of Water");
X  strcpy(Monsters[ML10+7].corpsestr,"some water");
X  Monsters[ML10+7].corpseweight = 10;
X  Monsters[ML10+7].talkf = M_TALK_SILENT;
X  Monsters[ML10+7].movef = M_MOVE_NORMAL;
X  Monsters[ML10+7].meleef = M_MELEE_NORMAL;
X  Monsters[ML10+7].strikef = M_STRIKE_SNOWBALL;
X  Monsters[ML10+7].specialf = M_NO_OP;
X
X  /* The Elemental Lord of Fire */
X  Monsters[ML10+8].id = ML10+8;
X  Monsters[ML10+8].hp = 1500;
X  Monsters[ML10+8].speed = 3;
X  Monsters[ML10+8].hit = 200;
X  Monsters[ML10+8].actions = 7;
X  Monsters[ML10+8].tactics = MM_AVERAGE;
X  Monsters[ML10+8].ac = 100;
X  Monsters[ML10+8].dmg = 300;
X  Monsters[ML10+8].sense = 10;
X  Monsters[ML10+8].wakeup = 1;
X  Monsters[ML10+8].level = 10;
X  Monsters[ML10+8].status = MOBILE;
X  Monsters[ML10+8].immunity = 
X    EVERYTHING -pow2(NORMAL_DAMAGE)-pow2(COLD)-pow2(UNSTOPPABLE);
X  Monsters[ML10+8].xpv = 5000;
X  Monsters[ML10+8].treasure = 0;
X  Monsters[ML10+8].possessions = NULL;
X  /******* this is OK, since both creature and object are unique */
X  tob = ((pob) (calloc(1,sizeof(objtype))));
X  make_artifact(tob,2); /* orb of water */
X  m_pickup(&(Monsters[ML10+8]),tob);
X  /*******/
X  Monsters[ML10+8].sleep = 100;
X  Monsters[ML10+8].x = -1;
X  Monsters[ML10+8].y = -1;
X  Monsters[ML10+8].transformid = -1;
X  Monsters[ML10+8].corpsevalue = 1;
X  Monsters[ML10+8].monchar = 'F';
X  strcpy(Monsters[ML10+8].monstring,"The Elemental Lord of Fire");
X  strcpy(Monsters[ML10+8].corpsestr,"a spark");
X  Monsters[ML10+8].corpseweight = 1000;
X  Monsters[ML10+8].talkf = M_TALK_SILENT;
X  Monsters[ML10+8].movef = M_MOVE_NORMAL;
X  Monsters[ML10+8].meleef = M_MELEE_FIRE;
X  Monsters[ML10+8].strikef = M_STRIKE_FBALL;
X  Monsters[ML10+8].specialf = M_NO_OP;
X
X
X
X  /* The Elemental Master */
X  Monsters[ML10+9].id = ML10+9;
X  Monsters[ML10+9].hp = 1000;
X  Monsters[ML10+9].speed = 2;
X  Monsters[ML10+9].hit = 200;
X  Monsters[ML10+9].actions = 8;
X  Monsters[ML10+9].tactics = MM_GOOD;
X  Monsters[ML10+9].ac = 200;
X  Monsters[ML10+9].dmg = 200;
X  Monsters[ML10+9].sense = 20;
X  Monsters[ML10+9].wakeup = 20;
X  Monsters[ML10+9].level = 10;
X  Monsters[ML10+9].status = MOBILE+FLYING;
X  Monsters[ML10+9].immunity = 
X   EVERYTHING -pow2(NORMAL_DAMAGE)-pow2(UNSTOPPABLE)-1;
X  Monsters[ML10+9].xpv = 10000;
X  Monsters[ML10+9].treasure = 10;
X  Monsters[ML10+9].possessions = NULL;
X  /******* this is OK, since both creature and object are unique */
X  tob = ((pob) (calloc(1,sizeof(objtype))));
X  make_artifact(tob,0); /* Orb of Mastery */
X  m_pickup(&(Monsters[ML10+9]),tob);
X  /*******/
X  Monsters[ML10+9].sleep = 0;
X  Monsters[ML10+9].x = -1;
X  Monsters[ML10+9].y = -1;
X  Monsters[ML10+9].transformid = -1;
X  Monsters[ML10+9].corpsevalue = 1;
X  Monsters[ML10+9].monchar = 'M';
X  strcpy(Monsters[ML10+9].monstring,"The Elemental Master");
X  strcpy(Monsters[ML10+9].corpsestr,"A burning mound of bubbling mud");
X  Monsters[ML10+9].corpseweight = 10000;
X  Monsters[ML10+9].talkf = M_TALK_EVIL;
X  Monsters[ML10+9].movef = M_MOVE_SMART;
X  Monsters[ML10+9].meleef = M_MELEE_MASTER;
X  Monsters[ML10+9].strikef = M_STRIKE_MASTER;
X  Monsters[ML10+9].specialf = M_SP_MASTER;
X
X
X}
END_OF_oinitmon8to10.c
if test 34254 -ne `wc -c <oinitmon8to10.c`; then
    echo shar: \"oinitmon8to10.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f omega.hiscore -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"omega.hiscore\"
else
echo shar: Extracting \"omega.hiscore\" \(273 characters\)
sed "s/^X//" >omega.hiscore <<'END_OF_omega.hiscore'
XGolfus the Geek
XKilled by an act of God
X0
X1
X2718
XCorazon
X0
X2718
XZorba
X0
X2718
XCantinflas
X0
X2718
XDurango 
X0
X2718
XThe Mind Flayer
X0
X2718
XCalimari
X0
X2718
XDrogo Mooncalf
X0
X2718
XCaptain Krunch
X0
X2718
XTybalt
X0
X2718
XReynard the Fox
X0
X2718
XKharg
X0
X2718
XGrond the ManMountain
X0
X2718
END_OF_omega.hiscore
if test 273 -ne `wc -c <omega.hiscore`; then
    echo shar: \"omega.hiscore\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: End of archive 9 \(of 15\).
cp /dev/null ark9isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 15 archives.
    rm -f ark[1-9]isdone ark[1-9][0-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0