-------------------------------------------------------------------------------
                             The garments objects
-------------------------------------------------------------------------------
 
The MUCK implements the "wear.muf" program, a program which allows you to
'design' garments, to 'wear' and 'remove' them, among other fun things to do.
The program also provides a facility to make the list of the worn garments
appear in your character's description.
 
In this howto, you will learn how to design garments, how to use them, how to
change your character's description to make it show its attire, and how to use
the most advanced features of the "wear.muf" program in order to heighten your
fun on the MUCK.
 
 
1.- Designing garments:
 
A garment is nothing more than a normal object with specific properties set on
it. As any object, you must first '@create' it, then using 'design', you will
turn it into a garment, this latter command setting the properties in question.
The prompts issued by the 'design' command are pretty straightforward.
 
Example (note: the text prefixed with "> " is the MUCK server reply):
 
  @create shorts==shorts
  > shorts created with number ####.
  > Registered as $shorts.
  design shorts
  >
  > Designing: shorts
  >
  > shorts is currently configured to cover:
  > <NOTHING>
  > Please choose the parts of the body covered by this garment when worn:
  >    1.- headhair       2.- face           3.- neck           4.- shoulders
  >    5.- arms           6.- forearms       7.- wrists         8.- hands
  >    9.- fingers       10.- chest         11.- back          12.- belly
  >   13.- taur-chest    14.- forelegs      15.- taur-belly    16.- taur-back
  >   17.- rump          18.- crotch        19.- hindlegs      20.- thighs
  >   21.- calves        22.- ankles        23.- feet          24.- toes
  >   25.- tail
  > Enter the body part numbers separated from each other with a space or
  >  comma, or a single space to keep the current setting, or '.' for the
  >  default setting (nothing covered), or '.abort' to abort:
  17 18
  >
  > For the following messages, full pronoun substitution is supported
  >  relatively to the wearer, use:
  > %a/%A for absolute possessive (his/hers/its, His/Hers/Its),
  > %s/%S for subjective pronouns (he/she/it, He/She/It),
  > %o/%O for objective pronouns  (him/her/it, Him/Her/It),
  > %p/%P for possessive pronouns (his/her/its, His/Her/Its),
  > %r/%R for reflexive pronouns  (himself/herself/itself,
  >                                Himself/Herself/Itself),
  > %n/%N for the wearer's name.
  >
  > Please enter the part(s) of the body on which this garment is to be worn.
  >  The text entered here will appear before the description of the garment in
  >  the list returned by '{wearing}' and 'wear <wearer>' (example: 'Over %p
  >  feet', 'From %p shoulders to %p thighs', 'Around %p waist', etc...)
  > Current setting:
  > Over %p rump and crotch
  > Enter the new string.
  Around %p rump
  >
  > Please enter the description of this garment as it appears once worn.
  > Current setting:
  > <EMPTY: PLEASE ENTER SOMETHING, THIS SETTING IS MANDATORY>
  > Enter the new string.
  A pair of brown cotton shorts.
  >
  > Is this garment cursed (impossible to 'remove') ?  Reply by 'yes' if it is,
  >  by 'no' if it is not, or by any MPI expression returning 'yes' when the
  >  curse is in force.
  > Default setting:
  > no
  > Current setting:
  > <DEFAULT SETTING>
  > Enter the new string, or a '.' to keep the default one.
  .
  >
  > Enter the message which the wearer will see when putting the garment on.
  > Default setting:
  > shorts worn.
  > Current setting:
  > <DEFAULT SETTING>
  > Enter the new string, or a '.' to keep the default one.
  You put your shorts on.
  >
  > Enter the message which the others will see when the wearer put the
  >  garment on (the message is NOT automatically prefixed by the wearer's
  >  name,use '%n' as appropriate).
  > Default setting:
  > %n puts the shorts on.
  > Current setting:
  > <DEFAULT SETTING>
  > Enter the new string, or a '.' to keep the default one.
  %n puts %p shorts on.
  >
  > Enter the message which everyone will see when someone else will dress the
  >  wearer with the garment (the message IS automatically prefixed with the
  >  name of the one dressing the wearer).
  > Default setting:
  > dresses %n with a shorts.
  > Current setting:
  > <DEFAULT SETTING>
  > Enter the new string, or a '.' to keep the default one.
  dresses %n with shorts.
  >
  > Enter the message which the wearer will see when removing the garment.
  > Default setting:
  > shorts removed.
  > Current setting:
  > <DEFAULT SETTING>
  > Enter the new string, or a '.' to keep the default one.
  You remove your shorts and uncover your sexy rump.
  > Enter the message which the others will see when the wearer will remove
  >  the garment (the message is NOT automatically prefixed by the wearer's
  >  name, use '%n' as appropriate).
  > Default setting:
  > %n removes the shorts.
  > Current setting:
  > <DEFAULT SETTING>
  > Enter the new string, or a '.' to keep the default one.
  Wow, a strip tease !... %n is removing %p shorts, uncovering %p sexy rump !
  >
  > Enter the message which everyone will see when someone else will undress
  >  the wearer and remove the garment (the message IS automatically prefixed
  >  with the name of the one undressing the wearer).
  > Default setting:
  > undresses %n and removes %p shorts.
  > Current setting:
  > <DEFAULT SETTING>
  > Enter the new string, or a '.' to keep the default one.
  .
  >
  > Enter the message which everyone will see when someone else will tear the
  >  garment off the wearer (the message IS automatically prefixed with the
  >  name of the one tearing off the garment).
  > Default setting:
  > tears off the shorts from %n's body.
  > Current setting:
  > <DEFAULT SETTING>
  > Enter the new string, or a '.' to keep the default one.
  tears off the shorts from around %n's sexy rump.
  >
  > shorts turned into a garment.
 
Note that you may re-design again the shorts later, the only restriction being
that they can't be re-designed while worn by somebody.
 
 
2.- Using garments on yourself:
 
Now that we defined that simple garment, let's see how to use it.
 
As you just designed the shorts, they must appear in your character's inventory
(if you dropped the shorts, then 'take shorts' again before proceeding). Any
garment your character got in its inventory may be worn by it. To wear the
shorts, just proceed as follow:
  wear shorts
  > You put your shorts on.
 
That's it, you are wearing them !... To check, just type:
  wear me
  > Wearing:
  > - Around his rump: A pair of brown cotton shorts.
 
It is of course possible for anyone to check what you are wearing by simply
typing 'wear <your character name>', and we will see in the next chapter how
to make your character's worn garments listed in its description.
You will also notice that the shorts item is set "dark" while worn: in this
way, the other players will not see it appear in what your character is
"carrying" and for someone observing you dressing yourself, they will see the
garment disappearing from what your character carries and appearing in what it
wears.
 
There is a little problem, though... What if you want to wear the shorts over
some underwear ?... Let's say that you designed some briefs, that you are
already wearing them, and that you want to wear the shorts over them. Should
you just type 'wear shorts', you would end up with something like this:
  wear me
  > Wearing:
  > - Around his rump: A pair of brown cotton shorts.
  > - Around his rump: White briefs.
 
No good... The proper syntax to achieve the expected result is:
  wear shorts over briefs
  > You put your shorts on.
  wear me
  > Wearing:
  > - Around his rump: A pair of brown cotton shorts.
 
The briefs are still worn, but as they are under the shorts, they don't appear
in the description of what you are wearing... Note that, technically, the
briefs object was moved into the shorts one (the shorts object is used as a
container). Of course, this method shouldn't be used for garments only
partially covering another (case for a girl wearing the shorts over a panty
hose, for example: the legs of the panty hose should still be seen). If a given
garment is to cover more than one underwear, just give a comma separated list
of the underwears after " over ", example:
  wear pants over panties,stockings
 
Note also that the order in which you put the garments does have its importance
as the garment last worn appears first in the list of what you are wearing. You
may re-order the list by using '@tel <garment>=me' (after such a command on a
worn <garment>, it will appear first in the list of what you are wearing).
 
Removing a worn garment is even simpler... In our example, you may now type
'remove shorts' (and you will notice that you can't 'drop shorts' unless you
remove them first, which makes sense, huh ?). Should the shorts had been worn
over some underwear, the said underwear will reappear in the description of
what you are wearing after the shorts are removed.
 
Thanks to the pronoun substitutions in the messages we defined at the 'design'
stage, you may also give away (or sell !... See 'money #help') the shorts for
someone else to wear them, and this even if they are of the opposite gender.
Should you want to reserve the use of a given garment to characters of a given
size, you may use a size lock on the garment object (see 'size #help').
 
 
3.- Listing the worn garments in your character's description:
 
OK, that's nice so far, but it would be nicer if you and others could see what
your character is wearing just by 'look'ing at it...
 
That's quite possible, just by using the '{wearing}' MPI macro in the descrip-
tion of your character.
 
To do this, you must first ensure that your description is setup for MPI
evaluation. To add the macro at the end of your description, proceed as follow:
type 'editplayer', then '2' (to edit your description). If editplayer asks you
if you want to convert your description into a MPI one, type 'yes'.
You are then thrown into the line editor. Type '{wearing}' then '.end'. Your
description is saved. Type 'q' to quit editplayer (and don't forget to update
your morph if needed).
 
That's it, you may now 'l me' to look at yourself: surprise, your worn garments
appear in your description. With the above "shorts" example, it would show at
the end of your description, like this:
  l me
  > .../... (your usual description)
  > Wearing:
  > - Around his rump: A pair of brown cotton shorts.
 
OK, but what if your character is naked ?  In this case, the '{wearing}' macro
expands into a null (empty) string, and nothing is shown in your description.
Of course, it would be nice if your description could reflect that naked state
instead...
Well, do you remember that you had to tell to wear.muf which parts of the body
your shorts were covering ?  Here is what it is used for:
For each of the known body parts (there are currently 25 of them, including
some reserved for taurs/ferals forms) you may define a "naked" (uncovered)
description... When a given body part got a description and is not covered by
any garment, that description appears in the text expanding from a MPI macro
which name is '{uncovered}'.
The command to use for describing a body part is 'naked <bodypart>=<desc>'. In
our example, we could type something like:
  naked rump=His rump is plump and sexy.
and '{uncovered}' would then expand to "His rump is plump and sexy." when the
shorts are not worn, and to an empty string when they are. Should other naked
parts be described and visible, they would also appear in the string returned
by '{uncovered}'. Note that the parts appear in a given order (from head to
toes, and from forelegs to hindlegs). Now, you could edit your description and
make it look like something in the vein of:
  <your generic/constant description> {uncovered}{nl}{wearing}
 
Note that the naked body part descriptions are stored into your character's
"_details/naked/" propdir, and that all the body part properties are saved by
the 'morph' command (which means that you may have different body part descrip-
tions for each of your morphs).
 
 
4.- Using garments on others:
 
Yep, that's possible too... You may allow someone else to dress and/or undress
you, or ask someone else the permission to dress and undress them.
You may even tear someone else's garments off, or got your garments torn off by
them (great for vore scenes, of course... ;-) !
 
The authorization scheme is using either a preliminary OOC permission, or a
real time IC/OOC one (the latter being the default setting). If you want to
allow anyone to dress you at any time, you may type 'dress #always'. If you
don't want at all to be dressed by others, whatever the circumstances, you may
type 'dress #never'. If you prefer to be asked each time (default setting), you
may type 'dress #ask'. There is also a setting which is convenient for slave/
Master (or sub/Dom) scenes: 'dress #sm' works the same as 'dress #ask' for
characters not "controlling" you (i.e. when they are not your Master/Mistress,
when they don't have you on leash, and when you are not anchored in their
presence), but also works as if you typed 'dress #always' in the event the one
dressing you has you in their power (see also 'sm #help' and 'howto sm').
 
The undressing authorization scheme works in the same way (just use 'undress
#always', 'undress #never', 'undress #ask' or 'undress #sm').
 
For 'tearoff', which is an IC non-consensual undressing, you may only give a
permanent OOC authorization to anyone to use that command on you (which is the
default setting) with 'tearoff #always', or forbid it altogether with 'tearoff
#never'.
 
Note that when in real time authorization mode ('[un]dress #ask'), if you give
the authorization to a given character for dressing you, it will also grant
them the authorization for undressing you (and vice versa); that authorization
will stay in force during one hour but, should you change your mind, you may
still reset it at any time by typing '[un]dress #ask'.
 
Here is an example of the dialogue taking place when performing a real time
authorization. Let's say that Paul wants to undress Jane (whaaat ?  No, it's
not sexism, I swear !). Paul will issue the first command:
  undress Jane
  > Asking Jane if they accept to be undressed by you...
And Jane will be asked:
  > Paul wants to undress you. Type: 'undress #ok' to accept or 'undress #no'
  >  to reject.
 
Now, should Jane agree, she will type:
  undress #ok
  > You let Paul undressing you.
And Paul will get the following message:
  > Jane lets you undress them. Type 'undress Jane' to start.
 
Should Jane disagree, she will type:
  undress #no
  > You refuse to let Paul undressing you.
And Paul will get the following message:
  > Jane refuses to let you undress them. You may try 'tearoff Jane' for
  >  non-consensual undressing.
 
Once you got the authorization, you may use two methods to dress, undress or
tear garments off someone:
 
- Typing either:
      dress <character>
      undress <character>
  or: tearoff <character>
  will make wear.muf show you a list of the concerned garment names.
  Remember that the garments object are set "dark" when worn, so unless you
  know already what name they got, you will have to use this method at least
  once when using 'undress' or 'tearoff'. Let's see what it would look like in
  our example with Paul and Jane:
  undress Jane
  > Which one of Jane's garments do you want to remove (enter a single space
  >  to remove all of them) ?
  >  - pink dress
  >  - stockings
  >  - high heel shoes
  Paul may then choose to remove one garment or all of them; in fact the string
  Paul will enter will be matched against the names of all the garment items
  Jane is wearing, and any matching garment will be removed.
  Note that when using 'dress', you may also tell over which other garment(s)
  (hereafter referred to as "underwear(s)") you want your choice to be worn
  (simply enter "<garment> over <underwear>[,<underwear2>...]"), but only the
  first matching garment will be worn over the underwear(s).
 
