๐Ÿ”ƒ Import/Export for Website

Commands for transferring characters between the Discord bot and the web-based character builder at shinra.cc/abyssal-engine.

/export_json โ€” Export Character to Website Player
/export_json

Exports your currently active character as a .json file that can be uploaded to the Fabula Sheet Builder website. The file is sent as a Discord attachment in an ephemeral message (only you can see it).

ParameterTypeDescription
No parameters. Uses your active character.

What gets exported:

  1. Identity (name, identity, theme, origin)
  2. Attributes, level, and classes
  3. Skills with ranks, spells, and heroic skills
  4. Equipment (main hand, off hand, armor, accessory)
  5. Inventory with full item data
  6. Bonds with emotions and notes
  7. Vitals (HP, MP, IP, current and max)
  8. Zenit, XP, Fabula Points
  9. Status effects, custom modifiers, and notes
Tip: Save the .json file, then log into shinra.cc/abyssal-engine and use the Import button in the header to upload it.
/import_json โ€” Import Character from Website Player
/import_json file:<attachment> [overwrite:<true|false>]

Imports a character from a .json file exported from the Fabula Sheet Builder website. The character is added to your roster and set as your active character.

ParameterTypeDescription
file requiredAttachmentThe .json file exported from the website (use the Export button on your character sheet).
overwrite optionalBooleanIf true, overwrites an existing character with the same name. Defaults to false.

What gets imported:

  1. All identity, attribute, class, skill, and spell data
  2. Equipment loadout and inventory
  3. Bonds (converted from website format to bot format)
  4. Current and max vitals (HP, MP, IP)
  5. Zenit, XP, Fabula Points, and notes
Note: If a character with the same name already exists and overwrite is not set to true, the import will fail. This prevents accidental overwrites.
Tip: On the website, open your character sheet and click the Export button in the header. Save the file, then attach it to this command in Discord.
๐Ÿ‘ค Character Management

Commands for creating, viewing, editing, switching, and deleting characters. Every player can have multiple characters, but only one is active at a time.

/charactermancer โ€” Interactive Creation Wizard Player
/charactermancer name:<text> identity:<text> theme:<text> origin:<text>

Launches a multi-step interactive wizard that walks you through attribute selection, class choice, skill learning, and spell acquisition. This is the recommended way to create a character.

ParameterTypeDescription
name requiredTextYour character's name. Must be unique in your roster.
identity requiredTextWho the character is (e.g. "Rebellious Knight", "Travelling Merchant")
theme requiredTextDriving ideal or goal (e.g. "Justice", "Revenge", "Discovery")
origin requiredTextHomeland or background (e.g. "Arcanopolis", "The Northern Wastes")

Wizard Flow:

  1. Attribute Profile โ€” Choose Jack of All Trades (d8/d8/d8/d8), Standard (d10/d8/d8/d6), or Specialized (d10/d10/d6/d6). Standard and Specialized then ask which attributes get the high/low dice.
  2. Class Selection โ€” Pick a class from the full codex. Previews available skills and free benefit.
  3. Class Confirmation โ€” See a preview with free benefit and skill list. Confirm or go back.
  4. Benefit Choice โ€” If the class offers "HP or MP", you choose which to increase.
  5. Skill Selection โ€” Pick one skill from the class. Skills already maxed are hidden.
  6. Spell Selection โ€” If the skill grants spells (Elemental Magic, Entropic Magic, Spiritual Magic), you choose a spell.
  7. Summary โ€” Review your character with Add Another Level or Finish & Save.
Tip: You can add multiple levels before saving! Use "Add Another Level" to multiclass or deepen a single class.
Starting Zenit: Characters created via the wizard start with 500 Zenit.
/register โ€” Quick Character Creation Player
/register name:<text> char_type:<PC|NPC> [class_id:] [identity:] [theme:] [origin:]

Quick-create a character without the wizard. PCs require all fields; NPCs only need a name. Creates a Level 1 character with default d8 attributes and 40 HP / 20 MP.

ParameterTypeDescription
name requiredTextCharacter name (must be unique)
char_type requiredChoicePC (Player Character) or NPC (Non-Player Character)
class_id optional*AutocompleteStarting class (*required for PCs)
identity optional*TextCharacter identity (*required for PCs)
theme optional*TextCharacter theme (*required for PCs)
origin optional*TextCharacter origin (*required for PCs)
Note: Quick-register creates characters with flat d8 attributes and 50 starting Zenit. Use /charactermancer for proper attribute distribution and 500 Zenit.
/sheet โ€” View Character Sheet Player
/sheet

Displays a comprehensive, paginated character sheet for your active character. Page 1 shows core info, traits, vitals, attributes, and equipment. Page 2 shows skills, spells, bonds, and notes. Use the โ—€ Previous / Next โ–ถ buttons to navigate.

/switch โ€” Switch Active Character Player
/switch character_name:<autocomplete>

Switch which character is currently active. All commands that reference "your character" use the active character.

ParameterTypeDescription
character_name requiredAutocompleteSelect from your roster
/edit_character โ€” Edit Character Traits Player
/edit_character [rename:] [identity:] [theme:] [origin:]

Update your active character's name, identity, theme, or origin. All fields are optional โ€” only provide what you want to change.

ParameterTypeDescription
rename optionalTextNew character name
identity optionalTextNew identity string
theme optionalTextNew theme string
origin optionalTextNew origin string
/unregister โ€” Delete a Character Player
/unregister name:<autocomplete>

Permanently deletes a character from your roster and the database. If you delete your active character, the bot switches to another character in your roster (or clears active if none remain).

ParameterTypeDescription
name requiredAutocompleteCharacter to delete (lists your roster)
Warning: This action is permanent! There is no undo.
/resources โ€” Resource Dashboard Player
/resources

