@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".
@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.
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:
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: |
|
|
@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:
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: |
|
|
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>].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: |
|
|
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: |
|
|
That, and this is the more techno-geek solution, for us oldbies who were online for years before MPI was even invented. :)
| ADVANTAGES: | DISADVANTAGES: |
|
|