Advanced Clothing

From Redwall MUCK Wiki


By Brian Jones (aka Otter, Wizard, Servant of the Light and Seeker of Truth)

1. Breaking out of the same boring description.

It's winter, and your summer description is wrong. You have a nice description, but it's been the same one for two years. You made one that was OK, but not great, and you can't decide if your new description should have the red cloak, or the blue cloak. When you change to OOC, you want your description to be an OOC description. When people hit you with @icdesc when you sleep, your description foolishly claims that you are awake!

These problems are all related to using @desc me=Something static. This isn't a bad thing for a new player just learning their way, but for someone as skilled as yourself, it's a sign that you've not learned how to really make your character shine with what is available. Let's face it...you need clothes.

2. Dynamic Descriptions

The key to having descriptions that change with your mood, status (IC vs OOC, or online and offline) is...MPI. This page isn't going to expect you to learn MPI! No, this page is how to use MPI other people have written to get the effects you want and deserve. This page does assume you know how to use lsedit. If not...don't despair. The example covers enough of it to get you going without learning all its special abilities! You can also read the Using lsedit how-to page for help.

The heart of a dynamic description is your knowledge of what your character looks like without any clothing in the way. Clothing is basically added to a character. This does not mean you make a nude description! It means that you mentally consider the essential character when describing them.

Another aspect of dynamic descriptions is the ability to have parts change randomly. That aspect will be covered at the very end of this document, as an example of mixing special effects with the clothing and chardesc programs! So, we'll get to that...later.

3. Planning a wardrobe

Oh, no, the "P" word: planning. In reality, there isn't much planning needed. There are three descriptions that are used with the chardesc/clothing programs, and these three need to be planned for. Then, you have as many different outfits as you like, without any special planning needed. So, bear with us on the three expected ones.

1. Sleeping Description

The sleeping description is visible when someone looks at your sleeping character. This can be either an IC or OOC description, it's up to you. Some of mine are IC (Otter's, for instance) others are OOC (Nicodemus'). Don't let someone tell you it must be one way or another!

To make a sleeping description, you use lsedit on a list named "dasleep". An example follows that you can cut and paste freely.

   lsedit me=dasleep
           .del 1 999
           Otter is sound asleep, snoring away. REALLY snoring. Good thing you
           don't have to share a room with him!
           .end

That's it! You can have a large or small sleeping description. Don't hesistate to put in notes like "(Leave page-mail!)" if you wish. This does not have to be IC!

2. OOC Description

This description is what will be seen when your status is OOC. This, obviously, can be OOC. It can be YOUR description in RL. It can be your character dressed as a modern RL person. It can be a description of a dodecahedron. In short, since it's not "in" the IC universe, you're not limited to IC issues in it.

It still has to be G-rated, of course, so don't go too crazy.

This description is set with lsedit for a list named "dooc". Here's Otter's OOC description:

 lsedit me=dooc
           .del 1 999
           Otter stands before you. His gray cloak seems to shimmer and flows
           gently, seperate from the wind. His footpaws are bare, and show the
           webbing of his kin, but the toenails seem to absorb light, being blacker
           than black. His face is kindly, yet there are no smile lines, and the fur
           seems to shift colors subtly as he changes moods. His whiskers are thick and
           bristly, and his nose always seems damp and glistens. His eyes are gray, and
           match his cloak.
           {nl}{nl}He is the Chief Wizard.
           .end

As you see, MPI within the lists is expanded. If you don't know what this means, don't worry about it!

3. Default IC description

At long last, you need an IC description. This can be as simple as your existing description. This is what people will see if they are not in the same room as you, and they look at you. It's also one of many you can choose to show to those who are in the same room as you.

This description should follow all the IC rules and guidelines for good descriptions. The only thing that makes it "special" is that it is stored in a particular directory name using lsedit. This description should be generic; it shouldn't reflect a particular season or event. It should be a "stock" dull description.

Your default description is used by the clothing system, so has to be stored under the "/desc/" path. By convention, the name used is the name "default." So, the full name of the default description is "/desc/default".

Here is Otter's default description complete with lsedit to set it up:

   lsedit me=desc/default
           .del 1 999
           A rather small otter, with the normal brown coloring on what fur you can
           see. Most of his body is covered by a gray robe, neatly hemmed at the bottom
           so it doesn't drag the ground. His footpaws are bare, and his face carefree.
           His ears seem to extend out every now and then, even when there are no
           noises to be heard and his eyes are never still. He breathes evenly,
           moving smoothly and precisely--not clumsy as so many of his kind. His tail
           shows signs of having been broken and re-set.
           .end

All the standard rules for making lsedit descriptions apply; the only thing to keep in mind is that if you embed any MPI, it will be executed. Also, the description will wrap to fit the output size; this doesn't force one line in the list to be one line of output. If you want to start a new line, put "{nl}" at the start of where you want to ensure a new line. If you want a new paragraph...put "{nl}{nl}".

And those three setup the required descriptions.

4. Setting up additional outfits

Now, the real benefit of using these programs is having the ability to have many descriptions, not just three fixed ones. For instance, you might want to have a formal gown for those balls in Collinsel. Or you might want a different set of clothes when rebuilding Abbey walls than when marrying the mole of your dreams. Or, you might simply want to change clothes every day, some for winter, some for summer, because doing less is dull.

To make a new description, all that is needed is an lsedit for each of them. For instance, someone invites Otter ICly to a poetry reading. He doesn't want to show up caked in mud (though if he did, because he slipped on the way, there's good RP from such a mishap and embarassment...). No, he wants to show up looking good. Though, for a monk to look good, it's more a matter of grooming than dressing. Thus, here is Otter's fancy description:

    lsedit me=desc/fancy
     .del 1 999
     Otter's cloak is brushed out, along with his fur, and positively gleams. The
     gray could be mistaken for lightly brushed silver in the proper lighting. His
     brown fur is more like burnished oak than old mud, and his nails (hand and
     paw) are smoothly filed and glisten with the darkness of a winter's night.
     His posture is regal, not like the casual liquid slump he's normally seen in.
     The cloak flows about his form, both obscuring it and calling attention to
     the effortless motion he can shift into from perfect stillness.
     .end

