Snuggling Your Sugarpie Honeybunch

If you haven't done a simple sleeping description you might want to read that page first.

This sleeping description assumes you have one person you normally cuddle when you sleep. I'll briefly address adding more people at the end of this tutorial.

We start with the simple sleeping description set up, an awake description in redesc and a sleeping one in sleep:

@desc me={if:{ne:{awake:me},0},{eval:{list:redesc}},{eval:{list:sleep}}}

We need to make one change to allow multiple sleeping descriptions:

@desc me={if:{ne:{awake:me},0},{eval:{list:redesc}},{exec:sleeping,me}}

As you can see the second {eval:} has been replaced with an {exec:} primitive, this takes the name of a property and the object on which it is located. All this part does is check to see if you're sleeping when someone looks at you, if you aren't your regular description is displayed. If you are sleeping it goes to the next part of the MPI setup which is in a property called sleeping.

Now we need to set the property sleeping (this would be all on one line of course, I'm breaking it for clarity):

@set me=sleeping:{if:{ne:{awake:name},0},{eval:{list:sleep,me}},
{if:{eq:{lmember:{contents:here,player},name},0},
{eval:{list:cuddle,me}},{eval:{list:sleep,me}}}

First, replace name with the name of your cuddle target.

The first chunk is an{if:} checking to see if name is awake, if they are you must be sleeping alone, that's the first {eval:}.

Then if name is sleeping the middle chunk uses {contents:} to get a list of players in the room with you and then uses {lmember:} to check if name is one of them.

Finally if name is in the room with you the first {eval:} is used, if name isn't there you must be sleeping alone and the second {eval:} is used.

Now go into lsedit and write your descriptions.

First your awake description (which you probably already have done).

lsedit me=redesc

The your sleeping alone description.

lsedit me=sleep

And finally your sleeping description when you're cuddling your sweetie.

lsedit me=cuddle

And that's it if you only have one person you cuddle in your sleep.

Now I'll show you a version with two people to cuddle with. I'm not going to explain that much here since it should be easy enough to figure out from looking at the single person case. I will explain that I've used underscored properties to make my character neater when I examine it. Properties that start with underscores don't show up in a regular ex me and therefore make quick peeks at the details of your character a lot less spammy. And of course long lines have been artificially wrapped.

@desc me={if:{ne:{awake:me},0},{eval:{list:redesc,me}},{exec:_sleeping,me}}

@set me=_sleeping:{if:{ne:{awake:name},0},{exec:_sleeping/noname,me},
{if:{eq:{lmember:{contents:here,player},name},0},
{exec:_sleeping/name,me},{exec:_sleeping/noname,me}}}

@set me=_sleeping/noname:{if:{ne:{awake:name2},0},
{eval:{list:_sleeping/alone/desc,me}},
{if:{eq:{lmember:{contents:here,player},name2},0},
{eval:{list:_sleeping/name2/desc,me}},
{eval:{list:_sleeping/alone/desc,me}}}}

@set me=_sleeping/name:{if:{ne:{awake:name2},0},
{eval:{list:_sleeping/name/desc,me}},
{if:{eq:{lmember:{contents:here,player},name2},0},
{eval:{list:_sleeping/name/desc,me}},
{eval:{list:_sleeping/both/desc,me}}}}

You'd need to make the following descriptions:

redesc
_sleeping/alone/desc
_sleeping/name/desc
_sleeping/name2/desc
_sleeping/both/desc

As you can see for each person added the MPI gets more and more complex. For 1 person you needed 3 descriptions, for 2 people you need 5, for 3 people you'd need 9, and for 4 people you'd need 17! For those that haven't noticed the pattern, it's (2^n)+1 where n is the number of snugglemates. So 7 mates would be 129 descriptions. For that reason alone it's best to keep the numbers small.


Code Main

 

©1997-2001 Lynn A. Davis