- Typing either:
      dress <character>=[<garment> [over <underwear>[,<underwear2>...]]]
      undress <character>=[<garment>]
  or: tearoff <character>=[<garment>]
  which will bypass the list displaying and will perform immediately the
  action. When no parameter is given after the "=", the action is performed on
  all the garments.
 
Some will ask: "what is the difference between 'tearoff' and 'undress' ?"
Well, beside the consensuality aspect and the difference in the messages issued
by wear.muf, torn off garments are automatically dropped in the room and marked
as "shredded", while garments removed via an undressing are generally kept in
the inventory of the one performing the undressing (i.e. when the garments are
not @locked against them). "Shredded" garments are also @locked to their last
wearer so that no one else but them (and the garment owner, as they can always
'@unlock <garment>') can pick up ('take') the torn off garments. In order to be
"wearable" again, a shredded garment has to be repaired first, by using the
'repair <garment>' command, which can only be done by its last wearer or its
owner.
 
 
5.- Cursed garments:
 
You probably noticed the strange prompt about "cursed garment" when designing
your clothes... What the Hell is this ?  Well, that's a way to ensure that once
worn, the garment can't be removed any more by the wearer (or by any other
character using 'undress' or 'tearoff' on the wearer).
Using this feature, you may design cursed items, such as cursed rings, for
example: just reply by 'yes' to the "Is this garment cursed (impossible to
'remove') ?" prompt while (re-)designing the item.
If you want to free someone from the cursed item you designed, you may use
'uncurse <garment>'. Note, though, that because of the way name matching is
implemented in the MUCK server, you can't directly make reference to an object
in someone else's inventory. That's why it is wise to register the cursed items
you design when creating them, like this:
  @create ring of power==ringofpower
  > ring of power created with number ####.
  > Registered as $ringofpower.
