← Back to editor

Guide

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

  1. Character tab — name, HP, gold, energy per turn, and the character color (it tints every card frame in game).
  2. Cards — build your pool. Click a card in the sidebar to edit it; add effect blocks to define what it does.
  3. Upgrades — for each card, decide what its + version does at rest sites.
  4. Token cards — cards created mid-combat (like Shivs). Create these before referencing them from effects.
  5. Mechanics — your own buffs/debuffs (custom statuses). Same rule: create first, reference after.
  6. Relics — passive items with a trigger and effects. You need at least one.
  7. Balance — optional sanity check of your numbers.
  8. 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 just Strike, Defend, and a starter relic — add at least 8 more cards of your own to reach the minimum.

Cards

Types, rarities, targeting

  • Attackdeals damage; red frame. Most damage effects live here.
  • Skilleverything that isn't an attack or a power — Block, draw, debuffs; blue frame.
  • Powera 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:

  • Damagesingle hits, multi-hits, hit-all, random target, scaling damage.
  • Defensegain Block, heal, lose HP (for high-risk designs).
  • Powerapply buffs/debuffs — vanilla ones like Strength, Weak, Poison, or your own custom statuses.
  • Carddraw, discard, exhaust, upgrade cards mid-combat, and add token cards to hand / discard / draw pile.
  • Utilityenergy, gold, max HP, stances, Mantra, and other odds and ends.
  • Orbchannel 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.

A conditional effect can also carry an Otherwise branch — effects that run only when the condition is false. That's the clean way to build “deal 7 damage; deal 14 instead if the enemy is Poisoned” cards. Otherwise-effects can have a condition of their own (one extra level), so “if A do X, otherwise if B do Y, otherwise Z” works too.

X-cost and other advanced options

  • X-Costthe card costs all your remaining energy and its effects scale with the amount spent (like Whirlwind).
  • Playability conditionthe 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-scalingthe card permanently grows (+N damage or Block) every time you play it — the Rampage pattern.

Keywords

  • Exhaustthe card is removed for the rest of combat after being played once.
  • Etherealif it's still in your hand at end of turn, it exhausts.
  • Innatealways in your opening hand.
  • Retainnot discarded at end of turn.
  • Slywhen discarded, the card plays itself automatically.
  • Eternalthe card can never be removed from your deck.

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. If an overridden card also upgrades, fill in the upgraded description too — a plain override freezes the shown numbers, so the + version needs its own text.

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 Reductionthe + version costs this much less energy (a 1-cost card with reduction 1 becomes free).
  • +Damage / +Block / +Heal / +Draw / +Energy on Upgradeone 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 Upgradefor cards applying vanilla statuses (Strength, Weak, Poison...), the + version applies this many more stacks.
  • Remove Exhaust on Upgradethe + version no longer exhausts (shown only on Exhaust cards).
  • Add Retain on Upgradethe + version gains Retain.
Custom status stacks can't be upgraded yet — only vanilla statuses and the numeric stats above. Leave everything at 0 and the upgrade does nothing, which players will notice; give every card some upgrade.

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.

Besides triggers, a status can have Passive Effects — always-on stat changes while it's active, the way Strength or Barricade work: extra attack damage, cheaper cards, more draw, keeping your hand or Block at end of turn, immunity rules, and dozens more. Most scale with the status's stack count.

Reskinning a base mechanic. Want Poison, but called Ether with your own icon? In the Mechanics tab open Templates and pick Poison-style or Regen-style — they rebuild the exact vanilla behavior (lose or heal HP equal to stacks each turn, fading by 1). Then just rename it and upload an icon. The behavior stays; only the skin changes.

Stances

Stances are the Watcher's Wrath/Calm/Divinity system — you are in at most one at a time, and it changes how much damage you deal and take. The Stances panel at the top of the Mechanics tab lets you build your own: set Damage Dealt % and Damage Taken % (200 = double like Wrath, 50 = half), energy gained on enter or exit, and whether it auto-exits at the start of your turn (the Divinity pattern). Give it a name and icon, then enter it with the Enter Custom Stance effect on a card, relic, or status — and branch card logic on it with the In custom stance condition. The Exit Stance effect leaves whatever stance you're in.

Stack-scaled effects and streaks

Inside a status's triggers, several effects can scale with the status's own stack count. “× Stacks” checkboxes on Apply Status and Lose HP multiply the amount by the current stacks, and there are dedicated stack-scaled Damage and Block effects. The “Change Own Stacks” effect lets a status modify itself — a negative value is the classic poison decrement (the status disappears at zero).

For example, a poison-style debuff is: trigger at end of turn, effect Lose HP with × Stacks checked, then Change Own Stacks: -1. Whoever carries it loses HP equal to its stacks each turn, then it ticks down by one.

