-
-
Notifications
You must be signed in to change notification settings - Fork 5
Stat Bars and Dots
RPG Sage offers the ability to show numeric stats in the form of bars, dots, and more! These representations (tracker, gauge, bar, dots, etc.) are only displayed in dialog posts created by RPG Sage.
Value bars are used to render how "full" something is as a percentage. Value bars assume that 0 is the lowest ("empty") value. The classic, most common example, is hit points (health bar).
For value bars to work, your character must have two related stats stat and stat.max, ex:
sage! npc update name="BadGuy" hp="20" hp.max="20"
Showing the value bar in a dialog post is as simple as including {stat.bar} in your dialog, ex:
gm:: BadGuy takes damage, current health: {BadGuy::hp.bar}
The default value bar is a series of ascii characters that represents a vertical bar:
-
▕0% (empty/0) -
▕▁< 14.3% -
▕▂< 28.6% -
▕▃< 42.9% -
▕▄< 59.2% -
▕▅< 73.5% -
▕▆< 87.8% -
▕▇< 100% -
▕█100% (full/max) -
▕?invalid- shown when either
statorstat.maxaren't numbers or produce an invalid result
- shown when either
RPG Sage also has a horizontal bar built in.
To use it instead of the vertical bar, set the character's stat.bar.values value to HorizontalBar. Ex:
sage! npc update name="BadGuy" hp.bar.values="HorizontalBar"
This bar uses the following character strings to represent the horizontal bar:
-
┆┈┈┈┈┆0% (empty/0) -
┃┈┈┈┈┆< 20% -
┃━┈┈┈┆< 40% -
┃━━┈┈┆< 60% -
┃━━━┈┆< 80% -
┃━━━━┆< 100% -
┃━━━━┃100% (full/max) -
┆┈?┈┆invalid
Additionally, you can create your own bars by stringing together your choice of characters, ascii/unicode, or emoji.
While you can use custom Discord emoji, such as ❤️, these examples will use regular emoji for readability.
To do so, you need to provide a series of comma separated values for your character's stat.bar.values. You are required to have at least 4 values, but you can have more. The first is 0%, last is 100%, and the other values are used to calculate breakpoints based on percentage of stat.max. Ex:
sage! npc update name="BadGuy" hp.bar.values=" 🤍🤍🤍🤍🤍 , 🩷🤍🤍🤍🤍 ,🩷🩷🤍🤍🤍 , 🩷🩷🩷🤍🤍 , 🩷🩷🩷🩷🤍 , 🩷🩷🩷🩷🩷 "
Leading and trailing spaces will be stripped out, so you can have spaces around your commas for readability.
Optionally, you can specify a value for when the stat percentage is invalid by adding another value at the end after two commas.
sage! npc update name="BadGuy" hp.bar.values=" 🤍🤍🤍🤍🤍 , 🩷🤍🤍🤍🤍 ,🩷🩷🤍🤍🤍 , 🩷🩷🩷🤍🤍 , 🩷🩷🩷🩷🤍 , 🩷🩷🩷🩷🩷 ,, 💔💔💔💔💔"
HP "Bar" example output and corresponding % range:
- 🤍🤍🤍🤍🤍 0%
- 🩷🤍🤍🤍🤍 < 25%
- 🩷🩷🤍🤍🤍 < 50%
- 🩷🩷🩷🤍🤍 < 75%
- 🩷🩷🩷🩷🤍 < 100%
- 🩷🩷🩷🩷🩷 100%
- 💔💔💔💔💔 invalid
- optional, defaults to simple
?if missing - requires two commas before it
- optional, defaults to simple
If you create custom bar emoji consisting of multiple emoji that look like a single image/emoji, you need to remove any spaces between the pieces that make up the whole. Ex:
sage! npc update name="BadGuy" hp.bar.values=" :l-no::no::no::r-no: , :l-yes::no::no::r-no: ,:l-yes::yes::no::r-no: , :l-yes::yes::yes::r-no: , :l-yes::yes::yes::r-yes: "
While they are called bars, you can use single emoji to just as easily create "gauges":
sage! npc update name="BadGuy" hp.bar.values=" ☠️ , 💔 , ❤️ , 🧡 , 💛 , 💚 "
sage! npc update name="BadGuy" hp.bar.values=" ☠️ , 💔 , ❤️ , 🧡 , 💛 , 💚 ,, ❓"
HP "Gauge" output and corresponding % range:
- ☠️ 0%
- 💔 < 25%
- ❤️ < 50%
- 🧡 < 75%
- 💛 < 100%
- 💚 100%
- ❓ invalid
Value dots are used to render a count of something. A common Pathfinder 2e usage would be Hero Points.
For value dots to work, you character must have a stat with a number value, ex:
sage! pc update name="Wizzard" heropoints="3"
Showing the value dots in dialog post is as simple as including {stat.dots} in your dialog, ex:
gm:: Don't forget you can reroll using a heropoint: {Wizzard::heropoints.dots}
Which displays as:
Don't forget you can reroll using a heropoint: ●●●
If you want to show usage of a resource with dots, you need to include a stat.max as well, ex:
sage! pc update name="Wizzard" heropoints="1" heropoints.max="3"
This changes the above output to:
Don't forget you can reroll using a heropoint: ●○○
In addition to stat.dots, RPG Sage has other shapes available (and 3 letter shortcuts):
-
◇,◆asstat.diamonds(orstat.diafor short) -
○,●asstat.dots(orstat.dotfor short) -
♡,♥asstat.hearts(orstat.hrtfor short) -
⬡,⬢asstat.hexes(orstat.hexfor short) -
▫,▪asstat.squares(orstat.sqrfor short) -
☆,★asstat.stars(orstat.strfor short) -
△,▲asstat.triangles(orstat.trifor short)
Some Examples:
sage! pc update name="SpaceWizzard" charges=3 charges.max=4 grenades=1
Output Examples:
{SpaceWizzard::charges.hexes}becomes ⬢⬢⬢⬡
{SpaceWizzard::grenades.str}becomes ★
If you would prefer to see your dots as letters, then you simply use stat.letters (or stat.az for short). This will use the first letter of stat (if you have multiple parts, such as prefix.stat.az then it is the first letter of the part before az). As implied by "az", all letters A-Z are available (uppercase only).
For our Pathfinder and Starfinder (and other) players:
-
Ⓕ,🅕asfocuspoints.letters(orfocuspoints.azfor short) -
Ⓗ,🅗asheropoints.letters(orheropoints.azfor short) -
Ⓜ,🅜asmanapoints.letters(ormanapoints.azfor short) -
Ⓢ,🅢asstaminapoints.letters(orstaminapoints.azfor short)
Some Examples:
sage! pc update name="Wizzard" heropoints="1" heropoints.max="3"
sage! pc update name="Wizzard" mana=2 mana.max=5
Output Examples:
{Wizzard::heropoints.letters}becomes 🅗ⒽⒽ
{Wizzard::mana.az}becomes 🅜🅜ⓂⓂⓂ
By using the "slots" option, you can show spell slots as circled numbers 1-10 (much like circled letters above). When determining what number to use, RPG Sage will look for a number (1), a word (first), and also an "nth" (1st). Cantrips will use the circled C.
Some Examples:
sage! pc update name="Wizzard" cantrips=4
sage! pc update name="Wizzard" first=3
sage! pc update name="Wizzard" spells.2nd=1 spells.2nd.max=2
Output Examples:
{Wizzard::cantrips.slots}becomes 🅒🅒🅒🅒
{Wizzard::first.slots}becomes ❶❶❶
{Wizzard::spells.2nd.slots}becomes ❷②
As with bars, dots can be customized using your choice of letters, ascii/unicode, or emoji. To do so, you provide the "off" and "on" emoji separated by a comma. Optionally, you can provide an "unknown" emoji in case your stat isn't a number, but unlike bars you only need 1 comma.
Example:
sage! pc update name="SpeedRacer" flags=1 flags.dots.values=" 🏴, 🏁 "
sage! pc update name="SpeedRacer" laps=3 laps.max=5 laps.dots.values=" 🏴, 🏳️ , 🚩"
Output:
{SpeedRacer::flags.dots}becomes 🏁
{SpeedRacer::laps.dots}becomes 🏳️🏳️🏳️🏴🏴
In the previous examples, you saw dialog stat usage as {char::stat.bar} or {char::stat.dots}. This is done to highlight that a GM can show the bars and dots of characters by referencing their names/aliases. A player usually only needs {stat.bar} or {stat.dots} to reference their acting character.
In addition to displaying these in dialog, it is also worth noting that these can be added to stat templates, such as displayName.template or dialogFooter.template allowing them to automatically be appending to the display name or footer of each dialog post for a character.
RPG Sage Links
Wiki Home
GitHub Repo
rpgsage.io
Patreon
Discord Server
Map Builder
RPG Sage Socials
Randomizers
Weather Report
PF2e ABCs
Ruby Phoenix Team
SF2e ABCs
Other