Quick overview of HP, MP, Fabula/Ultima Points, Zenit, XP, and IP with visual progress bars. Shows Fabula Points for PCs and Ultima Points for NPCs.

โš”๏ธ Combat

Commands used during combat encounters. Attacks use your equipped weapon's accuracy and damage formulas from the Fabula Ultima rulebook.

/attack โ€” Weapon Attack Player
/attack attack_with:<autocomplete> [target:<text>]

Perform a weapon attack. Rolls accuracy using the weapon's two attributes, calculates damage as High Roll + weapon bonus. Status effects (Slow, Weak, Dazed, Shaken, Enraged) automatically reduce the relevant die sizes.

ParameterTypeDescription
attack_with requiredAutocompleteShows your equipped main-hand weapon, off-hand weapon (if weapon type), and Unarmed Strike
target optionalTextName of the enemy for display purposes

Damage Formula: High Roll (max of two dice) + Weapon Damage Bonus = Total Damage

Example: With a Bronze Sword (DEX+INS, +8 bonus), d10 DEX and d8 INS, you might roll [d10: 7] + [d8: 4] = 11 accuracy, High Roll (7) + 8 = 15 physical damage.
/defend โ€” Guard Action Player
/defend [ally:<text>]

Take the Guard action. Displays your current Defense and Magic Defense (calculated from equipped armor and shields). Optionally name an ally you're protecting.

ParameterTypeDescription
ally optionalTextName of the ally you are protecting
Defense Calculation: Base DEX die + armor modifiers + shield modifiers (both main and off hand). Armor with fixed_def replaces DEX instead of adding to it.
/inflict โ€” Inflict Status Effect Player
/inflict status:<autocomplete>

Apply a status effect to your own active character. Cannot stack โ€” if already afflicted, you'll be notified.

/cleanse โ€” Remove Status Effect Player
/cleanse status:<autocomplete>

Remove a status effect from your active character.

/active_statuses โ€” View Current Statuses Player
/active_statuses

Lists all status effects currently affecting your character with their descriptions.

/initiative โ€” Roll Initiative Player
/initiative

Rolls initiative using DEX + INS dice, with status penalties applied (Slow, Dazed, Enraged). Adds equipment initiative modifiers from armor/shields.

/roll โ€” Dice Roller Player
/roll expression:<text>

Flexible dice roller with full notation support. Handles Fabula Ultima attribute substitution (with status die-size penalties applied automatically), D&D-style advantage via fortune/misfortune, keep/drop, exploding dice, rerolls, success counting, and multi-roll chaining. Indefinite explode and reroll are capped at 20 iterations per die to prevent runaway loops.

ParameterTypeDescription
expression requiredTextDice expression using any combination of the notation below. Spaces are optional.

Basic Notation & Math

SyntaxMeaning
NdMRoll N dice with M sides, e.g. 2d6, 1d20, 4d10
d%Shorthand for d100 (percentile)
+ - * /Math on results, e.g. 3d6+5, 2d6*2, 4d4/2
might / mig
dexterity / dex
insight / ins / int
willpower / wlp / will
Substitutes your character's current die for that attribute. Statuses like Slow, Weak, Dazed, Shaken, Enraged, and Poisoned automatically reduce the die size before the roll.

Keep / Drop

ModifierMeaningExample
kN or khNKeep N highest dice4d6k3 โ€” roll 4d6, keep the best 3 (classic ability score)
klNKeep N lowest dice4d6kl2 โ€” keep the worst two
dN or dlNDrop N lowest dice4d6d1 โ€” drop the single lowest (same as k3 on 4d6)
dhNDrop N highest dice4d6dh1 โ€” drop the single highest

Exploding Dice

ModifierMeaningExample
eNEach die that rolls โ‰ฅ N adds one extra die (single pass โ€” the extra die does NOT re-explode)5d6e6 โ€” every 6 adds one more d6
eSame as above, but triggers on the maximum face value5d6e โ€” same as 5d6e6
ieNExplode indefinitely (each new die can also explode). Capped at 20 iterations per starting die.5d6ie6 โ€” chains of 6s keep adding dice

Rerolls

ModifierMeaningExample
rNReroll any die โ‰ค N, once per die (kept result even if bad)10d6r1 โ€” any 1s reroll once
irNReroll any die โ‰ค N indefinitely. Capped at 20 iterations per die.10d6ir2 โ€” keep rerolling until every die is 3 or higher

Success / Failure / Botch Counting

ModifierMeaningExample
tNCount dice โ‰ฅ N as successes. The result becomes the success count, not the sum.10d10t7 โ€” count every result of 7+ as one success
fNCount dice โ‰ค N as failures.10d10f3 โ€” count every 3 or lower
bN or bCount dice โ‰ค N as botches. Bare b defaults to b1.5d10b1 โ€” count only natural 1s as botches

Fortune / Misfortune (D&D-style Advantage)

KeywordMeaningExample
fortuneEvery single-die group in the expression is rolled twice; the higher result is kept./roll d20 fortune โ†’ rolls 2d20, keeps the higher.
/roll 1d20+5 fortune โ†’ 2d20kh1 + 5.
misfortuneSame as fortune, but keeps the lower./roll d20 misfortune โ†’ 2d20kl1
Only affects single-die groups. /roll 2d6 fortune leaves the 2d6 alone, because it's already a multi-die pool.

Multi-Roll

