To Morph of not to Morph

This page assumes some familiarity with morphing programs in general (Yes, there is more than one!) and with what seems to be the most popular, Triggur's "Morph Hammer" in particular.
The way this program works is simply by copying data around. Storing a morph (morph #add) copies you current description data plus some information you must type in, to a directory (on your character) rather appropriately called _morph#. Morphing (morph name where name is the name given to a morph when you stored it) "transforms" you character by copying the data from that morph over your current description data.
This is actually quite important if you want to modify your description after storing a morph. If you modify your character you must store it as a new morph (or store over an old one by using the same name again) before you morph again! If not, your new data will be overwritten by old, and you're back at square one.
This has happened both to me and friends of mine, and not during my/their first weeks either! There is a way to avoid the risk and some other hassle as well though.
Some players don't want to correct small mistakes in their morphs because it's so much trouble to morph into the appropriate shape, edit it and then store it again just to correct a few typos. An alternative is to edit your morph data directly! You just have to know how it's stored. If you use the ex command to look at your character data (ex me=/ actually) after storing a morph, you will find the _morph# directory plus some other new properties that need not concern us here. Type ex me=_morph#/ (Yes, the slash is significant) for a closer look and you should see something like this:


dir /_morph#/dog#/:(no value)
dir /_morph#/cat#/:(no value)
dir /_morph#/fox#/:(no value)

This means your character has three morphs called dog, cat and fox, and if they are correctly set up, morph dog for instance should turn your character into a dog. *Woof!*
The "dir" part means it's a data directory, so you can go even deeper, and when you do you will find that e.g. _morph#/dog#/ contains the following:

/_morph#/dog#/desc#/
/_morph#/dog#/message
/_morph#/dog#/name
/_morph#/dog#/osay
/_morph#/dog#/say
/_morph#/dog#/scent
/_morph#/dog#/sex
/_morph#/dog#/species

Each of them has a value of course, but this is a fictive example, so I just thought I'd save myself the trouble of making up some data. <g> All of these data can be edited directly, the desc#/ subdirectory (which is really a "list") with LSEdit (type lsedit me=_morph#/dog#/desc in this case, for instance) and the others with the @set and change commands. The desc list is what overwrites the redesc list in the main directory, message is the message displayed (with your name at the start) when you morph (unless you "qmorph" of course), and the rest should be obvious once you see a real data directory with values...

Okay, for my next trick I will... point out a bug. The morph program will not only store and use morphs, but erase them as well. Anyway, that's what it says! Closer examination of the database shows that the morph data is still there, all the program did was remove the reference to it in the _regmorphs property (which is a list of REGistered morphs). This is not important if all you do is add morphs and use the ones you've got, but if you add and delete morphs a lot, remember to clean up your morph directory once in a while!

Another thing you can do with morphs in addition to adding, deleting and using them is... moving them. A couple of less known commands are the UNIX-inspired (well as far as the names are concerned anyway) cp and mv. These will respectively CoPy data from one place to another (from your character to an object and vice versa, for example), and MoVe data by first copying it and then erasing the original. If you want to transfer description data to an alt or a friend's character. for instance, this can be done manually bit by bit, or in one go by storing the data in a morph and copying that. You can only copy to and from objects you control, so here's how it's done:
1) The donor should have the description stored as a morph, and the receiver should prepare by storing a morph by the same name. This is just to get the database set up correctly, it doesn't matter what (desc) data it contains at this point.
2) Let's say the donor wants to give away or share its "dog" morph. The donor @creates an object (let's call it "stick") and sets it @chownable.
3) The donor copies data to the stick with cp me=_morph#/dog#/,stick (this is to share the data, to give it away entirely use mv, then morph #remove to remove the reference to the morph) and hands it to the receiver.
4) The receiver @chowns the stick and copies the data to him/herself with cp stick=*,me
5) Receiver can now turn into a dog by typing morph dog - just remember what I said about storing your old description first! (Unless this is an entirely new, "blank" character of course! Or if this is to be the receiver's only form, just morph and erase the morph data afterwards.)
6) Receiver should then @recycle the stick (unless someone else wants to share the same morph).

The method above can also be used to transfer descriptions to a puppet (Yes Virginia, puppets can morph as well!) but is even simpler because you can transfer the data directly to the puppet!
One thing about morphing puppets: Some Mucks (like Spindizzy and Fuzzy Logic) have an advanced puppet control program that enables you to enter a special mode where all your commands are sent directly to a puppet even when not prefixed with the special "control action". Don't use this mode to let a puppet store a morph! At least one version of the program will quit the remote mode when you enter just a space to accept a default value. So do at least that part by "manual remote".

Whoever wrote this program in the first place (even coders are only known by their character names (at the time of writing the program) most of the time...) had the sense to suggest (in the help text) that you limit the number of morphs you're carrying around. Yes, I said suggest - some wizzes are going to hate me for revealing official secrets <g>, but as far as I can tell, what Triggur says about limiting the number of morphs (to ten) is just his suggestion and not a strictly enforced rule. If it is, then a lot of players are violating it. I have heard of players with dozens of morphs, even one who had a hundred!

And a final word: As I said at the beginning, there are a number of different morph programs out there. They do not necessarily work the same way, so be careful about mixing them!


© 1998 by Ragnar Fyri. All rights reserved.