module

☯ Wheel Of Destiny

Endorsements
0
Installs
0.33%
Comments
0
Latest version0.4.5
Minimum Core14
Compatible Core14
Last updated5 days ago
Created3 years ago
Authors
Languages
Systems All systems
Project source Project URL

☯ Wheel of Destiny

Let fate pick the victim.

Something bad is about to happen to someone in the room. But you don't want to be the one who chose. Let the Wheel of Destiny spin. It wasn't your fault — it was the damn computer.

One click, and the module randomly picks a token: it glows on the canvas, the wheel spins, a sound plays, and the chosen one is revealed to the whole table.

The Wheel of Destiny hopping from token to token before locking onto the chosen one

Buy Me a Coffee More Modules

✨ What It Does

  • 🎯 Picks a random token for you. Select a few tokens and it draws from those. Select nothing and it opens a picker listing every token in the scene, so you choose exactly who's in the draw.
  • 🔍 Filters the scene for you. The picker filters by actor type, disposition, whether a player is linked to the actor, and whether the token is hidden. Click Hostile and only the hostiles are in the draw — no hunting through the list.
  • 🖱️ Or just click tokens on the map. While the picker's open, canvas and list stay in sync — control a token to add it to the draw, release it to drop it, and the filters widen automatically to let it in.
  • 🎡 Spins a roulette. An optional "Native Glow" animation hops from token to token on the canvas before locking onto the winner. No extra modules needed.
  • 🔊 Plays a random sound. Point it at a folder of sounds and it picks one at random every spin. Four evil laughs are included to get you started.
  • 💬 Announces the result in chat. Keep it as a secret whisper to the GM, or show the whole table who got picked.
  • 🖼️ Reveals the chosen one on screen. A fullscreen image of the token pops up for everyone — and fades away on its own after a few seconds.
  • 📍 Targets and pings the winner. The camera pans to the token so nobody misses the moment.
  • 🧩 Zero dependencies. No Sequencer, no JB2A, no socketlib. Install it and go.
  • 👥 Players can use it too. A player targets a few tokens, hits the button, and the wheel picks from their targets.

The wheel stops, the winner gets targeted, and the verdict lands in chat — with the full list of who was in the draw, if you want it:

The chosen token targeted on the canvas, with the result announced in chat

🚀 How To Use

Three ways to spin:

  • The button. Open the Token controls in the left toolbar and click the ☯ yin-yang button.
  • The keyboard. Press F to spin, or Shift+F to always open the token picker — even when you already have tokens selected. Both shortcuts are GM-only and can be rebound under Configure Controls.
  • A macro. See the Macros & API section below.

Who gets drawn?

What you do Who's in the draw
You select two or more tokens first Only the tokens you selected
You select nothing, or just one (GM) Whoever you pick in the Choose Tokens window
You're a player Only the tokens you have targeted

🎛️ The Choose Tokens window

Start a draw without staging a selection and this opens, listing every token in the scene with its art, name, actor type, disposition, and the player linked to it. It reopens wherever you last left it — position, size, and filters included.

The Choose Tokens window open beside the canvas, with the checked rows highlighted on their matching tokens

The filters are how you build the draw. It opens with the whole scene in, and narrowing a filter drops whatever no longer matches — click Hostile and every non-hostile leaves the draw. Four filters, all read from the current scene:

Filter What it does
Actor Type Built from the types actually in the scene, so your system's own types show up with a count each
Disposition Friendly 🙂, Neutral 😐, Hostile 😠, Secret 🎭
Player Link Whether the token's actor belongs to a Foundry user
Visibility Visible or hidden tokens

If your remembered filters would leave nothing to pick from in the current scene, they reset to their defaults instead of opening onto an empty draw.

Need an exception? Untick any token by hand — or click it right on the canvas. While the window is open, canvas and picker selection track each other: controlling a token on the map ticks its row, widening whatever filter was hiding it if needed, and releasing it unticks the row again. Shift+click adds or removes a token without losing the rest of your canvas selection; a plain click replaces it, same as it always has. Each row also has a 🔍 button to pan the camera straight to that token. All and None work on what's currently shown, Reset puts every filter back, and Draw spins with whatever's left.

⚙️ Settings

The module settings tab: three menu buttons plus Target the Selected Token

One setting sits right in the main module tab, because it's the one you'll actually change mid-game:

  • Target the Selected Token — automatically target whoever gets picked.

Everything else lives behind three tidy buttons:

  • 🎵 Audio & Sound — turn sound on, choose your sound folder, pick which audio channel it plays on (so players control the volume in their own Foundry mixer), and hit Preview Sound to try a folder before you commit to it.
  • ✨ Animation & Visual — enable the roulette animation, tune its speed (Animation Delay per step) and set a Max Total Duration so the animation never drags on too long regardless of how many tokens are in the draw (if the per-step delay would exceed the total cap, it is reduced automatically), ping and pan to the winner, show the full list of candidates in chat, and choose whether to display the token art or the actor sheet art.
  • 💬 Dialogs & Chat — turn the fullscreen reveal on or off, write your own dramatic line ("You have been chosen!"), and decide who sees the chat message: nobody, the GM only, or the whole table.

🧙 Macros & API

You can trigger the Wheel of Destiny from a macro or from another module:

Spin the wheel — exactly like clicking the button.

WoD.randomToken();
 

Open the token picker, then spin with whatever you choose. GM only.

WoD.openTokenPicker();
 

Spin using your own list of tokens. Runs the full show (animation, sound, chat, reveal) and returns the winner.

const mySelectedToken = await WoD.randomToken(myTokenList);
 

Just pick one, no bells and whistles. Returns a token from your list and nothing else happens.

const mySelectedToken = WoD.selectRandomToken(myTokenList);
 

Ask for a list of tokens without spinning. Opens the picker and hands back what you chose, or null if you closed it. GM only.

const myTokenList = await WoD.promptForTokens();
 

⚠️ Coming from an older version?

  • v0.4.3 removed the auto-select mode. WoD.customAutoSelectDialog() is gone — use WoD.openTokenPicker()WoD.randomToken() also lost its second argument: WoD.randomToken([], 'pcs') no longer filters, and the 'pcs' is ignored. Pass your own token list instead, or use the picker's filters.
  • v0.4.0 moved the API from game.wod to the global WoD. Old macros using game.wod.randomToken() need to be updated to WoD.randomToken().
Subscribe
Notify of
0 Comments
0
Would love your thoughts, please comment.x
()
x