You will then be able to make reference to your ring with "$ringofpower" which,
in the "uncursing" example, would allow to type 'uncurse $ringofpower' and get
it found (and uncursed) by the MUCK, even when worn by someone else.
 
In itself, this feature may be fun, but there is more to it !  The "yes" of the
curse flag may in fact be replaced by any MPI expression evaluating to "yes"
when the garment is not supposed to be removable, and to anything else when it
can be removed. An example of such a garment/item would be cuffs: when someone
puts your cuffs on, you want to be able to lock the cuffs on them (and unlock
them later). That's easy, just proceed as follow:
  @create cuffs==cuffs
  > cuffs created with number ####.
  > Registered as $cuffs.
  design cuffs
  >
  > Designing: cuffs
  >
  > cuffs is currently configured to cover:
  > <NOTHING>
  > Please choose the parts of the body covered by this garment when worn:
  >    1.- headhair       2.- face           3.- neck           4.- shoulders
  >    5.- arms           6.- forearms       7.- wrists         8.- hands
  >    9.- fingers       10.- chest         11.- back          12.- belly
  >   13.- taur-chest    14.- forelegs      15.- taur-belly    16.- taur-back
  >   17.- rump          18.- crotch        19.- hindlegs      20.- thighs
  >   21.- calves        22.- ankles        23.- feet          24.- toes
  >   25.- tail
  > Enter the body part numbers separated from each other with a space or
  >  comma, or a single space to keep the current setting, or '.' for the
  >  default setting (nothing covered), or '.abort' to abort:
  .   (considering that the cuffs are not wide enough to cover/hide the wrists)
  >
  > For the following messages, full pronoun substitution is supported
  >  relatively to the wearer, use:
  > %a/%A for absolute possessive (his/hers/its, His/Hers/Its),
  > %s/%S for subjective pronouns (he/she/it, He/She/It),
  > %o/%O for objective pronouns  (him/her/it, Him/Her/It),
  > %p/%P for possessive pronouns (his/her/its, His/Her/Its),
  > %r/%R for reflexive pronouns  (himself/herself/itself,
  >                                Himself/Herself/Itself),
  > %n/%N for the wearer's name.
  >
  > Please enter the part(s) of the body on which this garment is to be worn.
  >  The text entered here will appear before the description of the garment in
  >  the list returned by '{wearing}' and 'wear <wearer>' (example: 'Over %p
  >  feet', 'From %p shoulders to %p thighs', 'Around %p waist', etc...)
  > Current setting:
  > <EMPTY: PLEASE ENTER SOMETHING, THIS SETTING IS MANDATORY>
  > Enter the new string.
  Binding %p wrists
  >
  > Please enter the description of this garment as it appears once worn.
  > Current setting:
  > <EMPTY: PLEASE ENTER SOMETHING, THIS SETTING IS MANDATORY>
  > Enter the new string.
  A pair of steel cuffs linked together with a strong chain.
  >
  > Is this garment cursed (impossible to 'remove') ?  Reply by 'yes' if it is,
  >  by 'no' if it is not, or by any MPI expression returning 'yes' when the
  >  curse is in force.
  > Default setting:
  > no
  > Current setting:
  > <DEFAULT SETTING>
  > Enter the new string, or a '.' to keep the default one.
  {if:{locked:me,this},yes}
  >
  > Enter the message which the wearer will see when trying to remove the
cursed
  >  garment.
  > Default setting:
  > The cuffs can't be removed... That's a cursed garment !
  > Current setting:
  > <DEFAULT SETTING>
  > Enter the new string, or a '.' to keep the default one.
  You try to remove the cuffs from around your wrists, but they are locked and
   you don't have the keys...
  > Enter the string which the others will see when the wearer will try to
  >  remove the cursed garment.
  > Default setting:
  > %n tries to remove the cuffs but that's a cursed garment !
  > Current setting:
  > <DEFAULT SETTING>
  > Enter the new string, or a '.' to keep the default one.
  %n tries futily to remove the cuffs binding %p wrists... %S would need the
   keys...
  .../... (the rest is similar to the example in chapter 1)
 
Now, let Jane 'wear cuffs', and once she wears them, type '@lock $cuffs=!*Jane'
and ask her to try and remove them... Fun, huh ?  To free Jane, there is no
need to 'uncurse $cuffs' (this would work, but you would need to re-design the
cuffs to reinstate the curse), you may simply type '@unlock $cuffs'...
 
Of course, there are many other possible uses of the MPI curse flag, such as
changing it depending on the character's sex or species (great for morphing
characters), or even installing some kind of timer on the cursed item (remember
that you may use MPI in the messages issued when someone wears the garment,
which could be used to set a timestamp on a property of the garment, getting
that property tested against the current time in the MPI curse flag...).
 
 
6.- Suits:
 
