-
-
Notifications
You must be signed in to change notification settings - Fork 2
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.
Map Management (prototype)
Pathfinder / Starfinder Commands
These commands let a Server Owner or "SageAdmin" manage channels. These commands also let a "GameAdmin" or GameMaster manage game channels.
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
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"
These options are used during Channel Management.
Note: multiple options can be set at the same time
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"
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"
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"
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"
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"
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 "
This is the Game System, which determines how RPG Sage handles certain features, such as Dice and Search.
Valid gameSystem
values:
-
CNC
Coyote & Crow -
DND5E
Dungeons & Dragons 5e -
E20
Essence 20 system (G.I. Joe, Power Rangers, Transformers, etc.) -
PF1E
Pathfinder RPG -
PF2E
Pathfinder 2e -
QUEST
Quest RPG -
SF1E
Starfinder -
VTM5E
Vampire: The Masquerade (5e) -
NONE
(default)
Examples:
sage! channel update gameSystem="vtm5e"
sage! channel update gameSystem="pf2e"
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 Players -
OOC
(Out of Character) all Sage commands are allowed for GMs and Players -
GM
(Game Master) all Sage commands are allowed for GMs -
DICE
(Dice) only Dice commands are allowed for GMs and Players -
MISC
(Miscellaneous) all Sage commands are allowed for GMs and Players -
UNSET
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"
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.
These commands are used to create, view, update, and delete 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"
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 can have 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"
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 can have only 1 PC, they do not have to provide the name when viewing their PC's details.
Example:
sage! pc update alias="BoB"
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"
These commands allow you to turn Auto Dialog on and off.
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
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
In addition to the basic settings, you can track stats and other information on your Character using the Stats command. Manual Stats are detailed here.
Examples:
sage! pc stats name="Bob the Fighter" init="+1"
sage! pc stats name="Bob the Fighter" conditions="unconscious"
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.
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"
These commands allow you to list characters of the given type.
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
This lists the Companions of the named Player Character.
Example:
sage! companion list charName="Bob the Fighter"
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
This lists the Minions of the named Non-Player Character.
Example:
sage! minion list charName="Gobbo the Goblin"
These options are used during Character Management.
Note: multiple options can be set at the same time
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"
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"
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"
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"
This sets the name of the Character.
Examples:
sage! pc create name="Bob the Fighter"
sage! npc create name="Gobbo the Goblin"
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"
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"
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"
When managing your Character, you can save pretty much any information you want as a "stat" by using the pc stats
command.
These stats are visible when you view your character details.
They are also accessible in your dice rolls (and most importantly, macros).
Stats are set using the format key="value"
.
-
key
can only have letters, numbers and periods -
value
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 stats name="Bardok" level="2"
sage! pc stats name="Bardok" hp="10" maxHp="20"
sage! pc stats name="Bardok" mod.dex="+3" dexterity="16"
sage! pc stats 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 stats name="Bardok" level=""
sage! pc stats name="Bardok" proficiency.Stealth=""
sage! pc stats name="Bob the Fighter" init="+1"
You can now roll init with:
[1d20 + {pc::init}]
... which becomes ...
[1d20 + 1]
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]
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 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.
Yup, you read that right.
We will expand on this topic later, but for now, know that you can do things like:
sage! pc stats 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]
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 stats 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.
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.
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: dc
, mod
, prof
, proficiency
(adds 10 to the modifier)
Example: for a character with +12 Reflex
[1d20 dc {char::dc.reflex}]
... becomes ...
[1d20 dc 22]
(basic modifier to a roll for skills, lores, and saving throws)
Example: for a character with +7 Medicine
[1d20 + {char::mod.medicine}]
... same as ...
[1d20 + {char::medicine}]
... becomes ...
[1d20 + 7]
(uses only the proficiency modifier)
Example: for a character trained in Medicine
[1d20 + {char::prof.medicine}]
... becomes ...
[1d20 + 2]
(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 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
Ability scores work a little differently than the other stats. The value returned normally is the fully ability score, while the mod and dc values are based on the modifier. Prof and Proficiency don't return anything. You can access an ability score with its' full name or the three letter abbreviation.
Basic Example using Strength 14
[1d20 + {char::strength}]
... same as ...
[1d20 + {char::str}]
... becomes ...
[1d20 + 14]
dc
Example using Strength 14
[1d20 dc {char::dc.str}]
... becomes ...
[1d20 dc 12]
mod
Example using Strength 14
[1d20 + {char::mod.str}]
... becomes ...
[1d20 + 2]
Changes in Pathfinder 2e Remaster have made us realize we should address the consistency in accessing ability scores and ability score modifiers. Using strength
and str
to get the full value while requiring the mod
prefix against either strength
or str
to get the modifier will likely lead to confusion we weren't expecting when we originally wrote this. Therefore, it is highly suggested that you access ability scores in the following way so that a future change doesn't break your dice.
Full name will get the full ability score:
[1d20 + {char::strength}]
... becomes ...
[1d20 + 14]
Three letter abbreviation will get the ability modifier:
[1d20 + {char::str}]
... becomes ...
[1d20 + 2]
dc
will add 10 to whichever value is returned:
[1d20 dc {char::dc.strength}]
... becomes ...
[1d20 dc 24]
... while ...
[1d20 dc {char::dc.str}]
... becomes ...
[1d20 dc 12]
Beyond the basics of Perception, Saving Throws (Fortitude, Reflex, Will), Ability 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
The proficiency modifier for your character's class. You will want to combine this with level and ability score to get a true DC. We suggest settingclassStat=""
and thendc.class="{char::level}+{char::classDC}+{char::classStat}"
so that you can accessdc.class
(which is likely what we will make an automated stat for in the future).
Casting Proficiency Modifiers
castingArcane
castingDivine
castingOccult
castingPrimal
Armor Proficiency Modifiers
heavy
medium
light
unarmored
Weapon Proficiency Modifiers
advanced
martial
simple
unarmed
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
[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
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
If you are using a Sage Game the character must exist in the game, otherwise you can only use your own characters.
Refers to the stat/data you are trying to grab. Examples:
level
ac
hp
maxhp
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}
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 results -
GameMaster
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
.
Example:
sage! color get type="Dice"
Example:
sage! color set type="GameMaster" color="#FF00FF"
Example:
sage! color unset type="GameMaster"
Example:
sage! color list
Example:
sage! color sync
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.
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!".
Because a PC can have multiple companions, you need to call them out by name.
Examples:
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."
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!"
Because NPCs need friends, too, you can give them Minions. They are functionally identical to a PC's Companions.
Example:
minion::Sluggo::"Yes boss!"
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.
All Dialog commands are made up of the following parts: type
, name
, display name
, color
, avatar
, content
These parts are combined in Dialog commands in the following format:
type::name::(display name)::color::avatar::content
Character type: gm, npc, enemy, ally, pc, alt, companion, hireling
The name of the character to post as.
- optional for
gm::
- optional for
pc::
in a game
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)
The color to override the Dialog embed color with.
- expects hex value 0x000000 or #FFFFFF
A url to override the avatar image in the embed.
The content you want to post as your dialog.
- accepts normal discord/markup as well as custom Sage markup
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
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.
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.
Note: This emoji can be changed by changing the emoji used for
CommandPin
. See Emoji Management for more information on changing emoji.
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?"
[1d20]
[1d8]
[3d4]
[1d20 + 4]
[1d8 + 2]
[3d4 + 3]
[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.
[1d4 dagger + 1d6 sneak]
[1d8 sword + 1d6 holy]
[2d8 fire + 2d8 ice + 2d8 holy]
[6#3d6 stat]
[2#1d20 attack]
[3#1d4 + 1 missile]
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]
When rolling a test, the output will include an emoji to indicate success or failure. By default, these are 👍 and 👎.
[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.)
[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.)
When rolling a test, the output will include an emoji to indicate success or failure. By default, these are 👍 and 👎.
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.
[dnd5e 1d20 ac 10 attack]
[pf2e 1d20 dc 10 check]
You can read more about Dice options by Game System here.
[xxs 1d20 ac 10 attack]
[xxl 1d20 dc 10 check]
You can read more about Dice options by Dice Output here.
[xxs pf2e 1d20 dc 10 check]
[xxl dnd5e 1d20 ac 10 attack]
RPG Sage has many ways you can modify or manipulate the dice you roll.
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]
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]
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]
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"
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]
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!
[Fighter, Wizard, Rogue]
[2#Fighter, Wizard, Rogue]
The results will be listed in the order they were selected.
[2s#Fighter, Wizard, Rogue]
The results will be sorted alphabetically.
[2u#Fighter, Wizard, Rogue]
The results will be listed in the order they were selected.
[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.
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)]
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.
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.
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
.
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
5; 16; 15
5 `conceal`; 16 `attack`; 15 `slashing`
5 `conceal` ⟵ [5]; 16 `attack` ⟵ [8] + 8; 15 `slashing` ⟵ [10] + [3] fire + [1,1] holy
5 `conceal` ⟵ [5]1d20; 16 `attack` ⟵ [8]1d20 + 8; 15 `slashing` ⟵ [10]1d10 + [3]1d6 fire + [1,1]2d6 holy
5 `conceal` ⟵ [5]
16 `attack` ⟵ [8] + 8
15 `slashing` ⟵ [10] + [3] fire + [1,1] holy
5 `conceal` ⟵ [5]1d20
16 `attack` ⟵ [8]1d20 + 8
15 `slashing` ⟵ [10]1d10 + [3]1d6 fire + [1,1]2d6 holy
[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
'conceal', ` 5 ` ⟵ [5] 1d20
'attack', ` 16 ` ⟵ [8] 1d20 + 8
'slashing', ` 18 ` ⟵ [3] 1d10 + [4] 1d6 fire + [5, 6] 2d6 holy
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.
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]
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]
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.
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.
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.
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]
[+d4]
[+d2 dif 10]
[+d4up2]
[+d6dn1]
(Currently known bug: do not leave spaces surrounding up/dn)
[+d4*]
[+d6*]
[+d4*up2 dif 5 simple test]
(Currently known bug: do not leave spaces surrounding up/dn)
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]
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]
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.
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.
If you are rolling the same attack multiple times, you can simplify your roll by combining the multiple roll modifier 2#
with MAP-5
.
You can, of course, roll more than twice and change the MAP to another value (most likely 4).
[2MAP-5#1d20 ac 10; 1d6 damage]
[3MAP-4#1d20 ac 10; 1d6 damage]
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.
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 d10); 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]
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 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.
These commands are used to create, view, update, and delete a Dice Macro.
Creating a Dice Macro requires a name
.
If your macro simply rolls dice, then it also requires dice
.
If your macro is rolling on a table, then if instead requires table
.
Any Dice Macro can optionally have a cat
(short for category
).
Examples:
sage! macro set name="BobScythe" dice="[1d20+3 atk; 1d10 S dmg]"
sage! macro set name="BobScythe" cat="Bob the Farmer" dice="[1d20+3 atk; 1d10 S dmg]"
sage! macro set name="TableRoll" table="https://url_to_tsv_table_content"
Usage:
[BobScythe]
Dice Macros allow for the use of arguments, making your rolls more dynamic. See more about Dice Arguments here.
Example:
sage! macro set name="BobDagger" category="Bob the Farmer" [1d20+2 {ac} atk; 1d4 {type:P} dmg]
Usage:
[BobDagger ac=10]
[BobDagger type=S]
[BobDagger ac=10 type=S]
Example:
sage! macro details name="BobScythe"
This changes the Dice Macro's category
.
Example:
sage! macro move name="BobScythe" category="Bob the Farmer"
You can delete one by name
, multiple by category
, or all completely.
Examples:
sage! macro delete all
sage! macro delete category="Bob the Farmer"
sage! macro delete name="BobScythe"
You can list all your Dice Macros, grouped by category
, or you can list all the Dice Macros in a given category
.
Examples:
sage! macro list
sage! macro list category="Bob the Farmer"
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.
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]
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]
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
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 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.
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 results -
DieFailure
for dice test results
Emoji values can be raw emoji characters as well as discord custom emoji.
Example:
sage! emoji get type="DieSuccess"
Example:
sage! emoji set type="DieFailure" emoji="😭"
Example:
sage! emoji unset type="DieFailure"
Example:
sage! emoji list
Example:
sage! emoji sync
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.
These commands are used to create, view, update, and archive 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 "
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
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"
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
These commands are used to add or remove 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 "
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 "
These commands let you add or remove Game Masters.
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 "
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 "
These commands let you add or remove Players.
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 "
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 "
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.
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
These options are used during Game Management.
Note: multiple options can be set at the same time
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"
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 "
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"
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"
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"
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"
This sets the diplay name of the Game Master special NPC used by the gm::
Dialog.
Example:
sage! game update gmCharName="Narrator"
This is the Game System, which determines how RPG Sage handles certain features, such as Dice and Search.
Valid gameSystem
values:
-
CNC
Coyote & Crow -
DND5E
Dungeons & Dragons 5e -
E20
Essence 20 system (G.I. Joe, Power Rangers, Transformers, etc.) -
PF1E
Pathfinder RPG -
PF2E
Pathfinder 2e -
QUEST
Quest RPG -
SF1E
Starfinder -
VTM5E
Vampire: The Masquerade (5e) -
NONE
(default)
Examples:
sage! game update gameSystem="vtm5e"
sage! game update gameSystem="pf2e"
This adds the User mentioned as a Game Master of the new Game.
Example:
sage! game create name="Dragon Saga" gm=" @Randal "
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 "
This adds the Channel referenced as an In-Character Channel of the Game.
Examples:
sage! game create name="Dragon Saga" ic=" #dragon-saga-ic "
This sets the name of the Game.
Examples:
sage! game create name="Dragon Saga"
sage! game update name="Questbound"
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 "
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 "
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 "
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!
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!
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).
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.
Move your active token (or terrain if GM) one square in the direction indicated.
Disabled; saved for future use.
GM uses this button to cycle through the terrain images to select the active terrain.
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.)
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.)
GMs can use this to reorder (alter the z-index) of the terrain and tokens.
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.
This command allows you to move your token more than one square at a time. The compass directions are read from brackets, 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.
Valid Compass Direction Values:
-
NW
,N
,NE
,W
,E
,SW
,S
,SE
Arrow Character Equivalents:
- ↖, ⬆, ↗, ⬅, ➡, ↙, ⬇, ↘
Movement Examples:
(you must reply to the map's message for Sage to know which map you are moving on)
sage! map move [S S S SE]
sage! map move [N NE E NE E]
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).
-
url
the url to the image -
name
the name of the map -
grid
this number of columns (first) and rows (second), ex: 24x11 -
spawn
= the column (left) and row (right) where where new tokens appear, ex: 2,1
-
url
the url to the image -
name
the name of the terrain or object -
size
the width (first) and height (second) of terrain, ex: 1x1 -
position
the starting column (left) and row (right) on the map, ex: 3,2
(Only a GM can move an object of this layer)
-
url
the url to the image (yes, it requires images for now) -
name
the name of the aura -
anchor
the name of the token (or terrain) to anchor the aura to -
opacity
how transparent the image is (0% - 100%), ex: 50% -
size
the width (first) and height (second) of aura, ex: 1x1 -
position
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 image -
name
the name of the PC or NPC -
size
the width (first) and height (second) of token, ex: 1x1 -
scale
the image scaling factor, ex: 1.5 -
position
the starting column (left) and row (right) on the map, ex: 3,2 -
user
the Discord handle of the User to assign ownership of the token (PCs only): @PlayerName#1234
[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
These commands are for Paizo's Pathfinder and Starfinder Games.
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
These commands involve the calendar and dates of Pathfinder and Starfinder
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
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
A shortcut for the date
command above that uses the current date.
Example:
sage! finder today
Notes: Date used is from Pacific timezone
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.
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
The Search command searches item names as well as content.
Search Examples:
sage? dying
sage? recovery
sage? orc ax
sage? magic missile staff
These commands are for Paizo's Pathfinder 2e Game.
These commands return DC information for Pathfinder 2e. You can get a Simple DC by proficiency, DCs listed by level, as well as a DC by level or spell level.
Valid proficiency values:
-
U
orUntrained
-
T
orTrained
-
E
orExpert
-
M
orMaster
-
L
orLegendary
Simple DC Examples:
sage! simple dcs
sage! simple dc t
sage! simple dc trained
DCs by Level Examples:
sage! dcs by level
sage! dc by level 5
DC by Spell Level Example:
sage! dc by spell level 2
Slash Command:
/sage-pf2e dcs
These commands are meant to provide a quick way to see a list of various things in Pathfinder 2e.
This command lets you list gods that have the given Domain.
Examples:
sage! list gods by domain family
sage! list gods by domain sun
These commands let you list weapons, armor, and spells that have the given Trait.
Examples:
sage! list weapons by trait agile
sage! list armor by trait clumsy
sage! list spells by trait fire
Note: The data is legacy and only includes Core, APG, and Secrets of Magic
This command let you list spells by tradition and level.
Valid Tradition Values:
-
arcane
,divine
,occult
,primal
Valid Level Values:
-
cantrip
,1
,2
,3
,4
,5
,6
,7
,8
,9
,10
Note: RPG Sage understands plural cantrips
as well as level "names" such as 1st
, 2nd
, 3rd
, etc.
Examples:
sage! spells arcane 1
sage! spells divine 3
sage! spells occult cantrip
sage! spells primal cantrips
sage! spells arcane 3rd
For convenience, there is a cantrips
command as well.
Example:
sage! arcane cantrips
Note: The data is legacy and only includes Core, APG, and Secrets of Magic
There is an advanced variation of this command that will let you create a "custom" spell list by mixing/matching/excluding traditions. To add spells of a tradition to your custom list, you use
+
(ex:+arcane
). To remove spells of a tradition to your list, you use-
(ex:-divine
). Likewise,&
adds spells that exist in both the list before and after the&
while|
adds spells that exist in either list.
1st Level; Arcane Spells and Divine Spells:
sage! spells 1st arcane +divine
1st Level; Arcane Spells that are not Divine Spells:
sage! spells 1 arcane -divine
1st Level; Spells that are Arcane and Divine Spells:
sage! spells 1 arcane &divine
Note: The command is progressive/additive, so you need to be careful.
3rd Level; Spells that are Arcane and Primal, without spells that are Occult
sage! spells 3 arcane &primal -occult
This command lets you list focus spells by archetype, class, domain.
Archetype Example:
sage! focus spells shadowdancer
Class Example:
sage! focus spells bard
Domain Example:
sage! focus spells fire
Note: The data is legacy and only includes Core, APG, and Secrets of Magic
This command will show you the Starting Wealth table (Table 10-10 in the original Core Rulebook) for Pathfinder 2e. If you also provide the level, it will show only the values for that level.
Examples:
sage! starting wealth
sage! starting wealth 1st
sage! starting wealth 12
This command will show you the values from the Income Earned Table (Table 4-2 in the original Core Rulebook) for Pathfinder 2e. If you also provide a task level and proficiency, the results will be narrowed down accordingly.
Valid Task Level Values:
- Numbers from
1
to30
Valid Proficiency Values:
-
t
ortrained
-
e
orexpert
-
m
ormaster
-
l
orlegendary
Basic Example:
sage! income earned
Task Level Examples:
sage! income earned 3
sage! income earned 15
Task Level and Proficiency Examples:
sage! income earned 3 e
sage! income earned 15 legendary
Join the Organized Play program here!
Rolling downtime uses the following format:
sage! pfs income pcLevel skillProficiency skillModifier daysOfDowntime
The level of your PC.
One of the following: U
, T
, E
, M
, L
The positive or negative modifier for the roll, ex: +7
or -1
How many days of downtime to roll if don't want the default results.
Examples:
sage! pfs income 1 T +7
sage! pfs income 1 T +7 8
We started experimenting with providing some randomization for Society Scenarios. In addition to randomizing the different options, it will calculate the proper Tier of play. The only one currently available, is for S1-01.
To use the command, include the level of each PC present, up to 7 PCs. (PFS Guidelines now recommend against 7 player tables.)
Examples:
sage! pfs s1-01 1, 2, 1, 3
sage! pfs s1-01 1, 1, 1, 1, 2, 2, 2
This command uses the given mininum level, maximum level, and player levels to provide the resulting Tier of play. (This was written early in PFS 2e, and may not be valid for current play.)
Format:
sage! pfs tier minLevel-maxLevel pcLevel, pcLevel, pcLevel, pcLevel, pcLevel, pcLevel
Examples:
sage! pfs tier 1-4 1, 2, 2, 2
sage! pfs tier 3-6 3, 3, 5, 5, 6, 6
These commands let a Server Owner or "SageAdmin" manage servers.
These commands are used to view and update a Server's settings.
This command displays information about the Server, specifically the default settings.
Example:
sage! server details
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"
These options are used during Server Management.
Note: multiple options can be set at the same time
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"
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"
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"
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"
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"
This is the Game System, which determines how RPG Sage handles certain features, such as Dice and Search.
Valid gameSystem
values:
-
CNC
Coyote & Crow -
DND5E
Dungeons & Dragons 5e -
E20
Essence 20 system (G.I. Joe, Power Rangers, Transformers, etc.) -
PF1E
Pathfinder RPG -
PF2E
Pathfinder 2e -
QUEST
Quest RPG -
SF1E
Starfinder -
VTM5E
Vampire: The Masquerade (5e) -
NONE
(default)
Examples:
sage! server update gameSystem="vtm5e"
sage! server update gameSystem="pf2e"
These commands let a User mnaage their personal settings.
These commands are used to view and update a User's settings.
This command displays information about the User, specifically their settings overrides.
Example:
sage! user details
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"
These options are used during User Management.
Note: multiple options can be set at the same time
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"
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"
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.
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 3 values: climate, elevation, and season. If any of the 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
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
Slash Command:
/sag-weather climate: elevation: season:
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
Other