A "description", as pertains to MUCKing, is whatever shows up when some other character looks at you. It can be anything from one line to six screens of text long, and it is stored in the _/de property on a character. It can be set and reset using the @description or @desc command:
@desc me=<text> Ex: @desc me=You see a fluffy red fox. @desc me=A pretty golden stallion.
You can also change the _/de property directly with @set me=_/de:<text>, but it is easier, and neater, to use the @desc command. The description property behaves exactly like any other property on your character(1).
Generally, a description property can only be roughly 700 characters long. However, some lunatics have gotten together and written reams of programs, which allow you to put nifty little codes in your description so that you can make longer descriptions. You can also format text (make paragraphs or lists) and even insert ASCII pictures in your descriptions.
The use of morphing programs comes about because, in general, you can only describe something in one way at a time. If your description says, "You see a fox wearing a pith helmet.", anyone who looks at you will see you wearing a pith helmet, even if you are 600 miles underwater, in a mini-mall, or standing on the moon. Morph programs will allow you to make many separate descriptions (you wearing a pith helmet; you wearing a swimsuit and scuba gear; you wearing a "Mallrats" T-shirt; you wearing a spacesuit), and switch between them quickly when you move around on the MUCK.
(1)A thorough tutorial on properties and their functions, limitations and usage may be found on the MUCK itself by typing "help properties".
The simplest mode of morphing is by hand: simply rearranging your description whenever you need to change. You can, of course, change your description at any time by typing:
@desc me=<your new description>
Of course, if you change clothes a lot, this can get monotonous, because you'd have to type the full description out each time. This is where "propswitching" comes in. Just type the following line, exactly as you see it below, while on the MUCK:
@desc me={index:clothing,this}(2)
Now you can make multiple morphs as follows: for each change of clothes you wish to wear, set a property on yourself. Then whenever you wish to change clothes, you can simply set the value of the property clothing on yourself to the name of the property to whose morph you wish to change. This sounds complicated, but watch this example:
@desc me={index:clothing,this} @set me=blueshirt:You see a red fox wearing a blue shirt. @set me=redshirt:You see a red fox wearing a red shirt. @set me=clothing:blueshirt
In the first line, you're setting up the description property. In the second and third lines, you're setting up two different morphs by setting properties on yourself. The name of the property is the name of the morph; the text contained by the property is the description which will show when you switch to that morph. The morph in line two, for example, is named blueshirt, and the description which will show when you switch to that morph is:
You see a red fox wearing a blue shirt.
In the fourth line, you are switching to the blueshirt morph, by setting the value of the property "clothing" to "blueshirt". If you wanted to switch to the redshirt morph, you would type:
@set me=clothing:redshirt
You can switch between the morphs as many times as you like, and it doesn't matter what you call them. Property names can have spaces, too, so you could call them blue shirt and red shirt if you felt like it.(3)
ADVANTAGES: |
DISADVANTAGES: |
|
|
(2)Information on {index} is
available by typing "mpi index" while online.
(3)Or even
kumquat, home on the range
or We hold these truths to be self-evident, if
that were the kind of thing that struck your fancy.
(Program by Triggur@FurryMUCK)
If it's installed on your MUCK, help is available via morph
#help. This is a very nifty menu-based critter--it's a little
crude to set up, but once it's running, it's the proverbial
set-it-and-forget-it morph program. You'll need to understand
lsedit lists to get the basics, and it's
helpful if you know a little MPI (see my tutorial)
as well, to get the most out of your morphs.
From the docs: (morph #help2)
To use this program, edit your current attributes (by hand or with
PEDIT(4) to get exactly the form you want. Type
morph #add and your current description, sex, species,
scent, say and osay will be copied as a new morph. You will be
expected to answer a few questions:
To add another morph, simply edit your current description again and morph #add again. Lather, rinse, repeat. :)
WARNING: If your description is currently using @$desc (@6800 on Furry), the whole description will be _converted_ to a single MPI list. Also, be aware that when you change to a morph, your description will be overwritten. If you have multiple descriptions you want to make morphs for, be sure to MORPH #ADD them all *before* trying to test one of the new morphs. PLEASE DELETE YOUR OLD MORPHS!
....Basically, what happens in this is that you set yourself up completely, by hand, each time--no, no menus or anything like that; you set yourself up from scratch, exactly as you want your morph to appear. Then you type morph #add and Morph Hammer magically creates a morph for you. You then set yourself up by hand again and again, for each morph you wish, eventually, to have, and type morph #add for each one. Once you are done, you can just switch between the morphs you have created with morph or qmorph. You just have to set each morph up by paw first.
ADVANTAGES: |
DISADVANTAGES: |
|
|
(Program by Conrad Wong)
The $desc program is sometimes called @6800 because that is its
database number on FurryMUCK,
the original, and still the largest, furry-based MUCK. $desc is a
complex MUF program which can be called in your description by
prefacing your description with @6800 (on FurryMUCK or FurToonia) or
@$desc:
@desc me=@6800 <text> @desc me=@$desc You see a fox wearing a red shirt. @desc me=@6800 This young vixen is wearing a flea collar.
$desc's value lies in its commands, which can be inserted into the text of your description to arrange the text in special ways or to aid in morphing. The example below copies the {index:clothing,this} description from above:
@desc me=@6800 %sub[%sub[clothing]]
You would morph using this setup the exact same way you did with the MPI description in the beginning: @set me=clothing:redshirt and whatnot.
$desc offers a little more precise formatting than simple properties, and a number of little technical toys that aren't available in Morph Hammer(5). For example, the %rand[] tag will pick a line from an lsedit list at random. %time[] and %date[] will pick a line from a list according to the hour of day or the date, allowing you to have descriptions that vary with the time or the seasons. Complete docs for $desc are available with @view $desc. The following is the beginning, most useful part of the docs:
$desc is a program that you can use to make more complex messages on descriptions, success, fail, and drop messages. To do so, type this: @desc me=@$desc (description) The description is a normal text message, but may include special "tokens" which are translated by the $desc program to normal text. For example, you might write this:
@desc me = @$desc A cute little fox with %sub[color] eyes. @set me = color:green
Then when someone looked at you, they would see:
A cute little fox with green eyes.
All tokens are of the form %token-name[parameters] and you
may nest tokens, so that you may have descriptions which look like
this:
@desc me = @$desc %sub[%sub[morph]
%sub[clothes]
This would take the property name that you had stored in the property
"morph", and substitute the contents of that property. It would also
take whatever you had in "clothes" and add that into the description.
You should also bear in mind that lists, when mentioned below, are lsedit lists, which may be created by doing this:
lsedit object = listname (first line of the list) (second line of the list) .... (last line of the list) .end
[Lsedit lists are just lists of properties spit out in order. This is useful for formatting, or inserting pictures into your descriptions. To get help, type lsedit me=temp, then type .h on a line by itself and hit enter.]
Common/useful $desc tags:
%sub[<match,>property] Example: %sub[color] %sub[me,species] %sub[here,night] %sub[#321,small]
%sub[] is used to take the contents of a property. It normally takes the property from the object that is looked at, but can be set to use properties from other objects, as shown above.
%rand[<match,>listname] Example: %rand[buttons] %rand[here,songs]
%rand[] takes one of the lines in a list at random. As with %sub[], it normally takes this from the object that is looked at, but can take properties from other objects. %rand[] differs in that it expects the name given to be the name of a list created with lsedit, not a property name.
%time[<match,>listname] Table: one item in list -- full day two items in list -- midnight to noon, noon to midnight three items -- midnight to 8 AM, 8 AM to 4 PM, 4 PM to midnight four items -- midnight to 6 AM, 6 AM to noon, noon to 6 PM, 6 PM to midnight six items -- midnight to 4 AM, 4 AM to 8 AM, 8 AM to noon, noon to 4 PM, 4 PM to 8 PM, 8 PM to midnight %date[<match,>listname] Table: one item in list -- full year two items in list -- January to July, August to December three items in list -- Jan. to Apr., May to Aug., Sept. to Dec. four items in list -- winter, spring, summer, fall twelve items in list -- monthly
%time[] selects one of the lines in a list, based on the time of the day. That is, the first line corresponds to just after midnight, the last line is before midnight, and all the lines in between are mapped over the day. %date[] is similar, but it does this over the year so that you can have descriptions which vary with the season.
%list[listname] Example: %list[desc]
This prints out the first part of the description before the %list[], then prints each element of the list on its own line, then resumes printing the rest of the description. This can be useful when you want to print pictures or lists of items. Note that %list[] cannot be used as an argument so something like %sub[%list[]] will simply look for a property named "%list[]".
ADVANTAGES: |
DISADVANTAGES: |
|
|
(Program by Peter A. Torkelson)
This is the other of the original morphers, #17812 on FurryMUCK and
#433 on FurToonia. It is a slightly more complex morpher than $desc
or Muf-Morf. Its main advantage is not its ease of use but the fact
that you can change any properties you like between
morphs--including pinfo, whatis and page properties. The basic idea
here is that each morph is called a "race", even if all your morphs
are of skunks. Your nude morph is a race, and so are each of your
clothed morphs. You set a whole bunch of properties associated with
each race, and when you switch to that particular race, all those
properties are changed.
From the documentation:
To set yourself up add the following properties to your character:
_race:<curent race> This is the race you curently are. _race-<race>:yes This tells the program this race is OK to switch to. Keeps you from becoming an "oxtaur" by mistake. One for each race. _morph-<race>-desc:<text> The description to set for a particular race.
That's the basics. Now create an @action attached to yourself,
named anything, 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 optionally appended =<message> lets you overide the message
gen-morph would normally 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 Disallow 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.
This looks complex, and is. Here's an illustration of creating a pair of morphs: a nude and a clothed, for a fox morph.
@set me=_race:clothed (puts you in the "clothed" morph) @set me=_race-clothed:yes @set me=_morph-clothed-desc:A fox in a Hawaiian shirt and loud plaid pants. @set me=_morph-clothed-name:clothed fox @set me=_race-nude:yes @set me=_morph-nude-desc:A naked fox. @set me=_morph-nude-name:nude fox @set me=_morph-clothed-nude:takes off %p clothes. @set me=_morph-nude-clothed:puts on %p clothes again.
To switch between the morphs, you would type morph nude to strip, morph clothed to put your clothes back on (naughty foxie!). The program will print out "Bob takes off his clothes." when you strip, and "Bob puts on his clothes again." when you get dressed--assuming your character name is Bob, that is. The desc properties can be up to 700 characters long, and can (yes!) contain MPI and program calls. The _morph-<race>-name properties are for the default morphing messages, which read something like "Bob changes from a <race name> to a <race name>". The program replaces <race name> with the _morph-<race>-name: properties for each race, respectively.
The big disadvantage to this little wonder is that, when you type examine me=/, you are spammed to heck and back! That's what that little proploc thing is for--you can put all these props on another object and not have to worry about them.
ADVANTAGES: |
DISADVANTAGES: |
|
|
(Program by Chetar@FurryFaire)
This is #50603 on FurToonia, and #170673 on FurryMUCK. The following
are the @view docs, written by Chetar and edited for HTML and in some
cases for clarity.
Purpose:
An easy to use morph program, providing seperate messages depending
on new form and previous form. Built-in editing and setup. Compatible
with Warwick's "Say" and Mystique's "Talk" for changing of say
messages.
Installation:
@act morf;smorf;qmorf;eform;morfdefs;edesc;ldesc;sdesc=me @link morf=<#dbref of this program>
Command Summary:
morf <desc name> to change qmorf <desc name> to change quietly smorf to show current form edesc <desc name> to edit a description ldesc list all available descriptions and forms sdesc <desc name> to display a desc eform <twoletter form code> to edit form settings. morfdefs setup default settings for the program.
Example of installing a single form, two descriptions:
morfdefs set defaults and install @desc eform fl provide the program with the requested data edesc fl-clothed puts you in editor, type description edesc fl-nude type description
To put it a different way--@link an action to the program, and type morfdefs to set it up on yourself. The little two-letter codes are morph names, and can be any two letters you please. Typing eform <code> puts you into an editor, where you set up your say, osay, species, etc. The edesc command lets you make multiple descriptions to go with the say/osay/species properties you set up for the form...what this means is that you have a set of say/osay/species properties defined as a form:
FORM: fl FORM: ni say: wuff, say: erf, osay: wuffs, osay: erfs, species: fluff species: wolf
In that form, you can change between descs--you keep the say, osay, and species props while you change between descriptions. Thus, fl-nude would have the fl-form's say/osay and the nude description, fl-clothed would have the fl-form's say/osay and clothed desc, and the ni-clothed morph, if you made one with edesc ni-clothed, would have the ni-form's say/osay and a different clothed morph.
ADVANTAGES: |
DISADVANTAGES: |
|
|
MPI is Satan's system to learn, but once you've mastered the basics, you can pull some incredible stunts with your description. In the example above, you saw {index:clothing,this}, an MPI macro, used in a description. If you know some basic MPI(6), you can set up a smart little morphing system this way:
That is, of course, a very basic example, which doesn't do anything more complex than, say, gen-morph. Once you get the hang of it, though, you can customise the MPI action however you please, adding @succs and @osuccs to the morph action to put out custom messages when you morph, making it possible for others to morph you, arranging your morphs so they are different depending on where you are and who you're with.
That, and this is the more techno-geek solution, for us oldbies who were online for years before MPI was even invented. :)
ADVANTAGES: |
DISADVANTAGES: |
|
|
A number of crazed individuals have created their own versions of morphing programs, including room and exit (????) morphers. If they've been kind enough to provide such a program, it is usually listed under "plib" or "programs" online.
A quick note: This program works in conjunction with $desc.