SyntaxMeaning
;Separator for running multiple independent rolls in one command. Each sub-expression gets its own Result and Breakdown block. No cap on how many you chain.
Examples:
/roll 2d6 โ€” roll two six-siders
/roll 3d6+5 โ€” roll 3d6 and add 5 (spaces optional: 3d6 + 5)
/roll might+dex โ€” roll your character's MIG and DEX dice together
/roll d% + 10 โ€” percentile roll with a bonus
/roll 4d6k3 โ€” roll four d6, keep highest three (ability score)
/roll d20 fortune + 5 โ€” advantage attack roll with a +5 modifier
/roll d20 misfortune - 2 โ€” disadvantage save with a penalty
/roll 10d10t7 โ€” roll 10d10, count how many come up 7 or higher
/roll 5d6e โ€” 5d6, every 6 adds one more d6 once
/roll 10d6ie6 โ€” 10d6, exploding 6s chain indefinitely (capped at 20)
/roll 10d6r1 + 3 โ€” reroll any 1s once, sum the rest, add 3
/roll 2d6 ; 3d8 ; 1d20 โ€” three separate rolls in one command
/roll 10d6 e6 k8 +4 โ€” roll 10d6, explode 6s, keep top 8, add 4 to the sum
Modifier order is fixed regardless of where you place them: roll โ†’ reroll โ†’ explode โ†’ keep/drop โ†’ count/sum โ†’ math. So 10d6 k8 e6 +4 and 10d6 e6 k8 +4 produce the same result.
Caps: Indefinite explode (ie) and indefinite reroll (ir) each stop at 20 iterations per starting die, which is astronomically unlikely to matter in practice (a d6 exploding 20 times in a row is roughly 1 in 3.6 quintillion).
Display: Results appear as [ N ] inside the embed. The breakdown lists every die that was rolled, 5 per line, so large pools stay readable.
/damage โ€” Take Damage Player
/damage amount:<int> [source:<text>]

Record HP damage. Shows before/after with a health bar. Warns when reaching 0 HP (Surrender or Sacrifice).

/heal โ€” Recover HP Player
/heal amount:<int>

Recover Hit Points. Capped at your maximum HP.

โค๏ธ Vitals & Resources

Unified command for adjusting HP, MP, IP, Zenit, and XP.

/resource โ€” Modify Any Resource
/resource stat:<HP|MP|IP|XP|Zenit> mode:<Add|Sub> value:<int>

Add or subtract from the chosen resource. HP triggers crisis warning when below 50% and incapacitation warning at 0.

/rest โ€” Full Recovery
/rest

Restores HP and MP to their maximum values. IP does not restore on rest per core rules.

/set โ€” Set Any Stat Directly
/set category:<choice> stat:<autocomplete> value:<int>

Directly set a stat to a specific value. The stat autocomplete changes based on your selected category.

CategoryAvailable StatsNotes
Max Vitalshp, mp, ipSets the maximum cap. Current value is clamped if it exceeds the new max.
Currenthp, mp, ip, xp, zenit, fabula, ultimaSets the current value directly.
Attributemig, dex, ins, wlpValue must be 6, 8, 10, or 12 (valid die sizes).
/add โ€” Add Resources or Items
/add resource:<choice> [amount:<int>] [item:<autocomplete>]

Add Zenit, XP, Fabula Points, Ultima Points, or Items to your character for free (no cost deducted).

/remove โ€” Remove Resources or Items
/remove resource:<choice> [amount:<int>] [item:<autocomplete>]

Remove resources or items from your character. For items, searches your inventory by name.

๐Ÿ›’ Shopping & Inventory
/buy โ€” Purchase Item
/buy item:<autocomplete> [quantity:<int>]

Buy from the game codex. Deducts Zenit and adds the item to your inventory. Items without a price cannot be bought.

/sell โ€” Sell Item
/sell item:<autocomplete> [quantity:<int>]

Sell an inventory item for half its codex Zenit value (rounded down).

/use โ€” Use Item
/use item:<autocomplete>

Use a consumable (auto-spends IP and removes from inventory) or view/activate a non-consumable inventory item. Autocomplete shows codex consumables plus all items in your inventory.

/view_my_items โ€” Browse Inventory
/view_my_items [item:<autocomplete>]

Browse your equipped gear and inventory items. With no item specified, shows an overview. With an item selected, shows full details.

/equip โ€” Equip Gear
/equip slot:<Main Hand|Off Hand|Armor> item:<autocomplete>

Equip a weapon, shield, or armor in the chosen slot. Item list dynamically filters based on slot selection. Shields in main hand work with the Dual Shieldbearer skill.

/unequip โ€” Unequip Gear
/unequip slot:<Main Hand|Off Hand|Armor|Accessory>

Remove an equipped item and move it to inventory. Main hand defaults back to Unarmed Strike; Armor defaults to Travel Garb.

/hire โ€” Hire Service/Transport
/hire service:<autocomplete>

Display a service or transport entry with its cost and whether you can afford it.

๐Ÿ“ˆ Progression & Knowledge
/level_up โ€” Level Up
/level_up class_id:<autocomplete>

Level up in a class. Increments character level, class level, +1 Max HP, +1 Max MP, fully restores vitals. Shows the class's free benefit on first level or as a reminder on subsequent levels.

/delevel โ€” Remove a Level
/delevel class_id:<autocomplete>

Reverse a level-up. Reduces level, -1 Max HP, -1 Max MP. If the class reaches 0 levels, it is removed from your class list entirely. Shows lost class benefit.

/acquire_skill โ€” Learn Skill
/acquire_skill class_id:<autocomplete> skill:<autocomplete>

Learn a skill. The skill autocomplete filters based on the selected class. Skill rank increments if already known.

/unacquire_skill โ€” Forget Skill
/unacquire_skill skill:<autocomplete>

Remove a skill from your character. Autocomplete shows only your owned skills.

/acquire_spell โ€” Learn Spell
/acquire_spell class_filter:<autocomplete> spell:<autocomplete>

