Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

Missooni

16
Posts
22
Followers
5
Following
A member registered Sep 05, 2025 · View creator page →

Creator of

Recent community posts

Updated this contraption to fix a bug; Setting the HEX/RGB values through the text field would duplicate colors after clicking the palette, but this doesn't happen anymore. :3

Thank you! I'm really proud of this and seeing your rating pop up so quickly honestly made my day. :D

I hope you don't mind having a new Phinxel in your collection...spinny 2.5d phinxel
stackz .GIF: stackz3D source for Phinxel

The workaround worked perfectly for what I needed, thank you! ^^

I'm trying to rotate a square  360 degrees, and I currently have the following code attached to a slider:

on change val do
 r.rotate[(pi/4)*val]
end

But when it rotates 90 degrees, it looks slightly off compared to 180 and 270:

How would I go about fixing this? ^^;

(1 edit)

Thank you so much!! 

This was a lovely little break from life, thank you. ^^

Released a hotfix this morning to address a few things I missed after the update - some UI elements were layered incorrectly or nonfunctional.

Thank you for mentioning me in your zine, making awesome stuff, and helping other people feel seen!  

Yayy! Thank you so much mini-Phinxel.

The first palette is bundled in all Decker projects by default. I made the 'vivid' and 'pastel' palettes by tinting colors from that original set of sixteen, I'm really happy you like them.

The palette swapping is a feature from Decker itself - it's so cool!

Added in the most recent version! Thank you for the feedback. ^^

(1 edit)

Putting this line of code on the 'click' or 'release' event of a draggable canvas will copy the card background behind the canvas when fired. 

me.paste[me.parent.image.copy[me.pos me.size]]

(6 edits)

Another contraption! This one creates a pair of (configurable) canvases to magnify certain parts of your card. You can drag both of them around as you see fit.
Resize it to an area you'd like to use it on, then drag the small dashed square around to use the magnifying lens. This can help mobile users or people who are visually impaired see small components in your decks.


%%WGT0{"w":[{"name":"Magnifying Field","type":"contraption","size":[408,272],"pos":[39,43],"show":"transparent","def":"Magnifying Field","widgets":{"z":{"size":[116,116]},"l":{"size":[60,60],"pos":[122,3],"pattern":0},"zoom":{"size":[32,13],"pos":[368,-19]},"scale":{"size":[33,13],"pos":[322,-19],"value":"60"}}}],"d":{"Magnifying Field":{"name":"Magnifying Field","size":[162,106],"resizable":1,"margin":[0,0,0,0],"description":"Resizable contraption that displays large, zoomed in view within a square lens.","version":1,"script":"on set_scale x do scale.text:x end\non get_scale do scale.text end\non set_zoom x do zoom.text:x end\non get_zoom do zoom.text end\n\non view do\n card.show:\"transparent\"\n l.size:scale.text,scale.text\n l.clear[]\n l.pattern:23\n l.brush:0\n l.box[0,0 l.size]\n l.pattern:0\n z.scale:zoom.text\n z.size:(l.size-2)*zoom.text\n z.pos:3,3\n l.pos:(z.size[0]+6),3\nend\n\non secure x do\n mx:card.size-x.size\n if x.pos[0]<0 x.pos:0,x.pos[1] end\n if x.pos[1]<0 x.pos:x.pos[0],0 end\n if x.pos[0]>mx[0] x.pos:mx[0],x.pos[1] end\n if x.pos[1]>mx[1] x.pos:x.pos[0],mx[1] end\nend","attributes":{"name":["scale","zoom"],"label":["scale","zoom"],"type":["number","number"]},"widgets":{"z":{"type":"canvas","size":[96,96],"pos":[3,3],"volatile":1,"script":"on click pos do\n \nend\n\non drag pos do\n secure[me]\nend\n\non release pos do\n \nend","draggable":1,"scale":2},"l":{"type":"canvas","size":[50,50],"pos":[102,3],"locked":1,"volatile":1,"script":"on click pos do\n \nend\n\non drag pos do\n secure[me]\n z.clear[]\n z.paste[app.render[deck.card].copy[card.pos+me.pos+1 me.size-2]]\nend\n\non release pos do\n \nend","pattern":23,"show":"transparent","border":0,"draggable":1,"scale":1},"zoom":{"type":"field","size":[13,13],"pos":[146,-19],"locked":1,"show":"none","value":"2"},"scale":{"type":"field","size":[13,13],"pos":[128,-19],"locked":1,"show":"none","value":"50"}}}}}

