Cob Tutorial 8

Introduction
Well you have come a long way since the first cheese tutorial now! (If you started with that one anyway) I had to look hard through my cob files to find anything new to put in this tutorial. :) In this tutorial you will create the blueberry vendor available for download on my website. The most important new stuff in this tutorial is the concept of targets (which was touched on in the last tutorial) and timer scripts.

Installation Script
inst new: simp hblv 29 0 3500 0 setv attr 199 setv cls2 2 8 31505 bhvr 1 1 slim edit endm

Nothing new here.

Push Script
scrp 2 8 31505 1 setv va04 targ setv actv 0 setv va00 posx addv va00 53 setv va01 posy addv va01 22 snde vend base 0 anim[0123456789] over base 10 anim[012345] over rndv va03 1 2 doif va03 eq 1 inst new: simp hblu 7 0 3500 0 setv cls2 2 7 31502 setv attr 195 bhvr 0 64 slim mvto va00 va01 setv grav 1 slow else doif va03 eq 2 inst new: simp hblu 7 0 3500 0 setv cls2 2 7 31502 setv attr 195 bhvr 0 64 slim mvto va00 va01 setv grav 1 slow endi endi targ va04 anim[6789] over base 20 anim[012345678] over base 0 pose 0 endm

scrp 2 8 31505 1 setv va04 targ Here we are storing the current target of the script in a variable called va04 for later use. The concept of a target is a very important one in caos scripting. The target is the object that the script is focusing on. When you play a game like Diablo and aim your weapon at one of the monsters, the monster you are focusing on is your target. This is exactly the same in caos scripting. If the script is focusing on the norn that is currently selected and telling it how it should behave or finding out its properties (ie. telling it to drop the object it is holding) then the norn is the target. If the script is focusing on the hand and tell it how to behave or find out its properties (ie. finding the top left coordinate of the hand in Albia) the hand is the target. If the script is telling the object itself what to do or finding out its properties (ie. finding out the attributes set for the object) the object is the target. By default the target of a script is the object itself. For the target to be anything else it must be manually changed (as seen later in the script). In this line of script we are setting (setv) the variable (va04) to the current target (targ) so we can set the target later on in the script back to what it was originally.

setv actv 0 setv va00 posx addv va00 53 setv va01 posy addv va01 22 snde vend base 0 anim[0123456789] over base 10 anim[012345] over rndv va03 1 2 doif va03 eq 1 inst new: simp hblu 7 0 3500 0 The target is now changed from being the blueberry vendor to the blueberry juice that has just been created by the new: simp command.

setv cls2 2 7 31502 setv attr 195 bhvr 0 64 slim mvto va00 va01 setv grav 1 slow This is sort of the opposite of the inst command. The inst command makes the script following it occur without interruption (so creatures doesn’t autosave halfway though injecting a cob or something). The slow makes the rest of the script execute at a normal pace.

else doif va03 eq 2 inst new: simp hblu 7 0 3500 0 setv cls2 2 7 31502 setv attr 195 bhvr 0 64 slim mvto va00 va01 setv grav 1 slow endi endi targ va04 We have now set the target back to what it was at the beginning of the script. At the beginning of the script the target was the blueberry vendor. Then the target changed to the cup of blueberry juice when the cup of blueberry juice wall installed. Now the target is the blueberry vendor again so we can finish the animation. If we didn’t set the target to the blueberry vendor creatures would try to animate the cup instead. And the vendor would be stuck where it was when the cup was injected.

anim[6789] over base 20 anim[012345678] over base 0 pose 0 endm

Drop script
scrp 2 8 31505 6 snde drop endm

Blueberry juice eat script
scrp 2 7 31502 12 snde drnk anim[0123456] tick 60 Tells Creatures to activate the timer script (script number nine) in 60 ticks. The command layout is tick . This is a very useful script as it can be used to activate certain pieces of script with a time delay. In this case, 60 ticks after the juice is eaten the blueberry juice cup disappears.

stim writ from 0 255 0 0 37 150 50 150 73 150 70 150 endm

Blueberry juice Timer script
scrp 2 7 31502 9 Script nine is the timer script which is activated by the tick  command.

kill targ endm

Blueberry juice drop script
scrp 2 7 31502 6 snde drop endm

Conclusion
The concept of a target is really important in Creatures as it enables the commands in the script not to effect just the object itself, but also interact with other creatures and objects near it. :) You’ve really got a good grip on cobbing now if you understand everything you’ve learnt in the tutorials so far. I think there is only a few more simple objects I can do a tutorial on now and then we can move on to stuff like rooms and movers. :)

Acknowledgements
The vendor sprite used in this cob was created by NORNgod (http://www.norngod.com)