Learn a spell. First pick the spell class (Elementalist/Entropist/Spiritist), then choose a specific spell.

/unacquire_spell โ€” Forget Spell
/unacquire_spell spell:<autocomplete>
/perform_skill โ€” Use a Skill
/perform_skill skill:<autocomplete>

Activate a skill. Auto-deducts MP if the skill has a cost_mp or cost_mp_per_sl field. Checks for sufficient MP before spending.

/perform_spell โ€” Cast a Spell
/perform_spell spell:<autocomplete>

Cast a spell. Parses the MP cost from the spell's cost field and auto-deducts. Shows insufficient MP warning if needed.

/validate_skill โ€” Skill Lookup
/validate_skill skill:<autocomplete>

Look up any skill. Shows description, max level, MP cost, which class teaches it, and whether your character owns it.

/my_skills / /my_spells โ€” View Owned

List all skills or spells your character has learned, with class source and rank/cost info.

๐Ÿ“š Compendium & Lookup
/view_all โ€” Browse Game Compendium
/view_all category:<autocomplete> [entry:<autocomplete>] [source_filter:<autocomplete>]

Browse the full game compendium including official and homebrew content. Categories: Items, Weapons, Armor, Shields, Skills, Spells, Classes, Heroic Skills, Actions, Rituals, Services, Transport, Statuses, Allies, NPCs, Arcana. The entry autocomplete filters based on category. Optional source filter narrows by supplement.

/perform_action โ€” Standard Action Lookup
/perform_action action:<autocomplete> [target:<text>]
/perform_ritual โ€” Ritual Lookup
/perform_ritual ritual:<autocomplete> [details:<text>]

View ritual requirements including attribute check, skill requirement, MP cost, and time.

/perform_service โ€” Service Lookup
/perform_service service:<autocomplete>

View a service's cost and whether you can afford it.

/status_info โ€” Status Effect Lookup
/status_info status:<autocomplete>

Detailed information about a status effect: duration, mechanical effects, and what it reduces.

๐Ÿค Bonds (pg 56โ€“58)

Bonds represent your character's relationships. Each bond has a target (person, place, or thing), up to 3 emotions, and a strength equal to the number of emotions. There are 6 emotions in 3 opposing pairs โ€” a bond can only have one emotion per pair.

Emotion Pairings:
๐Ÿคฉ Admiration โ†” ๐Ÿ˜” Inferiority
๐Ÿซก Loyalty โ†” ๐Ÿคจ Mistrust
๐Ÿฅฐ Affection โ†” ๐Ÿ˜ก Hatred

Max strength per bond: 3 (one emotion from each pair). Default max bonds: 6 per character.

All bond commands are grouped under /bond:

/bond view โ€” View All Bonds

Displays all bonds with their emotions, strength, and total count. Empty bonds show "No bonds yet."

/bond add โ€” Create Bond
/bond add target_name:<text> emotion:<choice>

Create a new bond. Requires the target name and an initial emotion. Fails if you've reached your bond limit or already have a bond with that target.

/bond emotion โ€” Add/Replace Emotion
/bond emotion target_name:<autocomplete> emotion:<choice>

Add an emotion to an existing bond. If the bond already has the opposing emotion from that pair (e.g., adding Admiration when Inferiority exists), it replaces the old one. Max 3 emotions per bond (one per pair).

/bond remove_emotion โ€” Remove Emotion
/bond remove_emotion target_name:<autocomplete> emotion:<choice>

Remove a specific emotion from a bond, lowering its strength.

/bond remove โ€” Erase Bond
/bond remove target_name:<autocomplete>

Completely remove a bond and all its emotions.

/bond invoke โ€” Invoke Bond
/bond invoke target_name:<autocomplete>

Display the bond's strength for Check bonuses. Per the rulebook, bond strength can add bonuses to checks related to the bond target.

/bond max โ€” Set Bond Limit
/bond max limit:<int>

Set the maximum number of bonds allowed (1โ€“999). Default is 6.

โฐ Clocks (pg 52)

Clocks track narrative progress using a 6-segment visual circle (per the rulebook, page 52). The clock renders as an image with filled/empty segments.

/clock clock โ€” Create Clock
/clock clock name:<text>

Creates a new 6-segment clock at 0/6. Posts an image with interactive buttons: Advance (+1), Retrocede (-1), and Delete. Each button updates the image in-place.

/clock clock_reshow โ€” Repost Clock
/clock clock_reshow name:<autocomplete>

Reposts a clock to the bottom of chat with fresh buttons. Autocomplete shows clocks you created in this guild.

/clock clock_list โ€” List Clocks
/clock clock_list

Shows all your active clocks in this server with their progress.

/clock clock_delete โ€” Delete Clock
/clock clock_delete name:<text>

Delete a clock by its name or ID (shown in /clock clock_list).

๐Ÿ”ง GM Tools GM Only

All commands in this section require a GM role: Gamemaster, Game Master, GM, Dungeonmaster, Dungeon Master, DM, Storyteller, Story Teller, ST, or Guild Leader. The bot owner bypasses all role checks.

๐Ÿ“Š Direct Modification
/gm mod โ€” Modify Stats & Equipment Overrides GM Only
/gm mod character:<autocomplete> stat:<choice> [value:<int>] [attr1:<text>] [attr2:<text>]

Set a stat on any character, or apply temporary equipment overrides to their equipped weapon or armor. Equipment overrides are stored on the character sheet copy of the item โ€” they reset automatically when the item is unequipped or swapped.

