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.

Simple GM and PC Example

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

Channel Management

Character Management

Color Management

Dialog Commands

Dice Commands

Emoji Management

Game Management

Map Management (prototype)

Pathfinder / Starfinder Commands

Post Currency

Server Management

User Management

Weather Generator

@TODO List

  1. Replace the guides at https://rpgsage.io with links to or copies of the Wiki documents here.

  2. Reformat to work better as a wiki (vs previous docs page)

  3. Work with community to find better layout and wording for the wiki. (It needs to be easier to understand for the majority of users.)

  4. 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 & 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"

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 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"

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, and gm) 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 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 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 targets pc, 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 their init value using sage! 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 or fort

Reflex

  • reflex or ref

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 results
  • GameMaster for dialog posted using gm::
  • NonPlayerCharacter for dialog posted using npc::
  • PlayerCharacter for dialog posted using pc::

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::, and hireling:: (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

Output Type: XXS

5; 16; 15

Output Type: XS

5 `conceal`; 16 `attack`; 15 `slashing`

Output Type: S

5 `conceal` ⟵ [5]; 16 `attack` ⟵ [8] + 8; 15 `slashing` ⟵ [10] + [3] fire + [1,1] holy

Output Type: M (default)

5 `conceal` ⟵ [5]1d20; 16 `attack` ⟵ [8]1d20 + 8; 15 `slashing` ⟵ [10]1d10 + [3]1d6 fire + [1,1]2d6 holy

Output Type: L

5 `conceal` ⟵ [5]
16 `attack` ⟵ [8] + 8
15 `slashing` ⟵ [10] + [3] fire + [1,1] holy

Output Type: XL

5 `conceal` ⟵ [5]1d20
16 `attack` ⟵ [8]1d20 + 8
15 `slashing` ⟵ [10]1d10 + [3]1d6 fire + [1,1]2d6 holy

Output Type: XXL

[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

Output Type: ROLLEM

'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 aka {vs}

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 results
  • DieFailure 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 & 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"

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 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

[terrain] (bottom layer)

  • 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)

[aura] (middle 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 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

  1. You can set currency earned by dialog posts
  2. You can set currency earned by dice posts
  3. Dialog with dice in it counts as both.
  4. Game only. Must be in the Game.
  5. Player only. Must have a PC in the Game.
  6. Math.floor(posts / increment) = currency value
  7. You can change currency increments without clearing previously earned currency
  8. You can change currency increments AND clear previously earned currency
  9. 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 & 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"

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: