(Probably out of date. -Ed.) PUBLIC PROGRAMS HELP The following commands allow access to help on indexed public programs. > programs #(program number) -- shows notes on program. > programs (searchstring) -- shows all programs with name or keywords . containing the searchstring. > programs #list -- shows complete listing of indexed programs. > programs #list (x) -- shows listing of the (x)th indexed program. > programs #list (x)-(y) -- shows partial listing of indexed programs. > programs #page (x) -- shows a 'page' of listing. Programmers can add their programs to this listing. For more information, type 'programs #commands'. Current number of entries: 91 Current number of pages: 7 PUBLIC PROGRAMS LIST # Program Name Owner Docs 1) #24822 mirror.muf _________________ Bunny __________ @list #24822=2-14 2) #70451 odrop.muf __________________ Bunny __________ @list #70451=1-30 3) #976 autolock.m _________________ Charity ________ @list #976=1-10 4) #74762 cmd-race.m _________________ Charity ________ @list #74762=1-4 5) #10112 comb-lock.m ________________ Charity ________ @list #10112=1-8 6) #80178 disc_dswp.m ________________ Charity ________ @list #80178=1-16 7) #86235 duty.staff _________________ Charity ________ @list #86235=1-14 8) #75103 feed.m _____________________ Charity ________ @list #75103=1-8 9) #50577 idle.user.m ________________ Charity ________ @list #50577=1-10 10) #87850 privacy ____________________ Charity ________ @list #87850=1-9 11) #8898 rot-exit.m _________________ Charity ________ @list #8898 = 1-18 12) #9480 transporter.muf ____________ Charity ________ @list #9480= 1-9 13) #54062 multi-action _______________ Corwyn _________ (none) 14) #229 ListEditor _________________ darkfox ________ (none) 15) #14490 TransExit __________________ darkfox ________ (none) 16) #13747 simple-lock ________________ Corwyn _________ (none) 17) #59828 LightLock __________________ Dragon _________ @list #59828=1-55 18) #11683 improved_morph.pgm _________ Drew ___________ (none) 19) #3146 container-shell ____________ Jenora _________ (none) 20) #29292 Puzzle 'Inspect' program. __ Jenora _________ (none) 21) #31686 Invite Command _____________ Jenora _________ @list #31686=1-22 22) #29549 Property Look-trap _________ Jenora _________ (none) 23) #27837 Potion dosage counter ______ Jenora _________ (none) 24) #46956 lookitem ___________________ Wiz-Daemon _____ (none) 25) #46186 extrude-item2.muf __________ Foxx_Fox _______ @list #46186=1-80 26) #37200 Adv-Reset.muf ______________ Greywolf _______ @list #37200=1-53 27) #12562 Com.muf ____________________ Greywolf _______ @list #12562=1-5 28) #37258 Delay-Lock.muf _____________ Greywolf _______ @list #37258=1-18 29) #37505 Dig.muf ____________________ Greywolf _______ @list #37505=1-34 30) #32249 DriveTo.muf ________________ Greywolf _______ @list #32249=1-66 31) #45886 Echo-Say.muf _______________ Greywolf _______ @list #45886=1-17 32) #35858 Event.muf __________________ Greywolf _______ @list #35858=1-67 33) #36215 Event-Shell-Lock.muf _______ Greywolf _______ @list #36215=1-60 34) #52097 Index.muf __________________ Greywolf _______ @list #52097=1-24 35) #28771 Intercom.muf _______________ Greywolf _______ @list #28771=1-26 36) #35719 Mirror-Hack.muf ____________ Greywolf _______ @list #35719=1-9 37) #42833 Multi-Command.muf __________ Greywolf _______ @list #42833=1-32 38) #32153 ObjExit.muf ________________ Greywolf _______ @list #32153=1-15 39) #11145 Option.muf _________________ Greywolf _______ @list #11145=1-107 40) #44926 Parrot-Hack.muf ____________ Greywolf _______ @list #44926=1-62 41) #41241 Rand-Exit.muf ______________ Greywolf _______ @list #41241=1-33 42) #58411 Route.muf __________________ Greywolf _______ @list #58411=1-43 43) #67396 Riddle.muf _________________ Greywolf _______ @list #67396=1-28 44) #25984 Runaway.muf ________________ Greywolf _______ @list #25984=1-44 45) #52356 Score.muf __________________ Greywolf _______ @list #52356=1-50 46) #67962 Treasure-Thief.muf _________ Greywolf _______ @list #67962=1-13 47) #36002 Window.muf _________________ Greywolf _______ @list #36002=1-43 48) #26749 WolfAction.muf _____________ Greywolf _______ @list #26749=1-58 49) #3839 chessboard-program _________ Jeremy _________ (none) 50) #4567 look-simulation-program ____ Jeremy _________ (none) 51) #3694 object-name-program ________ Jeremy _________ (none) 52) #8274 descer _____________________ Karrejanshi ____ (none) 53) #19944 exit-use-notify ____________ Karrejanshi ____ (none) 54) #19999 showwho ____________________ Karrejanshi ____ (none) 55) #20060 OnlyFemales.MUF ____________ Lanya __________ (none) 56) #19683 OnlyMales.MUF ______________ Lanya __________ (none) 57) #13071 capacity-lock.disk _________ Lynn_Onyx ______ (none) 58) #11293 knock.disk _________________ Lynn_Onyx ______ (none) 59) #13485 random-lock.disk ___________ Lynn_Onyx ______ (none) 60) #8004 cmd-say-filter _____________ Lynx ___________ (none) 61) #10979 copy-prop-to-proploc _______ Lynx ___________ (none) 62) #9576 do-nothing _________________ Lynx ___________ (none) 63) #355 tmp-die-roll _______________ Lynx ___________ (none) 64) #6800 gen-desc (Revenge of Look-No Lynx ___________ @list $desc-docs 65) #7125 cmd-spoof __________________ Lynx ___________ (none) 66) #24709 record.muf _________________ Foxx_Fox _______ @list #24709=1-52 67) #3933 Dice-Roller ________________ Revar __________ (none) 68) #10522 gen-crowdlock ______________ Revar __________ (none) 69) #6435 gen-mesgboard ______________ Wizard _________ (none) 70) #10746 gen-multilock ______________ Revar __________ (none) 71) #8452 gen-playerlist _____________ Revar __________ (none) 72) #15046 gen-setit __________________ Revar __________ (none) 73) #4958 gen-timedesc _______________ Revar __________ (none) 74) #5020 gen-trans-exit _____________ Revar __________ (none) 75) #6875 gen-broadcaster ____________ Lynx ___________ (none) 76) #14118 ObvExits ___________________ Shaterri _______ (none) 77) #5137 gen-proglock _______________ Lynx ___________ (none) 78) #8813 pdc-morph.muf ______________ Slate __________ @list #8813=1-97 79) #60904 pdc-time.muf _______________ Slate __________ @list #60904=1-32 80) #22998 desc-area.muf ______________ Verin __________ @list #22998 = 1-40 81) #75482 obv-area.muf _______________ Verin __________ @list #75482 = 1-35 82) #27531 gen-change _________________ Lynx ___________ (none) 83) #4708 ed.muf _____________________ WhiteFire ______ (none) 84) #41107 lockmgr.muf ________________ Wizard _________ (none) TA #50173 lock.muf ___________________ WhiteFire ______ (none) 85) #17812 morph.muf __________________ WhiteFire ______ @list #17812=1-115 86) #43157 nag2.muf ___________________ Vision _________ @list #43157=2-28 87) #70367 lingo.muf __________________ Vision _________ @list #70367=2-42 88) #60782 narc.muf ___________________ Vision _________ @list #60782=2-44 89) #94523 Passenger-List.muf _________ Greywolf _______ @list #94523=1-17 90) #26889 foodquery.muf ______________ BoingDragon ____ @list #26889=1-58 91) #101765 Super-Indexer.muf __________ Greywolf _______ @list #101765=1-9 PUBLIC PROGRAMS EDITOR COMMANDS Wizards or programmers may add new program entries. > programs #add (dbref) -- add program to index. > programs #delete (dbref) -- deletes program from index. > programs #keyword (dbref) -- allows editing of program 'keywords'. > programs #edit (dbref) -- allows entry of one-line program summary. Be sure your programs meet security, privacy and other wizard-determined guidelines before adding them. Also, please set the '_docs' prop on your program to list internal documentation, and set the program LINK_OK. 1) #24822 MIRROR.MUF _________________ BUNNY __________ @LIST #24822=2-14 mirror.muf By Bunny Include a call to this program in the @desc in the form of: @desc {object}=@$mirror {text.... text....} %mirror {... text} It is at the point of the occurrence of "%mirror" that the reflection of the user will be inserted. *Note: This version supports the hack made by Greywolf, and fixes a bug that caused %yes, and %if to act odd. Thanks Rocket_raccoon This program will work with @6800 and $desc and cuts out look notifys so don't report this as a bug when your look notify fails I can not guarantee any compatablity with other desc programs, I was not familiar with any others so I made it $desc specific, so if you use another prg who knows what this mirror might do. 13 lines displayed. 2) #70451 ODROP.MUF __________________ BUNNY __________ @LIST #70451=1-30 odrop.muf by: Bunny Odrop changer: The purpose of this program is to change the odrop of an exit to reflect the room they player left when they crossed the exit. This was written so that floating exits 'exits on players or objects' or exits set on parent rooms, will show the room the player left from when the exit was crossed. For example: I have an exit I use to bamf into my apt. with the default odrop setup the best I can get is Bunny beams in. With this prg I can get Bunny beams in from West Corner of Park, or living room, or whatever the name of the room I _was_ in. The program can be used on any object but will have little effect, but maybe someone out there will find a use for the "feature", osucc and ofail use were left out because no-one I asked could come up with a reason to support them. If you have one, p #mail Bunny, and I will debate its addition to the code. Thats about it for the long winded part of the help. USAGE: @drop <object> = @70451 You MUST use the drop field for the program call otherwise the call will intefere with use of $desc/@6800 or other prgs used in the succ and fail fields. PROPERTIES: Only one property is needed /_odrop: this holds the odrop info that will be used by the program. This data is in the format: @set <obj> = /_odrop:<text...> %loc <text....> %loc will be substituted for the name of the room you _were_ in. I hope thats enough, if the help is still fuzzy p #mail bunny, and I'll fix the help and help you out. 30 lines displayed. 3) #976 AUTOLOCK.M _________________ CHARITY ________ @LIST #976=1-10 (autolock.m - door lock that relocks after some amount of time.) (make an action named 'unlock' or something. @link it to this prog.) (NOTE:'unlock' *MUST* either be, or be part of the exit name,) (like 'buzz;unlock' then, @lock the exit in question to this program) (set the fail msgs on the exit as desired) (set these props: ) (on action: _ref: - dbref of exit to lock, as in _ref:22150 ) (on exit: ltime: - time in seconds to wait before relock.) (on exit: lstate:locked - set it to locked initially) (Ch'May 28 Sept 1993) 10 lines displayed. 4) #74762 CMD-RACE.M _________________ CHARITY ________ @LIST #74762=1-4 (shows your current race for those who morph a lot and forget what) ( they currently are...) (link an action to the prog, or call it from _connect props) (Ch'May 8/29/93) 4 lines displayed. 5) #10112 COMB-LOCK.M ________________ CHARITY ________ @LIST #10112=1-8 (comb-lock.m - a user settable combination lock program) (To set up, type @act clok = me then @link clok = #10112 ) (set the exit to be locked with @lock <exit> = #10112) (Type clok #help for details. set a combination for that exit,) (and it is ready to use. Anyone can lock it. Anyone who has the) (combintaion can unlock it. Only the owner of the exit may) (set or change the combination.) (Ch'May - 10-Sept-1993) 8 lines displayed. 6) #80178 DISC_DSWP.M ________________ CHARITY ________ @LIST #80178=1-16 (This program is set on the _disconnect prop of a room to sweep) (a disconnecting player from the room. They are sent to the) (room pointed to by the dswp_dest prop. Also available are) (dswp_mesg which shows the disconnecting player a mesg) (dswp_omesg which is shown to others in the room.) (dswp_ref can be set to use an alternative proploc in case) (you want to use the same msgs on all rooms. The format of that) (is @set here = dswp_ref:1234 - don't put in the # sign.) (if dswp_mesg or dswp_omesg are not set, nothing is printed) (if dswp_ref is not set it defaults to the current room.) (if dswp_dest is not set, the player is sent home) (Since this will run out of an environment room, the prop) (dswp_exempt can be set to "yes" to make a room exempt.) (If you use my environment room as the parent to yours, you may set this) (prop in your enviromnent room to disable disc_sweep) (Ch'May - 9 Oct 1993) 16 lines displayed. 7) #86235 DUTY.STAFF _________________ CHARITY ________ @LIST #86235=1-14 (duty.staff sets/clears _off_duty , announces status change to people in the room.) (depends on prop "_off_duty?" being initialized first) (if you are wiz/helpstaff, you should know this prop, and have it set) (Written by Ch'May 17 AUG 93 ) : duty.staff (MAIN) dup "#help" strcmp not if "duty [on][off] - set/clear on/off duty status, and see it." .tell "duty on - sets you on duty" .tell "duty off - sets you off duty" .tell "duty - Shows what your status is" .tell "_duty - message shown to you when you go on duty" .tell "_oduty - message shown to others when you go on duty" .tell "_xduty - message shown to you when you go off duty" .tell "_oxduty - message shown to others when you go off duty" .tell exit 14 lines displayed. 8) #75103 FEED.M _____________________ CHARITY ________ @LIST #75103=1-8 (feed.m - A program for blood - drinking species) (Make a personal action named 'fed' and @link it to this program) (when you feed, type 'fed #set to timestamp the activity.) (to see when you last fed, you can type "fed" and it will tell you) (the current prop setting. Or, you can set _connect/lastfed:thisprognumber) (and be informed of the lastfed timestamp as you log in. Great for those) (who have a problem remembering...) (Charity - 19 Sept 1993 ) 8 lines displayed. 9) #50577 IDLE.USER.M ________________ CHARITY ________ @LIST #50577=1-10 (Idle sets/clears temp doing, announces un/idle to people in the room.) (Written by Ch'May 17 AUG 93 ) : idle (main) dup "#help" strcmp not if "syntax - idle <reason> or idle" .tell "idle <reason> makes you idle" .tell "idle with no argument unidles you" .tell "This also sets/clears your temp doing field." .tell "You must also set 'wd #temp on' for others not in the room " .tell "to see the TEMP doing." .tell exit 10 lines displayed. 10) #87850 PRIVACY ____________________ CHARITY ________ @LIST #87850=1-9 (privacy.muf toggles on/off duty, page #haven, and it's string,) (and sets/resets your TEMP doing message.) (19 Aug 1993 - Ch'May) : privacy dup "#help" strcmp not if "open an action named 'priv' and link it to this program" .tell "priv [on/off] - sets/resets private mode" .tell "priv - tells you how you are currently set." .tell "The rest is NOT configurable" .tell exit 9 lines displayed. 11) #8898 ROT-EXIT.M _________________ CHARITY ________ @LIST #8898 = 1-18 (rot-exit.m - Exit link rotator. After a person uses the exit, it is relinked to the next exit in the list. By using trans-exit, you can see the next place it's linked to... It is used by setting the drop on the exit to @8898. The following props need to be set on the exit. _rot_list:room numbers, space sparated, first and last numbers must match as in _rot_list:25130 77164 12973 44756 25130 Link the exit initially to whatever number is the first/last one you use. The other prop is _rot_last: and should be set to the first number at the start. The program keeps track of where it is in the list with this. The rules this program goes by is that all DBs must be rooms. Then, either the owner of the exit must own the destination room, or, the destination room must be set LINK_OK. If a LINK_OK room owned by someone else becomes not-LINK_OK, then the program complains to the user, and the exit becomes 'stuck' pointing at the same location. Someone will probably be kind enough to tell you about this. Remove the offending DB< and reset _rot_last to the starting room, to reset the program. Written by Ch'May 30-Aug-93) 18 lines displayed. 12) #9480 TRANSPORTER.MUF ____________ CHARITY ________ @LIST #9480= 1-9 (This program allows transporter effects between space vehicles in the ) (same room) (You need to set in the room you want to allow transports to and from:) (is_vehicle?:yes and trans_on:yes and then set _map/ref to point to) (the vehicle OBJ's DBREF. No # sign...) (On that vehicle obj, set cont:XXXXX where XXXXX is the room inside) (the vehicle to teleport to. Setting trans_on to no is like) (turning off the transporter.) (Ch'May 10 Dec 93) 9 lines displayed. 13) #54062 MULTI-ACTION _______________ CORWYN _________ (NONE) (multi-action.muf This program is designed to consolidate 'locked exit' effects in a room into one action. To use, set a prop on the action, with the sames name as one [or more] of the names of the action. The program, when invoked, looks for a prop with the name it was called by, then feeds it to @6800. ) 5 lines displayed. 14) #229 LISTEDITOR _________________ DARKFOX ________ (NONE) ( ListEditor -- A simple line editor for property lists. ) [Unfortunately, the author's documentations skills are about as poor as my ability to interpret MUF. If this program is linked to an 'editor' command, I think the syntax would be "editor <object>=<list-name>". -- TA] 15) #14490 TRANSEXIT __________________ DARKFOX ________ (NONE) ( TransExit -- Transparent Exit Displays the room through an exit. SETUP: @desc exit = @<program> This will set it up to say 'You see:', the show the name and description of the room through the exit. To change the 'You see:' message, simply put the new message after the @<program>. For example, '@desc door = @<program> Through the door is' To change what gets displayed for the room itself, set a property called 'show' on the exit, containing any combination of the letters 'n', 'd', 's', and 'c' [in lowercase]. If 'n' is in the property, it will show the name, 'd' will show the description, 's' will show the success message, and 'c' will show the contents. The default is just 'nd'. For example, '@set door = show: ndc' 18 lines displayed. 16) #13747 SIMPLE-LOCK ________________ CORWYN _________ (NONE) ( genlock.MUF -- A simple generic lock program Usage: @lock <exit> = 13747 @set <exit> = genlock/valid: yes This will lock the exit such that there is a list of guests who are always allowed in, a list of players who are banned, a list of 'keys', objects that will allow someone in, and a locked/unlocked state to allow anyone else in. To modify the list of guests/banned/keys, or to lock or unlock the exit, create actions that are linked to the lock program and do the following: @set <action> = genlock/open : <alias to open door/edit guest list> @set <action> = genlock/locked : <alias to lock door/edit banned list> You can also set the following message properties: genlock/mesg -- The message shown to you when the status changes genlock/omesg -- The message shown to others in your room genlock/rmesg -- The message shown to others in the exit room These messages are run through @6800. An %a substitution is available with these messages which is replaced with the action name used [in the main prop ONLY, not %subs]. The messages can be set as defaults on the action, or on the particular exit If the property 'genlock/toggle' is set on a door, the value of '_broadcast?' on -that- door will be toggled along with the door. [ie, you can only hear through an open door, that way] Lastly, you can also set 'genlock/lockout' which, if set, restricts the open/close actions to those people on the 'guest' list. These actions are then used as follows: The actions are always followed by an exit name to operate on. This exit can either be the direct exit to work on, or the exit can have a property 'genlock/ref' set to the dbref of the actual exit [so that the lock program can be used from the inside of a room, for example]. The genlock/ref property is subject to the following restrictions : 1] The exits must share an owner 2] The exits must be cross-linked, with each linked to the location of the other [ie, 2 sides of one door] If an action is called only with this parameter, then the appropriate status will be copied to the exit. If the action name is not in either the /open or /locked properties, the exit status is toggled If the action is called with parameters after the exit name, the player is checked against a list of players authorized to edit the lists [the owner of the exit is ALWAYS authorized]. If the action is called with the exit name followed by a '+' or '-' and a player name, that player is added/removed to the list specified by the action. If the action name is not in the open/locked lists, the 'edit' list is modified. if the action is called with the exit name followed by '?', the contents of all relevent lists on the action are displayed. For example: @action open;close;work = ... @link open = 13747 @set open = genlock/open : open @set open = genlock/locked : close Then 'open', 'close', and 'work' can be used as follows: close <exit> -- to set 'genlock/status: locked' on the exit. open <exit> -- to set 'genlock/status: open' on the exit. close <exit> + joblo -- this adds player 'joblo' to the banned list. close <exit> - MisterRogers -- removes 'MisterRogers' from the banned list. open <exit> + Bill_D_Kat -- adds 'Bill_D_Kat' to the guest list open <exit> - 'Bill_D_Kat'Up -- removes 'Bill_D_Kat' from the guest list work <exit> + Joe_Schmoe -- adds 'Joe_Schmoe' to the 'edit' list, so that they can change lists on this exit The following work regardless of which alias is used: open <exit> + Key_1 -- [assuming Key_1 is an object] adds 'Key_1' to the keys list close <exit> - Key_1 -- removes 'Key_1' from the keys list. work <exit> = 10 -- Sets the crowd limit to 10. open <exit> = -- Removes the crowd limit. 17) #59828 LIGHTLOCK __________________ DRAGON _________ @LIST #59828=1-55 ( LightLock -- v1.1 by Dragon ) ( LightLock is designed for builders to be able to create dark rooms that require explorers to have a valid light source in order to be able to see. Unlike many similar programs, LightLock requires no wierd manipulation of lanterns in order to function. In order for this program to allow players to see in a room, either the room must have a light source, or someone in the room must hold a lightsource. In addition, LightLock will announce to the room when a room is lit or darkened due to someone entering or leaving with a light source. Note that if a room is not lit, it's real name is not revealed. The program requires the use of ErmaFelna's look-trap program, or something similar. Installation: I recommend putting all dark rooms into one common parent as it saves on DB space and is overall more convinient. 1. Create an exit named `look' in the parent, and link it to the look-trap program. @lock this exit to LightLock. 2. Properties: These can be all in the parent, or in individual rooms for special exceptions. _light/items: A list of items that are light sources. There can be many. [ie, @set <parent>=_light/items:#234 #6543 #1 ...] _light/darkname: A name that a room has when it is unlit. [ie: Darkness] If you want LightLock to annouce lightening and darkening, also add these: _light/Arrive: String for when the room gets bright. _light/Depart: String for when room gets dark. _Arrive: set to the dbref of LightLock _Depart: set to the dbref of LightLock [Note: On fb4.2 and above, you can use _arrive/lightlock: <dbref>. Same applies for _Depart. Consult info pages for more details.] 3. Set the @fail message of the 'look' command to the string players will see when it is not light. [ie. It is too dark to see.] [The reason I did not use a darkdesc prop is to avoid a 'You can't go that way. message.] 4. Optional feature: Wrong turns. Moving in the dark is dangerous, and LightLock can prove this if you desire. In the parent room, create an exit named n;s;e;w;north;south... <All possible names>, and lock this exit to !<dbref of lightlock>. That way, when a room is unlit, this semi-global exit is unlocked, and can be a 'You fell and broke your neck!' message. I usually link it to a 'You are dead' room, @succ=Moving in the dark is Very Dangerous!, @drop=You fell and broke your neck! Use your imagination. While you are building, you may with to make yourself a valid light source, that way you do not need to carry a light around all the time. LightLock can be disabled with the use of a property in the enviornment. _Light/Inactive, if set to yes, causes LightLock to always return a 1, meaning unlocked. A room or sub-enviornment can have this property set to 'no' to override the setting in a higher parent. 55 lines displayed. 18) #11683 IMPROVED_MORPH.PGM _________ DREW ___________ (NONE) (* *********************************************************** *) (* * The MORPH Program Version 1.1 * *) (* * --Written by D. Maxwell [Drew] * *) (* *********************************************************** *) (* *) (* Features: *) (* 1] Ability to change descriptions at will {of course} *) (* 2] Customized messages for different 'morphings' *) (* 3] Storage of forms onto a separate object, if desired. *) (* 4] Help screen for easy reference. *) (* *) (* A quick note: This program works in conjunction with the *) (* look-notify program written by Lynx [Program #6800]. *) (* *) "################################################################" " Help for the MORPH program " "################################################################" " " "1) When first setting yourself up, please remember to set your " " description to the following: " " '@describe me = @6800 %sub[current]' " " " "To set a default message you see when you change: " " '@set me = _morph_default : <put your message here>' " "To set a default message others see when you change: " " '@set me = _omorph_default : <put your message here>' " "To set another object as the place to store your forms: " " '@set me = _morph_target : <the number of the object>' " " (NOTE: If you do not set this property, it is assumed that the " " forms are on you yourself.) " "To set up a form: " " '@set <either 'me' or your _morph_target> = <form> : <desc>' " "To set a specific message you see when changing into a form: " " '@set <'me', or your _morph_target> = _morph_<form> : <msg>' " "To set a specific message others see when changing into a form: " " '@set <'me', or your _morph_target> = _omorph_<form> : <msg>' " 19) #3146 CONTAINER-SHELL ____________ JENORA _________ (NONE) ( MUF Program for the creation of 'containers' ErmaFelna ) ( ) ( The concept of a container is simple: it's an object that can have ) ( other objects 'inside' it. Since, in MUCK, a thing cannot actually ) ( have an inventory, the inside of the object is simulated by having a ) ( room attached to it. ) ( To use the container code, do the following: ) ( 1: @dig a room for the inside, and @create a thing for the outside. ) ( 2: Create an @action attached to the thing, calling it what you want. ) ( 3: @link the action to this program. ) ( 4: Type in the action name to run it. ) ( 5: When the program asks, give it the number of the room you @dug. ) ( Do not put a '#' in front of the number, just type in the digits ) ( 6: Read the help that the program will print out for you. ) ( CONTAINER-SHELL: ErmaFelna ) ( called by person's action ) ( expects: command line ) ( Shell for the container code. This function checks the validity of the ) ( container, and then locates the first command either on the trigger as ) ( the property '_action', or as the first word in the command line. The ) ( command may be one of the following: ) ( open: Open the container for use. ) ( close: Close the container. ) ( look: List the items inside the container. ) ( get <object>: Get an item from inside the container. ) ( put <object>: Put an object into the container. ) ( desc <object>: Look at the description of the object in the container.) ( help: Print the help listing. ) ( Note that you can't get/put with a closed container, and you can only ) ( look/desc if the container is @set _transparent:yes. ) ( CONT_CHECK: ErmaFelna ) ( called by container-shell ) ( expects: container_dbref inside_dbref ) ( returns: container_dbref inside_dbref valid_flag ) ( Checks to make sure the container is 'valid': it points to a room that ) ( points back to it. The extra check is waived for wizards. ) ( CONT_HELP: ErmaFelna ) ( called by container-shell ) ( expects: container_dbref inside_dbref command_string ) ( Lists out the help file for the container program. ) ( CONT_LOOK: ErmaFelna ) ( called by container-shell ) ( expects: container_dbref inside_dbref command_string ) ( Lists all of the objects within a container. ) ( CONT_PUT: ErmaFelna ) ( called by container-shell ) ( expects: container_dbref inside_dbref command_string ) ( Puts an object into a container. ) ( CONT_GET: ErmaFelna ) ( called by container-shell ) ( expects: container_dbref inside_dbref command_string ) ( Gets an object out of a container. ) ( CONT_OPEN: ErmaFelna ) ( called by container-shell ) ( expects: container_dbref inside_dbref command_string ) ( Opens a container so other operations can be done with it. ) ( CONT_CLOSE: ErmaFelna ) ( called by container-shell ) ( expects: container_dbref inside_dbref command_string ) ( Closes a container up. ) ( CONT_DESC: ErmaFelna ) ( called by container-shell ) ( expects: container_dbref inside_dbref command_string ) ( Describes one of the objects in a container. ) 20) #29292 PUZZLE 'INSPECT' PROGRAM. __ JENORA _________ (NONE) [No documentation on this one, and my MUF isn't good enough to figure it out. It seems like it should display either the _insprop or the _insfail property of an object (depending on some condition I can't figure out). -- TA] 21) #31686 INVITE COMMAND _____________ JENORA _________ @LIST #31686=1-22 ( Invite: by ErmaFelna This program works along with the 'invite-lock' program to allow access through an exit by invitation only. The program can be run with the following options: #add: The default. Adds the named person to the 'invitation' list. #ban: Adds the named person to the 'banned' list. This only works if you control the room. #perm: Adds the named person to the 'permanent', or staff, list. This only works if you control the room. #remove: Removes the named person from all lists, subject to access restrictions as usual. #list: Lists all the people on the 'invitation' list. Also lists the other two lists if you have access. #help: Prints out a brief help message. If the person being added to the list is at the source of the exit, they will be sent the '_letin' message, so they will know the door is now open for them. ) 22 lines displayed. 22) #29549 PROPERTY LOOK-TRAP _________ JENORA _________ (NONE) [Appears to be the program that implements the LOOK action as described in the separate file ENVIRON.TXT. See that file for more information. -- TA] 23) #27837 POTION DOSAGE COUNTER ______ JENORA _________ (NONE) [Aparrently checks the doses prop of an object and decrements it to account for the drink taken, and returns the number of doses left. -- TA] 24) #46956 LOOKITEM ___________________ WIZ-DAEMON _____ (NONE) (Lookitem 7-22-92 Written By Fidget: ) (This program will print the name of the room that ) ( in which an item is located. The main reason ) ( this program was written is so the description of) ( the interior of a vehicle can contain the name of) ( the room the vehicle object is in. Since the ) (@6800 program is used so widely, the example : ) (for @desc here = @6800 %list[l] ) (set here = l5: %call[prognum,objectnum] ) ( for a description on l5........... ( where prognum is the number of this program ) ( without the '#' and objectnumber is the number of) ( the vehicle-object without the '#' ) (If you wish to customize the message displayed, ) ( you can set the prop _itemdesc: <desc>. The ) (characters %r will be replaced with the name of ) (the room. ) (If you have any questions, email me, Fidget... ) var idb (db # of room the passed exit is looking into ) var rname (string name of room looked into ) var itm (db # of the exit passed to this progam ) var output (The line that is displayed. ) ( %r in the line is replaced with room name ) 25) #46186 EXTRUDE-ITEM2.MUF __________ FOXX_FOX _______ @LIST #46186=1-80 ( Extract Item Version 2.0 -- By Foxx Fox 93 FEB 28 ) ( Property Summary : all props are on the 'ACTION' <trigger> or all <except 2> can be on a _proploc object. ---< props which can be put on ACTION ONLY >--- item/store * db of store room _proploc - db of place to look for properties ---< props related to item creation , <n>=integer >--- _proploc_ok - set to 'yes' on proploc object if owned by someone else. item/random? - set to 'yes' to extract random item item/ref# * number of items in reference list item/ref#/<n> * reference list for defined items item/<n>/&name * name of item number <n> item/<n>/< - list of propnames to be set on item <n> item/<n>/[prop] - [prop]=propname, set to value of [prop] on item ---< optional messages, defaults exist for all except those marked w/ 'x' > item/succ - msg for successfull extraction item/osucc - msg for " " <to others> item/fail - msg for requesting nonexistant item item/ofail x msg for " " " <to others> item/empty - msg for empty item storeroom item/oempty x msg for " " " <to others> -- Principle behind extract-item.muf: This is NOT a standard container program. It setup is something like this: +--------+ For this example let: | ACTION | +---------------------+ VENDOR = Fruit Basket +--------+ | STORE room | ACTION = pick . | |+--------+ +--------+| +---------------+ || OBJECT | | OBJECT || Example text in [ ]. | VENDOR object | |+--------+ +--------+| +---------------+ +---------------------+ The STORE room is ment to be a normally unused room containing a set of OBJECTs, all of which have their home set to STORE. What happends when ACTION is used? [ pick apple ] 1. The provided parameter [ apple ] is first matched against the names in the list 'item/ref#' ACTION <or proploc> to get an index number <n>. [ e.g. 'item/ref#/3:red apple', the index number would be '3' ] 2. Once an index is set, the program then looks for the STORE room using the property 'item/store'. 3. The contents of STORE are examined and the first acceptable OBJECT found is then selected as the item to be extracted. 4. The OBJECT's name is set using the property 'item/<n>/&name'. [ e.g. 'item/3/&name:a red juicy apple' .. note this is NOT item/ref#3 ] 5. Any properties put on OBJECT previously are erased. < this is done using a 'secret' property called "_/<" on OBJECT which simply contains the name of all the props which were put on OBJECT the last time it was used > 6. A list of properties to be added to OBJECT are found in 'item/<n>/<' The contents of this list is separated by ':'s. <note that all of the 'virtual properties' such as @desc, @succ,.. are refered to by their property equivilants, _/de, _/sc, ... The value of this property is copied to OBJECT as the property '_/<' <the so called 'secret' property> [ e.g. 'item/3/<:_food?:_food_bites:_/de' ] 7. Each property name '[prop]' in the property list is then added to the OBJECT using the value found in 'item/<n>/[prop]' [ e.g. 'item/3/_food?:yes' , 'item/3/_food_bites:3' , 'item/3/_/de:This apple looks very tasty, with no bruises or worms' ] 8. The finished OBJECT is then teleported to the user and all appropriate messages are displayed. < NOTE: if the property 'item/random?:yes' is set, then any parameter provided is ignored and an index is chosen at random from 1 to item/ref#. NOTICE: EXTRACT-ITEM.MUF has an EDITOR to aid in setting it up.. @name the action calling the program 'editor' to access it! 80 lines displayed. 26) #37200 Adv-Reset.muf ______________ Greywolf _______ @list #37200=1-53 (header 53 lines -- last updated 8/15/93 Adv-Reset.muf, programmed by Jordan Greywolf This program is meant to make the job of "adventure-makers" easier by having a means for resetting the adventure without having to set up a web of propsets and "summoning" actions. Also, it provides a means for protecting against having an adventure interrupted by someone else resetting it while you're in the middle. On the action: _adv/reserve?: yes -- If this is set, the "reserve" feature is activated. When this action is used, a timestamp is used and the name of the user is recorded. If someone else tries to use the action, it will check to make sure that things are "clear". If the current "user" is not awake at the time, the adventure may be reset. Otherwise, if the following two properties are set, other checks may be made: _adv/delay: -- {time in seconds} If this much time has elapsed since the timestamp from the previous user, the adventure may be reset. _adv/rooms: -- {list of rooms, separated by spaces} If the reserving user is not present in any of the listed rooms {i.e. within the adventure} it is considered safe to reset the adventure. _adv/announce: -- {text} Message displayed to rooms in adv_rooms when game is reset. "%user" is replaced with name of current user. _adv/sweep?: yes -- Area will be sweeped of all non-homed objects/players. Will only be activated if both adv_announce and adv_rooms are set. _adv/sweepto: -- {db#} Location sweeped items/players will be moved to, unless set "_adv/gohome?:yes" _adv/fail: -- displayed upon failed attempt to reset game. "%user" is replaced with name of current user. _adv/succ: -- displayed upon successful reset. _adv/osucc: -- displayed to others in room. ----- _adv/move: -- {list of items, separated by spaces} Pairs of items and locations are stored here. Upon resetting the adventure, the items are moved to the specified locations. For example, if adv_move is set as: 25517 20846 36100 7720 ...upon running the action, object #25517 will be moved to location #20846, and object #36100 will be moved to location #7720. As a destination for an object, "here" or "me" can be used. ----- _adv/propset/{n}: -- A number of these properties may be set up. Each one will reset a property to the specified value on the specified object, in the format of: {db#} {property}={propsetting} Note: If multiple db#s are indicated, separated by semi-colons {;}, then *one* of those db objects will be randomly selected from the list. If multiple *values* are separated by %| , one will be randomly used. _adv/delimiter: -- If this is set, the "=" delimiter for adv_propset may be replaced with whatever character is desired. {This is a precaution in case the user may desire to reset properties that have "=" in their names.} ----- _adv/moveto: -- If this is set, the user will be moved to the specified location. ) 53 lines displayed. 27) #12562 COM.MUF ____________________ GREYWOLF _______ @LIST #12562=1-5 (header, 7 lines -- Com.muf, programmed by Jordan Greywolf This is the "next generation" of my CB.muf program, tailored for simulating a non-portable com unit meant to be handled as a global "com" command stored in the environment, for use with vehicles. For help, link an action "com;switch;squelch" to this program and type "com #help". For a portable "CB", attach such an action to yourself or to an object, and link it to this program. It can also be aliased 'cb'.) 7 lines displayed. 28) #37258 DELAY-LOCK.MUF _____________ GREYWOLF _______ @LIST #37258=1-18 (header 25 lines -- Delay-Lock.muf, programmed by Jordan Greywolf This program contains several sub-programs in one -- Prop settings on the action determine which feature will be used. ----- {Delay - lock. Default feature} This program allows an action to be unusable for a set time period after the last time it was used. delay: -- time in seconds that must elapse since last usage for action to be usable again timestamp: -- set by program, with systime at last usage ----- {Random - lock. @set action=randlock?:yes} Will return a "1" on a random chance, x in y, where x and y are set by: rand_x:{x} {default: 1} rand_y:{y} {default: 1} A random number between 1 and y will be generated, success being if the value is equal to or less than x. ----- {Awake - lock. @set action=awakecheck:{db#} } If player indicated by "awakecheck" prop setting is awake, a "1" is returned, otherwise a "0". 18 lines displayed. 29) #37505 DIG.MUF ____________________ GREYWOLF _______ @LIST #37505=1-34 (header 34 lines -- Dig.muf, programmed by Jordan Greywolf This program is primarily meant for use in "adventure games", but it might possibly have some general amusement value as well, when combined with bury.muf. The "dig" command allows one to use a digging implement to "uncover" objects "buried" in the room or possibly in an object. Props on room/environment: _dig/alias: {list of words} -- If person tries to dig "in" something that isn't found, program will check environment to see if the word used for the "soil" is contained in this list, separated by spaces. If a match is made, it assumes the person meant "here". dig_ok?: yes -- indicates user may dig here dig_fail: -- used to override default message when user can't dig here dig_need: -- what does user need to dig here? Possible settings: hands -- may dig with "hands", "paws" or "claws" or any valid implement shovel -- may dig with any "shovel" tool. {c.f.} {list} -- a list of specific items {db#} that may be used dig_succ: -- message upon successfully digging up an item. %object is substituted with the name of the item dug up. dig_osucc: -- message displayed to others dig_contents:-- list of items "buried" in room. A "0" or a null string indicates that nothing is dug up. The last item on the list is the first to be "dug up". dig_propset{n}: -- A number of these properties may be set up. Each one will reset a property to the specified value on the specified object, in the format of: {db#} {property}={propsetting} These props are triggered upon successfully digging something up. dig_delimiter: -- If this is set, the "=" delimiter for dig_propset may be replaced with whatever character is desired. {This is a precaution in case the user may desire to reset properties that have "=" in their names.} On "tool" used: tooltype: -- If the dig_need is set "shovel", then "shovel" must exist 34 lines displayed. 30) #32249 DriveTo.muf ________________ Greywolf _______ @list #32249=1-66 ( header, 66 lines -- Driveto.muf, programmed by Jordan Greywolf This program is designed to be used in conjunction with objexit.muf to give the illusion of a "vehicle", but only within rooms that have been set "vehicle_ok?:yes". The action is called in the form {action} {destination}. Properties to set on action: _bike?: yes {sets up the vehicle as a "bike" vehicle -- the object has to be carried by the user, and the user is directly teleported, rather then the object itself.} _drive_{destination}: {room db# object is sent to if a match is found} _drivemsg_{destination}: {message displayed to all "inside vehicle"} _drivein: {number{s} of room "inside vehicle" - default is location of action. For multiple rooms, separate by spaces. Example: "_drivein: 20846 7720 31600"} {This is used to determine where the _drivemsg messages will be displayed.} drive_odrop: {message displayed to others in room upon arrival, prepended by user's name} {can be set on room to override vehicle setting} drive_osucc: {message displayed to others in room that object leaves, prepended by user's name} object: {object db# that serves as the "vehicle" moved by this action} --- less important stuff --- _drive_ref: {db#} {in addition to destination settings set on the trigger, vehicle room, etc., the db# indicated here will also be checked if it fails to find a matching "destination" or message. The target db# must have the same owner as the trigger, or have _drive_ref_ok:yes set.} nodest: {optional -- error message if user does not specify a destination} cantgo: {optional -- error message if no such destination is available} drive_change:{if this is set, the room db# specified by this property will have the property "_driveloc:" set on it with the name of the room where the "vehicle" is currently located.} _drivecode: {optional -- If any room has this property set on it, the drive action must have a matching property in order to be valid there. This is so you can lock out unwanted vehicles. If _drivecode set on the room is "owner", then the action will work only if the owners of the action and target room are equal.} Note: _drivecode and _drive_{destination} properties are checked for in the environment of the destination room. In drivemsg, drive_odrop and drive_osucc messages, "%vehicle" is replaced with the name of the vehicle. _drive_env?: yes {if this prop is set, the drive action is assumed to be installed in a parent room. Instead of checking the *action* for ownership, the *room* from which the player uses the action is checked instead.} _drive_compass?: no {Normally, if someone types "drive north", "drive south", etc., it will be substituted with "drive n", etc. To turn this feature off, set this property "no".} _drive_local?: yes {if a search for _vok? exits is made, and no match is found in object's room, will check *user's* location as well.} --- props to set on driveable exits: vehicle_ok?:yes -- if this is set on an exit, a vehicle may "drive through" it, but only as long as the exit is attached to the room {it may not be in the environment} and it leads to a vehicle_ok?:yes room. _drivemsg: {text} -- Message displayed to passengers of vehicle upon using exit. dmode: {setting} -- If set on the exit, the vehicle object must have the same setting to use this exit. If not set, any setting on the object other than "land" will prevent passage. Standard settings are: air water land any {allows *all* settings} *** DISCLAIMER: This program is supplied as-is. It's a very old, not-very- user-friendly program from my early days of programming. No warranties expressed nor implied. If these docs aren't enough, you're on your own. 66 lines displayed. 31) #45886 ECHO-SAY.MUF _______________ GREYWOLF _______ @LIST #45886=1-17 (header, 17 lines -- Echo.muf, Programmed by Jordan Greywolf A "say" action linked to this program may be set up in a "cavern" environment, giving a slight 'echo' effect to any speech there. In order to use this action in a more generalized environment, setting echo_ok?: on the particular room {or environment} to yes or no will enable/disable the echo feature, respectively. In order for this to work, @set _make_say: 33314 on the action calling this program. Also, as an added feature, you may have speech "echo" into another room. On each room: @set here=_echo/target:{db# of listening room}. The target room must share ownership, or else be set "_echo/receive?:yes". In the target room, you can format the received message with _echo/format. %m is the message. %n is the name of the speaker. %loc is the location the speaker is in. 15 lines displayed. 32) #35858 EVENT.MUF __________________ GREYWOLF _______ @LIST #35858=1-67 ( header 67 lines -- Event.muf, by Jordan Greywolf -- updated 27 Aug 93 Special thanks to Khars for inspiration for this program. Event.muf is meant to give the illusion of timed processes for "events" to give atmosphere to an area. This illusion is maintained by making "invisible" calls to the lock program {#36215} on various commonly-used actions, such as a "say" or "pose" action in your environment, or even exits. When the exit is used normally, this "trigger" will be set off. The program checks for a "_ref" prop on the triggering action, which contains the db# for a room or object where you may store props used by this program. This "reference object" is where you store the list of events, rooms, and other information detailed hereafter. : To trigger this program via a @lock on an item, @lock the action/exit/etc. to #36215, which serves as a "shell program" for this one. : On the trigger action: _ref -- # for room, thing or exit/action that will be referred to for the information necessary to set off the "event". This is referred to as the "ref room", though it need not actually be a room. You can store props for this program on any valid db object that you own. : On the ref room {or thing or action}: _event/rand -- On a 1 in {x} chance {default is 1} upon calling this program, the "event[s]" will be triggered. _event/rooms -- List of rooms {include room numbers, separated by spaces} {example -- _event_rooms: 7720 31600} _event/delay -- minimum time in seconds between "events" {default 120} event/last -- set by program -- last systime event was triggered _event# -- Number of possible events. _event#/{#} -- List of events -- Upon a successful "trigger", one of these items will be selected, and the text will be displayed in each of the affected rooms. NOTE: To use lsedit to edit a list of events on the room, use: "lsedit here=_event". : ----- The following optional features may be triggered as part of an "event" in addition to a displayed message or instead of one: event/move/{n}: -- {list of items, separated by spaces} Pairs of items and locations are stored here. Upon resetting the adventure, the items are moved to the specified locations. For example, if event_move is set as: 25517 20846 36100 7720 ...upon running the action, object #25517 will be moved to location #20846, and object #36100 will be moved to location #7720. **WARNING: If you are using movements in your event setup, do not have program calls in a "look" action or on the arrive/depart of a room. ----- event/propset/{n}/{x}:-- A number of these properties may be set up. Each one will reset a property to the specified value on the specified object, in the format of: {db#} {property}:{propsetting} ----- _event/lock -- if "yes", then a trigger will only work if owned by the owner of the "ref" item. : On the affected rooms: _event/delay -- Requires this number of seconds to pass for a message to appear in that *particular room*. If this number is less than the _event_delay setting for the "master" reference location, this might not mean much. _event# -- If this is set, it will override the "default" settings in the ref room for this particular room. _event#/{#} -- Ditto. _ref/ok -- list of db#s. If the affected room and the ref object are not owned by the same player, then the value of the ref object will have to be found in the string contained by this prop on the affected room. A list of such values may be included, separated by spaces, without '#'s. : NEW FEATURE: If, in an event message, "%n" is encountered, the program will randomly select the name of one player in the room {asleep or awake}. 66 lines displayed. 33) #36215 EVENT-SHELL-LOCK.MUF _______ GREYWOLF _______ @LIST #36215=1-60 (header 60 lines -- Event-Shell-Lock.Muf, by Greywolf -- works with Event.muf #35858 -- updated 7/16/93 : --- How to set up your own "events" --- Event.muf is designed to simulate randomly timed "environment" events that do NOT require background timed processes to function. How this works is through the use of "triggers". What you can do is to set up various common actions {room exits, a "say" command, a "pose" command, a "look" command...} to be @locked to this program. Whenever such a "trigger" exit is used, this program will be called, and it will check to see if enough time has passed since the last event -- If so, it will generate an "event", broadcasting a message to all appropriate rooms ... and then the control will return to the original trigger exit. If the person was using a room exit, he will move through the exit normally. If the person was speaking, whether or not an event was triggered, her speech will be heard normally. The beauty of "triggers" is that they are "invisible". You can have a "trigger" set up clear across the MUCK which will affect an event somewhere else. : In order to more simulate the illusion of timed events, you want to have a number of "triggers" set up over a wide area. Setting up "say", "pose" and/or "look" actions @locked to this program in your environment room is one way to accomplish this. Now, to set up a room with "events" in it... : First, you will need a "ref" location where you will store properties required by this program. This location could be a room, an exit, an object, yourself ... any db object you have access to. On this location, you may use lsedit to make a list of "events", such as "A bird flutters by overhead", or "A squirrel chatters at you from a tree branch." {for help on lsedit, type "lsedit #help"} This location {referred to as "ref" for simplicity} will also contain other information -- To set the time delay in seconds between "events", set "_event/delay" on the ref location. The default is 2 minutes {120 seconds}. Also, you will need to set up a list of rooms in which these messages will be displayed. : For example, if you want to send messages to rooms 12345, 54321 and 15432, set the following prop on your "ref" location: "_event/rooms:12345 54321 15432" : All rooms should be owned by you. If you want to send a message to a room not owned by you, its owner must set a prop on that room, "_ref/ok", which will contain the db number of your player, thus giving you permission to "broadcast" to that room. If you want to have a message randomly select a name of somebody in the room at the time, you can include "%%random" somewhere in the text of an event message. : In each of the rooms where you are sending these events, you can override the "default settings" you set in your "ref" location, by setting _event/delay settings and _event messages on that room. To set a list of events for a room, type "lsedit here=_event". An _event/delay setting on a sub-room will only have any meaning if it is a LONGER delay than that set on your "ref" location. : Now, to the triggers. You want lots of triggers in various places. To set up a trigger, take any action and "@lock {action}=#36215". Then, "@set {action}=_ref:{ref}", where "{ref}" is the db# of your ref location, where you are storing the props used by this program. The owner of the trigger and the owner of a ref location NEED NOT be the same. Therefore, you could possibly get friends to set up exits in their areas as "triggers" for your events. 60 lines displayed. 34) #52097 INDEX.MUF __________________ GREYWOLF _______ @LIST #52097=1-24 (header, 24 lines -- Index.muf, programmed by Jordan Greywolf This program is designed primarily for use with the "programs" global. If the action is called in the format of "{action} {text}", it will search a list of properties on the action {or a reference object indicated by _proploc} for any and all matches, displaying additional information. Props to set on action: _proploc: If set, the prop/info list will be searched for on the db object indicated. _proplist: name of property list to be checked. Example, if this is set to "item", then the list of "item1"..."item2"...etc. will be searched. If not set, default setting is "index_". "/#/" will be tacked on, such as: "index_/#/1" "index/#/2", etc. _infolist: name of property list to be referenced if a match is made. If the text string is found in a property "{propname}{n}", then the information in "{infopropname}{n}" is displayed, where "{infopropname}" is set by this property. Default setting is "info_". _pagemode?: yes -- If set, allows multiple "pages" of info or prop listings, in format of "item_1/#/1", the first number being the "page", the second being the "item #". _index: displayed if no text is specified. Program calls are valid. _showstring?: yes -- If set, the string in which a match was found will be displayed before the corresponding information. 23 lines displayed. 35) #28771 INTERCOM.MUF _______________ GREYWOLF _______ @LIST #28771=1-26 (header 26 lines -- Intercom.muf, Programmed by Jordan Greywolf The purpose of this program is to allow an "intercom" to be set up in much the same way as the broadcast program, except that optionally a check may be made to see that the "intercom" is turned on or off, and it is possible that the message broadcast may be heard from a mobile object rather than just in a fixed room. On action: com_fail: Message to user if the intercom is "off". com_switch: off -- If this is set, the intercom will be "off", not functioning. com_msg: Message format displayed to user. Any occurrence of "%text" is replaced by the text of the message. com_omsg: Message format displayed to people in same room as "broadcaster". com_bmsg: Message format displayed to people in target room{s}. %text and pronoun substitutions are made. com_send: Room{s} that broadcast message is sent to, separated by spaces. Example -- com_send: 20846 7720 22157 On room: com_ok?: yes -- Unless room is already owned by owner of action, the room must have this set for the message to be displayed. If the target is an object, the object must share ownership or have this setting as well as the room in which it is located. com_tattle?: yes -- If the room has this setting, any broadcasts into the room will prompt the following message to be displayed: "[Broadcast by %n]" -- where %n is substituted with the *name* of the broadcaster. 26 lines displayed. 36) #35719 MIRROR-HACK.MUF ____________ GREYWOLF _______ @LIST #35719=1-9 (Mirror-Hack.muf, header 9 lines Hacked by Jordan Greywolf. Originally by Bunny. Include a call to this program in the @desc in the form of: @desc {object}=@49514 {text.... text....} %mirror {... text} It is at the point of the occurrence of "%mirror" that the reflection of the user will be inserted. 6 lines displayed. 37) #42833 MULTI-COMMAND.MUF __________ GREYWOLF _______ @LIST #42833=1-32 (header 32 lines -- Multi-Command.muf, programmed by Jordan Greywolf Last Updated: 5/19/93 This action is meant to allow a single action placed in your room or environment to handle a variety of simple "actions", based on the name actually typed in. This is a very primitive form of the planned program, and features are likely to be added later -- Attempts will be made to make this backwards-compatible, but if problems crop up, contact Greywolf. The ideal setup is that you can create an action, say, "jump;sit;laugh", linked to #42833 {this program}, then set the appropriate props so that if you type "jump", it will say "You jump." Sit -- "You sit". etc. This would be with osucc messages and possible program calls in the succ message as well. Later versions will hopefully allow locks on each action. Props to set on action: _mc/lock_{com}:{text} -- lock string to set on action to test when called. _mc/call_{com}:{db#} -- leave out the "#". If used, it will call the program and pass along anything on the stack. This is executed *after* the succ message. _mc/succ_{com}:{text} -- displayed when {command} is typed in. Program calls are allowed. If you want no message to be displayed, set to "@0". If no such prop is found for {command}, it will give the standard "Huh?" failure message. _mc/osucc_{com}:{text} -- displayed to others in room. _mc/fail_{com}:{text} -- displayed if action is locked out. _mc/ofail_{com}:{text} -- displayed to others. _mc/alias/{n}:{word}={list of words} -- If command name is in list of words on right side, it is substituted with value on left. Props to set on room/environment: _mc/ok_{com}:no -- Locks out use of this "action" in the particular room/environment. If set "huh", gives "Huh" message. 28 lines displayed. 38) #32153 OBJEXIT.MUF ________________ GREYWOLF _______ @LIST #32153=1-15 ( header 15 lines -- Objexit.muf, programmed by Jordan Greywolf An exit linked to this program will take the user to the location of an object specified. The owner of the action and of the target object must be the same. The object must be in a room set '_vok?:yes'. If the target room is set 'noexit:yes', the exit attempt will fail. Properties on action: goto: {target object #} {if not set on action, a prop on the room in which the user is located will be checked} exit_osucc: {displayed to others in car when passenger uses exit} exit_drop: {message displayed to passenger upon arrival} exit_odrop:{message displayed to others upon arrival} exit_fail: {message displayed to passenger if target room is noexit:yes} exit_ofail: {message displayed to others if target room is noexit:yes} 14 lines displayed. 39) #11145 OPTION.MUF _________________ GREYWOLF _______ @LIST #11145=1-107 ( header 107 lines -- Option.muf, by Jordan Greywolf -- last updated 7/13/93 WARNING: This program utilizes the "command @" variable as a storage space, so problems may occur if this program is called by or calling other programs that require use of this variable. Propnames are listed as "opt_{field}_..." etc., but different formats are supported. You may precede a prop with a "_" for a protected prop {which will have precedence}, and you may optionally substitute "/" in the propname so that you can utilize subdirectories. An example of the hierarchy would be: _opt_propset_foobar: _opt/propset/foobar: opt_propset_foobar: opt/propset/foobar: This is a monster do-all program that allows various props to be set, objects to be moved around, etc. based on what "selection" one types after the action name. Optional setups allow for a "toggling" action {cycles through various settings} as well. optionprop: property to be altered by the program {optional -- this program will still function even if no property is altered.} optionchange: room, object, etc. that the property to be changed is attached to. If none is specified, the default is the room to which the trigger action is attached. option{selection}: string which the altered property will take if selected optiondefault: ... if none is selected. ----- messages ----- optm{selection}: displayed to user {optional} optom{selection}: displayed to others in room {optional} prepends user name {for optm and optom, "%option" will be replaced with the selection name} {"%setting" will be replaced with the option{selection} setting.} optmd: displayed to user {default} optomd: displayed to others {default} prepends user name optfail: message displayed to user if a wrong selection is made ----- The following features are based on those in Adv-Reset.muf, and are all optional, only being used if the appropriate properties are set. ----- opt_message:{list of db#s}={text} Displays message in each room listed, as long as room is owned by owner of action. Standard pronoun subs are made, "%n" is replaced by user's name, name is *not* automatically prepended, and replacements of %option --> {selection} and %location {name of location} are done. In db list, "here" is substituted by user's location. ----- opt_message_{selection}:{list of db#s}={text} Identical to opt_message, but specific to a particular selection. ----- opt_move_{selection}:-- {list of items, separated by spaces} Pairs of items and locations are stored here. Upon using the selection, the items are moved to the specified locations. For example, if opt_move_{} is set as: 25517 20846 36100 7720 ...upon running the action, object #25517 will be moved to location #20846, and object #36100 will be moved to location #7720. Normally, spaces are used, but . , or - will be treated the same. "me" will be replaced by user's db#. "here" will be replaced by user's location. ----- opt_alias{n}:{selection}={list of words} -- If the option typed is included in the list of words on the right hand side of the = sign, it will be replaced with the value on the left. ----- Note: in text, %%selection will be replaced with {selection}. Warning: If you make use of this feature, there is the chance that a user typing in an "=" or ":" as part of the selection *might* cause errors. For this reason, you might want to filter out those characters. {c.f.} opt_propset{n}_{selection}:-- A number of these properties may be set up. Each one will reset a property to the specified value on the specified object, in the format of: {db#} {property}={propsetting} -or- {db#};{db#};... {property}={propsetting} opt_delimiter: -- If this is set, the "=" delimiter for opt_propset may be replaced with whatever character is desired. {This is a precaution in case the user may desire to reset properties that have "=" in their names.} ----- opt_moveto_{selection}:-- If this is set, the user will be moved to the specified location. Destination room must be owned by owner of action OR be set link_ok and jump_ok OR the target room must have the following prop set: _opt_permit: {list of db#s} -- The db # of the player must be included in this property on the target room if the previous conditions are not met.} opt_odrop_{selection}:-- Message displayed upon user arriving at destination. User's name will be prepended to message, with normal pronoun subs. %from is substituted with the name of the place the user came from. opt_odrop:-- Default "@odrop" message. "%%selection" is usable here. ----- opt_summon:{db#} {here}-- If this is set, the appropriate object will be moved to user's inventory. Must belong to owner of action. If string "here" is added after db#, object will be summoned to user's location instead. ----- opt_toggle: {integer} If set {only a value of 2 or greater is meaningful}, every time action is triggered, and no option is specified, the action will cycle through selecting a numeric selection, starting at 1, ending at the value listed here, then cycling back to 1 again. opt_lockout?: yes {any settings indicated after typing the action will be ignored. This is mostly used if you want a single command that toggles between different settings. The setting will be "default".} ----- opt_failsetting: {setting} If this is set, and no matched "setting" is specified by the user, the program will substitute this setting and will proceed to make propchanges, etc., appropriately. ----- opt_match?: yes If set, the text typed as "option" will be used for a match on the user's environment. If a match is made, the db# is used as the "selection". ----- opt_filter: {string} Will filter out any occurrences of word listed in string, separated by spaces. 106 lines displayed. 40) #44926 PARROT-HACK.MUF ____________ GREYWOLF _______ @LIST #44926=1-62 (header, 62 lines -- Parrot.Hack.muf, hacked version of Parrot.muf, by Khars <malcolmc@spider.co.uk> Revised with added features by Greywolf -- No warranty expressed nor implied *** NOTICE *** If a room or environment has "_parrot/shutup?:yes" set on it, parrots will not speak/pose while in that room. Instructions: To create a "parrot", create an object to serve as the "parrot", set it J, and attach a "say" action to it, linked to this program. Any exits that the parrot will be allowed to go through {following people} should be set _parrot: {# of parrot}. The parrot has a random chance of "learning" what is said in its presence, learning up to 15 different phrases {default}. It will also store the name of the person who said that remark. On "parrot" object: _puppet?:yes -- REQUIRED parrot/max: -- max # of statements the parrot can memorize. Default is 15. Max is 30. parrot/posemax: -- max # of "actions" on the parrot. _parrot/delay: -- # of seconds between actions/statements. Default: 10 _parrot/mode?: no -- If not set, "parrot" defaults will be used for when the parrot speaks. If this is set, the object's name will be used. _osay: -- If not in "parrot" mode, "says," will be replaced with this. parrot/follow: no -- If set, parrot does not follow players out of room parrot/follow: always -- If set, parrot *always* follows whoever leaves room. parrot/succ: message displayed when parrot follows user of trigger. parrot/osucc: message displayed to others in room that parrot leaves. parrot/odrop: message displayed to people in room that parrot arrives in. {pronoun subs are made. %user is replaced with the name of the person the parrot is following} parrot/wander: if "yes", parrot will wander upon every "trigger". Otherwise, will wander once in every {n} chances, where {n} equals the setting. The parrot may wander through exits set _robot_ok?:yes. parrot/env?: If "yes", props for the pose feature will be checked with an envpropstr rather than getpropstr. If you don't know what this means, don't mess with it. On room/environment: _parrot_ok?: yes -- If not set, the parrot cannot "learn" anything said in its presence. It will still function normally otherwise. On exits {if the parrot is meant to move through them}: _parrot: {#db of parrot object} {@lock exits to this program} On "say", "pose" or "say;pose" action attached to parrot: _learn?: no {anything said/posed with this action will not be "learned"} _react?: yes {if set, the parrot may "react" to keywords...} Keyword Reactions -- Set the following props on the parrot if you want it to be able to respond to certain keywords. _parrot/filter: {list of words separated by semi-colons, which will be "filtered" out of what was said before checking for keywords} {usually "the;a;is;at", etc.} _parrot/subst/{n}:{item}={item;item;item} {list of substitutions to be made} {example: "where=where is;which way is;where can I find;which way to..."} _parrot/key/{n}: {list of "keywords" -- If these words appear, may get reaction} _parrot/react/{n}: {reaction message to matching keyword} 55 lines displayed. 41) #41241 RAND-EXIT.MUF ______________ GREYWOLF _______ @LIST #41241=1-33 (header, 33 lines; Rand-Exit.muf, programmed by Jordan Greywolf This allows a single "exit" to provide either a "random exit" or else multiple links depending upon what "destination" is selected, in the form of "{action} {destinationname}". Props on action: rand_exits: {list} -- List of db#s from which the destination is randomly selected. Separate with spaces {i.e. 20846 7720 31600} rand_match?: yes -- If set, a fail occurs if no match is made with the exit_{s} props. {c.f.} rand_fail: -- fail message rand_prop: -- if set, the program will instead look for a numerical string value stored in a property specified by {rand_prop} rather than randomly generating a number, this value determining which item in the {rand_exits} list is selected. This may be used in conjunction with Option.muf or Khars' propset to make a "selectable" exit. exit_{s}: {db#} -- if set, and {s} equals the text typed after the action, the room specified by this prop will be the destination. exitsucc_{s}: -- success message exitosucc_{s}: -- osuccess message exitodrop_{s}: -- odrop message {Note: If it is a randomly selected or by-number exit, if {s} equals the number of the exit on the list, it will display the appropriate message. So, you could have exitsucc_1, exitsucc_2, etc.} exitodrop: -- generic "odrop" message used as a default On target room{s}: rand_jump: {list} -- The jump will be successful if either the db# of the exit used, the owner of the exit or the room from which the jump takes place is found on the list. This match is necessary unless the target room is link_ok, or the owner of the exit equals the owner of the target room. 30 lines displayed. 42) #58411 ROUTE.MUF __________________ GREYWOLF _______ @LIST #58411=1-43 (Route.muf, header 43 lines -- programmed by Jordan Greywolf This program is similar in structure to event.muf, in that this program operates by having various actions scattered around {or a "say", etc. action located in the environment} locked to this. When the action is activated, this program will operate "invisibly", not interfering with the normal operation of the trigger. When this is triggered, a proploc indicated on the trigger action will be referenced for the props used by this program. If enough time has passed since the last movement, a specified object will be moved along a predefined route, with accompanying messages being displayed as desired. The primary purpose of this program is to allow for a vehicle to follow a regular route, such as a bus, train, or airliner. Props to set on trigger: "Triggers" consist of actions, exits, etc. that you own that you may @lock to this program. The more that are used, the more smoothly this program will run, if people use the action{s} frequently. _ref: {db#} -- proploc referenced for props required for this program. Props to set on reference/proploc: _route_delay: {i} -- number of seconds that must pass between each step in the "route". {default setting -- overridden by following} _route_delay_{n}: {i} -- number of seconds before next step {optional} route_pos: -- This is set by the program, indicating at what point on the list the vehicle/object is on now. _route_loc_{n}: {db#} -- db# of room that object will visit at the nth step on its route. _route_object: {db#} -- db# of object that will be moved along the route. It must be set J, just as all rooms along the route must be. _route_osucc: {msg} -- message displayed to all in any room the object leaves. _route_odrop: {msg} -- message displayed to all in room object arrives in. _route_msg_{n}_{x}: {db#}={msg} -- "n" represents the number of the position on the route, and a number of such props {numbered by "x"} may be set. In the room on the left of the "=" sign, the message will be displayed. Props to set on route rooms: Each room must be set "J". Also, if the rooms do not belong to the owner of the reference location and object... _route_ok:{db# list} -- For a message to be displayed in the room, the db# of the reference location must be listed. NOTE: Leave out all # signs in props that call for a db#! Also, due to the setup, if this does not work, there are no error messages to help you figure things out. 39 lines displayed. 43) #67396 RIDDLE.MUF _________________ GREYWOLF _______ @LIST #67396=1-28 (header, 28 lines -- Riddle.muf, programmed by Jordan Greywolf This program randomly selects a question from a list of questions stored on the action, then expects a response. The intended setup is thus: First, have the _Arrive in the "puzzle room" linked to this program. Thus, entering this room will trigger the program, randomly choose a puzzle, and display it to all in the room. Then, in the room, install an action called "say", linked to this program. If the person answers the riddle correctly, a prop will be set on the room called "riddle/solved?:yes". If this is already set, further speaking or entering this room will not trigger the questioning sequence. On the room, set the following props: _riddle/q/#: {number of questions to choose from} _riddle/q/{n}: {riddle} _riddle/a/{n}: {answer};{answer};{answer}... {You can have several possible answers, separated by semi-colon} _riddle/msg: {message to all in room upon entering and being questioned. %riddle will be substituted with the text of the riddle.} _riddle/succ: {message upon successfully answering question} _riddle/fail: {message upon failure at answering question} _riddle/failed: {message if player, somehow still in room, continues to try to answer question after failing} _riddle/sweep: {location player is swept to upon failing} _riddle/filter: {list of words separated by semi-colons, which will be "filtered" out of what was said before checking for keywords or answer} {usually "the;a;is;at", etc.} _riddle/subst/{n}:{item}={item;item;item} {list of substitutions to be made} {example: "where=where is;which way is;where can I find;which way to..."} 28 lines displayed. 44) #25984 RUNAWAY.MUF ________________ GREYWOLF _______ @LIST #25984=1-44 (header, 44 lines -- Runaway.muf, programmed by Jordan Greywolf This program was originally meant for a program where you're trying to chase down some elusive critter. => To set things up- - First off, you might want a room where somebody can go into to start off the whole chase. This is meant mainly for a one-person chase, so the critter won't enter a room that has any players in it. - @set here=_Arrive:#25984 @set here=_runaway/wontgo?:yes @set here=_runaway/present?:no @set here=_runaway/message:{text of what happens when you enter this room - and it prompts the critter to appear or run away} @set here=_runaway/object:{db# of object we're testing for -- the "critter"} @set here=_runaway/destination:{db# of room critter runs to} - Now, on successive rooms where you manage to catch up with the critter and enter the room, set same props as appropriate, except: - @set here=_runaway/present?:yes - What this means is that, the first room assumes the critter *won't* be in the room where you set this off. He'll be in an adjoining room for our purposes. However, where you have _runaway/present?:yes set, the message and all will only be triggered if the critter is in the same room. - If the destination room has somebody in it, the creature will simply run away to its home {wherever its link is set}. - Also, let's say that at the end of the "hunt", there's a chance you can actually enter the room without the critter running away, if you have a proper object and some props are properly set... On that room, set: - @set here=_runaway/key:{db# of object needed} @set here=_runaway/set1:{db#} {propname}={setting} @set here=_runaway/keymsg:{text of what happens *instead*} - {other stuff } - @set here=_runaway/willgo?:yes {if set, critter *will* move even if people are in room} @set {critter}=_runaway/msg:{message when critter bounds away. %loc is substituted with name of location critters goes to.} @set {critter}=_runaway/arrive:{arrival message} @set {critter}=_runaway/arrive/{room#}:{for *specific* room} 43 lines displayed. 45) #52356 SCORE.MUF __________________ GREYWOLF _______ @LIST #52356=1-50 (header, 50 lines -- Score.muf, programmed by Jordan Greywolf An action may be @locked to this program, only succeeding if several conditions are met, which are specified by props set on the action. These conditions can involve particular prop settings on objects or locations of objects. Props to set on action: _condition/{n}:{item#} {prop}={setting} The item# should be the object's db#. {do not use a # sign.} If "me" is substituted, the person triggering the action will be used. If "here" is substituted, the location of the user will be used. The "prop" indicates a property that will be referenced. However, if "@loc" is indicated, it will test the object's location instead, "@lloc" is the object's location's location. _startscore:{value} initial value for "score". Default is 0. _score/{n}:{value} For each condition that is met, the appropriate "score" is added. Negative scores are permissable. Default score is 1 per condition. _succ/{n}:{text} If set, this message will be displayed upon this condition being met. _osucc/{n}:{text} _fail/{n}:{text} If set, this message will be displayed upon this condition not being met. _ofail/{n}:{text} ----- _rating/{n}:{value} {text} A 'rating' variable will be given a text value depending upon the 'score' tallied. Make sure that the rating props have progressively higher score values, or weird things may happen. If the player has this score or more, this will be his 'rating'. {Examples may be to assign the player titles of "Novice", "Adventurer", "Expert", "Master Adventurer", etc. _minimum:{value} If the score is less than this value, a "0" will be returned by this program, indicating failure. Default value is 1. _succmsg:{text} Displayed if minimum score is met. _succomsg:{text} Displayed to others if minimum score is met. _failmsg:{text} Displayed if minimum score is not met. ----- _result:{text} This message is displayed at the end. The following substitutions are made: %score : the total score %rating : the assigned "rating" ----- miscellaneous feeps ----- _succmove: {list of db# pairs} Sample setting -- 24567 7720 54121 20846 If executed, object #24576 would be moved to #7720, and #54121 to #20846. This only occurs if the _minimum score is attained. 49 lines displayed. 46) #67962 TREASURE-THIEF.MUF _________ GREYWOLF _______ @LIST #67962=1-13 (Steal-Item.muf -- programmed by Jordan Greywolf This is a special-purpose program to simulate a "thief" that may steal items from players present in room, then return to his/her "base". On location/environment, set: _steal/thief:db# of thief object _steal/ok?:yes On thief item: _steal/items:item{s} thief will steal _steal/msg{db}:message displayed when item is taken, prepended by Thief's name. %from is substituted by name of location item is stolen from. _steal/msg:default message, %item is sub'd by item name _steal/homemsg:message when thief arrives at its home. 12 lines displayed. 47) #36002 WINDOW.MUF _________________ GREYWOLF _______ @LIST #36002=1-43 ( header 43 lines Window -- Greywolf's Window Code Displays the room through an exit which is "linked" to an object, meant for use with the Objexit.muf program. Also, may be used to allow a "window" to show the contents of multiple target rooms. This "window" may be set on an exit, room, object, etc. This program can be called through a @ call on an exit {to this program}, or it can also be used with look-trap. On the trigger {or room, for look-trap}, you can set a "show" prop, which will determine what elements of the target room will be shown. For example, the default would be -- show: ndc. "n" shows name, "d" shows description, "c" shows contents, and "s" shows the success message. Other props needed or optional: goto: {db # of object that exit is "linked" to -- must be owned by owner of action. May also be set to a specific room.} _drivecode: {optional -- if this property is set on the room in which the object is located, the properties must match. If _drivecode: in the target room is set "owner", then the owners of the room and the action must be equal} _lookfail: {message displayed if unable to see contents of room} goto_list: {list of db objects/rooms} Optional, to be set for "multiple windows", in lieu of the single "goto" setting. Nothing will be visible unless the target room {or its environment} is set vehicle_ok?: yes OR look_ok?: yes Also, for compatibility with look-trap: A line can be in the format of -- @{prog} #{dbnumber} {text} This will treat the item indicated by {dbnumber} as the target object. Also -- @{prog} ##{dbnumber} {matchitem} {text} This will look at the location of {dbnumber}, perform a match with {matchitem} to find an exit, and give that description, prepended with {text}. The exit must be set "_trans?:yes" or have a call to this program in its description to be seen through. 35 lines displayed. 48) #26749 WOLFACTION.MUF _____________ GREYWOLF _______ @LIST #26749=1-58 (WolfAction.Muf -- header, 64 lines. Version 2.0 Thu Apr 7 1993 Based on a program originally written by Jeremy/ Salvaged by Greywolf Hacked upon by Lunatic to be more general and to look a lot nicer. changed to allow %[a-z] in the text given to it. Rehacked by Greywolf to add more features. **** NOTICE **** This program is essentially just an on-board macro. What you could do with this you can pretty much do with a pose. However, for some reason a lot of folks {particularly "Toons"} have this bizarre mentality that because they do it through one of Greywolf's programs, what would otherwise be rude {such as bashing somebody or blasting somebody} is suddenly okay when done with a program. I consider such use an abuse of my program, which is meant for harmless stuff such as ordering food in a restaurant, etc. Although it may not do much, anybody can set him/herself _wolfaction?:no to avoid being subject to the various wolfaction "weapons" created with this program, that require an object match for the 'target'. This can be also set on a room/environment to lock out usage for a room. **** SETUP **** To set up, create an action, linked to this program. Properties on action: _msg or msg: Message displayed to user of action. _omsg or omsg: Message displayed to others in room. In [_]msg and [_]omsg, pronoun substitutions are made, and the user's name is prepended to the beginning of the omsg message. Furthermore, when the action is called in the form of {actionname} {text}, any occurrences of %text in the properties of msg and omsg are replaced with whatever {text} the user typed. As well, %extran is replaced with an 'n' if txt takes "an", returns null otherwise. [_]msg and [_]omsg are each optional. If they are not present then nothing is said. Example: action bash, with property msg: You bash a%extran %text. bash treasure chest --> You bash a treasure chest bash apple computer --> You bash an apple computer Note that you have two cases of pronoun subs. %[a-z] are taken from the player doing the action, and %%[a-z] from the action itself, so if you had a shrink gun with a dial action that set %d to a number, you can have the shoot action with _omsg: shoots %text, shrinking them to %%d inches tall! Note: To get a % in your text, use %%%%. --- expanded props for "randomizer" setting --- msg_rand: -- number of possible random msg settings to choose from msg_{n}: -- numbered props with alternate settings for msg omsg_{n}: -- ... for omsg If these props are set, instead of using _msg/_omsg, a random number will be chosen from 1 to {setting of msg_rand} and the appropraite msg_{n} prop will be used. --- misc features --- action_nothing: {text} -- Optional: message displayed if player does not select any object to "affect" with the action. action_onothing: {text} -- Optional: as above, but to others in room. action_match?: yes -- Will make a match of %text to see if it is in the room action_fail: -- If match fails, display this message to user action_ofail: -- If match fails, display this message to others action_gohome?: yes -- If set, the thing the action is attached to will be sent home upon successful use of the action. {If action_match? is not used, any use will be considered "successful".} action_react: -- Only usable with action_match?: yes. If target has react_{text}:{message} set, where {text} is set in action_react: on the action, this message will be displayed to user. oreact_{text} will be displayed to others in room. 57 lines displayed. 49) #3839 CHESSBOARD-PROGRAM _________ JEREMY _________ (NONE) "Commands available:" "Blank -- Takes one parameter (square) and deletes whatever piece is there." "Clear -- Clears entire board of pieces." "Display -- Display entire chessboard" "Help -- Give this message" "Move -- Takes two parameters (squares). Moves one to the other, erasing the" " contents of the target. Empty squares may be moved." "Place -- Takes two parameters (1 piece, 1 square) and places the piece on the" " square." "Reset -- Reset board to standard chess starting position" "Swap -- Takes two parameters (squares) and swaps the contents." "Squares are of format a1, b8, etc.... Pieces are P, N, B, R, Q, K, or lower-" "case for the black player's pieces." "This is only a board, and cannot play chess for you. Special moves such as" "castling or pawn promotion must be done by hand (i.e. moving both pieces)." "[This chessboard was written entirely by Jiro.]" 50) #4567 LOOK-SIMULATION-PROGRAM ____ JEREMY _________ (NONE) (This program simulates a "normal" look, given a dbref as a parameter.) (Hacked to allow seeing dark people) [I'm not sure what the point of this one is. -- TA] 51) #3694 OBJECT-NAME-PROGRAM ________ JEREMY _________ (NONE) [No docs at all on this one; appears to list out the object number and flags, given an object, room, player, or thing. -- TA] 52) #8274 DESCER _____________________ KARREJANSHI ____ (NONE) ( way to set %sub[x] for @6800. Beats typing it manually. ) "Useage: <prog> A [B]" "where "A" is the property to set and "B" is the property" "containing the text to show. If "B" is not specified then" "the default value for "B" is taken from the property" "_default_A." "Example: "<prog> clothes" would set clothes to the value in _default_clothes" "If default_clothes is "causal" then clothes would be set to" ""Casual". If there is no _default_clothes, then <prog>" " will not work. This is to prevent you from accidentally changing" "a property by accident." 53) #19944 EXIT-USE-NOTIFY ____________ KARREJANSHI ____ (NONE) ( exit_use_notify [formerly tellme] 1.3 - Karrejanshi 6/18/92 ) ( Notifies you if someone uses your exit. Does not notify if you are the ) ( user or if you are in the destination. ) ( To use, lock the exit to this program. @lock <exit>=#19944 ) ( Parameters:none ) ( Properties:trigger:_tellme - the message to send you. Works just like ) ( osucc. ) ( _tellme_prefix - string to prefix all messages with ) ( _tellme_suffix - string to append after all messages ) ( _notellme - disables messages if this property is set ) ( user:_tellme_notify - lets user know when he/she/it is using ) ( an exit with _exit_use_notify enabled. ) 54) #19999 SHOWWHO ____________________ KARREJANSHI ____ (NONE) ( Shows the players in a list of rooms. You must own each of the rooms. ) ( Version 1.0, 11/20/91, Karrejanshi ) ( To use: @link <exit>=#19999 ) ( Parameters: none ) ( Properties: _searchlist - list of rooms to search. ) ( For example, to search rooms #123, #1234, and #12345, ) ( @set showwho=_searchlist:123 1234 12345 ) ( Thanks to Revar and Lynn Onyx for helping with one of the nastier ) ( bugs. ) 55) #20060 ONLYFEMALES.MUF ____________ LANYA __________ (NONE) [I think this one returns true if it's being used by a female, or false if the user is anything else. I suppose this is intended to be used to lock an exit, to allow only females through. -- TA] 56) #19683 ONLYMALES.MUF ______________ LANYA __________ (NONE) [Looks like the exact opposite of the above; returns true if the user is a male, or false otherwise. -- TA] 57) #13071 CAPACITY-LOCK.DISK _________ LYNN_ONYX ______ (NONE) [Appears to check the number of people in the room agains the capacity property, and not allow any more people once the room has reached its limit. -- TA] 58) #11293 KNOCK.DISK _________________ LYNN_ONYX ______ (NONE) ( by Lynn_Onyx, 6/16/91 ) ( ) ( This program allows you to 'knock' in a certain direction. The exit ) ( must be set K--which normally means 'Kill_OK', but for purposes of this ) ( program, we will consider it to mean Knock_OK. ) ( ) ( The following properties on the exit are used: ) ( -============================================- ) ( _knock : room1 room2 room3 ... ) ( This list of dbref numbers tells which rooms to notify when ) ( someone knocks on the exit. The default is the room that ) ( the exit is linked to. ) ( _oknock_format: blah blah blah %n blah blah %l blah blah %d ) ( This is the message that is displayed in the target ) ( room[s] when the 'knock' command is used. The default ) ( format is: ) ( %n knocks %d from %l. ) ( _knock_format: blah blah blah %d blah blah blah ) ( This is the message that the knocker sees when knocking ) ( on the exit. The default format is: ) ( You knock %d. ) ( The following substitutions are used, for both _oknock_format and ) ( _knock_format: ) ( %n : The player's name ) ( %d : The direction--name of the exit ) ( %l : The location of the player ) ( Standard pronoun-subs may be used as well ) ( Creating a 'doorbell': @open doorbell = here @lock doorbell = #0 @fail doorbell = @11293 <direction of door> @set <direction of door> = K @set <direction of door> = _knock_format, etc. ) 59) #13485 RANDOM-LOCK.DISK ___________ LYNN_ONYX ______ (NONE) [This one looks like it checks the odds property, which contains the probabiltiy that the lock will open (in percent). It then generates a random number, and succeeds or fails depending on the value of the number. -- TA] 60) #8004 CMD-SAY-FILTER _____________ LYNX ___________ (NONE) cmd-say version 1.1 by Lynx, last revised on March 26, 1992 This program lets you modify the default message '%n says, "%m"' to whatever you wish; thus you may link an action to this program that changes a normal verbal say to purring, singing, thinking, et cetera. Properties must be set on one object, which may be the say action itself, yourself, or your proploc. @set say = _say:You purr, "%m" @set say = _osay:purrs, "%m" %m is replaced with your message. Other pronoun substitutions are also carried out appropiately. Your name is prepended in front of all osay messages. %n will be replaced by your name. If you want your %n property to be shown, use %%n. If you do not set the properties, they will default. You may also filter your speech through this program. It will look for the "filter" list and replace those with entries from the "subst" list. Example: lsedit say = filter r i .end lsedit say = subst rrr y .end say This is a test of the purr filter. Lynx purrs, "Thys ys a test of the purrrrrr fylterrr." [These are looked for on the same place that your say properties are found] cmd-say-filter will now check if there is a say action linked to a program in the room or its environment. If there is, it will look for a pose action and pass it to the program connected there. If not, then it will simply proceed as normal and ignore the room's say action. 61) #10979 COPY-PROP-TO-PROPLOC _______ LYNX ___________ (NONE) ( spc-copy-prop-to-proploc This program can be used to copy properties to your proploc so that you need not re-enter them. The properties must be stored on yourself. If successfully copied, the properties are deleted from yourself. Usage: @action copy-prop = me @link copy-prop = #10979 copy-prop <name of property to copy> 62) #9576 DO-NOTHING _________________ LYNX ___________ (NONE) do-nothing version 1.0 by Lynx, last revised on April 11, 1991 This program is used for linking exits to, in order to match keywords, and does precisely nothing. 63) #355 TMP-DIE-ROLL _______________ LYNX ___________ (NONE) [No documentation, but it may be the program that implements the ROLL global. See the separate file GLOBALS.TXT. -- TA] 64) #6800 GEN-DESC (REVENGE OF LOOK-NO LYNX ___________ @LIST $DESC-DOCS [This is the famous @6800 program. See the separate file GEN-DESC.TXT. -- TA] 65) #7125 CMD-SPOOF __________________ LYNX ___________ (NONE) Spoof version 2.3 by Lynx, last revised October 29, 1991 Type 'spoof' for usage instruction. Type 'spoof #install' for instructions on installing a spoof action. Type 'spoof #examples' for instructions on using and installing spoofs. To spoof something beginning with #, add "#" in front of it, i.e. 'spoof ##' [This appears to be the program used to implement the SPOOF global. See the separate file GLOBALS.TXT for more information. -- TA] 66) #24709 RECORD.MUF _________________ FOXX_FOX _______ @LIST #24709=1-52 ( record.muf v 2.1 By: Neikrad @view #<prog>=1-52 ) ( --Notation-- ) ( ACTION = trigger <usually an exit linked to this program> ) ( OBJECT = location of trigger <usually a kind of recording object> ) ( <num> = number string <txt> = text string <db> = dbref# string ) ( <hc> = hard-coded in program <fmt> = timefmt format string ) ( --Setup-- ) ( +--[ACTION]-<trigger>------------------------>link to [record.muf]----+ ) ( | _rec/download:yes Direct-Entry mode. Append list until '.end' | ) ( | _rec/erase:yes Erase props. <If download mode, clear props 1st> | ) ( | _rec/silent:yes Program works silently. No prompts/error msgs | ) ( +---------------------------------------------------------------------+ ) ( | ) ( +--[OBJECT]-<location of trigger>-------------------------------------+ ) ( | rec/limit:<num> Max # of list props [default: unlimited] | ) ( | rec/over_limit:<txt> Displayed if over rec/limit [default: <hc>] | ) ( | rec/not_proploc:<db> Set to NOT record on specified proploc. *1 | ) ( | rec/only_proploc:<txt> Rec. ONLY on proploc. If not, display <txt>. | ) ( | rec/namestamp:yes Appends user name to front of recording *2 | ) ( | rec/timestamp:yes|<fmt>Appends time to front of recording. *2 *3| ) ( | rec/listname:<txt> Name of list [default: "record"] | ) ( | _proploc:<db> dbref # used as proploc for OBJECT | ) ( +---------------------------------------------------------------------+ ) ( -- Footnotes-- ) ( *1 rec/not_proploc displays 'rec/only_proploc's text upon failure. ) ( rec/not_proploc doesn't do anything if rec/only_proploc ISN'T set. ) ( *2 If in 'download' mode, text is placed on 1st line by itself. ) ( *3 may be set to 'yes' or a 'timefmt' primative's 'format string' ) ( default = "%a %b %e %T %Y" [e.g. Tue Sep 22 22:45:56 1992] ) ( record.muf is used to allow one to record a list of properties on an ) ( object or a proploc of an object. ALL properties optional. ACTION, ) ( OBJECT, and OBJECT's _proploc <if any> must all be owned by the same ) ( player for this program to work. ) ( Normally, when ACTION is used, the text after ACTION is appended to a ) ( list of properties on OJBECT or on its _proploc setting. This behavior ) ( can be changed by setting up to 3 'mode-flags' on ACTION. ) ( DOWNLOAD: This mode places the user in a loop which appends each typed ) ( line to the list until the user types '.end' or '.' alone on a line. ) ( Text typed after ACTION is ignored. Timestamp & namestamp data are ) ( placed alone on the first line. ) ( ERASE: Erase mode is usually set on a separate action to erase items ) ( in the list of properties. This action can be @locked to prevent ) ( 'unauthorized' erasing of recorded items. When ERASE & DOWNLOAD are ) ( both set, the entire list of properties is cleared, then normal ) ( DOWNLOAD operation proceeds. Usage of an erase action can be: ) ( ACTION [ erase first line only ] ) ( ACTION <num> [ erase item <num> from list ] ) ( ACTION all [ erase entire list ] ) ( SILENT: This mode makes the program work silently. No confirmation or ) ( error messages are given EXCEPT if an ownership violation occurs, ) ( i.e. ACTION, OBJECT, and _proploc's owner doesn't match. ) 52 lines displayed. 67) #3933 DICE-ROLLER ________________ REVAR __________ (NONE) [No documentation, but it may be the program that implements the ROLL global. See the separate file GLOBALS.TXT. -- TA] 68) #10522 GEN-CROWDLOCK ______________ REVAR __________ (NONE) [Appears to check the number of people in the room agains the capacity property, and not allow any more people once the room has reached its limit. This one checks for guests and sleepers, I wonder if this is the program used to limit the number of players in the Truth or Dare pools? -- TA] 69) #6435 GEN-MESGBOARD ______________ WIZARD _________ (NONE) ( MUFmessageBoard v0.80 Copyright 5/31/91 by Garth Minette ) ( foxen@netcom.com ) ( A program for storing and displaying multi-line messages ) ( This code may be freely distributed, and code from it may used in other non-similar programs, but the author's name must be credited. ) [This appears to be the program that implements the bulletin boards. Internal documentation is a little sparse, but I think that to install it, create an object to be the message board itself, then link the 'read', 'write', and 'erase' actions to this program. -- TA] 70) #10746 GEN-MULTILOCK ______________ REVAR __________ (NONE) [No documentation, again. This one appears to combine the guest-list type of lock with the crowd lock. -- TA] [All right! I know a lot of you are MUCK.Wizards and/or Really Amazing MUF Programmers, but not everyone can RTFSC and figure out what these are supposed to do and how to set them up. :) If a program is listed in this index, don't you think there should be some documentation so that furries can figure out how to use it without bugging the author, the helpstaff, or the wizards? If your program is listed with documentation of "(NONE)", consider yourself taken to task for poor program documentation skills. -- TA] 71) #8452 GEN-PLAYERLIST _____________ REVAR __________ (NONE) ( GEN-PlayerList Copyright 4/15/91 by Garth Minette ) ( foxen@netcom.netcom.com ) ( ) ( The author of this code grants the right for anyone to use ) ( code so long as the author's name remains intact. ) ( The author also reserves the right to revoke the usage of this ) ( code from any muck, should the author choose to do so. ) "GEN-PlayerList v1.00 by Tygryss" "Updated 5/3/91" " Page1" "------------------------------------------------------------------------" "To display who all is on the list: 'list'" "To clear the list of all players: 'clear'" "To add players to the list: 'add <plyr> [<plyr>...]'" "To accept pages from a player again: 'remove <plyr> [<plyr>...]'" "-- Words in <> are parameters. Parameters in [] are optional. --" "-- Prefix all previous commands by the name of the playerlist action --" " " "-Propertyname---- -Where set-------- -Use---------------------------------" "_listdbref playerlist action Defines where the list to edit is." "_listname playerlist action Defines the name of the list to edit." [No real documentation, except for the above, This may be the program that implements the PWHO global. See the separate file GLOBALS.TXT. -- TA] 72) #15046 GEN-SETIT __________________ REVAR __________ (NONE) [Aparrently sets a property. No documentation, though. -- TA] 73) #4958 GEN-TIMEDESC _______________ REVAR __________ (NONE) ( Timedesc written 2/11/91 7:37am by Tygryss allows a desc/succ/fail/drop of an object give different messages depending on the time of day. Use by @desc/@succ/@fail/@drop'ing the object to '@4958 <propname>' where <propname> is an optional argument that lets you specify the names of the properties it will use. If this argument is omitted, then it will default to 'deschour'. You can have the desc, succ, fail, and drop all use different time besed messages by using different <propname>'s for each one. the description to be displayed is selected from a list of descs stored in a series of properties named from '<propname>0' to '<propname>23', where <propname> is the previously mentioned <propname> string. '<propname>0' corresponds to 12am to 12:59am on the machine the server runs on, and '<propname>23' corresponds to 11pm to 11:59pm. If a property for the current hour does not exist, then it will search back through the hours looking for a string to use. If it reaches '<propname>0', and fails to find a string there, it will start searching back from '<propname>23'. This means that if you have descs set for 6am, 12noon, and 8pm, then at 4pm it will use the 12noon desc, and at 6am it will use the 6am desc, but at 5am, it will use the 8pm desc. 74) #5020 GEN-TRANS-EXIT _____________ REVAR __________ (NONE) ( Generic transparent exit look code ) ( by Tygryss Bugfix added by Jeridy ) ( ) ( Use: @desc the exit to @<number of this program> ) ( This will show the _trans_desc: property of the exit ) ( and the visible contents _if_ the object is not Dark. ( PROPERTIES: _trans_desc: Message shown to player as the target room's desc. Set on the exit itself. Uses %n for the target room name. _trans_format: Message shown for the rooms contents list. Set on the exit itself. Uses %* for the contents list substitution, and %b for "is" or "are" depending on how many items are visible in the destination room. 75) #6875 GEN-BROADCASTER ____________ LYNX ___________ (NONE) [No documentation on this one; but it seems to be a way of broadcasting a message or pose to everyone with the _broadcast?:yes property. This may be the program for the @SHOUT global. See the separate file GLOBALS.TXT. -- TA] 76) #14118 OBVEXITS ___________________ SHATERRI _______ (NONE) ( ObivousExits -- Lists the exits out of a room Usage: @succ here = @<this-program> @set here = mesg/obvexit: <header message> 77) #5137 GEN-PROGLOCK _______________ LYNX ___________ (NONE) ( gen-proglock written 2-12-91 by Tygryss To use, open a series of exits from the room into another set of rooms as you want them, then lock them all to this program. They must all share the exact same name. 78) #8813 PDC-MORPH.MUF ______________ SLATE __________ @LIST #8813=1-97 ( %M% 1.%I% %E% -- a program for general changes to properties * Author: P. Damian Cugley. Please email problems and suggestions to * Damian.Cugley@comlab.ox.ac.uk. * * This program is designed to be useful for making an object {such as a * player} with a description that can be easily changed with one short * command. The idea is to set up your object to use one of the * properties-based general-description programs to generate a description; * then all that this program needs to do is change some properties and * print appropriate messages. * * By making this program able to change several props in one operation, it * is possible to {for example} make a shape-changer whose _scent changes * to match their new form. {It also means that the program is general * enough that it is not restricted to making morphing characters.} * * To use this program, create an action properties and * print appropriate messages. * * By making this program able to change several props in one operation, it * is possible to {for example} make a shape-changer whose _scent changes * to match their new form. {It also means that the program is general * enough that it is not restricted to making morphing characters.} * * To use this program, create an action linked to it. For example: * * @action morph = me * @link morph = #8813 * * You can call the action anything you like {personally I find "morph" * hard to type in a hurry}; from now on "<command>" will be used to * stand for the action name. If the action is not attached to the * target object {the one being changed} then do * * @set <command> = _<command>/target: <target object> * * Now add the list of properties on <target object> that can be * affected by the command: * * lsedit <command> = _<command>/prop * <property names on separate lines> * .end * * {note the trailing slash, and that property names go on separate * lines}. Now you can use the command * * <command> #define <new state> * * to define new states {use "<command> #help #define" for more info on that} * and * * <command> <new state> * * to switch to a new state that has been defined. * * The "help" pages for the command contain more information. * * EXAMPLE * Here's a fairly complete example of how you might set youself up * with two animal species, and the ability to switch sex. Note that * sex-changing is completely orthogonal to species, and format/oformat * have ben omitted for clarity. An asterix in the left margin * indicates a prompt from the program, everything else is what the use * types. * * @desc me = @$desc %sub[_desc/%sub[species]] * @set me=_desc/cat: A blue cat, %p eyes are gold. * @set me=_desc/fox: A golden fox, %p eyes are green. * * @action morph = me * @link morph = #8813 * lsedit morph=_morph/prop * species * _scent * sex * .end * * morph #define fox * * @set #xxx=_morph/fox/species: * fox * * @set #xxx=_morph/fox/_scent: * Foxy and %sub[sex]. * * @set @xxx=_morph/fox/sex: * [presses SPACE then RETURN] * * ok [we are finished] * * [...similar for cat...] * * morph #define male * * @set #xxx=_morph/male/species: * [presses SPACE then RETURN] * * @set #xxx=_morph/male/_scent: * [ditto] * * @set @xxx=_morph/male/sex: * male * * ok [we are finished] * 97 lines displayed. 79) #60904 PDC-TIME.MUF _______________ SLATE __________ @LIST #60904=1-32 (* pdc-time.muf 1.1.2 93/04/30 -- print the time * Author: P. Damian Cugley <Damian.Cugley@comlab.ox.ac.uk> * * Create a simple dual-time clock by linking an action "time" to this * program. Usage summary: * * time { <option> } [ <zone> ] [ = <format> ] * * A <zone> specifies a different time zone in which to display the * time {as well as Furry's local time}. It is either a time zone * abbrev in pdc-time's database {CST, CDT, etc.} or a five-character * sequence of the form +hhmm or -hhmm where hhmm is the offset from * GMT in hours and minutes. For example, EST and -0500 are equivalent * zones. * * The <format> specifies the format used to print the time. It is a * string with %-substitutions, as described in the manual under * "timefmt" {use the command "man timefmt" to read this}. * * Options: * #verbose * Prints some more information, such as the zones used. * * Properties {searched for on you and your environment}: * _time/zone: <zone> * Your default zone, if none is specified on the command line. * * _time/format: <format> * Your default format, if none is specified on the command line. * If neither is set, time will be printed like "1993/04/07 21:42 BST" * *) 32 lines displayed. 80) #22998 DESC-AREA.MUF ______________ VERIN __________ @LIST #22998 = 1-40 desc-area.muf by Verin this program is used to further expand the area affect of broadcast exits, letting people to look at objects in other rooms in the area as if they were local. In other words, normally 'look verin' would only work if I was in the room, with this program 'look verin' would work fine if I was in the same 'area', like two or three rooms that make up a large room or meadow or beach. this program uses Erma Felna's look-trap program for local use, so any look-traps set in a room are still of use. since that look program is in so much use, Im not going to worry about it going away anytime soon. the program takes advantage of obv-area's set up, so it uses the "_area" property on a room with a list of dbref's of rooms, but a room has to be set "_area_rlook?" yes for a room to be able to looked into from afar. To install the program, in the room you want to be able to look out of or in an enviornment room so it works everywhere, make an action named "l;lo;loo;look" and link it to this program. If that is already done, only the props below need to be set. the prop needed on the room looked out of: _area set to a list of numbers separated by spaces, the db numbers of the other rooms in the 'area'... for example if you were in a bed <db #1234> and wanted to be able to look at things in the bedroom <#4321> and the couch <#52>, you would go to the bed and type: @set here = _area: 4321 52 the prop on the rooms looked into: _area_rlook? set to yes if this room is far lookable. to carry on the other examples, you would go to the couch and the bedroom, in turn, and in each place type: @set here = _area_rlook?:yes 38 lines displayed. 81) #75482 OBV-AREA.MUF _______________ VERIN __________ @LIST #75482 = 1-35 (Obv-area.muf by Verin revision: 4/28/93 This is Verin's first program. Its was designed to help an area affect with the _broadcast? exits, but become much more useful. It basicly displays a comma separated list of a room's contents when triggered. or more than one room. For an example, if you have a pond room, and a beach room, and you want to see the contents of the beach to show up in the pond's description. Or if you want the contents of a bed to show up in the bedroom's. Or if you want the contents of a container room to show up when you look at the container <look bookcase>. Or if you want to set up a bank of security monitors <look monitor 10> to see what is in the room. <not like windows, just shows the contents> Properties: _area A list of rooms to displayed, separated by spaces like: @set here = _area: 5877 72886 9982 This goes on the action/room/object that is succed/desced/linked/failed to this program _area_format if set on the trigger, it can affect the display. if the string contains: p it will list players t it will list things m it will list programs d it will list dark things, players, programs n it will show a nothing display default is: ptm _area_header The string that preceeds the contents list. for example: @set here = _area_header: In bed: This goes on the rooms that are in the _area property. The default is "In <roomname>:" 35 lines displayed. 82) #27531 GEN-CHANGE _________________ LYNX ___________ (NONE) (* gen-change morphing program. Programmer: Vulpis *) ( This is a general 'morphing' program, used to chnage values of properties from one value to another. Properties on the action: _proploc [proploc for properties.] _target [property to be changed by the program] _target_obj [object with property to be changed--defaults to object with calling action.] _default [default message to be displayed when program is called.] _odefault [default omessage to be dieplayed when program is called.] Properties on the proploc [defaults to the action] <property>:<value> [property and value given to the target property when <action> <property> is called.] _msg_<property> [message to be displayed when <action> <property> is called.] _omsg_<property> [omessage to be displayer when <action> <property> is called.] _name_<property> [name to be given to target object when <action> <property> is called. If target object is a player, this is ignored.] Properties on <target object> <property named by '_target'> [property that is changed by the program--usually related to a @6800 desc.] 83) #4708 ED.MUF _____________________ WHITEFIRE ______ (NONE) EDit.muf - 1991 Kinomon Firestar Version 1.0.2 - A PRISM MUF Group program. This program edits lists of properties on players/objects/rooms/etc. What to edit is passed on the command line. "The following commands are avalible in the editor:" "[<line#> [<line#>]] delete" "If no arguments are given, the curent line is deleted. If one argument" "is given, that line is deleted. If two arguments are given that range" "of lines is deleted." "help" "Print this help text." "[<line#>] insert" "Insert lines before the curent or the line given as an argument." "[<line#> [<line#>]] list" "List lines, will display line numbers depending on the setting of" "numbers (see numbers command). If no arguments are given, it lists" "the curent line. If one is given that line is listed, if two are" "given, that range is listed." "numbers" "Toggle line numbering on/off for listings." "quit" "Quit the editor, changes are alwase saved." "All commands can be given as one letter." "( Text editor version 1.0.2 by Kinomon (dragon@glia.biostr.washington.edu) )" [Note that this is *not* LSEDIT. -- TA] 84) #41107 LOCKMGR.MUF ________________ WIZARD _________ (NONE) WhiteFire / Peter A. Torkelson 1992 -- kinomon@glia.biostr.washington.edu Version 0.3.0, Jan 17, 1992 This program is designed for use with WhiteFire's lock.muf, and manages the lock properties for a lock. Usage: * lock [#show] [<lockname>] Shows the status of a lock. * lock #help [<subject>] Gives you help on this program. * lock #guest [<lockname>=]<players> Add players to the guest list. * lock #!guest [<lockname>=]<players> Remove players to the guest list. * lock #ban [<lockname>=]<players> Add players to the banned list. * lock #!ban [<lockname>=]<players> Remove players to the banned list. * lock #maint [<lockname>=]<players> Add players to the maintenance list. * lock #!maint [<lockname>=]<players> Remove players to the maintenance list. * lock #max [<lockname>=][<limit>] Set a crowd limit for the lock. * lock #public [<lockname>] Set the lock to public status. * lock #private [<lockname>] Set the lock to private status. * lock #set [<lockname>=]<dbref> Set a lock alias or the default lock. * Following abreviations are valid: #g, #!g, #b, #!b, #a, #d Properties: [on lock exit:] _lock_dbref:<dbref> Where to find the lock properties. _lock_<name>:<dbref> Lock aliases. [on the lock:] _banned:<dbref-list> People banned from passing this exit. _guests:<dbref-list> People who may alwase pass here. _maxcrowd:<number> Max number in room before full. _public?:<yes|no> May people not on the guest list enter? _[o]<banned|max|fail|succ>-msg:<message> Various messages printed on exit use. _maintaners:<dbref-list> Who may alter this lock. TA #50173 LOCK.MUF ___________________ WHITEFIRE ______ (NONE) WhiteFire / Peter A. Torkelson 1992 -- kinomon@glia.biostr.washington.edu Version 1.0.0, March 5, 1992 Designed to be used as a lock on an exit and managed by wf-lkmgr.muf. Usage: @lock exit=#<this-prog> Props: _time_lock:<dbref-list> _time_lock/<dbref>:<time to wait to> _lock_dbref:<dbref> Where to find lock properties. _banned:<dbref-list> People banned from passing this exit. _guests:<dbref-list> People who may alwase pass here. _maxcrowd:<number> Max number in room before full. _public?:<yes|no> May people not on the guest list enter? _[o]<banned|max|fail|succ|time>-msg:<message> Various messages printed on exit use. x _maintaners:<dbref-list> <used by wf-lkmgr.muf> 85) #17812 MORPH.MUF __________________ WHITEFIRE ______ @LIST #17812=1-115 Morph.muf - 1991, 92 WhiteFire / Peter A. Torkelson kinomon@glia.biostr.washington.edu Version 1.5.1, June 29, 1992 This program is designed to make transformations of your character easy to do baised on the server, not on a whole army of tiny* macros. BASICS: To set yourself up add the following properties to your character: _race:<curent race> This is the race you curently are. _race-<race>:ok This tells the program this race is 'ok' to switch to. Keeps you from beacoming a 'oxtaur' by mistake. One for each race. _morph-<race>-desc:<text> The description to set for a particular race. Thats the basics, now create an @action attached to yourself, like 'morph', and then @link it to this program. To alter yourself type 'morph [-][+]<race>[=<message>]'. The prepended - requests the change be made silently. The prepended + allows you to overide restrictions on morphing to/from certain races. The appended =<message> lets you overide the message morph would normaly print with one of your own. FUN STUFF: Alternate prop locations: _morph_proploc:<dbref> Tells the program to look at this dbref for morph properties. Useful to keep clutter down on your character. _proploc:<dbref> Same as above. Transformation messages: _morph-<race1>-<race2>:<text> Prints a message when changing from race1 to race2. 'def' may be put in place of either. The message will be prepended with your name, and pronoun subs work [use %% to get subs on the new sex], as well as %oldrace and %newrace. _morph-def:<text> If none of the above are from the text from here is used. _morph-<race>-name:<name> Set the name for the %newrace and %oldrace substitutions. Sex changes: _morph-<race>-sex:<sex> Change the character's sex: property when morphing. _morph-def-sex:<sex> Default when morphing if there is not one for the race.. Misc: _morph-<race>-prop-<n>:<prop>[=<value>] This list allows you to change a set of properties when changing to a race. If you do not provide a <value> the prop is removed. _morph-def-desc:<text> Default description if there is no _morph-<race>-desc: for the race. _morph-<race>-<race>:no Dissalow changing from a certain race to another directly. _morph-<alias>-alias:<race> Alias for a race, useful to make it typing it easier. Set by the program on you: _race-name: This is set to the 'full name' of the race you curently are. _race: Set to your new race when you morph. ) ( ------------------------------------------------------------------------- ) ( CHANGE HISTORY: Changes as of 1.4.0: Jan 13, 1992 * property changes [_morph-<race>-prop-<n>:<prop>[=<value>]] * illegal transformations [_morph-<race>-<race>:no] * expanded race names [_morph-<race>-name:<name>] * Add search of the trigger for properties. * Program defualts to telling you your curent race if one is given. * Added the - option for silent morphing. x Removed default race option [_morph-def-race:<race>] Changes as of 1.5.0: Jan 17, 1992 * Default change message. * Pronoun subs for morph messages. * Desc setting [_morph-<race>-desc:<text> & _morph-def-desc:<text>] * Aliases [_morph-<alias>-alias:<race>] Changes as of 1.5.1: June 29, 1992 * Added a message to morph -<race> * fixed minor errors * Made "no" work with all the change messages. * Added "+" to overide chage restrictions. * Added "=<message>" to the command line. * Added the "_race-name:" prop wich keeps the full name for the curent race. To do: Help system ( ------------------------------------------------------------------------- ) CREDITS: * MadraRua, who had the idea for printing you current race as the default action, and for the idea for a silent morph. She also told me to add a message to the silent morph option. :] * MadraRua, for asking me to make 'no' work with the various default change messages, and for suggesting the '+' to overide this feature. Also thanks for bugging me into doing 1.5.1. :] * Crys, various ideas and suggestions. * Neikrad, for the idea to be able to change various other properties while morphing. ( ------------------------------------------------------------------------- ) 115 lines displayed. 86) #43157 NAG2.MUF ___________________ VISION _________ @LIST #43157=2-28 NAG.MUF v2.0 Hacked together on 5/16/93, updated 8/25/93 by Vision! This program is for those who have waken up and inadvertently walked Into public areas a little less dressed than they'd like to be in public. It checks a specified propery for a specified value at login, and displays a message to you if that prop matches. It will continue to notify you every 20 seconds until the property is changed, or you use the 'nagkill' or 'nagstop' action. Global Setup: @act nag;nagon;nagoff;nagkill;nagstop;nagset=#0 @link nag=nag2.muf Properties: nag/nagprop : Property to check at login nag/nagstring : Value to check for If a '!' is placed at the front of the string, then nag will be triggered if the string in the property specified by nagprop does NOT match nagstring. nag/nagmsg : Message to be displayed if nagstring matches the value of the prop specified in nagprop. This message will be displayed to you until you change the value of the property specified in nagprop, or until the 'nagkill' or 'nagoff' command is given. 27 lines displayed. 87) #70367 LINGO.MUF __________________ VISION _________ @LIST #70367=2-42 LINGO.MUF v1.0 by Vision Lets you speak text that only certain people can understand. Good for roleplaying and confusing people. :> make an @action and link it to this program. to use, 'action <message>' Properties: on trigger action: lingo/language: name of the 'language' being spoken <example: 'lingo/language:wookiee'> lingo/say: "says," string. <example: 'lingo/say:gronks,'> lingo/quote: Quotes string. %m is substitued for the message spoken. <example: 'lingo/quote:"%m"'> lingo/string: <optional> string or strings of gibberish displayed to those who can't understand you. Can be a single string, or many small strings seperated by |'s. <example: 'lingo/string:grr|rar|arr|rrr|arl'> lingo/langname?: If set to 'yes', will tack 'in <language>' to the end of all output strings. on players: lingo/<language>:yes - a prop with the name of the language spoken set 'yes' will allow players to understand what is spoken. Using the examples above, say the action is named 'wsay'. You type 'wsay Yes, I'm a wookiee' Players with 'lingo/wookiee:yes' set will see: Chewbacca gronks, "<Yes, I'm a wookiee>" All others will see something like this: Chewbacca gronks, "rargrrarrrrrarlrrrarrrararlrar" Send bug reports to Vision. 41 lines displayed. 88) #60782 NARC.MUF ___________________ VISION _________ @LIST #60782=2-44 narc.muf v1.1 written by Vision <a.k.a. Pat Carson> This is a small alarm system for when you want to catch the little thief that's taking things from your room. Setup: @act get;ge;take;tak;ta;narc=<room> @link get=#60782 This program records any attempts to take an object from the room the action is in. It also optionally Informs you immediately if you are awake, and optionally displays an 'alarm' message to the whole room. When installed, the command 'narc' will list all attempts to take objects from the room since you last checked, if such attempts are recorded. Properties: On the room- narc/lockignore?: If set to yes, NARC ignores all attempts to pick up locked objects. narc/narc_owner?: If set to yes, NARC will watch for you picking up objects as well as others. NARC usually ignores you. narc/narc_alarm: String to display to entire room. NARC displays nothing if this prop is blank. Pronoun Subs work here. narc/narc_notify?: Determines whether to notify you immediately if you are awake. Defaults to "yes" narc/narc_log?: Determines whether NARC will record attempts to take objects from room. Defaults to 'yes' On objects- narc_ignore?: If set to "yes" on an object, NARC will ignore attempts to take that object. NOTE: All objects to be taken using this program must currently be set JUMP_OK page #mail all bugreports, suggestions, etc. to Vision. Have Fun! 43 lines displayed. 89) #94523 PASSENGER-LIST.MUF _________ GREYWOLF _______ @LIST #94523=1-17 ( header, 17 lines -- Passenger-List.muf, programmed by Jordan Greywolf last updated 9 July 94 A call to this program, given a dbref number for a room, will return a string containing a list of the characters [and objects set "Z" or _puppet?:yes] in that room. The target room must be set "_view/ok?:yes" or else "nobody" will be returned. Also, if no characters can be found in the room, "nobody" is returned. : Intended usage is to include a call to this program in the description on a vehicle, so you can see who's inside. Example: @desc vehicle=@6800 It's a rusty little Volkswagen. Inside you see %@94523[#12345]. : [where #12345 would be the dbref of the interior of the vehicle] : No warranties expressed nor implied. 16 lines displayed. 90) #26889 FOODQUERY.MUF ______________ BOINGDRAGON ____ @LIST #26889=1-58 (foodquery.muf -- Original by Verin, modifications by BoingDragon Settings: on trigger pass:yes = use passed string instead of requests through query process. This is useful for making menus or actions that create a specific item. Parameters follow the order: name;description;scent;format;bites;oformat;finishmesg Examples of 'pass:yes' use: In the @succ or @fail of an action: @6800 %call[26889,a glass of water;A cool glass of water;it smells like water;You take a refreshing swallow from %text;4;takes a drink from %text;, getting the very last drop!] Or with MPI in the @succ or @fail: {muf:#26889,<parameters>} To have an action that creates food of any given name and uses default values for the rest: {muf:#26889,{&arg};;;;;;} Using an action 'order' linked to foodquery.muf: order a glass of water;A cool glass of water;it smells like water; yes;You take a refreshing swallow from %text;4;takes a drink from %text;, getting the very last drop! query:<flags> = What properties to query for {omitted flags get the default settings}. The flags are n {name}, d {desc}, s {scent}, f {eat format}, b {# of bites}, e {eat oformat} and x {finish message}. All the flags would be 'query:ndsfbex', the default is 'query:n' In the following messages, %text is replaced by the name of the food item. Only properties whose query flags are set will use prompts, all others will use the set defaults or built-in defaults. nquery:<string> = String for item name prompt {default: "Name?"} ndef:<string> = default name if no name query {default: "something"} dquery:<string> = Item description prompt {default: "Description?"} ddef:<string> = default description if no desc query {default: "something"} squery:<string> = Item scent prompt {default: "Scent?"} sdef:<string> = default if no scent query {default: "something"} fquery:<string> = Prompt for format {default: "Format?"} fdef:<string> = default if no eat format query {default: "You eat a bit of %text, savoring the wonderful flavor"} bquery:<string> = Prompt for # of bites {default: "Number of bites?"} bdef:<number> = default # if no bites query {default: "3"} equery:<string> = Prompt for eat oformat message {default: "Oformat?"} edef:<string> = default message if no eat oformat query {default: "eats a bit of %text"} xquery:<string> = Prompt for finish message {default: "Finish mesg?"} xdef:<string> = default message if no finish default. {default: ", finishing it."} Messages: on trigger/room query_mesg:<string> = Message user sees after final query or pass:yes query_omesg:<string> = Message room sees after final query or pass:yes 57 lines displayed. 91) #101765 SUPER-INDEXER.MUF __________ GREYWOLF _______ @LIST #101765=1-9 ( header, 9 lines -- Super-Indexer.muf, programmed by Jordan Greywolf Last Updated: 22 Jul 94 This program is meant to be used for a "help" or "news" action, with online editing to facilitate easy access by the owner. Just link an action to this program, and use {action} #help to get more information. You are welcome to transport this program to your own MUCK, as long as I am still credited. This program requires level M3 to function, due to usage of the "nextprop" function. Uses FB5.31 and supports MPI. 8 lines displayed.