ParameterTypeDescription
character requiredAutocompleteTarget character in this guild
stat requiredChoiceSee stat list below
value optionalIntegerNew value (not needed for Weapon Accuracy Attrs)
attr1 optionalTextFirst accuracy attribute โ€” only for Weapon Accuracy Attrs: mig, dex, ins, or wlp
attr2 optionalTextSecond accuracy attribute โ€” only for Weapon Accuracy Attrs
๐Ÿ“Š Resource Stats (original)
Stat ChoiceEffect
Current HPSets vitals_current.hp
Current MPSets vitals_current.mp
Max HPSets vitals_max.hp
Max MPSets vitals_max.mp
ZenitSets Zenit directly
XPSets XP directly
Fabula PointsSets Fabula Points
Ultima PointsSets Ultima Points
๐Ÿ—ก๏ธ Weapon Overrides (main-hand)

These modify the currently equipped main-hand weapon only. If the weapon is unequipped or changed, all overrides reset to codex defaults. Unarmed Strike cannot be modified โ€” equip Iron Knuckles (or any weapon) first.

Stat ChoiceWhat It DoesExample
Weapon Damage BonusReplaces the weapon's damage_bonus value used in /attack/gm mod character:Ryu stat:Weapon Damage Bonus value:20 โ€” Sets the equipped weapon's damage bonus to 20
Weapon Accuracy BonusAdds a flat bonus to the accuracy roll total (after dice)/gm mod character:Ryu stat:Weapon Accuracy Bonus value:3 โ€” Adds +3 to every accuracy check
Weapon Accuracy AttrsChanges which two attributes the weapon uses for accuracy. Uses attr1 and attr2 params instead of value./gm mod character:Ryu stat:Weapon Accuracy Attrs attr1:mig attr2:mig โ€” Makes the weapon roll [MIG+MIG]
Full example โ€” Custom boss weapon:
1. /gm equip character:Dragon slot:Main Hand item:iron_knuckles
2. /gm mod character:Dragon stat:Weapon Damage Bonus value:18
3. /gm mod character:Dragon stat:Weapon Accuracy Attrs attr1:mig attr2:mig
4. /gm mod character:Dragon stat:Weapon Accuracy Bonus value:2
Now the Iron Knuckles deal HR+18 with [MIG+MIG]+2 accuracy.
๐Ÿ›ก๏ธ Armor Overrides

These modify the currently equipped armor only. If armor is unequipped or changed, overrides reset. An armor or clothing item must be equipped โ€” the command will error if the armor slot is empty.

Stat ChoiceWhat It DoesExample
Armor DefenseReplaces the armor's entire DEF contribution (overrides both fixed_def and def_mod)/gm mod character:Ryu stat:Armor Defense value:15 โ€” Armor now sets DEF to 15 (shields still stack on top)
Armor Magic DefenseReplaces the armor's entire MDEF contribution/gm mod character:Ryu stat:Armor Magic Defense value:8
Important: Defense overrides replace the armor's contribution entirely (they don't add to it). Shield bonuses from off-hand and main-hand still stack normally on top.
/gm add โ€” Give Resources
/gm add character_name:<autocomplete> resource:<choice> [amount:] [type_filter:] [item:]

Give items, Zenit, XP, or Fabula Points to any character. For items, use type_filter to narrow the autocomplete.

/gm remove โ€” Remove Resources
/gm remove character_name:<autocomplete> resource:<choice> [amount:] [item_name:]
/gm equip โ€” Force Equip
/gm equip character_name:<autocomplete> slot:<Main|Off|Armor> type_filter:<choice> item:<autocomplete>
/gm notes โ€” Edit Notes
/gm notes character_name:<autocomplete> notes:<text>

Overwrite a character's notes field entirely.

๐Ÿ“ˆ Progression
/gm level_up โ€” Force Level Up
/gm level_up character_name:<autocomplete> class_id:<autocomplete>
/gm delevel โ€” Remove Level
/gm delevel character_name:<autocomplete> class_id:<autocomplete>
/gm acquire_skill / /gm acquire_spell โ€” Grant Knowledge
/gm acquire_skill character_name:<autocomplete> skill:<autocomplete>
/gm acquire_spell character_name:<autocomplete> spell:<autocomplete>
๐Ÿ‘€ Status Effects
/gm inflict / /gm cleanse
/gm inflict character_name:<autocomplete> status:<autocomplete>
/gm cleanse character_name:<autocomplete> status:<autocomplete>

Inflict or remove status effects on any character across the guild.

๐Ÿ”ง Utility
/gm switch โ€” Switch Characters (Self or Other)
/gm switch switch_type:<PC|NPC|Bestiary> [source:<autocomplete>] character_name:<autocomplete> [target_player:<user>]

Three-tier filtered switching. Without a target_player, switches your own active character. With a target_player, force-switches theirs. Bestiary type pulls from the official NPC database with source filtering, creates a temporary roster entry, and auto-deletes the previous bestiary entry on switch.

/gm set_guild โ€” Fix Guild Binding
/gm set_guild character_name:<autocomplete>

Updates a character's guild_id to the current server. Fixes characters that were created in DMs or moved between servers.

/gm assign_ownership โ€” Clone Character
/gm assign_ownership character_name:<autocomplete> target_player:<user>

Copy a character to another player's roster.

โš”๏ธ Initiative Tracker GM Only

Full combat turn-order management with support for PCs, NPCs, Bestiary creatures, and custom entries.

/gm initiative โ€” Create Tracker
/gm initiative name:<text>

Creates a new combat tracker. After creation, use the setup buttons to add combatants (PCs, NPCs, Bestiary, Custom). Posts an interactive embed with turn tracking.

Tracker Buttons:

  • โฎ Previous Turn โ€” Move to the previous combatant
  • โญ Next Turn โ€” Advance to the next combatant
  • ๐Ÿ“ Edit Order โ€” Opens a modal to reorder combatants
  • ๐Ÿ”š End Combat โ€” End the encounter
  • ๐ŸŽญ Become โ€” Switch your active character to the current combatant (for GM control)
