-+-+-+-+-+-+-+-+ START OF PART 10 -+-+-+-+-+-+-+-+
X  if pl`5Bnow`5D.where.r = p3 then
X  begin
X    remember(sendlog,x,y,p1,p2,p4);
X    act_out(plr`5Bnow`5D.log,e_booga,
X`09pl`5Bnow`5D.where.x,
X`09pl`5Bnow`5D.where.y,
X`09pl`5Bnow`5D.attrib_ex`5Bst_base`5D,
X`09pl`5Bnow`5D.attrib`5Bat_size`5D,,
X`09do_mask(not pl`5Bnow`5D.sts`5Bps_dead`5D.on,m_alive,human,m_human),
X`09name`5Bna_player`5D.id`5Bplr`5Bnow`5D.log`5D,,,sendlog);
X  end;
Xend;
X
Xe_turn_on:
Xif room_process then
Xturn_on_fg(x,false);
X
Xe_turn_off:
Xif room_process then
Xturn_off_fg(x,false);
X
Xe_toggle:
Xif room_process then
Xtoggle_fg(x,false);
X
Xe_walkout:
Xif room_process then
Xbegin
X  with person`5Bsendlog`5D do
X  writev(qpqp,sendlog:0,' X ',loc.x:0,' Y ',loc.y:0,' Here ',
X`09boo(person`5Bsendlog`5D.here),'e_walkout!');
X  bug_out(qpqp);
X  remove_player(sendlog,,false);
X  if empty_room then all_done := true;
Xend;
X
Xe_throw:
Xif not room_process then
Xif (pl`5Bnow`5D.where.x = x) and (pl`5Bnow`5D.where.y = y) then wl('Ouch!');
X
X    otherwise wl('Someone logged a bad act.');
X  end;
Xend;
X
Xbegin
X  old_now := now;
X  with act do
X  begin
X    sendlog := sender;
X    theact := action;
X    s := msg;
X    ss:= note;
X    x := xloc;
X    y := yloc;
X    p1 := parm1;
X    p2 := parm2;
X    p3 := parm3;
X    p4 := parm4;
X  end;
X  if sendlog <> 0 then sendname := name`5Bna_player`5D.id`5Bsendlog`5D
X  else sendname := 'Unknown';
X  for loop := 1 to maxmonsters do
X  if (not pl`5Bloop`5D.sts`5Bps_dead`5D.on) and (sendlog <> plr`5Bloop`5D.lo
Vg) then
X  handle_prime;
X  handle_prime(true);
X  now := old_now;
Xend;
X
Xend.
$ CALL UNPACK SRGODACT.PAS;1 419877542
$ create 'f'
X`5Benvironment('srinit')`5D
X
Xmodule srinit;
X
Xconst
X`7B-------------------------------------------------------------------------
V----`7D
X`7BThese constants, in addition to a few usernames are all you should need t
Vo
X get Shadowrealm up and running on your system.
X The other filename you should modify is SRCOM.PAS, and the procedure
X op_userid contains privileged usernames.`7D
X  srop`09`09= 'MASELF';
X`09`09`7BThis is the username corresponding to the "operator" of the
X`09`09 game.`7D
X  temp_root`09= '$1$dua12:`5Btemp.maself`5D';
X`09`09`7BThis is where temporary stuff is stored.`7D
X  helproot`09= '$1$dua12:`5Btemp.maself`5D';
X`09`09`7BThis is the directory where help files and room descriptions
X`09`09are placed.`7D
X  root`09`09= '$1$dua12:`5Btemp.maself`5D';
X`09`09`7BThis is the place where the world files are placed.`7D
X  game_node`09= 'UBVMSB';
X`09`09`7BThis is the node on which the game is running.`7D
X`7B-------------------------------------------------------------------------
V----`7D
X  game_name`09= 'Shadowrealm';
X  short_wait`09= 0.05;
X  default`09= 32000;
X  tinylen`09= 10;
X  shortlen`09= 20;
X  midlen`09= 30;
X  normallen`09= 80;
X  hugelen`09= 240;
X  quick`09`09= 0.1;
X  normal`09= 1;
X  slow`09`09= 10;
X  x_length`09= 15;
X
X  bold`09`09= 1;
X  reverse`09= 2;
X  blink`09`09= 4;
X  underline`09= 8;
X
X  mission_none = 0;
X  mission_pray = 1;
X  mission_hide = 2;
X  mission_get  = 3;
X
X  event_max`09= 10;
X  maxclass`09= 10;
X  maxmenu`09= 60;
X  x_max`09`09= 100;
X  maxnaturalweapon = 3;
X  maxmonsters`09= 10;
X  maxthoughts`09= 5;
X  maxexit`09= 4;
X  maxindex`09= 100;
X  maxobjs`09= 100;`09`7B# objects allowed in a room`7D
X  maxplayers`09= 100;`09`7B# people allowed to play `7D
X  maxspell`09= 100;`09`7B# of spells available`7D
X  maxunique`09= 5;
X  maxhold`09= 26;
X  maxhoriz`09= 132;
X  maxvert`09= 64;
X  maxdesc`09= 10;
X  maxfg `09= 54;
X  fg_layers`09= 3;
X  obj_layers`09= 3;
X  maxerr`09= 20;
X  maxparm`09= 20;
X  maxcomponent`09= 10;
X  maxsecondstats= 10;
X
X`7BUnique stats`7D
X  st_max`09= 6;
X  st_base`09= 1;
X  st_kills`09= 2;
X  st_killed`09= 3;
X  st_race`09= 4;
X  st_class`09= 5;
X  st_experience`09= 6;
X
X`7Bdirections`7D
X  d_north`09= 1;
X  d_south`09= 2;
X  d_east`09= 3;
X  d_west`09= 4;
X
X`7Bevent #'s`7D
X  e_msg`09`09= 1;
X  e_walkin`09= 2;
X  e_walkout`09= 3;
X  e_spell`09= 4;
X  e_move`09= 5;
X  e_bump`09= 6;
X  e_booga`09= 7;
X  e_get`09`09= 8;
X  e_drop`09= 9;
X  e_place`09= 10;
X  e_throw`09= 11;
X  e_assign`09= 12;
X  e_deassign`09= 13;
X  e_halt`09= 14;
X  e_turn_on  `09= 15;
X  e_turn_off`09= 16;
X  e_toggle`09= 17;
X  e_attack`09= 18;
X  e_died`09= 19;
X  e_reborn`09= 20;
X  e_open`09= 21;
X  e_kill`09= 22;
X  e_activate`09= 23;
X  e_ack`09`09= 24;
X  e_ping`09= 25;
X  e_pong`09= 26;
X  e_remotepoof`09= 27;
X  e_process`09= 28;
X  e_spawn`09= 29;
X  e_can_spawn`09= 30;
X  e_can_spawn_ack = 31;
X  e_quit`09= 32;
X  e_listen`09= 33;
X  e_noise`09= 34;
X  e_possess`09= 35;
X  e_possess_not = 36;
X  e_challenge`09= 37;
X  e_refuse`09= 38;
X  e_req_status`09= 39;
X  e_status`09= 40;
X  e_disappear`09= 41;
X
X`7Bobject effects`7D
X  ef_max`09= 43;
X  ef_points`09= 1;
X  ef_health`09= 2;
X  ef_mana`09= 3;
X  ef_wealth`09= 4;
X  ef_mv_delay`09= 5;
X  ef_size`09= 6;
X  ef_heal_speed = 7;
X  ef_mana_speed = 8;
X  ef_noise`09= 9;
X  ef_perception`09= 10;
X  ef_force`09= 11;
X  ef_wind`09= 12;
X  ef_fire`09= 13;
X  ef_cold`09= 14;
X  ef_electric`09= 15;
X  ef_magic`09= 16;
X  ef_holy`09= 17;
X  ef_self`09= 18;
X  ef_weapon`09= 19;
X  ef_missile`09= 20;
X  ef_smallest`09= 21;
X  ef_largest`09= 22;
X  ef_c_force`09= 23;
X  ef_m_force`09= 24;
X  ef_c_wind`09= 25;
X  ef_m_wind`09= 26;
X  ef_c_fire`09= 27;
X  ef_m_fire`09= 28;
X  ef_c_cold`09= 29;
X  ef_m_cold`09= 30;
X  ef_c_electric`09= 31;
X  ef_m_electric`09= 32;
X  ef_c_magic`09= 33;
X  ef_m_magic`09= 34;
X  ef_c_holy`09= 35;
X  ef_m_holy`09= 36;
X  ef_c_self`09= 37;
X  ef_m_self`09= 38;
X  ef_c_weapon`09= 39;
X  ef_m_weapon`09= 40;
X  ef_c_missile`09= 41;
X  ef_m_missile`09= 42;
X  ef_destroy`09= 43;
X
X`7BDamage elements`7D
X  el_max`09= 10;
X  el_force`09= 1;
X  el_wind`09= 2;
X  el_fire`09= 3;
X  el_cold`09= 4;
X  el_electric`09= 5;
X  el_magic`09= 6;
X  el_holy`09= 7;
X  el_self`09= 8;
X  el_weapon`09= 9;
X  el_missile`09= 10;
X
X`7BForeground types`7D
X  fg_max`09= 18;
X  fg_normal`09= 1;
X  fg_turn_on`09= 2;
X  fg_turn_off`09= 3;
X  fg_toggle`09= 4;
X  fg_sliding`09= 5;
X  fg_exit`09= 6;
X  fg_hurt`09= 7;
X  fg_delay`09= 8;
X  fg_poison`09= 9;
X  fg_race`09= 10;
X  fg_rebirth`09= 11;
X  fg_nodead`09= 12;
X  fg_door`09= 13;
X  fg_class`09= 14;
X  fg_shop`09= 15;
X  fg_view`09= 16;
X  fg_college`09= 17;
X  fg_no_teleport= 18;
X
X`7Bgeometries available`7D
X  g_point`09= 1;
X  g_line`09= 2;
X  g_blip`09= 3;
X  g_rectangle`09= 4;
X  g_circle`09= 5;
X  g_face`09= 6;
X
X`7BIndexes`7D
X  i_max`09`09= 8;
X  i_player`09= 1;
X  i_room`09= 2;
X  i_object`09= 3;
X  i_race`09= 4;
X  i_ingame`09= 5;
X  i_spell`09= 6;
X  i_npc`09`09= 7;
X  i_offense`09= 8;
X
X`7BKey menu's`7D
X  key_main`09= 1;
X  key_kind`09= 2;
X  key_move_only = 3;
X  key_operator`09= 4;
X  key_get_direction = 5;
X
X  k_roo`09`09= 1;`09`09`7Broom name`7D
X  k_obj`09`09= 2;`09`09`7Bobject name`7D
X  k_pla`09`09= 3;`09`09`7Bplayer name`7D
X  k_use`09`09= 4;`09`09`7Buser name`7D
X  k_rac`09`09= 5;`09`09`7Brace name`7D
X  k_spe`09`09= 6;`09`09`7Bspell name`7D
X  k_int`09`09= 7;`09`09`7Binteger`7D
X  k_sst`09`09= 8;`09`09`7Bshortstring`7D
X  k_str`09`09= 9;`09`09`7Bstring`7D
X  k_dsc`09`09= 10;`09`09`7Bdescription`7D
X  k_boo`09`09= 11;`09`09`7Bboolean`7D
X  k_ico`09`09= 12;`09`09`7Bicon`7D
X  k_sta`09`09= 13;`09`09`7Bweapon stat`7D
X
X`7BMasks`7D
X  m_alive`09= 1;
X  m_human`09= 2;
X  m_invisible`09= 4;
X
X  m_first_in`09= 1;
X  m_to_person`09= 2;
X  m_for_person`09= 4;
X  m_to_room`09= 8;
X  m_for_room`09= 16;
X
X`7Barrays of mapped icon stuff`7D
X  map_background= 0;
X  map_fg`09= 1;
X  map_object`09= 2;
X  map_player`09= 3;
X
X`7BIntegers`7D
X  n_max = 2;
X  n_location`09= 1;
X  n_class`09= 2;
X   `20
X`7BNames`7D
X  na_max`09= 6;
X  na_room`09= 1;
X  na_obj`09= 2;
X  na_player`09= 3;
X  na_user`09= 4;
X  na_race`09= 5;
X  na_spell`09= 6;
X  na_foreground`09= 7;
X  na_fg_type`09= 8;
X  na_weapon`09= 9;
X  na_attribute`09= 10;
X  na_spell_ef`09= 11;
X  na_elements`09= 12;
X  na_equipment`09= 13;
X  na_classes`09= 14;
X
X`7BObject wear slots`7D
X  ow_max`09= 19;
X  ow_sword`09= 1;
X  ow_shield`09= 2;
X  ow_arms`09= 3;
X  ow_hands`09= 4;
X  ow_head`09= 5;
X  ow_neck`09= 6;
X  ow_back`09= 7;
X  ow_chest`09= 8;
X  ow_legs`09= 9;
X  ow_feet`09= 10;
X  ow_ring`09= 11;
X  ow_body`09= 12;
X  ow_eyes`09= 13;
X  ow_wrist`09= 14;
X  ow_waist`09= 15;
X  ow_backpack`09= 16;
X  ow_pouch`09= 17;
X  ow_quiver`09= 18;
X  ow_wallet`09= 19;
X
X`7Bplayer's status`7D
Xps_max`09`09= 6;
Xps_dead`09`09= 1;
Xps_poisoned`09= 2;
Xps_invisible`09= 3;
Xps_blind`09= 4;
Xps_speed`09= 5;
Xps_strength`09= 6;
X
X`7BRoom kinds`7D
X  rm_dungeon`09= 1;
X
X`7BSound ranges`7D
X  snd_audible`09= 100;
X  snd_loud`09= 50;
X  snd_normal`09= 25;
X  snd_quiet`09= 10;
X  snd_whisper`09= 5;
X
X`7BSpell effects`7D
X  sp_max`09= 4;
X  sp_hurt`09= 1;
X  sp_freeze`09= 2;
X  sp_teleport`09= 3;
X  sp_invisible`09= 4;
X
X`7BCharacter statistics`7D
X  at_max`09= 10;
X  at_points`09= 1;
X  at_health`09= 2;
X  at_mana`09= 3;
X  at_wealth`09= 4;
X  at_mv_delay`09= 5;
X  at_size`09= 6;
X  at_heal_speed = 7;
X  at_mana_speed = 8;
X  at_noise`09= 9;
X  at_perception`09= 10;
X
X`7BCurrent stats - things which change constantly`7D
X  cat_health`09= 1;
X  cat_mana`09= 2;
X
X  w_xwind`09= 1;
X  w_twind`09= 2;
X  w_gwind`09= 3;
X  w_wind`09= 4;
X
Xtype
X  counting`09= 1..999999;
X  whole`09`09= 0..999999;
X  string`09= varying`5Bnormallen`5D of char;
X  strung`09= packed array`5B1..80`5D of char;
X  shortstring`09= varying`5Bshortlen`5D of char;
X  tinystring`09= varying`5Btinylen`5D of char;
X  hugestring`09= varying`5Bhugelen`5D of char;
X
X  $deftyp`09= `5Bunsafe`5D integer;
X  $defptr`09= `5Bunsafe`5D `5E$deftyp;
X  $uword`09= `5Bword`5D 0..65535;
X  $ubyte`09= `5Bbyte`5D 0..255;
X  $udata`09= varying`5B240`5D of char;
X  ident`09`09= packed array`5B1..12`5D of char;
X  lpack`09`09= packed array`5B1..15`5D of char;
X  mpack         = packed array`5B1..64`5D of char;
X
X  timetype = record
X    p1,p2:integer;
X  end;
X
X  xy = record;
X    x,y:integer;
X  end;
X
X  iosb_type = record
X    io_status: $uword;
X    trans: $uword;
X    dsi: unsigned;
X  end;
X
X  item_list_3 = record
X    buf_len: $uword;
X    it_code: $uword;
X    buf_adr: unsigned;
X    len_adr: unsigned;
X  end;
X`20
X  actrec = record
X    sender,
X    action,
X    xloc,
X    yloc,
X    parm1,
X    parm2,
X    parm3,
X    parm4`09:integer;
X    msg`09`09:$udata;
X    note`09:$udata;
X  end;
X
X  menu_type = record
X    choice`09:shortstring;
X    prompt`09:string;
X    kind`09:integer;
X    int_result`09:integer;
X    str_result`09:string;
X    boo_result`09:boolean;
X    min_int`09:integer;
X    max_int`09:integer;
X    def_int`09:integer;
X    help_menu`09:integer;
X  end;
X
X  uniqueobj = record
X    num`09`09:integer;
X    condition`09:integer;
X    parm`09:packed array`5B1..maxunique`5D of integer;
X    mag`09`09:packed array`5B1..maxunique`5D of integer;
X  end;
X
X  roomobj = record
X    object`09:uniqueobj;
X    icon`09:char;
X    rendition`09:integer;
X    base`09:integer;
X    altitude`09:integer;
X    loc`09`09:xy;
X    hidden`09:integer;
X  end;
X
X  loc = record
X    r,x,y:integer;
X  end;
X
X  destrec = record
X    x,y,mission:integer;
X  end;
X
X  fg_effect = record
X    dest`09:loc;
X    icon`09:char;
X    rendition`09:integer;
X    base`09:integer;
X    altitude`09:integer;
X    kind`09:integer;
X    fparm1`09:integer;
X    fparm2`09:integer;
X    fparm3`09:integer;
X    fparm4`09:integer;
X    dsc`09`09:shortstring;
X    on`09`09:boolean;
X    walk_through:boolean;
X    walk_on`09:boolean;
X    climb`09:boolean;
X  end;
X
X  fgrec = record;
X    valid`09:integer;
X    object`09:array`5B1..maxobjs`5D of roomobj;
X    map`09`09:packed array`5B1..maxhoriz,1..maxvert,1..fg_layers`5D of 1..ma
Vxfg;
X    effect`09:array`5B1..maxfg`5D of fg_effect;
X    name`09:array`5B1..maxfg`5D of shortstring;
X  end;
X
X  georec = record
X    geometry`09:integer;
X    geo1`09:integer;
X    geo2`09:integer;
X    geo3`09:integer;
X    geo4`09:integer;
X  end;
X
X  temp = record;
X    on`09`09:boolean;
X    time`09:integer;
X  end;
X
X  armortype = record
X    chance`09:integer;
X    magnitude`09:integer;
X  end;
X
X  targetrec = record
X    log:integer;
X    hits:integer;
X    damage:integer;
X  end;
X
X  playerrec = record;
X    valid`09:integer;
X    mbx`09`09:shortstring;
X    password`09:shortstring;
X    ex_boo3`09:boolean;
X    where`09:loc;
X    attrib_max`09:array`5B1..at_max`5D of integer;
X    attrib`09:array`5B1..at_max`5D of integer;
X    attrib_ex`09:array`5B1..st_max`5D of integer;
X    proficiency`09:array`5B1..el_max`5D of integer;
X    sts`09`09:array`5B1..ps_max`5D of temp;
X    equipment`09:array`5B1..maxhold`5D of uniqueobj;
X    equipped`09:array`5B1..maxhold`5D of boolean;
X    spell`09:array`5B1..maxspell`5D of boolean;
X    ex_str1`09:shortstring;
X    ex_str2`09:shortstring;
X    last_play`09:integer;
X    ex_int2`09:integer;
X    ex_int3`09:integer;
X    ex_int4`09:integer;
X    ex_boo1`09:boolean;
X    ex_boo2`09:boolean;
X  end;
X
X  peoplerec = record;
X    channel`09:$uword;
X    loc`09`09:xy;
X    feet`09:integer;
X    head`09:integer;
X    here`09:boolean;
X    alive`09:boolean;
X  end;
X
X  plrrec = record
X    npc`09`09:boolean;
X    log`09`09:integer;
X    awake`09:integer;
X    target`09:array`5B1..maxthoughts`5D of targetrec;
X    friend`09:array`5B1..maxthoughts`5D of integer;
X    dest`09:destrec;
X    sound`09:string;
X    armor`09:array`5B1..el_max`5D of armortype;
X    wear`09:array`5B1..ow_max`5D of integer;
X    weapon`09:integer;
X    weapon_name`09:shortstring;
X    range`09:integer;
X    hands`09:boolean;
X    n_weapon`09:array`5B1..maxnaturalweapon`5D of integer;
X  end;
X
X  racerec = record
X    valid`09:integer;
X    armor`09:array`5B1..el_max`5D of armortype;
X    proficiency`09:array`5B1..el_max`5D of integer;
+-+-+-+-+-+-+-+-  END  OF PART 10 +-+-+-+-+-+-+-+-
