
It's definitely break time now! Thank you so much for reading.
ahmwma
Creator of
Recent community posts
I think the issue is just your parentheses () placement. If we look at this line:
elseif (p.hour+1>10) & (p.hour+1<20)
You only need the parentheses to be around p.hour and your +1 adjustment to the time. Putting it in it's own set of parentheses makes sure that this part is done first before the script checks if the number is in the correct range . So you could change that line to be like this instead:
((p.hour+1) >10) & ((p.hour+1) <20)
Hopefully that makes sense?
Optionally, another way to do this would be to modify what p.hour is at the beginning of your script like this:
p:"%p" parse "%e" format sys.now utc_offset:1 p.hour:24%utc_offset+p.hour
The first line is the same as what you have now.
The second line defines a new variable called utc_offset which I'm going to use to say how many hours off from utc your time zone is. (1)
And the third line sets p.hour to be p.hour plus your utc_offset. The 24% in this line keeps the result consistent with 24 hour time. So if the math it was doing for p.hour was 23+1 it would go back to 0 instead of up to 24.
If this version makes sense to you then you could put this at the beginning of your script and just refer to p.hour for the rest of it without needing to modify it again, because it's already been modified.
Thank you very much! I've quietly fixed both things. (And another unlocked field I spotted on my way there... there's a lot of widgets in this thing.)
I admit that the sidebar about FatBits was kind of written on the fly and not adequately fact checked (in terms of Mac history, or with IJ himself about his inspirations, haha) so I've put a more neutral mention of MacPaint there instead and I appreciate the correction.
Really, thank you for checking it out and enjoying it! It means a lot.
After I made The Riddle of the Temple last year some people mentioned that the behind-the-scenes area with Phinxel (a little sphinx character) was helpful for learning a couple of things about making projects in Decker.
I've learned a lot about the program since then and so Phinxel is back with enough Decker facts to fill up a medium sized notebook.