You may also define suits. Suits are made from a number of already existing
garments. The "wear.muf" program keeps track of which garments are worn and,
when a suit is completed or when one of its pieces is removed, it issues the
corresponding messages to the wearer and to the spectators, parsing them for
MPI (which allows to call other programs, such as 'TRaM' for example...). Also,
the suit description replaces the ones of the individual garments in the list
of what a character is {wearing}.
 
To define a new suit, just type 'suit <name>' where <name> can be anything
fancying you (currently, it is not even used internally, and is therefore not
critical, though you may want to use the suit name in your MPI and may recover
it from any garment composing it by reading its "_garment/suit/name" property).
Let's say that we designed "anthro-fox head", "anthro-fox bodysuit", "anthro-
fox hand-paws" and "anthro-fox feet-paws", and that we want to make an "anthro-
fox furry costume" out of them. Note that all the pieces of this costume must
be either carried by your character (worn or not), or in the same room as your
character, or registered on a $variable and referred to with it, or referred to
by the mean of their #dbref... Let's the fun begin:
  suit anthro-fox furry costume
  > Defining "anthro-fox furry costume" suit.
  >
  > Please give the names of the garments composing the full suit (one per
  >  line, enter a single space to end the list, or ".abort" to abort):
  anthro-fox head
  > anthro-fox head added to the suit elements list.
  bodysuit   (partial name matching)
  > anthro-fox bodysuit added to the suit elements list.
  $foxhands  (assuming that "anthro-fox hand-paws" was registered as $foxhands)
  > anthro-fox hand-paws added to the suit elements list.
  #1234      (assuming that #1234 is the #dbref of "anthro-fox feet-paws")
  > anthro-fox feet-paws added to the suit elements list.
             (single space entered here, to end the list)
  > For the following messages, full pronoun substitution is supported
  >  relatively to the wearer, use:
  > %a/%A for absolute possessive (his/hers/its, His/Hers/Its),
  > %s/%S for subjective pronouns (he/she/it, He/She/It),
  > %o/%O for objective pronouns  (him/her/it, Him/Her/It),
  > %p/%P for possessive pronouns (his/her/its, His/Her/Its),
  > %r/%R for reflexive pronouns  (himself/herself/itself,
  >                                Himself/Herself/Itself),
  > %n/%N for the wearer's name.
  >
  > Please give the description of the suit; if it exists, it will replace the
  >  descriptions of all the garment composing the full suit in the list of the
  >  worn garments. If you give a single "/" as the description, nothing will
  >  be listed when the full suit is worn (useful for suits which morph a
  >  person). MPI allowed:
  > Current setting:
  > <EMPTY>
  > Enter a single space to keep it, a '.' for nothing (empty property), or
  >  '.abort' to abort.
  A full, very cute, anthro-fox fursuit, with a very realistic head, a fluffy
   tail and padded paws on %p hands and feet.
  >
  > Please give the message that will be displayed when the last piece of the
  >  full suit is put on. MPI allowed:
  > Current setting:
  > <EMPTY>
  > Enter a single space to keep it, a '.' for nothing (empty property), or
  >  '.abort' to abort.
  %n is now wearing the full fox fursuit... and %s really looks like a true
    male anthro-fox... Cute !
  > Please give the message that will be displayed when one of the pieces of
  >  the full suit is removed. MPI allowed:
  > Current setting:
  > <EMPTY>
  > Enter a single space to keep it, a '.' for nothing (empty property), or
  >  '.abort' to abort.
  .
  > "anthro-fox furry costume" suit defined.
 
Let's test it:
  wear bodysuit
  > anthro-fox bodysuit worn.
  wear feet-paws
  > anthro-fox feet-paws worn.
  wear hands-paws
  > anthro-fox hands-paws worn.
  l me
  > .../... (your normal description)
  > Wearing:
  >  - On his body: A fox furry suit, with a fluffy tail.
  >  - Over his hands: Furry hands-paws.
  >  - Over his feet: Furry feet-paws.
  wear anthro-fox head
  > Paul is now wearing the full fox fursuit... and he really looks like a true
  >  male anthro-fox... Cute !
  l me
  > .../... (your normal description)
  > Wearing:
  >  - A full, very cute, anthro-fox fursuit, with a very realistic head, a
  >  fluffy tail and padded paws on his hands and feet.
 
As you can see, the various garments composing the suit had their list and
description replaced by the full suit description in what you are wearing...
 
It is of course possible to re-define a suit, the old parameters (if any)
being taken as default ones, from the last garment in the entered list.

Back to the main page.