0,]']±>Sï}WÿÍu§ğp8·d%qy)6o;]ÉA¦ösï÷ôôô”°ÂVl†3>>???????? 00@0p0p0`0@00à00€0€00 0À0à0à0ğ0000000000000  @ ` p € p $ cc c CC C C cc c CC C C ccc CCC C ccc CC cc†„„„„¤¤¤¤Ȇ„„„„¤¤¤¤ȆȤ¤¤„„„„ÈȤ¤¤„„¤È„Ȥ¤¤ cc cccc c„„„„dd¨„¨¨„¨„„„„dd„¨„„dd¨¨„„cc ccc c cccccc Ccc cƒƒ ƒƒcƒ ƒ ƒƒƒ<'c\)c])c_)c†„F„†„F„†„F„†Ȇ„F„†„F„†„F„†Ȇ„†„†„F„F„†Ȇ„F„†„F„†ȆȆȆÈ cc c CC C C cc c CC C Ccc cCC CCƒ c cc Cƒ cccV)ƒ X)ƒ c c cƒƒ ƒ ƒƒƒccc CccV)ƒ X)ƒ c c cƒƒY)ƒ8)ƒ†ȆȆȆÈ0fHŠKL@ÿÏ>îÿïîîîïïşÿïîîîïïşÿïîîîïïşÿïîîîïïşÿïîîîïïşÿïîîîïïşÿïîîîïïşÿïîîîïïşÿïîîîïïşÿïîîîïïşÿïîîîïïşÿïîîîïïşÿïîîîïïşÿïîîîïïşÿïîîîïïşÿîîîîîîÿÿîîîîîîÿÿîîîîîîÿÿîîîîîîÿÿîîîîîîÿÿîîîîîîÿÿîîîîîîÿÿîîîîîîÿÿîîîîîîÿÿîîîîîîÿÿîîîîîîÿÿîîîîîîÿÿîîîîîîÿÿîîîîîîÿÿîîîîîîÿÿíîîîşşÿÿíîîîşşÿÿíîîîşşÿÿíîîîşşÿÿíîîîşşÿÿíîîîşşÿÿíîîîşşÿÿíîîîşşÿÿíîîîşşÿÿíîîîşşÿÿíîîîşşÿÿíîîîşşÿÿíîîîşşÿÿíîîîşşÿÿíîîîşşïßíîîîîÿşßíîîîîÿşßíîîîîÿşßíîîîîÿşßíîîîîÿşßíîîîîÿşßíîîîîÿşßíîîîîÿşßíîîîîÿşßíîîîîÿşßíîîîîÿşßíîîîîÿşßíîîîîÿşßíîîîîÿşßíîîîîÿÿßİŞîîÿÿÿßİŞîîÿÿÿßİŞîîÿÿÿßİŞîîÿÿÿßİŞîîÿÿÿßİŞîîÿÿÿßİŞîîÿÿÿßİŞîîÿÿÿßİŞîîÿÿÿßİŞîîÿÿÿßİŞîîÿÿÿßİŞîîÿÿÿßİŞîîÿÿÿßİŞîîÿÿÿßİŞîîÿÿïßİííşİşşßİííşİşşßİííşİşşßİííşİşşßİííşİşşßİííşİşşßİííşİşşßİííşİşşßİííşİşşßİííşİşşßİííşİşşßİííşİşşßİííşİşşßİííşİşşßİííşİşşßİİíßîîÿßİİíßîîÿßİİíßîîÿßİİíßîîÿßİİíßîîÿßİİíßîîÿßİİíßîîÿßİİíßîîÿßİİíßîîÿßİİíßîîÿßİİíßîîÿßİİíßîîÿßİİíßîîÿßİİíßîîÿßİİíßîîÿßİíİíîşÿßİíİíîşÿßİíİíîşÿßİíİíîşÿßİíİíîşÿßİíİíîşÿßİíİíîşÿßİíİíîşÿßİíİíîşÿßİíİíîşÿßİíİíîşÿßİíİíîşÿßİíİíîşÿßİíİíîşÿßİíİíîşşßİİŞîîîÿßİİŞîîîÿßİİŞîîîÿßİİŞîîîÿßİİŞîîîÿßİİŞîîîÿßİİŞîîîÿßİİŞîîîÿßİİŞîîîÿßİİŞîîîÿßİİŞîîîÿßİİŞîîîÿßİİŞîîîÿßİİŞîîîÿßİİŞîîîÿÿİİİíîşÿİİİíîşÿİİİíîşÿİİİíîşÿİİİíîşÿİİİíîşÿİİİíîşÿİİİíîşÿİİİíîşÿİİİíîşÿİİİíîşÿİİİíîşÿİİİíîşÿİİİíîşÿİİİíîşÿÿØİˆîşÿØİˆîşÿØİˆîşÿØİˆîşÿØİˆîşÿØİˆîşÿØİˆîşÿØİˆîşÿØİˆîşÿØİˆîşÿØİˆîşÿØİˆîşÿØİˆîşÿØİˆîşÿØİˆîşÿ؈ˆøÿÿˆØˆˆøÿÿˆØˆˆøÿÿˆØˆˆøÿÿˆØˆˆøÿÿÌØˆˆøÿÿˆØˆˆøÿÿˆØˆˆøÿÿˆØˆˆøÿÿˆØˆˆøÿÿˆØˆˆøÿÿˆØˆˆøÿÿˆØˆˆøÿÿˆØˆˆøÿÿˆØˆˆøÿÿˆˆˆˆˆøÿˆˆˆˆˆøÿˆˆˆˆˆøÿˆˆˆˆˆøÿˆˆˆˆˆøÿψˆˆˆøÿˆˆˆˆˆøÿˆˆˆˆˆøÿˆˆˆˆˆøÿˆˆˆˆˆøÿˆˆˆˆˆøÿˆˆˆˆˆøÿˆˆˆˆˆøÿˆˆˆˆˆøÿˆˆˆˆˆøÿÿˆˆˆˆˆˆÿˆˆˆˆˆˆÿˆˆˆˆˆˆÿˆˆˆˆˆˆÿˆˆˆˆˆˆÿψˆˆˆˆˆÿˆˆˆˆˆˆÿˆˆˆˆˆˆÿˆˆˆˆˆˆÿˆˆˆˆˆˆÿˆˆˆˆˆˆÿˆˆˆˆˆˆÿˆˆˆˆˆˆÿˆˆˆˆˆˆÿˆˆˆˆˆˆÿˆˆˆˆˆˆÿˆˆˆˆˆˆˆÿˆˆˆˆˆˆˆÿˆˆˆˆˆˆˆÿˆˆˆˆˆˆˆÿŒˆˆˆˆˆˆÿˆˆˆˆˆˆˆÿˆˆˆˆˆˆˆÿˆˆˆˆˆˆˆÿˆˆˆˆˆˆˆÿˆˆˆˆˆˆˆÿˆˆˆˆˆˆˆÿˆˆˆŒˆˆˆÿˆˆˆˆˆˆˆÿˆˆˆˆˆˆˆÿˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆØÜˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆØÜˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÌÌŒˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÌÌŒˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆØÜˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆØÜˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆŒˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆŒˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÌˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆXUU…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆXUˆˆX…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUˆˆˆˆX…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆX…ˆˆˆˆˆ…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆŒˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆXˆˆ˜ˆˆˆXˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆØÜˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÈˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUˆˆ˜ªˆˆXˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÌÌŒˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÍˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ…ˆŠ™™Šˆˆ…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆØÜˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÈÌ̈ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ…ˆª™I©ˆˆ…ˆˆˆˆˆˆˆUU…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆŒˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÍˆˆˆˆˆˆˆˆˆˆˆUUˆˆˆˆ…ˆª™™©ˆˆ…ˆˆˆˆˆˆU…ˆU…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÈˆˆˆˆˆˆˆˆˆˆXU…XU…ˆˆ…ˆŠ™™‰ˆˆ…ˆˆˆˆˆUˆˆˆˆU…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUˆˆˆˆUˆˆ…ˆˆ˜‰ˆˆˆ…ˆˆˆˆX…ˆˆˆˆˆ…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆX…ˆˆˆˆX…ˆUˆˆ˜ˆˆˆX…ˆˆˆˆXˆˆhˆˆˆXˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÈˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆXˆˆˆ‰ˆˆ…ˆXˆˆˆˆˆˆXˆˆˆˆˆUˆˆhUˆˆXˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÍˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ…ˆˆª‰ˆˆXˆX…ˆˆˆˆˆUˆˆˆˆˆ…ˆ…ff…ˆˆ…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÈÌ̈Œˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ…ˆ¨™™¨ˆXˆˆUˆˆˆˆX…ˆˆˆˆˆ…ˆUfFVˆˆ…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÍØÜˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ…ˆš”™ªˆXˆˆXUˆˆXUˆˆˆˆˆˆ…ˆUffVˆˆ…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÈˆÌÌŒˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ…ˆš™™ªˆX…ˆˆXUUUˆˆˆˆˆˆˆ…ˆ…ff†ˆˆ…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆØÜˆÈˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆXUUU…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ…ˆ˜™™¨ˆXˆˆˆˆˆˆˆˆˆˆˆˆˆˆ…ˆˆh†ˆˆˆ…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÈˆˆˆˆˆˆˆˆˆˆˆˆˆŒˆÍˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆXUUUUU…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ…ˆˆ˜‰ˆˆXˆˆˆˆˆˆˆˆˆˆˆˆˆˆUˆˆhˆˆˆX…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÍˆˆˆˆˆˆˆˆˆˆˆˆˆÈÌ̈ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆXUUˆˆˆUU…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ…ˆˆˆ‰ˆˆXˆˆˆˆˆˆˆˆˆˆˆˆˆˆXˆˆˆˆˆˆXˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÈÌ̈ˆˆˆˆˆˆˆˆˆˆˆˆˆÍˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUˆˆˆˆˆUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUˆˆˆˆˆˆUˆˆˆˆˆˆˆˆˆˆˆˆˆˆX…ˆˆˆˆˆUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÍˆˆˆˆˆˆˆˆˆˆˆˆˆˆÈˆÈˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆXUˆˆˆˆˆˆˆU…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆXˆˆˆˆˆˆ…ˆˆˆˆŒˆˆˆˆˆˆˆˆˆˆUˆˆˆˆX…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÈˆŒˆŒˆŒˆŒˆˆˆˆˆˆˆˆˆÍˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆU…èUÕˆˆˆXUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆX…ˆˆˆˆX…ˆˆˆØÜˆˆˆˆˆˆˆˆˆˆXUˆˆXUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆXÕÜÕÜÕÜÕ܈ˆˆˆˆˆˆˆÈÌ̈ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆXUUUUU\…ˆˆˆU…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆU…ˆˆXUˆˆˆˆÌÌŒˆˆˆˆˆˆˆˆˆˆXUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUÌÌÌÌÌÌÌÌŒˆˆˆˆˆˆˆˆÍˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆXUUUÅßÜU…ˆˆX…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUˆˆˆˆˆØÜˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUÕÜÕÜÕÜÕÜUˆˆˆˆˆˆˆˆÈˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUÕşÍÍÌ\U…ˆXUˆˆˆˆˆˆˆˆˆŒˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆŒˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU…ˆŒˆŒˆŒX\UUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆU…ØÏÌÌÜŒUUˆˆUˆˆˆˆˆˆˆˆØÜˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUU…ˆˆˆˆˆˆˆˆXUUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆXUèİİÍıÜÜXUˆˆUˆˆˆˆˆˆˆˆÌÌŒˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆXUU…ˆˆˆˆˆˆˆˆˆˆXUU…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUŞşïÍŞÌÌŒU…ˆUˆˆˆˆˆˆˆˆØÜˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUˆˆˆˆˆˆˆˆUU…ˆˆˆˆˆˆˆˆˆˆˆˆXUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUåıÿÿÍİÜ܈XUˆU…ˆˆˆˆˆˆˆˆŒˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆX…ˆˆX…ˆˆˆˆˆˆXUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆUU…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆXUÕşÏÏÍİÜìíˆUˆX…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆX…ˆˆˆˆUˆˆˆˆˆˆUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆX…ÕÿÍÍÌÌÌÜŞU…U…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆXˆˆˆˆˆˆ…ˆˆˆˆXUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUU…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆX…åÍÌÌÍÍÜßîíX…UˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUˆˆ†ˆˆˆUˆˆˆˆUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆU…UíÍİÍÍİïŞX…Uˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ…ˆˆV…ˆˆXˆˆˆˆUUˆˆˆˆˆˆˆÈˆˆ"ˆˆˆUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUˆUŞÍİÎÌÌÿíÈX…Uˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ…XhfVˆˆXˆˆˆXU…ˆˆˆˆˆˆÈÍ""!!ˆˆˆXU…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUˆUÅÌÌÍÍíøŞÍ]UUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆŒˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆX…Xefd…ˆXˆˆˆXUˆˆˆˆˆˆÈÍÍÌ""ˆˆˆU…ˆˆˆˆˆˆˆˆÀÌ À À ÌÌÌÌ ÌÌ Ì Ì À ÀÀÌ ÌÌ ÀÌ ÌÌÀÌ ÀÌÌÀÌÌÀ À ÀÀ ÀÀ À ÀÀ Ì À À Ì Ì ÌÀ ÌÌÌÌÌ Ì ÀÌÌÀ ÀÀ Ì À À Ì Ì Ì ÌÌÀ À ÌÀ ÀÀ ÀÀÀÀÀÌ À ÌÌÌ ÀÌ Ì ÀÌ ÀÌÌÀÌ ÌÌÌÌÌ Ì ÀÀÀˆˆˆˆˆˆˆˆˆˆˆXUˆˆˆˆˆˆˆXUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÍˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆXUUˆˆˆˆˆU…ˆˆˆˆˆˆˆ("!""!,!ˆˆˆXUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUˆˆˆˆˆˆU…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÈˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆU…ˆˆˆˆˆˆˆˆ"""""!ˆˆˆˆXUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆXU…ˆˆˆˆUUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆU…ˆˆˆˆˆˆˆˆ""Â"!"""ˆˆˆˆXUˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUUUUUUU…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆU…ˆˆˆˆˆˆˆˆ(Í-""ˆˆˆˆˆXUˆˆˆˆˆˆˆÀÌ À À Ì ÌÌ ÀÌÌÌÀÌÀÌ ÀÌÌÌ ÀÌÀ Ì Ì ÌÀ Ì ÌÀ À Ì À Ì ÌÌ Ì Ì À ÌÌÌ ÀÌÌÀÌÌÌÀÌÌ ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆX…ˆˆˆUˆˆXUˆˆˆˆ!""!"""""""3ˆˆˆˆU…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆUˆˆˆˆX…ˆXU…ˆˆ"""!"""""""""ˆˆXU…ˆˆˆˆˆˆˆˆŒˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆX…ˆˆˆˆˆUˆˆU…ˆˆ!"B""""DDD$"""ˆˆXUˆˆˆˆˆˆˆˆß܈ˆˆˆˆÿˆˆˆˆˆˆˆÿˆˆˆˆˆˆˆÿˆˆˆˆˆˆˆÿˆˆˆˆˆˆˆÿˆˆˆˆˆˆˆÿˆˆˆˆˆˆˆÿˆˆˆˆˆˆˆÿˆˆˆˆˆˆˆÿˆˆˆˆˆˆXÿˆˆˆˆX…ÿUUˆˆ!"4ÿ""BDD3Dÿ"""ˆˆUÿˆˆˆˆˆˆˆÿÿÌŒˆˆˆˆÿˆˆˆˆˆˆÿˆˆˆˆˆˆÿˆˆˆˆˆˆÿˆˆˆˆˆˆÿˆˆˆˆˆˆÿˆˆˆˆˆˆÿˆˆˆˆˆˆÿˆˆˆˆˆˆÿˆˆˆˆˆXÿ"ˆˆˆ…ÿ_Uˆˆ"BCÿ/"2C4ˆHÿO""ˆˆUÿˆˆˆˆˆˆÿÿ܈ˆˆˆøÿˆˆˆˆˆøÿˆˆˆˆˆøÿˆˆˆˆˆøÿˆˆˆˆˆøÿˆˆˆˆˆøÿˆˆˆˆˆøÿˆˆˆˆˆøÿˆˆˆˆˆøÿˆˆˆˆˆõÿ‚ˆˆõÿ_U…ˆ"Bóÿ/"24ˆˆøÿO$"ˆXõÿˆˆˆˆˆøÿÿ؈ˆøÿÿˆØˆˆøÿÿˆØˆˆøÿÿˆØˆˆøÿÿˆØˆˆøÿÿˆØˆˆøÿÿˆØˆˆøÿÿˆØˆˆøÿÿˆØˆˆøÿÿˆØˆˆõÿÿÑ-ˆˆõÿÿUÕ"Døÿÿ"Ò=ˆˆøÿÿ3ÒˆUõÿÿˆØˆˆøÿÿÿØİˆîşÿØİˆîşÿØİˆîşÿØİˆîşÿØİˆîşÿØİˆîşÿØİˆîşÿØİˆîşÿØİˆîşÿØİˆîşÿÑ݈îşÿ_Õİ-„îşÿ/ÒİMˆîşÿ?ÔİUîşÿØİˆîşÿÿİİİíîşÿİİİíîşÿİİİíîşÿİİİíîşÿİİİíîşÿİİİíîşÿİİİíîşÿİİİíîşÿİİİíîşÿİİİíîşÿİİİíîşÿ_İİİíîşÿİİİíîşÿİİİíîşÿİİİíîşşßİİŞîîîÿßİİŞîîîÿßİİŞîîîÿßİİŞîîîÿßİİŞîîîÿßİİŞîîîÿßİİŞîîîÿßİİŞîîîÿßİİŞîîîÿßİİŞîîîÿßİİŞîîîÿßİİŞîîîÿßİİŞîîîÿßİİŞîîîÿßİİŞîîîÿßİíİíîşÿßİíİíîşÿßİíİíîşÿßİíİíîşÿßİíİíîşÿßİíİíîşÿßİíİíîşÿßİíİíîşÿßİíİíîşÿßİíİíîşÿßİíİíîşÿßİíİíîşÿßİíİíîşÿßİíİíîşÿßİíİíîşşßİİíßîîÿßİİíßîîÿßİİíßîîÿßİİíßîîÿßİİíßîîÿßİİíßîîÿßİİíßîîÿßİİíßîîÿßİİíßîîÿßİİíßîîÿßİİíßîîÿßİİíßîîÿßİİíßîîÿßİİíßîîÿßİİíßîîïßİííşİşşßİííşİşşßİííşİşşßİííşİşşßİííşİşşßİííşİşşßİííşİşşßİííşİşşßİííşİşşßİííşİşşßİííşİşşßİííşİşşßİííşİşşßİííşİşşßİííşİşÿßİŞîîÿÿÿßİŞîîÿÿÿßİŞîîÿÿÿßİŞîîÿÿÿßİŞîîÿÿÿßİŞîîÿÿÿßİŞîîÿÿÿßİŞîîÿÿÿßİŞîîÿÿÿßİŞîîÿÿÿßİŞîîÿÿÿßİŞîîÿÿÿßİŞîîÿÿÿßİŞîîÿÿÿßİŞîîÿÿïßíîîîîÿşßíîîîîÿşßíîîîîÿşßíîîîîÿşßíîîîîÿşßíîîîîÿşßíîîîîÿşßíîîîîÿşßíîîîîÿşßíîîîîÿşßíîîîîÿşßíîîîîÿşßíîîîîÿşßíîîîîÿşßíîîîîÿÿÿíîîîşşÿÿíîîîşşÿÿíîîîşşÿÿíîîîşşÿÿíîîîşşÿÿíîîîşşÿÿíîîîşşÿÿíîîîşşÿÿíîîîşşÿÿíîîîşşÿÿíîîîşşÿÿíîîîşşÿÿíîîîşşÿÿíîîîşşÿÿíîîîşşşÿîîîîîîÿÿîîîîîîÿÿîîîîîîÿÿîîîîîîÿÿîîîîîîÿÿîîîîîîÿÿîîîîîîÿÿîîîîîîÿÿîîîîîîÿÿîîîîîîÿÿîîîîîîÿÿîîîîîîÿÿîîîîîîÿÿîîîîîîÿÿîîîîîîîÿïîîîïïşÿïîîîïïşÿïîîîïïşÿïîîîïïşÿïîîîïïşÿïîîîïïşÿïîîîïïşÿïîîîïïşÿïîîîïïşÿïîîîïïşÿïîîîïïşÿïîîîïïşÿïîîîïïşÿïîîîïïşÿïîîîï﫪ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªº     °ªªªªªªªªªªªªªªªªªªªªªª °ªªªªªªªªªª                                vwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwgvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwg      pp      pp      `wwwwwwwwwwwwwwwwwwwwww`wwwwwwwwwwp`wwwwwwwwwwwwwwwwwwwwww`wwwwwwwwwwp      pppppp      pppppp      pppppp      pppppp      pppppp      pppppp      pppppp      pppppp      pppppp      pppppp      pppppp      pppppp °ªªªªªªªªªªªªªªªªªªªªªª °ªªªªªªªªªª  pppppp  pppppp  pppppp«ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªºpppppppppppppppppppppppppppppp`wwwwwwwwwwwwwwwwwwwwww`wwwwwwwwwwp`wwwwwwwwwwwwwwwwwwwwww`wwwwwwwwwwpppppvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwgvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwg n-- title: status: superb -- author: verysoftwares -- desc: roll dice to get powerups. -- script: lua -- saveid: status-superb t=0; at=0 hp=4; maxhp=hp x=8*2 y=24*2 c=0 rolling={} lastdie={} lastdie2={} --enemies={{type='jelly',x=8*12,y=8*6,hp=4,maxhp=4},{type='jelly',x=8*18,y=8*5,hp=4,maxhp=4},{type='jelly',x=8*22,y=8*9,hp=4,maxhp=4},{type='feesh',x=240,y=8*8,a=math.pi,hp=2,maxhp=2,f=function(e) if e.x<240-8*5 then e.a=(e.a+0.02)%(2*math.pi) end end}} enemies={} shots={} nmyshots={} mods={ 'Shot', 'Shield', 'Damage+', 'Speed', 'Bomb', 'Roll', } lastdie2_st={} rolls=0 maxrolls=0 music(0) --pmem(0,0); pmem(1,0) function update() if t==1 then teach({'Welcome!','Shoot down enemies with Z.','A to advance text.'}) end stage() if btn(0) then y=y-(0.5+spdbonus()) end if btn(1) then y=y+(0.5+spdbonus()) end if btn(2) then x=x-(0.5+spdbonus()) end if btn(3) then x=x+(0.5+spdbonus()) end if x<0 then x=0 end if x+16>=240 then x=240-16 end if y<8 then y=8 end if y>=8*9 then y=8*9 end --if btnp(4) then stop=not stop; if stop then lastdie[c+1]=roll+1 end end if btnp(4) then if lastdie2[c+1]==5 and lastdie[c+1] then sfx(7,'E-3',120,2); bomb_t=120; bomb_val=lastdie[c+1]; lastdie2[c+1]=nil; lastdie[c+1]=nil; iframes=120 elseif lastdie2[c+1]==6 and lastdie[c+1] then if lastdie[c+1]==1 then table.insert(rolling,{x=x,y=y,dy=-1,dx=0,rl=math.random(0,5)}) end if lastdie[c+1]==2 then for i,dx in ipairs({-0.3,0.3}) do table.insert(rolling,{x=x,y=y,dy=-1,dx=dx,rl=math.random(0,5)}) end end if lastdie[c+1]==3 then for i,dx in ipairs({-0.3,0,0.3}) do table.insert(rolling,{x=x,y=y,dy=-1,dx=dx,rl=math.random(0,5)}) end end if lastdie[c+1]==4 then for i,dx in ipairs({-0.5,-0.3,0.3,0.5}) do table.insert(rolling,{x=x,y=y,dy=-1,dx=dx,rl=math.random(0,5)}) end end if lastdie[c+1]==5 then for i,dx in ipairs({-0.5,-0.3,0,0.3,0.5}) do table.insert(rolling,{x=x,y=y,dy=-1,dx=dx,rl=math.random(0,5)}) end end if lastdie[c+1]==6 then for i,dx in ipairs({-0.7,-0.5,-0.3,0.3,0.5,0.7}) do table.insert(rolling,{x=x,y=y,dy=-1,dx=dx,rl=math.random(0,5)}) end end if TIC~=roll then st=t end; TIC=roll; rolls=rolls+lastdie[c+1]; maxrolls=maxrolls+lastdie[c+1] lastdie2[c+1]=nil; lastdie[c+1]=nil elseif lastdie2[c+1]==1 and lastdie[c+1] then if lastdie[c+1]==1 then table.insert(shots,{x=x+16,y=y+8,dx=3,dy=0}) table.insert(shots,{x=x-6,y=y+8,dx=-3,dy=0}) sfx(6,'E-4',8,2); end if lastdie[c+1]==2 then table.insert(shots,{x=x+16,y=y+8-3,dx=3,dy=0}) table.insert(shots,{x=x+16,y=y+8+3,dx=3,dy=0}) sfx(6,'E-4',8,2); end if lastdie[c+1]==3 then table.insert(shots,{x=x+16,y=y+8-3,dx=3,dy=-0.5}) table.insert(shots,{x=x+16,y=y+8,dx=3,dy=0}) table.insert(shots,{x=x+16,y=y+8+3,dx=3,dy=0.5}) sfx(6,'E-4',8,2); end if lastdie[c+1]==4 then table.insert(shots,{type='missle',x=x+16,y=y+8,spd=1,t=0,a=0}) sfx(9,'D-4',30,3) end if lastdie[c+1]==5 then table.insert(shots,{type='missle',x=x+16,y=y+8+4-2,spd=1,t=0,a=math.pi/12}) table.insert(shots,{type='missle',x=x+16,y=y+8-4-2,spd=1,t=0,a=-math.pi/12}) sfx(9,'D-4',30,3) end if lastdie[c+1]==6 then table.insert(shots,{type='lazer',x=x+16,y=y+8-2,dx=0,dy=0,t=0}) sfx(10,'A-6',30,3) end else sfx(6,'E-4',8,2); table.insert(shots,{x=x+16,y=y+8,dx=3,dy=0}) end end if btnp(5) then c=c+1; if c>2 then c=0 end end if bomb_t then cls(3); poke(0x3FF9,math.sin(t*2)*2) bomb_t=bomb_t-1; if bomb_t==0 then for i=#enemies,1,-1 do local e=enemies[i]; --if e.x>=0 and e.x<240 and e.y>=0 and e.y<136-8*5 then local w=8 if e.type=='jelly' then w=16 end if e.type=='octopi' then w=32 end if AABB(e.x,e.y,w,w,0,0,240,136-8*5) then e.hp=e.hp-bomb_val; if e.type=='jelly' then announce(-bomb_val,e.x+8,e.y+8) end if e.type=='feesh' then announce(-bomb_val,e.x+4,e.y+4) end if e.type=='octopi' then announce(-bomb_val,e.x+16,e.y+16) end if e.hp<=0 then table.remove(enemies,i); if e.type=='jelly' then if TIC~=roll then st=t end; TIC=roll; rolls=rolls+2; maxrolls=maxrolls+2 table.insert(rolling,{x=e.x,y=e.y,dy=-1,dx=-0.3,rl=math.random(0,5)}) table.insert(rolling,{x=e.x,y=e.y,dy=-1,dx=0.3,rl=math.random(0,5)}) elseif e.type=='feesh' then if TIC~=roll then st=t end; TIC=roll; rolls=rolls+1; maxrolls=maxrolls+1 table.insert(rolling,{x=e.x-4,y=e.y-4,dy=-1,dx=0,rl=math.random(0,5)}) elseif e.type=='octopi' then if TIC~=roll then st=t end; TIC=roll; rolls=rolls+3; maxrolls=maxrolls+3 table.insert(rolling,{x=e.x+8,y=e.y+8,dy=-1,dx=-0.3,rl=math.random(0,5)}) table.insert(rolling,{x=e.x+8,y=e.y+8,dy=-1,dx=0,rl=math.random(0,5)}) table.insert(rolling,{x=e.x+8,y=e.y+8,dy=-1,dx=0.3,rl=math.random(0,5)}) end end end end nmyshots={}; bomb_t=nil; poke(0x3FF9,0); --[[lastdie2[bomb_c+1]=nil; lastdie[bomb_c+1]=nil]] end elseif iframes and iframes>36 then cls(2) else cls(8) end --if t%2==0 and not stop then roll=math.random(0,5) end --spr(34+roll*2,8*6,8*6,0,1,0,0,2,2) plrupdate() plrdraw() enemyupdate() enemydraw() shotupdate() shotdraw() rect(0,136-8*5,240,8*5,0) for i=0,15 do spr(144,i*16-(at*0.2)%16,0*2,0,1,0,0,2,2) spr(144,i*16-(at*0.2)%16,8*10,0,1,2,0,2,2) end for i=#shouts,1,-1 do local s=shouts[i] print(s.msg,s.x,s.y-s.t*0.5,(t*156)%16,false,1,true) s.t=s.t+1 if s.t>90 then table.remove(shouts,i) end end UIdraw(0,c==0 and 1 or 0) UIdraw(1,c==1 and 1 or 0) UIdraw(2,c==2 and 1 or 0) --print("HELLO WORLD!",84,84) at=at+1 t=t+1 end function takehit() if not iframes and lastdie2[c+1]==2 then if lastdie[c+1] then lastdie[c+1]=lastdie[c+1]-1 if lastdie[c+1]<=0 then lastdie2[c+1]=nil lastdie[c+1]=nil end iframes=36*2 sfx(5,'E-5',36*2,3) return end end hp=hp-1 iframes=36*2 if hp<=0 then TIC=gameover; music() end sfx(5,'E-5',36*2,3) end teachings={} function teach(texts,forceshow) if pmem(0)==1 and not forceshow then return end if forceshow and pmem(1)==1 then return end teachings=texts check_track=peek(0x13FFC) check_frame=peek(0x13FFC+1) check_row=peek(0x13FFC+2) music() old_tic=TIC TIC=tutor end weapons={ 'back & front shot', 'double shot', 'triple shot', 'missile', 'double missile', 'laser', } function tutor() if btnp(6) then TIC=old_tic music(check_track,check_frame,check_row) if lock_msg and not lock_msg2 then teach({'However, it has no value yet!','Roll another die to set the value.'}) lock_msg2=true end if value_msg2 and not switch_msg then roll() teach({'You can switch your powerup','slot with the X key.','Remember that only the selected','powerup is active.'}) switch_msg=true end if value_msg and not value_msg2 then roll() if lastdie2[c+1]==1 then teach({'It changes your shot type',string.format('to #%d: %s',lastdie[c+1],weapons[lastdie[c+1]]),'while the powerup is selected.'}) end if lastdie2[c+1]==2 then teach({'It gives you a shield',string.format('that can take %d hits',lastdie[c+1]),'while the powerup is selected.'}) end if lastdie2[c+1]==3 then teach({'It increases your damage',string.format('by %d hit points',lastdie[c+1]),'while the powerup is selected.'}) end if lastdie2[c+1]==4 then teach({'It increases your speed',string.format('by %d units',lastdie[c+1]),'while the powerup is selected.'}) end if lastdie2[c+1]==5 then teach({'It allows you to damage',string.format('all enemies by %d when the',lastdie[c+1]),'powerup is activated with Z.'}) end if lastdie2[c+1]==6 then teach({'It allows you reroll',string.format('%d new dice when the',lastdie[c+1]),'powerup is activated with Z.'}) end value_msg2=true end end for i,tc in ipairs(teachings) do rect(0,136/2-4-(#teachings-1)*6+(i-1)*12,240,8,0) local tw=print(tc,0,-6) print(tc,240/2-tw/2,136/2-4-(#teachings-1)*6+(i-1)*12+2,12+(t*0.2)%3) end t=t+1 end explosions={} function gameover() cls(8) if btnp(6) then if switch_msg then pmem(0,1) end; if fall_msg then pmem(1,1) end; reset() end --plrdraw() enemydraw() shotdraw() rect(0,136-8*5,240,8*5,0) for i=0,15 do spr(144,i*16-(at*0.2)%16,0*2,0,1,0,0,2,2) spr(144,i*16-(at*0.2)%16,8*10,0,1,2,0,2,2) end if #explosions==0 then table.insert(explosions,{x=x+8,y=y+8,t=0,r=12,col=2}) end if #explosions<20 then for i=#explosions,1,-1 do local ex=explosions[i] ex.t=ex.t+1 ex.r=ex.r-1 circ(ex.x,ex.y,ex.r,ex.col) if ex.r%2==0 and ex.col<4 then ex.col=ex.col+1 end if ex.t==6 then table.insert(explosions,{x=ex.x-4+math.random(0,7),y=ex.y-4+math.random(0,7),t=0,r=math.random(8,16),col=2}) end end end shipparts=shipparts or {} if #shipparts==0 then table.insert(shipparts,{x=x,y=y,sp=64,r=0,dx=-0.25,dy=-0.5}) table.insert(shipparts,{x=x+8,y=y,sp=65,r=0,dx=0.25,dy=-0.5}) table.insert(shipparts,{x=x,y=y+8,sp=80,r=0,dx=-0.25,dy=0.5}) table.insert(shipparts,{x=x+8,y=y+8,sp=81,r=0,dx=0.25,dy=0.5}) end for i,s in ipairs(shipparts) do --[[textri(s.x,s.y, s.x+8,s.y, s.x,s.y+8, s.spx*8,s.spy*8, s.spx*8+8,s.spy*8, s.spx*8,s.spy*8+8, false,0) textri(s.x+8,s.y, s.x+8,s.y+8, s.x,s.y+8, s.spx*8+8,s.spy*8, s.spx*8+8,s.spy*8+8, s.spx*8,s.spy*8+8, false,0)]] spr(s.sp,s.x,s.y,0) s.x=s.x+s.dx; s.y=s.y+s.dy s.r=s.r+2*math.pi/60 s.dy=s.dy+0.025 end UIdraw(0,c==0 and 1 or 0) UIdraw(1,c==1 and 1 or 0) UIdraw(2,c==2 and 1 or 0) rect(0,136/2-4-(3-1)*6+(1-1)*12,240,8,0) local tw=print('Game over',0,-6,12) print('Game over',240/2-tw/2,136/2-4-(3-1)*6+(1-1)*12+2,12+(t*0.2)%3) rect(0,136/2-4-(3-1)*6+(2-1)*12,240,8,0) local tw=print(string.format('Distance: %.2f m',at/8),0,-6,12) print(string.format('Distance: %.2f m',at/8),240/2-tw/2,136/2-4-(3-1)*6+(2-1)*12+2,12+(t*0.2)%3) rect(0,136/2-4-(3-1)*6+(3-1)*12,240,8,0) local tw=print('A to reset.',0,-6,12) print('A to reset.',240/2-tw/2,136/2-4-(3-1)*6+(3-1)*12+2,12+(t*0.2)%3) t=t+1 end enemyappear={ {delay=0,type='feesh',f=function() for i=0,6-1 do table.insert(enemies,{type='feesh',x=240+i*12,y=8*8,a=math.pi,hp=2,maxhp=2,i=i, f=function(e) if not e.shot and at+e.i*8>=sc_t+240-20 then if e.p==0 then table.insert(nmyshots,{x=e.x,y=e.y,dx=-1,dy=0}); e.shot=true elseif e.p==1 then local a=math.atan((y+8)-e.y,(x+8)-e.x); table.insert(nmyshots,{x=e.x,y=e.y,dx=math.cos(a),dy=math.sin(a)}); e.shot=true elseif e.p==2 then for i=0,3 do local a=i*math.pi/2+math.pi/4; table.insert(nmyshots,{x=e.x,y=e.y,dx=math.cos(a),dy=math.sin(a)}); e.shot=true end end end; if e.x<240-8*7 then e.a=(e.a+0.02)%(2*math.pi) end if e.t>=240+240+120 then e.gone=true end e.t=e.t+1 end, p=math.random(0,2),t=0}) end end }, {delay=1,type='feesh',f=function() local st=at for i=0,6-1 do table.insert(enemies,{type='feesh',x=8*12,y=0-i*12,a=math.pi-math.pi/2,hp=2,maxhp=2,i=i, f=function(e) if not e.shot and at+e.i*8==sc_t+240-20 then if e.p==0 then table.insert(nmyshots,{x=e.x,y=e.y,dx=-1,dy=0}); e.shot=true elseif e.p==1 then local a=math.atan((y+8)-e.y,(x+8)-e.x); table.insert(nmyshots,{x=e.x,y=e.y,dx=math.cos(a),dy=math.sin(a)}); e.shot=true elseif e.p==2 then for i=0,3 do local a=i*math.pi/2+math.pi/4; table.insert(nmyshots,{x=e.x,y=e.y,dx=math.cos(a),dy=math.sin(a)}); e.shot=true end end end; if e.t>=240+240+120 then e.gone=true end e.t=e.t+1 if e.y>8*3 and at=240+240+120 then e.gone=true end e.t=e.t+1 if e.y<136-8*5-8*3 and at8*3 and at<480 then e.a=(e.a-0.02)%(2*math.pi) end end,p=1}) end end if t==480 then for i=0,6-1 do table.insert(enemies,{type='feesh',x=8*12,y=136-8*5+i*12,a=math.pi+math.pi/2,hp=2,maxhp=2,i=i,f=function(e) if not e.shot and at+e.i*8==480+240 then table.insert(nmyshots,{x=e.x,y=e.y,dx=-1,dy=0}); e.shot=true end; if e.y<136-8*5-8*3 and at<480+240 then e.a=(e.a+0.02)%(2*math.pi) end end,p=2}) end end if t==480+240 then table.insert(enemies,{type='jelly',x=8*28,y=-16,hp=4,maxhp=4}) table.insert(enemies,{type='jelly',x=8*28,y=136-8*5,hp=4,maxhp=4}) end]] end TIC=update function roll() if not roll_msg then teach({'The enemy dropped a die!','Press S to lock a rolling die.'}); roll_msg=true end if t%3==0 and rolls>0 then sfx(1,'A-4',4,2) end if btnp(7) and rolls>0 then lock(rolling[maxrolls-rolls+1].rl); sfx(2,'A-5',20,3); rolling[maxrolls-rolls+1].stop=true; rolls=rolls-1; --[[if rolls==0 then TIC=update; rolling={} end]] end update() for i=#rolling,1,-1 do local r=rolling[i] --if r~=nil then r.x=r.x+r.dx; r.y=r.y+r.dy; r.dy=r.dy+0.025 if t%2==0 and not r.stop then r.rl=math.random(0,5) end spr(34+r.rl*2,r.x,r.y,0,1,0,0,2,2) if r.y>=136 then table.remove(rolling,i); if #rolling==0 then TIC=update end; maxrolls=maxrolls-1; if not r.stop then rolls=rolls-1; if not iframes then takehit() end; if not fall_msg then fall_msg=true; end; end end --end end if fall_msg and not fall_msg_set then fall_msg_set=true roll(); teach({'You took damage because','a die fell off-screen.','Make sure to lock the dice with S!'},true) end if rolls>0 then if not lastdie2[c+1] or (lastdie2[c+1] and lastdie[c+1] and lastdie2_st[c+1]~=st) then local tw=print(mods[rolling[maxrolls-rolls+1].rl+1],8*2+c*10*8,-6,13) print(mods[rolling[maxrolls-rolls+1].rl+1],8*3+4-tw/2+c*10*8,136-8*3-2,13) elseif lastdie2[c+1] and (not lastdie[c+1] or lastdie2_st[c+1]==st) then spr(34+rolling[maxrolls-rolls+1].rl*2,8*7+c*8*10,136-8*3-8,0,1,0,0,2,2) end end end function lock(n) if not lastdie2[c+1] or (lastdie2[c+1] and lastdie[c+1] and lastdie2_st[c+1]~=st) then lastdie2[c+1]=n+1 lastdie2_st[c+1]=st elseif lastdie2[c+1] and ((not lastdie[c+1]) or lastdie2_st[c+1]==st) then lastdie[c+1]=n+1 lastdie2_st[c+1]=nil if not value_msg then teach({'You now have your first powerup:',string.format('%s %d!',mods[lastdie2[c+1]],lastdie[c+1])}); value_msg=true end end if not lock_msg then teach({'You\'ve now set the first',string.format('powerup to %s.',mods[lastdie2[c+1]])}); lock_msg=true end end function UIdraw(xp,col) for i=0,1 do spr(96+16+col*4,0+xp*8*10,136-8*(2+i)-col*8,0) spr(96+16+col*4,8*6+xp*8*10,136-8*(2+i)-col*8,0) spr(96+16+col*4,8*9+xp*8*10,136-8*(2+i)-col*8,0) end for i=0,4 do spr(97+col*4,8*(1+i)+xp*8*10,136-8*4-col*8,0) spr(97+col*4,8*(1+i)+xp*8*10,136-8-col*8,0) end for i=0,1 do spr(97+col*4,8*7+8*(0+i)+xp*8*10,136-8*4-col*8,0) spr(97+col*4,8*7+8*(0+i)+xp*8*10,136-8-col*8,0) end spr(96+col*4,0+xp*8*10,136-8*4-col*8,0) spr(113+col*4,0+xp*8*10,136-8-col*8,0) spr(98+col*4,8*6+xp*8*10,136-8*4-col*8,0) spr(114+col*4,8*6+xp*8*10,136-8-col*8,0) spr(99+col*4,8*9+xp*8*10,136-8*4-col*8,0) spr(115+col*4,8*9+xp*8*10,136-8-col*8,0) if lastdie[xp+1] then spr(34+(lastdie[xp+1]-1)*2,xp*8*10+8*7,136-8*3-col*8,0,1,0,0,2,2) end if lastdie2[xp+1] and (not ((TIC==roll or TIC==tutor) and rolls>0 and lastdie[xp+1] and c==xp) or lastdie2_st[xp+1]==st) then local tw=print(mods[lastdie2[xp+1]],8*2+xp*10*8,-6,13) print(mods[lastdie2[xp+1]],8*3+4-tw/2+xp*10*8,136-8*3-2+(1-col)*8,13) end end function plrupdate() if not iframes then for i,e in ipairs(enemies) do if (e.type=='jelly' and AABB(x+4,y+5,6,5,e.x,e.y,9,9)) or (e.type=='feesh' and AABB(x+4,y+5,6,5,e.x,e.y+2,8,4)) or (e.type=='octopi' and (AABB(x+4,y+5,6,5,e.x+8+3,e.y,8*2+4,8*2) or AABB(x+4,y+5,6,5,e.x,e.y+8*2+3,8*3,8*2))) then takehit() end end end if iframes then iframes=iframes-1 if iframes<=0 then iframes=nil end end end function plrdraw() if not iframes or (iframes and iframes%12<6) then spr(64,x,y,0,1,0,0,2,2) end local r=hp/maxhp local col=5 if r<=0.5 then col=4 end if r<=0.25 then col=2 end if r>0 then for j=0,360*r do local a=(-90+j)*math.pi/180 for k=0,1 do pix(x+7+math.cos(a)*(12+k),y+8+math.sin(a)*(12+k),col) end end end if lastdie2[c+1]==2 then -- shield if lastdie[c+1] then for i=0,lastdie[c+1]-1 do circb(x+7,y+8,10+i*2,9) end end end end function enemyupdate() for i=#enemies,1,-1 do local e=enemies[i] if e.type=='jelly' then local a=math.atan2(y-e.y,x-e.x) e.x=e.x+math.cos(a)*0.3; e.y=e.y+math.sin(a)*0.3 for i2,e2 in ipairs(enemies) do if e2.type=='jelly' and AABB(e.x,e.y,16,16,e2.x,e2.y,16,16) then local dx,dy=-1+math.random(0,3),-1+math.random(0,3) if e.x0 then flip=1 end spr(66+math.floor((at*0.1)%3)*2,e.x,e.y,0,1,flip,0,2,2) local r=e.hp/e.maxhp local col=5 if r<=0.5 then col=4 end if r<=0.25 then col=2 end for j=0,360*r do local a=(-90+j)*math.pi/180 for k=0,1 do pix(e.x+8+math.cos(a)*(12+k),e.y+8+math.sin(a)*(12+k),col) end end end if e.type=='feesh' then local anim if at%24<=23 then anim=2 end if at%24<=23-6 then anim=0 end if at%24<=23-6-6 then anim=1 end if at%24<=23-6-6-6 then anim=0 end local flip=0 if e.amath.pi/2*3 then flip=1 end if e.p==1 then pal(9,1); pal(10,2) end if e.p==2 then pal(9,6); pal(10,5) end spr(72+anim,e.x,e.y,0,1,flip) pal() local r=e.hp/e.maxhp local col=5 if r<=0.5 then col=4 end if r<=0.25 then col=2 end for j=0,360*r do local a=(-90+j)*math.pi/180 for k=0,0 do pix(e.x+4+math.cos(a)*(8+k),e.y+4+math.sin(a)*(8+k),col) end end end if e.type=='octopi' then spr(75+math.floor((at*0.06))%2*4*16,e.x,e.y,0,1,0,0,4,4) local r=e.hp/e.maxhp local col=5 if r<=0.5 then col=4 end if r<=0.25 then col=2 end for j=0,360*r do local a=(-90+j)*math.pi/180 for k=0,2 do pix(e.x+16+math.cos(a)*(24+k),e.y+16+math.sin(a)*(24+k),col) end end end end end function dmgbonus() local out=0 if lastdie2[c+1]==3 then if lastdie[c+1] then out=lastdie[c+1] lastdie[c+1]=lastdie[c+1]-1 if lastdie[c+1]==0 then lastdie2[c+1]=nil lastdie[c+1]=nil end end end return out end function spdbonus() local out=0 if lastdie2[c+1]==4 then if lastdie[c+1] then out=lastdie[c+1]*0.5 end end return out end function shotupdate() for i=#shots,1,-1 do local s=shots[i] if s.type~='missle' then s.x=s.x+s.dx; s.y=s.y+s.dy else s.x=s.x+math.cos(s.a)*s.spd; s.y=s.y+math.sin(s.a)*s.spd if s.t<16 then s.spd=s.spd+(0-s.spd)*0.1 else s.spd=s.spd+(3-s.spd)*0.1 end s.t=s.t+1 end local sx,sy,sw,sh=s.x+4,s.y,3,3 if s.type==nil and s.dx<0 then sx=s.x end if s.type=='lazer' then sx=s.x; sw=240; sh=4 end if s.type=='missle' then sx=s.x; sw=6; sh=6 end if s.type~='lazer' or (s.type=='lazer' and s.t==0) then for j=#enemies,1,-1 do local e=enemies[j] if e.type=='jelly' and AABB(sx,sy,sw,sh,e.x,e.y,16,16) then local dmg=1 if s.type=='missle' then dmg=2 end local db=dmgbonus() e.hp=e.hp-(dmg+db) announce(-(dmg+db),e.x+8,e.y+8) if e.hp<=0 then table.remove(enemies,j); if TIC~=roll then st=t end; TIC=roll; rolls=rolls+2; maxrolls=maxrolls+2 table.insert(rolling,{x=e.x,y=e.y,dy=-1,dx=-0.3,rl=math.random(0,5)}) table.insert(rolling,{x=e.x,y=e.y,dy=-1,dx=0.3,rl=math.random(0,5)}) end if s.type~='lazer' then table.remove(shots,i); if s.type=='missle' then sfx(7,'D-5',6,3); table.insert(missle_xpl,{x=s.x+3,y=s.y+3,r=12,col=2,t=0,gen=0}) end break end end if e.type=='feesh' and AABB(sx,sy,sw,sh,e.x,e.y,8,8) then local dmg=1 if s.type=='missle' then dmg=2 end local db=dmgbonus() e.hp=e.hp-(dmg+db) announce(-(dmg+db),e.x+4,e.y+4) if e.hp<=0 then table.remove(enemies,j); if TIC~=roll then st=t end; TIC=roll; rolls=rolls+1; maxrolls=maxrolls+1 table.insert(rolling,{x=e.x-4,y=e.y-4,dy=-1,dx=0,rl=math.random(0,5)}) end if s.type~='lazer' then table.remove(shots,i); if s.type=='missle' then sfx(7,'D-5',6,3); table.insert(missle_xpl,{x=s.x+3,y=s.y+3,r=12,col=2,t=0,gen=0}) end break end end if e.type=='octopi' and (AABB(sx,sy,sw,sh,e.x+8+3,e.y,8*2+4,8*2) or AABB(sx,sy,sw,sh,e.x,e.y+8*2+3,8*3,8*2)) then local dmg=0 if s.type=='missle' then dmg=1 end local db=dmgbonus() if dmg+db>0 then e.hp=e.hp-(dmg+db) announce(-(dmg+db),e.x+16,e.y+16) if e.hp<=0 then table.remove(enemies,j); if TIC~=roll then st=t end; TIC=roll; rolls=rolls+3; maxrolls=maxrolls+3 table.insert(rolling,{x=e.x+8,y=e.y+8,dy=-1,dx=-0.3,rl=math.random(0,5)}) table.insert(rolling,{x=e.x+8,y=e.y+8,dy=-1,dx=0,rl=math.random(0,5)}) table.insert(rolling,{x=e.x+8,y=e.y+8,dy=-1,dx=0.3,rl=math.random(0,5)}) end else announce('Resist!',e.x+16,e.y+16) end if s.type~='lazer' then table.remove(shots,i); if s.type=='missle' then sfx(7,'D-5',6,3); table.insert(missle_xpl,{x=s.x+3,y=s.y+3,r=12,col=2,t=0,gen=0}) end break end end end end if s.type=='lazer' then s.t=s.t+1; if s.t>20 then table.remove(shots,i) end end if s.x>=240 or s.x<-8 then table.remove(shots,i) end end for i=#nmyshots,1,-1 do local s=nmyshots[i] s.x=s.x+s.dx; s.y=s.y+s.dy if s.x>=240 or s.x<=-5 or s.y>=136-8*5 or s.y<=-5 then table.remove(nmyshots,i) end if (not iframes) and AABB(x+4,y+5,6,5,s.x,s.y,5,5) then table.remove(nmyshots,i) takehit() end end end missle_xpl={} function shotdraw() for i=#shots,1,-1 do local s=shots[i] if s.type=='lazer' then rect(s.x,s.y,240,4,13) rect(s.x,s.y+1,240,2,12) elseif s.type=='missle' then spr(129,s.x,s.y,0) else local flip=0 if s.type==nil and s.dx<0 then flip=1 end spr(128,s.x,s.y,0,1,flip) end end for i=#nmyshots,1,-1 do local s=nmyshots[i] spr(89,s.x,s.y,0) end for i=#missle_xpl,1,-1 do local ex=missle_xpl[i] ex.t=ex.t+1 ex.r=ex.r-1 circ(ex.x,ex.y,ex.r,ex.col) if ex.r%2==0 and ex.col<4 then ex.col=ex.col+1 end if ex.t==6 and ex.gen<8 then sfx(7,'D-5',6,3); table.insert(missle_xpl,{x=ex.x-4+math.random(0,7),y=ex.y-4+math.random(0,7),t=0,r=math.random(8,16),col=2,t=0,gen=ex.gen+1}) end if ex.r<0 then table.remove(missle_xpl,i) end end end shouts={} function announce(msg,mx,my) local tw=print(msg,0,-6,12,false,1,true) table.insert(shouts,{msg=msg,x=mx-tw/2,y=my,t=0}) end function randomchoice(tbl) return tbl[math.random(#tbl)] end -- basic AABB collision. function AABB(x1,y1,w1,h1, x2,y2,w2,h2) return (x1 < x2 + w2 and x1 + w1 > x2 and y1 < y2 + h2 and y1 + h1 > y2) end -- palette swapping by BORB function pal(c0,c1) if(c0==nil and c1==nil) then for i=0,15 do poke4(0x3FF0*2+i,i) end else poke4(0x3FF0*2+c0,c1) end end