That means so much to me - your work is absolutely amazing, thank you!

(1 edit)

Using  alert[] with type "choose" can be used to view (and navigate to) all available cards in a deck (since deck.cards returns a dictionary). This can be helpful for restricting navigation in a locked deck. 

 go[alert["Go to card:" "choose" deck.cards] "BoxIn"]


(4 edits)

RGB/Hex color adjusting contraption I made for a small project. :3

%%WGT0{"w":[{"name":"RGB/HEX Adjuster","type":"contraption","size":[162,79],"pos":[333,118],"def":"RGB/HEX Adjuster","widgets":{"rs":{},"gs":{},"p":{},"bs":{},"rgb":{},"c":{},"hex":{},"temp":{}}}],"d":{"RGB/HEX Adjuster":{"name":"RGB/HEX Adjuster","size":[162,79],"margin":[0,0,0,0],"description":"Adjust color patterns by using their rgb and hex values.","version":1,"script":"on get_s do p.pattern end\non set_s x do setz[x] end\non get_rgb do rgb.text end\non set_rgb x do \n if !temp.text\n  patterns[p.pattern]:\"%h\" parse convertRgbz[x]\n  setz[p.pattern]\n end\nend\non get_hex do hex.text end\non set_hex x do \n if !temp.text\n  patterns[p.pattern]:\"%h\" parse x\n  setz[p.pattern]\n end\nend\n\non setz x do\n previewz[x]\n h:hexz[x]\n v:rgbz[h]\n hex.text:h\n rgb.text:v\n v:\",\" split v\n rs.value:v[0]\n gs.value:v[1]\n bs.value:v[2]\nend\n\non sliderz x y do\n c:(\"r\",\"g\",\"b\") dict (rs.value,gs.value,bs.value)\n c[y]:x\n c:\",\" fuse c\n rgb.text:c\n hex.text:convertRgbz[c]\n patterns[p.pattern]:\"%h\" parse hex.text\nend\n\non previewz x do\n p.clear\n p.pattern:x\n p.fill[]\nend\n\non hexz x do\n r:patterns[x]\n r:\"%h\" format r\n r:\"\" split r\n if !r[2] r:\"00\",r end\n if !r[4] r:\"00\",r end\n r:\"\" fuse r\nend\n\non convertRgbz x do\n  d:(10,11,12,13,14,15) dict (\"a\",\"b\",\"c\",\"d\",\"e\",\"f\")\n x:\",\" split x\n r:()\n each v i in x\n  i1:floor v/16\n  i2:((v/16)-i1)*16\n  if i1>9 i1:d[i1] end\n  if i2>9 i2:d[i2] end\n  r:r,i1,i2\n end\n \"\" fuse r\nend\n\non rgbz x do\n d:\"abcdef\" dict 10,11,12,13,14,15\n r:()\n each v i in 2 window \"\" split x\n  each v2 i2 in v\n   if d[v2]\n    v[i2]:d[v2]\n   end\n   v[i2]+0\n   r[i]:(v[0]*16)+v[1]\n  end\n end\n r:\",\" fuse r\nend","image":"%%IMG2AKIATwGjAKABAgCgAQIAoAECAKABAgCgAQIAoAECAKABAgCgAQIAoAECAKABAgCgAQIAoAECAKABAgCgAaQAoAECAKABAgCgAQIAoAECAKABAgCgAQIAAQEDAJwBAgABAQIAAQEBAJsBAgABAQIAAQEBAJsBAgABAQMAnAECAAEBAgABAQEAmwECAKABAgCgAQIAoAECAKABAgCgAQIAoAECAKABAgCgAQIAoAECAKABAgCgAQIAAQEEAJsBAgABAQIAnQECAAEBAgABAQEAmwECAAEBBACbAQIAAQEEAJsBAgCgAQIAoAECAKABAgCgAQIAoAECAKABAgCgAQIAoAECAKABAgCgAQIAAQEDAJwBAgABAQIAAQEBAJsBAgABAQMAnAECAAEBAgABAQEAmwECAAEBAwCcAQIAoAECAKABAgCgAQIAoAECAKABAgCgAQgAAQGhADgBBQBeAQEAAgEBAD0BAQBgAQIAAwEBADoBAQABAQEAXwEBAAIBAQCeAQYAOQEFAF4BAQABAQEAAQEBADsBAQBhAQEAAQEBAAEBAQA7AQIAYAEBAKEBBgA5AQUAXgEBAD4BAQABAQEAYAEDAAEBAgA6AQEAAQECAF4BAQChAagAOAEHAFwBAQ==","attributes":{"name":["s","rgb","hex"],"label":["selected","rgb","hex"],"type":["number","string","string"]},"widgets":{"rs":{"type":"slider","size":[106,14],"pos":[7,18],"volatile":1,"script":"on change val do\n sliderz[val \"r\"]\nend","font":"mono","interval":[0,255],"style":"bar"},"gs":{"type":"slider","size":[106,14],"pos":[7,33],"volatile":1,"script":"on change val do\n  sliderz[val \"g\"]\nend","font":"mono","interval":[0,255],"style":"bar"},"p":{"type":"canvas","size":[44,44],"pos":[115,18],"locked":1,"volatile":1,"pattern":47,"scale":1},"bs":{"type":"slider","size":[106,14],"pos":[7,48],"volatile":1,"script":"on change val do\n sliderz[val \"b\"]\nend","font":"mono","interval":[0,255],"style":"bar"},"rgb":{"type":"field","size":[94,15],"pos":[68,64],"volatile":1,"script":"on change val do\n set_rgb[val]\nend","font":"mono","border":1,"style":"plain","align":"center"},"c":{"type":"canvas","size":[160,14],"pos":[1,1],"locked":1,"script":"on sendz x do\n temp.text:x[1]\n c:me[x]\n if c=0 c:32\n elseif c=1 c:47\n end\n setz[c]\nend\n\non click pos do\n sendz[pos]\nend\n\non drag pos do\n sendz[pos]\nend\n\non release pos do\n temp.text:nil\nend","border":0,"image":"%%IMG2AKAADgEUIRQkFCUUKBQpFCwULRQBFCEUJBQlFCgUKRQsFC0UARQhFCQUJRQoFCkULBQtFAEUIRQkFCUUKBQpFCwULRQBFCEUJBQlFCgUKRQsFC0UARQhFCQUJRQoFCkULBQtFAEUIRQkFCUUKBQpFCwULRQAFCIUIxQmFCcUKhQrFC4UABQiFCMUJhQnFCoUKxQuFAAUIhQjFCYUJxQqFCsULhQAFCIUIxQmFCcUKhQrFC4UABQiFCMUJhQnFCoUKxQuFAAUIhQjFCYUJxQqFCsULhQAFCIUIxQmFCcUKhQrFC4U","scale":1},"hex":{"type":"field","size":[57,15],"pos":[6,64],"volatile":1,"script":"on change val do\n set_hex[val]\nend","font":"mono","border":1,"scrollbar":1,"style":"plain","align":"center"},"temp":{"type":"field","size":[8,8],"pos":[165,1],"locked":1,"volatile":1,"script":"on change val do\n \nend","show":"none"}}}}}