/gm initiative_list โ€” List Trackers

List all active trackers in this guild.

/gm initiative_recall โ€” Repost Tracker

Repost a tracker with fresh interactive buttons.

/gm initiative_edit โ€” Reorder Combatants

Opens a modal to reorder combatants by editing a numbered list.

/gm initiative_add โ€” Add Combatant Mid-Combat
/gm initiative_add tracker:<autocomplete> name:<autocomplete>
/gm initiative_drop โ€” Remove Combatant
/gm initiative_drop tracker:<autocomplete> name:<autocomplete>
/gm initiative_remove โ€” Delete Tracker

Permanently deletes a tracker.

๐ŸŽฒ GM Generators GM Only

Random generators from the GM Toolkit booklet. All use the /gm generator group prefix.

/gm generator encounter โ€” Encounter Template

Generate a balanced encounter template with recommended villain level and soldier/elite/champion counts based on party size and level.

/gm generator npc โ€” Quick NPC Stat Block

Generate a random NPC with level, attributes, skills, affinities, and equipment suggestions.

/gm generator quality โ€” Random Item Quality

Roll a d6 for a random item quality by origin (GM Toolkit pg 31โ€“35).

/gm generator gimmick โ€” Boss Gimmick

Roll d8+d10 for a random boss gimmick (GM Toolkit pg 22โ€“23).

/gm generator skill โ€” Random NPC Skill

Generate a random NPC combat skill (GM Toolkit pg 24โ€“25).

/gm generator danger โ€” Travel Danger

Roll a d20 for a random travel danger (GM Toolkit pg 26โ€“27).

/gm generator discovery โ€” Travel Discovery

Roll a d20 for a random travel discovery (GM Toolkit pg 28โ€“29).

/gm content roll_ally โ€” Random Unexpected Ally

Randomly select an ally from the codex (Load Game ReLoaded supplement). Includes guild homebrew allies.

๐Ÿบ Homebrew System โ€” Complete Guide

The homebrew system lets you create custom game content via JSON files. There are two scopes: GM Content (server-wide, stored in Supabase, visible to all players) and User Content (personal library, stored as a local file on the bot, only usable by you).

๐Ÿ”ง GM Content (/gm content) GM Only

Server-wide homebrew visible to all players in autocomplete, /view_all, and the charactermancer. Stored in Supabase (guild_content table). Core content always takes priority over homebrew on key collisions.

/gm content upload โ€” Upload Homebrew JSON
/gm content upload file:<attachment>

Upload a .json file. Entries are upserted โ€” existing entries with the same data_key are overwritten. The data_key is auto-generated from the item's name field (lowercased, spaces โ†’ underscores, hyphens โ†’ underscores, apostrophes removed).

/gm content list โ€” View Guild Content

Lists all entries in this guild's homebrew, grouped by category, with a count per category.

/gm content remove โ€” Delete Entry
/gm content remove data_key:<autocomplete>

Delete a single homebrew entry from the guild. Autocomplete shows all entries with their category.

/gm content roll_ally โ€” Roll Random Ally

Randomly selects from both official and guild-uploaded allies.

๐Ÿ“ฆ User Content (/user_content) Player

Personal homebrew library. Your uploads are saved as {user_id}_content.json on the bot's filesystem. Only you can see and use them.

/user_content help โ€” Show Instructions

Displays formatting instructions and category list.

/user_content upload โ€” Upload JSON
/user_content upload file:<attachment>

Upload your personal homebrew. Merges with existing content (overwrites by name).

/user_content view โ€” Browse Library

Browse all items in your personal library by category.

/user_content info โ€” View Entry Details
/user_content info item:<autocomplete>
/user_content remove โ€” Delete Entry
/user_content remove item:<autocomplete>
/user_content acquire โ€” Add to Character
/user_content acquire item:<autocomplete>

Copy an item from your personal library onto your active character's inventory or skill/spell list. Only works with acquirable categories (not NPCs, allies, services, etc.).

๐Ÿ“„ JSON File Format & Schema

Every homebrew file is a JSON object where keys are category names and values are arrays of item objects. Each item must have a "name" field.

{
  "category_name": [
    { "name": "Item Name", ...fields... },
    { "name": "Another Item", ...fields... }
  ],
  "another_category": [
    { "name": "More Content", ...fields... }
  ]
}
Valid Categories: weapons, armor, shields, items, services, transport, skills, spells, actions, classes, heroic_skills, arcana, npcs, allies
Acquirable (can be added to a character): weapons, armor, shields, items, skills, spells, heroic_skills, arcana, classes
Reference-only (viewable but not acquirable): npcs, allies, services, transport, actions

Keys starting with _ (e.g. "_meta") are ignored by the validator and can store notes.

๐Ÿ—ก๏ธ Weapon Schema & Examples

Required & Optional Fields

  • "name" string, required โ€” Display name
  • "type" string, required โ€” Must be "weapon"
  • "cost" integer โ€” Zenit price (enables /buy and /sell)
  • "hands" integer โ€” 1 (one-handed) or 2 (two-handed)
  • "category" string โ€” Weapon category (sword, axe, bow, spear, heavy, etc.)
  • "attr1" string โ€” First accuracy attribute: "might", "dexterity", "insight", or "willpower"
  • "attr2" string โ€” Second accuracy attribute
  • "damage_bonus" integer โ€” Flat damage added to High Roll
  • "damage_type" string โ€” "physical", "fire", "ice", "bolt", "dark", "light", "earth", "wind", "water", "poison"
  • "text" string โ€” Description / flavor text
{
  "weapons": [
    {
      "name": "Volcanic Cleaver",
      "type": "weapon",
      "cost": 400,
      "hands": 2,
      "category": "heavy",
      "attr1": "might",
      "attr2": "might",
      "damage_bonus": 14,
      "damage_type": "fire",
      "text": "A massive blade forged in magma. Martial (E). Two-handed."
    },
    {
      "name": "Trickster's Dagger",
      "type": "weapon",
      "cost": 200,
      "hands": 1,
      "category": "dagger",
      "attr1": "dexterity",
      "attr2": "insight",
      "damage_bonus": 6,
      "damage_type": "physical",
      "text": "A blade that shifts in moonlight. Accuracy: [DEX+INS]."
    }
  ]
}
๐Ÿ›ก๏ธ Armor & Shield Schema

