One Page Wiki - rpg-sage-creative/rpg-sage GitHub Wiki
Wiki Home | Feature Guide | Quick Start | E20 Demo | One-Page Wiki
Welcome to the RPG Sage Wiki.
RPG Sage is a Play-by-Post Discord bot designed to evoke the feel of a JRPG by using dialog boxes that include character profile pictures to help keep the game focused on the characters you are portraying.
First time? Get started with Invite RPG Sage, Command Prefix, Admin Tiers, and Direct Messages.
Still new? Check out Feature Guide, Quick Start, and Essence 20 Demo.
Table of Contents
Map Management (prototype)
Pathfinder / Starfinder Commands
@TODO List
-
Replace the guides at https://rpgsage.io with links to or copies of the Wiki documents here.
-
Reformat to work better as a wiki (vs previous docs page)
-
Work with community to find better layout and wording for the wiki. (It needs to be easier to understand for the majority of users.)
-
Add more images!
Add new tasks or missing content to this list as needed
Channel Management
These commands let a Server Owner or "SageAdmin" manage channels. These commands also let a "GameAdmin" or GameMaster manage game channels.
View Channel Details
This command displays information about the the current Channel. It lists things like the Channel type, the Game it is a part of, dice settings, search settings, and more.
Example:
sage! channel details
Update a Channel
This command allows you to change a Channel's settings.
You only need to include the settings you want to change.
You are also able to unset
a setting to return it to the default.
Channel Options are detailed here.
Examples:
sage! channel update type="ooc"
sage! channel update diceoutput="xxl" dicesecret="unset"
Channel Options
These options are used during Channel Management.
Note: multiple options can be set at the same time
dialogPost=""
This determines how RPG Sage's dialog posts are handled.
Valid dialogPost
values:
EMBED
uses an embed that includes the character's avatar on the right. (default)POST
uses a simple message post some screen readers cannot read Discord embeds.UNSET
uses the dialogPost method inherited from either the User, Game, or Server.
Examples:
sage! channel update dialogPost="post"
sage! channel update dialogPost="unset"
NOTE: The
embed
option uses Discord embeds to show your content, but RPG Sage has no way of knowing if you have embeds turned on or off! If you plan on using embeds, you will need to ensure they are turned on in your Discord settings. As of this edit, they are in Settings > Chat > Embeds and Link Previews.
diceCrit=""
(DnD5e and PF2e only)
This sets how Critical Hit damage is calculated.
Valid diceCrit
values:
TIMESTWO
rolls the dice and multiplies the results x2. (default)ROLLTWICE
rolls the damage twice and adds the results together.ADDMAX
rolls the dice once and then adds max damage to the result. (RPG Sage House Rule)UNSET
uses the diceCrit method inherited from either the Game or the Server.
Examples:
sage! channel update diceCrit="addmax"
sage! channel update diceCrit="unset"
diceOutput=""
This determines how compact or verbose the dice results are displayed. Read more about Dice Output here.
Valid diceOutput
values:
XXS
,XS
,S
M
(default)L
,XL
,XXL
ROLLEM
uses the diceoutput method that most closely emulates what Rollem uses.UNSET
uses the diceoutput method inherited from either the Game or the Server.
Examples:
sage! channel update diceoutput="xxl"
sage! channel update diceoutput="rollem"
sage! channel update diceoutput="unset"
dicePost=""
This determines how RPG Sage posts dice results.
Valid dicePost
valus:
POST
will output dice results in a simple post.EMBED
will output dice results in an embed in a post. (default)UNSET
uses the dicepost method inherited from either the Game or the Server.
Examples:
sage! channel update dicepost="post"
sage! channel update dicepost="unset"
NOTE: The
embed
option uses Discord embeds to show your content, but RPG Sage has no way of knowing if you have embeds turned on or off! If you plan on using embeds, you will need to ensure they are turned on in your Discord settings. As of this edit, they are in Settings > Chat > Embeds and Link Previews.
diceSecret=""
This determines how RPG Sage reacts to dice with the word "secret" in them.
Valid diceSecret
values:
DM
tells Sage to find the first available GM and send the dice results to them as a DM.GM
tells Sage to find a GM channel and send the dice results there. If no GM channel exists, this is treated as DM.HIDE
tells Sage to hide/redact the results using spoiler tags.IGNORE
simply ignores them. (default)UNSET
uses the dicesecret method inherited from either the Game or Server.
Examples:
sage! channel update dicesecret="ignore"
sage! channel update dicesecret="unset"
diceTo=""
This tells RPG Sage to send the results of any Dice rolled to the given Channel instead of the Channel they were rolled in. Secret Dice will still adhere to the settings of diceSecret
(if set) and go to the appropriate GM channel if configured to do so.
Example:
sage! channel update diceTo=" #Dice-Only "
gameSystem=""
(Non-Game Channels only)
This is the Game System, which determines how RPG Sage handles certain features, such as Dice and Search.
Valid gameSystem
values:
CNC
Coyote & CrowDND5E
Dungeons & Dragons 5eE20
Essence 20 system (G.I. Joe, Power Rangers, Transformers, etc.)PF1E
Pathfinder RPGPF2E
Pathfinder 2eQUEST
Quest RPGSF1E
StarfinderVTM5E
Vampire: The Masquerade (5e)NONE
(default)
Examples:
sage! channel update gameSystem="vtm5e"
sage! channel update gameSystem="pf2e"
type=""
This sets the type of channel, which determines how RPG Sage handles certain features, such as Dialog and Dice.
Valid type
values:
IC
(In Character) only Dialog and Dice are allowed for GMs and PlayersOOC
(Out of Character) all Sage commands are allowed for GMs and PlayersGM
(Game Master) all Sage commands are allowed for GMsDICE
(Dice) only Dice commands are allowed for GMs and PlayersMISC
(Miscellaneous) all Sage commands are allowed for GMs and PlayersUNSET
tells Sage that this isn't a specific channel type
Note: A GM only channel is where secret dice rolls are sent!
Examples:
sage! channel update type="ooc"
sage! channel update type="gm"
Character Management
These commands allow you to create, manage, and delete Characters. Some of these commands function return slightly different results when used within a Game than they do when used outside a Game. "Used within a Game" simply means the command was used in a Channel that belongs to a Game.
Player Characters (aka PCs) and their Companions can be created inside or outside of a Game. Once created, though, PCs in Games cannot be used outside their Game of origin and PCs outside of Games cannot be used in a Game. Non-Player Characters (aka NPCs) and their Minions can only be created inside a Game, and only by a Game Master. Once created, they only exist and can only be used within that Game. Inside a Game, there is a special built-in NPC called "Game Master" that can be configured as if it were an NPC.
These commands differ in name to distinguish what you are managing (
pc
,npc
,companion
,minion
, andgm
) but they function the same otherwise.
Character Lifecycle
These commands are used to create, view, update, and delete a Character.
Create a Character
Creating a Character requires a name
.
If you are creating a Companion or Minion, it also requires a charName
to identify the parent character.
All other settings are optional and are set using the argument format of option="value"
.
Character Options are detailed here.
Examples:
sage! pc create name="Bob the Fighter"
sage! companion create charName="Bob the Fighter" name="Stan the Squire"
sage! npc create name="Gobbo the Goblin"
sage! minion create charName="Gobbo the Goblin" name="Sluggo"
View Character Details
This command displays information about the named Character.
This information includes name
, alias
, Player (for PCs/Companions), Companions/Minions, color
, Auto Dialog channels, and stats (if any).
Players in a Game can only get details on their own PC/Companions.
Game Masters can get details on all Characters in the Game.
Examples:
sage! pc details name="Bob the Fighter"
sage! companion details charname="Bob the Fighter" name="Stan the Squire"
sage! npc details name="Gobbo the Goblin"
sage! minion details charName="Gobbo the Goblin" name="Sluggo"
Note: In a Game, where a Player has only 1 PC, they do not have to provide the name when viewing their PC's details.
Examples:
sage! pc details
sage! companion details name="Stan the Squire"
Update a Character
This command allows you to change the named Character's settings. Much like creating a Character, you only need to include the settings you want to change. Character Options are detailed here.
Examples:
sage! pc update name="Bob the Fighter" color="#01AB99"
sage! npc update name="Gobbo the Goblin" alias="GG"
Note: In a Game, where a Player has only 1 PC, they do not have to provide the name when updating their PC. Similarly, GMs do not have to include the name when updating the GM Character.
Example:
sage! pc update alias="BoB"
sage! gm update newName="Dragon Master"
Assign a Character to a Player
The newUser
option allows a GM to reassign a Character to a different Player.
It can be a User Mention or the full ID of a User.
Note: If using a User Mention, it is best to add a space after the first "
and before the @
.
Examples:
sage! pc update name="Mal" newUser=" @Randal "
sage! pc update name="Mal" newUser="253330271678627841"
Delete a Character
This command lets you delete the named Character. This deletes them forever and cannot be undone.
Examples:
sage! companion delete charName="Bob the Fighter" name="Stan the Squire"
sage! pc delete name="Bob the Fighter"
sage! npc delete name="Gobbo the Goblin"
Character Auto Dialog
These commands allow you to turn Auto Dialog on and off.
Auto Dialog On
This command turns on Auto Dialog for the given Character in the given Channel (or the current Channel if one isn't given).
You can specify more than one Channel.
You can specify dialogPostType=
if you wish.
Valid dialogPostType
values:
Post
Embed
Examples:
sage! pc auto on
sage! pc auto on dialogPostType="Post"
sage! npc auto on name="Gobbo the Goblin" #goblin-campfire
sage! gm auto on #main-ic #lore-dump
NOTE: The
embed
option uses Discord embeds to show your content, but RPG Sage has no way of knowing if you have embeds turned on or off! If you plan on using embeds, you will need to ensure they are turned on in your Discord settings. As of this edit, they are in Settings > Chat > Embeds and Link Previews.
Auto Dialog Off
This command turns off Auto Dialog for the given Character in the given Channel (or the current Channel if one isn't given). You can specify more than one Channel.
Examples:
sage! pc auto off
sage! npc auto off name="Gobbo the Goblin" #goblin-campfire
sage! gm auto off #main-ic #lore-dump
Character Stats
In addition to the basic settings, you can track stats and other information on your Character using the Update command. Manual Stats are detailed here.
Examples:
sage! pc update name="Bob the Fighter" init="+1"
sage! pc update name="Bob the Fighter" conditions="unconscious"
Importing Characters
In addition to creating your characters stats manually, you might be able to import your character. Currently, this feature is in early stages and limited in what you can import, but it will continue to expand over time.
This command currently only works with:
- Pathbuilder 2e Export to JSON
- Essence 20 form fillable PDF downloaded from Renegade Game Studios
Slash Command:
/sage-import pathbuilder-2e id:
/sage-import essence20 pdf:
Options:
/sage-import pathbuilder-2e id: pin: attach:
/sage-import essence20 pdf: pin: attach:
pin
(optional)
If this value is set to true
then the imported character will be pinned in the channel.
attach
(optional)
If this value is set to true
then the imported character will be attached as a markdown formatted .txt file instead of being posted as an interactive character sheet.
Reimporting Characters
You can update an imported character sheet by replying to it with the id or pdf you wish to replace it with.
Pathbuilder 2e Example:
sage! reimport id="123456"
Essence 20 Example:
sage! reimport pdf="https://url_to_updated_character.pdf"
Link to Character Sheet
Once you have imported a character, you can turn on a link in character dialog back to the post containing the imported character sheet, or turn it off again.
sage! pc update name="Bob the Fighter" sheeturl=on
sage! pc update name="Bob the Fighter" sheeturl=off
[!NOTE] When it is turned on, the link will appear as small emoji will at the end of each dialog post/embed looking something like this: ✎
Character Lists
These commands allow you to list characters of the given type.
Player Character Lists
When used in a Game, this lists all the PCs in the Game. Otherwise, it lists all of your non-Game PCs.
Example:
sage! pc list
Companion Lists
This lists the Companions of the named Player Character.
Example:
sage! companion list charName="Bob the Fighter"
Non-Player Character Lists
When used in a Game, this lists all the NPCs in the Game, and is usable only by the Game Master.
Example:
sage! npc list
Minion Lists
This lists the Minions of the named Non-Player Character.
Example:
sage! minion list charName="Gobbo the Goblin"
Character Options
These options are used during Character Management.
Note: multiple options can be set at the same time
alias=""
This value is a short name used for accessing the character without needing to type their entire name. An alias is often a nickname, or sometimes just a short code. Whatever you use for the alias, it can only contain letters and numbers.
Examples:
sage! pc create name="Bob the Fighter" alias="bob"
sage! npc update name="Super Awesome Powerful Wizard" alias="sapw"
avatar=""
This value is the url for the image on the right side of Dialog when using an embeds to display Dialog.
Example:
sage! pc create name="Mal" avatar="https://img.rpgsage.io/253330271678627841/characters/mal/mal.png"
charName=""
This is used to link the Companion or Minion to a parent Character. The name must be for a Character accessible by the User.
Examples:
sage! companion create name="Stan the Squire" charName="Bob the Fighter"
sage! minion create name="Sluggo" charName="Gobbo the Goblin"
color=""
This value sets the color on the left side of the embed when Character Dialog is displayed using an Embed.
Valid colors use the hexidecimal formats 0xAA00FF
or #AA00FF
.
Examples:
sage! pc create name="Bob the Fighter" color="#0000ff"
sage! companion create charName="Bob the Fighter" name="Squire Stan" color="#ff0000"
name=""
This sets the name of the Character.
Examples:
sage! pc create name="Bob the Fighter"
sage! npc create name="Gobbo the Goblin"
newName=""
and oldName=""
These two options are required when renaming a Character.
Examples:
sage! pc update oldName="Stan the Squire" newName="Squire Stan"
sage! minion update char="Gobbo the Goblin oldName="Sluggo" newName="Sluggy"
newUser=""
This option allows a GM to reassign a Character to a different Player.
It can be a User Mention or the full ID of a User.
Note: If using a User Mention, it is best to add a space after the first "
and before the @
.
Examples:
sage! pc update name="Mal" newUser=" @Randal "
sage! pc update name="Mal" newUser="253330271678627841"
token=""
This value is the url for the image on the left side of Dialog. It is also the image used for maps.
Examples:
sage! pc create name="Mal" token="https://img.rpgsage.io/253330271678627841/characters/mal/mal-token.png"
Manual Stats
When managing your Character, you can save pretty much any information you want as a "stat" by using the pc update
command.
These stats are visible when you view your character details.
They are also accessible in your dice rolls (and most importantly, macros).
Basic Example
Stats are set using the format key="value"
.
key
can only have letters, numbers and periodsvalue
can be anything, as long as it is quoted
Mobile devices often use curly quotes and it can be easy to get mismatched quote characters.
Common Examples:
sage! pc update name="Bardok" level="2"
sage! pc update name="Bardok" hp="10" maxHp="20"
sage! pc update name="Bardok" mod.dex="+3" dexterity="16"
sage! pc update name="Bardok" prof.Stealth="+2" proficiency.Stealth="Trained"
Removing / Unsetting a Stat is done by setting the stat to an empty value. Unset Example:
sage! pc update name="Bardok" level=""
sage! pc update name="Bardok" proficiency.Stealth=""
Simple Dice Example: Initiative
sage! pc update name="Bob the Fighter" init="+1"
You can now roll init with:
[1d20 + {pc::init}]
... which becomes ...
[1d20 + 1]
Simple Macro Example: Intiative
You can now build an init macro with:
sage! macro set name="init" dice="[1d20 + {pc::init} init]"
You can now roll init with:
[init]
... which becomes ...
[1d20 + {pc::init}]
... which becomes ...
[1d20 + 1]
Note: Fun With Macros
By default, your Macros are global to you, meaning you can access them on any server using RPG Sage. By creating the above
init
macro that specifically targetspc
, you have made a single macro that you can use to roll initiative for every single one of your characters on every single server you play on ... assuming you set theirinit
value usingsage! pc update ...
Manual Stats vs Pathbuilder Stats
What happens if you link a Pathbuilder character and have or want manual stats? What happens if you set a manual stat with the same name as a Pathbuilder stat? ... They play nice together! (generally)
When accessing a stat from your character, RPG Sage first checks your manual stats for the "key" you are using. If it doesn't find it, then it will check to see if you have a linked Pathbuilder character. If so, it will try to get the value from there. If nothing is found, then the whole entry {pc::key}
will wind up in your dice roll to show you that it wasn't found.
You can read more about Pathbuilder Stats here.
Nested Stats
Yup, you read that right.
We will expand on this topic later, but for now, know that you can do things like:
sage! pc update name="Rogue" dex="+4" level="3" prof.simple="+2" mod.dagger="{Rogue::dex}+{Rogue::level}+{Rogue::prof.simple}"
... and roll ...
[1d20 + {Rogue::mod.dagger} dagger atk]
... to get ...
[1d20 + 9 dagger atk]
Hidden Stats
When setting your character's stats, you may want to keep values hidden. For instance, the AC of an NPC. Well, surprise! RPG Sage will allow you to add spoilers to stats!
Note: This feature was intended for AC values of DnD / Pathfinder and their clones. It should work for any dice test, but it might get weird if you spoiler other stats.
Example:
sage! npc update name="Gobbo" ac="||15||"
Usage:
[1d20 + 5 ac {Gobbo::ac}]
When displaying the Dice results, the success/failure should be displayed as normal. Instead of showing the AC, however, the results will include ??
where the AC should otherwise be.
Game System Stats
If your character is for DnD5e, Pathfinder, or Starfinder, RPG Sage has some convenient stats display tweaks for you. By setting your gameSystem
, you can tell RPG Sage how to treat and display basic abilities, saving throws, hit points, and more!
For instance:
sage!pc create name="Willy the Wizard" gameSystem="pf2e" str="+0" dex="+0" con="+0" int="+4" wis="+2" cha="+2" hp="5" maxHp="12" ac="13"
Instead of listing all those stats out one at a time, RPG Sage will display them in a format you are familiar with:
Willy the Wizard
PF2e Stats Str +0, Dex +0, Con +0, Int +4, Wis +2, Cha +2 HP 5/12 AC 13
Pathbuilder Stats
When using a linked Pathbuilder import, you can get a bunch of info. Some of it is direct from the imported character, some from the sheet, and some you can manually set/override.
Stats and Prefixes
When using most stats, such as Perception, lores, saving throws, and skills ... referencing the name will return the total modifier (which should include level, proficiency, and stat mods). If you want other info, you can use the following prefixes to: dc
, ext
, label
, labeled
, mod
, p
, prof
, proficiency
dc
(adds 10 to the modifier)
Example: for a character with +12 Reflex
[1d20 dc {char::dc.reflex}]
... becomes ...
[1d20 dc 22]
ext
(extended breakdown of stat, level and proficiency)
Example: for a level 3 character trained in Medicine (+3 Wis)
[1d20 + {char::ext.medicine}]
... becomes ...
[1d20 + Medicine +3 Wis +3 Lvl +2 Trained ]
label
(shortened proficiency description)
Example: for a character Trained in Medicine
[1d20 {char::label.medicine}]
... becomes ...
[1d20 Medicine (T) ]
labeled
(basic modifier followed by shortened proficiency description)
Example: for a level 3 character trained in Medicine (+3 Wis)
[1d20 {char::labeled.medicine}]
... becomes ...
[1d20 +8 Medicine (T) ]
mod
(basic modifier to a roll for skills, lores, and saving throws; redundant in most cases)
Example: for a level 3 character trained in Medicine (+3 Wis)
[1d20 + {char::mod.medicine}]
...same as...
[1d20 + {char::medicine}]
... becomes ...
[1d20 + 8]
p
(just the first letter of the proficiency rank description)
Example: for a character trained in Medicine
[1d20 {char::p.medicine}]
... becomes ...
[1d20 (T)]
prof
(uses only the proficiency modifier)
Example: for a character trained in Medicine
[1d20 + {char::prof.medicine}]
... becomes ...
[1d20 + 2]
proficiency
(returns the string value of the proficiency for descriptions)
Example: for a level 3 character trained in Medicine (+3 Wis)
[1d20 + {char::medicine} Medicine ({char::proficiency.medicine})]
... becomes ...
[1d20 + 8 Medicine (Trained)]
Saving Throws
Saving throws can be accessed by their name to get the total modifier or using prefixes as outlined above.
Fortitude
fortitude
orfort
Reflex
reflex
orref
Will
will
Attribute Scores
Attribute scores work a little differently than the other stats. The value returned for the unabbreviated attribute is the full score (3 - 18
), while mod
and dc
etc are based on on the modifier (±4
). That is, you can access an full attribute score only with its full name.
[!NOTE] Before the remaster, an 'attribute score' was referred to as an 'ability score'. In some cases, the previous terminology may still be used.
Basic Example using Strength 14
[1d20 + {char::strength}]
... becomes ...
[1d20 + 14]
mod
Example using Strength 14
[1d20 + {char::mod.Strength}]
... same as ...
[1d20 + {char::str}]
... becomes ...
[1d20 + 2]
dc
Example using Strength 14
[1d20 dc {char::dc.str}]
... becomes ...
[1d20 dc 12]
that is, 10
plus the mod
value 2
.
Extended Pathbuilder Stats
Beyond the basics of Perception, Saving Throws (Fortitude, Reflex, Will), Attribute Scores (Str, Dex, Con, Int, Will, Cha), and all the skill and lore options, you can also access the following "stats". Please note that while you can access these values by name, currently the prefix options for these will not "math" correctly (as of v1.6.1).
Class DC
classDC
This functions much like all other proficiencies, in that you can access parts using the prefixes:prof
,mod
,proficiency
, etc.
[!NOTE] The key difference is that without a prefix you will get the DC value (that is, 10 + level + key attribute modifier + proficiency modifier). This is a rare case where it is necessary to use
mod
if you want use to modifier in rolls.
Casting Proficiency Modifiers
castingArcane
castingDivine
castingOccult
castingPrimal
Armor Proficiency Modifiers
heavy
medium
light
unarmored
Weapon Proficiency Modifiers
advanced
martial
simple
unarmed
Other Character Sheet Info Available in Dice
name
The name of the character. (For all you macro junkies out there.)
activeExploration
The exploration mode, as set by the character sheet dropdown.
initSkill
The name of the skill used for initiative, as set by the character sheet dropdown.
level
The character's level
maxHp
The character's Max HP
ac
The character's total AC
prof.ac
just the proficiency bonus for ac
Derived Stats
cantrip.rank
The rank cantrips and focus spells will be heightened to; equivalent to ½ level
rounded up
Using Stats in Dice Rolls
[1d20 + {character::statkey:default}]
character
The character you are trying to get the stat for
statkey
The "key", or "name" that the stat is stored as in the character data
default
(optional) a default value to use if one is not found
Character
You can refer to a character with one of the following:
name
Looks up the character by name. If the name has spaces, must be quoted, as in:
{"bob the wizard"::level}
alias
Looks up the character by alias. Can be quoted, but please avoid spaces in aliases
pc
grabs your pc
alt
grabs your PC's first companion
Character Notes
If you are using a Sage Game the character must exist in the game, otherwise you can only use your own characters.
Stat Key
Refers to the stat/data you are trying to grab. Examples:
level
ac
hp
maxhp
Default Value
If the value isn't found, your {char::stat}
will show up in your roll as part of the description. Setting a default value of 0 will avoid that. Ex: {char::stat:0}
Color Management
RPG Sage uses Discord embeds for a lot of its replies and interactions. Discord embeds include a color bar on their left side. RPG Sage is able to set the color of that bar when posting a message.
RPG Sage has default colors it uses for each type of message it can post. Each Server that uses RPG Sage is able to override these color choices for all messages on their Server. Each Game that uses RPG Sage is able to override these color choices for all messages in that Game. Thus, RPG Sage checks the Game (if one exists) for the needed Color before checking the Server before using the default Color. There are other ways to change the embed Color further, such as Character Dialog.
When the commands below are used inside a Game Channel, they are accessing the Game's colors. When the commands are used outside a Game Channel, they are accessing the Server's colors.
To see the entire list of Colors used by RPG Sage, simply use the color list
command below.
Some Common Color Types:
Dice
for dice resultsGameMaster
for dialog posted usinggm::
NonPlayerCharacter
for dialog posted usingnpc::
PlayerCharacter
for dialog posted usingpc::
Color values are expected to be in hexidecimal format, such as #FF00AA
.
Get Color
Example:
sage! color get type="Dice"
You may also specify multiples:
sage! color get Dice GameMaster
Set Color
Example:
sage! color set type="GameMaster" color="#FF00FF"
You may also specify multiples:
sage! color set Dice="#FF0000" GameMaster="#FF00FF"
Unset (Reset) Color
Example:
sage! color unset type="GameMaster"
You may also specify multiples:
sage! color unset Dice GameMaster
List All Colors
Example:
sage! color list
Sync (Reset) All Colors
Example:
sage! color sync
Dialog Basics
RPG Sage allows you to post content using a character's name and image, instead of your own. This process is often called "proxying", but we just refer to it as "posting Dialog".
The most simple Dialog commands include the type of character, the name of the character, and the content you wish to post as that character.
The examples here assume you already have your Character created and ready. You can read more about Character Management here.
Some examples refer to being "in a Game" or "outside a Game". You can read more about Game Management here.
Player Character
Because RPG Sage limits a Player to a single Player Character per Game, the Player is be able to post dialog as Bardok by simply starting their message with pc::
.
Example:
pc::Bob rushes into the room and shouts "For Honor!".
Outside of a Game, you are allowed to use any of your PCs, but you must include their name in your command.
Example::
pc::Bob the Fighter::Bob rushes into the room and shouts "For Honor!".
Companions
Because a PC can have multiple companions, you need to call them out by name when using companions beyond the first. While you can access your first companion by name, it isn't required.
Examples:
companion::I am the first companion!
companion::Stan the Squire::I am a companion.
The following companion
variants can be used to change the color of embedded dialog for Companions: alt
, familiar
, and hireling
.
Examples:
alt::Masked Avenger::"I am here to save the day!"
familiar::Batty::*flaps*
hireling::Butler::"Your cape, master."
Player Character Alts
Because you can post as your first companion without a name, it is highly recommended that if your character has an alt that you make the alt the first companion.
Instead of:
alt::Masked Avenger::"I am here to save the day!"
You can:
alt::"I am here to save the day!"
Non-Player Character
Non-Player Characters are only available in a Game, and only accessible by the Game Master.
NPC dialog requires the Game Master to include character's name when posting with npc::
.
Example:
npc::Gobbo the Goblin::"You shall find no honor here, Bob!"
The following npc
variants can be used to change the color of embedded dialog for NPCs: ally
, boss
, enemy
.
Examples:
ally::Gobbo the Goblin::"Let's be friends!"
enemy::Gobbo the Goblin::"Let's be enemies!"
boss::Gobbo the Goblin::"Foolish, mortals, witness my true form!"
Minions
Because NPCs need friends, too, you can give them Minions. They are functionally identical to a PC's Companions.
Example:
minion::Sluggo::"Yes boss!"
Game Master
The special "Game Master" NPC can be used by the Game Master in the same way that a PC is used by a Player.
Example:
gm::Bob defeated Gobbo and had honor aplenty.
Advanced Dialog
All Dialog commands are made up of the following parts: type
, name
, display name
, style
, color
, avatar
, content
These parts are combined in Dialog commands in the following format:
type::name::(display name)::style::color::avatar::content
type
Character type: gm, npc, enemy, ally, pc, alt, companion, familiar, hireling
name
The name of the character to post as.
- optional for
gm::
- optional for
pc::
in a game - optional for
alt::
,companion::
,familiar::
, andhireling::
(defaults to first companion)
display name
(optional)
the name to post as, instead of the character's name
- defaults to character name or 'Game Master' for GM
- requires parentheses, ex:
(Voice from the Darkness)
style
(optional)
The style of post to use for the dialog: post
or embed
- defaults to
embed
unless the channel, game, server, or user have overriden the default
NOTE: The
embed
option uses Discord embeds to show your content, but RPG Sage has no way of knowing if you have embeds turned on or off! If you plan on using embeds, you will need to ensure they are turned on in your Discord settings. As of this edit, they are in Settings > Chat > Embeds and Link Previews.
color
(optional)
The color to override the Dialog embed color with.
- expects hex value 0x000000 or #FFFFFF
avatar
(optional)
A url to override the avatar image in the embed.
content
The content you want to post as your dialog.
- accepts normal discord/markup as well as custom Sage markup
Editing Dialog
You can edit Dialog that RPG Sage posted for you, by replying to the message and starting your new content with edit::
.
Example:
edit::updated dialog content
You can alter additional parts of your original message, such as display name
or color
by including them in your reply as you would a normal Dialog command.
Examples:
edit::#ff00ff::updated content
edit::https://img.rpgsage.io/253330271678627841/characters/mal/mal.png::updated content
Deleting Dialog
You can delete a dialog message you posted by reacting to it with ❌. A Game Master can delete any message from RPG Sage in a channel in their Game by reacting to it with ❌.
Note: This emoji can be changed by changing the emoji used for
CommandDelete
. See Emoji Management for more information on changing emoji.
Pinning a Post
You can pin a message in a channel in a Game you are a GM or Player of by reacting to it with 📌. Removing the reaction will unpin the message as long as nobody else has pinned it.
Requesting Post Details
You can react to a message with ❓ and Sage will look up the information about the dialog and send you a DM with the Character, User, Game, and Server.
Note: This emoji can be changed by changing the emoji used for
CommandPin
. See Emoji Management for more information on changing emoji.
Dialog Macros
These commands are for managing Advanced Dialog commands, known as Dialog Macros, that make repeat Dialog easier to use.
Dialog Macros allow you to take a long Dialog command and shorten it. Any valid Dialog is valid when creating an Dialog Macro ... meaning in addition to requiring the type (npc
, pc
, enemy
, familiar
) and name, you can include any part of a Dialog Post Command in a Dialog Macro, even content!
Dialog Macros were originally created as RPG Sage's first form of alias. Dialog Macros have expanded in functionality and aliases have been added directly to characters. An upcoming update will change these commands from their current
alias
to something more fitting.
Management Examples:
sage! alias delete name="AngryBob"
sage! alias details name="AngryBob"
sage! alias list
sage! alias set name="AngryBob" value="enemy::Farmer Bob::"
sage! alias set name="HappyBob" value="ally::Farmer Bob::"
Usage Examples:
angrybob::"Why are you adventurer's always riding through my field!?"
happybob::"Won't you come in for dinner?"
Dice Basics
Simple Rolls
[1d20]
[1d8]
[3d4]
Rolls w/ Modifiers
[1d20 + 4]
[1d8 + 2]
[3d4 + 3]
Rolls w/ Descriptions
[1d20 + 4 attack]
[1d8 + 2 damage]
[3d4 + 3 magic missile]
[1d20 + 7 secret stealth]
Note: Any Dice with the word "secret" (with or without quotes) in the description will be flagged by RPG Sage. If the Channel or Game has rules on how to treat "secret" rolls, then this flagged "secret" roll will be processed accordingly.
Rolls w/ Multiple Dice Types
[1d4 dagger + 1d6 sneak]
[1d8 sword + 1d6 holy]
[2d8 fire + 2d8 ice + 2d8 holy]
Multiple Rolls
[6#3d6 stat]
[2#1d20 attack]
[3#1d4 + 1 missile]
Dice Tests
RPG Sage can test your dice results for 5 conditions:
=
equal to>
greater than>=
greater than or equal to<
less than<=
less than or equal to
Examples:
[1d2 = 1]
[1d20 > 10]
[1d20 >= 11]
[1d20 + 5 < 15]
[1d100 <= 25]
Because it can be annoying trying to find the =
, >
, <
characters on mobile keyboards, RPG Sage will allow the following text equivalents:
Test | Text Equivalent |
---|---|
= |
eq |
> |
gt |
>= |
gteq or gte |
< |
lt |
<= |
lteq or lte |
Examples:
[1d2 eq 1]
[1d20 gt 10]
[1d20 gteq 11]
[1d20 + 5 lt 15]
[1d100 lteq 25]
Success and Failure
When rolling a test, the output will include an emoji to indicate success or failure. By default, these are 👍 and 👎.
Dice Groups
Simple Groups
[1d20 attack; 1d8 damage]
[1d20 + 5 attack; 1d8 + 2 slashing]
[1d20 + 2 attack; 1d4 dagger + 2d6 sneak]
(Both sets of dice will be rolled and their results will be listed together.)
Tested Groups
[1d20 >= 15 attack; 1d8 damage]
[1d20 + 5 >= 10 medicine check; 2d8 healing]
[1d20 > 5 conceal; 1d20 >= 10 attack; 1d4 damage]
(Each test must succeed before the next group is rolled.)
Success and Failure
When rolling a test, the output will include an emoji to indicate success or failure. By default, these are 👍 and 👎.
Dice Overrides
Because you can set different Dice options at different levels (Server, Game, Channel), RPG Sage has the ability to override these settings as you roll.
Game System Examples:
[dnd5e 1d20 ac 10 attack]
[pf2e 1d20 dc 10 check]
You can read more about Dice options by Game System here.
Dice Output Examples:
[xxs 1d20 ac 10 attack]
[xxl 1d20 dc 10 check]
You can read more about Dice options by Dice Output here.
Combination Examples:
[pf2e xxs 1d20 dc 10 check]
[dnd5e xxl 1d20 ac 10 attack]
Dice Manipulation
RPG Sage has many ways you can modify or manipulate the dice you roll.
Drop / Keep
This feature allows you to drop or keep the rolls that are the highest or lowest of your results, using the dh
, dl
, kh
, kl
syntax in your roll.
You can also specify how many to keep.
Examples:
Disadvantage / Misfortune by Dropping Highest
[2d20dh]
Advantage / Fortune by Dropping Lowest
[2d20dl]
Advantage / Fortune by Keeping Highest
[2d20kh]
Disadvantage or Misfortune by Keeping Lowest
[2d20kl]
Roll 4 times and Keep the Highest 3
[4d6kh3]
Fixed Results
Sometimes, you already know the result of one or more of the dice you are going to roll.
We call those rolls "fixed".
To tell RPG Sage the value(s) of these "fixed" rolls, you add them at the start of your dice, in parentheses and separate multiple values by commas, ex (1,2)
.
You still tell it how many and what size to roll.
Examples:
Unnatural 20
[(20)1d20]
The first two rolls are 1 and 6, the other 4 are rolled normally
[(1,6)6d6]
No Sort
Normally, die rolls are sorted from lowest to highest when displayed.
If you instead need to see the dice in the order they were rolled, then the ns
feature is for you!
Example:
[8d10ns]
Dice Tester
If you ever get a bad string of dice results and want to see how RPG Sage's Dice perform across thousands of rolls ... try this!
Valid die
values: 2
, 3
, 4
, 6
, 8
, 10
, 12
, 20
Examples:
sage! dice test die="6"
sage! dice test die="20"
Table Roller
RPG Sage can roll on tables in one of two ways:
- Embedded: Your table is embedded in your macro
- External: You provide a url to a TSV formatted table (This is most often a Google Sheet using "publish to web" set to TSV.)
The Table roller expects each possible result to be on its own line, with the following values:
- Die roll or range
- Text of the result
Table Example:
1 | Only on a roll of 1 |
2-3 | On a roll of 2 or 3 |
4-5 | On a roll of 4 or 5 |
6 | Only on a roll of 6 |
Embedded tables need each item on its own line and uses spaces between the number(s) and the text.
Embedded Table Syntax:
[1 Only on a roll of 1
2-3 On a roll of 2 or 3
4-5 On a roll of 4 or 5
6 Only on a roll of 6]
Random Selection
Another feature of RPG Sage's dice engine is its ability to select items from a list. This was built mostly to alleviate the GM's constant need to select which PC a baddie targets, but we are sure it has many other uses as well.
Note: Currently this feature relies on commas to separate the items in the list, so be careful of putting fancy names in your lists!
Simple Selection
[Fighter, Wizard, Rogue]
Multiple Selections
[2#Fighter, Wizard, Rogue]
The results will be listed in the order they were selected.
Multiple Selections, Sorted
[2s#Fighter, Wizard, Rogue]
The results will be sorted alphabetically.
Multiple Selections, Unique
[2u#Fighter, Wizard, Rogue]
The results will be listed in the order they were selected.
Secret Selection
[gm#Fighter, Wizard, Rogue]
This treats the roll as a "secret" roll and is handled by the Channel's or Game's settings accordingly.
Note: The Multiple, Sorted, Unique, and Secret flags can be mixed and matched in any combination.
Simple Math
In addition to rolling dice and selecting things from a list, RPG Sage's dice engine can also do simple math that doesn't involve dice. This is intended to be a simple, but helpful, addition for folks that want or need to do math in their games.
[1+2]
[1+2*3]
[1+2(3-8)]
Complex Math
When doing math / calculations, RPG Sage is capable of the following math functions: ceil
, floor
, hypot
, max
, min
, round
.
Each function can be used by itself, as part of other math (even nested in another function), and also in character stats and dice macros.
Note: The function names mirror those on the Math library in JavaScript, the coding language that RPG Sage uses. "ceil" is short for "ceiling" and "hypot" is short for "hypotenuse".
Math.ceil
The ceil
function will round the given number up.
[ceil(3.14)] --> 4
Math.floor
The floor
function will round the number down.
[floor(3.14)] --> 3
Math.hypot
The hypot
function will return the hypotenuse of a right triangle with the given numbers as the known sides.
This simulates finding the direct/diagonal distance between two squares on a grid by using the x (col) and y (row) distances.
It also simulates finding the distance to a flying target by using the distance to the ground under the target and the height of the target.
[hypot(15, 20)] --> 25
The hypot
function can also accept 3 numbers.
This simulates finding the distance to a flying target above a grid by using the x (col) and y (row) and z (height) distances.
NOTE: This is functionally the same as:
hypot(hypot(x, y), z)
[hypot(15, 20, 25)] --> 35.35533905932738
Because you are likely to get a non-integer, it is recommended you also round
your hypot
.
[round(hypot(15, 20, 25))] --> 35
Math.max
The max
function will return the largest number (maximum value) of the numbers given to it, regardless of the order they are given.
[max(2, 3)] --> 3
[max(5, 9, 2, 0.1)] --> 9
Math.min
The min
function will return the smallest number (minimum value) of the numbers given to it, regardless of the order they are given.
[min(2, 3)] --> 2
[min(5, 9, 2, 0.1)] --> 0.1
Math.round
The round
function will take the given decimal value and round it off at the nearest integer.
If a second number (integer) is given, then that will be the number of decimal places the first number is rounded to.
[round(3.14)] --> 3
[round(3.14, 1)] --> 3.1
Dice Output
RPG Sage's Dice can be configured to be as concise or verbose as you want. These settings can be set at the Channel, Game, or even Server level.
Output Types
The output types are: XXS
, XS
, S
, M
, L
, XL
, XXL
, and ROLLEM
.
The small and medium types all use a single line for any given dice "group" (a single []) while the large types use multiple lines.
The ROLLEM
type is for users that are familiar/comfortable with the way Rollem's output looks.
Default Type
When rolling dice, RPG Sage will check the current Channel for output type.
If it doesn't find it at the Channel level, it will use the type from the Game (if a Game exists and has a default set).
If it still doesn't a type, it will use the default for the Server (if one is set).
If it hasn't found an output type by that point, it defaults to M
.
Examples by Type
Let us consider the following dice roll for each of the output types:
[1d20 conceal; 1d20+8 attack; 1d10 slashing +1d6 fire +2d6 holy]
Let us assume the following rolls:
- conceal: 5
- attack: 8
- slashing: 10
- fire: 3
- holy: 1 and 1
These rolls bring us the following totals:
- conceal: 5
- attack: 16
- damage: 15
XXS
Output Type: 5; 16; 15
XS
Output Type: 5 `conceal`; 16 `attack`; 15 `slashing`
S
Output Type: 5 `conceal` ⟵ [5]; 16 `attack` ⟵ [8] + 8; 15 `slashing` ⟵ [10] + [3] fire + [1,1] holy
M
(default)
Output Type: 5 `conceal` ⟵ [5]1d20; 16 `attack` ⟵ [8]1d20 + 8; 15 `slashing` ⟵ [10]1d10 + [3]1d6 fire + [1,1]2d6 holy
L
Output Type: 5 `conceal` ⟵ [5]
16 `attack` ⟵ [8] + 8
15 `slashing` ⟵ [10] + [3] fire + [1,1] holy
XL
Output Type: 5 `conceal` ⟵ [5]1d20
16 `attack` ⟵ [8]1d20 + 8
15 `slashing` ⟵ [10]1d10 + [3]1d6 fire + [1,1]2d6 holy
XXL
Output Type: [1d20 conceal; 1d20+8 attack; 1d10 slashing +1d6 fire +2d6 holy]
5 `conceal` ⟵ [5]1d20
16 `attack` ⟵ [8]1d20 + 8
15 `slashing` ⟵ [10]1d10 + [3]1d6 fire + [1,1]2d6 holy
ROLLEM
Output Type: 'conceal', ` 5 ` ⟵ [5] 1d20
'attack', ` 16 ` ⟵ [8] 1d20 + 8
'slashing', ` 18 ` ⟵ [3] 1d10 + [4] 1d6 fire + [5, 6] 2d6 holy
Dice by Game System
While you can use the basic dice engine for any system (all you need is to roll and maybe test results), you are likely used to seeing certain syntax in your rolls. Additionally, there are a number of tests and other bits of math that are performed with almost every roll of many games. With RPG Sage, when you set your Channel, Game, or Server to a specific Game (such as Pathfinder 2e), the Dice engine will know to perform many of these actions for you. We plan to continue adding more games as well as expanding the things we can do within each game.
Dungeons & Dragons 5e
Armor Class (AC)
This shortcut tells the dice to do a test to see if the roll meets or exceeds (the "ac" is treated as ">=") the value given.
[1d20 + 5 ac 10]
Difficulty Class (DC)
This shortcut tells the dice to do a test to see if the roll meets or exceeds (the "dc" is treated as ">=") the value given.
[1d20 + 5 dc 10]
Critical Damage
If your attack roll has a target AC and your result is a critical hit, RPG Sage will adjust your damage accordingly. By default this is simply x2 damage, but RPG Sage has multiple methods of determining critical hit damage.
Advantage and Disadvantage (+/-)
If your roll has Advantage, you may roll [+2d20]
to tell RPG Sage to roll twice and take the higher of the two dice.
Likewise, if you have Disadvantage, you may use [-2d20]
to roll twice and take the lower of the two dice.
Graded Success and Failure
When playing DnD 5e, a Natural 20 is a Critical Success and Natural 1 is a Critical Failure.
RPG Sage takes this into account when you roll using AC or DC and changes the emoji used accordingly.
Additionally, when you roll an attack/damage combo [1d20 ac 10; 1d6 damage]
RPG Sage will know to double the damage if your success was critical.
Essence 20
Versus (VS)
This shortcut tells the dice to do a test to see if the roll meets or exceeds (the "vs" is treated as ">=") the value given.
[1d20 + 5 vs 10]
Skill Test (+)
[+d4]
Difficulty (DIF)
[+d2 dif 10]
Upshift / Downshift (UP/DN)
[+d4up2]
[+d6dn1]
(Currently known bug: do not leave spaces surrounding up/dn)
Specialization (*)
[+d4*]
[+d6*]
All of these may be combined!
[+d4*up2 dif 5 simple test]
(Currently known bug: do not leave spaces surrounding up/dn)
Pathfinder 2e
Armor Class (AC)
This shortcut tells the dice to do a test to see if the roll meets or exceeds (the "ac" is treated as ">=") the value given.
[1d20 + 5 ac 10]
Difficulty Class (DC)
This shortcut tells the dice to do a test to see if the roll meets or exceeds (the "dc" is treated as ">=") the value given.
[1d20 + 5 dc 10]
Critical Damage
If your attack roll has a target AC and your result is a critical hit, RPG Sage will adjust your damage accordingly. By default this is simply x2 damage, but RPG Sage has multiple methods of determining critical hit damage.
Fortune and Misfortune (+/-)
If your roll has Fortune, you may roll [+2d20]
to tell RPG Sage to roll twice and take the higher of the two dice. Likewise, if you have Misfortune, you may use [-2d20]
to roll twice and take the lower of the two dice.
Multi Attack Penalty (MAP; and now AGILE)
If you are rolling the same attack multiple times, you can simplify your roll by combining the multiple roll modifier 2#
(can be any number, MAP will cap at two increments) with MAP
. By default, MAP
implies -5, but you may change that to any number X
by using MAP-X
. As MAP
defaults to a -5 modifier, you can also use AGILE
to default to a -4 modifier.
[2MAP#1d20 ac 10; 1d6 damage]
[3MAP-4#1d20 ac 10; 1d6 damage]
[2AGILE#1d20 ac 10; 1d6 damage]
Graded Success and Failure
When playing Pathfinder 2e, a Success of 10 or more is a Critical Success, while a Failure of 10 or more is a Critical Failure.
Additionally, a natural 1 lowers your success grade by 1 while a natural 20 increases your success grade by 1.
RPG Sage takes this into account when you roll using AC or DC and changes the emoji used accordingly.
Additionally, when you roll an attack/damage combo [1d20 ac 10; 1d6 damage]
RPG Sage will know to double the damage if your success was critical.
Striking, Greater Striking, Deadly, and Fatal
When playing Pathfinder 2e, there is some extra math involved in critical hits when you have striking, deadly, and fatal weapons. RPG Sage looks at the input of your dice to see if it can find any of these when calculating your critical damage.
[1d20 + 10 ac 10 pick (fatal d10); 1d6 piercing]
[1d20 + 10 ac 10 longbow (deadly d8); 1d8 piercing]
[1d20 + 10 ac 10 striking longsword; 1d8 slashing]
[1d20 + 10 ac 10 greater striking longsword; 1d8 slashing]
[1d20 + 10 ac 10 major striking longsword; 1d8 slashing]
Starfinder 1e
Armor Class (AC/EAC/KAC)
This shortcut tells the dice to do a test to see if the roll meets or exceeds (the "ac", "eac", or "kac" is treated as ">=") the value given.
[1d20 + 5 ac 10]
[1d20 + 5 eac 10]
[1d20 + 5 kac 10]
Difficulty Class (DC)
This shortcut tells the dice to do a test to see if the roll meets or exceeds (the "dc" is treated as ">=") the value given.
[1d20 + 5 dc 10]
Critical Success / Failure
Skills do not have automatic success/failure conditions by roll, and so rolling against a DC will simply show success/failure based on >=
. Saving throws, however auto succeeed on a natural 20 and auto fail on a natural 1. If your dice roll has a DC and "save", "fort", "ref", or "will" in the text then RPG Sage will know it is a Saving Throw and look for a 20 or a 1 and change the result accordingly.
If your attack roll has a target AC and your result is a critical hit, RPG Sage will adjust your damage accordingly. Critical hits happen only when you roll a natural 20 and your attack also hits the target's AC. By default critical damage is simply x2 damage, but RPG Sage has multiple methods of determining critical hit damage.
Quest RPG
Versus (VS)
This shortcut tells the dice to do a test to see if the roll meets or exceeds (the "vs" is treated as ">=") the value given.
[1d20 + 5 vs 10]
Dice Macros
Dice Macro Categories are helpful in grouping related macros together, but they also serve a special function for Pathfinder 2e players using imported characters. Macros with the same category name as an imported Pathfinder 2e character name will show up in the imported character's sheet so that you can select then and roll them with the click of a button. Read more about Importing Characters here.
Note: Dice Macros are set on you, as a User of RPG Sage. Therefore they are usable by you on any Server you are on, in any Game or Channel you might be in. They cannot be used by anybody else. Future updates will drastically change accessbility of Dice Macros.
Dice Macro Control
To manage your dice macros, start with the following message command:
sage! macro list
View a Dice Macro
You will first select the type of macro you wish to manage/view:
Character, User, Game, Server, Global
You will then select from your categories and then macros. If you have more than 25 macros or categories, they will be paged via additional dropdown/select fields.
Dice Macro Control Buttons
The "default" buttons are:
- Roll (rolls the macro with no args)
- Prompt Roll (if the macro has args, you will be prompted to input them)
- Close (closes the control)
- "..." (switches the set of command buttons to "management")
The "management" buttons are:
- New (creates a new macro)
- Edit (edits the current macro)
- Delete (deletes the current macro or category)
- "..." (switches the set of command buttons to "other")
The "other" buttons are:
- Reset (restarts the control at macro tier selection)
- "..." (switches the set of command buttons to "default")
Setting a Dice Macro
Clicking "New" or "Edit" pops up a modal dialog with the fields for dice macros:
Name, Category (optional), and Dice
Moving a Dice Macro
This feature hasn't been implemented in the new control yet, but you can edit a macro's category to move it within the tier.
Deleting Dice Macros
Click the red Delete button and confirm via the following prompt.
Dice Macro Arguments
Dice Macros allow arguments, making them very flexible but also easy to overcomplicate.
Arguments are indicated with curly braces: {
and }
The two primary types of arguments are: indexed and named.
Note: If you use an argument more than once in your macro, it will be replaced every time.
Indexed arguments start with 0 go up
Valid Values: {0}
, {1}
, {2}
, etc
Example Create:
sage! macro set name="attack" dice="[1d20 {0} atk; 1d6 {1} dmg]"
Example Usage:
[attack "+1" "+2"]
... results in ...
[1d20 +1 atk; 1d6 +2 dmg]
Named arguments should can only letters, numbers, and underscores
Valid Example: {bless_bonus}
Example Create:
sage! macro set name="attack" dice="[1d20 {bless_bonus} atk; 1d6 {bless_bonus} dmg]"
Example Usage:
[attack bless_bonus="+1"]
... results in ...
[1d20 +1 atk; 1d6 +1 dmg]
Arguments can have default values
Valid Default Examples: {atk_bonus:+0}
, {dmg_type:P}
Example Create:
sage! macro set name="dagger" dice="[1d20 {atk_bonus:+0} atk; 1d4 {dmg_type:P} dmg]"
Example Usage:
[dagger]
... results in ...
[1d20 atk; 1d4 P dmg]
Example Usage:
[dagger atk_bonus="+1"]
... results in ...
[1d20 +1 atk; 1d4 P dmg]
Example Usage:
[dagger atk_bonus="+2" dmg_type="S"]
... results in ...
[1d20 +2 atk; 1d4 S dmg]
Note: A default value of 0 (or +0) will NOT be shown in the final dice roll
Special Argument Types
{vs}
VS aka VS is a convenience for setting the roll's target success value in d20 style games; AC, DC, and VS are all acceptable as {ac}
, {dc}
, or {vs}
Example Create:
sage! macro set name="attack" dice="[1d20 {ac} atk; 1d6 dmg]"
Example Usage:
[attack ac=10]
... results in ...
[1d20 ac 10 atk; 1d6 dmg]
{...}
Remaining aka Remaining is more advanced- it takes every indexed argument that wasn't explicitly used in your macro and adds them all with spaces between them.
Example Create:
sage! macro set name="extras" dice="[1d20 {0} atk; 1d6 {1} {...} dmg]"
Example Usage:
[extras +1 +3 "+1d6 sneak" "+1d4 fire" "+1 holy"]
... results in ...
[1d20 +1 atk; 1d6 +3 +1d6 sneak +1d4 fire +1 holy dmg]
Note: If you have more than one "remaining" arg in your macro, they will all get the same set of values.
Emoji Management
RPG Sage uses emoji to react to a lot of interactions, such as 👍 on a successful command or 👎 on a failed command. Emoji are also used when showing Dice results with a value test.
RPG Sage has default emoji it uses for each type of interation. Each Server that uses RPG Sage is able to override these emoji choices for their Server. Each Game that uses RPG Sage is able to override these emoji choices for that Game. Thus, RPG Sage checks the Game (if one exists) for the needed Emoji before checking the Server before using the default Emoji.
When the commands below are used inside a Game Channel, they are accessing the Game's emoji. When the commands are used outside a Game Channel, they are accessing the Server's emoji.
To see the entire list of Emohi used by RPG Sage, simply use the emoji list
command below.
Some Common Emoji Types:
DieSuccess
for dice test resultsDieFailure
for dice test results
Emoji values can be raw emoji characters as well as discord custom emoji.
Get Emoji
Example:
sage! emoji get type="DieSuccess"
You may also specify multiples:
sage! emoji get DieSuccess DieFailure
Set Emoji
Example:
sage! emoji set type="DieFailure" emoji="😭"
You may also specify multiples:
sage! emoji set DieFailure="😭" DieSuccess="👍"
Unset (Reset) Emoji
Example:
sage! emoji unset type="DieFailure"
You may also specify multiples:
sage! emoji unset DieSuccess DieFailure
List All Emoji
Example:
sage! emoji list
Sync (Reset) All Emoji
Example:
sage! emoji sync
Game Management
These commands let a Server Owner, "SageAdmin", or "Game Admin" manage games. Once a user is added to a Game as a Game Master, they are allowed to manage their own game.
Note: These commands do not work in an IC (in-character) channel, as those channels are designed to avoid clutter by only responding to Dialog and Dice commands.
Note: When creating, updated, or viewing a Game, RPG Sage will also attempt to confirm it has all the Discord Permissions it needs to perform its tasks correctly. You may get a prompt asking if you want it to fix these permissions, and upon clicking Yes you may get a notification that it failed. In that case, you will need to get an admin in your Discord Server to help you out. Similarly, Sage detects when some other bots are present in the Game Channels and may ask if you want them blocked.
Game Lifecycle
These commands are used to create, view, update, and archive a Game.
Create a Game
Creating a Game requires a name
.
If a channel is not provided, the current channel will be added to the game.
All other settings are optional and are set using the argument format of option="value"
.
Game Options are detailed here.
Examples:
sage! game create name="Dragon Saga: Questbound!"
sage! game create name="Dragon Saga" gameSystem="dnd5e"
sage! game create name="Questbound!" gameSystem="pf2e" diceSecret="gm"
sage! game create name="Questbound, 2e!" gameSystem="pf2e" ic=" #qb-2e-ic " ooc=" #qb-2e-ooc " gms=" @Randal " players=" @QuestboundPlayers "
View Game Details
This command displays information about the Game the current channel is a part of. It lists things like the Game's name, channels (and their types), and the users in the Game. Users are listed as either Game Masters or Players (and PCs are listed if a Player has one).
Example:
sage! game details
Update a Game
This command allows you to change a Game's settings.
Much like creating a Game, you only need to include the settings you want to change.
You are also able to unset
a setting to return it to the default.
Game Options are detailed here.
Examples:
sage! game update name="Oops, all bards!"
sage! game update gameSystem="pf2e" dicesecret="unset"
Archive a Game
This command lets you archive a Game. Archiving a Game tells RPG Sage that you are done with the Game, but it does not delete the Game from the system. This frees up the channels to be used for other Games, but keeps the information about the Game for later reference.
Example:
sage! game archive
Channels
These commands are used to add or remove a Channel.
Add a Channel
This command allows you to add a Channel to a Game. You should see the 👍 if successful, or 👎 if not.
Examples:
sage! game update gm=" #gm-only "
sage! game update ooc=" #player-chat "
Remove a Channel
This command removes the referenced Channel(s) from its current Game. You should see the 👍 if successful, or 👎 if not.
Examples:
sage! game update remove=" #player-chat "
sage! game update remove=" #player-chat #peanut-gallery "
Game Masters
These commands let you add or remove Game Masters.
Add a Game Master
This command adds the referenced Users to the current Game as Game Masters. You should see the 👍 if successful, or 👎 if not.
Examples:
sage! game update gms=" @forever-gm "
sage! game update gms=" @dunge @onmaster "
Remove a Game Master
This command removes the mentioned Game Master(s) from the current Game. You should see the 👍 if successful, or 👎 if not.
Examples:
sage! game update remove=" @forever-gm "
sage! game update remove=" @dunge @onmaster "
Players
These commands let you add or remove Players.
Add a Player
This command adds the referenced Users to the current Game as Players. You should see the 👍 if successful, or 👎 if not.
Examples:
sage! game update players=" @bob-villa "
sage! game update players=" @ren @stimpy "
Remove a Player
This command removes the mentioned Player(s)from the current Game. You should see the 👍 if successful, or 👎 if not.
Examples:
sage! game update remove=" @bob-villa "
sage! game update remove=" @ren @stimpy "
Characters
When Character Management commands are used within a Game, they only affect characters within that Game. Characters created in a Game cannot be accessed outside that Game. Characters created outside a Game cannot be accessed from within one. "Used within a Game" simply means the command was used in a Channel that belongs to a Game. You can read about Character Management here.
Dice Notifications (aka Pings)
By default, RPG Sage will ping (@Mention you) when it responds to your dice commands. If you wish, you can toggle this notification on or off.
Example:
sage! game toggle dice ping
Game Options
These options are used during Game Management.
Note: multiple options can be set at the same time
dialogPost=""
This determines how RPG Sage's dialog posts are handled.
Valid dialogPost
values:
EMBED
uses an embed that includes the character's avatar on the right. (default)POST
uses a simple message post some screen readers cannot read Discord embeds.UNSET
uses the dialogPost method inherited from either the User, Game, or Server.
Examples:
sage! game update dialogPost="post"
sage! game update dialogPost="unset"
NOTE: The
embed
option uses Discord embeds to show your content, but RPG Sage has no way of knowing if you have embeds turned on or off! If you plan on using embeds, you will need to ensure they are turned on in your Discord settings. As of this edit, they are in Settings > Chat > Embeds and Link Previews.
dialogTo=""
This is the Channel you want all Dialog in the Game to be posted to, regardless of where you post it from.
Example:
sage! game update dialogTo=" #dialog-only "
diceCrit=""
(DnD5e and PF2e only)
This sets how Critical Hit damage is calculated.
Valid diceCrit
values:
TIMESTWO
rolls the dice and multiplies the results x2. (default)ROLLTWICE
rolls the damage twice and adds the results together.ADDMAX
rolls the dice once and then adds max damage to the result. (RPG Sage House Rule)UNSET
uses the diceCrit method inherited from either the Game or the Server.
Examples:
sage! game update diceCrit="addmax"
sage! game update diceCrit="unset"
diceOutput=""
This determines how compact or verbose the dice results are displayed. Read more about Dice Output here.
Valid diceOutput
values:
XXS
,XS
,S
M
(default)L
,XL
,XXL
ROLLEM
uses the diceoutput method that most closely emulates what Rollem uses.UNSET
uses the diceoutput method inherited from either the Game or the Server.
Examples:
sage! game update diceoutput="xxl"
sage! game update diceoutput="rollem"
sage! game update diceoutput="unset"
dicePost=""
This determines how RPG Sage posts dice results.
Valid dicePost
valus:
POST
will output dice results in a simple post.EMBED
will output dice results in an embed in a post. (default)UNSET
uses the dicepost method inherited from either the Game or the Server.
Examples:
sage! game update dicepost="post"
sage! game update dicepost="unset"
NOTE: The
embed
option uses Discord embeds to show your content, but RPG Sage has no way of knowing if you have embeds turned on or off! If you plan on using embeds, you will need to ensure they are turned on in your Discord settings. As of this edit, they are in Settings > Chat > Embeds and Link Previews.
diceSecret=""
This determines how RPG Sage reacts to dice with the word "secret" in them.
Valid diceSecret
values:
DM
tells Sage to find the first available GM and send the dice results to them as a DM.GM
tells Sage to find a GM channel and send the dice results there. If no GM channel exists, this is treated as DM.HIDE
tells Sage to hide/redact the results using spoiler tags.IGNORE
simply ignores them. (default)UNSET
uses the diceSecret method inherited from either the Game or Server.
Examples:
sage! game update dicesecret="ignore"
sage! game update dicesecret="unset"
gmCharName=""
(create only)
This sets the diplay name of the GM Character (Game Master special NPC) used by the gm::
Dialog.
Example:
sage! game create name="Dragon Story" gmCharName="Dragon Master"
This command can only be used to set the name of the GM Character when creating a new Game. To update the GM Character's name, you must instead use the
sage!gm update
command found here.
gameSystem=""
This is the Game System, which determines how RPG Sage handles certain features, such as Dice and Search.
Valid gameSystem
values:
CNC
Coyote & CrowDND5E
Dungeons & Dragons 5eE20
Essence 20 system (G.I. Joe, Power Rangers, Transformers, etc.)PF1E
Pathfinder RPGPF2E
Pathfinder 2eQUEST
Quest RPGSF1E
StarfinderVTM5E
Vampire: The Masquerade (5e)NONE
(default)
Examples:
sage! game update gameSystem="vtm5e"
sage! game update gameSystem="pf2e"
gm=""
This adds the User mentioned as a Game Master of the new Game.
Example:
sage! game create name="Dragon Saga" gm=" @Randal "
gms=""
This adds the Users as Game Masters of the Game. If a Role is given, the Role's Users are added as a Game Masters of the Game.
Examples:
sage! game create name="Dragon Saga" gms=" @GameMaster "
sage! game create name="Dragon Saga" gms=" @DragonSagaGameMasters "
ic=""
This adds the Channel referenced as an In-Character Channel of the Game.
Examples:
sage! game create name="Dragon Saga" ic=" #dragon-saga-ic "
name=""
This sets the name of the Game.
Examples:
sage! game create name="Dragon Saga"
sage! game update name="Questbound"
ooc=""
This adds the Channel referenced as an Out-of-Character Channel of the Game.
Examples:
sage! game create name="Dragon Saga" ooc=" #dragon-saga-ooc "
players=""
This adds the Users as Players of the Game. If a Role is given, the Role's Users are added as a Players of the Game.
Examples:
sage! game create name="Dragon Saga" players=" @Player1 @Player2 "
sage! game create name="Dragon Saga" players=" @DragonSagaPlayers "
remove=""
(update only)
When updating a Game, any Players, Game Masters, or Channels mentioned or referenced in the remove
command will be removed from the Game.
Examples:
sage! game update remove=" #old-ic #old-ooc "
sage! game update remove=" @RemovedPlayer @RemovedGameMaster "
Map Management
Yes, you heard that right, we can do maps! All you have to do is create a metadata text file that has a name ending in .map.txt and then drop the file in the channel you want your map. Sage will take it from there!
Note about prototype.
This feature is still a prototype, perhaps consider it an alpha release. The interface and feedback aren't as clean as we want and the execution of features is a tad clumsy. But, we assure you that we already have planned improvements that will make it much better!
Note about image storage.
RPG Sage doesn't store any images used in the creation of maps. Therefore, you will need to make sure that they are all public urls that will be available until you are no longer using the map. The simplest way to do this is to post the image(s) into a discord channel and then grab the url from the uploaded image(s).
Importing a Map
RPG Sage has the ability to render maps and allow GMs and Players to move tokens on that map. The images must be publicly available on the internet via url (http/https). You can build a map using our Map Builder and export the file needed to import your map. By posting that file as an attachment, RPG Sage will attempt to import and render your map.
Map Controls
Movement Arrows (left side)
Move your active token (or terrain if GM) one square in the direction indicated.
Gear
Disabled; saved for future use.
Mountain
GM uses this button to cycle through the terrain images to select the active terrain.
Yellow Circle
Cycle through aura images (for the active token) to select the active aura. A token can have any number of auras configured, but only one can be active at a time. (This limit of active auras also applies to terrain for GMs.)
Person
Cycle through token images to select the active token. Players can only cycle through tokens assigned to them. GMs cycle through all tokens. If you are using RPG Sage's Game feature, a PC's token (along with familiars/companions) should be added automatically to the map when trying to select their token. (There is a known bug in the current code that will likely spawn a PC's token even if you already assigned them a token when making the map.)
Up and Down Arrows (right side)
GMs can use this to reorder (alter the z-index) of the terrain and tokens.
Red X
GM uses this button to delete terrain / tokens. The thought was you import a map for an encounter with all baddies and delete them as they are removed from play.
Activating Tokens
Instead of cycling through your map tokens, you can simply activate the one you want:
sage! map activate terrain="Quicksand"
sage! map activate token="BaddieA"
sage! map activate name="Wizard Hero"
sage! map activate aura="Wizard Hero Aura"
Note: For terrain
or aura
or token
use the name given in the map file (NOT case sensitive). For name
can use either the token name given in the map file or the name/alias of the character in the Game.
Moving Tokens
Moving Tokens by Posting Compass or Ordinal Directions
This command allows you to move your token more than one square at a time. You must reply to the map that you are moving tokens on. The compass directions are read from a "path" argument (or brackets in the command if a path argument isn't found), in order, separated by spaces. Before moving your token, you will get a confirmation prompt that lists movement by using arrows to point in the directions you indicated. You may use compass or ordinal directions, and you may mix and match.
Valid Compass Direction Values:
NW
,N
,NE
,W
,E
,SW
,S
,SE
Valid Ordinal Direction Values:
UL
,U
,UR
,L
,R
,DL
,D
,DR
Arrow Character Output:
- ↖, ⬆, ↗, ⬅, ➡, ↙, ⬇, ↘
Movement Examples
You move your current token/terrain with:
sage! map move [S3 SE E3]
sage! map move path="S3 SE E3"
sage! map move [D3 DR R3]
sage! map move path="D3 DR R3"
You move a terrain/token by name with:
sage! map move terrain="tree" [S3 SE E3]
sage! map move terrain="tree" path="S3 SE E3"
sage! map move token="fighter" [D3 DR R3]
sage! map move token="fighter" path="D3 DR R3"
You move a token linked to a game character by character name with:
sage! map move name="Wally the Wizard" [S3 SE E3]
sage! map move name="Wally the Wizard" path="D3 DR R3"
You bulk move terrain/tokens with:
sage! map move terrain="tree,rock,fire" [S3 SE E3]
sage! map move terrain="tree,rock,fire" path="S3 SE E3"
sage! map move terrain="tree,rock,fire" terrainPath="S3 SE E3"
sage! map move tokens="fighter1,fighter2,fighter3" [S3 SE E3]
sage! map move tokens="fighter1,fighter2,fighter3" path="S3 SE E3"
sage! map move tokens="fighter1,fighter2,fighter3" tokensPath="S3 SE E3"
You can use an asterisk to bulk move similarly named terrain/tokens with:
sage! map move terrain="fire*" [S3 SE E3]
sage! map move terrain="fire*" path="S3 SE E3"
sage! map move terrain="fire*" terrainPath="S3 SE E3"
sage! map move tokens="fighter*" [S3 SE E3]
sage! map move tokens="fighter*" path="S3 SE E3"
sage! map move tokens="fighter*" tokensPath="S3 SE E3"
You can also move a terrain/token as a name="path" combo:
sage! map move tree="S3 SE E3"
sage! map move fighter="S3 SE E3"
You can combine most of the previous options to bulk move terrain/tokens and move other items in other directions:
sage! map move tree="S3" fighter="N N N" terrain="rock,fire" terrainPath="S S E" tokens="fighter*" tokensPath="5NW"
Map File Contents
A map file consists of "blocks" that detail each image you want on the map. The four types of block are: map (the map's background image), terrain (a moveable piece of terrain/trap/hazard), aura (a toggleable aura that moves with a token/terrain), token (a pc/npc). The layers are drawn from the bottom to top (map, terrain, aura, token) and initially drawn in the order listed in the file within each layer (you can change their draw order later via the interface). Only the first map
layer will be drawn. Each block must have the url to the image and the name of the image (in the case of the [map]
block, this is the name of the map that RPG Sage will display).
[map]
(background image/layer)
url
the url to the imagename
the name of the mapgrid
this number of columns (first) and rows (second), ex: 24x11spawn
= the column (left) and row (right) where where new tokens appear, ex: 2,1
[terrain]
(bottom layer)
url
the url to the imagename
the name of the terrain or objectsize
the width (first) and height (second) of terrain, ex: 1x1position
the starting column (left) and row (right) on the map, ex: 3,2
(Only a GM can move an object of this layer)
[aura]
(middle layer)
url
the url to the image (yes, it requires images for now)name
the name of the auraanchor
the name of the token (or terrain) to anchor the aura toopacity
how transparent the image is (0% - 100%), ex: 50%size
the width (first) and height (second) of aura, ex: 1x1position
the column (left) and row (right) on the map relative to anchor- A 5 ft. emanation from a 1x1 token would have an anchor, size=3x3, and position=-1,-1
- (Auras will change greatly in the next iteration.)
[token] top layer
url
the url to the imagename
the name of the PC or NPCsize
the width (first) and height (second) of token, ex: 1x1scale
the image scaling factor, ex: 1.5position
the starting column (left) and row (right) on the map, ex: 3,2user
the Discord handle of the User to assign ownership of the token (PCs only): @PlayerName#1234
Map File Example
[map]
https://rpgsage.io/images/docs/map/example/ForgedFacadeReveal.png
name=Forged Facade Reveal
grid=7x10
spawn=4,1
[token]
https://rpgsage.io/images/docs/map/example/Hoobla.png
name=Hoobla
size=1x1
position=4,7
user=@Randal#7243
[token]
https://rpgsage.io/images/docs/map/example/BaltaramToken.png
name=Baltaram
size=1x1
position=4,2
[token]
https://rpgsage.io/images/games/ftp-756/YellowCircle.png
name=Bodyguard (Yellow)
size=1x1
position=3,2
[token]
https://rpgsage.io/images/games/ftp-756/BlueCircle.png
name=Bodyguard (Blue)
size=1x1
position=4,3
[token]
https://rpgsage.io/images/games/ftp-756/PurpleCircle.png
name=Bodyguard (Purple)
size=1x1
position=5,2
Pathfinder / Starfinder
These commands are for Paizo's Pathfinder and Starfinder Games.
Coin Counter
RPG Sage has a basic understanding of adding and subtracting Pathfinder game currency (copper, silver, gold, platinum).
Example:
sage! 3,000cp +100sp +9cp +200gp -1,000sp
Calendar Commands
These commands involve the calendar and dates of Pathfinder and Starfinder
Calendar
This command lists information about the calendars used in Pathfinder and Starfinder, such as names of days and months and number of days in each month.
Example:
sage! finder calendar
Slash Command:
/sage-finder calendar
Date
This command accepts a date (YYYY-MM-DD) and returns that date as it would be on Golarion in Pathfinder and Absalom Station in Starfinder. If a point of origin is given, then the dates will be relative to that location's calendar instead of being based off the Earth calendar.
Valid origin values:
Earth
Golarion
Absalom Station
Examples:
sage! finder date date="1980-01-31"
sage! finder date date="4300-03-01" origin="Golarion"
sage! finder date date="0427-01-01" origin="Absalom Station"
Notes: Year must be 4 digits, including a leading zero for some years if needed.
Slash Command:
/sage-finder date
Today
A shortcut for the date
command above that uses the current date.
Example:
sage! finder today
Notes: Date used is from Pacific timezone
Character / Starting Wealth
This command lets you select which game, edition, and level you want to look at. It will then provide you the expected wealth for a character starting at that level.
sage! character wealth
sage! starting wealth
We offer both command options as a convenience for those that mix the two phrases up (like us).
Difficulty Classes
This command lists difficulty classes. Choose Simple, By Level, or By Spell Rank to get your DCs, optionally selecting more specific options as needed.
Because Pathfinder 2e and Starfinder 2e share DC mechanics, we have one command with multiple ways to use it:
sage! pf2e dcs
sage! sf2e dcs
sage! p20 dcs
Slash Command:
/sage-pf2e dcs
Earn Income
This command provides you with all the choices you need to roll an Earn Income check. It defaults to Task Level, but you can set a Character Level and RPG Sage will use Task Level = Character Level - 2. The default display simply shows your possible results, but toggling the Verbose/Compact button will also display the text associated with each result. You can preset your system, task or character level, proficiency, and modifier using key="value"
command options.
Examples:
sage! earn income
sage! earn income taskLevel="5"
sage! earn income charLevel="15"
sage! earn income game="sf2e" charLevel="4" proficiency="expert" modifier="+10"
Encounter Builder (2e only)
This command lets you set your party level and size and then shows you your encounter budget. Once you add creatures and hazards it will show you your total XP and threat level.
sage! encounter builder
Find / Search
These commands will search content loaded by RPG Sage as well as Archives of Nethys and return the top 10 hits (as well as a count of total hits). Results that RPG Sage can display directly in the channel will hae a numeric emoji that you can react with to see the item. Results that have an AoN url will have an AoN Icon as well as a link to the page with the results. There will also be a link at the bottom of the list that takes you to the AoN search page with your query loaded so that you can see the full results.
Note: This command only works in channels set to use one of the PF/SF games.
Find
The Find command only searches item names. It was meant to be a quick way to load an item, like a spell, that you know the name of. If your search returns only one item with an exact name match, RPG Sage will skip the results list and show the item.
Find Examples:
sage?! telekinetic projectile
sage?! shortsword
Search
The Search command searches item names as well as content.
Search Examples:
sage? dying
sage? recovery
sage? orc ax
sage? magic missile staff
Post Currency
Add / Update Currency:
sage! currency add key="xp" increment="5"
sage! currency add key="xp" name="XP" dialogIncrement="5"
sage! currency add key="dxp" name="Dice XP" diceIncrement="25"
(name is optional; you can use increment="" in place of dialogIncrement="")
Remove Currency:
sage! currency remove key="xp"
sage! currency remove key="dxp"
View Currency Data:
sage! currency details
Toggle a Currency between Enabled/Disabled:
sage! currency toggle key="xp"
Audit a User's Currency:
sage! currency audit user=" @Randal "
Usage Notes
- You can set currency earned by dialog posts
- You can set currency earned by dice posts
- Dialog with dice in it counts as both.
- Game only. Must be in the Game.
- Player only. Must have a PC in the Game.
- Math.floor(posts / increment) = currency value
- You can change currency increments without clearing previously earned currency
- You can change currency increments AND clear previously earned currency
- You can change currency increments and recalculate earned currency from previous post counts using new increments
Calculation Notes
When you change currency increments, the counts to the next value are restarted. Using the above example, if you have 4 posts and the GM changes the currency increment from 5 to 3, your count toward earning your next "xp" is back to 0 and you have to post 3 times to get your next one.
But, when you change currency, the info is pushed to an array/stack, and thus your total "xp" is aggregated from your counts of posts during each time period a certain increment is in place.
This basically lets the GM have a baseline of say 1 xp per 10 posts but then during a special event, you can drop it to 1xp per 5 posts and then quickly reset it back to 10 after the event.
Server Management
These commands let a Server Owner or "SageAdmin" manage servers.
Server Lifecycle
These commands are used to view and update a Server's settings.
View Server Details
This command displays information about the Server, specifically the default settings.
Example:
sage! server details
Update a Server
This command allows you to change a Server's default settings.
All settings are optional and are set using the argument format of option="value"
.
You are also able to unset
a setting to return it to the default.
Server Options are detailed here.
Examples:
sage! server update gameSystem="pf2e" diceCrit="rolltwice"
sage! server update diceoutput="L" dicepost="post"
Server Options
These options are used during Server Management.
Note: multiple options can be set at the same time
dialogPost=""
This determines how RPG Sage's dialog posts are handled.
Valid dialogPost
values:
EMBED
uses an embed that includes the character's avatar on the right. (default)POST
uses a simple message post some screen readers cannot read Discord embeds.UNSET
uses the dialogPost method inherited from either the User, Game, or Server.
Examples:
sage! server update dialogPost="post"
sage! server update dialogPost="unset"
NOTE: The
embed
option uses Discord embeds to show your content, but RPG Sage has no way of knowing if you have embeds turned on or off! If you plan on using embeds, you will need to ensure they are turned on in your Discord settings. As of this edit, they are in Settings > Chat > Embeds and Link Previews.
diceCrit=""
(DnD5e and PF2e only)
This sets how Critical Hit damage is calculated.
Valid diceCrit
values:
TIMESTWO
rolls the dice and multiplies the results x2. (default)ROLLTWICE
rolls the damage twice and adds the results together.ADDMAX
rolls the dice once and then adds max damage to the result. (RPG Sage House Rule)UNSET
uses the diceCrit method inherited from either the Game or the Server.
Examples:
sage! server update diceCrit="addmax"
sage! server update diceCrit="unset"
diceOutput=""
This determines how compact or verbose the dice results are displayed. Read more about Dice Output here.
Valid diceOutput
values:
XXS
,XS
,S
M
(default)L
,XL
,XXL
ROLLEM
uses the diceoutput method that most closely emulates what Rollem uses.UNSET
uses the diceoutput method inherited from either the Game or the Server.
Examples:
sage! server update diceoutput="xxl"
sage! server update diceoutput="rollem"
sage! server update diceoutput="unset"
dicePost=""
This determines how RPG Sage posts dice results.
Valid dicePost
valus:
POST
will output dice results in a simple post.EMBED
will output dice results in an embed in a post. (default)UNSET
uses the dicepost method inherited from either the Game or the Server.
Examples:
sage! server update dicepost="post"
sage! server update dicepost="unset"
NOTE: The
embed
option uses Discord embeds to show your content, but RPG Sage has no way of knowing if you have embeds turned on or off! If you plan on using embeds, you will need to ensure they are turned on in your Discord settings. As of this edit, they are in Settings > Chat > Embeds and Link Previews.
diceSecret=""
This determines how RPG Sage reacts to dice with the word "secret" in them.
Valid diceSecret
values:
DM
tells Sage to find the first available GM and send the dice results to them as a DM.GM
tells Sage to find a GM channel and send the dice results there. If no GM channel exists, this is treated as DM.HIDE
tells Sage to hide/redact the results using spoiler tags.IGNORE
simply ignores them. (default)UNSET
uses the diceSecret method inherited from either the Game or Server.
Examples:
sage! server update dicesecret="ignore"
sage! server update dicesecret="unset"
gameSystem=""
This is the Game System, which determines how RPG Sage handles certain features, such as Dice and Search.
Valid gameSystem
values:
CNC
Coyote & CrowDND5E
Dungeons & Dragons 5eE20
Essence 20 system (G.I. Joe, Power Rangers, Transformers, etc.)PF1E
Pathfinder RPGPF2E
Pathfinder 2eQUEST
Quest RPGSF1E
StarfinderVTM5E
Vampire: The Masquerade (5e)NONE
(default)
Examples:
sage! server update gameSystem="vtm5e"
sage! server update gameSystem="pf2e"
RPG Sage Admin Tiers
By default, administrative/configuration commands are only usable by the Server Owner. To enable other users to help manage RPG Sage on your server, the Server Owner can add users to one of the following RPG Sage admin tiers.
Game Admin
Game Admins can configure RPG Sage Games, their channels, and their Game Masters. They can perform the commands of a Game Master in any Game on the server.
sage! admin add @UserMention type="GameAdmin"
Server Admin
Server Admins have all the abilities a Game Admin has, can assign users as a Game Admin, and can configure non-game channels to work with RPG Sage.
sage! admin add @UserMention type="ServerAdmin"
Sage Admin
Sage Admins have full access to RPG Sage on the server. They have all the abilities of Game and Server Admins, can assign users as either, and can perform other higher tier management, such as changing the prefix used by RPG Sage.
sage! admin add @UserMention type="SageAdmin"
Updating Admins
If you need to change the Admin tier of one of your existing Admins, you use one of the following commands to set the new Admin tier for the given User.
sage! admin update @UserMention type="GameAdmin"
sage! admin update @UserMention type="ServerAdmin"
sage! admin update @UserMention type="SageAdmin"
Removing Admins
To remove a User from an Admin tier, you use the following command.
sage! admin remove @UserMention
User Management
These commands let a User mnaage their personal settings.
User Lifecycle
These commands are used to view and update a User's settings.
View User Details
This command displays information about the User, specifically their settings overrides.
Example:
sage! user details
Update a User
This command allows you to change your User settings overrides.
All settings are optional and are set using the argument format of option="value"
.
You are also able to unset
a setting to return it to the default.
User Options are detailed here.
Example:
sage! user update dialogPostType="post"
sage! user update sagePostType="embed"
User Options
These options are used during User Management.
Note: multiple options can be set at the same time
dialogPostType=""
This determines how RPG Sage's dialog posts are handled.
Valid dialogPostType
values:
EMBED
uses an embed that includes the character's avatar on the right. (default)POST
uses a simple message post some screen readers cannot read Discord embeds.UNSET
uses the dialogPostType method inherited from either the User, Game, or Server.
Examples:
sage! user update dialogPostType="post"
sage! user update dialogPostType="unset"
NOTE: The
embed
option uses Discord embeds to show your content, but RPG Sage has no way of knowing if you have embeds turned on or off! If you plan on using embeds, you will need to ensure they are turned on in your Discord settings. As of this edit, they are in Settings > Chat > Embeds and Link Previews.
sagePostType=""
This determines how RPG Sage's command posts are handled.
Valid sagePostType
values:
EMBED
uses an embed. (default)POST
uses a simple message post (some screen readers cannot read Discord embeds).UNSET
uses the sagePostType method inherited from either the Game, or Server.
Examples:
sage! user update sagePostType="post"
sage! user update sagePostType="unset"
NOTE: The
embed
option uses Discord embeds to show your content, but RPG Sage has no way of knowing if you have embeds turned on or off! If you plan on using embeds, you will need to ensure they are turned on in your Discord settings. As of this edit, they are in Settings > Chat > Embeds and Link Previews.
orgPlayId=""
This stores your Paizo Organized Play Id.
Example:
sage! user update orgPlayId="123456"
Note: This is currently a convenience, but also will be linked to characters that you give a PFS char number to in the future to help GMs with reporting.
Weather Generator
RPG Sage has a "weather generator" command for quickly generating weather reports for your RPG Games. The weather report includes: climate, temperature, season, high and low temperatures, cloud cover, precipitation, and wind.
The command accepts up to 4 values: climate, elevation, season, and export. If any of the first three are missing, their default value is used (as indicated below; the default Season is based on the current time of year in the Northern Hemisphere).
This command was inspired by the weather tables in Pathfinder's Ultimate Wilderness.
Valid Climate Values:
Cold
Temperate
(default)Tropical
Valid Elevation Values:
SeaLevel
Lowland
(default)Highland
Valid Season Values (Cold/Temperate Climate):
Winter
Spring
Summer
Fall
Valid Season Values (Tropical Climate):
Wet
Dry
Valid Export Values:
day
week
month
year
Examples:
sage! weather
sage! weather elevation="highland"
sage! weather season="summer"
sage! weather climate="tropical" season="wet"
sage! weather climate="cold" elevation="sealevel" season="winter"
sage! weather climate="cold" elevation="sealevel" season="winter" export="month"
Slash Command:
/sage-weather climate: elevation: season: