Local copy of the nice blood on the clocktower webapp in case it ever disappears.
Go to file
Steffen c693ae3f08
Update deploy.yml
2020-06-30 13:58:39 +02:00
.github Update deploy.yml 2020-06-30 13:58:39 +02:00
public more metadata 2020-05-08 17:59:49 +02:00
server added socket timeout 2020-06-04 21:44:25 +02:00
src added support for (local) custom characters (closes #4) 2020-06-30 13:50:35 +02:00
.eslintrc.js eslint added 2020-04-05 19:50:33 +02:00
.gitignore added custom socket server 2020-05-27 22:33:51 +02:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 2020-05-24 22:35:28 +02:00
CONTRIBUTING.md Create CONTRIBUTING.md 2020-05-24 22:49:41 +02:00
LICENSE Create LICENSE 2020-05-11 23:45:16 +02:00
README.md readme update 2020-06-30 13:54:45 +02:00
package-lock.json Bump websocket-extensions from 0.1.3 to 0.1.4 2020-06-05 20:15:10 +00:00
package.json version bump 2020-06-30 13:50:58 +02:00
vue.config.js eslint added 2020-04-05 19:50:33 +02:00

README.md

Blood on the Clocktower Town Square

image

This is an unofficial online tool to run Blood on the Clocktower games through Discord or other digital means. It is supposed to aid storytellers and allow them to quickly set up and capture game states for their players.

You can try it online!

Features

  • Public Town Square and Storyteller Grimoire (toggle with shortcut [G])
  • Supports custom script JSON generated by the Script Tool
  • Live Session for Storyteller / Players including live voting!
  • Includes all 3 base editions and travelers
  • Night sheet and reminder text for each character ability to help storytellers
  • Many other customization options!

Custom Characters

In order to add custom characters to your local Grimoire, you need to create a JSON definition for them, similar to what is provided in the roles.json for the 3 base editions. Here's an example of how such a character definition file might be written:

[
  {
    "id": "acrobat",
    "image": "https://github.com/bra1n/townsquare/blob/master/src/assets/icons/acrobat.png?raw=true",
    "edition": "custom",
    "firstNight": 0,
    "firstNightReminder": "",
    "otherNight": 49,
    "otherNightReminder": "If either good living neighbor is drunk or poisoned, the Acrobat dies.",
    "reminders": ["Die"],
    "setup": false,
    "name": "Acrobat",
    "team": "outsider",
    "ability": "Each night*, if either good living neighbor is drunk or poisoned, you die."
  },
  { 
    "id": "investigator" 
  },
  { 
    "id": "imp" 
  }
]

This definition JSON includes a custom character, the Acrobat, and 2 base game characters, the Investigator and the Imp. For base game characters, it is sufficient to only provide the ID, similar to what you get from the Script Tool.

Required properties: id, name, team, ability

  • id: the internal ID for this character, without spaces or special characters
  • image: a URL to a PNG of the character token icon (should have a transparent background!)
  • edition: the ID of the edition for this character. can be left blank or "custom"
  • firstNight / otherNight: the position that this character acts on the first / other nights, compared to all other characters
  • firstNightReminder / otherNightReminder: reminder text for first / other nights
  • reminders: reminder tokens, should be an empty array [] if none
  • setup: whether this token affects setup (orange leaf), like the Drunk or Baron
  • name: the displayed name of this character
  • team: the team of the character, has to be one of townsfolk, outsider, minion, demon or traveler
  • ability: the displayed ability text of the character

Note: custom characters are currently not supported in live sessions and will not be synchronised to other players.

Code of Conduct

Contributing

Acknowledgements and Copyrights

This project and its website are provided free of charge and not affiliated with The Pandemonium Institute in any way.

Donations

This project will always be available free of charge, since I love building cool things and playing Blood on the Clocktower. If you still want to support me with a donation, you can do that here:

Donate