Solo Project / Slay the Spire 2 Character Mod

Prince of Persia: Warrior Within Mod

A playable character mod that turns time travel into a risky deckbuilder resource: earn Sand, use the Medallion of Time to rewind bad futures, and accept that every stolen second brings the Dahaka closer.

I built the character, combat systems, pursuit encounter, audio layer, and presentation pipeline inside Slay the Spire 2's early-access mod environment.

At a glance

Role

Solo designer and gameplay engineer; also handled integration, assets, audio, and presentation

Current Stack

STS2 v0.103.2, BaseLib v3.1.0, Godot 4.5.1, C#/.NET 9, Harmony patches

Technical Challenge

Restore a complete combat checkpoint while keeping health, cards, enemies, and custom resources consistent

Playable Build

Custom character, Sand resource, combat rewind, Dahaka pursuit, cards, audio, UI, and contextual videos

Current Gameplay Capture

Watch the current systems in motion.

This May 5 capture is the current gameplay reference for Sand, Wind Back, Dahaka pressure, and the Prince combat presentation.

  • - Current STS2 v0.103.2 / BaseLib v3.1.0 build.
  • - Poster frame captured from the gameplay video, not character-select art.

Project In Short

Playable character

A selectable Prince with a custom deck, starter relic, rewards, dialogue, visuals, and audio.

Core system

Sand powers a rewind that restores combat state instead of only undoing lost health.

Risk and pressure

Repeated time travel advances a Dahaka pursuit and can trigger a dedicated escape encounter.

Signature System

Rewind is the centerpiece because it touches almost every fragile part of combat. A partial undo would be easier, but it would not survive real STS2 fights with generated cards, powers, relic counters, changing enemy rosters, and a live hand UI.

Combat Snapshots

Rewind stores turn-start and combat-start checkpoints instead of only undoing HP. The restored timeline has to land on a coherent combat model.

Pile Repair

Cards move back into hand, draw, discard, and exhaust while generated utility cards are recreated through valid combat-card registration paths.

Power And Relic State

Mutable runtime fields matter. Powers, relic counters, temporary flags, and owner bindings have to be cloned or restored carefully.

Enemy Roster Repair

Summons, splits, deaths, missing enemies, and monster move machines can all drift away from the snapshot unless they are reconciled.

Hand UI Repair

The live STS2 hand can keep stale card holders and drag state after rewind, so the mod rebuilds holders and bindings without leaving floating cards.

Replay Divergence

STS2 replay/state-divergence hooks can keep recording the wrong future, so rewind has to clean up engine-side action and visual residue.

Dahaka Pressure Loop

The Dahaka makes time travel emotionally expensive. Rewind helps the Prince survive the present fight, but it also pushes a persistent pursuit state toward a dedicated escape encounter.

01

Earn Sand

Enemy kills and Sand-focused cards build charges that carry through the Medallion rather than resetting every room.

02

Spend Time

Wind Back turns Sand into a 1/2/3-turn rewind choice. The stronger the rewind, the louder the cost.

03

Advance Chase

Rewind pressure feeds the persistent Dahaka meter, so survival creates a second strategic threat.

04

Escape Takeover

When the meter fills, Dahaka can replace the normal fight flow with a distance-based escape encounter.

05

Escape Or Fall

Escape cards push distance up; Dahaka pressure pulls it down. Rewind is clamped inside the chase once the encounter begins.

Closer look

Cards, art pipeline, and reviewer documents

Open the full build scope, card-family evidence, production assets, adaptation choices, and supporting notes.

Open +

Current Build Scope

  • - Selectable Prince character with custom starter deck, Medallion of Time starter relic, reward/shop card hooks, rest/shop/combat visuals, and 25 Prince-facing Neow lines.
  • - Sand resource loop with carryover, enemy-kill gain, Medallion HUD sockets, hover tips, Sand spend validation, and generated Wind Back access.
  • - Snapshot rewind that restores card piles, powers, relic runtime fields, generated combat cards, enemy rosters, monster move state, and live combat UI.
  • - Persistent Dahaka chase that can turn a normal fight into a dedicated escape encounter with distance tracking, escape cards, widgets, and staged presentation.
  • - Room-aware Warrior Within audio across combat, chase, menu, rest, shop, events, treasure, Prince voice, Dahaka voice, sword impacts, rewind SFX, and Sand feedback.
  • - Art/presentation pipeline covering card portrait bakes, relic/UI bakes, Prince and Dahaka puppet rigs, loading overlays, and contextual game-over videos.

Card Family Evidence

The gallery shows design-family evidence from the local project. Some cards are in the registered playable runtime pool, while newer cards are authored/pre-release assets and code direction. I am separating those claims so the page does not overstate public runtime coverage.

Authored/pre-release family evidence

Dual-Blade Flow

Movement and blade sequencing are meant to make the Prince feel fast and dangerous, not like a planted blocker.

Hook Kick

Movement payoff that turns positioning into weak application and extra block.

Authored/pre-release family evidence

Deflect / Counter

Defense should read as slipping, catching, and punishing commitment rather than walling off the turn.

Blade Catch

Reactive defense that rewards attacking first instead of hiding behind passive block.

Dead Angle

Rare payoff for exploiting Weak or Vulnerable windows after the enemy overcommits.

Authored/pre-release family evidence

Time Predator

The time lane makes rewind proactive: Sand generation, second-pass advantages, and pressure that grows more dangerous with use.

Borrowed Breath

Sand economy and post-rewind draw, keeping time manipulation tied to a resource loop.

Wind of Fate

All-enemy pressure that feeds Sand while keeping the table under threat.

Art And Presentation Pipeline

The art direction is still beta and uses ComfyUI-assisted concept output in places, so the honest portfolio value is the production pass around it: asset selection, sprite cleanup, matte work, layer cuts, UI bakes, and runtime integration.

  • - ComfyUI is used honestly as a concept/lookdev and image-generation aid, not as the portfolio claim by itself.
  • - Production work is the integration pipeline: selecting usable assets, cutting sprites, cleaning mattes, baking card/relic/UI images, and wiring them into STS2/Godot surfaces.
  • - Prince combat proof now shows the actual full combat sprite plus the v15_fullcanvas layer cuts used for runtime puppet work.
  • - Dahaka proof now uses the current mod-folder sprite and puppet contact sheet, with Silhouette Mask ML / Matte Assist shown as matte-cleanup evidence.
  • - Sand medallion UI, loading videos, game-over overlays, music, voice, and SFX are tied back to live gameplay state instead of sitting as static mockups.

Adaptation Choices

I am treating this as an adaptation problem, not only a programming task. Warrior Within has a harsh, restless tone, so the cards, audio, relics, resource pressure, and encounter staging all need to point toward the same feeling.

The guardrail is simple: the Prince should survive through motion, timing, and dangerous second chances. He should not drift into a stealth assassin, shield tank, serene time mage, or passive stall-counter class.

Reviewer Docs

Three short notes for different reviewers: current build scope, the hard systems work, and how the visual/audio pipeline is being produced.