* i am: the amazing eating/mating rats * dunby jon (in an unusually serious mood) * 0 - sitting still * 1 2 3 4 5 6 - running * 7 8 9 10 - jumping inst * ov00 = rats life stage * ov01 = how long the rats been at this age reps 3 new: simp 2 31 1 "rats!!" 84 0 1000 attr 192 elas 0 accg 7 mvto rand 5018 5600 1170 tick 10 anim [0 1 2 3 255] setv ov00 0 seta ov02 null * random sex setv ov10 rand 0 1 * ov02 is current food target * ov03 is number of ticks since i looked for something to eat * ov04 is number of ticks since i had somthing to eat * ov05 total energy the rat has * ov06 time since last mating * ov10 sex (0 = female 1 = male) * ov11 pregnant?? * ov12 how many tick's pregnant repe reps 5 new: simp 2 22 1 "thegothiccheesemachine" 10 11 201 pose 6 attr 198 bhvr 48 accg 7 mvto rand 5018 5600 1170 elas 0 repe endm scrp 2 31 1 9 * WARNING: these scripts are boring comment zone inst gsub dstf doif ov00 eq 0 addv ov01 1 mesg wrt+ ownr 256 0 0 0 stop elif ov00 eq 1 addv ov01 1 mesg wrt+ ownr 257 0 0 0 stop elif ov00 eq 2 addv ov06 1 doif ov11 eq 1 gsub prgs endi mesg wrt+ ownr 257 1 0 0 stop endi subr prgs doif ov12 gt 15 setv velx 0 lock setv va00 posx setv va01 posy setv va02 velx * we haven't reached population limit. no sir. doif totl 2 31 1 lt 10 gsub baby mvto va00 va01 doif va02 gt 0 setv velx rand -7 -20 setv vely -30 else setv velx rand 7 20 setv vely -30 endi endi targ ownr setv ov12 0 setv ov11 0 doif ov05 gt 0 subv ov05 5 endi unlk else addv ov12 1 endi retn subr baby inst * make a baby rat new: simp 2 31 1 "rats!!" 84 0 1000 doif ov13 gt 0 else doif totl 2 31 1 gt 12 * shut your eyes an wish for a multi-coloured rat kiddys ;) .... setv ov13 rand 1 255 setv ov14 rand 1 255 setv ov15 rand 1 255 tint ov13 ov14 ov15 128 128 endi endi attr 192 elas 0 accg 7 tick 10 anim [0 1 2 3 255] setv ov00 0 seta ov02 null * random sex setv ov10 rand 0 1 slow retn subr dstf gsub chka retn subr chka setv va03 posx setv va04 posy * checks age and grows the little blighters doif ov00 eq 0 and ov01 gt 20 doif obst left lt 50 * it's too close! doif tmvb 45 -50 eq 1 mvby 45 -50 else mvsf va03 va04 endi elif obst rght lt 50 * move it! now! doif tmvb -45 -50 eq 1 mvby -45 -50 else mvsf va03 va04 endi else * everything seems normal sir doif tmvb 0 -50 eq 1 mvby 0 -50 else mvsf va03 va04 endi endi attr 192 setv vely 0 base 4 anim [1 2 3 4 5 6 255] setv ov00 1 setv ov01 0 elif ov00 eq 1 and ov01 eq 20 doif obst left lt 50 * it's too close! doif tmvb 50 -50 eq 1 mvby 50 -50 else mvsf va03 va04 endi elif obst rght lt 50 * move it! now! doif tmvb -50 -50 eq 1 mvby -50 -50 else mvsf va03 va04 endi else * everything seems normal sir doif tmvb 0 -50 eq 1 mvby 0 -50 else mvsf va03 va04 endi endi attr 192 setv vely 0 base 44 anim [1 2 3 4 5 6 255] setv ov00 2 setv ov01 0 endi retn endm scrp 2 31 1 6 doif wall eq 3 doif ov00 ne 0 * mvby 0 -1 attr 64 setv vely 0 endi elif wall eq 1 setv vely 0 doif ov00 eq 1 base 4 setv velx -6 elif ov00 eq 2 base 44 setv velx -6 endi elif wall eq 0 setv vely 0 doif ov00 eq 1 base 24 setv velx 6 elif ov00 eq 2 base 64 setv velx 6 endi endi endm scrp 2 31 1 256 * baby rat timer * just bounce about tick rand 8 30 setv vely rand -5 -10 setv velx rand 5 -5 endm * rats scrp 2 31 1 257 inst setv va00 rand 0 20 doif va00 eq 0 snde "rat1" elif va00 eq 1 snde "rat2" elif va00 eq 2 snde "rat3" endi gsub dxnt subr dxnt * child/adult rat: - make next decision doif ov02 ne null * go and eat/mate if i've got something in mind targ ov02 doif touc ownr targ eq 1 * i've reached the food/mate!!! tick 70 targ ownr setv velx 0 doif ov02 ne ownr doif ov02 eq null stop endi targ ov02 doif relx ownr targ gt 0 targ ownr gsub basr targ ov02 doif gnus eq 31 gsub mate else gsub eat_ endi targ ownr else targ ownr gsub basl targ ov02 doif gnus eq 31 gsub mate else gsub eat_ endi targ ownr endi endi tick 10 elif relx targ ownr gt 0 targ ownr gsub basl setv velx -5 elif relx targ ownr lt 0 targ ownr gsub basr setv velx 5 endi else * i'm not currently tracking food/mate * look for a mate doif ov06 gt 10 and ov05 gt 20 and ov11 ne 1 and ov00 eq 2 setv ov06 0 setv va00 ov10 enum 2 31 1 doif va00 eq 0 and ov10 eq 1 and ov05 gt 20 and ov00 eq 2 seta ov02 ownr seta va00 targ targ ownr seta ov02 va00 stop elif va00 eq 1 and ov10 eq 0 and ov11 ne 1 and ov05 gt 20 and ov00 eq 2 seta ov02 ownr seta va00 targ targ ownr seta ov02 va00 stop endi next endi doif ov03 eq 5 * time to look for dinner setv ov03 0 rtar 2 22 1 * that is indeed some food doif targ ne null doif gnus eq 22 and targ ne null seta va00 targ * check no other rat's after it enum 2 31 1 doif ov02 eq va00 setv va01 1 endi next doif va01 eq 0 * no other rat has it's eye on your food targ ownr seta ov02 va00 tick 2 endi endi endi else doif rand 0 10 eq 0 * start jump action setv va00 1 attr 192 setv vely -20 doif rand 0 1 eq 0 setv velx rand -20 -15 else setv velx rand 20 15 endi setv va01 velx * animation of jump done @ "doif va00 eq 1" else doif _p1_ eq 0 gsub kidr else gsub adtr endi endi * check for a norn i reckon etch 4 0 0 doif rand 0 3 eq 1 doif rand 0 10 eq 1 chem 148 0.01 endi setv va02 relx ownr targ targ ownr * start jump action setv va00 1 attr 192 setv vely -20 doif va02 lt 0 setv velx rand -20 -15 else setv velx rand 20 15 endi setv va01 velx endi next * generic doif velx gt 0 gsub basr elif velx lt 0 gsub basl endi doif va00 eq 1 * jumping lock anim [7 8 9 10] slow over inst anim [1 2 3 4 5 6 255] doif va01 gt 0 subv va01 5 else addv va01 5 endi setv velx va01 unlk endi targ ownr addv ov03 1 addv ov04 1 endi endi retn subr kidr * child rat random movment tick rand 8 20 setv velx rand -10 10 retn subr adtr * the adults movment doif ov05 gt 0 subv ov05 1 endi tick rand 10 24 setv velx rand -15 15 * don't want the little buggers sitting still doif velx lt 3 and velx gt -3 doif velx gt 0 setv velx 3 else setv velx -3 endi endi retn subr basl doif _p1_ eq 0 base 4 else base 44 endi retn subr basr doif _p1_ eq 0 base 24 else base 64 endi retn subr eat_ targ ownr * eat stuff anim [12 13 14 15 16 17 18 19 255] slow wait 10 inst doif ov02 ne null kill ov02 endi targ ownr seta ov02 null addv ov05 20 slow wait 3 inst anim [1 2 3 4 5 6 255] * reset "since i ate" counter setv ov04 0 retn subr mate targ ownr doif ov10 eq 0 setv ov11 1 endi seta ov02 null doif ov05 gt 0 subv ov05 20 endi retn endm scrp 2 31 1 255 * exception thingy seta ov02 null endm rscr enum 2 22 1 kill targ next enum 2 31 1 kill targ next endm