https://ahmwma.itch.io/phield-notes
The book is divided into sections that each have their own indexes and there's a search engine contraption in the appendix if you're trying to find something specific.
It's a little silly but I really hope it's helpful!
It's jam time again! We've only just begun but it's nice to have a place to talk about how the event is going.
Feel free to post about what you're working on! Anything is welcome from ideas to sneaky peek screenshots to letting us know you've published your project.
Good luck everyone and Happy Deck Month!
You can use the M key on your keyboard to hide the menu while you're using the drawing tools.
When you're getting ready to publish a project you can optionally Lock your deck which hides the Menu bar completely. This will make that area at the top visible all the time and limit people to Interact mode.
If you want to lock your project when you're done you can save a locked copy of your project using [ File > Properties > Protect... ]
Hello!
Some of the questions you've asked are difficult for me because I'm not very familiar with how these examples work or I'm not sure what the correct answer would be for your project. I've learned a little bit but I have more questions for you.
I really want to make sure I understand what you need so I can either figure it out or look up the answer.
Asking specific questions helps me give you more specific answers.
Regarding Sokoban and "Mover":
From what I understand about the sokoban example... "Mover" was made specifically to move boxes inside of a Sokoban-like game and most of the code in the example relates to that.
What do you like about "Mover"?
- Being able to move a character on a grid with the arrow keys?
- Sokoban gameplay?
- Something else?
- What kind of gameplay would you like in your game from something like "Mover"?
Regarding path:
From what I understand, this is what you need:
- A way to limit the number of steps taken when the follower moves
- A way to make an event happen when the follower runs out of their limited steps
- A way to make an event happen when the follower arrives at a specific location
Have you coded a way to make events happen when your follower arrives at a location yet?
Is there anything else that you're trying to understand how to do with path?
Regarding "quotes":
From what I understand you'd like to allow the player to choose a dialog option and then have the game run some code depending on what they chose? Is the code in the other text field more dialog (dd / visual novel format) or something else?
Do you want the player to be able to return to the original choice and pick another dialog option?
Or
Is this a one-time event where they can only choose one answer?
I'm sorry if I didn't understand something! Thank you for being patient.
Hopping in too (Hello!)
There is a fun thing about buttons which is often overlooked -- All buttons can store a value, not just checkboxes.
So you don't need a second button to be a checkbox at all.
We often talk about checkboxes because the mark is visible and easier to understand but if you don't want to have a separate hidden checkbox you can change your button back to what it was originally and use this script in it:
on click do me.value:1 end
When you use "me" like this in a script it refers to the widget the script is attached to... so the button (of any style you like and any name) will set it's own value to "1" when this script is inside of it and the button is clicked.
One more small correction, in the beginning of your progress checking script:
on click do if puzzleroom.widgets.button1.value & puzzleroom2.widgets.button2.value
Putting .widgets. between the card name and the widget name is an important part of telling Decker where to find your widget.
Of course, use the correct names for your particular buttons and cards at this moment!
A side note about setting the value in a hidden or non-checkbox button:
Doing it this way has a side effect of being a little harder to uncheck the buttons when you want to reset the game while testing it.... but you could set these two particular buttons as 'Volatile' if you wanted to.
That makes it so you can clear their .value anytime using [ File > Purge Volatiles ] in the menu.
This would also remove their .value when the project is saved.
Volatile is dangerous to use on anything precious and irreplaceable -- but it's fine for temporary things like progress checkmarks.
If you feel comfortable using it you can select the widget you're using to store this progress .value and use [Widgets > Volatile] to make it Volatile.
(Again, this is not for anything precious like your art assets! Disposable .values only here!)
This whole project sounds lovely :D We're all rooting for you.
Your audio duration should be fine!
After experimenting with a deck where I have a similar audio looping setup I think my best guess is that the script is expecting to find a Field that has the name "loopcounter" on the same card you're on and it's not finding it so it can't correctly loop through your clips.
(Because nothing is loopcount-ing, y'know?)
It could be that it doesn't exist, or it has a typo in the name or it does exist by that name but it's on another card... something like that.
As much as I support looking at the documentation and learning more about Decker (:D) I don't think there's anything in there that would help with the tablet issue. Decker should be as easy to use when you plug in your tablet as other art programs are... but computers can be weird and sometimes we need to poke at them to make them work.
If you don't mind... I have two things I'm curious about:
Are you having the same tablet trouble in both Web Decker and in Native Decker?
If you don't know what I mean by that, Web Decker is the version that runs in your web browser (like this copy of the official tour or wigglypaint) and Native Decker is the standalone program that you download and run on your computer.
The other thing I'm wondering is whether or not there are some settings inside of Wacom's driver software (Wacom Center?) that could be adjusted. My tablet has a different driver software so I'm not sure.... but from what I know about Wacom it's possible to create program-specific settings (like shortcuts, etc) and maybe there's some way to modify how your tablet interacts with Decker in there? (Maybe?)
Yes it's totally possible to put a deck on a webpage and yep you can have it without upscaling!
The trick would be to put the .html version of your Decker project inside of an appropriately sized iframe on the page.
This is how itch.io presents most of the Decker projects uploaded here on the site and as a silly bonus example: here's a tiny deck in an iframe on a plain webpage.
If the iframe matches the size of the deck then it should stay at that (1x) size.
Does this help?
Yeah, unfortunately any apps for mobile are unrelated to the official wigglypaint.
I've seen some wigglypaint animations, though!
Youtube user 角赤pulupo has posted wiggly animations on their youtube channel ... sometimes using their own personal modified Wigglypaint (it's blue and has a larger range of colors than default wigglypaint).
There's also been wigglypaint video meme(?) where people draw a series of wiggly images to match a vocaloid song. Here's one that's more animated than the purely slideshow types. I think sometimes people use screen capture for this format. And some of these have mixed other animation tools in while still using the wigglypaint user interface like this one.
And then there's this other short animation someone made that I think is really cute. (It definitely used tools outside of wigglypaint to connect everything together)
That's what I can remember quickly enough to find links, haha.
I'm sorry that there's not a specific easy answer in here, but maybe there's some food for thought in all of this. I do animate in decker, but not with wigglypaint specifically.... I know it's definitely very possible to create new tools inside of decker to help you make animations (I have a non-wiggly onion skin helper tool that I made for myself). I think it's just a matter of knowing what you want those tools to do in relation to how wigglypaint already works -- and then making them.
Not a silly question!
The short answer is you can use ctrl+v (or Edit > Paste Widget in the menu) while you're looking at a card.
The slightly longer answer is this:
Decker's image data, widgets (including contraptions) and even whole cards can be copied and pasted between decks very easily.
As an example: if you copy a plain button widget and then paste it somewhere else... you get a matching button.
But if you paste it into a text editor like notepad you get something that looks a little bit like the code blocks in the contraption bazaar:
%%WGT0{"w":[{"name":"button1","type":"button","size":[60,20],"pos":[230,164]}],"d":{}}
That's because this is what widgets look like when they're stored in your system's clipboard. They start with %%WGT and contain all the information about their size and scripts and data, etc.
So Decker will know that if there's a %%WGT at the start of a string that you're pasting (that you copied from the bazaar) that means you're pasting a widget!
Just like it would recognize %%IMG as image data or %%CRD as being a whole card.
We're using the forums as a place to pass this easy kind of copy-and-paste clipboard data to each other in order to share our inventions and tools. Because it just works. :)
So, yeah, when you copy a contraption from the bazaar you can just paste it directly onto a card!
Have fun, and good luck with your finals!
I've had the same issue while testing a book-style project on mobile. I don't believe there's any easy way to separate mobile swipe events from other kinds of left and right navigation.
For now my solution is to have a checkbox on the first page of the project that reverses the direction of navigation. Hopefully people will use it. :)
This is what I have in the deck script currently:
on navigate x do if innercover.widgets.mobileswipe.value if x~"right" go["Prev"] end if x~"left" go["Next"] end else if x~"right" go["Next"] end if x~"left" go["Prev"] end end end
(Thank you to Internet Janitor for answering my questions about this in the past)
Okay! Let's do it. It's mostly a matter of understanding how to use what Wigglypaint already does and then we'll add a few more colors to it.
Part 1: Editing the Options card
Hopefully you're comfortable going into Widget mode to select, make and move widgets. (If not... please ask!)
The fields that exist on the card already for editing the colors are all plain text fields with names corresponding to their default color or role within Wigglypaint: foreground, background, pink, cyan, and yellow.
So let's make new fields for your new colors using the menu. [Widgets > New Field ]
We'll need to open up each new field's Properties Window by double-clicking on them and edit each one's Name to be to anything that's easy for you to remember while you're setting up the next thing. It'll be easiest if these names don't have any spaces or unusual characters.
If you open the properties menu for the Apply button on the options card and click on [Script] you'll see the script which currently looks like this:
on click do f:"%06H" patterns[32]:f parse background.text patterns[47]:f parse foreground.text patterns[36]:f parse pink .text patterns[39]:f parse cyan .text patterns[33]:f parse yellow .text end
f:"%06H" is there to tell Decker that the format we're parsing is 6 digits of uppercase hexadecimal.
The next line makes the pattern in slot 32 become the color of the hex code contained in the text of the field named background.
And then every line until the end does the same thing: it sets the hex codes in the text of each of the other fields to be the new colors of the other pattern slots Wiggypaint uses.
You'll have to pick some slots to put your new colors in so we're going to take a quick look at Decker's pattern index. It looks like this:

Slots 1 through 27 only support 1-bit patterns. They may not be what you want right now....
28 through 31 are "animated patterns" which are 1-bit unless you edit them so we'll also ignore them unless you're into that.
(You're able to use all of these in Wigglypaint too if you like them!)
32, 33, 36, 39 and 47 are already in use by Wigglypaint. We saw them being used in the script inside the current Apply button.
So that means you're free to use any or all of these pattern slots for new colors:
34, 35, 37, 38 and 40 to 46.
So let's do this.
After you make your new fields (and give them each a name you can remember) you can add more lines to the Apply button's existing script (under the others but before the 'end' ) that look like this:
patterns[34]:f parse mynewfield.text
Make sure you're writing your new fields' names and using one of the unused pattern slot numbers!
(This is optional but I'd also recommend painting a little swatch of each color next to it's corresponding field, so you can see which color will be changed when you edit that field.)
Part 2: Editing the Drawing card
I'm not sure how you want your new color selection options to be arranged on the card, or even how many colors you want to add so this is just a technical explanation for now. But the good news is that the technical part of this is very simple because Wigglypaint was made in a very clever Decker-y way.
This is the script inside of all of the tools:
on click do others:me drop extract value where value..def.name="popOut" from card.widgets others..value:1 if !me.value play["pick"] end me.value:0 target.brush:me.name changetool[me.name] end
You don't actually need to understand this one! It's doing a couple of different things like telling the other tools to stop poking out because they're not active anymore. The cool part is that all of the tools look at their own name (me.name) to set the active drawing tool on the big wigglypaint canvas.
The existing highlighters are named hi33, hi36, and hi39 -- the number after the "hi" relates to the pattern slot that they use when you're drawing.
If you put this exact same script inside of a new button (or a new pop-out highlighter pen if you'd like me to explain how those work) then all you need to do is give the new button the right name.
If your new color was set to patterns[35] then you can make a button named hi35. If it has this script in it then it'll change your highlighter color to that pattern 35 when it's clicked.
Once you've made one button you can copy and paste it until you have enough of them and then rename each one to match a pattern slot you're using.
Part 3: ???
That's it, hopefully! Except for the creative work of making it all look nice....
A lot of unlabeled color-changing buttons would probably be hard to use while drawing... and there's so many ways to set this up visually that are nicer that a bunch of buttons. But I'm not sure what you'd like your personal modified wigglypaint to look like, so I don't know what to advise (yet).
I'm happy to clarify anything here (I'm sorry if it's confusing) or to help you make your custom wigglypaint look how you want it to. :)


















