The Modder's Manual
Everything the editor does, explained in plain language. New here? Read Quick Start, then come back to the rest when you need it. You can also replay the interactive walkthrough any time with the ? Tour button in the editor's top bar.
Quick Start
This tool builds a playable custom character for Slay the Spire 2 — their card pool, relics, custom statuses, and art — and compiles it into a mod you drop into the game. No coding required. Your work auto-saves to your browser as you go.
The flow, in 8 steps
- Character tab — name, HP, gold, energy per turn, and the character color (it tints every card frame in game).
- Cards — build your pool. Click a card in the sidebar to edit it; add effect blocks to define what it does.
- Upgrades — for each card, decide what its + version does at rest sites.
- Token cards — cards created mid-combat (like Shivs). Create these before referencing them from effects.
- Mechanics — your own buffs/debuffs (custom statuses). Same rule: create first, reference after.
- Relics — passive items with a trigger and effects. You need at least one.
- Balance — optional sanity check of your numbers.
- Export — fix any pre-flight issues, then Compile & Download and install (see Export & Install).
Minimum requirements
A mod must have at least 10 cards and 1 relic before the export buttons unlock. A new project starts with Strike, Defend, and 8 blank “New Card” placeholders — replace the placeholders with real cards.
AI generation vs. building by hand
The ✦ Generate tab can create an entire character — concept, cards, mechanics, and art — from a short description, which you then refine by hand. Or skip it entirely and build everything yourself. Both paths end at the same Export tab.
Cards
Types, rarities, targeting
- Attack — deals damage; red frame. Most damage effects live here.
- Skill — everything that isn't an attack or a power — Block, draw, debuffs; blue frame.
- Power — a permanent effect for the rest of the combat; green frame. Power cards can use start-of-turn / end-of-turn timing on their effects.
Rarity controls how often a card shows up in rewards: Basic (starter deck only, never in rewards), Common, Uncommon, Rare, and Ancient — see the rarity rules before using Ancient.
Target decides who the card hits: Self, AnyEnemy (player picks one), AllEnemies, RandomEnemy, AnyAlly, or AllAllies (ally targets matter in co-op).
Effect blocks
A card is a stack of effect blocks, executed top to bottom when the card is played. Each block becomes real game code on export. The picker groups them by category:
- Damage — single hits, multi-hits, hit-all, random target, scaling damage.
- Defense — gain Block, heal, lose HP (for high-risk designs).
- Power — apply buffs/debuffs — vanilla ones like Strength, Weak, Poison, or your own custom statuses.
- Card — draw, discard, exhaust, upgrade cards mid-combat, and add token cards to hand / discard / draw pile.
- Utility — energy, gold, max HP, stances, Mantra, and other odds and ends.
- Orb — channel and evoke orbs (give your character orb slots in the Character tab first).
Conditions
Every effect block has a condition dropdown, defaulting to “Always (no condition)”. Pick a condition and the effect only fires when it's true — e.g. target has Poison, player HP below N, last card played was an Attack, in Wrath stance, enemy intends to attack. Some conditions take a number or a custom status to check for. This is how you build “deal 7 damage; deal 14 instead if...” style cards: one unconditional block plus one conditional block.
X-cost and other advanced options
- X-Cost — the card costs all your remaining energy and its effects scale with the amount spent (like Whirlwind).
- Playability condition — the card can only be played while a requirement holds — hand is all Attacks (Clash), exhaust pile is large enough, or no cards discarded this turn.
- Self-scaling — the card permanently grows (+N damage or Block) every time you play it — the Rampage pattern.
Keywords
- Exhaust — the card is removed for the rest of combat after being played once.
- Ethereal — if it's still in your hand at end of turn, it exhausts.
- Innate — always in your opening hand.
- Retain — not discarded at end of turn.
Card text
You never have to write card text: the description is auto-generated from your effect blocks (shown in italics under the effects list and on the card preview). If the auto text reads awkwardly — long conditional chains are the usual culprit — type your own in Description Override. Numbers in an override are up to you to keep in sync with the actual effect values.
Upgrades
At rest sites the player can upgrade a card once, turning it into its + version. The Upgrade section on each card decides what that means:
- Cost Reduction — the + version costs this much less energy (a 1-cost card with reduction 1 becomes free).
- +Damage / +Block / +Heal / +Draw / +Energy on Upgrade — one input appears per stat the card actually uses; the + version adds that amount. Two damage effects on one card share a single damage value, so one input upgrades both.
- +Stacks on Upgrade — for cards applying vanilla statuses (Strength, Weak, Poison...), the + version applies this many more stacks.
- Remove Exhaust on Upgrade — the + version no longer exhausts (shown only on Exhaust cards).
- Add Retain on Upgrade — the + version gains Retain.
Token Cards & Custom Statuses
Token cards
A token card is a card that other cards create during combat — think Shivs. Tokens never appear in card rewards or shops; they only exist when an effect puts them in your hand, discard, or draw pile. Create them under Token Cards in the sidebar; they get the same editor as normal cards (effects, keywords, art, upgrades).
Custom statuses (Mechanics tab)
A custom status is your own buff or debuff — a named icon with stacks that does something on a trigger (after a card is played, when damage is taken, at turn end...). Define them in the Mechanics tab, then apply them from cards or relics with the “apply custom status” effect.
Relics
A relic is a passive item: pick one trigger, attach effect blocks, and the effects fire every time the trigger happens. Rarity (Starter, Common, Uncommon, Rare, Shop, Event) controls how the relic is found in a run. Your character begins every run with the Starter relic; if your configured starting relic is ever deleted, the first relic in your list is used instead.
Triggers
| Trigger | Fires |
|---|---|
onPickup | once, the moment the player obtains the relic. |
combatStart | at the start of every combat (the classic starter-relic trigger). |
combatEnd | when a combat is won. |
turnStart | at the start of each of your turns. |
turnEnd | at the end of each of your turns. |
onCardPlay | every time you play a card (powerful — keep the effect small). |
onDamageDealt | whenever you deal damage to an enemy. |
onDamageTaken | whenever you take damage. |
onBlock | whenever you gain Block. |
onHeal | whenever you heal. |
onRest | when you rest at a campfire. |
Images
You can upload your own art anywhere the editor offers it, or let the AI art generator fill the gaps. Uploads are automatically resized to the target dimensions, so close-enough source images are fine — but the aspect ratio should match or things get cropped.
| Asset | Size | Transparency | Where it shows up |
|---|---|---|---|
| Card art | 500 × 375 PNG/JPG | no | the picture in the top half of each card. |
| Relic icon | 256 × 256 PNG | supported | relic bar at the top of the screen, reward and shop screens. |
| Status (mechanic) icon | 256 × 256 PNG | supported | the buff/debuff icon row under a creature. |
| Character portrait | 256 × 256 PNG/JPG | no | character select screen and run UI. |
| Combat sprite | 512 × 512 PNG | required | your character standing in combat. |
| Pose images (5) | 512 × 512 PNG | required | idle / attack / cast / hit / dead poses, for the basic animation mode. |
| Spritesheets | any size, 1–60 frames | required | full animation mode; one sheet per pose plus a frame count, played at 1–30 FPS. |
Shop & Rarity Rules
The Rare-card minimum
The in-game merchant stocks five cards from your pool, typed Attack / Attack / Skill / Skill / Power, and each slot can roll Rare. If a slot rolls Rare and your pool has no matching Rare card of that type, entering the shop crashes the run. A crash-proof pool therefore needs at least:
| Card type | Rare cards needed |
|---|---|
| Attack | 2 |
| Skill | 2 |
| Power | 1 |
The pre-flight check warns you when you're short, and the compiler auto-fills the gap with generic filler cards (Honed Edge, Reckless Cleave, Bulwark, Second Wind, Inner Fire) so your mod never bricks a run — but filler is boring. Replace it with your own Rare cards.
Ancient cards
Export & Install
Three different downloads
- Export .json — your project file — a save you can back up, share, or re-import later. Not a mod. Your browser also auto-saves, but a .json export survives cleared browser data.
- Download C# Source — the generated code as one combined .cs file, for the curious or for compiling by hand. Most people don't need it.
- Compile & Download .zip — the real thing: sends your project to the compile service and returns a ready-to-install mod.
Pre-flight checks
Above the export buttons, the Export tab lists everything that would break or degrade your mod before any compiling happens: empty or non-English names, effects pointing at deleted statuses or token cards, a missing starting relic, and the Rare-card shop minimums. Red errors block compiling until fixed; gold warnings are handled automatically but worth reading.
Installing the mod
- Extract the downloaded
.zip— it contains two folders: your mod andBaseLib. - Copy both folders into your STS2 mods directory:Windows: Steam\steamapps\common\Slay the Spire 2\mods\Mac: ~/Library/Application Support/Steam/steamapps/common/Slay the Spire 2/mods/
- Launch STS2, open Mods in the main menu, enable both
BaseLiband your mod, then restart the game. - Your character appears on the character select screen.
BaseLib is required. It's the modding library your mod is built on; without it enabled, your mod won't load. If BaseLib is already installed from another mod, you can skip copying that folder.
If the compile fails
The Export tab translates compiler errors into plain language and names the card or relic responsible. The usual suspects:
| Error | What it means |
|---|---|
CS0101 | two items produce the same internal name — rename one of them. |
CS0246 | an effect references a custom status or token card that was deleted — re-link or remove the effect. |
CS1002 / CS1513 | a name or description contains characters that broke the generated code — usually quotes or unusual symbols. |
CS1503 / CS1061 | a bug in the mod creator itself; it is reported automatically — try removing the most recently added effect. |