Skip to content

Add Boss revives to SS3 - #5

Open
gonlad-x wants to merge 4 commits into
borgCode:masterfrom
gonlad-x:boss-revives-final
Open

Add Boss revives to SS3#5
gonlad-x wants to merge 4 commits into
borgCode:masterfrom
gonlad-x:boss-revives-final

Conversation

@gonlad-x

Copy link
Copy Markdown
Contributor

Add feature to revive bosses, either as First Encounter or Rematch. I tested both on all bosses.

It works very similarly to TarnishedTool's revive feature; most difficult part was finding all the relevant flags. They have been documented in this spreadsheet. The only "bug" (does not affect gameplay) is that the warp to Undead Settlement cutscene is not replayed on subsequent defeats.

Also worth noting, it should re-drop Basin of Vow when using Dancer's first encounter revive option (if it's not in your inventory anymore) because it is needed to trigger to fight's custscene. Apart from that, re-defeating bosses only awards you souls, not their unique Soul/drops.

That's it :)

@gonlad-x

Copy link
Copy Markdown
Contributor Author

Bug where game crashes if SS3 is launched after the game is already running.

@gonlad-x

gonlad-x commented Jul 27, 2026

Copy link
Copy Markdown
Contributor Author

Bug where game crashes if SS3 is launched after the game is already running.

Fixed by this commit

@gonlad-x
gonlad-x marked this pull request as ready for review July 27, 2026 13:13
gonlad-x added 4 commits July 27, 2026 15:34
Both bonfires shared the identical BonfireId (3301954) in WarpEntries,
so selecting Abyss Watchers made the exact same TravelService.Warp()
call as selecting Keep Ruins. Corrected to Abyss Watchers' real
bonfireEntityId (3301951), confirmed directly against BonfireWarpParam
in Smithbox. Live-tested; warps to the correct arena bonfire now.
Implements single-boss revive (regular + first-encounter variants) for all
25 vanilla bosses, driven by a per-boss event flag dataset embedded in
Resources.resx (Models/BossFlag, Models/BossRevive, DataLoader.GetBossRevives).
Boss-revive state, commands, and logic live directly on EnemyViewModel
alongside every other boss-specific mechanic it already owns (Cinder,
Oceiros, Deacons, King of the Storm), rather than as a separate ViewModel —
matching the convention the codebase already uses. The Enemies tab UI that
exposes this is added in the next commit.

Reviving clears a boss's own BossFlags (and, for a first encounter, its
FirstEncounterFlags too), regrants Dancer's Basin of Vows on first-encounter
revive so her cold-open trigger can retest (FirstEncounterItemId), and clears
each boss's bonfire Discovered/Lit flag alongside its Defeat flag so the
post-fight bonfire's state stays consistent after a revive. Oceiros' Consumed
King's Garden shortcut door is included in his BossFlags since it's governed
by its own dedicated flag rather than his Defeat/Encountered flags.

Rest on Revive is decoupled from the warp: it only warps the player when
they're already standing in the boss's own block, but Rest always fires
independently of location whenever the checkbox is on, since resting isn't
logically tied to being in the boss's room.

Flag data was cross-referenced against vanilla EMEVD scripts and Smithbox
param/MSB data rather than trusted from any single modding source; a few
flags (Iudex/Champion Gundyr's shared shortcut, Nameless King's first
encounter, Pontiff/Aldrich's Encountered flags, Twin Princes/Friede's
interaction-range flags) needed correcting after cross-checking multiple
sources against each other.
Nests a "Boss Revives" sub-tab under Enemies, listing bosses by area with
search, live Dead/Alive/First-Encounter status, and Revive/Revive-as-First-
Encounter buttons plus a Rest-on-Revive checkbox, all bound directly to
EnemyViewModel from the previous commit.
@gonlad-x
gonlad-x force-pushed the boss-revives-final branch from 2f138a1 to 586826b Compare July 27, 2026 13:35
@gonlad-x

Copy link
Copy Markdown
Contributor Author

Rebased with new master !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant