An interactive aid to track successes and failures in challenges à la D&D 4e-inspired skill challenges and Blades in the Dark progress clocks.
- Versatile: Works for D&D 4e-inspired skill challenges, Blades in the Dark progress clocks, or as a resource/countdown tracker.
- Click to Fill: Left-click anywhere within the ring or circle to fill a segment in that area. Right-click to clear a segment.
- Scroll to Change: Hover over the ring or circle and use your mouse wheel, or the +/- keys, to increase or decrease the number of segments.
- Player View: Click Show on the header to show the tracker to other players and click Hide to hide it from other players.
-
Click the button in the player list to open the Challenge Tracker List.
-
Click 'Create New' to create a new Challenge Tracker.
-
Fill in the options and click 'Save and Close'.
- Click 'Open' to open a Challenge Tracker.
- Click 'Copy' to copy an existing Challenge Tracker.
- Click 'Edit' to edit an existing Challenge Tracker.
- Click 'Delete' to delete an existing Challenge Tracker.
-
Create a macro with a Type of 'script' and enter:
ChallengeTracker.open(outer, inner)
outer
is the number of segments required on the outer ring (successes) andinner
is the number of segments required on the inner circle (failures). -
Execute the macro to open the Challenge Tracker.
Module settings are found in Foundry VTT under Game Settings > Configure Settings > Module Settings > Challenge Tracker.
Set the default color of the frame. Default is #0f1414.
Set the default color of the outer ring. Default is #228b22ff.
Set the default background color of the outer ring. Default is #1b6f1b66.
Set the default color of the inner circle. Default is #dc0000ff.
Set the default background color of the inner circle. Default is #b0000066.
Display the Challenge Tracker button to users with the selected role and above. Default is Player.
Set the location of the Challenge Tracker button. Default is Player List.
Allows users with the selected role (and above) to show Challenge Trackers to others. Default is false.
Set the default size of the Challenge Tracker in pixels. Default is 400.
Set the width of the frame. Default is Medium.
Enable the scroll wheel for increasing or decreasing segments. Default is true.
Set Challenge Trackers to windowed by default. Default is true.
More options can be set using an optional array parameter: ChallengeTracker.open(successes failures, {options})
where options is a comma-separated list of any of the following parameters in the format option: value
:
Set the background/unset image of the challenge tracker
Example backgroundImage: 'https://.../images/vintage-clock-face.webp'
Execute a function when a Challenge Tracker is closed.
Example closeFunction: () => { ui.notifications.info('Goodbye!') }
Set the foreground/set image of the challenge tracker
Example foregroundImage: 'https://.../images/vintage-clock-face.webp'
Set the hex color of the frame. The 'Frame Color' module setting will be ignored.
Example: frameColor: '#0000FF'
Set the width of the frame. The 'Frame Width' module setting will be ignored.
Options are:
- 'none'
- 'extra-thin'
- 'thin'
- 'medium'
- 'thick'
Example: frameWidth: 'thin'
Set the background hex color of the inner circle (failures). The 'Inner Background Color' module setting will be ignored.
Example: innerBackgroundColor: '#b0000066'
Set the hex color of the inner circle (failures). The 'Inner Color' module setting will be ignored.
Example: innerColor: '#dc0000ff'
Set to the ID of an existing Challenge Tracker to open that Challenge Tracker. Other options included will overwrite the Challenge Tracker's previous options.
Example: id: 'challenge-tracker-8b814267e7dfa
Set the number of completed segments on the inner circle (failures). Default is 0
.
Example: innerCurrent: 3
Execute a function when a Challenge Tracker is opened.
Example openFunction: () => { ui.notifications.info('Hello!') }
Set the background hex color of the outer ring (successes). The 'Outer Background Color' module setting will be ignored.
Example: outerBackgroundColor: '#1B6F1B66'
Set the hex color of the outer ring (successes). The 'Outer Color' module setting will be ignored.
Example: outerColor: '#0000FF'
Set the number of completed segments on the outer ring (successes). Default is 0
.
Example: outerCurrent: 3
Set to true
to persist the Challenge Tracker across sessions. Default is false
.
Example: persist: true
Set to true
to enable the scroll wheel for increasing or decreasing segments. Default is true
.
Example: scroll: false
Set to true
to show the Challenge Tracker to your players. Default is false
. This option will be ignored when the user's role is not equal to or greater than the role selected in the 'Allow Show to Others' module setting.
Example: show: true
Set the size of the Challenge Tracker in pixels between 200 to 600. The 'Size' module setting will be ignored.
Example: size: 400
Set the title of the Challenge Tracker in the window header. Default is Challenge Tracker
.
Example: title: 'Skill Challenge 1'
Set the Challenge Tracker to windowed (true) or windowless (false). The 'Windowed' module setting will be ignored.
Example: windowed: false
Open a Challenge Tracker.
Also accepts ChallengeTracker.open(outer, {options})
or ChallengeTracker.open({options})
. See Using Macros for more info.
Examples:
ChallengeTracker.open(4, 3, { title: 'Skills Challenge L1' })
ChallengeTracker.open(8, { title: 'Progress Clock' })
ChallengeTracker.open({ outerTotal: 6, innerTotal: 3, title: 'Social Conflict', frameColor: game.user.color })
Set the options of a Challenge Tracker by its ID.
Example: ChallengeTracker.setById('challenge-tracker-8b814267e7dfa', { outerCurrent: 3 })
Set the options of a Challenge Tracker by its title. Only the first Challenge Tracker with a matching title will be set.
Example: ChallengeTracker.setById('Challenge Tracker', { outerCurrent: 3 })
Get the options of a Challenge Tracker by its ID.
Example: const challengeTrackerOptions = ChallengeTracker.getById('challenge-tracker-8b814267e7dfa')
Get the options of a Challenge Tracker by its title. Only the first Challenge Tracker with a matching title will be returned.
Example: const challengeTrackerOptions = ChallengeTracker.getByTitle('Challenge Tracker')
Close all Challenge Trackers.
Example: ChallengeTracker.closeAll()
Close a Challenge Tracker by its ID.
Example: ChallengeTracker.closeById('challenge-tracker-8b814267e7dfa')
Close a Challenge Tracker by its title. Only the first Challenge Tracker with a matching title will be closed.
Example: ChallengeTracker.closeById('Challenge Tracker')
Delete all Challenge Trackers. Open Challenge Trackers will not be closed.
Example: ChallengeTracker.deleteAll()
Delete a Challenge Tracker by its ID. An open Challenge Tracker will not be closed.
Example: ChallengeTracker.deleteById('challenge-tracker-8b814267e7dfa')
Delete a Challenge Tracker by its title. Only the first Challenge Tracker with a matching title will be deleted. An open Challenge Tracker will not be closed.
Example: ChallengeTracker.deleteByTitle('Challenge Tracker')
Show all open Challenge Trackers to other players.
Example: ChallengeTracker.showAll()
Show an open Challenge Tracker to other players by its ID.
Example: ChallengeTracker.showByID('challenge-tracker-8b814267e7dfa')
See also: ChallengeTracker.show(title)
Show an open Challenge Tracker to other players by its title. Only the first Challenge Tracker with a matching title will be shown.
Example: ChallengeTracker.showByTitle('Challenge Tracker')
Hide all open Challenge Trackers from other players.
Example: ChallengeTracker.hideAll()
Hide an open Challenge Tracker by its ID.
Example: ChallengeTracker.hideById('challenge-tracker-8b814267e7dfa')
Hide an open Challenge Tracker by its title. Only the first Challenge Tracker with a matching title will be hidden.
Example: ChallengeTracker.hideByTitle('Challenge Tracker')
Open the Challenge Tracker list. GMs can use pass a username to the function to open that user's list.
Examples:
ChallengeTracker.openList()
ChallengeTracker.openList('Larkinabout')
ChallengeTracker.open(4, {show: true, frameWidth: 'none', outerBackgroundColor: '#00000000', outerColor: '#00000000', backgroundImage: 'modules/challenge-tracker/presets/blades-in-the-dark/blades-in-the-dark-4-white.webp', foregroundImage: 'modules/challenge-tracker/presets/blades-in-the-dark/blades-in-the-dark-black.webp', size: 150, title: 'Progress Clock'})
ChallengeTracker.open(12, {show: true, frameWidth: 'none', outerBackgroundColor: '#00000000', outerColor: '#00000000', backgroundImage: 'modules/challenge-tracker/presets/misc/blessed-landscape.webp', foregroundImage: 'modules/challenge-tracker/presets/misc/doomed-landscape.webp', title: 'Doomsday Clock'})