Armor Fields

  • "name" string, required
  • "type" string, required โ€” "armor" or "clothing"
  • "cost" integer
  • "fixed_def" integer โ€” Sets DEF to this value (replaces base DEX). Mutually exclusive with def_mod.
  • "def_mod" integer โ€” Added to DEX for Defense (use if NOT using fixed_def).
  • "mdef_mod" integer โ€” Added to Magic Defense
  • "init" integer โ€” Initiative modifier (usually negative for heavy armor)
  • "text" string

Shield Fields

  • "type" string, required โ€” Must be "shield"
  • "def_mod" integer โ€” Added to Defense
  • "mdef_mod" integer โ€” Added to Magic Defense
  • "init" integer
{
  "armor": [
    {
      "name": "Wyrmscale Plate",
      "type": "armor",
      "cost": 350,
      "fixed_def": 12,
      "mdef_mod": 1,
      "init": -2,
      "text": "Heavy armor crafted from dragon scales. Martial (E)."
    }
  ],
  "shields": [
    {
      "name": "Aegis of Dawn",
      "type": "shield",
      "cost": 250,
      "def_mod": 2,
      "mdef_mod": 3,
      "init": 0,
      "text": "A radiant shield that repels dark magic."
    }
  ]
}
โšก Skill Schema
  • "name" string, required
  • "max_level" integer โ€” Maximum skill level (SL). Default 1.
  • "text" string โ€” Skill description. Use [SL] for skill-level scaling.
  • "cost_mp" integer โ€” Fixed MP cost (auto-deducted on /perform_skill)
  • "cost_mp_per_sl" integer โ€” MP cost multiplied by SL (e.g. 5 ร— SL)
{
  "skills": [
    {
      "name": "Dragon's Breath",
      "max_level": 4,
      "text": "Deal [SL x 5] fire damage to all enemies. Cost: [SL x 10] MP.",
      "cost_mp_per_sl": 10
    },
    {
      "name": "Iron Wall",
      "max_level": 1,
      "text": "Until end of scene, your Defense increases by 2.",
      "cost_mp": 5
    }
  ]
}
โœจ Spell Schema
  • "name" string, required
  • "class" string โ€” Spell class: "Elementalist", "Entropist", or "Spiritist"
  • "cost" string โ€” MP cost (e.g. "10 MP", "5 x T MP")
  • "attr" array[2] โ€” Accuracy check attributes, e.g. ["ins","wlp"]
  • "target" string โ€” Target description (e.g. "One creature (M.DEF)")
  • "text" string
{
  "spells": [
    {
      "name": "Starburst",
      "class": "Elementalist",
      "cost": "20 MP",
      "attr": ["ins", "wlp"],
      "target": "Up to three creatures (M.DEF)",
      "text": "Deal [HR + 20] Light damage. Opportunity: Targets suffer Dazed."
    }
  ]
}
๐ŸŽ“ Class Schema
  • "name" string, required
  • "free-benefit" string โ€” Benefit gained on first level. Parsed for "+5 to Max HP/MP" automatically.
  • "skills" array of strings โ€” Skill IDs available to this class. Must match keys in the skills category.
{
  "classes": [
    {
      "name": "Beastmaster",
      "free-benefit": "Permanently increase your maximum Hit Points or Mind Points by 5 (your choice).",
      "skills": [
        "wild_companion",
        "pack_tactics",
        "feral_instinct",
        "beast_form",
        "natures_wrath"
      ]
    }
  ]
}
Important: The skill IDs in the "skills" array must match the data_key of skills in the database. If you're creating a homebrew class, upload the skills first, then reference them by their auto-generated key (name lowercased, spacesโ†’underscores).
๐Ÿงช Consumable & Item Schema
  • "name" string, required
  • "type" string โ€” "consumable", "gadget", "accessory", or "item"
  • "cost" integer โ€” Zenit price
  • "cost_ip" integer โ€” IP cost to use (auto-deducted by /use)
  • "text" string
{
  "items": [
    {
      "name": "Starlight Draught",
      "type": "consumable",
      "cost": 100,
      "cost_ip": 2,
      "text": "Recover 40 HP and cure Poisoned."
    },
    {
      "name": "Ring of Shadows",
      "type": "accessory",
      "cost": 500,
      "text": "Grants +2 to M.DEF while equipped."
    }
  ]
}
๐Ÿ‘น NPC & Ally Schema

NPC Fields

  • "name" string, required
  • "level" integer
  • "source" string โ€” Supplement name (used for filtering in /gm switch)
  • "text" string

Ally Fields (Unexpected Allies)

  • "name" string, required
  • "text" string โ€” The ally's effect when rolled
  • "source" string
{
  "npcs": [
    {
      "name": "Shadow Drake",
      "level": 20,
      "source": "Homebrew Campaign",
      "text": "A drake wreathed in darkness. Immune to Dark damage."
    }
  ],
  "allies": [
    {
      "name": "The Wandering Sage",
      "text": "An ancient scholar appears! All allies recover 20 MP and gain +2 to their next Insight check.",
      "source": "Homebrew Campaign"
    }
  ]
}
๐Ÿช Service & Transport Schema
{
  "services": [
    {
      "name": "Dragon Taxi",
      "cost": 200,
      "text": "A tamed wyvern flies you to any city in the region. Travel time: 1 day."
    }
  ],
  "transport": [
    {
      "name": "Sand Skimmer",
      "cost": 150,
      "text": "A desert hovercraft. Seats 4. Speed: Fast. Fuel: Wind crystals."
    }
  ]
}
๐Ÿ“‹ Complete Multi-Category Example File

