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.