One thing that has proven invaluable to me is to have some custom prompts for working with Watchmaker expressions. Sometimes they are a bit too complex for me, and sometimes I just don’t feel like thinking.
So I thought I’d share them with the community:
Here are some examples of how I use it and the responses:
| Request | Property | Formula |
|---|---|---|
| make layer 1 swing like a balance wheel motion | Rotation | math.sin(math.rad({drss}*6))*18 |
| only show this thing every other minute | Opacity | (1-({dm}%2))*100 |
| show it on odd minutes instead | Opacity | ({dm}%2)*100 |
| make the second hand move 3 times/sec | Rotation | math.floor({drss}/2)*2 |
| rotate with battery level from -70 to 70 | Rotation | -70+({bl}/100)*140 |
| bl -50 to 50 | Brightness | -50+({bl}/100)*100 |
| show LOW when battery gets low | Text | ({bl}<20) and ‘LOW’ or ‘’ |
| make this glow pulse | Glow / Opacity | 50+50*math.abs(math.sin(math.rad({ds}*180))) |
| put this on a circle with a radius of 80 | X | math.sin(math.rad({drss}))*80 |
| put this on a circle with a radius of 80 | Y | math.cos(math.rad({drss}))*-80 |
| make a realistic-looking pendulum swing | Rotation | math.sin(math.rad({drss}*3))*25 |
| move this around dial with my steps, starting at 0..175 | Rotation | (math.max(0,{sscp})/100)*175 |
| make something blink for .25 seconds once every second | Opacity | ({dss}<250) and 100 or 0 |
| map battery 20%-80% to 0-180° | Rotation | ((( {bl}<20) and 20 or (({bl}>80) and 80 or {bl}) )-20)/60*180 |
| make it wiggle a little | Rotation | math.sin(math.rad({drss}*12))*5 |
| make it bounce harder every second | Y | -math.abs(math.sin(math.rad({drss}*6)))*20 |
| rotate this based on temperature | Rotation | {wt}*3 |
| show AM or PM | Text | ({dh}<12) and ‘AM’ or ‘PM’ |
| show Morning / Noon / Evening | Text | ({dh}<12) and ‘Morning’ or ({dh}<17) and ‘Noon’ or ‘Evening’ |
| make this fade in and out all the time | Opacity | 50+50*math.sin(math.rad({drss}*3)) |
| make a heartbeat effect | Scale X / Scale Y | 1+0.18*math.max(0,math.sin(math.rad({dss}/1000*720))) |
| make this only show when charging | Opacity | ({bc}==1) and 100 or 0 |
| make a gauge that fills with steps | Rotation / Fill | (math.max(0,{sscp})/100)*180 |
It’s pretty good at guessing what you want. Of course, it can do some very advanced formulas as well. Telling it to explain is also useful to learn what it’s doing.
Just remember that it’s AI so it does get things wrong from time to time. Each chat session has random temperature settings so starting a new session usually helps.