A single file can contain multiple categories. This example shows a complete homebrew pack:

{
  "_meta": "Desert Expansion Pack v1.0 โ€” Custom content for the Sandstone campaign.",

  "weapons": [
    {
      "name": "Scorpion Stinger",
      "type": "weapon",
      "cost": 300,
      "hands": 1,
      "category": "dagger",
      "attr1": "dexterity",
      "attr2": "insight",
      "damage_bonus": 8,
      "damage_type": "poison",
      "text": "A curved blade coated in scorpion venom. Accuracy: [DEX+INS]."
    }
  ],

  "armor": [
    {
      "name": "Sandstone Mail",
      "type": "armor",
      "cost": 200,
      "fixed_def": 10,
      "mdef_mod": 1,
      "init": -1,
      "text": "Light desert armor. Martial (E). DEF is 10."
    }
  ],

  "skills": [
    {
      "name": "Desert Mirage",
      "max_level": 3,
      "text": "When targeted by an attack, you may spend [SL x 5] MP to force a reroll.",
      "cost_mp_per_sl": 5
    }
  ],

  "spells": [
    {
      "name": "Sandstorm",
      "class": "Elementalist",
      "cost": "15 MP",
      "attr": ["ins", "wlp"],
      "target": "All enemies (M.DEF)",
      "text": "Deal [HR + 10] Earth damage. Opportunity: Targets suffer Slow."
    }
  ],

  "classes": [
    {
      "name": "Sand Dancer",
      "free-benefit": "Permanently increase your maximum Hit Points or Mind Points by 5 (your choice).",
      "skills": ["desert_mirage", "sand_step", "dune_walker", "heat_haze", "oasis_blessing"]
    }
  ],

  "allies": [
    {
      "name": "The Sand Djinn",
      "text": "A benevolent djinn grants a wish! One ally fully recovers HP and MP.",
      "source": "Desert Expansion"
    }
  ],

  "items": [
    {
      "name": "Cactus Water",
      "type": "consumable",
      "cost": 30,
      "cost_ip": 1,
      "text": "Recover 20 HP. Refreshing desert hydration."
    }
  ]
}
๐Ÿงช Variants & Applause

Playtest variant rules and skills from the upcoming Strategy Guide. Variant rules are table-wide (GM enables them for the whole server). Variant skills are per-character choices that replace existing class skills.

๐Ÿ“‹ Variant Management
/variant enable โ€” Enable Variant Rule GM Only
/variant enable rule:<autocomplete>

Enable a variant rule for this server. All players are affected. Rules include Simplified Initiative, Critical Damage Option, Combat Rows, Applause Points, and more.

ParameterTypeDescription
rule requiredAutocompleteSelect from all available variant rules in the database
/variant disable โ€” Disable Variant Rule GM Only
/variant disable rule:<autocomplete>

Disable a previously enabled variant rule. Autocomplete shows only currently enabled rules for this server.

/variant list โ€” View Configuration Player
/variant list

Shows all enabled variant rules for the server, your active character's adopted variant skills, and your current Applause Points (if that rule is enabled).

/variant info โ€” Variant Details Player
/variant info variant:<text>

View the full mechanical description of any variant rule or variant skill. Shows requirements, what it replaces, class restrictions, and the complete rules text.

/variant choose โ€” Adopt Variant Skill Player
/variant choose skill:<autocomplete>

Adopt a variant skill for your active character. Variant skills replace existing class skills (e.g., Spell Buffet replaces Spell Mimic). Your character can have multiple variant skills active.

ParameterTypeDescription
skill requiredAutocompleteShows all variant skills with what they replace
Available Variant Skills: Spell Buffet (Chimerist), Agile Defender (Guardian), Brave Brawler (Fury), Meteor Slam (Fury), Second Slicer (Rogue), Variant Theriomorphosis (Mutant), Branching Magitech (Tinkerer), Variant Arcanist, Variant Revelation (Arcanist).
/variant remove_skill โ€” Remove Variant Skill Player
/variant remove_skill skill:<text>

Remove a variant skill from your active character, reverting to the standard version.

๐Ÿ‘ Applause Points

An optional rule where players reward each other for memorable moments. Each player starts a session with 1 Applause Point to give away. Received points can be spent in place of Fabula Points (but do not count as spending FP and do not generate XP).

Requires: The Applause Points variant rule must be enabled by a GM via /variant enable applause_points.
/applause give โ€” Give Applause Player
/applause give player:<autocomplete>

Give your starting Applause Point to another player. You can only give once per session (until the GM resets). The recipient's character gains +1 Applause Point.

ParameterTypeDescription
player requiredAutocompleteSelect a player in the server (excludes yourself and bots)
/applause spend โ€” Spend Applause Point Player
/applause spend

Spend one of your received Applause Points. Functions like spending a Fabula Point but does not count as spending FP and does not generate XP at session end. You cannot spend your own starting point, only points received from others.

/applause check โ€” View Points Player
/applause check

View your current received Applause Points and whether you've already given away your starting point this session. Ephemeral (only you can see).

/applause reset โ€” Reset for New Session GM Only
/applause reset

Reset all Applause Points across every character in the server. Clears all received points and restores everyone's starting point. Use at the beginning of each new session.