๐Ÿ‘ค 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 supporting standard notation and attribute names.

ParameterTypeDescription
expression requiredTextDice expression (see examples below)
Examples:
/roll expression:2d6+5 โ€” Roll 2d6 and add 5
/roll expression:might+dex โ€” Roll using your character's MIG and DEX dice
/roll expression:1d20 โ€” Classic d20 roll
/roll expression:ins+wlp+3 โ€” Attribute dice plus a flat bonus
Attribute Aliases: might/mig, dexterity/dex, insight/ins/int, willpower/wlp/will โ€” all resolve to your character's die size for that attribute.
/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

Quick commands for adjusting HP, MP, IP, Zenit, and XP. Each uses Add (+) or Sub (-) mode.

/hp โ€” Modify Hit Points
/hp mode:<Add|Sub> value:<int>

Add or subtract HP. Clamped to 0โ€“Max. Triggers crisis warning when below 50% and incapacitation warning at 0.

/mp โ€” Modify Mind Points
/mp mode:<Add|Sub> value:<int>
/ip โ€” Modify Inventory Points
/ip mode:<Add|Sub> value:<int>
/zenit โ€” Modify Zenit
/zenit mode:<Add|Sub> value:<int>
/xp โ€” Modify Experience
/xp mode:<Add|Sub> value:<int>
/rest โ€” Full Recovery
/rest

Restores HP, MP, and IP to their maximum values. Use during travel rest phases.

/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_main โ€” Equip Main Hand
/equip_main item:<autocomplete>

Equip a weapon or shield in your main hand. Shields here work with the Dual Shieldbearer skill.

/equip_off โ€” Equip Off Hand
/equip_off item:<autocomplete>

Equip a weapon or shield in your off hand.

/equip_armor โ€” Equip Armor
/equip_armor item:<autocomplete>

Equip armor or clothing in your armor slot.

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

๐Ÿ”ง 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.

โฐ GM Clocks (pg 52) GM Only

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.

/gm_clock clock โ€” Create Clock
/gm_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.

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

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

/gm_clock clock_list โ€” List Clocks
/gm_clock clock_list

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

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

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

โš”๏ธ 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."
    }
  ]
}