commit 8f416e5a39ca91f4eb7045fe1db48cf17a64d42d
parent 4cb71a8314aaedd32d2ad8fc6ae216ffc1b09860
Author: Skylar Hill <stellarskylark@posteo.net>
Date: Sun, 5 Jun 2022 03:17:37 -0500
Add more documentation
Diffstat:
2 files changed, 59 insertions(+), 10 deletions(-)
diff --git a/README.md b/README.md
@@ -1,12 +1,64 @@
-# rpgsheets
+# rpgsheet
-`rpgsheets` is a CLI/TUI character sheet application for tabletop RPGs.
+`rpgsheet` is a CLI/TUI character sheet application for tabletop RPGs.
+
+## Dependencies:
+* `rolldice` for, uh, rolling dice
+* `bc` for calculations
## Features
-* **System-agnostic:** Character sheets are stored as YAML files, and the data structure is not designed with a particular TTRPG system (ie DnD5e). You can make a template for your favorite system!
+* **System-agnostic:** Character sheets are stored as YAML files, and the data structure is not designed with a particular TTRPG system (ie dnd5e). You can make a template for your favorite system! This is also a bit of a downside; `rpgsheet` is quite usable, but you might miss some niceties that it could provide if it knew more about your specific system.
+* **Flexible:** You can define whatever tabs or windows you want for your character sheet! The template is just a starting point.
* **Auto-rolling:** As long as your system uses dice rolls that can be represented with the standard `NUMdFACES+MOD` notation, you can easily define actions which will automatically be rolled.
* **Auto-calculation:** You can define values in your character sheet which are dependent on other values. For instance, you can define a hard-coded `proficiency` value, and then define your shortsword attack modifier as `3+proficiency`. (For DnD, you probably actually want a hard-coded `strength` ability score, then a `STR` value defined as `(strength-10)/2`, then define your shortsword attack as `STR+proficiency`.)
-## Dependencies:
-* `rolldice` for, uh, rolling dice
-* `bc` for calculations
+## Unimplemented planned features
+* Edit character sheet items from within `rpgsheet`. Currently you can raise/lower numerical values, but you cannot add new items or adjust their definitions.
+* Configurable controls
+* Be able to have a tab with multiple rows of windows
+
+## Planned related projects
+* `dndsheet` -- `rpgsheet` but with a streamlined dnd5e-specific interface which, given a sheet following a particular standard, can provide an experience tailored to the system.
+
+# The sheet format
+Sheets are stored as YAML files. Keys are limited to alphanumeric characters, plus `_`, `~`, and `'`. When displayed "nicely" in the interface, `_` is converted to a space, and `~` to a hyphen.
+
+All window names and expressions (items that go in windows) must have unique names.
+
+Here is an extremely pared-down design so you can see the structure:
+```
+name: Character Name
+class: Character Class
+level: 1
+tabs:
+ - main:
+ - stats
+ - inventory
+ - attacks:
+ - weapons
+ - spells
+expressions: # items that appear in the windows
+ strength:
+ modifier: 15 # use `modifier` for flat values
+ window: stats
+ STR:
+ # Modifiers can be defined in terms of
+ # other diceless expressions
+ modifier: (strength-10)/2
+ window: stats
+ sword-attack: # we cannot have two expressions named `sword`
+ dice: d20 # must be in NUMdSIDES format; no modifiers
+ modifier: STR # here is where your modifier goes
+ window: weapons
+ # Extra information, shown at the bottom of the screen
+ desc: Swing your really cool sword
+ sword:
+ # Note that you don't need to supply dice or modifiers
+ desc: Your really cool sword
+ window: inventory
+ # will be displayed as "Carl's Terrifyingly-hideous Face"
+ carl's_terrifyingly~hideous_face:
+ dice: 8d12
+ desc: 9th level. Oh god, oh no, look away if you want to live.
+ window: spells
+```
diff --git a/templates/dnd5e.yaml b/templates/dnd5e.yaml
@@ -283,8 +283,5 @@ expressions:
modifier: spellcasting_ability+proficiency
window: spellcasting_stats
prestidigitation:
- desc: "Cantrip. This spell is a minor magical trick that novice spellcasters use for practice. You create one of the following magical effects within range: 1) You create an instantaneous, harmless sensory effect, such as a shower of sparks, a puff of wind, faint musical notes, or an odd odor. 2) You instantaneously light or snuff out a candle, a torch, or a small campfire. 3) You instantaneously clean or soil an object no larger than 1 cubic foot. 4) You chill, warm, or flavor up to 1 cubic foot of nonliving material for 1 hour. 5) You make a color, a small mark, or a symbol appear on an object or a surface for 1 hour. 6) You create a nonmagical trinket or an illusory image that can fit in your hand and that lasts until the end of your next turn. If you cast this spell multiple times, you can have up to three of its non_instantaneous effects active at a time, and you can dismiss such an effect as an action."
- window: spells
- carl's_hideous_face:
- desc: 9th level. Oh god, oh no, look away if you want to live.
+ desc: "Cantrip. This spell is a minor magical trick that novice spellcasters use for practice. You create one of the following magical effects within range: 1) You create an instantaneous, harmless sensory effect, such as a shower of sparks, a puff of wind, faint musical notes, or an odd odor. 2) You instantaneously light or snuff out a candle, a torch, or a small campfire. 3) You instantaneously clean or soil an object no larger than 1 cubic foot. 4) You chill, warm, or flavor up to 1 cubic foot of nonliving material for 1 hour. 5) You make a color, a small mark, or a symbol appear on an object or a surface for 1 hour. 6) You create a nonmagical trinket or an illusory image that can fit in your hand and that lasts until the end of your next turn. If you cast this spell multiple times, you can have up to three of its non-instantaneous effects active at a time, and you can dismiss such an effect as an action."
window: spells