← Back to editor

What's New

What's New

Newest first. Nearly all of it comes from people building characters and telling us what broke or what was missing.

1.4.6

2026-11-03

Statuses by name in formulas, and pet Strength that follows a status's stacks. Re-export existing mods to receive generated game changes.

Added

  • **Formulas can name statuses: self.Burn + 2 * target.Mark.** self.Name is the status's stacks on you (on a status, on whoever has it), target.Name on the target. Use the name without spaces. Your own statuses and the game's both work, and one formula can name as many as you like. Card and status text can show them too, like {target.Mark}. The formula box suggests them as you type.
  • Pet Attacks Deal More Damage: "Rise and fall with this status's stacks". On a status's own effects, the pet's Strength from that status always equals the amount × its stacks. It goes down when a stack falls off, and it all goes when the status is removed or its holder dies. Acid on two enemies adds up.

Fixed

  • On "Whenever this status's stacks change", Pet Attacks Deal More Damage gave Strength on a loss too, and the pet kept it after the status was gone. Preflight now points to the new option.
  • Copying a card to another character brings the statuses its formulas and text name.
  • A formula naming a status that is left out of the mod is now an error, instead of quietly becoming 0.

1.4.5

2026-11-02

Channel a Random Orb from your own list, a fight goal for not playing a type of card, and a cost on the card a transform makes. Re-export existing mods to receive generated game changes.

Added

  • Channel a Random Orb from a list. Set "Pick from" to "list" and choose the orbs, your own and the game's. A starter relic can channel one of two of your five orbs. The card text names them ("Hush or Frost").
  • Fight goal: won without playing a card of a type (Attack, Skill, Power, Status or Curse). On "When you win a fight" it pays out only if none was played; on "When a fight goal fails" it fires as the first one is played.
  • Transforms can shape the new card. The three transform effects (in hand, this card, all cards named) take the same options as the make-a-card effects: set or change its cost (this turn, this fight, until played), upgrade it, give or take away keywords. The text says "It costs 0 this combat."
  • "If you do" after a transform reaches the card it made, so "transform a card, then upgrade it" upgrades the new one.

Fixed

  • The enemy-intent patch for statuses that change hits can no longer blank or stall an intent if anything in it fails: it leaves the game's own intent and writes the reason to the log once.
  • An orb deleted from your project is left out of a list's card text, and preflight says when some of the list no longer exists.

Notes

  • Transform All Cards Named changes the deck's cards, but its cost and upgrade options reach only the copies in a fight. Preflight warns about this.

1.4.4

2026-10-31

Enemy attacks that hit more or fewer times (or twice as often), intents that show it, and status art for the Move pose and your character's extra animations. Re-export existing mods to receive generated game changes.

Added

  • Attacks hit N times as often (2 = double). A new passive for statuses and relics. Put it on a status, apply it to an enemy, and its attacks hit twice as often. Apply it as Temporary for "until the end of its turn".
  • "Attacks hit N more times" can be fewer. A negative number takes hits away, never below one.
  • Enemy intents show the changed hits. A 5x3 attack under +1 hit reads 5x4, and a single attack that gains a hit reads 6x2.
  • Status and stance art for the Move pose, played when your character moves to an enemy (it needs its own Move pose).
  • Status art for your character's extra animations. While the status is on, a card that plays Dash plays the status's Dash instead.

Fixed

  • A status that adds or takes away hits now works on your own enemies' attacks aimed at one random player or the other players.
  • A large animation sheet on a card, or an extra animation, is no longer shrunk to a single small image in the export.
  • Removing a status's or stance's still pose (or idle) stays removed after a reload.
  • Deleting one of your character's extra animations removes the statuses' art for it too.
  • A large negative "more hits" no longer takes an attack to 0 hits; the least is one.

1.4.3

2026-10-31

Upgrade text that greens only what changed, every status explained on a card, statuses on enemies that fire late in your turn, an exact card for Transform All Cards Named, and Summon Pet by stacks. Re-export existing mods to receive generated game changes.

Added

  • Transform All Cards Named can match one exact card of yours (or a token). A name match also catches every card whose name contains the word.
  • Summon Pet has "× Stacks". In a status's trigger the pet's HP is multiplied by the status's stacks, so playing Persistence twice summons twice as much. On a relic, "Repeat per relic charge" still summons once per charge.

Fixed

  • The upgrade preview greens each change on its own. "X+1" on two lines greened everything between them, and a line added in front greened part of the next line too.
  • A card shows a tooltip for every status its effects name. Weak was missing on a card with Weak, Frail, Vulnerable and Thorns, and multi-hit with a status, Apply Status to Pet and Apply a Random Status had none at all.
  • A status on an enemy now fires on "After normal turn-start effects (late phase)", the Energy-reset triggers and the other phases of your turn. Before, they never fired there.
  • Discover a Card by Tag: the box that shows every matching card says so ("Show ALL matching cards instead of a few random ones"), the number hides while it is ticked, and the card text says "3 random different cards" (or tokens).

1.4.2

2026-10-31

Saved Ifs, text that shows only in a fight, moving to the middle of the enemies, a card's Gold as a value, and "If you do" acting on the card you drew or picked. Re-export existing mods to receive generated game changes.

Added

  • Save an If and reuse it. Every If has a "Saved Ifs…" menu: save the whole If (every extra condition, AND/OR, "not") under a name, and put it on any other effect. Saved Ifs are listed under Hero > Saved effect groups.
  • [combat]...[/combat] in card text shows only during a fight, the way the game's Body Slam shows its damage. Use it like [upgrade]...[/upgrade].
  • Move to the enemies for attacks on all of them. "Move to the target" now works on attacks that hit every enemy, going to the middle of them.
  • A Move pose for your character, played on the way to the enemy and back.
  • Wait before moving back after an attack, so a longer animation can finish.
  • A card's Gold is a value. Change This Card's Values (permanent or for a while) can raise or lower the Gold a card gains, and an upgrade can too. The card text follows.
  • Pets' "Arrives with" statuses take a number of stacks.
  • The guide says when a fight actually ends: the killing hit finishes, then the fight ends once the card or enemy move is over.
  • Return Top / Nth Card of a Pile turns up when you search for "discard" or "Hologram".

Fixed

  • "If you do: upgrade the card this trigger is about" after Draw Cards, Give a Card Extra Replays, or an effect that makes or moves cards now acts on those cards. Before, it did nothing.
  • "If you do" now notices a card gaining Replays or a keyword.
  • The Apply Status to Pet export error says which card, relic or status it is on, and what to fix.
  • The Deck tab in the new layouts has its page padding again.

1.4.1

2026-10-30

Scaling by any kind of card in your deck, statuses that preview cards and Block, singular and plural status text, cards that ignore their play condition, tagging the card a trigger is about, keeping enchantments through a transform, and a round of fixes. Re-export existing mods to receive generated game changes.

Added

  • Scale with cards in a pile by any mix of filters. "Cards in a pile by type, rarity, keyword, tag, name or upgrade" counts, for example, "the upgraded Rare Attack cards with Exhaust in your deck". Every filter is optional, and the deck counts outside fights too.
  • Statuses can preview cards, other statuses, potions, relics and Block when hovered, the same Hover Previews section relics and potions have.
  • Singular and plural in status text by the live stacks. Write [single]copy[/single][multi]copies[/multi] and the tooltip reads "1 copy" or "3 copies". The status editor previews both.
  • Cards that ignore their play condition. A status or relic passive lets cards matching a filter be played even when their own condition says no, the game's (Clash's "only Attacks in hand") or one you set. Energy, Unplayable and other statuses' bans still apply.
  • Give Cards a Custom Tag to "the card this trigger is about".
  • Keep the enchantment when transforming a card, on all five transform effects.
  • The enchantment If conditions now say they read the trigger's card on a card trigger, as "That card is upgraded" does.

Fixed

  • A status raising a picked card by its own stacks ("Ancestral Tempering") no longer fails to build with CS1061.
  • The Fake Merchant event shows your character's shop sprite.
  • Setting Max HP for the fight is undone safely after a won fight, and a huge number typed into a box no longer overflows. The editor warns about numbers too large for the game.
  • Status and relic effects aimed at "the attack's target" hit that target, not every enemy.
  • Taking stacks off a status that is tracked per application (Remove Custom Status and the other stack changers) takes them from every application, not only the first.
  • "When this takes damage" and "if it would die" on Osty, or on anyone, also answer the hit that kills.
  • A status that evokes or channels an orb from its own orb trigger no longer loops forever.
  • Relics added "as a choice" to a treasure room join the chest's own choice instead of being given separately. This works in content packs too. The chest counts the room's use once, so the room's other rewards still come, and it offers no more relics than it can show.
  • "If the creature you hit has X" works on "after you attack" and "after an attack lands", for statuses and relics: it asks about any creature the attack hit. It used to fail to build on a status.
  • A status tracked per application (Instanced) counts all its applications when its stacks are read, and Set a Status's Stacks sets their total.
  • "When this takes damage" no longer answers the same killing blow twice when it heals its holder back up.
  • "After an attack lands" aims only at creatures the attack got past Block on.
  • Counting cards in one of your own piles outside a fight reads 0 instead of failing.
  • With no filter, "cards ignore their play condition" applies to every card.
  • Keeping an enchantment follows a card that gets transformed again straight away. Transform Cards in Your Deck with a chosen card says it keeps enchantments, which it always did.
  • Copying a card to another character brings the keyword its deck-count filter names.

1.4.0

2026-10-30

Extra rewards for your fights and acts, setting an act's boss, merging two cards, pets you can aim at by name, keywords with their own rules on piles and before a card's effects, quests that complete on kills, cards and Gold, relic triggers for smithing and for a status's damage, odd and even turns, entrance animations, a cast sheet for enemies, enemies that make cards and afflict yours, copying cards from another character, starting from the game's own cards and relics, an edit log, formula suggestions, and many fixes. Re-export existing mods to receive generated game changes.

Added: cards and effects

  • Merge Two Cards. Pick a card, then a second one, from your hand in a fight or from your deck. The second gains the first's Damage, Block or both (a share of it if you like), for the fight or for good, and the first leaves play, your deck too, or stays. From your deck it works outside fights too.
  • Set the Act Boss. A boss of the game's or a battle of yours, for this act, the next one or a numbered act. Saved with the run, and it works from events, rest sites and relics you pick up.
  • Choose a Card from what you discarded or exhausted: the card just discarded or exhausted, or those from this play, this turn, this fight or last turn. Also from the card you played last.
  • Give This Card Replay takes an If, decided as the card is played. The If can ask about the card's target.
  • Replay with a count in Add or Remove Card Keywords and on cards made by Add Random Card from Pool. Kept through saves for deck cards.
  • Extra Replays for a card in your hand, at random or chosen.
  • Pick an enchantment from a list. Enchant a Card can offer the player a choice of enchantments from your list.
  • Evoke Orb at the card's target.
  • Make every token of a selection at once, and put a random or chosen token into one of your own piles.
  • The card an effect makes or moves can gain and lose several keywords, the game's and yours, can be upgraded, and can change cost.
  • Increase Statuses by a percent, and on the statuses just applied ("raise the Poison just applied by 50%").
  • Spread a creature's stacks. Spread Stacks of a Status can share what the target, a killed enemy or the status's holder has over the others.
  • Wear Out or Recover a Relic for good, for this fight, or until the start of a turn. Set Max HP. Lose potion slots. Halve or divide a card's damage. Remove a percentage of a status.
  • Add Charges to "this relic" in a relic's own effects.
  • Transform cards into a random card from a pool you choose, and add random cards from other unlocked characters' pools.
  • Remove a card from the run deck during a fight. Read and change a card's place in your hand.
  • Play every card in a pile, or only your tag. Play That Card can choose what it plays against, and play more than once.
  • Mill can shuffle your discard pile in when the draw pile runs out.
  • Attack cards can move the character to the target and back.
  • Random amounts on the core numbers and on starting stats.
  • Return a card to your hand when you change stance.
  • Several card types in card type filters ("an Attack or a Skill").
  • Un-upgradable cards.

