-+-+-+-+-+-+-+-+ 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 +-+-+-+-+-+-+-+-