A beautiful mostly system-agnostic and completely customizable implementation of a Simultaneous Combat System. See the Reddit post from the author.
Have you ever tired of waiting for the turns of your friends to be over? Are you fed up with your players taking so long in every combat encounter? Do you feel like changing things up in your game and trying something new?
Usage
Please follow the built-in tutorial (built with IntroJS), for instructions. You can always relaunch the tutorial from within the settings. If you have any questions, feel free to contact me.
Features
Action Locking
In supported systems, SCS will detect whether the current phase has been registered with the module and will restrict what can be done on your turn accordingly.
If you would like to add support for another system or more phases, please make a PR or let me know on my Discord (link is below) and I will happily take suggestions.
Currently only dnd5e is supported with the default phases as described in the reddit post linked above.
Phase and Round display
The module will display the current phase and round in an interactive and draggble app. You can use the arrows to change phase (<
or >
) and change round (<<
or >>
), or you can simply click on the phase you would like to switch to (not recommended if using phase/cycle limits).
Integration with the Core Combat Tracker
While this module hides the Combat Tracker by default, it updates it in the background whenever the round is switched to allow for better compatibility. There is also a setting to show the default Combat Tracker.
Attack Roll HUD
In order to ease determining the attack order (for example, in the default attack phase), the module shows you the last attack roll in the token's HUD. This currently only works in D&D 5e and PF 2e.
Integration with other modules
SmallTime
The app moves outside of SmallTime's way
About Time
If using About Time's realtime clock, SCS will prompt you to pause for the duration of your combat encounter. Just add a combatant (by right clicking on it and clicking "Toggle Combat State" in the HUD) and it will percieve that as a combat that has started. Removing all combatants ends the combat.
Argon Combat HUD
This module hides Argon's "End Turn" button.
Change Colors
Clicking this button will generate new random colors for the phases!
Limit Phases
This setting will automatically switch the round at the end of the cycle of all phases. You can also do this with Maximum Cycle set to 1 and Limit Cycles enabled.
Limit Cycles & Maximum Cycle
This setting will put a limit on how many cycles can take place before switching to the next round. For example, if Maximum Cycle is set to 3, after each phase has been completed three times, it will be the next round. It is recommended using the arrows to navigate between phases when using this.
API
Methods
SCS has a small API with a few methods that can be called by others. They are accessible under game.modules.get("scs")?.api
.
defaultTracker(hide = true)
This will elegantly hide the default combat tracker from the sidebar. An optional Boolean paramter can be used to show the trackeragain, if hidden.
startTutorial()
This will show the IntroJS tutorial tour once.
stopTutorial(close = false)
This will stop the tour from showing everytime the page is loaded unless the user re-enabled the tutorial from within the module settings. An optional Boolean paramter can be used to also immediately close the tutorial, but this defaults to false
.
changeRound(delta)
An asynchronous method that changes the SCS's round by a given delta. Note that this will also change the Core round. Use a positive number for the delta to move the round forward and a negative number to go to previous rounds.
changePhase(delta)
An asynchronous method that changes the SCS's phase by a given delta. Use a positive number for the delta to move the round forward and a negative number to go to previous rounds.
Hooks
This module has two hooks which are only called on the GM's client:
scsRoundChanged
This hook is called whenever the SCS round changes. It has three arguments which are (in order): the current phase, the previous phase, and the delta.
scsPhaseChanged
This hook is called whenever the SCS phase changes. It has three arguments which are (in order): the current phase, the previous phase, and the delta.