The Scriptorium

Vol 1: The Season of Skulls

This file needs your Supabase keys before it can connect.

Open this file in a text editor and find the CONFIG block near the top of the script. In Supabase, go to Project Settings → API and copy two things: your Project URL, and the public key (labelled "anon public", or "publishable" on newer projects). Paste them in, save, and reopen. Never use the "service_role" / "secret" key here.
Seeing this on a phone, or after opening the file directly (e.g. from Files, Messages or email) rather than a web link? The keys are probably already set — phone browsers block the page's connection code from running when it's opened as a local file rather than loaded from a proper https://… address. Ask whoever shared it with you for the hosted link instead.

The Scriptorium

Vol 1: The Season of Skulls

Offline for maintenance.

We're rolling out campaign support behind the scenes. Nothing has been lost — check back soon.

The Scriptorium

Tell the story of your battles in Warhammer: The Old World

Sign in

You're joining a campaign: sign in, or create an account, and you'll be added.

The Scriptorium

Vol 1: The Season of Skulls

Admin tools need two-factor login. It takes a minute with an authenticator app on your phone.
Viewing as — read-only, nothing here can be changed or saved.
This campaign has ended — no new battles can be logged, and it’s no longer accepting new players.
Draft. Only organisers can see this campaign until it’s opened to players.

Join a campaign to get started.

Open play

Challenge anyone on Scriptorium, any time.

Join a campaign or tournament

Got a code from your organiser?

Run your own

Set up a tournament for your club, step by step.

 Saving…

Theme

Admin colour

Font

Text size

Two-factor login

Unit rules, points and spells from Old World Builder, used under CC BY 4.0.

This app uses lists made with Old World Builder to manage your campaign. As you go through the campaign, you can import new units later; just make sure you keep the same list options in your Old World Builder. You'll need to export the list as an Old World Builder owb.json file, then drag and drop it into the importer below.

Import your existing army from Old World Builder. To do so, select your built army, then select the menu in the top right → Export → Download as .owb.json. Import that file below.