Added: triggers and conditions

  • Odd and even turns as a relic turn filter and as If conditions.
  • A status's damage and kills. Relic triggers for an enemy that dies to a status, or loses HP to statuses (N+ this turn or this fight), for any status or the ones you pick. Doom, Sandpit and The Gambit kills count, and so do your own Power cards' recurring effects.
  • Narrow relic triggers by card rarity and by status (several statuses).
  • Clear a relic's count from one of its other triggers.
  • When you smith at a campfire, a relic trigger.
  • When this card leaves a pile, a pile trigger.
  • After you attack, after each hit of your attacks, and before you are attacked (with Multiply That Attack's Damage).
  • Whenever another status is removed, whenever you play a card of a rarity while this card is in a pile, and a relic triggered.
  • If you have N or more cards in a pile, any cards or one card.
  • Conditions for an empty draw or discard pile, Energy (yours or an ally's), pet counts and pet tags, a card costing as much as stacks or charges, one status compared with another, the card being played right now, and this card's damage from your hand and whether it would kill.
  • Damage dealt by a card's play, and its last hit, as scaling sources. Scaled attacks can scale damage and hits together.
  • Card triggers and enchantments can read the damage. Hit triggers read the card behind the hit.
  • HP triggers can watch one pet. Status stack triggers can watch an ally or anyone. Discard and exhaust triggers can watch another player's cards.
  • A guide to the order triggers fire in.

Added: keywords

  • Keyword rules before the card's effects, not only after, and pile rules: when a card with the keyword goes into or leaves a pile.
  • Play rules on keywords without a count.
  • Keyword counts on cards in your own piles, on several random cards at once, and changed by retain and self scaling.

Added: pets, enemies and battles

  • One of your pets as an effect target, by name, for statuses and healing. A random pet or Osty too.
  • Place pets by hand, let every copy of a pet attack, pets can attack whoever hit you, and damage taken can count only a pet's attacks.
  • Entrance animations for the hero, pets and enemies.
  • A cast sheet for enemies. Enemies can create the game's own cards, apply afflictions to the player's cards, and aim effects at one player or the others.
  • An enemy's spot can go below the floor. Move event, Ancient and battle images by hand.

Added: acts, events and rewards

  • Extra rewards with chances for a fight of yours or every fight in an act of yours: a potion or relic from a list, or a choice of cards from a list.
  • Quest cards can complete on cards added, enemies killed and Gold gained, and run reward effects when they do.
  • An event can come first in its act. An Ancient can appear only in an act of yours, a custom act can choose its Ancient, and an act can set how its map looks and draw fewer or more paths.
  • Add a card pool to your card rewards for the rest of the run.
  • Lock an event option the player cannot pay for.
  • Victory music after a won fight, a music playlist for relics, and a loop of a frame range after the victory or death pose.

Added: the editor

  • Copy cards from another character.
  • Start cards, relics and potions from the game's own, and open the game's relics as presets.
  • An edit log of what you changed and when (the Edits button).
  • Suggestions while typing a formula, for statuses and every name a formula can read.
  • Move card animations and stance art sideways, and preview an animation on the character.
  • Number fields can be cleared while typing.
  • Archetypes on cards, and your tags counted on Balance. Formula numbers in the compendium.
  • Live Energy and Star counts in card text, Stars as icons, status icons at text size, and only the changed part of an upgraded card's text in green.
  • Mechanic bars can change colour when full and use a gradient.
  • A co-op hand can hold a relic in its palm, set by hand.
  • An MP4 select-screen background plays as video, up to a minute.

Changed

  • Card previews show the text the game shows, and card art previews at the game's ratio.
  • Long card texts with square brackets shrink to fit.
  • "Is being tested" sits at the top, with "Leave out of the mod".
  • The compile service takes up to 2000 C# files, and says which step lost its connection. Art uploads retry.
  • A relic that adds charges to itself now shows a charge counter, starting at 0, without ticking it.
  • A chain of "upgrades into a different card" stops at a card marked "Can't be upgraded".

Fixed

  • A free play filtered by tag did not build.
  • Event options and statuses that pay fight rewards and Gold from an enemy now pay.
  • Spawned enemies stay on screen, and tested cards stay out of other pools' rolls.
  • All-enemies effects keep to the enemy a condition asks about.
  • Revive from your own death keeps your cards, relics and body.
  • Losing potion slots removes them from the potion bar.
  • Leftmost and rightmost in hand work off the card played.
  • Enemy-made cards shuffle into the draw pile, made by no player.
  • Button relics from two mods sit side by side, and long labels wrap.
  • Plain keyword play rules are checked by preflight.
  • Copying a card that names a boss says which battle it leaves behind.
  • "Fill your hand" with a token filled only about half the empty slots.

1.3.0

2026-10-20

Set and lock a status's stacks or a relic's charges, cost changes for every matching card in a pile, conditions for each Discover choice and up to six choices, your own piles in more card effects, a record of a card or an orb for later, many new If conditions (orbs, cards exhausted or discarded, room type, at most N, Never), orb passives that evoke or channel extra times, statuses that do not count down, NOT on type and keyword filters, acts filled by tag, acts that follow chosen acts, an act's own fight music and background, sized card and stance animations, smaller exports, and fixes for co-op teammates, event tooltips, Illusion under Doom and Die for You. Re-export existing mods to receive generated game changes.

Added

  • Set a status's stacks or a relic's charges. "Set a Status's Stacks" (yours or the game's, on you or the card's target), a Set mode on "Add Charges to a Relic" and on "Change Own Stacks". Setting 0 removes the status.
  • Lock stacks or charges. "Lock Stacks or Charges" stops a status from going up for N of its holder's turns, or a relic's charges until a turn of the fight.
  • At most N. If conditions for "this relic has N or fewer charges" (0 reads "out of charges"), and N or fewer of a game status on you or the target. Use At least and At most together for a range.
  • Never. The If condition "Never" turns an effect off and keeps its settings. Its "Otherwise" runs every time and reads as plain text on the card.
  • Every matching card in a pile. "Change a Card's Energy Cost" can change every card in your hand, draw pile, discard pile or all three, by card type, keyword and tag, with "Skip this card".
  • A cost reduction for each different debuff you have.
  • Block for the enemy a card targets. Gain Block has "The enemy this card targets". Its number follows that enemy's Frail while you aim.
  • A condition for each Discover choice. Discover a Token, Choose & Play and Discover a Custom Card take a full If condition on each choice, the first one included ("+ Offer a choice only if...").
  • Six choices in those three effects.
  • Your own piles in card effects. Add Custom Card to Pile and Copy Cards from a Pile (source and destination) take your own piles.
  • Several cards in one effect. Add Custom Card to Pile can add up to three more cards ("Also add").
  • Record a card or an orb. "Record a Card or an Orb" keeps a card's cost, damage and Block, or an orb's type, for the rest of the fight. "Set to the recorded card's cost", "The recorded orb" and the recorded numbers use it.
  • Any orb. Trigger Orb Passive can pick any of the game's orbs or any of yours.
  • Orb conditions. If you channeled an orb of a type, if you have N or more different orbs, and if you channeled, evoked or either N or more different orbs, this turn, last turn or this combat.
  • A card you exhausted or discarded. An If condition on the last card you exhausted or discarded (by this card, this turn or last turn), checked by cost, damage, Block, status, keyword, tag, type or rarity.
  • Room type. An If condition for a normal, elite or boss fight, an event, treasure, shop, rest site, an Ancient or a ? space. It works outside fights too.
  • Extra evokes and channels. The passives "Orbs evoke +N extra times" and "Orbs you channel are channeled +N extra times", per stack if you like, for every orb or one type.
  • Statuses that do not go down. A passive on a status or a relic that stops statuses on its holder from counting down by themselves, every status or some, always or through turn N of a fight.
  • NOT on type and keyword filters. A mechanic's or relic's card type and keyword filters can fire on cards that do NOT match ("whenever you play anything other than an Attack").
  • The card that gave a relic charges. On a relic's charges gained and charges reached triggers, "The card this effect is about" is the card that gave them.
  • Pet attacks that feed. Pet Attacks can give Max HP for each enemy it kills, to you or to the pet. A minion's death does not count, as with Feed.
  • Play This Card at the last enemy. "Play against" has "The last enemy you played a card at".
  • Acts filled by tag. An act's fight lists take every battle with an enemy of a tag, and its events every event of a tag. Events have tags.
  • An act after chosen acts. "Only right after one of these acts", the game's or yours.
  • An act's own look and sound. Fight music and a fight background (still or animated) for every fight in the act that has none of its own.
  • Your acts in act lists. A relic's "Only in these acts" and an event's acts list your own acts.
  • Size and height for animations. A card's own animation and a stance's art take the same Size and Height sliders as the character art.
  • A stance's icon in text. {icon:Name} takes one of your stances.
  • Smaller art. An option in Mod Info exports images as WebP, keeping any PNG that comes out smaller. After each export a line gives the art's total size and its three largest files.

Changed

  • GIF and MP4 uploads can be up to 100 MB, and a video keeps 12 frames a second, so a short loop keeps more of its frames.
  • Each export stamps its build into the mod's version, so co-op players on different builds of one mod cannot join each other. Teammates must use the same download.
  • "Generate a Card Choice for Your Deck" is now "Add a Card to Your Deck (chosen or random)". It is still found by the old name.

Fixed

  • Event options that enchant a card did not show the enchantment in their tooltip.
  • An enemy given Illusion that died to Doom came back invisible.
  • Exhaust Cards in Hand only ever took from your hand. It now has "Whose hand", and each ally picks on their own screen.
  • Obtain Potion and Obtain Random Potion always gave to the character's player. They now have "Give to".
  • Die for You always named Osty. Each pet that takes hits now names itself.
  • The card preview showed {icon:...} tokens as raw text.
  • A status whose name ends in "Orb" or "Stance" lost its hover tip on cards, could not be spread with Spread Stacks, and a random orb from your own pool counted it as an orb and did not build.

1.2.22

2026-10-19

Choose a Card picks in your hand, your own words at the top while choosing, draws past a full hand, setting a card's value outright, a Sleeping status for any enemy, Play That Card more than once, keywords more likely in rewards and shops, rooms per act, pixel-art enemies, bestiary text, and fixes for random amounts, stack damage and Block, and a dark outline on the map marker. Re-export existing mods to receive generated game changes.

Added

  • Bestiary text. An enemy can have its own text in the bestiary, shown once a player has beaten it, in place of the game's "under construction" note (main branch only, as the beta bestiary has no place for it).
  • Hide a keyword's tooltip. A card can leave out the tooltip of a keyword it has ("Previews and look").
  • Text at the top while choosing. Choose a Card can show your own words while the player picks.
  • Draw past a full hand. Draw Cards and Draw (Scaled) can send the cards still owed, off the top of the draw pile, to the discard pile once your hand is full.
  • Set a card's value. Permanently Change This Card's Values can set the value to a number (or a number plus a scaling source) instead of changing it.
  • Sleeping, for any enemy. A "Sleeping-style" template in Mechanics: the holder skips its turns while it has stacks, and HP damage wakes it. The game's own Asleep only works on Lagavulin Matriarch.
  • Playable with N+ gold.
  • Play That Card more than once. Times, "× Stacks" in a status and "× Keyword count" in a counted keyword's rules, played as Replay is, so an Exhaust card exhausts after the last.
  • Keywords more likely in rewards and shops. Two relic passives make cards with a keyword (the game's or yours) a percentage more likely in card rewards, or in the shop.
  • Dismiss a card note in Balance, Card Feedback, and bring them back with "Show them again".
  • Pixel art on an enemy keeps its pixels sharp: no smoothing when its animation is made or shrunk, and sharp pixels in game. Upload the art again after ticking it.
  • Random amounts as live numbers. {weak} and {weakmax} (or your status's name) for the two ends of a random amount, in your own text.
  • Block absorbs it on Carrier Takes Damage (per Stack), for a status that should hit Block first, unlike Poison.
  • Played automatically, or by you, on the card-played triggers of mechanics and relics. Automatically covers auto-play, copies, Play That Card and Replay.
  • Rooms per act on the character: more or fewer rooms on each act's map in a run with your character.

Changed

  • Choose a Card from the hand picks in the hand, as Armaments does, instead of opening the pile screen.
  • The effect search finds effects by the words people use: "for each" finds Damage (Scaled) and Block (Scaled).
  • Two Play That Card effects on one card add their plays together.

Fixed

  • A card applying a random amount (1 to 6) said only the low number in game. It says the range, and an upgrade moves both ends.
  • "Remove 1 to 6 Strength" could give Strength instead.
  • A transparent map marker (and other small transparent art) had a dark outline in game.
  • The saved characters list could not be scrolled on a phone.
  • A permanent change made in an upgrade's extra effects did not build, a set value below the upgrade bonus came back wrong after a reload, and a downgrade could leave a negative number.
  • Bestiary text with braces no longer logs errors.
  • "Played automatically, or by you" did nothing on a trigger with a limit per turn or a card count.
  • A permanent decrease made while a temporary decrease held the value at 0 was lost when the temporary one ended.
  • A permanent Star cost change came back after a downgrade only on reload. It now stays.
  • A card that grows or shrinks each play and has a permanent change kept the wrong value after a downgrade.
  • Two temporary changes to one value, an increase and a decrease, could leave it too high once both were undone.
  • A card downgraded during a fight (Dampen) lost its temporary changes, and taking them off later left it wrong.
  • A card that shrinks each play for the whole run, downgraded below 0, came back negative after a reload.
  • The effect search finds "deal X damage for each" as typed, word by word.
  • The health bar no longer counts Block against a status that hits at the start of its holder's turn, when that Block is already gone.
  • "Block absorbs it" is only offered where it does something: on a status, and on a Power card's start or end of turn effects. Everywhere else the hit already meets Block.
  • Rooms per act: the main menu's floor number for a saved run counts the extra rooms.
  • Nearly clear edge pixels no longer spread a dark colour into the art's outline, and pixel art shrinks only by halves so its pixels stay even.

1.2.21

2026-10-18

Acts of your own, battles that start from another encounter, icons and live status numbers in text, words always in gold, relic previews, activation limits on every mechanic trigger, shared damage, more triggers, conditions and effects, enchantments with your own keywords and cost changes, up to eight event options, and fixes for death saves in multiplayer, GIF enemy timing, a keyword crash and more. Re-export existing mods to receive generated game changes.

Added

  • Acts of your own. A new Acts page. An act is numbered 1 to 8: 1 to 3 can take the place of the game's act for that number, and 4 and on come after the game's three, so the run goes on past act 3. It looks and sounds like the base act it is built on and has the Ancients of its place in the run. It holds that act's fights and events, ones you pick (the game's and your own), or both. Its map is the game's branching map with your counts of floors, rest sites, shops, elites and ? rooms, or one road of rooms in order, each with a chance to be its type. A run takes it by its chance, a lowest ascension, the characters in the run and their starting relics.
  • Set the next act. An event option can send the run to one of your acts, or a base act, next.
  • Start a battle from an encounter. A battle can open with the enemies of a set encounter, the game's or one of yours, or of a random normal, weak, elite or boss encounter from some acts (or the act the fight is in). Their HP can be scaled and they can get extra statuses, and your own rows add more enemies. The encounter's scene comes along, so summoners still find room, and so do its camera, music and arena when the battle sets none.
  • Icons in any description. {energyIcon} (or {energyIcon:2}), {star}, and {icon:Poison} or {icon:Your Status} draw the icon in the text.
  • A status's text can name another status. {Rage}, {Strength}, {hp}, {maxhp} or {block} on their own read the holder's number live in the tooltip.
  • Live numbers that read any status. Formulas such as {damage+Vigor} read base-game statuses by name, and "target" before a name reads the target's.
  • Words always in gold. A list of your own words, beside the game-term highlight option, coloured gold wherever they appear in card, relic, status, potion, enchantment and orb text.
  • Relics in hover previews. Cards, relics and potions can preview up to three relics, the game's or yours. Relics and potions can also preview their cards upgraded.
  • Keyword previews. A card can preview any keyword, even one it does not have, and up to six cards.
  • Upgrade-only text. [upgrade]s[/upgrade] shows only on the upgraded card and is not highlighted green.
  • Activation limits on every mechanic trigger, per turn or per combat, counted only when its effects ran if you choose. A turn counts your turn and the enemy's separately.
  • Share damage taken between the holders of a status, evenly or as a set share.
  • New triggers. You attacked a different enemy than last time; whenever you spend Gold (X or more); an enemy lost N+ HP, or lost HP N+ times, this turn, this combat or ever; Stars spent or gained, at least N at once.
  • New conditions. Conditions on success effects; Stars spent or gained this play, turn or combat, or on a card; N+ of a base-game or own card in a pile; the target's HP at most a status's stacks; you or an ally are a given character, and Osty is out; your own orb types; created cards and how many were played; the enemy hit has N+ of a status.
  • New effects. Summon a random pet from a list or by tag; spread a status's stacks evenly; Osty or every pet gains or loses HP; a random card added to the deck with filters; Stars and Star cost as card values; change the cost of, or give a keyword to, any card an effect makes or moves; "But at most" a number, a number per stack or a formula; target the enemy with the most HP or the least; a keyword on every card in every pile; put cards from any pile into your own pile.
  • More sources. Star cost, cards exhausted or discarded this turn, last turn or this combat, an upgraded card, and HP a pet or Osty lost.
  • Choose a Card gets NOT, your own keywords, Can skip and This card. Discover a Card can put the pick in your deck. Played cards can go to a pile of your own.
  • Up to eight success and else effects, and up to eight event options, which scroll four at a time in game. An option can need any of several relics.
  • Enchantments can give your own keywords (counted ones up to a number) and set or change the card's cost.
  • Relics only in runs with a character, yours, a base character or a linked one.
  • Enemy health bars can be wider, narrower or moved.

Changed

  • Your own mechanics in the effect picker are split into in combat only, and in or out of combat, like the base-game groups.
  • A card's own Gold loss now counts as spending Gold, so "Whenever you spend Gold" sees it.
  • On a card aimed at one enemy, "if the target has X: something to ALL enemies" checks the aimed enemy once and then acts on each enemy; the else part stays on the aimed enemy, unless it scales an all-enemies attack off the target, which now runs per enemy.
  • Shared HP loss is split before Osty or Buffer take the hit.

Fixed

  • A "stop the death, once per run" relic or status left its holder on 0 HP, so they died anyway; in multiplayer the run soft-locked.
  • Enemy GIF animations played up to five times too fast and lost their held frames.
  • A keyword-filtered keyword grant crashed the game.
  • "Upgrade Random Card" let the player choose the card.
  • A tag-filtered "whenever you play a card" flashed for every card.
  • "Self" effects on an ally-aimed card went to the ally.
  • "Repeat per stack" inside an If repeated the whole If.
  • Giving a card Retain could leave a gap in the hand.
  • A permanent copy of a card from the fight was refused.
  • A rest action icon could fail the export with "Invalid or duplicate asset path".
  • A saved effect group with a long name failed the export.
  • The balance graph read 0 for an axis far over official without saying why.
  • Mechanics could not be created on a phone.
  • An Ancient's lines played a generic sound instead of its own voice.
  • The mod's status bars took the mouse.
  • An activation limit counted each repetition of an effect as an activation.
  • An enchantment that sets the cost or a keyword count gave a different result after a save and load when the card was upgraded first.
  • A relic or potion nobody held yet showed a broken energy icon in its text.
  • More than four event options ran off the bottom of the screen.
  • A battle that adds enemies to an encounter whose scene was already full failed to build its room.
  • Two relics previewing each other crashed the game when either was hovered.
  • A status's text naming another status could show the wrong numbers, or raw text, when a name was taken.
  • The energy icon showed as raw text in an orb's description and an enchantment's extra card text.

1.2.20

2026-10-16

Action buttons that cost energy, vote events, your own piles on screen, stance overlays and stance mechanics, extra character animations, tidier Mechanics, Art and Relics pages, and fixes for opening a character saved on another device, moving a character by .json, and token counts that did not upgrade. Re-export existing mods to receive generated game changes.

Added

  • Action buttons. A relic with a right-click effect can also be a button over the energy counter, with an energy cost, a label, and "Aim it at an enemy first, like a potion". The relic's limits and charges still apply, it works in multiplayer, and right-clicking the relic does the same thing.
  • Vote events. "Players vote together in multiplayer" on an event makes it work like the Morphic Grove: every player votes and the choice with the most votes happens for all of them.
  • Your piles on screen. One of your own piles can have a button beside the game's piles, with its own icon and a count, that opens the pile like the discard pile does.
  • Where a relic can appear. "Only in these acts" and "Only while someone holds one of these relics" (yours or the base game's), for rewards, chests and shops.
  • Stance overlays. A stance can show an image, sheet, GIF or short MP4 over or behind the character while it lasts, like the Watcher's auras.
  • A mechanic while in a stance. A stance can give one of your mechanics on entering it and take it away on leaving.
  • Extra character animations. Up to eight named animations beside attack and cast, each a sheet, or no sprite at all so the character vanishes for a moment. Any card or token can play one.
  • Free rest actions. A relic's rest site action can leave the other campfire options open.
  • Quest events. An event can wait until someone has one of a set of relics or cards, like a key quest.
  • "Whenever a card enters a pile" for mechanics and relics, for any pile including your own.
  • Your own piles in more places. Take cards out of your own pile by keyword or tag, and a card can grow each turn it waits in the draw pile, the exhaust pile or one of your piles.
  • Upgrading a keyword's count. Change a Keyword's Count has its own "Keyword count" row in the Upgrade section.
  • Bars in more places. "Show as a bar in combat" can sit above the energy counter, under the health bar or above the hand, with its own width, height and track colour.
  • Draw pile keywords. A "To draw pile" keyword can put its cards on top or shuffle them in.
  • Whole-screen video effects up to 1280 x 720.
  • GIF and MP4 for enemies. An enemy's sprite and its idle, attack, hit and dead sheets take a GIF or short MP4, which becomes a sheet of frames at the clip's speed.

Changed

  • The Mechanics page groups its settings into Stacks, Appearance and sound, When the holder dies, and Special game rules.
  • The Hero page's Character Art is grouped into Character, Cards, Icons, Relic redesigns and Saved effect groups.
  • The Relics page groups its settings into Trigger conditions, Charges and limits, Where it can appear, Look and Hover previews.
  • A group stays closed until something in it is set, and then says how many settings are set.
  • The small "i" and "?" marks now open on a click or a tap, not only on a slow hover.
  • My characters now says that artwork stays in the browser it was added in and is not saved to your account.

Fixed

  • Opening a character on one device after saving it on another stopped working. The editor treated every loaded character as edited, re-saved the old copy, and the save was refused.
  • When there really are edits on both devices, picking a side now finishes the open.
  • A character that is in no account now asks before Open replaces it.
  • Opening a character after restoring an old version saved the old version over the latest one. It now asks first, and the latest copy stays as it is.
  • Moving a character by .json from a device without its art lost the artwork. An import now brings back the art this browser already has for that character.
  • "Tokens Created" under Otherwise or If you do did not change on upgrade, and the card text kept the old number.
  • A card set to grow when discarded, or when drawn with the draw pile chosen, never grew.
  • A Discover card that discovers from your own pool showed a Wound preview.
  • A long GIF kept too few frames, and a long 1080p clip could hit the browser's canvas limit.
  • Topdeck and Reshuffle keywords no longer override Rebound's "put it on top".

1.2.19

2026-10-16

Choose a Card, fight goals and room triggers for relics, changing the rooms ahead, winning or restarting a fight, characters linked from other mods, cards with their own animations, and fixes for a black screen on entering rooms, pet animations and enchantments. Re-export existing mods to receive generated game changes.

Added

  • Choose a Card. A new effect that picks a card from your hand, draw, discard or exhaust pile, one of your own piles, anywhere, or the cards played this turn, last turn or this combat. The pick can be chosen on a grid, random, or the top or bottom card, filtered by type, cost, Star cost, keyword, tag or a word in the name. Its Then effects act on the picked card, and "How many (the Then effects run for each)" picks several at once.
  • Move or transform the card a trigger is about. "Put the Card This Trigger Is About in a Pile" sends it to your hand, the top, bottom or a random place in the draw pile, the discard or exhaust pile, or one of your own piles. "Transform the Card This Trigger Is About" turns it into a random card by pool, type, rarity, cost or tag, optionally upgraded. After Choose a Card these fetch a card by name or tag from anywhere, and putting a card from your hand into the discard pile is now a real discard.
  • Numbers from the card a trigger is about. Scaled effects can read that card's damage, Block, cost, hits, the cards it draws or a status it applies, and how many copies of a base-game card were played this turn or this combat, such as 3 damage per Shiv played this turn.
  • "This play only". Temporarily Change This Card's Values has "This play only (put it before the attack)", so a condition can add hits to a single play: "If your last card was an Attack, increase this card's hits by 2".
  • Osty and pets. Both Change This Card's Values effects can raise the card's Osty summon or pet summon, for the fight or for good. "Increase Osty's or a Pet's Starting HP" adds HP to the next summon from zero, for this combat or the rest of the run.
  • Win, Lose or Restart the Fight. Win ends the fight with its rewards and Lose kills you. Restart (single player) starts the same battle over and gives back the HP you began it with.
  • Change the Rooms Ahead. The next few floors, the rest of the act or the next act become normal fights, Elites, random events, your events, shops, Rest Sites or treasure rooms. Bosses and Ancients are never changed, and the change stays with the saved run.
  • Apply a Random Status from a list, the game's plain buffs or debuffs, your own buffs or debuffs, or your statuses with a tag. Given to each enemy, every enemy rolls its own.
  • Spawn Enemy picks at random. "Which enemy" can be a random one from a list, a random one of an enemy type, or a copy of a random enemy in this fight.
  • More orb options. Reorder Orbs reverses your orbs or moves each one forward. Evoke Orb and Trigger Orb Passive can pick "A random orb", and the orb picker now says the first orb is the rightmost. Channel triggers on relics and mechanics have "Only an orb you do not have yet".
  • Choices of up to five. Choose & Play a Token Card, Discover a Token Card and Discover a Custom Card take up to five options, shown on a grid past three. A status an enemy puts on you can use Choose & Play to make you pick one of two curses.
  • Fight goals for relics. "When you win a fight" has "Only if": won before turn X, without losing HP to an enemy, playing fewer than X cards, or spending less than X energy, in the whole fight or in any one turn. The new trigger "When a fight goal fails" fires the moment a goal breaks.
  • Room and relic triggers. New relic triggers "When you leave a room" and "Whenever you obtain a relic", which can be narrowed to "Only a relic from" an elite, a boss or a chest. Both room triggers can be limited to fights, elites, bosses, events, shops, rest sites or treasure rooms.
  • Keyword filter on relic card triggers. Every relic card trigger (play, discard, exhaust, draw and the rest) has "Only cards with keyword", for the game's keywords and your own.
  • More room rewards. "Add or remove rewards from rooms" can add relics to "Treasure chests", and "Relics as a choice" turns the room's relic and the added ones into one pick. New effects "Add a Relic to Combat Rewards" and "Add a Potion to Combat Rewards" add to the rewards of the fight they run in.
  • Pay missing Stars with HP. The passive "Pay missing Stars with HP (or a status's stacks)" lets a card be played without enough Stars, paying for each missing Star with HP or with stacks of one of your statuses. It never takes you below 1 HP.
  • Prevent the next attack on you. A status passive where each stack stops every hit of one enemy attack from taking HP. Buffer is not spent on a prevented attack.
  • Doom-style statuses. The condition "Target's custom status ≥ its current HP (like Doom)" and the mechanic template "Doom-style (strikes when it reaches HP)", for a status that strikes once its stacks reach the holder's HP.
  • Stun conditions. Cards can be playable only when "Any hittable enemy is stunned" or "Every hittable enemy is stunned", and any effect can check "The enemy is stunned".
  • "Wait before each hit (seconds)" on Deal Damage, Damage Multiple Times, Damage Random Enemy, Multi-Hit + Status per Hit and Damage (Scaled), to hold back each hit's damage number.
  • Your own keywords in more effects. Add or Remove Card Keywords has "Or one of your keywords". Change a Keyword's Count can change a random card in a pile, every card in a pile, or every card with the keyword. Give Cards a Custom Keyword can give it to the card a trigger is about.
  • Your own piles in more places. Pile counts and "Cards in a pile (your own piles too)", the tagged-cards-in-a-pile condition (a blank tag counts every card), card triggers while in or entering a pile, "a card leaves a pile", Search a Pile, Auto-Play Random Cards from a Pile and other pile effects now take your own piles.
  • Tags on orbs, pets and mechanics. Effects can count your orbs, pets or statuses with a tag, and check "You have N+ orbs with a tag" (or pets, or statuses).
  • Formulas in a mechanic's text, like {2*X}, where X is the stacks. They can also use the holder's HP, max HP and Block.
  • Event options. "+ Play an effect" under an option's rewards runs any effect that works outside a fight. "Random follow-ups" each take a % chance, and a blank one shares what is left.
  • Battle preview placement. With "Place the enemies myself" on, the battle preview shows the enemies on their spots.
  • Rest site icons of your own. A relic's rest site action and a campfire quest card can use an uploaded icon ("or upload your own") in place of a game icon.
  • Linked characters from other mods. The Compatibility panel shows your character's id for other mods and links other mods' characters by theirs. A linked character can be picked in card pool choices such as Discover a Card and Borrowed Card Pools, and your mod still works without theirs installed.
  • "Only in runs with these characters" on events, Ancients and battles: any of the base characters, yours or linked ones. Content packs can use it too.
  • Card animations. Cards and tokens can carry a "Card's own character animation (optional)", a spritesheet the character plays in place of its attack or cast pose. It needs the character to have combat art.
  • "Play the attack animation once per attack" on Attack cards and tokens plays the animation once for all of an attack's hits instead of once per hit.
  • Animate Push / Pull up and down. The new "Up" setting, in pixels (negative is down), works alone or with a push for a diagonal.
  • Animated relic companions. A relic's companion can loop an "Idle animation (optional)" spritesheet instead of a single still.
  • "Only one in your deck" keeps a card in shops and card rewards until you take it, then never again, even after it is removed.
  • More token options. Tokens now have the hit effect, the cast effect and "Exhaust, Unless It Kills".
  • Sidebar markers. Anything marked testing only shows a gold hammer before its name, and anything left out of the mod shows a red X.

Changed

  • You can now have 24 custom keywords instead of 8. A card can still carry 4.
  • The effect picker splits Card manipulation and Utility into "In combat only", "Out of combat only" and "In or out of combat". Rest site actions offer only effects that work outside a fight.
  • "When you enter a room" now says when it runs: in a fight, after the enemies are there and before start-of-combat effects.
  • HP-lost and heal triggers now say "you, your Osty or a pet", and the setting is called "Whose HP".
  • The Scales With list reads "Cards in a pile (your own piles too)", and the game's statuses and yours are no longer named the same ("a game status on you", "your own status on you").

Fixed

  • The Mechanics screen was unusable on a phone. It now stacks the list above the editor on narrow screens.
  • In an enchantment or affliction, "this card" effects such as "Remove This Card From Your Deck (permanent)", discard and exhaust did nothing. They now act on the card it is on.
  • A pet's animation broke the export with "columns: Too small", and a long strip of frames was drawn wrong or not at all. Character, pet, form and stance sheets now never save 0 columns, and a strip too wide to load is laid out as a grid. Re-upload the sheet to get the grid.
  • A pet's "On-screen height" and "Starting HP" jumped as you typed. They now take the number when you leave the field, and have sliders.
  • A "When you enter a room" relic that opens a choice, such as Enchant Cards in Your Deck, left a black screen and stopped the run. The room now shows first, and several such screens open one after another.
  • "Upgrade Cards in a Pile" on Hand opened the deck's grid. It now picks in the hand, as Armaments does.
  • A status applied at the start of your turn by another status only went off every other turn. It now goes off that same turn.
  • "Exhaust, Unless It Kills" acted one play late, so a play that killed nothing went to the discard and the next one exhausted.
  • A mod with an affliction and custom orbs or stances, but no statuses of its own, failed to build.

1.2.18

2026-10-14

Sharper video effects, and a fix for affliction card art. Re-export existing mods to receive generated game changes.

Added

  • Sharper video effects. A GIF or MP4 visual effect can now ship as several images instead of one, so a 1080p clip keeps 640 x 360 frames where it used to come out at 224 x 126. The editor shows how many images it ships as. Re-upload an effect converted before this to get the sharper version.

Fixed

  • Affliction card art (added in 1.2.15) was missing from mods built on the website: the picture was packed, but the overlay that draws it was not.

1.2.17

2026-10-14

Piles of your own, repeating damage, more animation and Star counter options, and fixes for attack triggers and video effects. Re-export existing mods to receive generated game changes.

Added

  • Your own piles. Cards → Your Own Piles makes up to four card piles next to the draw, discard and exhaust piles, such as a Sealed pile. "Put Cards in Your Own Pile" seals this card, a card picked from your hand, random or all cards in hand, the top of your draw pile, or the card a trigger is about. "Take Cards from Your Own Pile" brings back a card the player picks, random cards, the last ones put in, or all of them, to your hand, draw pile or discard pile, never more than fit in your hand. A keyword can send its played cards to a pile, like "To draw pile". Each pile starts every fight empty.
  • Repeating damage. Deal Damage has "Then repeat it, % chance each time" and "At most this many repeats", for a Death Roll that hits again on a 60% chance until it fails. On a card the repeats are more hits of the same attack, so Vigor counts on every hit and it is still one card played.
  • Discover from a target ally. Discover a Card has the pool "The targeted ally's character".
  • "None (keep the idle playing)" for the animation a card plays, so a Block card does not interrupt the idle animation.
  • Star counter layers and position. With a custom Star icon, Hero → Art takes two images for the counter's spinning layers, and "Move the counter by" moves it.
  • Watch more statuses. "When another status reaches N stacks" can watch up to 15 statuses; any of them reaching the number fires it.
  • Your own cards in passive filters. Every passive card filter, including "Give matching cards replays for each status stack", has "that are one of your cards", where you tick any of your cards and tokens. The tag box suggests the tags your cards use.
  • Card Library filters. The Card Library filters by pool, by any effect a card uses, and by category, and sorts by exact cost. The side Cards list can sort by cost too.
  • Pets can hold their cards back. A pet that brings the cards in your deck with a tag or keyword can keep those cards out of the fight until it is summoned, so there are not two of each.
  • New character in My characters saves the current character to your account and starts a blank one. The New Character warning now says whether your character is already saved there.

Fixed

  • "Whenever an enemy attacks you" and other attacked triggers ignored unpowered attack damage, such as Damage (Scaled) without "Affected by Strength". Any attack hit by someone else now counts. Self-damage, Burn and HP loss from a Skill still do not.
  • A full-screen effect made from a 1920 x 1080 video was refused, and a large effect sheet was shrunk to a tiny still on export. Clips are now shrunk to fit when converted, and the export keeps their frames.
  • With a custom Star icon, gaining Stars still flashed the game's star-shaped glow behind it. The glow now uses your icon.
  • An Attack card with no damage played no animation, and Heavy or Ult Cast were ignored when the character had not uploaded them for its animation mode. Every chosen animation now plays, and the card editor says when one cannot.
  • Two "reaches N stacks" blocks on one mechanic shared the first block's status and number, so the second never fired.

1.2.16

2026-10-14

Re-export existing mods to receive generated game changes.

Added

  • + X on X-cost cards. Next to "× X", an effect's amount can now add X once instead of multiplying by it: "Deal 6 + X damage", "Gain 5 + X Block", "Apply 1 + X Weak". "× X" still reads "Deal 6X damage", meaning 6 times X.

1.2.15

2026-10-14

Custom keywords given during a fight, keyword filters, affliction art, and live numbers on X-cost cards. Re-export existing mods to receive generated game changes.

Added

  • Give Cards a Custom Keyword. Gives one of your keywords to the next cards you play (optionally only Attacks, Skills or Powers) or to the cards in your hand, for the rest of the fight or for that play only, the same way Give Cards a Custom Tag works. The card really has the keyword, so its text, tooltip, keyword filters and the keyword's own rules all see it, including "When a card with it is played" for that same play and "goes to your draw pile". A keyword with a count can be given a fixed count or the card's cost.
  • Count equal to the card's cost. Change a Keyword's Count can now add, remove or set the card's cost instead of a fixed number, so "card costs X, it has Charge X" is one rule. On an X card being played the cost is the X paid (Chemical X included). On an X card in your hand, it is the X it would have if played now.
  • Your own keywords in card filters. Passives that filter cards ("your cards cost N less" and the rest) list your keywords above the game's. Play Matching Cards from a Pile can match one of your keywords too.
  • Affliction card art. An affliction can carry a card-sized picture that is drawn over every card it afflicts, the way the game draws Bound or Hexed.

Fixed

  • The running total on an X-cost card was dropped, and the same sum written into card text as a {} formula failed to build. In hand, X now reads as the energy (or Stars) you have, so "X × 8, plus 2 per 10 Heat above 20" shows the number playing it now would deal.
  • With the Star resource renamed, hovering the star counter still said "Stars" in a mod that only gains Stars.
  • Play Matching Cards from a Pile said "your hand pile", and showed a Shiv tooltip when matching anything other than a game keyword.

1.2.14

2026-10-14

Re-export existing mods to receive generated game changes.

Added

  • × Keyword count. In a counted keyword's own rules ("When a card with it is played", "When it reaches a number"), any effect can be multiplied by the keyword's count on the card: 1 stack of a status on a card with Hot 2 becomes 2. "× Stacks" and "× Relic charges", which have nothing to count there, are hidden inside keyword rules.

Changed

  • A card's Reward pool is now Reward and shop pool, and says where each choice puts the card. Colorless reaches every character, in colorless rewards and in the shop's two colorless slots, which only sell Uncommon and Rare cards.

Fixed

  • "× Stacks" ticked on an effect in a keyword rule did nothing. It now multiplies by the keyword's count, as intended.

1.2.13

2026-10-13

Keyword counts that do things when played, epochs unlocked during a run, whole-screen visual effects from GIFs and videos, more Star scaling, and a view of everything in your mod. Re-export existing mods to receive generated game changes.

Added

  • Unlock an epoch during a run. A Chronicle epoch can now be unlocked by something that happens in a run: the Unlock an Epoch effect (on a card, relic, status or potion) or the same outcome on an event option. Give the epoch the requirement Something in a run unlocks it to make that its only way in. Whatever it unlocks stays out of the pools until the player reveals it on the Timeline, as with any epoch. Daily and other modes that lock epochs never unlock it.
  • Keywords with a count can act when played. Under Your Own Keywords, "When a card with it is played" runs effects each time a card carrying the word is played, including a card given the word during a fight. "Charge X: gain X energy" is one rule on the keyword.
  • Keyword count is a new source for every scaled effect: a keyword's count on this card, on the card you played, or on the card a trigger is about (drawn, exhausted and so on).
  • Gain Stars (Scaled), and new Star sources for every scaled effect: your Stars, Stars gained this combat, and Stars spent this turn or this combat.
  • Visual effects over the whole screen. Play Custom Visual Effect can cover the fight, in front of the characters or behind them. The effect library takes GIFs and short MP4s, and "Black is see-through" lets a video on black glow over the fight instead of hiding it.
  • Mod Contents. The Library has an Everything view: every card, token, relic, mechanic, potion, enchantment, affliction, orb, pet, event, enemy, encounter and chronicle, each with a switch to leave it out of the mod, buttons to leave a whole kind out or put it back, and a note on anything still using what you left out.

Changed

  • A card's Advanced options are grouped: Cost and playing, After it's played, While it's in your piles, Where it shows up, Previews and look, and Quests, rest sites and Transcendence. Each group stays closed until something in it is set, and says how many settings are in use. Tokens use the same groups.
  • Gain Energy, Heal, Gain Gold, Max HP, Lose HP (Scaled) and Forge show only the extra fields the chosen source needs.

Fixed

  • Giving a token choice to "each allied player" made the players pick one after another, and nobody could play a card until the last one chose. Everyone now picks at the same time.
  • A Tank applied for a limited time left its allies Guarded after it wore off. The Guarded it gave now goes with it.

1.2.12

2026-10-13

New triggers and effects, live numbers and formulas in card text, animated pictures, sound and voicelines for events and Ancients, epoch locks and enemy placement. Re-export existing mods to receive generated game changes.

Added

  • Triggers. Relics and mechanics can now react when: - your HP falls below a number or a % of max HP, once each time you cross it; - you play the Nth copy of the same card this turn, this combat, or (relics) this run, once or every N, with copies counted together or each copy on its own; - you upgrade a card, in a fight or out.
  • A mechanic can now react if you would die: the death is stopped and its effects run, once per combat or every time. A heal is needed, or you die anyway.
  • A mechanic can now react whenever it would go over its maximum, once per gain or for each N stacks over. Leftover stacks carry over to the next gain.
  • A relic can now react when its charges reach a number, and Only this specific card works on relic card triggers.
  • New effects: - Revive brings yourself back up to an amount of HP or a % of max HP. It also brings back each dead ally, or a random one (co-op), with their deck shuffled in. - Gain Extra Turns. - Play That Card plays again the card a trigger is about. - Auto-Play Your Hand for Turns, starting this turn or the next.
  • Return Top / Nth Card of a Pile can now take the top, the Nth or the bottom card, and send it to your hand, the top of your draw pile, shuffled into it, or the discard pile.
  • Conditions: "Enemies at least N", "Nth play of this card this turn / this combat", "A player is dead" and "A player died this turn".
  • Gain Block and Remove Block can now target all allies, a random ally, all enemies or a random enemy.
  • Change This Card's Values (temporary and permanent) can now add a scaling source, such as your Block or a status's stacks, read when the effect runs.
  • A right-click relic can spend all its charges per click. Its "× charges" scaling reads the charges it had before the click.
  • Card text: - The description override has a Live Numbers panel. It lists every number the card can show, with its base value and what it means. Click one to add it at the cursor; a number that would print as plain text is flagged in red. - Formulas inside {} show live in game, for example {damage - 0.1*maxhp}. They can use the card's numbers, max HP, HP, gold, Block, hand size, turn, enemies, a status by name, or any scaling source. - Each scaled effect with a running total gets its own numbered one: {CalculatedDamage1}, {CalculatedDamage2}, {CalculatedBlock1}, {CalculatedHeal1} and so on. Heal, Draw and Energy (Scaled) can now show running totals too.
  • Animated pictures: event pictures, Ancient pictures and battle backgrounds can be animated GIFs or short MP4s, like the character-select background.
  • The animation preview from Pets (frame grid, play, scrub) now also appears in custom visual effects, a card's play and hit animations, and enemy poses.
  • Events and Ancients: - Hovering an option that gives a card, relic or potion shows it. - An option can now play a custom sound or play a custom visual effect over the room. - An event or Ancient can now play a sound on entering (once or looped), a sound on leaving, and its own music in place of the act's. An Ancient can also play a sound when a relic is taken. - Custom Ancients can greet each character differently (yours, or Ironclad, Silent, Defect, Necrobinder, Regent), with a line after the gift for each. - An Ancient's gifts can now include every Ancient relic with a tag, including relics tagged later.
  • Epochs: events, Ancients and battles can now be locked until an epoch is revealed. An epoch can also unlock everything with a tag.
  • Battles: place the enemies yourself. Choose how far across and how high each one stands, so fliers can be stacked or side by side. Later waves and summoned enemies take the free spots.

Changed

  • Every chance-to-appear slider in the in-game mod settings is now in one Chance to appear (%) section: events, then Ancients, then encounters, each named.
  • Battle and enemy ids are much shorter (31 characters instead of about 130), so other mods no longer break on them. A run saved before this update with one of these battles in its history may not load.
  • The Enemy Types panel starts collapsed.

Fixed

  • An effect under If you do can now be changed by upgrades.
  • A mechanic with "for each N over its maximum" and no maximum set stopped the build.
  • Upgrade, would-die, over-maximum and Scry triggers set as an extra event did nothing, or did not build.
  • A scaled change that lowers a card's value now says "Reduce" instead of "Change … by".
  • Auto-Play starting this turn, if started during the enemy turn, used up that turn without playing anything.

1.2.11

2026-10-12

Keywords with a count, obtaining any relic, event options that need a relic, and a map marker. Re-export existing mods to receive generated game changes.

Added

  • Keywords with a count. Tick Has a count on one of your own keywords, and each card keeps its own number with it, shown on the card the way Replay is ("Charge 3"). Set the starting count, and what upgrading adds, on the card. Change a Keyword's Count adds, removes or sets it on this card, the card a trigger is about, a random or chosen card, or your whole hand, and can change the copy in your deck too. When it reaches a number rules on the keyword run effects on that card, so "at 0, exhaust this card" is one rule. A change in a fight lasts that fight, unless the deck copy changes too.
  • Obtain a Relic: one of your relics or any base-game relic, Ancient ones like Neow's Bones included. It works when a relic is picked up as well. The event reward Gain a specific relic takes base-game relics too.
  • An event option can need a relic, yours or a base-game one. Without it the option shows locked, with "Requires [relic]." or a line of your own.
  • Increase Statuses raises each debuff (or buff, or both) on a target by an amount. A negative Strength goes further down.
  • A Map Marker image slot (49x64). Without one, the HUD icon is the marker, as before.
  • A search box on the mechanic templates.
  • A third playability condition, offered once a card has a second. Each one has its own AND/OR and Invert, read in order: the first two are combined, then the third.

Changed

  • The × Stacks, Repeat per stack, × Relic charges and × X checkboxes sit in their own Scaling row under an effect's values. Where each one works is in its hover text.

Fixed

  • A relic, enchantment or other effect that adds or discovers a token card stopped the build when the mod had no token cards yet.
  • Seventeen effects stopped the build when put on an orb, among them Deal Damage to a Random Enemy, Scry, Enter Stance, Gain Mantra, Channel Orb, Remove Statuses and Mill.
  • Lose HP with no damage dealer, on a relic or a status, stopped the build.
  • Two mods made here that both used card growth, keyword edits or counted keywords replaced each other's, and the second one failed in game. A run saved before this update with such a card in the deck may not load.

1.2.10

2026-10-12

A trigger for a card leaving a pile, pets that bring cards from your deck, custom keywords on card triggers, and art and music fixes. Re-export existing mods to receive generated game changes.

Added

  • Whenever a card leaves a pile, for mechanics and relics: your discard pile, draw pile, hand or exhaust pile. Any way out counts, being played from it included. A shuffle is not counted unless you ask for it.
  • A pet's Brings cards can bring the cards in your deck with the tag or keyword, upgrades and enchantments included, instead of one of each of the mod's cards.
  • Only cards with keyword on a mechanic's card triggers ("whenever you play a card" and the rest) takes your own keywords too.
  • "Last card drawn" and "last card discarded" can count only cards since this card was played. A card that replays itself when it drew an Attack now stops when nothing new can be drawn.
  • Upgrade a Relic works at a campfire and when a relic is picked up.

Fixed

  • The HUD icon, select screen background, campfire and shop art, and the star icon were only used when a portrait was uploaded.
  • After a battle with custom music, the act's music did not come back, a later boss could have none, and entering a rest site crashed the game.
  • A status from another mod applied twice by one card stopped the export, and its card text showed the first amount twice.
  • "Last card DRAWN had a tag" had no field to type the tag.

1.2.9

2026-10-11

Statuses shared between mods, one copy per stack for separately tracked statuses, and Throwing Axe and Echo Form fixes. Re-export existing mods to receive generated game changes.

Added

  • A status from another mod: set a status to "Another mod" and give it that mod's id. Each status page shows the id other mods use. Your cards, relics, conditions and triggers then apply, read and remove the other mod's own status, so a character mod and an Ancient pack can share one count and react to each other. Without the other mod it does nothing. Making it temporary, raising its maximum, removing it for the run and pairing it on a HUD bar need a status of your own mod, and the Export checks say so.
  • Card text can take an energy icon count from a value, as {energyPrefix:energyIcons({energy})} or {energy:energyIcons()}. With the upgrade on the effect, an upgraded card shows one more icon instead of upgraded text, which the game paints green as a whole in the upgrade preview.

Changed

  • A Single status tracked separately (Bomb style) takes every stack as its own copy: applying 3 gives three, and each triggers and goes away on its own. Conditions and amounts that read its stacks count every copy, and "remove N stacks" removes N copies. A Counter status tracked separately is still one copy per application, with its own count.
  • "Remove" a status with no stack count removes every copy of it.

Fixed

  • A card that doesn't count as a card play used up Throwing Axe, and counted toward Echo Form's cards for the turn.
  • The enemy health bar's predicted damage counted a status tracked separately once for every copy.

1.2.8

2026-10-10

Scry triggers, merging cards, new conditions, scaling and cost changes, and orbs with no evoke. Re-export existing mods to receive generated game changes.

Added

  • Scry triggers: "Whenever you Scry" for statuses, relics and cards in a pile (a card in your discard pile can return to your hand), and "Only when Scry discards it" on a card's discard trigger.
  • Merge Copies of This Card in Hand: with enough copies in your hand, they become the card or token you choose.
  • Discard down to N cards: on Discard Cards. With "your hand is not discarded at end of turn" it keeps the hand and trims it to N.
  • Replay every Nth matching card, N times per turn: on "Play cards +N extra times".
  • Scales with the cards this card exhausted or discarded (Fiend Fire, Storm of Steel), and with the cards that have a keyword, in a pile or across the combat.
  • Conditions: you lost HP this combat, you discarded a card this turn, and this card was Retained last turn. Each also works as a playable or glow gate.
  • Cost changes: whenever you lose HP, if you have lost HP this combat, and for each card discarded this turn. A negative amount now makes a card cost more.
  • An upgrade can change how many cards a card discards (Prepared).
  • "Repeat per stack" on Replay Last Card from Previous Turn.
  • An orb's evoke can do nothing, so its extra effects are all it does.
  • The Ancient dialogue editor lists the text styles the game takes, and broken tags in dialogue are caught before export.

Fixed

  • A relic whose every effect has an If flashed on every trigger, even when nothing ran.
  • A tag count ignored the game's own tags (Strike, Defend, Shiv, Minion, Osty Attack).

1.2.7

2026-10-09

No more caps on orbs, potions, enchantments, afflictions or enemy types, and custom tags that last for one play. Re-export existing mods to receive generated game changes.

Added

  • Give Cards a Custom Tag can last for that play only. The card has the tag through its own effects, its repeats and everything that reacts to the play, and loses it afterwards. "The last card you played" checks still remember that the play had it.

Changed

  • A mod can have any number of orbs, potions, enchantments, afflictions and enemy types. The old limits (8 orbs, 15 potions, 12 of the rest) were never the game's, and going over one stopped the mod from exporting. The game still allows at most 10 orb slots.

Fixed

  • A right-click relic limited to once per turn could be clicked again and spend a charge each time. This was fixed in 1.2.6; re-export to get it.
  • A card that plays itself when it enters a pile ("when this enters the discard pile, play this card") replayed only once. It now keeps chaining while its condition holds, up to about 20 replays, and a play the game refuses (Unplayable, Velvet Choker) leaves it where it is.

1.2.6

2026-10-08

Remove a relic, undiscardable potions, free right-click relics and several encounters with one Ancient. Re-export existing mods to receive generated game changes.

Added

  • Remove a Relic: one of yours, a base-game relic, the relic running the effect, or a random relic you have (sparing your starting relic unless you say otherwise).
  • Potions can be undiscardable: the Discard button is greyed out, so the potion has to be used, on yourself or a teammate. An event that trades potions, or losing a potion slot, can still take it.
  • Right-click relics can be free (0 charges per click). Their activation limit, once per turn, combat or run, is what stops them, and a used-up relic no longer looks clickable. The export warns about a free one with no limit.
  • Several encounters with one Ancient: pick the same Ancient again, or use "+ Another encounter" on a dialogue for its next visit.

Fixed

  • Copies of the cards a pet brings (Dual Wield, a card that copies itself) stayed after the pet died or left, as did any that ended up in a teammate's piles.
  • An "any visit" Ancient dialogue behind visit-specific ones only played from the fifth visit on.
  • A random custom potion could be a Token or Event potion, which only your own cards, relics and events should hand out.
  • Two of the same "queue a combat reward" effect (gold, card, card removal) in one card, status or relic stopped the mod from building.
  • Two "Play combat music" effects in one card or relic, or two "upgrade a random card" kill rewards in one relic, stopped the mod from building.

1.2.5

2026-10-07

Minions, base-game statuses for enemies, temporary Max HP and card values, new conditions about cards, hover previews, and "Leave out of the mod" for everything. Re-export existing mods to receive generated game changes.

Added

  • Enemies can be minions: they die when every enemy that is not a minion is dead.
  • Enemies can start with, and apply through their intents, base-game statuses as well as your own.
  • Enemies and battles get categories and Duplicate.
  • Players can set an encounter's spawn chance in the mod settings, in game.
  • A new effect target: the enemy that just entered or was summoned.
  • Gain and Lose Max HP can be temporary, for a number of your turns or this combat, and a new Max HP (Scaled) effect gains or loses Max HP by any scaling source.
  • Temporarily change this card's values until it is played again, for a number of turns, or this combat. Both this and the permanent version can now change Hits.
  • New conditions: the card this effect is about costs, deals, gives or applies X or more, has a keyword or tag, or is a type or rarity; a card drawn by this card matches the same checks; and you are at the maximum of a status.
  • Enchant a Card can pick a random enchantment from a list of yours and the base game's. Each card gets its own pick from the ones that can go on it.
  • Spend Potions: discard all, random or your leftmost potions for Max HP, healing or Block for each. The Max HP can last only this combat, the closest thing to temporary HP in STS2.
  • Mechanics get the relic triggers whenever you alternate between an Attack and a Skill and whenever a status reaches a threshold.
  • Relics can preview up to three statuses, potions and cards when hovered, yours or the base game's. Potions get the same three lists. Cards get the status picker, and their potion previews can now show base-game potions.
  • Leave out of the mod now works for everything: relics, mechanics, potions, enchantments, afflictions, orbs, pets, events, enemies, encounters, Chronicles and token cards, not just cards.
  • A new condition, this relic has at least N charges, so a relic can do something else when it runs out (use Else, or NOT for "out of charges").
  • Activation limits can count only effects that ran: with this on, a failed If (for example a missed 10% chance) no longer uses up a relic's or mechanic's once-per-turn.

Changed

  • The "How long" choices on temporary Max HP and card values read as words instead of internal names.

Fixed

  • A card that named one of your statuses only as a hover tip failed to build.
  • Permanently changing a card's draw did nothing.
  • The status pickers on enemies (starting mechanics, intents, move conditions) were empty.
  • An Ancient marked "Is being tested?" still appeared in normal runs, and one set to replace Neow always did.
  • The project file inside an exported zip left out anything marked "Leave out of the mod", so restoring from it lost that work.

1.2.4

2026-10-07

Test unfinished work without it blocking the export, pets that bring their own cards, statuses that last the whole run, and tags you can hand out mid-fight. Re-export existing mods to receive generated game changes.

Added

  • Leave out of the mod: a card can be switched off for an export, so it is not built, checked or offered in a run while you finish it. The Card Library can switch off every card a filter shows at once.
  • Pets can bring cards: pick a custom tag or keyword, and one copy of each matching card is shuffled into your draw pile when the pet is summoned and taken back out when it dies or leaves.
  • Mechanics can keep their stacks for the whole run, saved with the run.
  • Remove Custom Status can remove a mechanic for the rest of the run, so it can never be applied to you again.
  • Give Cards a Custom Tag: tag the next N cards you play (for example the next 2 Attacks or Skills) or the cards in your hand, for the rest of the fight.

Changed

  • The description hint explains what {damage}, {calculateddamage} and the other running-total numbers show, and no longer offers the internal ones that always printed 1.

Fixed

  • Adaptive stances no longer carry what they adapted to into the next fight.

1.2.3

2026-10-06

Fixes for custom enemies and attack triggers, plus a few community requests. Re-export existing mods to receive generated game changes.

Added

  • Glow When and playability can check that any hittable enemy has N+ stacks of a base-game or custom status.
  • Event follow-up pages can have their own picture. A page without one shows the event's picture.
  • Characters can name their own Sea Glass, the way the game calls it Demon Glass for the Ironclad (Character, Event Thoughts).
  • Characters can be offered in Colorful Philosophers beside the game's colours, under a colour name you choose. Off by default.

Fixed

  • A custom enemy about to create cards now shows the card intent with a count, instead of the afflict intent.
  • Summoned enemies line up with the others straight away, and stand left to right in the order they take their turns.
  • Whenever an enemy attacks you and the other "you were attacked" triggers no longer fire on damage from your own cards, such as the Wither that Aeonglass shuffles in.
  • A glow or playability condition pointing at a deleted custom status no longer glows forever, and the export check names it.

1.2.2

2026-10-06

A card library, in-game previews for events and battles, and a long list of new effects, triggers and conditions from the community. Re-export existing mods to receive generated game changes.

Added

  • Card Library shows every card you have made in one grid, with search and filters for type, rarity, cost, tag and keyword, and what each upgrade changes, like the game's own compendium. Tokens can be shown or hidden. Click a card to edit it.
  • Events show an in-game preview: the room picture, title, text and option buttons laid out the way the game lays them out. Click an option to follow it to its page or result. Battles show a preview too, with enemies placed where the game places them.
  • If you do: any effect can carry follow-up effects that only run if it actually did something, such as exhausting a card when your hand might be empty, or spending gold you might not have.
  • Mark a Card puts a mark on a card you choose, a random card, or the card a trigger is about. The mark is an affliction, so it shows on the card. Relic and mechanic card triggers can then fire only for the marked card: when it is played, drawn, discarded, exhausted or retained.
  • Multiply This Card's Damage for the rest of the play, this turn, this combat or permanently. The card shows the multiplied number.
  • Transform This Card for while-in-pile triggers. For "after playing, this becomes another card", use a pile trigger "when this card enters the selected pile" into discard.
  • Spawn Enemy brings one of your enemies, or a base-game one, into the fight. It can repeat per stack on a mechanic or per charge on a relic.
  • Play Custom Visual Effect plays your own uploaded image or sprite sheet from a card, relic, mechanic or potion, on yourself, the target or all enemies.
  • Mechanics can react when your total Block gained or damage dealt reaches X, counted per turn, per card or per combat, with an unblocked-only option for damage. Relics' existing total triggers take the same choices.
  • Mechanics can react when your pet dies, and name one pet.
  • New If conditions: this card dealt X+ damage, gave X+ Block, applied X+ of a status, X+ energy was spent, you attacked a different enemy than last time, and your last drawn card was a type or tag.
  • Relic triggers can be limited to several fight types at once and to fights with an enemy carrying one of your enemy tags. Extra relic triggers get the same option.
  • Enemy moves can force themselves as the next intent when their condition is met, once or every time. The intent changes as soon as the condition is met, even mid-turn.
  • Is being tested? keeps a card, relic, potion, event or battle out of normal play while you test it with the console.
  • Map events can have a chance to be offered. With in-game content switches on, players can adjust every event's chance in the mod settings.

Fixed

  • A formula that counts a custom status no longer blocks export when the status is set.

1.2.1

2026-09-29

More room for larger projects, more control over card rewards, and fixes for random orbs and the effect editor. Re-export existing mods to receive generated game changes.

Added

  • Copy Cards from a Pile can make temporary copies of cards in Hand, Draw, Discard, or Exhaust, with a chosen destination. Deck still makes permanent copies.
  • Discover a Card by Tag accepts multiple tags and can show every matching card once. Obtain Random Potion can use only custom potions and filter by rarity. Cards can preview up to three custom potions.
  • Play Music Until Combat Ends changes music when an effect fires and stops it when the fight ends. Increase Max Energy for the Run persists between combats. Character settings also offer a Hand limit from 10 to 30; the limit applies to everyone in a run with that character.
  • Conditional effect blocks have Then, on the same successful condition follow-up effects. A chance roll can scale from relic charges, and a successful roll can increase those charges without rolling again.
  • Status-negation passives can keep their own stacks, filter to enemy applications, and convert blocked stacks into HP loss or another custom status.
  • Relics can react when a specific pet dies. Potion-used triggers can count only the owner’s potions. Apply Custom Status exposes Scale with X; Detonate Status on Enemies can target a single enemy. Tagged-card playability includes Anywhere in combat.
  • Timeline Epochs have editable, translatable unlock requirement text. Custom enemies can hide intents. Ancient act selection now puts Act 1 replacement and appearance chance together; select only Act 1 for a Neow replacement that cannot appear in later acts.
  • Cards and tokens have Have N+ cards with a tag in a pile under Playability Condition and Glow When. Choose a tag, minimum count, and Hand, Draw, Discard, Exhaust, or permanent Deck. Different cards and tokens sharing the tag count together; only the owning player’s pile counts.
  • Character settings include five native flying-card trail styles and nine speech-bubble presets, plus custom color pickers and hex values for both. Choose the trail animation independently of its color.
  • Custom battles have a Death description, with automatic rows for the description and battle name in Translations. Descriptions use the native defeat-screen and run-history messages; blank descriptions receive a readable default.
  • World → Battles & bosses → Camera framing controls each custom battle’s zoom and horizontal/vertical position. Vanilla encounters have their own framing: for example, Bygone Effigy Elite uses 88% zoom and vertical offset 50. Defaults preserve existing custom battles.
  • Editor dropdowns now include search and sort choices A–Z. Multi-selects for card previews, token choices, Ancient gifts, Epoch unlocks, and event reward candidates are searchable; filtering keeps existing selections.
  • World → Enemies → Appearance & sound → Display height (pixels) now supports heights up to 1,600 pixels. Custom enemies also appear in Mechanics → Enemy Types. Enemies and Battles have their own sidebar item lists, and Stances starts collapsed.
  • Relic-charge scaling now extends across damage, Block, healing, resources, statuses, card creation, orbs, pets, and selection counts. Other supported actions offer Repeat per relic charge. Charges are read once per effect and are not spent; zero charges do nothing.
  • Gain Max HP has × Relic charges (relic effects). It multiplies the reward by the current saved charges without spending them. Start at 1 charge and add 1 charge after the reward for permanent Max HP gains of 1, 2, 3, and so on.
  • Attack-count conditions now explicitly say Attacks YOU played this turn and count the player recorded when each attack was played, including if a card later changes owners.
  • Multiple Add Token Card effects have independent live counts and upgrade fields. Manual descriptions can use {tokens1}, {tokens2}, {tokens3}, and so on.
  • World → Battles & bosses → Battle background accepts a custom image, with an editor preview and saved artwork. It fills the battle screen behind creatures and the interface.
  • Events no longer have the old 10-event file-format cap.
  • Relics have Whenever this relic gains charges. Positive gains trigger once per change; spending charges, loading saved charges, and nested recharge loops do not retrigger it.
  • World → Battles & bosses → Battle music accepts full MP3 or OGG Vorbis tracks up to 2.5 MB each. Tracks loop during the battle, follow Music volume, and release when combat ends.
  • Whenever an enemy attacks you has Only when the attack damage was fatal, including hits followed by revival. This reacts to the actual fatal result; use the existing before-death trigger to prevent death.
  • Energy counter layers restore correctly from browser storage even when a saved character contains empty image placeholders. Building layers from color now reports storage failures.
  • Export naming now distinguishes filenames that differ only in capitalization, including custom sounds. Duplicate internal IDs and any remaining duplicate output paths report the conflicting items or path instead of silently producing broken references.
  • Cards have an Exclude from card rewards checkbox. It keeps their rarity and shop/combat-generation eligibility; explicit card grants still work. Reward rolls safely offer fewer choices when too few eligible cards remain.
  • Add Random Card from Pool can filter by a Required custom tag, combined with its existing filters.
  • Relics can Track charges without a right-click trigger. Scaled effects can read This relic’s charges, or use relicCharges in expressions. Charges persist between combats and saves; Add Charges to a Relic changes the counter. Right-click effects read charges after paying their activation cost.
  • World → Enemies creates enemies with static art or idle/attack/hit/death sprite sheets, custom sounds, HP and Ascension bonuses, starting mechanics, and ordered move cycles. Moves can attack multiple times, Block, heal, or apply mechanics, and require low HP, mechanic stacks, or completed cycles. Death can summon another enemy.
  • World → Battles & bosses combines vanilla and custom enemies with counts, random alternatives or tags, HP overrides, and fight-specific mechanics. Choose normal, early weak, elite, or boss battles; select named areas, Ascension limits, character restrictions, and a chance to join the encounter pool. Bosses have a map-icon upload.
  • Battles support multiple waves in one combat, normal or disabled rewards, and custom Gold ranges. Select a custom battle in an event and use its victory page for selected rewards or the next fight. The native encounter picker now offers the ordinary main/beta encounter catalog instead of only four fights. Player companion models are excluded from enemy rosters; some native enemies still require their original encounter setup.
  • Enemy moves and death effects now support ordered effect sequences: attacks, Block, healing, status application/removal, player draws/discards/Energy, card creation, and enemy summons. Add custom visual sheets, sounds, waits, screen shake, and radial blur between actions. Converting an existing move preserves its effects and hit visual.
  • Status changes before an attack use an unknown intent rather than showing a damage value that cannot account for their hooks. Death effects keep combat open until they finish, including when the last enemy dies. The Piercing hit visual now resolves to the game’s actual stabbing asset.
  • Chronicles → Unlock requirement can now count boss or elite encounter victories, require clearing an act or named area, or require winning at an Ascension level or higher. Choose this character or any character. Encounter milestones update after combat; Ascension wins update at run end. Existing encounter statistics and available victory histories count, and earned Epochs stay earned.
  • Events → Can occur in / when → Only in named areas adds Overgrowth, Underdocks, Hive, and Glory. Named areas combine with the existing act-number restriction and are also available for custom Ancients.
  • Translations now includes a separate combat tooltip for each mechanic and a Custom keywords section for keyword names and tooltip text. Mechanic tooltip translations preserve live stack counts through {x} / {Amount}.
  • Event rewards now include base-game cards (including curses), custom potions, and random cards, relics, potions, or enchantments. Roll from custom content, base-game content, both, or selected candidates; card/relic/potion rolls can filter by a custom tag. Card grants can be upgraded.
  • Events can upgrade deck cards, replace one custom relic with another, and send each individual battle to its own victory page for back-to-back fights and escalating rewards. Chained fights start a fresh replay recording after the previous battle ends.
  • Custom Ancients can replace Neow in Act 1 and use an explicit Appearance chance (%). Chance is rolled consistently for the run and act; when several mods force an Ancient, BaseLib's first successful replacement wins.
  • Relics have triggers for HP lost from a card, mechanic threshold crossings (up to four), accumulated damage/Block, alternating Attacks and Skills, and right-click activation with charges. Attack-damage triggers remain available. Right-click activation is restricted to your combat turn; charges persist in saves and can be restored with Add Charges to a Relic.
  • Cycle through effects on a relic trigger runs the first effect on its first activation, the next on its second, and loops. The cycle and accumulated damage/Block counters reset after combat.
  • Permanently Change This Card's Values changes this card and its permanent deck copy, including saving and loading. Supports existing damage, Block, healing, draw, Energy, status values, and non-X Energy cost.
  • Enchant a Card → Random eligible cards in a pile supports a pile, card-type filter, and card count. Incompatible cards are skipped.
  • Cards and tokens now have Increase X by, with a separate upgraded value. It changes the resolved X without charging extra Energy or Stars and stacks with X bonuses from relics/mechanics.
  • Discover a Card → Enchant the chosen card applies your selected enchantment and stacks directly to the chosen card, if compatible. Skipping does not enchant anything.
  • Whenever you die is available for mechanics and relics. It reacts to death; it does not prevent death or revive the player.
  • The enemy’s intended attack damage is a scaling source, also available as targetIntentDamage in expressions. It totals all hits before Block, including damage modifiers against the effect owner. On a targeted card it reads the target; elsewhere it reads the first opponent. Non-attacking enemies return zero.
  • Play This Card → Ignore Unplayable for this forced play allows explicit automatic plays of Unplayable cards. The keyword is restored afterward; other play restrictions still apply.
  • Events and Ancients can be organized into categories. All category lists now support 200 categories.
  • Custom Ancients have independent Map icon and Top-bar / run-history icon uploads, alongside the speaking portrait and background.
  • Custom Ancients now have a separate Speaking portrait upload (256 × 256, transparency supported), used beside dialogue. Leaving it empty preserves the background-image fallback.
  • Events and Ancients now offer Image fit (Fill screen or Show entire image) and Text size (%). Long event text and choices can scroll so lower options remain reachable.
  • For each stack gained/lost of a status can watch Any status, with Buff/Debuff filters. Whenever you change a status now offers Changed by → Anyone, including enemies, allies, and changes with no applier. Existing triggers keep their original source setting.
  • Cards and tokens can Exhaust Discard to pay Energy. Set how much Energy each selected card covers. The card becomes playable when Energy plus available discard cards can cover its modified cost. Players can preserve Energy by exhausting more cards; free plays and replays do not charge again. Fixed Energy costs only; Star costs still apply.
  • Added Last card discarded was a type / had a tag and Last card milled was a type / had a tag to effect conditions. Use these after discarding or milling for conditional bonuses. Milling does not count as discarding, and an empty mill clears its previous result.
  • Wears out can now count times this card is played. Remaining uses persist between combats and saves. Pick another card under Becomes for an Erode-style permanent transformation, or leave it on Leaves your deck. Use {Expiry} in your description to show the remaining uses.
  • Every resolved play consumes a use, including replays. Combat copies keep their own remaining uses. Expiration waits for play cleanup, and a lethal last use still transforms the permanent deck card after combat ends.
  • Cards now have Duplicate on acquisition. Choose 1–10 extra permanent copies when that card joins the deck. Copies preserve upgrades and enchantments, do not recursively duplicate, and remember that they are copies across saves. Starting-deck cards are not acquisitions.
  • Card previews and generated descriptions show these settings. Checks flag missing Erode replacement cards and unplayable play-based countdowns.
  • Cards now have a Reward pool selector: your character, Colorless, Ironclad, Silent, Regent, Necrobinder, or Defect. Cards assigned to another pool retain Chronicle unlock requirements and use that pool's native frame and energy presentation.
  • Added the Players in run ≥ N condition, including its inverted form, for solo/co-op branches.
  • Gain Gold (Scaled) now has Reduce instead (lose gold). It supports the same scaling sources and expressions, and cannot remove more Gold than you have.
  • Removed the 120-card project limit. Status, Curse, and Event cards no longer consume a fixed allowance for your character's ordinary cards. Existing upload and export size safeguards still apply.

Fixed

  • Monster Plating now exports the correct game power. Powers and stances sharing a name no longer collide on an icon file, and a relic sharing a token’s name no longer creates the wrong type of object.
  • Incoming-attack triggers also fire on fatal hits and preserve the attacker as their target. Banking prevented HP loss now notifies stack-gained triggers and never changes stacks during a damage preview.
  • Hidden/no-flash statuses no longer shake creatures on status changes. Custom Ancient map, speaking, and history icons survive the server export step. Backgrounds preserve up to 2048-pixel resolution instead of inheriting the 512-pixel icon cap.
  • Enemy card creation and summoning use their matching intents. Created cards visibly travel to their piles. Summoned enemies appear to the left at the summoner’s height without moving existing enemies.
  • Damage-and-upgrade-on-kill effects show which card was upgraded. Multiple token-creation effects keep their separate live counts and upgrade values.
  • Draw Cards by Tag and the related type/rarity filters now fire native on-draw events, including on-draw retain scaling, once per successfully drawn card. They respect No Draw and hand capacity.
  • Fixed silent random-card generation producing invalid code when Allow duplicates and Add all generated cards together were enabled together.
  • Token cards now appear in the miscellaneous/token compendium section without also appearing in the character’s regular card list. Re-export affected mods to update their compendium filters.
  • Fixed Orobas failing while preparing Archaic Tooth when a custom starter carries Spiral or another enchantment whose normal eligibility excludes its transformed card. Existing enchantments carry over without widening their normal eligibility.
  • Restored the original event text position and default art placement after the scrolling change moved them upward. Long content still scrolls; explicit Fill screen / Show entire image modes remain available.
  • Added a clearer export warning when Discover a Card is followed by Enchant a Card → That card. That target refers to a trigger’s card, not the Discover selection.
  • Fixed custom Ancient background images being shrunk and offset by the vanilla scene layout. Fill screen now fills the event area.
  • Visit-specific custom Ancient dialogue no longer suppresses vanilla fallback when no custom conversation is eligible for that visit.
  • Checks now explain when Channel Random Orb uses a custom pool with no included orbs, rather than leaving an unexplained no-op.
  • Fixed Any player token cards getting stuck when played on yourself. Tokens now use the same solo/self-target handling as ordinary cards. Re-export affected mods to receive the fix.
  • Channel Random Orb now honors each custom orb's Include in random orb rolls setting for custom-only and combined pools. A pool with no eligible orbs safely does nothing; direct channel effects can still summon excluded orbs.
  • Damage (Scaled) now shows one Hits selector. Duplicate controls could display contradictory targets even though the effect stored only one target.

Editor tips

  • Added a full Expressions & Formulas tutorial in the Guide, linked beside Formula inputs: worked recipes, available values, trigger context, rounding, and troubleshooting. Formula multipliers now stay visible so a previous scaling choice cannot hide an active multiplier.
  • Missing HP already works in expressions: max(0, selfMaxHp - selfCurrentHp).
  • To duplicate a newly acquired card, use a relic's When a card joins your deck (permanently) trigger, filter by the desired tag, and add Copy the Card This Trigger Is About with Add copies to → Deck. Set Copies to the number of additional cards. These copies do not recursively copy themselves.

1.2.0

2026-09-09

A lot of this update came from things you were trying to make and couldn't quite get the editor to do. There's also another layout to try, because finding the right setting shouldn't be the hard part.

New

  • Fixed non-soaking pets resummoning alive but invisible after death. Their model and health display are rebuilt when the game removed them; authored hidden HP bars stay hidden.
  • Fixed the first-debuff multiplier doubling Dark Shackles' Strength reduction twice when another debuff came first. This covers the native Unsettling Lamp and custom first-debuff passives. Re-export affected mods to receive both fixes.
  • Play This Card can now target the enemy that triggered it, including combo stacks gained from individual hits. It skips missing/dead targets and avoids a second activation caused by moving between piles.
  • Fixed export rejecting an unfinished mechanic trigger with no effects. Empty blocks remain editable and produce a warning; working triggers still export.
  • Added Move Top Draw Cards to Discard (Mill), including upgradeable card counts. Moves cards directly without drawing or reshuffling an empty pile.
  • Scaled effects can read the played card's X value, including X bonuses. Use max(0, playedCardX - 2) on Energy (Scaled) inside Whenever you play a card for an X-minus-two refund; non-X cards return zero.
  • Events can now be custom Ancients: choose Room type → Ancient, select at least three Ancient-rarity relics, and author the greeting, farewell and artwork. They join the Act 2/3 Ancient pool; Act 1 keeps its starting Ancient.
  • Export → Mod Info can include in-game content switches for individual reward cards, relics, potions and events/Ancients. Switches affect future single-player offers, preserve owned content, and are ignored in multiplayer. Base-game cards fill a completely disabled reward rarity.
  • Enchant a Card descriptions now show the chosen-card count, optional selection, and tag/enchantment filters.
  • Events can now open follow-up pages, choose a random follow-up, and start native battles (including two Punch Constructs). Set a victory page to offer custom rewards or further choices after combat. Checks identify missing pages and loops with no exit; translations include all pages.
  • Energy Counter now previews uploaded layers, with an Energy slider and animation toggle.
  • Fixed form victory poses being lost when combat clears statuses. Victory and death sheet animations now hold their final frame. Pet and form sprite sheets preserve frame metadata during export; sprite-sheet uploads accept up to 25 MB.
  • Fixed lethal hits against “You cannot die” skipping HP-damage triggers. Only HP actually lost counts; hits at 1 HP do not count as HP loss.
  • Fixed Apply +N of a status increasing removal amounts. Fixed ongoing card-play conditions checking the original power card's energy instead of the card just played.
  • Fixed Aeonglass waiting on a missing task when a card does not count as a card play. Re-export affected mods.
  • Added Remove This Card From Combat. Use it on play or in a pile trigger to make a token disappear without discarding or exhausting it. Permanent deck removal remains a separate effect.
  • Enchantments can explicitly allow Status and Curse cards. Enchant Card selections support unenchanted or matching-enchantment filters, a tag, multiple selections, and skipping.
  • Curses keep the native curse frame. Custom token cards are included in their character's Compendium filter.
  • Damage (Scaled) now exposes Repeat per stack. Balance feedback recognizes Star costs and avoids treating Star cards as ordinary energy-only cards.
  • Chronicles can unlock custom relics and potions as well as cards, and display rewards in selection or rarity order. Newly earned Epochs now record the run discovery and show the native notification, allowing the game's end-of-run Timeline routing to recognize them.
  • Added Temporary HP under mechanic passives. Each stack absorbs one HP loss and is spent when it protects you, including partial absorption.
  • Scaled effects can use your current Gold, and Gain Gold (Scaled) is available. Chance conditions can add percentage points per stack of a selected mechanic, clamped to 0–100%.
  • Mechanics can target their remembered applier outside status-application triggers. Pile triggers can watch any combat pile except exhaust.
  • Manual card previews can always show the upgrade or follow the source card's upgrade. Full-art cards have a transparent-background option that removes the built-in shadow, border, glass and text backing.
  • Opening another cloud character now saves the outgoing character first and preserves edits made while saving or loading. Unsaved state survives a browser reload. Saved effect groups can be removed beside the insertion selector.
  • Renamed the event relic reward to Gain a specific custom relic to make its existing selector easier to find. Re-export mods to use the new generated behavior above.
  • Added Play Custom Sound under Utility effects. Upload or choose a sound inside any effect stack, including relic triggers and Otherwise branches. It uses the game's sound-effects volume.
  • Fixed custom-status-gated Discover choices failing to compile with a missing power class, including token cards and relics. Re-export affected mods.
  • Description colors now preserve the game's green upgrade numbers. Your chosen text color still applies to the surrounding text and unchanged values. Re-export affected mods.
  • Added Shuffle Hand into Draw Pile. It leaves discard and exhaust alone, with an option to skip shuffle-trigger effects.
  • BaseLib is now installed separately. Export instructions link to Steam Workshop for automatic updates and the official manual download. Use one BaseLib installation; remove an older manual copy when switching to Workshop.
  • Fixed beta combat endings failing to serialize custom epochs. Re-export your mod for the fix. Main and beta reference DLLs were checked against both installed branches on September 19.
  • Channel and evoke mechanic triggers can now filter for one of your custom orbs.
  • Bring Matching Combat Cards to Hand has an Exclude exhausted cards option.
  • Remove all custom-status stacks now preserves mechanics with Keep at zero enabled. Pinning alone controls display order.
  • Mechanic HUD bars now reflect increases to their maximum capacity.
  • Fixed token cards failing to compile with damage-result conditions such as Damage was lethal. Fixed custom hit animations attaching after an attack had executed and repeated random attacks reusing a local variable name.
  • Choice-option validation errors now name the affected card or token.
  • Fixed older epochs with no unlock requirement missing from the Timeline. They now appear ready to reveal, and their cards stay available as before. Re-export your mod for the fix.
  • Effect conditions can check for a custom enchantment on the card, or a minimum number of its stacks.
  • Summon Pet can give a timed pet extra turns when the summoning card is upgraded. Set the pet's normal duration under Leaves after, then set the extra turns on the summon effect.
  • Damage formulas can read a custom status now. Use selfCustomStatusStacks or targetCustomStatusStacks and pick the status below the formula. For example, energySpent * (4 + min(10, floor(selfCustomStatusStacks / 10) * 2)) adds 2 damage per Energy for every 10 stacks, up to a bonus of 10 per Energy.
  • Fixed Transform All Cards Named catching the card while it was still being played. That copy now finishes playing before it transforms, so Exhaust and Return to your hand can finish properly. Re-export your mod for the fix.
  • Affliction and enchantment effects now check their attached card for “this card” conditions, including inside Otherwise branches.
  • Added "Whenever you lose HP from a card" to mechanic triggers. Use it with Apply Status → Strength to reward card-caused HP loss. It fires once per HP-loss event, and ignores fully blocked hits and damage without a card source.
  • Remove Block can now take a percentage of your current Block. Set it to 50 to lose half; odd amounts round the loss up.
  • Added Increase Mechanic Maximum. Pick a mechanic with a stack limit and raise that limit for the current fight or the rest of the run. Works in effect blocks, including on-kill triggers, and as a permanent event reward. Run bonuses survive saving and loading; raising the limit doesn't add stacks by itself.
  • Fixed pets coming back invisible after dying and being summoned again. Their idle animation now restarts instead of staying on the last death frame. Pets with a death sheet but no idle sheet return to their normal image. Re-export your mod to get the fix.
  • Airborne and push/pull animations now move just the character's art. The HP bar and status icons stay put. Re-export your mod to get the change.
  • Scaled effects can use the damage of a hit just before it lands. Choose the incoming or outgoing before-hit trigger, then use pendingDamage in an expression, such as floor(pendingDamage / 2). This includes damage modifiers, before Block.
  • Added Swap Draw and Discard Piles. It keeps the cards and their order, including upgrades and enchantments.
  • Shuffle Draw and Discard Piles has a “Do not trigger shuffle effects” option. Normal pile-entry effects still fire, and later automatic shuffles still work as usual.
  • Cards and tokens have a “Capped?” checkbox for Strength and Vigor. Set the maximum bonus per hit: 5 damage three times with a cap of 3 stays at 8 three times, even with 25 Strength. The cap is shared by Strength and Vigor; Weak, Vulnerable and enchantments still work normally. Re-export your mod after setting it.
  • Added max-HP comparisons to conditions. You can check whether a target has more max HP than you, or equal/less, without injuries changing the answer.
  • Statuses can lift their holder off the ground while active. There's also a push/pull animation block. Both are visual tools; pair them with damage, Block, or a passive for the actual effect.
  • Fixed an export error when a card checked the previous card's tag more than once.
  • Fixed card-driven pet attacks not triggering Phantasmal Gardener's Block. They now count as attacks properly, including when a token orders the pet to attack. Re-export your mod to get the fix.
  • “Anyone” cards now give Block and statuses to the creature you picked. They were applying them to you even when you targeted someone else.
  • Raised the pet limit from 20 to 151. That's room for 151 different pets in a project; you don't need to summon them all at once.
  • Events can remove a specific card from the deck without opening a selection screen. Pick the card and how many copies to remove. If the player doesn't have it, that step does nothing.
  • The ally-card-play trigger now has card, type, keyword, and tag filters. Create Token blocks also let you give tokens to teammates, everyone, or the player whose card triggered the effect.
  • Added Change Enemy Intent. It can pick a random different move or look for an attack, defense, buff, or debuff. The enemy continues its sequence from that move. Locked transitions and special moves are excluded; if nothing else matches, its intent stays as it was.
  • Fixed character sprites and idle animations not showing up if you hadn't uploaded a portrait. A sprite sheet or normal sprite works on its own now.
  • Grey token cards keep the colourless energy symbol now. Tokens with their own colour still use your character's symbol.
  • Hiding a pet's HP bar no longer makes it impossible to target. Its status icons stay with the pet too.
  • Summon Pet has a Pet HP upgrade field, and Remove All Pets does what it says: your pets leave combat without being killed.
  • Added “This card was made free by an effect” to effect conditions and playability rules. You can use it to skip a token payment on a free card without also skipping it on every card that normally costs zero.
  • “Before taking a hit” can be limited to hits that would be lethal after your current Block. Give Block there and it arrives before the hit lands. Later effects that prevent HP loss or redirect damage aren't included in that check.
  • Fixed uploaded per-type frames being tinted by the character colour. Picking black could turn the whole uploaded frame black. A Power-only frame still only applies to Powers; use the default slot to cover every card type.
  • “This card is upgraded” works in enchantment pile triggers now too. Card and token pile triggers keep checking their own upgrade state.
  • Pile triggers can fire when this card enters hand, draw, discard, or exhaust. This includes turn-end moves, so you don't have to pretend every trip to discard is a discard effect.
  • Login emails now ask you to press Continue before signing in. Opening or previewing the email link won't use it up. Already-used and expired links also get their own messages.
  • Fixed an export error on cards with more than one pet attack, including a second attack gated on another pet being alive.
  • Description overrides now hide the automatic Wears Out sentence too. You can still use {expiry} in your own text for the live countdown.
  • “The targeted pet is…” lets a card do different things for each pet. Use it on separate Discover blocks to give each pet its own three cards to choose from.
  • Cards and tokens can target “Any pet” now. Pick one of your living pets to give it Block, healing, or statuses. “Any ally” still means a multiplayer teammate.
  • Mechanics can reward you for every X status stacks gained. Pick the status, set the number, and add your reward. Leftovers carry over, losing stacks doesn't erase progress, and a big gain can give more than one reward.
  • Pet attacks and {petdamage} now account for Vulnerable, the pet's own Strength/Weak, and card enchantments. They don't borrow the player's Strength.
  • Weak's card tooltip uses “Weakened creatures…” again, so applying it to an enemy doesn't read like a debuff on you.
  • Energy symbols in card text and card costs now use your uploaded orb artwork. They were still using an orb drawn from the character color.
  • You can leave energy layers empty, or use just a stationary backdrop. Moving your background out of a spinning layer no longer makes the whole counter disappear.
  • Fixed random-target pet attacks on token cards getting stuck in the middle of the screen. Pet Attacks also has its own Random enemy option now, so you can use it directly in a mechanic trigger.
  • Fixed enemy-held scaled statuses ignoring the other enemies when set to Other allies. This was breaking chains like Detonate spreading damage from Burning.
  • Fixed the energy backdrop being left out of compiled downloads even though it was present in the source export.
  • Leaving a stance no longer adds a visible “No stance” icon. Exit effects, like Calm's energy, still happen.
  • Card costs can follow your statuses. Reduce a card's cost for each custom status stack you apply, or tie it to the stacks you currently have. The current-stack option goes back up when you lose stacks.
  • Apply statuses to pets. There's a new effect for giving your living pets a custom or game status. Pets also get their starting mechanics back when you summon them after they die.
  • Fixed token choices showing the base version when they were going to give you an upgraded token. The choices now show what you'll actually get.
  • Fixed {petdamage} staying at its base value when the card was upgraded.
  • The HP-bank passive now has its missing status picker, with an explanation of what gets stored and when.
  • “When this card is discarded” no longer checks for a pile the card has already left. Multiple discard groups can run on the same card. The editor also explains the difference between discarding through an effect and clearing your hand at turn end.
  • Discover tokens by tag. In Discover a Card by Tag, set Discover from to Your tokens. Put the same tag on your twelve tokens and set Candidates shown to 3 to offer three random, different choices.
  • Upgradable curses. Turn on Allow upgrades in a custom curse's Upgrade section. It can then be upgraded by card effects, rest sites and other upgrade sources. Existing curses keep their old behavior.
  • Damage-result statuses can go somewhere else. Deal Damage and Apply Status from the Result has an Apply status to setting: the enemy hit, yourself, your teammates, all allied players, all enemies, or all other enemies.
  • Cards and tokens can now start with Replay. Add Give This Card Replay to their effects, then turn on Change Replay when upgraded if you want the upgraded card to play more (or fewer) times. Replay 2 means three plays total.
  • Upgrade specific cards or tags with Upgrade Cards in a Pile. Pick your card, a token, a base-game card, or a custom tag under Which cards. Turn on Upgrade every matching card to upgrade each eligible copy once without a picker. Deck upgrades stick around after combat; other piles affect that fight's cards.
  • One download for main and beta. Pick Automatic in Game Branch when exporting. The mod chooses the right build when the game starts. Features that only exist on one branch still need a single-branch export, and switching branches mid-run is still up to the game's save format.
  • A smaller sidebar. The << button in the Newer layout shrinks navigation down to icons. Click >> to bring the names back. It remembers your choice.
  • Compact card lists. Pick Compact · drag order in the sort dropdown to fit more cards on screen, in the order you arranged them. Switch back to Drag order to move them around.
  • More control over events. Choose which acts an event can appear in, and whether another custom event has to be visited first.
  • Fixed duplicate token groups when switching lists, including folders named Tokens.
  • Fixed a source ZIP issue that some unzip tools were less forgiving about. Automatic source downloads include both gameplay projects and the loader.

Mods without a character. Change Mod Type to Content Pack in Mod Info. Make a few cards, a relic, an event, or a whole collection. Cards join the existing characters' reward pools; relics, potions and events can turn up in their runs too. Their usual rarity and unlock rules still apply. You can leave the other lists empty.

Folders for tokens. Tokens have their own categories and sorting now. Use the Tokens view beside All Cards to work on them without your whole card pool in the way.

More archetypes in Balance. Add the archetypes your deck actually uses and assign their cards. At least 15% of the pool counts as primary, 10% to under 15% as secondary. Smaller synergies stay out of the archetype totals. There's an optional warning for two or fewer primary archetypes, or five or more.

A backdrop for the energy counter. One stationary layer behind everything else, including both spinning layers. Existing layers keep their positions.

Epoch unlock requirements. Set an Epoch to unlock after wins, completed runs or floors climbed. Its requirement appears in the Timeline hover text. Cards assigned to it become available when you reveal the earned Epoch. Existing Epochs keep their previous behavior until you choose a requirement.

A newer layout. The layout selector now has Old, New and Newer. The newest one uses full names in the navigation, keeps Balance and Export within reach, and adds a section picker to long editors. Pick a section and it'll open it for you, even if it was collapsed. Same project, same settings; switch back whenever you like.

Fixes

  • Description overrides now hide the extra running-total sentence when Override replaces auto-text is on. You can also use {calculateddamage} in a scaled card's own text without turning on the running-total checkbox.
  • The guide now separates solo card counts from full pools including multiplayer cards, with main and beta versions listed. Solo pools have 35 uncommons and 25 rares; beta's full pools have 38 and 27.
  • Separate copies of a mechanic now read their own counter when checking their own stacks. One copy reaching its threshold shouldn't make another copy fire early.
  • Fixed an export error with nested Otherwise effects on cards in a pile. This was rejecting setups the editor allowed, including Oathsworn's Chastise.
  • Creating cards without the fly-in preview now updates the discard and draw pile counters too. You can still turn the preview on if you want the animation.
  • Added a warning when a random status amount runs into the mechanic's stack limit. A Single mechanic without stack accumulation caps at one, even if the effect rolls more.
  • Enter Stance now uses the custom stance you selected. Add Card to Hand and Discard can use your cards and tokens too, without turning them into Wounds. Missing selections point you back to the effect instead of quietly substituting another card or stance.
  • An unfinished tag clears when you switch cards or tokens. Press Enter to add it to the card you're editing.
  • The “Gain Status per HP-Damaging Hit” export error names the card or mechanic to check and explains which trigger it needs.
  • Negative random amounts work for custom status stacks. A range of -10 to -1 rolls within that range instead of sticking to one value.
  • Token-count upgrade controls show up again on cards that use them.
  • A full card description override also hides the extra automatic scaling text in the editor preview.
  • Uploaded Epoch portraits use your art in the small Timeline view instead of the NOPE image.
  • An image upload that finishes after you switch projects can't write into the project you switched to. Saving a cloud copy also keeps its art separate. New projects no longer pick up old, unscoped cached images.
  • Switching layouts while editing a card no longer leaves its panel blank.
  • Percentage passives show what their numbers mean. With the default stack calculation, 101% means 1% more per stack, and the editor shows the result at six stacks. The calculation picker sits beside the value now.

There is clearer help around stacking and death prevention too. Stacking adds to one status instance; use the stack multiplier when its effect should scale with the amount. A fatal hit has different timing from an ordinary after-damage trigger, which matters for healing and revival mechanics.

Still being investigated

The Susan crash, the Ember freeze, and the reports of revival or upgrades changing behavior mid-run aren't confirmed fixed. The small reproductions passed, but we haven't reproduced those exact failures.

1.1.0

2026-09-09

Everything since 1.0. A lot of this came from people trying to make a card or relic do something the game already does, and finding the one option that was missing.

We worked through the vanilla cards, statuses, relics, potions, orbs, enchantments and afflictions to fill those gaps. There is quite a bit here.

New

Your own afflictions. Give a card a debuff you designed: extra effects, keywords, a different cost, or something that happens while it waits in a pile. The seven vanilla afflictions are still there beside them.

Passive effects can leave some cards out. "Only for cards with this tag" now has an inverse. Exclude a tag, a card type or a particular card from a mechanic without having to tag everything else in the deck.

An attack can ignore Block. A checkbox on cards and tokens. It still counts as an attack, with the usual damage modifiers and things that happen on a hit.

More ways to choose, copy and change your deck. Copy a card with its upgrades and enchantments, enchant cards permanently, or offer a choice from your own pool, Colorless cards, or both. Upgrade or transform the first, last or every Basic Strike and Defend. A reward can also give you a card even if you skip the choice — the Hefty Tablet arrangement.

A relic can show you its card before you take it. The Dusty Tome shape. The card is picked when the relic is offered, appears in its hover tips, and stays picked through a save. You can choose the pool, rarity and whether it comes upgraded.

Relics have more say in rewards. Change which card pools are offered, upgrade or enchant cards as they arrive, and choose whether a relic can appear at Neow. Card upgrades can happen before or after other changes to a card, including when the card is already upgraded.

Cards and tokens can carry campfire quests. Having the card in your deck adds an option at the rest site. Give it effects, a limit on uses, and a choice of whether it disappears once it is finished. Cards used just as choices can resolve their effects without being played or spending energy.

More precise triggers. A hit and a hit that actually takes HP are separate things. So are the first event and every event, a card being created and drawn, an orb being channelled and evoked, and the different points at which a turn starts or ends. Relics can also react to Osty's attacks and an enemy losing their last Block.

A counter can belong to a turn, a fight or the whole run. Limit how often an effect fires, keep a running total, or make a reward happen every few turns. Relic counters that need to survive saving do.

More numbers to build an effect around. Energy and Stars spent, cards and attacks played, actual damage dealt, cards left in a pile, empty Orb slots and status stacks. Selected copies of a card can grow their own values, including Wither-style self-damage, and keep those values when copied or saved.

Cards that play tokens can follow their targeting. If a status changes what the token can aim at, its launcher can use that target too. There is also an option to pass the enemy you selected through to the tokens it plays.

More control over automatic plays. Choose existing cards to play again, play a sequence, and distinguish a paid play from a free play or a duplicate.

Art and editor

GIF and MP4 character-select backgrounds. Upload either and it is turned into a looping animation for the game.

Sprite sheets go up to 60 frames and 30 columns. The column picker was still stopping at 16. You can play the animation and scrub through it in the editor.

Campfire art has its own size and position controls. You should not have to shrink your character inside a huge transparent image just to get their feet on the ground.

Status bars can show status icons. The side bars can use the same icons as the usual status row.

An upgraded number can go down. Negative upgrade changes work in the editor and in live card descriptions, including on tokens. A resource cost that drops on upgrade can now say so without a dummy status just for the text.

Relic repeat counts can go past 10. "Every N orbs channelled ever" and the other repeat counters no longer stop there.

Fixed

Random custom-status amounts actually roll. "1 to 6" was always applying 1. It now rolls the inclusive range, keeps upgraded minimums, and multiplies the rolled amount when you ask it to scale with stacks.

An enchantment aimed at whoever you hit reaches them. It was applying the status to you instead, even on an ordinary single-target attack.

Kaiser Crab can hit your back. Custom characters were being treated as facing both directions, making the fight easier than it should have been.

Custom curses go in the compendium's Curses section. They were appearing under the character's cards.

"Hide tooltip on cards" works on tokens too.

A dead creature's status bar goes away. The coloured bar could outlive the player, or briefly hang around after an enemy died.

Status damage predictions account for Block and damage prevention. This includes Buffer and Hardened Shell across multiple ticks. Ordinary status damage also respects Block when it is supposed to.

A companion arrives if you get its relic during a fight. It also no longer conflicts with the relic's other combat-start effects or spawns twice.

Categories drag from further down the list. This affected Mechanics as well as cards, especially on the new layout. Empty categories can receive items too.

A search stops following you into tabs with no search box. Searching for "Bomb" in Cards no longer leaves Afflictions silently filtered for Bomb. Find also points to the keyword tab's current home.

Older projects have fewer reasons to refuse an export. Fixed missing sound data, leftover relic counter settings and effect groups that the editor had allowed but export rejected. Errors name the fields that need attention, and reports include the app version. Import and animation recovery also handle more of the older saved formats.

Both main 0.107.1 and beta 0.111.0 builds were checked. In-game testing was on beta; networked co-op was not tested for this release. If a combination still does something it shouldn't, please send a report with the character attached.

1.0.0

2026-09-04

Everything since the last notes — 3 and 4 September — and the release itself.

Three weeks of reports from people building real characters, plus two audits that went looking for the gaps nobody had reported yet. What follows is the whole of it.

New

Temporary statuses are a real thing now. "Gain 3 Strength this turn" used to mean applying +3 and then applying −3 on a turn-end trigger — two effects pretending to be one, showing in the status row as a permanent buff. Tick Temporary on any Apply Status effect and the game handles it: the temporary icons, the "wears off" wording and the taking-back, the same way the base game's own temporary Dexterity works. It can wear off at the end of your turn or the enemy's, and last extra turns if you want.

Afflictions. The seven card debuffs the game puts on your cards — Bound, Entangled, Galvanized, Hexed, Ringing, Smog and Tainted — can be applied to the cards in a pile, and cleared. These are the real ones, so they render with the game's own art and read in the player's language.

Ancient relics. The rarity was simply not on offer, and a third of the game's relics are Ancient. Same acquisition caveat as an Ancient card, and the checks say so.

Upgrade or transform cards from the whole deck, not just from your hand. The Astrolabe and Yummy Cookie shape. Removal has been there for a while; these two were missing beside it.

A card in a pile can watch what a status can watch. Nine more while-in-pile triggers: your Block hitting zero, your HP changing, energy spent on a card, your hand emptying, an orb channelled, an orb evoked, a potion drunk, Stars gained, and the fight ending. Enchantments got the same nine. A card can carry six while-in-pile triggers, up from two.

Enchantments act while their card waits in a pile, rather than only when it is played.

A card can get cheaper when it is drawn, the way Kingly Kick does.

Predict a custom status on the enemy's health bar, the way Poison is predicted — a shaded slice of the bar showing what your status is about to take, in a colour you pick, at whatever damage per stack you set.

Map a capped status to a bar in the combat HUD. The Alchemist's antitoxin shape, for a status with a ceiling.

Give energy, cards or Block to ONE ally — the one you aimed at. Every option before this fanned out to everybody, so "Believe in You" could not be written.

Scaled damage can hit more than once. "Deal X damage Y times" where X scales. Hits (Scaled) is the mirror, scaling the count and keeping the damage flat.

A card frame per card type, so attacks, skills and powers can read differently, with the measurements published so a frame can be drawn to fit.

Highlighting in card text, the way the base game does it. Terms like Draw Pile, Poison, Block and your own statuses are marked in gold automatically. The game does this by hand in its own card text and mod cards read flat beside it; now they do not. There is a switch in Mod Info if you would rather they did.

A status can read as its ICON in card text instead of its name, for the one or two a character mentions constantly. Upload an icon, tick the box on the status.

You can write colour and the energy symbol yourself. [gold]like this[/gold] in any description, and {energyPrefix:energyIcons(1)} for the energy symbol — which picks up your character's own icon. Both are noted under the description box now, since neither was findable.

"The player(s)" as a target for applying and removing statuses. On a status you put on an ENEMY, "self" is that enemy and "all allies" is the other monsters, so there was no way to name the human at all.

Five conditions on an effect, up from three.

A "spent N energy" condition, and a count of cards played this combat to scale from.

A token can be told which animation to play, the same dropdown a card has.

Scale an effect by the empty slots in your hand. It worked everywhere and was missing from the one list the dropdown reads.

"Download C# Source" gives you a project that builds, rather than a single file — everything, laid out so dotnet build works on it.

A new layout you can switch on and off. "New layout" in the top bar. Search moves to the top of the left rail with its shortcut, and the thirteen sections group into Build, Extras, World and Ship. Nothing is added or removed, and the old layout is one click away — the two can be compared on the same character.

Things sit with the things they belong to, on the new layout. Star cost, X star cost and the cost-reduction trigger moved up beside the card's energy cost. Sound, hit and cast effects, poses, animations and your own VFX moved in with the card's art. Borrowed card pools, your own keywords and the starting deck moved from the Hero screen to Cards; the Osty skin moved to Pets; mod info moved to Export.

A keyword can send its cards to your draw pile instead of the discard when played. Tick "To draw pile" on one of your own keywords and every card carrying the word follows it. Cards that Exhaust still exhaust.

Allies can be made to discard, at random — your target, your other allies, or everyone including you.

Discover a Card can offer up to ten rather than three, on the same grid the tag version uses. "Can skip" now works on that grid in both.

Cards can be banned while a status is up. The inverse of "you can only play cards matching the filter" — this one names what you *cannot* play, and a status can carry both.

A character can call stars something else. Embers, Souls, Charges — shown in the counter's tooltip and the "I don't have enough" message, only while your character is playing.

A character's own Strike and Defend carry the game's tags, so cards that care about them see yours too.

Fixed

Scaled damage on an "all enemies" attack measures each enemy. It computed one number and dealt it to everybody — from the enemy you aimed at, or from nothing at all on a card that aims at nobody, in which case it did not scale. Off a card it measured whichever enemy happened to be first.

Permanent damage growth survives saving and quitting. The growth was written to the save and never read back into the card.

Custom stance sprites hold through a token. A token played no character animation at all, where the same card as a regular card played the one your stance supplies.

"Predict on the enemy health bar" is visible. It was drawn behind the health fill, which covered every pixel of it.

The character-select background shows the whole image when you ask it to. It was being fitted, correctly, to a rectangle about 1.4× the size of the screen — so the window cropped it whatever the setting said.

"Enemy" means the other side again. On a status you put on an enemy, aiming an effect at "enemy" had started meaning the enemy's own side, so a debuff that was supposed to reward the player stopped reaching them. The fix that caused it — "all enemies" meaning the enemies, from a status sitting on an enemy — still stands; the two were being answered the same way and are different questions.

"All enemies" means the enemies, from a status on an enemy. A status the mod puts on an enemy whose trigger damages all enemies was damaging the party.

A permanently-scaling card no longer desyncs in multiplayer. The saved growth and the live number moved by different amounts the moment a step was not a whole number, so a client that had reloaded and one that had not held different damage on a card whose saved state matched exactly.

"At the end of your turn, while in hand" fires. The hand is emptied before that hook runs, so the card was never in hand by the time it was asked. It appeared to work only on cards with Retain, which are not flushed.

A search menu is no longer cut off by the panel it opens in. The condition list, and every other long list in the app.

Statuses on an orb can name your tokens and relics. Nine effects that work everywhere else did nothing on an orb.

A card that picks from a selection compiles. Every one of them failed to build.

A scaled damage potion hits what you aimed it at, and an aimed potion no longer fails to build.

Mod Info is visible on the new layout.

Damage triggers say they fire once per enemy hit, because they do — an attack that hits five enemies runs an "after you deal damage" mechanic five times. The checks warn when that is unlikely to be what was meant.

The balance checker stopped calling a temporary buff permanent scaling. A buff a card hands back is worth what it does this turn, which is what Block is.

The shop's Rare card check says which count it means. It counts Rares BY TYPE, so a pool of six could read as "you have 0" — twice — while the export panel said six. Both numbers were right and neither said what it was counting.

An ally is a living player, never a pet.

The checks name the effect that is unfinished, not just the mechanic it is on.

The checks warn when a timeline row or stance art will not do what it looks like it will.

Custom card frames are drawn the way you made them. The game was running your uploaded frame through the shader that recolours the vanilla red frame, which shifted the hues and washed out the lower panel. Re-export and it will look like your file.

"Add Card to Deck (permanent)" works outside combat — on a relic you pick up in a shop or a treasure room, which is where it was mostly wanted.

"Create upgraded only when THIS card is upgraded" works with "Choose from selection." It worked with a named token and silently did nothing with a chosen one. Enchanting a chosen token was broken the same way.

The vanilla hit effect can be turned off. There is a "None" option on Hit Effect now, for when it drowns out a custom hit VFX of your own.

Your character's own sounds stopped being reported as unused. Sounds set on the Hero tab — select, hit, dead, victory — were listed as dead weight while playing perfectly well in game.

Every while-in-pile trigger says when it fires in the card's text. Nine of them read as an empty phrase.

Auto-playing a token from a selection opens the selection.

The token selection screen says what it is for. It read "Choose a card to Enchant" when picking a token to play or a card to discover.

A relic's second "when status lost" trigger can name its own status.

Paying gold in an event builds again.

The moved panels kept the spacing they were inheriting.

0.10.0

2026-09-02

Everything since the last notes — 31 August through 2 September.

New

The hub. A public page for characters people have built, with each listing showing its cards and mechanics. You can publish straight from the export panel.

Version history for cloud saves. Every save keeps its earlier versions, and you can open one and go back to it. The storage a character uses is shown as you go.

Pro. Subscriptions, a compile queue that puts Pro exports first, and a lifetime Discord role. Signing in now says, at the point it matters, that it is what keeps your work.

Freeze, as an enchantment. An enchanted card can be unplayable while the count lasts, lose one each turn, and cost 0 once it runs out. There is a new effect to add or reduce an enchantment's count, on this card, the card a trigger is about, a random enchanted card in your hand, or the whole hand.

Card frames you supply yourself. One for the character, and one per enchantment, so an enchanted card can read differently at a glance. Use this if the colour picker cannot get you the frame you want — pure white in particular cannot be reached by tinting.

Your key statuses can hold still. A mechanic can be pinned to the front of the status row, and can stay on screen at 0 instead of vanishing, so the four you watch every turn stop shuffling around as you spend and regain them.

New triggers.

  • A relic can go off when *you* would die, Lizard's Tail style — it stops the death, once per run.
  • A relic can react to its Block being hit, which mechanics have had as Temporary Thorns.
  • A relic or a mechanic can react to one of your attacks getting damage through Block, once per attack rather than once per hit.
  • A mechanic can react to gaining stars.

Enchant a card the player picks. All three enchant effects can offer the hand and let the player choose, through the game's own enchant screen — from a card, from a relic, and from an event, which offers the deck instead because a map room has no hand.

A card can act from the draw pile and from exhaust. The while-in-hand triggers now have siblings for both, so "return this from exhaust" and "this does something while it waits to be drawn" are buildable.

Frozen cards finish the shape. A frozen card keeps Retain while it is frozen, and thaws a count at the start of your turn only while it is in your hand.

Branch on where the card was sitting. "Deal 4 damage. If this card is rightmost in your hand, deal 14 instead." Leftmost and rightmost are conditions on any effect, not only a playability gate.

Give a keyword to only some cards. The keyword passive takes the same filters the damage passives have, so Retain can go to cards carrying one tag.

Star cost reduction can filter by card type, the way the energy one always could.

Scale by what the played card cost. "Whenever you play a card, gain that much of a status."

Scale by your own HP. Current and max, wherever a scaling source is offered — including Lose HP Equal To, which was reading max HP by accident.

A character can call stars something else. Embers, Souls, Charges. It shows in the counter's tooltip and in the "I don't have enough" line, and only while your character is the one playing, so Regent keeps the word Stars.

{star} in card text puts the star icon in a sentence — your own icon, if your character ships one.

A relic can target whoever it hit, or whoever hit it.

Card colour can go brighter than the frame it came from. The recolour shader can only darken, so pure white came out grey; saturation and value can now be pushed past 1.

Pets got a lot. They can hit several times, scale their damage with their own HP, and their damage can be upgraded. A damage-boosting mechanic can be set to cover them.

Orbs. Channel a random orb from your own set, evoke a specific one, evoke from either end of the queue, and gate effects on what is in the queue. Loop, Tesla Coil and Thunder are all buildable.

Discard and draw the same number. However many cards actually went, that is how many you get back — the Calculated Gamble shape, on the whole hand or on a chosen few.

Forge scales. By stacks, and by any scaling source.

More ways to scale. Count cards of a type sitting in a pile, count how many allies are in the fight, and let percentage passives scale with stacks.

Enchantment bonuses can scale with a status rather than only with the enchantment's own count.

Cards can preview another card as a hover tip, and a card can hide its token preview when the tip would be noise.

Recovered cards can go to the draw pile instead of the hand, so getting a card back does not mean playing it this turn.

A card can grow itself for the rest of the run, the way Genetic Algorithm and Scythe do. It used to grow only for the current fight and reset afterwards.

A card can pay out only the first time it is played each turn, the way Fetch does, and a card can be sent back to your hand from anywhere — the discard pile, the draw pile or exhaust — the way Make it So does.

X star cost, and star cost reduced on upgrade. Tokens can carry custom keywords and a star cost, which they could not before.

Apply a random number of stacks, rolled once.

A "Do Nothing" effect, for a branch that should deliberately do nothing.

Move a card from your hand to the draw pile.

Tag filters can all say NOT, and statuses can be cleaned off allies.

Your own art on the vanilla Osty, and custom relics draw their character's outline in the compendium.

Spritesheets can run at 60fps.

Card roles in the balance tool, and the balance tab now reads the whole card rather than part of it.

Fixed

Events no longer soft-lock the run. An event with no picture left you in a room with no text, no options and no way out.

Your potions show up. Custom potions were built and then never added to the pool, so none of them could appear.

Art stopped disappearing. Event pictures were being written into browser storage at full size, which filled it and quietly stopped saving anything else — so work done after that point was gone on the next reload. Blank art is treated as missing rather than as a broken image, every unreadable image is listed rather than only the first, and the one that fails to export is named.

Paying gold in an event builds again. It failed the compile on a missing import, so any event that took gold could not be exported at all.

Channelling a random custom orb builds again.

Auto-play a token from a selection now opens the selection. The card simply played and no menu appeared.

A card that glows on a condition can watch a base-game status, not only one of yours.

A relic's second "when status lost" trigger can name its own status. Every trigger after the first watched whatever the first one did — the same bug in four places, including card-drawn filters and the mechanic that watches another status.

A tag discover can offer more than three cards.

An ally card can heal the caster when that is what it says.

"Apply to enemy" applies to the enemy, not to the holder of the status doing the applying.

A mod built for the other game branch says so at load, by name, instead of crashing mid-fight with a missing-method error naming a card.

A token's VFX stays on its own card. They were saved under one name and read under another, so they went missing or landed on the wrong card.

Transforming into one of your own cards keeps the upgrade.

The "any player" warning was backwards. It flagged cards that work fine and stayed quiet on the one that does not. Cards that target Self now warn when they carry a condition about a target they do not have.

Damage that scales with the target's HP works on cards that aim at nobody, and a card that hits all enemies measures each enemy on its own HP.

Card text. {all?} is resolved instead of being shipped to the game, costs are written with the energy icon the way vanilla does, custom keywords appear in the preview, and several description bugs are gone. The editor also says when a running total cannot be shown, instead of the box doing nothing.

Two events with the same name no longer become one. The build used to succeed and quietly ship only one of them.

Your chronicle reaches the Timeline on the game's beta branch. The newer game version keeps a second list of epoch ids, and yours was not in it, so the epoch was rejected as unknown. With two chronicle mods installed only the first one worked.

Hovering a card that shows a live scaled number no longer errors outside combat — in a shop, on a reward screen, or in the deck view.

The else half of a condition shows its own number. Both halves shared one, so the "otherwise" branch printed a figure that belonged to the other branch.

"Target's custom status is at least N% of max HP" can be configured. It could be picked and then never filled in, which left the card erroring about a status that had never been set.

Custom Thorns stopped hitting its own owner and retaliating against poison.

The star counter told modded characters they were the Regent.

The energy counter's backdrop no longer covers its own spin. Building the layers from your colour produced a counter whose spinning parts were completely hidden. The five slots are also listed in the order they actually stack, which is not 1 to 5.

A suppressed orb leaves the screen, not just the queue.

The shop and campfire honour the character's size setting.

Cards a mod creates were credited to nobody.

Unplayable cards no longer show a cost the game never draws, and a Curse missing the Unplayable keyword is flagged.

A mechanic watching another status ran the right blocks when more than one was merged, and a card-created trigger can no longer feed itself.

"The one this card targets" stripped your own buffs instead of the enemy's.

Lagavulin's debuff is noticed. It applies a negative buff, which no trigger was watching for.

An orb with an apply-to-all extra effect builds again, and "Do Nothing" saves.

Scaled attacks honour their target option outside a card, and a RandomEnemy card picks its target once for every line, not just its attacks.

The recovery file is named .project.txt, so the game stops erroring on it.

The character-select sound plays.

Every pet gets a health bar, and pets stand beside you rather than on top of you.

Changed

Condition pickers are searchable, and so are the trigger and passive pickers — mechanic triggers, "also fires on", relic triggers and extra triggers.

Archetype is a picker rather than free text.

Event pictures are 2048x960, matching the frame the game draws them in.

Effects that repeat can say how many times on an X-cost card. The Times field on Damage Multiple Times is replaced by the X you paid — that is how Whirlwind and Skewer work — and the field now says so.

0.9.1

2026-08-30

Bug reports from 2026-08-30.

Fixed

Your character opens again after a long tooltip. A mechanic's tooltip text is capped at 300 characters, and the box you typed it in did not know that — so a longer one exported fine and then refused to import, taking the whole character with it. Over-long text is now shortened on import the way over-long lists already were, and the box stops you at the limit.

"Failed to fetch" while opening a cloud save. A dropped connection put the browser's own error on screen with nothing you could act on. It now says the server could not be reached.

Relic copies stay stacked after you save and quit. The count was being forgotten on load, so a relic you had picked up four times came back as one.

Taking a relic that enchants your Strikes no longer errors. A card with no art pointed at an empty image path, so the game logged a load failure every time it drew that card — including from inside a relic's pickup effect, which is where the crash was reported.

Discover tells you when it cannot work. The game never generates Basic or Ancient cards in combat, and Discover reads your card pool, which holds no token cards. A tag on the wrong cards left you with a card that did nothing and said nothing. The editor now says which case it is.

A relic's pickup effect can no longer be traded away and taken again.

Pets stand beside you, and have a health bar again. A custom pet was being placed exactly on top of your character, and its health bar and status icons never appeared. Both came from the game treating pets as its own Osty and custom ones as something else.

A relic with no icon shows the game's "missing art" marker instead of nothing at all, and the editor now says so before you export.

New

Damage (Scaled) can count different debuffs, like Rend — how many the enemy has, or how many you have. Three stacks of one debuff still counts once.

"Add Card to Deck" can add one of your own cards, which its permanent version could already do.

A card can return to your hand after you play it, the way Particle Wall does. It stacks with Exhaust rather than fighting it.

A damage-boosting mechanic can cover your pets' damage too. Off by default, matching the base game, where Strength does nothing for a pet.

Changed

Mechanics that live on a Power card are listed again, marked with the card they belong to. Picking one opens that card.

Event pictures are 2048x960. The frame the game draws them in is 2560x1200 and never crops, so the old 1024x480 target was being stretched two and a half times.

0.9.0

2026-08-28

Three days of Discord bug reports and requests.

New things you can build

Your own map events. Write a room with up to four choices, give it a picture, and it turns up alongside the game's own events in every act, in runs with your character. Choices can hand out gold, HP, Max HP, one of your cards, one of your relics, or take cards out of the deck. Events can be translated like everything else.

Quest cards. A card that steers the next unmarked room on the map to one of your events, the way Lantern Key does. Unplayable, never in a reward, meant to be given.

Your own keywords, with their own tooltip, printed on the cards that carry them.

Save a group of effects and drop it in anywhere. Build a combination once, name it, and reuse it on any card. You can export a group and share it too.

Borrow a vanilla card pool. Lean your character on the Defect's cards, or any other, and their unlock rules come with them.

Hidden mechanics. A status can stay off the HP bar, for the bookkeeping counters a kit keeps behind the scenes.

Live numbers in blue, on cards, mechanics and enchantments. Every figure the game works out as you read renders blue, so a player can tell at a glance which ones change.

A card that doesn't count as a card play. Echo Form and Throwing Axe can't replay it, and Aeonglass won't count it toward the Wither it hands you. Everything else still sees it played.

Scaling on a trigger you choose. A card that grows can grow when it's retained, when each turn starts or ends, when you draw it, or when you discard it, in your hand or from the discard pile.

Mechanic triggers can ask which card caused them. "Whenever you deal damage, from a card tagged X" now works on damage, Block gained, an attack landing and a status being applied.

Two numbers of the same kind on one card are both live now. "Gain 5 Block. Gain 3 Block" used to print the second one as a fixed number, so Dexterity, an enchantment or an upgrade would change what the card granted while the printed 3 stayed put. Each one gets its own value now, and the card says what it does.

Take another turn. A mechanic can grant extra turns, one per stack.

Duplicate relics stack into one icon with a count, instead of another row in the relic bar. The relic still does the same amount.

Around forty new effects and conditions, including: Target Loses HP, Lose Max HP, a Claw-style growing attack, upgrade the card a trigger is about, remove a card's enchantment, look at the top of your draw pile and take a card to hand, play a visual effect on yourself, play any of your character's poses, a temporary Max HP template, a card that becomes another card after N events, "you have exactly N of a status", "this status was applied to me this turn", "one of your pets is dead", healing-received as a percentage, a mechanic that stops orbs evoking, a discover choice gated on holding a status, and Add Card naming any card in the game.

Potions can be tagged, and a potion-drunk trigger can filter on the tag, so a relic that rewards drinking *your* potions ignores the rest.

Enchantments can add their own line to the card they sit on.

Orbs get the full effect builder, so an orb can do anything a card can.

Tokens get the advanced settings they always supported and never offered.

More character art control: a custom character-select sound, a background that shows the whole image, the three poses the game triggers rather than you (hit, dead, victory), alternate attack and cast poses per card, a card's animation replayed on every hit of a multi-hit attack, and a height nudge for art that sits high in its frame.

Pets: control which one soaks a hit first, have one arrive already carrying a status, and summon far more of them.

The guide now teaches design, not just buttons. A "Designing a Character" section with the real pool shape and card numbers, measured from the 410 obtainable cards in the five shipped characters, and a "Complex Effects" section with five animated walkthroughs: layered conditions, sharing one condition across several effects, keeping numbers live, what an upgrade can reach, and building a card as a flag other cards read.

Gold checks. "If you have less than 50 gold" and "if you have 50 or more gold", on any effect, so a card can pay off when you are broke or when you are flush.

A percentage chance on any effect. "70% of the time: Deal 10 damage." Every effect can now roll for it, on cards, relics, potions, orbs, mechanics and enchantments alike, and you can give it a second effect for the miss. Hit chances like Fire Emblem or XCOM, coin-flip cards, a relic that fires now and then. It uses the run's own seeded randomness, so a saved run replays the same way.

No cap on relics. There was one at fifteen.

A kit overview that counts what your character can actually do (draw, damage, Block, scaling) separately from whether the numbers are balanced.

Editor: duplicate any entity and keep its art, every delete confirmed and undoable, lists sortable by type or rarity inside your own categories, mechanics that belong to nothing surfaced instead of hidden, and a code-only build for when you only need the DLL.

Fixed

  • A repeated number on a card upgrades too. "Deal 6 damage. Deal 4 damage" only ever raised the first number on upgrade, which is why the campfire highlighted only the first one. Each repeat now gets its own upgrade field ("Damage 2"), and the same goes for applying a status twice.
  • Spritesheets up to about 2.9 MB now upload at full quality, with no re-compression. The editor shows what one frame will actually export at, warns when the layout doesn't match the image, and can fill in the column count for you. Re-upload any sheet you added before this to get the quality back.
  • Custom events no longer soft-lock the game.
  • Potion targeting works. Any Enemy hits the one you clicked, All Enemies hits all of them, Random Enemy is random, and an ally-aimed potion applies to the ally, including any token it creates.
  • Live numbers work in translated text, Strike and Defend included.
  • Every value a card declares can be used as a `{token}` in your own card text, and the preview matches what exports.
  • Art stays deleted when you remove it, and survives a reload. Large character art no longer fills the browser's storage until a save fails.
  • Strength and Dexterity no longer inflate relic, potion and status values.
  • A pet's all-enemies attack hits the enemies.
  • Unplayable cards don't show a cost.
  • A cost-reduction trigger no longer prints "undefined" on the card.
  • An upgraded scaling multiplier shows on the card.
  • No limit on how many sounds a character can have. There was one at eight. Size is still what matters, and the export warns when your clips add up.
  • A blocked export names what is blocking it, next to the button.
  • Orbs can be translated.
  • A random-target card turns you to face what it hit, so a character built on all-enemies and random-target cards can still steer in the Kaiser Crab fight.
  • Relics built for the beta branch compile. Every fixture builds clean on both branches.
  • And more!

0.8.0

2026-07-31

Six weeks of community requests and bug reports from Discord. Almost everything here came from someone building a character and hitting a wall.

New things you can build

Your own creatures and companions. Summonable pets with their own art, HP and attacks — give them a damage bonus, heal or hurt them, send them away, or make a card do something extra while yours is out. Plus Summon and Osty-attack effects for the vanilla creature.

Custom Chronicles. Your character can have its own Timeline stories and epochs, with their own art, alongside the vanilla ones.

Cards that ask for X. X Energy cost already worked; X Stars is new, and effects can now scale off either — "deal 3 damage per Star spent", or a formula mixing the spend with anything else.

A lot more ways for a card to react while it sits in your hand or discard. When it is drawn, when it is retained, when you play a card of a given cost, tag, name or type, when a certain number of cards have been played this turn, and when you gain or lose one of your own statuses.

Custom archetype tags. Tag your cards, then count them, trigger off them, scale from them, or make a relic care about them. Relics can be tagged too.

Roughly a hundred new effects and conditions, including: give Block to allies (fixed or scaled), Energy scaled off anything, recover cards from the discard or exhaust pile, return the top card of a pile to your hand, remove cards from the deck permanently, add cards to the deck permanently, transform every card with a given name, play a card automatically, exhaust from the top of the draw pile, apply a status equal to almost any measurement, heal or lose HP on a scale, a Vigor-style one-shot damage bonus, a per-turn damage cap, an Artifact-like ward you can narrow to specific statuses, curses, and a customizable "play a visual effect" effect.

Multi-level upgrades, the Searing Blow pattern — a card that can be upgraded more than once, with its own text per level.

Custom orbs that apply your statuses or draw cards, with real icons and an adjustable position.

Custom stances that change the character's idle, attack and cast art, adapt their damage per move, cut enemy buffs, or change healing.

Better relics: several triggers on one relic, a stack-counter badge on the icon, trigger on a specific turn, on a card joining your deck, on the kind of enemy killed, and the ability to hand the player a card permanently.

Editor quality of life: card categories with drag-and-drop, a searchable sound and effect picker, a one-click share image, a project migration layer so older saves keep working, and a spec table listing every image size.

Fixed

  • Upgrade text. The whole card no longer turns green when an upgrade only changed the cost, added a keyword, or differed by a stray space or period. Upgraded numbers now show up on effects that were hiding them, custom-status amounts included, and multi-level text no longer crashes the description.
  • "You cannot die" no longer bricks the run. It put the game in a coma-like state where nothing could proceed.
  • Lethal damage works on cards, not just statuses — a card can now tell whether the damage it dealt actually killed, was blocked, or broke Block.
  • "Tokens come out upgraded" now covers every effect that makes a token. It only worked for three of the seven.
  • Two effects on one card no longer share a number. "Gain 2 Block. If X: gain 3 Block" granted 2 twice and printed 2 twice.
  • Multi-hit damage takes Strength, Vulnerable and Weak, uses the per-hit damage you typed in, and its upgrade actually applies.
  • Scaled damage is no longer quietly cut by Weak (a computed value is not a swing), and can opt back in to Strength when you want it.
  • Statuses with non-English names work as {tokens} in card text.
  • A status no longer fires on the card that granted it.
  • Several export blockers: mods that failed to build, projects this tool exported that it could not re-import, "too many files" from non-buildable assets, image uploads timing out, and the editor breaking after an animation upload.
  • Art: background removal no longer eats white artwork, the export compressor no longer destroys spritesheets, combat animations render at a consistent size, custom relics show the right outline, and token cards use your character's colour instead of the curse frame.
  • Targeting: Any Player no longer hangs solo runs, ally-targeted cards give every ally their token, target conditions on an all-enemies attack are judged per enemy, and "apply status equal to X" no longer applies a room-wide total to one enemy.
  • And more!

0.7.0

2026-06-13

P2 polish wave — closing out the audit's remaining editor/codegen/image items.

Added

  • Upgrade system completed: upgradeEffects.additionalEffects now fire under if (base.IsUpgraded) (were silently dropped); companion powers on Power cards thread the card's upgrade state so recurring effects scale; an upgradedDescription override emits {IfUpgraded:show(upgraded|base)}; a plain description override that would freeze the displayed numbers now warns.
  • Editor UX: deletions are undoable via toast (no more confirm()), alert() replaced with non-blocking toasts everywhere, Duplicate for relics and token cards, sidebar mechanic rows focus the clicked power, number inputs clamp to their schema range on blur, and a mobile "☰ Browse" drawer (the sidebar — the only way to pick a card/relic — was hidden on mobile).
  • Sidebar validation dots: items with a blocking pre-flight error show a red dot (preflight issues now carry an entityId).
  • Ancient acquisition warning: Ancient cards (excluded from shop/reward rolls) are flagged inline and in pre-flight, pointing to the starting-deck path that actually makes them obtainable.

Fixed

  • Transparency: JPEG is rejected on transparency-required slots (it has no alpha → black/white boxes in game); a corner-sampled solid-colour background remover handles flat backgrounds, not just checkerboards.
  • Relic outline: the small top-bar relic icon's outline layer is populated (it was null — ResourceLoader can't read raw mod PNGs).
  • PCK engine-version header bumped to the game's Godot 4.5.1.

0.6.0

2026-06-12

The feature wave following the 0.5.0 audit — toward full game-mechanic parity.

Added

  • All 183 player-usable vanilla powers exposed (was 16) — registry generated from the decompiled source (scripts/generate-power-registry.mjs → src/lib/generated/gamePowers.ts); searchable power picker with Buff/Debuff tags and descriptions. Flying = Flutter/Soar, tagged for conditions.
  • If/then/else conditionals — any conditioned effect can carry up to 3 "Otherwise" effects; conditions can check ANY registry power (targetHasPower — e.g. "is the target Flying", selfHasPower, targetPowerStacksAtLeast). Card text renders "If …: … Otherwise: …".
  • Passive always-on modifiers on custom statuses AND relics — 12 kinds compiled to the game's Modify*/Should* overrides (the Strength/Dexterity/Frail/Barricade pattern): damage dealt/taken, block gained, extra draw, max energy, healing, damage cap, block-not-cleared, shop prices, rest-site healing. Powers can scale flat amounts with stacks; passive-only statuses are valid.
  • Random-card mechanics — "Random token card" option for token effects; addRandomCardFromPool (pile/amount/type filter/0-cost), discoverCard (the game's own Discovery flow), transformRandomCardInHand. All seeded through RunState.Rng (multiplayer/replay safe).
  • New primitives — loseGold, gainPotionSlot, gainStars, stunEnemy.
  • Guided tour + /guide manual — 8-step spotlight walkthrough (auto-launches on first run, replayable from the titlebar) and a full reference page: effects, upgrades, image specs, shop rules, install steps.
  • Rest-site campfire character, treasure-hand textures, map-marker patch — custom characters now appear at campfires (generated NRestSiteCharacter subclass + scene), the relic-grab hand renders, and the map marker uses a consumer-side Harmony patch instead of an impossible CompressedTexture2D cast.
  • Nightly real-compile — golden fixtures build on the deployed Fly service every night; failures file a code-factory issue. PCK writer round-trip tests.

0.5.0

2026-06-12

Driven by an 8-dimension multi-agent audit against the decompiled game source (full findings with file:line evidence in C:\Work\Projects\slay\audit-findings\).

Fixed — compile errors reported by users

  • Non-Latin names (Chinese/Japanese/emoji) — sanitizeIdentifier now produces deterministic hash-based identifiers instead of collapsing every non-Latin name to _ (the Cards/_4.cs + colliding-class family); compile-service sanitizeModName kept in lockstep
  • Name registry — all generated class names assigned once, collision-proof, shared by codegen, localization keys, and asset paths; replaces the post-hoc file renamer that broke cross-references for duplicate names
  • `StarterRelic` CS0246 — projects with zero relics now synthesize a default starter relic (with localization) instead of referencing a class that was never generated
  • `CustomPower` CS0246 — effects referencing deleted/unlinked custom powers or token cards are skipped with a comment instead of emitting phantom classes; targetHasCustomStatus conditions on missing statuses compile to false
  • `removeCustomPower` on AllEnemies CS1503 — PowerCmd.Remove<T> takes a single Creature; all-enemies variants now loop (the user-reported IReadOnlyList<Creature> error)
  • Stance/Mantra/Scry emitted Watcher-mod-only classes — generated self-contained _StanceSupport.cs (Wrath/Calm/Divinity/Mantra, ported from the Watcher mod) and _ScryCmd.cs; scry previously *drew* cards instead of scrying
  • 15+ verified API mismatches — SetRetain→GiveSingleTurnRetain, phantom CardSelectPreferences→CardSelectorPrefs, .Health→.CurrentHp, relic base.Owner.Player→base.Owner, missing CardSelection/Models.Cards usings, Watcher-only "Smite" clamped to Shiv, slugify divergence on consecutive capitals (blank titles), fractional CardsVar/EnergyVar, FromCard(null) NRE chains in relic/power damage (a damage relic used to hit the *player*)
  • AllEnemies/RandomEnemy cards — debuffs no longer silently target the player; bare damage uses TargetingAllOpponents/TargetingRandomOpponents instead of null cardPlay.Target
  • MSB6006 "csc.dll exited with code 1" — root-caused to compiler OOM/disk crashes whose stack trace the error filter discarded; raw output tail now included, UseSharedCompilation=false, session images stay on disk instead of being held as base64 strings through the entire build, __pck_img__ payloads no longer written to the build dir

Fixed — in-game crashes and broken behavior

  • Shop soft-lock — the merchant throws (run unrecoverable) unless the pool has ≥2 Rare Attacks, ≥2 Rare Skills, ≥1 Rare Power; codegen now auto-fills filler cards and the export panel explains the gap
  • Upgrade system overhaul — keyword upgrades (removeExhaust/addRetain) now use AddKeyword/RemoveKeyword in OnUpgrade (the game caches Keywords, so the old ternary never re-evaluated); "+Energy on Upgrade" was dead code; power-stack upgrades routed to the correct PowerVar instead of the card's first var; gainBlock upgrades crashed the game (undeclared BlockVar); heal/draw/energy play lines now read their DynamicVars so card text and behavior stay in sync; token cards support upgrades
  • `new Random()` in power-context random targeting → seeded RunState.Rng.CombatTargets (multiplayer/replay safety)
  • doubleDamage uses the game's own DoubleDamagePower instead of a non-stacking clone
  • `afterApplied` custom-power trigger never fired for enemy-applied powers; onPickup relics with run-level effects (heal/gold/max HP) never fired outside combat

Fixed — images ("art doesn't work", "character is tiny", black backgrounds)

  • JPEG-under-.png — export compression re-encoded large images to JPEG at .png PCK paths; Godot picks decoders by extension, so art silently failed to load and alpha went black. Now always PNG (downscale, never switch codecs)
  • Combat sprite scale — hardcoded 0.28 rendered a 512px upload ~143px tall; now auto-scales to the ~310px creature bounds
  • Token card art wiped on reload — ArtRestorer now restores token cards (and the fast-hydration path no longer skips poses/sheets/energy layers)
  • Relic/power icons bumped to the game's real 256×256; upload-session filename collisions (relic + power sharing a name) fixed with content-addressed names

Added

  • Pre-flight checks panel in Export — dangling references, empty/CJK names, shop-safety gaps, missing starting relic — caught *before* compile, with compile blocked on errors
  • Friendly compile errors — raw dotnet build output translated to "Your card 'X' caused CS0246 …" with plain-language hints; technical output collapsed behind a toggle
  • CI workflow (.github/workflows/ci.yml) — typecheck + 417 tests on every push/PR (previously nothing ran tests)
  • Golden kitchen-sink suite — fixture built programmatically from EFFECT_BLOCKS/triggers/conditions (coverage can't rot); validates every generated file structurally, asserts unique paths and that every cross-file reference resolves
  • Upgrade editor everywhere — per-stat upgrade inputs for all var-backed effect types, on cards *and* token cards; honest "not yet upgradable" note for custom statuses
  • Roadmap for the power registry (all ~150 player-usable game powers), passive modifier blocks, if/then/else conditionals, random-card effects, rest-site/hand/map-marker art, and the guided tutorial in TODOS.md

0.4.0

2026-03-19

Added

  • Art appears in-game — session-based image upload pipeline sends card/character art directly to the Fly.io compile service, bypassing Vercel's 4.5MB body limit; card portraits now appear in-game at the correct PCK paths
  • Custom Mechanics Editor (Powers tab) — full visual editor for creating custom buffs, debuffs, and status effects with multi-trigger composition (13 trigger types), effect builders, balance badges, and delete-with-confirmation
  • 13 trigger types for powers — afterTurnEnd, afterCardPlayed, afterDamageReceived, afterDamageGiven, afterPlayerTurnStart, afterSideTurnStart, afterBlockGained, afterCurrentHpChanged, afterApplied, afterRemoved, beforeAttack, afterCardExhausted, afterCardDrawn
  • Mechanic templates — 8 pre-built power patterns (Momentum, Rage, Thorns, Echo, Siphon, Fortify, Overcharge, Elemental Attunement) to start from instead of blank canvas
  • Power balance indicator — heuristic strength rating (Feeble/Balanced/Potent/Broken) comparing trigger count, effect weights, and stack type against vanilla power baselines
  • C# validation step — lightweight structural validation (balanced braces, duplicate override detection) before compile; surfaces errors in the UI
  • Character description field — textarea on CharacterConfig (max 200 chars); shown on the character select screen
  • Character portrait generation — portrait embeds at res://images/packed/portraits/ and overrides CharacterSelectIconPath
  • Card frame preview — STS2-style card mockup with cost orb, rarity gem, art/gradient placeholder, and rarity bar in CardEditor detail panel
  • `applyCustomPower` / `removeCustomPower` effects — cards and powers can reference project-defined custom powers by ID
  • Disk full error handling — 507 on disk full, with a clear message instead of a raw failure

Changed

  • Power schema — PowerDefinition now uses triggerBlocks array (1-6 blocks); old projects auto-migrate on load
  • `generateEffectLine` — now accepts typed EffectContext config objects; CARD_CONTEXT, RELIC_CONTEXT, POWER_CONTEXT defined
  • Tab order — Powers tab added between Relics and Balance; Sidebar shows Powers count badge

Fixed

  • Path traversal guard — compile service rejects file paths that escape the build directory
  • Duplicate trigger deduplication — same-trigger blocks merged before C# codegen to prevent duplicate method override compile errors

0.3.3

2026-03-19

Added

  • Art persistence (IndexedDB) — card/relic art is saved to browser IndexedDB and restored on every page load; art no longer disappears on refresh

Fixed

  • 413 on compile — removed base64 art data URLs from the compile request payload (stripped __pck_img__ entries); compile no longer exceeds Vercel's 4.5 MB request body limit
  • Art disappearing after Load into Editor — localStorage quota was exceeded by ~30 MB of base64 images; art URLs are now excluded from Zustand's persist middleware and stored in IndexedDB instead
  • Strike/Defend cards dropped their effects — cards named "Strike" or "Defend" were compiled from simple templates that discarded everything the card actually did; they now use the full effect codegen with a class rename

0.3.2

2026-03-19

Fixed

  • Import JSON error messages — distinguishes JSON parse errors from schema validation errors; shows the specific failing field path from Zod
  • Double-click compile guard — added compilingRef ref to prevent race condition window where rapid double-clicks could trigger two compile requests
  • Unicode/emoji in card names — verified sanitizeIdentifier handles emoji, pure-emoji, and unicode-only inputs without crashing; added 14 regression tests

Added

  • 14 new tests: sanitizeIdentifier unicode edge cases, toPascalCase, and 0-card/0-relic isValid guard (152 → 166 tests)

0.3.1

2026-03-19

Added

  • BaseLib auto-bundling — compiled zip now includes BaseLib/ folder alongside the mod folder for single drag-and-drop install; BaseLib files are silently skipped if not present in the compile environment
  • How to Install — collapsible installation guide appears in Export tab after a successful compile, with Windows + Mac paths and step-by-step instructions

0.3.0

2026-03-19

Added

  • Images embedded in the mod PCK — compile-service/compile.ts handles the __pck_img__: prefix for base64 → binary embedding
  • Custom powers — PowerModel subclasses with turn-trigger effects - src/lib/codegen/powerTemplate.ts — C# PowerModel codegen (7 effect types: damageEnemy, damageSelf, gainStrength, gainDexterity, gainBlock, applyPoison, drawCard)
  • VFX variety — card effects now use effect-appropriate VFX paths instead of hardcoded slash - selectVfx() maps 15 effect types to distinct VFX paths (slash, heavy_blunt, giant_horizontal_slash, slime, starry, lightning, blunt, block, debuff, heal)
  • Character color theming — 6 color properties now use the character's chosen color: NameColor, EnergyLabelOutlineColor, DialogueColor, MapDrawingColor, RemoteTargetingLineColor, RemoteTargetingLineOutline

Changed

  • src/lib/effectBlocks.ts — damage effect codegenTemplates use {vfx} placeholder (substituted at codegen time)
  • src/lib/codegen/helpers.ts — generateEffectLine() substitutes {vfx} with selectVfx() result
  • src/lib/codegen/cardTemplate.ts — exports cardPortraitPckPath(); PortraitPath uses actual PCK path when artUrl is set
  • src/lib/codegen/generateProject.ts — emits __pck_img__: entries for cards with artUrl; includes power files
  • src/lib/schema.ts — added PowerDefinition/PowerEffect schemas; powers array on CharacterProject; artStyle on modMeta
  • src/lib/codegen/localizationTemplate.ts — generates powers.json localization when powers exist

0.2.0

2026-03-19

Added

  • Synergy annotations — synergizesWith field on cards, shown on hover in card list
  • Ancient card rarity — added to schema, codegen, and UI

Changed

  • src/lib/schema.ts — added synergizesWith, buildPath fields to CardDefinition; added archetype to CharacterProject; raised card max to 120, relic max to 15
  • src/lib/codegen/constants.ts — added Ancient to CARD_RARITY_MAP
  • src/components/CardPreview.tsx — added Ancient rarity style

Fixed

  • Ancient rarity cards now render correctly in CardPreview (previously would throw a TS index error)

0.1.0

2026-03-18

Added

  • Initial MVP: a starting character (12-14 cards, 1 Starter relic)
  • Phase 0 foundation: vitest test suite (87 tests), shared codegen constants/helpers, DynamicVar extraction
  • 7 previously-unimplemented effect codegen types: removeDebuffs, discard, scry, addCardToHand, addCardToDiscard, addCardToDeck, upgradeRandomCard
  • C# codegen for all 6 templates: card, relic, character, localization, modInit, project
  • PCK file generation for Godot mod packaging
  • Compile service integration