|| :\: OH, btw, the text stuff assumes you have this font installed :\: managore.itch.io/m3x6 |:: get color for .| :color: 51 68 85 |:: get color for #| :color: 255 187 51 |:: get sprite 1 for .| :sprite data: ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ) |:: get sprite 1 for p| :sprite data: ( . # . # # # # . . # # # # # . . . . . . . . . . . . # # # # . . . # . # # . # . . . # . . # . . . . # . . # . . . . # . . # . . ) |:: is p actor| :actor: p yes |:: get sprite 2 for p| :sprite data: ( # . # # # # . . # # # # # . . . . . . . . . . . . . # # # # . . . # . # # . # . . . # . . # . . . . # . . # . . . . # . . # . . ) |:: is c actor| :actor: c yes |:: touched c :angy:?| |:: touched c :already pet:| :angy: |:: touched c :touched once:| :already pet: |:: touched c| :touched once: |:: get dialogue for c :angy:? :current room: test2?| :@text to draw: "still agny!!" |:: get dialogue for c :angy:?| :@text to draw: "no talk, me angy." |:: get dialogue for c :already pet:?| :@text to draw: "okay, enough." |:: get dialogue for c| :@text to draw: "meow! meow!" |:: get sprite 1 for c :angy:? :current room: test2?| :sprite data: ( . . . . . . . . . . . . . . . . . . . . . # . # . . . . . # # # . . . . . # # # . . . . # # # . # . . # # # # . . # # # # . # . ) |:: get sprite 2 for c :angy:? :current room: test2?| :sprite data: ( . . . . . . . . . . . . . . . . . . . . . # . # . . . . . # # # . . . . . # # # . . . . # # # . . # . # # # # . . # # # # . # . ) |:: get sprite 1 for c :angy:?| :sprite data: ( . . . . . . . . . . . . . . . . # . # . . . . . # # # . . . . . # # # . . . . . . # # # . . . . . # # # # . . # . # . # # # # . ) |:: get sprite 2 for c :angy:?| :sprite data: ( . . . . . . . . . . . . . . . . # . # . . . . . # # # . . . . . # # # . . . . . . # # # . . . . . # # # # . # . . # . # # # # . ) |:: get sprite 1 for c| :sprite data: ( . . . . . . . . . . . . . . . . . . . . . # . # . . . . . # # # . # . . . # # # . # . # # # # . . . # # # # # . . . . # # . # . ) |:: get sprite 2 for c| :sprite data: ( . . . . . . . . . . . . . . . . . . . . . # . # . . . . . # # # . . . . . # # # # . . # # # # . . # # # # # # . . . . # # . # . ) |:: is w solid| :solid: w yes |:: get sprite 1 for w| :sprite data: ( # # # # # # # # # # . . . . # # # . # # # # . # # . # . . # . # # . # . . # . # # . # # # # . # # # . . . . # # # # # # # # # # ) |:: is [ solid| :solid: [ yes |:: get sprite 1 for [| :sprite data: ( # # # # # # # # # # . . . . . . # . # # # # # # # . # . . . . . # . # . . . . . # . # # # # # # # # . . . . . . # # # # # # # # ) |:: is = solid| :solid: = yes |:: get sprite 1 for =| :sprite data: ( # # # # # # # # . . . . . . . . # # # # # # # # . . . . . . . . . . . . . . . . # # # # # # # # . . . . . . . . # # # # # # # # ) |:: is ] solid| :solid: ] yes |:: get sprite 1 for ]| :sprite data: ( # # # # # # # # . . . . . . # # # # # # # # . # . . . . . # . # . . . . . # . # # # # # # # . # . . . . . . # # # # # # # # # # ) |:: get sprite 1 for g| :sprite data: ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . # . . . . . . . # . . # . . . . # . . # . . ) |:: get sprite 2 for g| :sprite data: ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . # . . . . . . . # . . # . . . . . # . . # . . ) |:: is e exit| :exit: e yes |:: is x exit| :exit: x yes |:: is i exit| :exit: i yes |:: is t exit| :exit: t yes |:: e goes to :current room: test2?| :go to: test |:: e goes to| :go to: test2 |:: x goes to| :: e goes to |:: i goes to| :: e goes to |:: t goes to| :: e goes to |:: get sprite 1 for e :current room: test2?| :sprite data: ( . . . . . . . . . . . # . . . . . . # # . . . . . # # # # # # . . # # # # # # . . . # # . . . . . . . # . . . . . . . . . . . . ) |:: get sprite 1 for e | :sprite data: ( . . . . . . . . . . . . # . . . . . . . # # . . . # # # # # # . . # # # # # # . . . . . # # . . . . . . # . . . . . . . . . . . ) |:: get sprite 1 for x| :: get sprite 1 for e |:: get sprite 1 for i| :: get sprite 1 for e |:: get sprite 1 for t| :: get sprite 1 for e || :starting room: test |:: player for test room| :player: p |:: get tiles for test| :room data: ( w w . . . . w w w . . . . g . w . . [ = = ] . e . c . g . . p x . . . . . . . i . g [ = = ] . t w . . . . g . w w w . . . . w w ) |:: player for test2 room| :player: p |:: get tiles for test2| :room data: ( w w w w w w w w w . . . g . . w e . w . . w . w x p . . . c . w i . . g . . g w t . w . . w . w w . . . g . . w w w w w w w w w ) || :screen resolution: 64 64 :frame for sprites: 1 |:: start? :starting room: $room| :: change rooms :go to: $room |:: change rooms? :actors: $1 $2 $3| |:: change rooms? :solids: $1 $2 $3| |:: change rooms? :exits: $1 $2 $3| |:: change rooms? :player actor: $1 $2 $3| |:: change rooms? :current room: $_| |:: change rooms :go to: $room| :current room: $room :: player for $room room :: get actor locations :: set player actor |:: get actor locations :current room: $room?| :: get tiles for $room :: find each actor :tile location: 0 0 :: get tiles for $room :: find each solid :tile location: 0 0 :: get tiles for $room :: find each exit :tile location: 0 0 |:: find each $type :room data: ($1 $2 $3 $4 $5 $6 $7 $8)| :: is $1 $type :: add to $type list :: next tile column :: is $2 $type :: add to $type list :: next tile column :: is $3 $type :: add to $type list :: next tile column :: is $4 $type :: add to $type list :: next tile column :: is $5 $type :: add to $type list :: next tile column :: is $6 $type :: add to $type list :: next tile column :: is $7 $type :: add to $type list :: next tile column :: is $8 $type :: add to $type list :: next tile row :: find each $type |:: find each $type :tile location: $x $y| |:: add to actor list :actor: $who yes :tile location: $x $y?| :actors: $who $x $y |:: add to actor list :actor: $who no| |:: add to solid list :solid: $what yes :tile location: $x $y?| :solids: $what $x $y |:: add to solid list :solid: $what no| |:: add to exit list :exit: $what yes :tile location: $x $y?| :exits: $what $x $y |:: add to exit list :exit: $what no| |:: set player actor :player: $actor :actors: $actor $x $y| :: rollback actors :player actor: $actor $x $y |:: set player actor :player: $actor :no more actors:| |:: set player actor?| :: next actor |::start :screen resolution: $x $y?| :@graphics: set-resolution fullscreen $x $y ::main loop |:: draw? :go to: $room?| :: change rooms |:: draw| :: move player actor :: clear the screen :: draw current room :: draw npcs :: draw player :: get dialogue :: draw dialogue :: tick frame |:: get dialogue :player touching: $something?| :: get dialogue for $something |:: get dialogue| |:: draw dialogue :@text to draw: $something?| :@graphics: draw-text 0 48 |:: draw dialogue :no dialogue:| |:: draw dialogue| |:: is $x actor| :actor: $x no |:: is $x solid| :solid: $x no |:: is $x exit| :exit: $x no |:: get dialogue for $what| :no dialogue: |:: get sprite $frame for $id| :: get sprite 1 for $id |:: next actor :actors: $actor $x $y :actors: $more $_x $_y?| :discarded actors: $actor $x $y |:: next actor :actors: $actor $x $y| :discarded actors: $actor $x $y :no more actors: |:: next actor| :no more actors: |:: rollback actors :discarded actors: $actor $x $y| :actors: $actor $x $y |:: rollback actors| |:: next solid :solids: $actor $x $y :solids: $more $_x $_y?| :discarded solids: $actor $x $y |:: next solid :solids: $actor $x $y| :discarded solids: $actor $x $y :no more solids: |:: next solid| :no more solids: |:: rollback solids? :discarded solids: $solid $x $y| :solids: $solid $x $y |:: rollback solids| |:: next exit :exits: $exit $x $y :exits: $more $_x $_y?| :discarded exits: $exit $x $y |:: next exit :exits: $exit $x $y| :discarded exits: $exit $x $y :no more exits: |:: next exit| :no more exits: |:: rollback exits? :discarded exits: $exit $x $y| :exits: $exit $x $y |:: rollback exits| |:: draw current room :current room: $room?| :tile location: 0 0 :: get tiles for $room :: draw room |:: draw room :room data: ($1 $2 $3 $4 $5 $6 $7 $8)| :: render tile $1 to screen :: render tile $2 to screen :: render tile $3 to screen :: render tile $4 to screen :: render tile $5 to screen :: render tile $6 to screen :: render tile $7 to screen :: render tile $8 to screen :: last column :: draw room |:: draw room :tile location: $x $y| |:: render tile $id to screen :: last column| :: is $id actor :: draw sprite $id :: next tile row |:: render tile $id to screen| :: is $id actor :: draw sprite $id :: next tile column |:: draw npcs? :tile location: $x $y| |:: draw npcs :no more actors:| :: rollback actors |:: draw npcs? :actors: $actor $x $y?| :: draw sprite $actor :tile location: $x $y :: next actor |:: draw player :player actor: $actor $x $y?| :: draw sprite $actor :tile location: $x $y |:: draw sprite $actor :actor: $actor yes| :: draw sprite . |:: draw sprite $actor? :actor: $actor no| |:: draw sprite $sprite :frame for sprites: $frame? :tile location: $x $y?| :pixel location: $x $y :: get sprite $frame for $sprite :: draw sprite |:: draw sprite :sprite data: ($1 $2 $3 $4 $5 $6 $7 $8)| :: plot $1 :: next pixel column :: plot $2 :: next pixel column :: plot $3 :: next pixel column :: plot $4 :: next pixel column :: plot $5 :: next pixel column :: plot $6 :: next pixel column :: plot $7 :: next pixel column :: plot $8 :: next pixel row :: draw sprite |:: draw sprite :pixel location: $x $y| |:: plot . :pixel location: $x $y? :color: $r $g $b| :@graphics: set-pixel $x $y $r $g $b |:: plot # :pixel location: $x $y? :color: $r $g $b| :@graphics: set-pixel $x $y $r $g $b |:: plot $char?| :: get color for $char |:: next pixel column :@math: $x :pixel location: $_ $y| :pixel location: $x $y |:: next pixel column? :pixel location: $x $y?| :@math: add $x 1 |:: next pixel row :@math: $y :pixel location: $_x $_y :tile location: $x $_?| :pixel location: $x $y |:: next pixel row? :pixel location: $x $y?| :@math: add $y 1 |:: next tile column :@math: $x :tile location: $_ $y| :tile location: $x $y |:: next tile column? :tile location: $x $y?| :@math: add $x 8 |:: next tile row :@math: $y :tile location: $x $_| :tile location: 0 $y |:: next tile row? :tile location: $x $y?| :@math: add $y 8 |:: tick frame :frame for sprites: 1| :frame for sprites: 2 |:: tick frame :frame for sprites: 2| :frame for sprites: 1 |:: move player actor| :: check if up is pressed :: move player :: check if right is pressed :: move player :: check if down is pressed :: move player :: check if left is pressed :: move player |:: move player :key pressed: up :player actor: $actor $x 0?| |:: move player? :key pressed: up :player actor: $actor $x $y?| :: move y :@math: subtract $y 8 |:: move player :key pressed: right :player actor: $actor 56 $y?| |:: move player? :key pressed: right :player actor: $actor $x $y?| :: move x :@math: add $x 8 |:: move player :key pressed: down :player actor: $actor $x 56?| |:: move player? :key pressed: down :player actor: $actor $x $y?| :: move y :@math: add $y 8 |:: move player :key pressed: left :player actor: $actor 0 $y?| |:: move player? :key pressed: left :player actor: $actor $x $y?| :: move x :@math: subtract $x 8 |:: move player| |:: move x? :@math: $x :player actor: $actor $_ $y?| :make move: $x $y :: clear touching :: check for solid $x $y :: check for exit $x $y :: check for actor $x $y |:: move y? :@math: $y :player actor: $actor $x $_?| :make move: $x $y :: clear touching :: check for solid $x $y :: check for exit $x $y :: check for actor $x $y |:: move $axis :make move: $x $y :player actor: $actor $_x $_y| :player actor: $actor $x $y |:: move $axis| |:: clear touching :player touching: $not-this| |:: clear touching| |:: check for solid $x $y :solids: $what $x $y? :make move: $x $y| :: rollback solids |:: check for solid $x $y :no more solids:| :: rollback solids |:: check for solid $x $y?| :: next solid |:: check for exit $x $y :exits: $what $x $y? :make move: $_x $_y| :: rollback exits :: $what goes to |:: check for exit $x $y :no more exits:| :: rollback exits |:: check for exit $x $y?| :: next exit |:: check for actor $x $y :actors: $what $x $y?| :: rollback actors :: touched $what :player touching: $what |:: check for actor $x $y :no more actors:| :: rollback actors |:: check for actor $x $y?| :: next actor