The after a card is played trigger also supports “In a Row” — fire only on every Nth consecutive matching play (playing a non-matching card resets the count). Combined with the card-type filter: “whenever you play two Attacks in a row”. Relics get the same pair of controls on their onCardPlay trigger, and their streak count resets at the start of each combat.

Stat manipulation, gold costs, and potions

Apply Status reaches every base-game status — search the dropdown for Vigor, Strength, Ritual, and the rest. Check “Reduce instead” to apply negative stacks: that's how you make an enemy lose Strength, exactly like the game's own debuff cards. Temporary this-turn-only versions exist as their own statuses (Coordinate for Strength, Anticipate for Dexterity, Dark Shackles for enemy Strength).

Cards that spend gold as a cost: add the Lose Gold effect next to the attack's damage. And “Obtain Random Potion” is the Alchemize effect — it rolls a random potion using the game's own generator (nothing happens if your potion slots are full).

Create first, reference second. The effect dropdowns only list token cards and statuses that already exist — this ordering is the single most common point of confusion. And if you delete a token or status that an effect still points at, the Export tab's pre-flight check flags it as an error and blocks compiling until you fix or remove the effect. In the effect picker, everything that references your own creations lives in the gold Your Custom Mechanics section at the bottom; the sections above it mirror base-game mechanics.

Relics

A relic is a passive item: pick one trigger, attach effect blocks, and the effects fire every time the trigger happens. Relics can also carry Passive Effects — always-on stat changes with no trigger at all (extra draw every turn, cheaper cards, more gold from fights, and so on). 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

TriggerFires
onPickuponce, the moment the player obtains the relic.
combatStartat the start of every combat (the classic starter-relic trigger).
combatEndwhen a combat is won.
turnStartat the start of each of your turns.
turnEndat the end of each of your turns.
onCardPlayevery time you play a card (powerful — keep the effect small).
onDamageDealtwhenever you deal damage to an enemy.
onDamageTakenwhenever you take damage.
onBlockwhenever you gain Block.
onHealwhenever you heal.
onRestwhen you rest at a campfire.

Images

You can upload your own art anywhere the editor offers it. 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.

AssetSizeTransparencyWhere it shows up
Card art500 × 375 PNG/JPGnothe picture in the top half of each card.
Relic icon256 × 256 PNGsupportedrelic bar at the top of the screen, reward and shop screens.
Status (mechanic) icon256 × 256 PNGsupportedthe buff/debuff icon row under a creature.
Character portrait256 × 256 PNG/JPGnocharacter select screen and run UI — the default art for every character slot.
HUD icon (optional)88 × 88 PNGsupportedthe small combat icon at the top-left; falls back to the portrait if not set.
Select screen art (optional)132 × 195 PNG/JPGnothe tall character-select button image; falls back to the portrait if not set.
Energy counter layers (5)256 × 256 PNGrequiredcustom energy orb in combat, built from 5 stacked layers (2 and 3 rotate); all 5 or none.
Combat sprite512 × 512 PNGrequiredyour character standing in combat.
Pose images (5)512 × 512 PNGrequiredidle / attack / cast / hit / dead poses, for the basic animation mode.
Spritesheetsany size, 1–60 framesrequiredfull animation mode; one sheet per pose plus a frame count, played at 1–30 FPS.
JPG warning: JPG files have no transparency — a combat sprite or icon uploaded as JPG gets a solid background box around it in game. Everything is re-encoded as PNG when the mod is built, but that can't invent transparency that the source image never had. For sprites, poses, and icons, always start from a transparent PNG.

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 typeRare cards needed
Attack2
Skill2
Power1

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

Ancient cards never appear in shops or card rewards — the game reserves that rarity for special Ancient encounters, which the mod creator doesn't generate. An Ancient card is only obtainable if you put it in the starting deck (Character tab → Starting Deck). The pre-flight check warns you about any Ancient card that isn't a starter. If you want it in rewards, use Rare instead.

Export & Install

Three different downloads

  • Export .jsonyour 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# Sourcethe generated code as one combined .cs file, for the curious or for compiling by hand. Most people don't need it.
  • Compile & Download .zipthe 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

  1. Extract the downloaded .zip — it contains two folders: your mod and BaseLib.
  2. 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/
  3. Launch STS2, open Mods in the main menu, enable both BaseLib and your mod, then restart the game.
  4. 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:

ErrorWhat it means
CS0101two items produce the same internal name — rename one of them.
CS0246an effect references a custom status or token card that was deleted — re-link or remove the effect.
CS1002 / CS1513a name or description contains characters that broke the generated code — usually quotes or unusual symbols.
CS1503 / CS1061a bug in the mod creator itself; it is reported automatically — try removing the most recently added effect.