The key to this is that the lsedit list was under "/desc/". I chose the word "fancy". You could have "BallGown", "Muddy", "WinterCloak", and they would be described as this:

 * lsedit me=/desc/BallGown
         * lsedit me=/desc/Muddy
         * lsedit me=/desc/WinterCloak

So, you can have as many different descriptions as you want, just give them each a short name and put "/desc/" in front of the name. In fact, to see what choices you have, type ex me=/desc/ and you'll see the names (in Otter's case):

str /desc/default#/:7
     str /desc/fancy#/:7
     So, you don't have to memorize the names you pick; just look them up as needed.

5. Using the program to choose what you wear

Once you have setup your descriptions, the command +desc is used to change to a new description. For instance, if I needed to use my fancy description, I would type +desc fancy and it will spew back that it's changed, and what the description is.

If you give it a name it doesn't know, it will tell you to lsedit that first. Always lsedit your descriptions before you try to use them.

6. Activation

Oddly enough, after all you've done, your description is just like it was when you started. You have setup clothing, but you haven't told the MUCK to show your new descriptions yet! Even +desc just tells the clothing system what you are wearing; it's what you describe yourself with using @desc me=Whatever that actually gets shown when someone looks.

Now, a comment: before you change your MUCK description property, you always want to backup the prior value in case you make a mistake. The description lives in a property named "_/de" on yourself (you can see it if you like by typing ex me=_/de). What we need to do is copy whatever is there for safe keeping, and then set the description we want.

To copy the description value to someplace safe, type this in exactly as shown:

   @mpi {store:{prop:_/de,me},_/desave,me}

What that did was duplicate your description to "_/desave" (which you can see by typing "ex me=_/"). Now, no matter what happens, you can always recover what you had that was good before.

So, with your old description saved, it's time to reset your description.

Feed this in exactly:

   @desc me={chardesc:{clothing:default}}

NOW if you look at yourself, it will show you whatever outfit you set with +desc. Try it! Try changing your outfit to a non-default outfit (using +desc). Look at yourself again. Set yourself OOC and look at yourself. You can't see your sleeping description until you logout and use an alt or a guest, of course.

At this point, your clothing is working! Congratulations. That wasn't so hard, was it (260 lines of web-code later, of course...)

7. More features if you wish

If you only want changeable clothes, you can stop reading now. If you want to have a few special features, and are comfortable with some MPI, there's a few tricks you might find useful.

1. Mixing constant data with clothing

Suppose that you always want the first or last line to be the same? You could copy the lines to your lsedit lists, but that's hardly elegant. Also, what if you want some MPI to run each time the description is looked at (such as look-notification MPI)? Putting that each time into each description is overkill also.

The answer is to add anything that should always be present to the description property itself. For instance, if I wanted to always have the current time show when you looked at me, I could enter this:

  @desc me={chardesc:{clothing:default}}{nl}You looked at Otter at {time}.

You still have the power to embed MPI in clothing (it will be parsed) if you want some special code run in only some of the cases.

2. Random bits

Sometimes, what you want is to have your description not be constant at all. For instance, you might want to have your character blink, or scratch his chin, or turn his head, just little random bits of text to appear at the end or start of all descriptions. This is easily done.

The first step is to make an lsedit list where each line is a single random event. Here's an example from Otter:

 lsedit me=rand_effects
           .del 1 999
           He sneezes and scratches his nose.
           He blinks as something's in his eye.
           His ears are up, as if he just heard something.
           He seems distracted by something.
           His attention is focused and he notices you.
           His nostrils are flared open.
           .end

The key is that each line of lsedit is exactly ONE complete statement!

The name I chose has no special significance. To use this list, the {rand} MPI command is ideal. My description property actually looks like this:

  @desc me={chardesc:{clothing:default}}{rand:desc_effects}

Of course, I've got an additional huge block of MPI spyware attached at the front of my description in-game, but that's for another article sometime.

3. Putting it together into a load-script

Keying all this stuff in raw is very hard. I keep a script that has my descriptions, so I can edit a file in my favorite editor (emacs for me, hopefully something better than notepad for you!).

To see this file, which is a simple text file, this link fetches it. It's just the bits of things that you've seen scattered throughout this document. There's one extra description, but it's done in exactly the same way the above ones are.

By using scripts, you can maintain on YOUR machine all your descriptions of all your rooms, characters, zombies, and anything else you build, and you can easily update them as needed. Then, tell your MU client to send the script (which is nothing more than the same commands you'd cut and paste or enter manually) into the game. And that's it! Edit a file, load a script, you're done. Much easier than hand-editing on the MU using the commands raw.

8. Conclusion

Having a character which can change clothes from heavy outerwear cloak to simple slave-garb in a flash gives you a lot more flexibility in your play. Doing so isn't hard...a little bit of lsedit and a one-time setting of your description property with @desc and you are ready to go!

Naturally, the staff will be happy to help if you get stuck.