♪ So, now you have a doll. A very, very basic doll. But a doll, nonetheless.

Now we're going to experience what many other artists hate the most: programming the clothes. This document is going to [attempt to] teach you how to add clothing, put backs on things, and how to make the doll blink & stuff disappear & appear.

Open the CNF file. It should say:
(600, 480)

%blobby.kcf

#0 basedoll.cel *0: 0 1 2 3 4 5 6 7 8 9
with the proper filenames.

Now we're going to add a line above the #0 line and put:
#1 sweater.cel *0: 0 1 2 3 4 5 6 7 8 9
but it doesn't have to be named 'sweater'. If you made a skirt, or a shirt, or pants, put that. Make up some tricky filename. Whatever.

The reason you have to put the #1 line ABOVE the #0 line is because the layers of KiSS are arragned from top to bottom in a CNF file the same way they are if you drag all the clothes from a KiSS doll set over each other to see which one is above everything else. Everything above 'basedoll.cel' is above the base doll. Everything below the 'basedoll.cel' is below it.
And, you can't make everything #0 or it will all stick together in a great big jumbled mess. But this is very useful.
You can put backs on things.

And here's how.
You have the article of clothing. Let's pretend it's a sweater.

Now draw it as if the person or thing is not wearing it.

This gives it a bit of a 3D effect. Now, save this version, with the rectangle box and 256 colors, of course, and go through the whole process of making it into a cel, and add it UNDER the 'basedoll.cel' as
#1 sweater2.cel *0: 0 1 2 3 4 5 6 7 8 9

So, just for the clothing, we have

#1 sweater.cel *0: 0 1 2 3 4 5 6 7 8 9
#0 basedoll.cel *0: 0 1 2 3 4 5 6 7 8 9
#1 sweater2.cel *0: 0 1 2 3 4 5 6 7 8 9
on our CNF file.

You probably will have to redo the object, since it will most likely not stick together. Just open the 'sweater2.bmp' or whatever and omit the background until you have the original clothing, 'sweater.bmp' or whatever. Don't adjust the rectangle box on 'sweater.bmp' or whatever.

There. Now you have a piece of clothing. Redo these steps MANY MANY times until you have all the clothing you could ever want. This 'same-object' trick works with the body itself, if you have an arm crossing over the body or a leg or something, make the arm or leg a different cel but with the same object.

Now for the FKiSS.

FKiSS, for one thing, gives the doll a different dimension. It can blink, react to things, or things around it can blink or move or whatever your heart desires.

Open up your CNF file. Scroll down to where it says
;@EventHandler() ;
;@initialize()
Under the ;@initialize() is where the FKiSS stuff is. All lines of FKiSS must start with ;@ like the ;@EventHandler() and the ;@initialize().
Here are some basic commands.
;@ unmap() [enter cel name in the (), in quotations]
;@ map() [enter cel name in the (), in quotations]
;@press() [enter cel name in the (), in quotations]
;@release() [enter cel name in the (), in quotations]
;@ timer(,) [enter numbers on either side of , in (,)]
;@alarm() [enter number of alarm in the ()]
;@in(,) [enter cel names on either side of , in (,), in quotations]
;@out(,) [enter cel names on either side of , in (,), in quotations]
;@set() [enter number of set, 0-9, in the ()]
;@begin() [enter nothing in the ()]

;@ unmap() Unmap command unmaps things. If you put this directly under ;@initialize(), the thing will be gone when you open the KiSS doll.
;@ map() Map command remaps the thing. You will have to tell it how to map or unmap things.
Like so.
;@press() The press command will make something happen when you click on the object in parentheses.
;@release() The release command will make something happen when you stop clicking on the object in parentheses.
;@ timer(,) The timer command states for how long something should stay mapped or unmapped.
;@alarm() The alarm command states at which stage the FKiSS sequence is in and what it should be doing at that stage.
;@in(,) The in command, which can also can be replaced by the collide command, will allow things to happen when you overlap the two cels stated in the parentheses, separated by the comma.
;@out(,) The out command will allow things to happen when you overlap the two cels stated in the parentheses, separated by the comma.
;@set() The set command will make certain things appear and disappear on certain set numbers.
;@begin() The begin command will make things happen as soon as you open the KiSS doll.

Now for the blinking. This requires the alarm command, the timer command, the begin command, and the map/unmap commands.

I'll start with the blinking from my Meiran/Wufei set, because it demonstrates two kinds of blinking.

Here's the code for Wufei's blinking: a simple, easy, hard blink.

;@EventHandler()
;
;@initialize()
;@ unmap("blink.cel")
;@ timer(1, 250)
;@alarm(1)
;@ map("blink.cel")
;@ timer(2, 150)
;@alarm(2)
;@ unmap("blink.cel")
;@ timer(1, 2500)

The (1) in the first part of the timer tells the timer which alarm to go to next when the time is up. The (2) does the same. The (25), (25), and (2500) are all periods of time. Experiment. Bigger numbers are longer, smaller numbers pass by in an instant.

This requires one blinking cel. Blobby's sister Melfina, named after the bio-android from Outlaw Star, will now demonstrate.


This is what you have on your doll. Presumably.


Draw the doll blinking.

The 'blink.cel' should probably be the same object number as the body, or you'll have to pause the doll right when it blinks to adjust the 'blink.cel'. This can be done by clicking 'Project' and 'Pause FKiSS'.

Now we'll move on to a gentler blink, like Meiran's.

We'll need a half-blink. Melfina will now demonstrate.

A half-blink.

Here's the code for Meiran's blinking.

;@EventHandler()
;
;@initialize()
;@ unmap("blink.cel")
;@ unmap("blink2.cel")
;@ timer(1, 250)
;@alarm(1)
;@ map("blink.cel")
;@ timer(2, 150)
;@alarm(2)
;@ unmap("blink.cel")
;@ map("blink2.cel")
;@ timer(3, 150)
;@alarm(3)
;@ map("blink.cel")
;@ timer(4, 150)
;@alarm(4)
;@ unmap("blink.cel")
;@ unmap("blink2.cel")
;@ timer(1, 2500)

Now you can make your doll blink.

With this, you can do...a lot of things.

Here's the code for the action in my doll Milphey-Yu: when you click Marron, object number #70, Milphey becomes 'genki', or very happy.

;@press(#70)
;@ map("genki.cel")
;@release(#70)
;@ unmap("genki.cel")

This can go basically anywhere under the ;@initialize() code. When you release Marron, Milphey becomes his regular, smiling self.
The 'in' and 'out' codes work the same way as the 'press'/'release' codes.

On to Lesson Four