Public lists can be viewed by anyone in Open play. Otherwise only players you've accepted a challenge with can see it.

    You already have a roster. Choose how to apply this file:
    Replacing loses every unit’s XP, veteran abilities and wound history for good. Use “Add to existing roster” if you want to keep growing your current list instead.
     Inscribing…

    Magic items

    History

      Battalions

      Reading your rolls…

      Waiting on you

        Game nights

        More game nights

        Opponent

        Choose a registered player — their army needs to be visible to track kills and victory points. They'll need to accept before the battle begins. No opponent available? You can still play unscored, for solo practice.

        Scenario

        Game aid gives you a live turn counter and spell reference during the battle. Skipping goes straight to logging results once the request's accepted — for a battle you're playing (or already played) without the app's help.

        No opponent on Scriptorium: pick one of the rules’ scenarios, or build your own. The battle isn't scored.

        Free play: pick one of the rules’ scenarios, or build your own, then send the request. The battle isn't scored.

        Waiting for a response

        Waiting for your opponent to accept…

        Spells for this battle

        Roll and tick which spells your wizards know for this battle — specific spells are rolled fresh each battle (the lore each wizard specialises in is set on the Muster list tab). Each wizard knows one spell per wizard level.

        Waiting for your opponent

        Waiting for them to confirm they’re ready…

        Waiting

        Round 1

        Strategic locations held

        The battle’s reached its turn limit — ready to end the battle?

        Victory points so far

        Scoring so far

        Reading your rolls…

        End of battle

        Mark what happened to your opponent's units — that's what earns you victory points.

        Mark what happened to your own units — that's what earns your opponent victory points.

        Strategic objectives held at the end

        Warpstone objective

         Recording…

        Player rosters

        Map

        Your record

        Grudges

        Campaign standings

        How each alliance is doing, tallied live from every battle logged.

        Counting the slain…

        Rank perks

        My alliance

        Loading…

        Setting up

          The tournament

          Needs your attention

            Fun stats

            Battles each week

            Alliance standings

            Campaign points, bonuses included

            Calls for an organiser

            Add an event:

            Campaign stats

            Top generals

            Battles awaiting confirmation

            Logged by one player, not yet confirmed by their opponent. Nothing counts until the opponent confirms. Confirming here applies the result exactly as the opponent would.

            This phase

            Reading the muster roll…

            Outstanding battles

            Alliance campaign points

            Each alliance’s total from logged battles, plus any bonuses or penalties you award.

            Recent adjustments

            The reason shows in the recent adjustments.

            Invite

            • Join code

              Share join link copies an invitation ready to paste into WhatsApp (on a phone, it opens the share menu). Or print the QR code for the club noticeboard: new players open it, sign up and are added automatically. They can also type the code in Account. A new code stops the old code, link and QR code working.

              They’re added straight away, even if the event is full, and get a notification.

              Players

                  Check-in

                  On the day: tick everyone who’s here, drop anyone who hasn’t turned up, then lock the entrants.

                    Waiting list

                    The event is full, so these players are waiting for a place. When someone drops out before check-in, the first in line gets the place and a notification.

                      Alliances

                      The teams on the standings hub.

                      Entered battles count straight away. They don’t award unit experience, since there’s no unit detail to award it from.

                      Rounds

                      Lists

                      Lock the lists so they stop changing, then reveal them to everyone. Each player’s list is in Players.

                      • Players can’t import a new list or add or remove units. You still can. Experience and wounds still change in battle.

                      • Whether players can see each other’s lists. Lock the lists first to stop changes. For a tournament, lists can be revealed once they’re locked.

                      Finalise and send

                      Scenarios

                      This campaign

                      The rules’ scenarios

                      The rulebook, Matched Play Guide, narrative and Battle March scenarios, which every player can pick. Copy one into this campaign to change it; your campaign’s own scenarios only show in its battles and events, not free play.

                      Battlefield map generator

                      Roll terrain and lay out a table for any scenario. Save it as an image, or add it to the map library so scenarios can use it.

                      Custom objectives

                      Announcements

                      Short logistics posts — “Phase 3 starts Friday” — shown to players near the top of the app, newest first. Always visible once posted, unlike the narrative pages below.

                      Narrative updates

                      Pages of this campaign's ongoing story, shown to players in order as a click-through book. Switch the tab on for players in Campaign › Settings.

                      How players will see it, at the top of their updates:

                      Cover photo

                      The cover photo

                      Adding the photo…

                      Game nights

                      List the campaign’s gaming nights and tournament days so players can book a table. Once the tables are full, later bookings join a waiting list and move up when someone cancels. Tickets are still bought in your shop: add each night’s ticket link and players get a button to it.

                      nights in a row, a week apart

                      Tickets are bought in your shop; players get a button to this link.

                      Phases

                      Each phase is a stretch of the campaign with its own scenarios: each scenario is one battle for each player. Only one phase is played at a time; you start and finish them in Run.

                      No phases yet: the campaign plays without scenario limits until you add one.

                      Each scenario is one battle for each player in this phase.

                      Rank perks

                      A narrative rule for whichever alliance ranks 1st/2nd/3rd in campaign points — awarded automatically when you mark a phase completed, using whatever's saved here at that moment. Editing this afterwards doesn't change perks already awarded.

                        Leave a name blank and nobody gets a perk for that place.

                        Phases

                        Start each phase when it’s time to play it, and finish it when it’s done: finishing one awards the rank perks. Swipe between them to see how each is going.

                        No phases yet. Add them in Set up.

                        Awards

                        Best painted, best sportsman, best chronicler, or your own. Open voting and each player gets one secret vote per award; you see the totals. Or skip the vote and name a winner yourself. Winners show on their record and in standings, and everyone's told.

                        Battles in progress

                        Battles and requests still open in this campaign. You’re notified when one has been quiet for 3 hours; after 24 hours with no result sent, it closes itself. Closing one ends it for both players and records nothing.

                        Battle log

                        Fix a mis-entered result or points total, or remove a bad entry. Deleting a battle reverses any experience it granted. Add a battle nobody logged in Game view, including one with three or more players.

                        Reading the muster roll…

                        Tournaments

                        Self-contained Swiss, single-elimination or round-robin events — either a quick mini-tournament alongside the ongoing campaign, or (if this campaign's format is Tournament) the whole campaign.

                        Lists over this are flagged when you pick entrants. You can change all of this later with Edit details.

                        Map

                        Allegiances
                        Supply and Warpstone

                          Warpstone objectives

                          History

                            Lists over this are flagged when you pick entrants; you can still tick them in.

                            minutes

                            Shows a countdown to you and the players once a round starts. Blank for no timer.

                            Scenarios for each round are now chosen as the round comes up, in Rounds.

                            Round scenarios

                            Set a scenario for each planned round — you can do this before entrants are locked.

                            Entrants

                            Pick who's playing, then lock the list. The number of rounds is fixed once you lock.

                            Rounds start once the entrants are locked and the tournament has started.

                            Battles

                            Current round

                            Print and more

                            Print

                            Less often

                            Standings

                            The final round's result is hidden from players until you reveal it.

                            Ties are split by VP difference, then strength of schedule (the total score of everyone you played), then head-to-head.

                            Bonuses and penalties

                            Soft scores

                            Each player’s painting score, sportsmanship total and favourite army votes, as your judges and score sheets have them. Best Overall weighs each against the best in the field.

                            Score changes

                            Every change to a result, Victory Points, bonus or penalty: when, who made it, and what it was before.

                            Downloads

                            For a rankings site such as Old World Rankings, or your own spreadsheet.

                            Standings appear once the first round starts.

                            Entrants

                              Use a minus for a penalty, such as −1. Players see the reason beside the standings.

                              A new entrant only plays from the next round’s pairings.

                              Ready to start

                                Check-in

                                  Entrants

                                  Quests

                                    Finalised: unlock to change anything.

                                    Campaign settings

                                    • Name

                                      What everyone sees the event called: on Play, in invites and in the player pack.

                                    • Format

                                      Campaign or tournament. Set once, when the event is made.

                                    • Battles

                                      Normal battles or Battle March, for the whole event, and the points limit for every army. Battle March is played at up to 750 points on a smaller table, with its own scenarios. Every scenario for the event is made for this.

                                    • Dates

                                      The day (or days) it runs. Leave either end blank if it’s not settled yet.

                                    • Max players

                                      How many can join with the code or link. Past that, players go on the waiting list. Organisers can always add players.

                                    • Notes

                                      Anything else players need to know, such as what to bring, food and parking. Shown on Play and in the player pack.

                                    • Campaign points

                                      The campaign points each result earns towards the campaign standings.

                                    Scoring and ranking

                                    • Scoring

                                      How a battle’s result turns into tournament points.

                                    • Byes

                                      What a player gets for sitting out a round when there’s an odd number of players.

                                    • Tiebreaks

                                      When players are level on points, these decide who’s higher, in this order.

                                    • Final ranking

                                      Best General ranks on battles alone. Best Overall adds the soft scores, by their share.

                                    Pairings and extras

                                    • Pairings

                                      How players are matched each round: round 1, which table the top players take, and who’s kept apart.

                                    • Soft scores

                                      Awards outside the battles themselves: painting, sportsmanship and favourite army.

                                    • Comp

                                      Rules to balance the armies, such as Square Based Comp’s tiers of extra points.

                                    Leave either blank if it’s not settled yet.

                                    Caps self-service joins (the join code or link). You and other organisers or platform admins can always be added past it.

                                    Type of battle

                                    Scoring

                                    How close a battle must be to count as a draw. 0 means only an exact tie.

                                    With an odd number of players, the lowest-ranked player who hasn’t had a bye gets it.

                                    When players are level on points, these decide who’s higher, in this order. The official order puts total VP first; secondary-objective VP and Generals slain aren’t recorded per battle yet.

                                      Final ranking

                                      Keep apart

                                      Always in round 1, and in later rounds where the scores allow. Players set their club in Account.

                                      Awards outside the battles themselves. Turn on the ones you’re running; with Best Overall, each counts for its share of the overall score. Scores are entered on the day.

                                      Comp

                                      Each tier gets extra points to build with, and a kill point modifier: the VP an opponent scores against that army are multiplied by it. Players pick their tier on their Lists page; you can correct it in Players. No single character or unit may cost over 500 points (the Arachnarok excepted).

                                        Applies to battles logged from now on; battles already logged keep their points.

                                        Switches

                                        • Write pages in Campaign › Story first, then switch this on when you’re ready for players to read them.

                                        • Shared posts show photos and stories only, under “All campaigns”. Switching this off hides them from other campaigns straight away.

                                        • Unit XP, Veteran Abilities/Seasoned Commander rolls, and Battlefield Losses/Death & Dishonour. Turning this off just hides it — nothing already earned is lost, and it can be switched back on later.

                                        • Stops players changing their own alliance from Muster list. You can still reassign anyone from Membership.

                                        Audit trail

                                        Who changed what — membership, scenarios, phases, alliances, campaign settings, and any organiser edits to a player's battle log.

                                        Reading the muster roll…

                                        Danger zone

                                        While on: no new battles can be logged and no new players can join. Nothing is deleted or hidden — standings, rosters and narrative stay fully readable, and it can be switched back on at any time. Use this once a season wraps up.

                                        Players

                                        Every player on the platform and their rank — not just this campaign's roster.

                                        Campaigns

                                        Every campaign on Scriptorium, players’ drafts included. Anyone signed in can start one with the campaign builder and becomes its organiser.

                                        Opened to players straight away. You become its organiser; set the rest up in the admin tabs.

                                        Set once. A tournament has no narrative chapters and no alliances; its standings track the tournament, set up in Events › Tournaments once players have joined.

                                        Delete campaign

                                        Deletes whichever campaign is currently selected (the switcher in Account) — it and everything in it: rosters, battles, standings, narrative. Permanent, and superadmin-only. To wrap up a season without losing anything, use End campaign in Campaign › Settings instead.

                                        Leave this battle?