github: <a href="https://github.com/derammo/der20/releases" rel="nofollow">https://github.com/derammo/der20/releases</a> rewards is the largest in a family of completely over-engineered Roll20 API Scripts I am creating using a framework of reusable TypeScript components I am calling der20 . Plugins are distributed together in releases via github. I am looking for contributors, so I am publishing this now even though a lot of work could still be done. The command reference is at <a href="https://derammo.github.io/der20" rel="nofollow">https://derammo.github.io/der20</a> . This API Script is a rewards tracker for D&D Adventurers League (DDAL) rewards tracking. Before the session, you can enter all of the check point and treasure unlock information about the modules or hardcover you are running for DDAL. Rules differences between Season 8 and previous season's modules are considered and customizable if things change. Configuration is via a command language, which you can store in handouts so you can move them from room to room, or you can just type in commands at the prompt and have the built-in state system store it. During the session, you select which DM you are (in case of shared rooms) and what module or hard cover you are running. The !rewards show command then starts interactive use. It will show the rewards for the current module initialized to their defaults. Depending on whether you are running a module or hardcover and depending on the tier and season, rewards are calculated. You can override any of the defaults calculated for you. Then you interactively check off checkpoints as they are achieved and hit a start and stop timer for the session. Time entry is either as an absolute time string, or empty string for "now" or a number meaning "this many hours ago." So if you have been playing for about 3 hours, you can just hit start and type in "3." When you set the start of the module, the script finds all player-owned characters in the game and adds them to the session data. It selects the highest level character for each player as the probable player character. You can then interactively correct which characters are included in the session. APL and player count are calculated from this selection. In this example, there are two players: 'Ammo' and 'Test U.' 'Test U' brought at three characters to the session, only one of which counts. For a Season 8+ module, you might have several explicit checkpoints and no rewards per hour: Finally, you can compile the rewards page in private and check everything before you share it with all the players. Development on this tool continues. There is a feature to directly import this reward information into the website <a href="https://adventurersleaguelog.com" rel="nofollow">https://adventurersleaguelog.com</a> . However, this functionality won't be enabled until the server side code can be implemented under this issue <a href="https://github.com/Ariel-Thomas/adventurers-league-log/issues/157" rel="nofollow">https://github.com/Ariel-Thomas/adventurers-league-log/issues/157</a>