* Script  9 TIMER
scrp 2 20 3 9
	tick 10
	doif ov02 eq 3
		kill ownr
	endi
	doif ov02 eq 4
		gsub crot
		kill ownr
	endi
	gsub cage
	gsub stat
	gsub pegg
	gsub cegg
	doif rtyp ne 2
		gsub sgrv
	else
		gsub addr
		doif ov00 eq 1
			gsub scho
		endi
		gsub rock
		gsub food
		gsub limv
		gsub anmt
		setv velx ov50
		setv vely ov51
		doif ov02 gt 0
			rndv var0 0 4
			doif var0 eq 0
				gsub bubb
			endi
		endi
	endi
	subr crot
		setv var0 posl
		setv var1 post
		base 0
		doif pose le 7
			setv var2 0
		else
			setv var2 1
		endi
		inst
		new: simp zand 2 32 5999 0
		setv cls2 2 11 6
		setv attr 195
		setv rest 100
		setv accg 3
		setv puhl -1 15 13
		base 0
		pose var2
		mvto var0 var1
		setv grav 1
		tick 1000
		slow
	retn
	subr cage
		doif seav eq ov04
			addv ov04 5
			modv ov04 20
			subv ov03 1
			doif ov03 le 0
				doif ov02 eq 0
					setv ov03 14
					setv puhl -1 16 8
					bhvr 0 64
				endi
				doif ov02 eq 1
					setv ov03 4
				endi
				doif ov02 eq 2
					pose 0
					setv attr 195
					setv grav 1
					setv ov02 4
					tick ov11
					stop
				endi
				addv ov02 1
			endi
		endi
	retn
	subr stat
		doif ov00 eq 0
			doif sean eq 1
				doif seav eq 15
					setv ov00 1
				endi
			endi
		endi
	retn
	subr pegg
		doif sean eq 2
			doif seav eq 0
				doif ov00 eq 1
					rndv ov01 1 2
					gsub zpop
					doif var1 le 3
						addv ov01 2
					endi
					setv ov00 0
				endi
			endi
		endi
	retn
	subr zpop
		setv var1 0
		setv rnge 1000
		esee 2 20 3
			addv var1 1
		next
		setv rnge 40
	retn
	subr cegg
		doif ov01 gt 0
			setv var0 posx
			setv var1 posy
			inst
			new: simp zand 1 34 5999 0
			setv cls2 2 20 7
			setv attr 195
			rndv accg 3 5
			setv rest 0
			setv rnge 1000
			setv size 20
			mvto var0 var1
			slim
			setv grav 1
			tick 50
			slow
			targ ownr
			subv ov01 1
		endi
	retn	
	subr sgrv
		negv ov51
		setv attr 195
		setv grav 1
		setv var0 0
		loop
			doif obst 3 le 0
				rndv var1 -10 10
				setv velx var1
				setv vely -5
				doif velx lt 0
					doif ov02 eq 0
						base 16
					else
						base 0
					endi
				else
					doif ov02 eq 0
						base 24
					else
						base 8
					endi
				endi
			endi
			wait 1
			addv var0 1
			doif var0 ge 300
				doif ov02 eq 0
					setv ov02 3
					pose 0
					tick 100
				else
					setv ov02 4
					pose 0
					tick ov11
				endi
				stop
			endi
		untl rtyp eq 2
		setv grav 0
		setv attr 67
		tick 1
	retn
	subr addr
		rndv var1 0 9
		doif var1 ge 6
			setv var0 -1
		else
			setv var0 1
		endi
		doif ov50 lt 0
			negv var0
		endi
		addv ov50 var0
		rndv var1 0 8
		doif var1 ge 4
			setv var0 -1
		else
			setv var0 1
		endi
		doif ov51 lt 0
			negv var0
		endi
		addv ov51 var0
	retn
	subr scho
		gsub gdat
		doif var9 gt 0
			setv ov50 0
			setv ov51 0
			gsub cent
			gsub near
			gsub velo
		endi
	retn
	subr gdat
		setv var0 0
		setv var1 0
		setv var2 0
		setv var3 0
		setv var4 rnge
		mulv var4 3
		setv var5 0
		setv var6 0
		setv var9 0
		esee 2 20 3
			doif attr eq 67
			addv var0 relx
			addv var1 rely
			setv var7 var0
			doif var7 lt 0
				negv var7
			endi
			setv var8 var1
			doif var8 lt 0
				negv var8
			endi
			addv var7 var8
			doif var7 lt var4
				setv var4 var7
				setv var2 var0
				setv var3 var1
			endi
			addv var5 velx
			addv var6 vely
			addv var9 1
		endi
	next
	retn
	subr cent
		divv var0 var9
		divv var1 var9
		divv var0 30
		divv var1 30
		addv ov50 var0
		addv ov51 var1
	retn
	subr near
		doif var2 eq 0
			setv var2 1
		endi
		doif var3 eq 0
			setv var3 1
		endi
		setv var0 -5
		divv var0 var2
		doif var0 gt 2
			setv var0 2
		endi
		setv var1 -5
		divv var1 var3
		doif var1 gt 2
			setv var0 2
		endi
		addv ov50 var0
		addv ov51 var1
	retn
	subr velo
		divv var5 var9
		divv var6 var9
		setv var0 var5
		doif var0 lt 0
			negv var0
		endi
		setv var1 var6
		doif var1 lt 0
			negv var1
		endi
		addv var0 var1
		doif var0 eq 0
			setv var0 1
		endi
		mulv var5 8
		mulv var6 8
		divv var5 var0
		divv var6 var0
		addv ov50 var5
		addv ov51 var6
		divv ov50 2
		divv ov51 2
	retn
	subr rock
		doif obst 0 lt 20
			rndv ov50 1 2
		endi
		doif obst 1 lt 20
			rndv ov50 -2 -1
		endi
		doif obst 2 lt 20
			rndv ov51 1 2
		endi
		doif obst 3 lt 20
			rndv ov51 -2 -1
		endi
	retn
	subr food
		setv var9 0
		setv rnge 500
		esee 2 9 14
			doif ov00 eq 2
				setv var0 relx
				setv var1 rely
				setv var9 1
			endi
		next
		setv rnge 40
		doif var9 eq 1
			doif var0 lt 0
				subv ov50 10
			else
				addv ov50 10
			endi
			doif var1 lt -116
				subv ov51 10
			else
				addv ov51 10
			endi
		endi
	retn
	subr limv
		setv var0 ov50
		doif var0 lt 0
			negv var0
		endi
		setv var1 ov51
		doif var1 lt 0
			negv var1
		endi
		addv var0 var1
		doif var0 ge 5
			mulv ov50 5
			mulv ov51 5
			divv ov50 var0
			divv ov51 var0
		endi
		doif ov51 gt 1
			setv ov51 1
		endi
		doif ov51 lt -1
			setv ov51 -1
		endi
		doif ov50 eq 0
			rndv var0 0 1
			doif var0 eq 0
				setv ov50 -1
			else
				setv ov50 1
			endi
		endi
		doif ov51 eq 0
			rndv var0 0 1
			doif var0 eq 0
				setv ov51 -1
			else
				setv ov51 1
			endi
		endi
		rndv var0 0 1
		doif var0 gt 0
			setv ov51 0
		endi
	retn
	subr anmt
		doif ov50 lt 0
			doif ov02 eq 0
				base 16
			else
				base 0
			endi
		endi
		doif ov50 gt 0
			doif ov02 eq 0
				base 24
			else
				base 8
			endi
		endi
	retn
	subr bubb
		setv var0 posl
		doif ov50 lt 0
			subv var0 13
		else
			addv var0 21
		endi
		setv var9 ov50
		mulv var9 2
		addv var0 var9
		setv var1 post
		subv var1 12
		setv var9 ov51
		mulv var9 2
		addv var1 var9
		reps 10
			rtar 2 1 28
			doif ov00 eq 0
				mesg wrt+ targ 256 var0 var1 0
				stop
			endi
		repe
	retn
endm

* Script 
scrp 2 20 3 12
	stim writ from 10 255 0 0 36 75 37 150 74 50 79 150
	gsub crot
	kill ownr
	subr crot
		setv var0 posl
		setv var1 post
		base 0
		doif pose le 7
			setv var2 0
		else
			setv var2 1
		endi
		inst
		new: simp zand 2 32 5999 0
		setv cls2 2 11 6
		setv attr 195
		setv rest 100
		setv accg 3
		base 0
		pose var2
		mvto var0 var1
		setv grav 1
		tick 1000
	retn
endm
