MORPH HOWTO
The 'morph' command installed on this MUCK (hmorph.muf) is probably the most
powerful you ever encountered on any MU*. Yet, it has been thoroughly designed
so to make it easy to use and compatible with the two most commonly used morph
programs: Triggur's and Jaffa's. In this howto, you will learn how to use
hmorph.muf with its basic features first, then with its more advanced ones.
NOTE: while I will use the full #option names in this howto, all the 'morph'
command options can be abbreviated down to their shortest, unambiguous value.
For example, #u and #update are synonymous...
1.- Basic features.
You got a character already, with all its properties set (description, sex,
species, smell, taste, feel, fly flag, etc...). You want to give this character
a new "form" (i.e. you will have to change some of its properties), and still
be able to switch back and forth between its old form and the new one. This is
where 'morph' can help you a big deal.
You first have to register the current form of your character with the morph
command. Let's say that this character is a boring human. You'll probably want
to save it under the "human" morph name. You may do this either in the way of
Triggur's or Jaffa's morph programs.
Jaffa's way:
  morph #save human
The MUCK replies with:
  > Saved morph "human" for Paul(#6543PBCJ).
(assuming your character's name is Paul).
Triggur's way:
  morph #add
And the MUCK prompts you with:
  > Enter a name (15 characters max) to associate with this morph, or '.' to
  > abort.
  > Morph: human
  > Full name or info for this morph (as shown in the #list of morphs).
  > Default setting:
  > male human
  > Current setting:
  > Enter the new string, or a single space to keep the current one, or a '.'
    to use the default, or '.abort' to abort.
  > For the following messages, full pronoun substitution is supported
  > relatively to the one being morphed:
  > %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 name.
  > Message seen by everyone when you change to this shape (note that this
  > message will also be parsed for MPI):
  > Default setting:
  > %n changes into a male human.
  > Current setting:
  > Enter the new string, or a single space to keep the current one, or a '.'
  > to use the default, or '.abort' to abort.
  > Morph saved. Use 'morph human' to change to it or 'qmorph human' to change
  > to it without emitting the message.
Your "human" form is now registered. You can check this by listing the morphs
you currently have, with:
  morph #list
  > List of morphs for Paul(#6543PBCJ):
  >  - human            : male human (current)
  > Done.
(assuming your character's name is Paul).
You can now safely change everything you want among the properties that 'morph'
saved for you, while being able to switch back instantly to your "human" form
later with 'morph human'. The properties saved by 'morph' (by default, because
we will see in the advanced features how to save more properties) can be listed
with 'morph #props'. They are most of the properties you can set with
'editplayer', as well as the ones set with 'view', and 'naked'.
Let's give your character its new form, now... Type 'editplayer' (or 'ep' for
short) and edit its species, sex, description, etc... Let's say that the new
form of your character is a werewolf. Once you exited editplayer and are ready
to save the new morph, just type (here, Jaffa's morph way, but you could as
well #add like shown above):
  morph #save werewolf
  > Saved morph "werewolf" for Paul(#6543PBCJ).
You can now switch back to your human form with:
  morph human
  > Paul changes into a male human.
(assuming your character is a male).
If there are any other players in the same room with you, they will see the
"Paul changes into a male human." message as well. This is the default message
(this can also be changed for each morph), and is in the following format:
  <name> changes into a <sex> <species>.
If you want to morph without the others being notified, you can use the
'qmorph' command, like this:
  qmorph werewolf
  > Quietly morphed into werewolf.
While you're still notified (the format for this message being: "Quietly
morphed into <morph name>"), the other players around you will not be.
Note that you can check for the name of your current morph by either typing
'morph' alone, or with 'morph #list' where it is appended with "(current)" in
the list issued by this command.
You may want to update one of your morphs from time to time. This can easily be
done by morphing first into this given morph, using editplayer or any utility/
command to update your morph, then typing 'morph #update' to save the changes
you just made. Alternatively, you may overwrite an old morph with the #save or
#add options, and in this case hmorph.muf will ask you for confirmation before
overwriting it.
Finally, you can get rid of old morphs, with 'morph #delete <morph name>', or
'morph #remove' for an interactive, prompt-driven removal. In either case,
hmorph.muf will ask you for confirmation.
2.- Advanced features.
Beside the features described above and which are common to most morph
programs, you can make use of more advanced features which are unique to
One of its nicest features is its ability to save any property you want !
To do this, just type 'morph #editprops' and add one property (or propdir) name
per line before saving the list with '.end'. For example, you may want to use a
"belly" property in your @description so that you can make morphs which only
differ by the size of their belly, without having to edit their description
everytime. Let's say that the description for your human morph is set to:
   "You see a male human with a {prop:belly} belly."
Then you can 'morph #editprops' and add "belly" to the list, before proceeding
as follow:
  @set me=belly:flat and well toned
  > Property set.
  morph #update
  > Updated morph "human" for Paul(#6543PBCJ).
  @set me=belly:very fat
  > Property set.
  morph #save fat-human
  > Saved morph "fat-human" for Paul(#6543PBCJ).
  @set me=belly:stuffed and rounded
  > Property set.
  morph #save stuffed-human
  > Saved morph "stuffed-human" for Paul(#6543PBCJ).
You will then endup with three different morphs which only differ by their
belly, which will be reflected by their description. Of course, you don't
really need 'morph' to get the same result (you may just use the @desc above
and '@set' manually the "belly" property whenever you need to change your
belly), but the combination of many properties can make this feature much more
Another interesting possibility offered by hmorph.muf is its ability to change
your name while morphing. This can be useful to avoid registering many
different player objects while you will hardly use each of them more than once
in a while. The only thing you have to do, is to change your name with:
  @name me=new_name your_password
and to either #save (or #add) a new morph, or #update an existing one. Then, to
allow hmorph.muf to change your name for you every time you will morph, you
type: morph #password your_password
Your password is then stored into a wizard read-only property (of course,
should you change your password later, you will also need to type the latter
command again, with the new password as its parameter). Please note that this
is only needed for player objects (zombies do not need a password to have their
name changed).
Many other things are possible with hmorph.muf, such as setting your morphing
messages on a per-morph basis, or morphing non-players/puppets objects, or
using MPI code while morphing, or allowing others to morph you, or setting up
objects so that they morph together with the character carrying them...
This howto will be expanded, but in the mean time, you can find out by yourself
about all these features with 'morph #help', 'morph #help2' and 'morph #help3'.

Back to the main page.