Welcome to the Creatures Wiki! Log in and join the community.

Cob Tutorial 8

From Creatures Wiki
Revision as of 21:13, 31 January 2020 by ScoobyGambit (talk | contribs) (→‎Push Script)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Introduction[edit]

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[edit]

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[edit]

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[edit]

scrp 2 8 31505 6 snde drop endm

Blueberry juice eat script[edit]

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

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

Blueberry juice Timer script[edit]

scrp 2 7 31502 9

Script nine is the timer script which is activated by the tick

kill targ
endm

Blueberry juice drop script[edit]

scrp 2 7 31502 6
snde drop
endm

Conclusion[edit]

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[edit]

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