BoingDragon's Environment How to set up your room, now that you have one: (Type 'tips' to recall these instructions after setting room desc) Make it your home: @link me = here Give your room a name: @name here=<name> Describe your place: @desc here = <description> To show your exits: @succ here=@14118 Set the name of the place: @set here = %n:<name seen on directory> Set the messages on out: @succ out = You go out into.. - @osucc out = goes outside. - @odrop out = comes out of <name of your place> Type 'commands' to see the special features built into the environment. +-----------------------------------------------------------------------+ | You can get info on the following features with 'commands <subject>': | | | | Actions Exits Macros Programs Properties | +-----------------------------------------------------------------------+ ACTIONS +-----------------------------------------------------------------------+ | * Actions * | | | | look -- look-trap for detailed building (look #help for details) | | Also includes desc-area.muf, @view #22998 for instructions. | | make <food item> -- (Create food items! look make for details) | | mix <drink item> -- (Create drink items! look mix for details) | | map -- global map command, type 'map #help' for instructions. Most of | | the Drachenswald/Bellwater/Grotto areas have maps available. | | @sweep/@bugsweep [<target>] -- Sweeps [scans] an area/object for | | listening and puppet things. With no <target>, it sweeps the | | player and their location. | | csafe -- Lists those item in your inventory that may be lost when | | being swept or using the 'home' command. | | desc <object> -- Automatically enters the list editor for making a | | description list for the object. | | move <source> [ = <pattern>] > <destination> -- Lets you move entire | | inventories around, as well as people, objects, etc. in rooms | | you control. @list #81365=1-31 for full documentation. | | spoof -- set up for spoof-action poses. Usage: sp <action, where %n | | substitutes your name> The message appears without ( ) if | | your name is in the message, like a pose. Works as a normal | | spoof otherwise. 'spoof #help' for more information. | | setup -- This action uses Ch'may's init-player program to prompt the | | user for the most commonly used properties, such as gender, | | species, scent, psi, etc. Also enters the list editor for | | creating a description (uses @6800 to display list 'p') and | | also sets up desc-notify properties. | | multihug -- Extra 'hug'-like actions: kiss, scritch, snug, tickle, | | bite, etc. Uses the same message format as the global | | hug. Type the name of the action alone to see if it | | exists, ie: 'snuggle' | | tel <destination> -- Like @teleport on other systems. Destinations | | need to be LINK_OK, ABODE, or @set _teleport_allow?:yes. For | | full docs, @list #44626=1-40. | +-----------------------------------------------------------------------+ Done. EXITS +-----------------------------------------------------------------------+ | * Exits * | | jr -- JumpRoom (teleport nexus) | | nex;nexus -- Underground Nexus | | | | * False Exits * | | In each of these rooms, you can reset the "fail messages" by setting | | the following props: | | | | updesc: {description when one looks up} | | upfail: {message when one tries to go up} | | upofail: {message displayed to others (if any) when up attempt fails} | | downdesc, downfail, downofail, exitdesc, exitfail, exitofail work | | similarly. | +-----------------------------------------------------------------------+ Done. MACROS +--------------------------------------------------------------------------+ | * @6800 Macros * | | | | %+concat[] -- Takes a list name and is just like concat[], except it | | insures spacing between lines, with some intelligence as to how many | | spaces (1 or 2) to add. | | %+link[] -- Returns the db# of what the parameter passed (after matching | | it) is linked to, or what the trigger is linked to if not given an | | argument. | | %+odrop[] -- Similar to otell[], but sends the message to the room the | | trigger is linked to. The trigger must be an action linked to a room | | or person for it to work. | | %+subs[] -- Pronoun substitution, with [<match>=]<sub> as the parameter. | | Default match is 'me'. Useful in descriptions and otell[]'s where the | | normal sub's don't work as expected. | +--------------------------------------------------------------------------+ Done. PROGRAMS +--------------------------------------------------------------------------+ | * Programs * | | lightlock.muf (@list #59828=1-55 for docs) Allows 'dark' rooms that need | | light sources to see things. Env. default is _light/inactive:yes | | arrive_notify.muf (@list #12547=1-8 for docs) Tells you when someone | | enters one of your rooms. Can be disabled completely with _anote:no | | on you or selectively by setting it on the room you want to quell. | | depart_notify.muf (@list #39890=1-8 for docs) Tells you when someone | | has left your areas completely. | | visible_room.muf (@list #27854=1-43 for docs) Uses _broadcast?:ok exits | | to transmit messages saying where people are arriving and departing | | to. Can also be set to work without _broadcast?:ok (_visible?:yes) | | as well as allowing _broadcast exits without the messages. | +--------------------------------------------------------------------------+ Done. PROPERTIES +--------------------------------------------------------------------+ | * Properties * | | _arrive/: #12547 (arrive_notify.muf) | | #27854 (visible_room.muf) | | _depart/: #39890 (depart_notify.muf) | | #27874 (visible_room.muf) | | _Light/Inactive: yes (lightlock.muf disabled) | | _throw_allowed?: yes (throwing allowed within the room) | | _throw_far?: yes (throwing out of the room allowed) | | pets_allowed?: yes (allows pet objects that follow their owners) | | | | Optional control properties: | | _vehicle_ok?: yes (vehicles allowed, via obj-exit, and window.muf) | | _anote:no (disables arrive and depart notify in a room/environment)| | make?:no (disables the 'make' action for creating food) | | make_osucc & make_succ (set a custom message for extracting food, | | 'look make' for details) | | mix?:no (disables the 'mix' action for creating drinks) | | mix_osucc & mix_succ (set a custom message for extracting drinks, | | 'look mix' for details) | +--------------------------------------------------------------------+ Done. Additional Information and Documentation LOOK This look program is designed to make detailed building easier and somewhat less DB-intensive. It creates a set of properties on the room that can be considered as fake 'items' in the room; looking at one of them acts like looking at a real object. For builders, commands are: look #add <item>[=<desc>] Add a new fake item look #do <item> Do a standard 'look' look #edit <item>[=<desc>] Edit the description of an item look #help <topic> Print useful information look #list List out all the fake items here look #remove <item> Remove the item listed If the description is not given on the command line, it will be requested by the program. Extra help topics are: searching, notes Done. Searching: The order of searching the look program takes is as follows: Objects and exits within the room Fake items in the room Exits in the parent room Fake items in the parent room Exits in the 'grandparent' room, etc. A real object in the environment tree will always override a fake item at its level or higher, but be overridden by an item closer to the player. The search for the items in the room goes in three sections: Items with exactly the name typed in Partial exact matches, for example 'n' matching 'n;north' Partial word matches, for example 'on' matching 'next one' Done. Important Notes and Caveats: 1) Items can use description programs, such as @$desc. 2) The matching of item names is case insensitive partial word matching, where a 'word' is defined as anything that starts and ends with either a space or one of the ends of the line. So 'mat' will match 'Mattress' and 'box of matches' but not 'Nutri-mat'. 3) Like with normal exits, if there are multiple partial exact matches like 'n' matching 'n;n1' and 'n;n2', one will be chosen at random. 4) All item names must be distinct in some way. 5) This program always puts its properties on the present room. If you want a property in the parent environment for an area, you have to be in that room to do it. 6) If you do not own the room you're in, only the #help option will run. 7) This program cannot yet run locks on rooms, and will always print the @succ of a room. This is from a limitation in the server, and will be fixed eventually. Done. DESC-AREA.MUF Command to view: @list #22998 = 1-40 Run this command? (y/n) ( 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 ) 40 lines displayed. MAKE Syntax: make <item> Example: make a hamburger (This will give you an object 'a hamburger') eat hamburger (Let's you 'eat' the hamburger (3 bites max)) drop hamburger (Dropped food items go back to the storeroom) User Settings: (extract messages use the following subs: %i=object name, %n=user name) @set here=make_osucc:<message the room sees> Default=%n produces %i from thin air! @set here=make_succ:<message user sees> Default=You produce %i from thin air! @set here=make?:no (This disables the make action for the room) This action produces an edible object. MIX Syntax: mix <item> Example: mix a milkshake (This will give you an object 'a milkshake') drink milkshake (Let's you 'drink' the milkshake (3 bites max)) drop milkshake (Dropped food items go back to the storeroom) User Settings: (extract messages use the following subs: %i=object name, %n=user name) @set here=mix_osucc:<message the room sees> Default=%n produces %i from thin air! @set here=mix_succ:<message user sees> Default=You produce %i from thin air! @set here=mix?:no (This disables the mix action for the room) MAP (See the entry for MAP in separate file GLOBALS.TXT) MOVE ( move.muf -- 5/31/93 by Squirrelly ) ( To move a group of objects from one place you own to another. If you don't own the source, you'll be limited to moving objects from it that you do own. Usage: <action> <source> [ = <pattern> ] > <destination> <action> is the name of the action linked to this program. <source> is the location where the objects currently are. <pattern> is an optional 'smatch' pattern {q.v. man smatch} of which only objects matching it will be moved. <pattern> may also start with an optional list of flags in parentheses, indicating the type of objects allowed. Possible flags are T, P, and F for THING, PLAYER, and MUF PROGRAM, respectively. ROOMs are currently not allowed. The default is to limit to THINGs and PROGRAMs. <destination> is the location the objects are to be moved to. For either <source> or <destination>, if blank, "me" will be used. A special option for <source> is an '!' which means to do a stright match on <pattern>, if you understand what that means, and allows you to move a single item, wherever it might be. Basicly this makes it work much like '@tel <object>=<destination>' but done as 'move ! = <object> > <destination>'. Examples: [assume }{'s are )('s in the following] move here>box -- move all things and programs in the room to object 'box'. move box=button*>me -- move items in 'box' starting with 'button' to yourself. {also, 'move box=button*' would work the same.} move me={F}[a-c]*>mufs-abc -- moves all programs in your inventory starting with a, b, or c into the object 31 lines displayed. SPOOF (See the entry for SPOOF in separate file GLOBALS.TXT) TEL ( teleport.muf -- 10/10/92 by Squirrelly ) ( Works much like @teleport <destination> on other systems, but is restricted to destinations you could get to by creating an action and linking it [i.e., you either own the room or it's set LINK_OK or ABODE]. To use, just create an action [e.g. 'tel'] and link it to this program. Then just type 'tel <destination>' [assuming 'tel' is your action name], where <destination> is likely to be a pound sign [#] followed by the db number of a room. If premitted, you should then be moved to that new location. If the destination is not owned be you, it must either be LINK_OK, ABODE, or teleportable based on the following flags: _teleport_allow: <list of space seperated dbref# of the players, actions, or rooms from which it is allowed to teleport to the room/person/object> _teleport_allow?:yes [allows anyone to teleport to the room/person/object, regardless of the _teleport_allow list or the LINK_OK flag not being set] _teleport_allow?:no [disallows any teleporting to the room/person/object, regardless of the _teleport_allow list or the LINK_OK bit being on] You can also create a form of 'aliases' that will work with teleport. Type '@reg #help' for full details on it's use, but in short, you can do something of the sort: @reg #me <destination>=<alias name> and then: tel $<alias name> For example, '@reg #me #2=park' would then allow 'tel $park' to bring you to under the bandstand in the park. Or to alias the room you're in '@reg #me here=hideout' for example would allow 'tel $hideout' to teleport to that room, assuming it permits such teleporting. @register aliases can be used for most anything, not just teleport, and are very useful. The default teleport messages may be changed by setting custom ones on _tel/succ, _tel/osucc, _tel/drop, and _tel/odrop [the leading underscore is optional]. These may be set on [and looked for in this order] the trigger, the room [succ's on the room being left, drop's on the room arriving in], and the player. If any are set to just a dash "-", then that message will be silent. LIGHT LOCK ( 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. ARRIVE NOTIFY ( arrive_notify.muf -- 11/10/92 by Squirrelly ) ( Set the _arrive field on a room or parent and it will notify the owner of the room of persons arriving into the room. _anote:no on a player will silence notifiaction. If set on a room or enviroment, will also silence the appropriate rooms. Also doesn't notify the owner when they're in the same room. ) DEPART NOTIFY ( depart_mon.muf -- 2/19/93 by Squirrelly ) ( Designed as a complementary program to arrive_notify.muf, [#12547 on FurryMUCK]. Use this on the _depart field of the room or enviroment where arrive_notify is used. For it to work correctly, arrive_notify should be set on either _arrive, _arrive/notify, _arrive/mon, or _arrive/monitor. ) 8 lines displayed. VISIBLE ROOM ( visible_room.muf -- 11/11/92 by Squirrelly ) ( This program allows any of arrivals, departures, connections, and/or disconnections in one room visible in rooms through exits that are _broadcast?:yes set. Simply set any or all of the following properties on the room or any of the room's parents to '#27854', as desired: _arrive, _depart, _connect, and/or _disconnect. Then set any exit on that room with _broadcast?:yes that you wish the arrive/depart/{dis}connect actions to me seen through. That's all that's needed. There are additional, optional items that may be set. There are default messages for each of the four actions. You may replace these with messages of your own. The fields to set for this are: _arrive_mesg, _depart_mesg, _connect_mesg, and _disconnect_mesg, on either the room or parent. The message is basicly your standard o-message -- prepended name and pronoun % substitution, with the addtion of %l being the name of the room this action occurred, %f being were they came from {arrivials}, and %t where they went to {departures}. Also, now permitted is use of %N {capitalized} anywhere in the message strings, for the players actual name. And if present, will use it instead of prepending the name. That makes messages of the style 'In %l, %N has arrived.' or many others possible. You may also set alias names for rooms so as to provide perhaps more meaningful information. If the prop _alias/<dbref> is found, where <dbref> is the data base number of a room they went to / came from, then the value of that prop will be used instead of that rooms name in the messages. If you have this in an enviroment and want to disable it in select rooms or sub-enviroments, or simply a way of turning it on and off, just set _visible?:no {or visible?:no} in those rooms. A simple example set-up of a room: @set here = _arrive: #27854 @set here = _depart: #27874 @set here = _arrive_mesg: just entered %l. %S came from %f. @set here = _depart_mesg: left %l, heading off to %t. @set here = _alias/1234: Room with db# of #1234. Special, no? @set north = _broadcast?: yes @set west = _broadcast?: yes This would make arrivals and departure to the room visible in the rooms North and West of it, both actions with custom messages. Any time the room #1234 was encountered, the alias name set would be used instead. ) 43 lines displayed.