
Missooni
18
Posts
23
Followers
5
Following
A member registered Sep 05, 2025 · View creator page →
Creator of
Open-source sprite stacking framework to create 2.5D models in Decker.
Run in browser
Recent community posts
Saw a comment that hinted at a potential update for this module, and since this is one of my favorites to play around with, I wanted to share a road bump I've ran into while using and playing decks that use dialogizer:
I really like that decks are usable on both mobile and desktop devices, because I like to swap between the two while I'm working. All of the decks that I've made use keyboard shortcuts to access almost everything, so I was really disappointed that dialogizer creates buttons I can't target, and additionally, doesn't allow you to progress the text using something like enter or space bar.
If possible, I would really love to see this feature in a future update, and if this change isn't something you'd be comfortable making, I'd also be appreciative for an individual solution. As always, thank you for putting in such good work making Decker. ^^
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"}}}}}
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"}}}}}










