Skip to content

About

Boss rematches in the style of Sekiro's "Reflections of Strength". Rest at any site of grace, choose "Reflections of Battle" and fight the game's and the DLC's main bosses as often as you like. The world doesn't change: no rewards, no runes, no consequences.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Reflections of Battle (Boss Reflections) — an Elden Ring mod

Boss rematches in the style of Sekiro's "Reflections of Strength". Rest at any site of grace, choose Reflections of Battle and fight the main bosses of the base game and Shadow of the Erdtree as often as you like. The world doesn't change: no rewards, no runes, no consequences.

⬇ Download the latest release

Features

  • A new site of grace menu entry with a boss list, sorted alphabetically in the game's language.
  • 31 fights: every remembrance boss (base game and DLC), plus Margit, the Godskin Duo, Loretta and Bayle. Radagon and the Elden Beast: Radagon alone, the Elden Beast alone, or the full fight with both, as in the original game.
  • Every boss is available right away, even if not defeated yet. DLC bosses are listed only if you own the DLC.
  • You appear in front of the arena's fog and can buff in peace. The fight starts when you walk through the fog (or, as in the original game, walk up to the boss).
  • Intro cutscenes play in every fight.
  • Win or lose, you return to the site of grace you started from. No runes lost, no rewards. A boss dead in your world stays dead, and a living one stays alive.
  • Options at the top of the list:
    • Journey: the NG cycle (NG … NG+7) that the bosses' strength and health are scaled to.
    • Scadutree Blessing (DLC only): the blessing level used in DLC boss fights.
  • The mod's texts are available in all 15 game languages (Arabic uses English).

Requirements

  • ELDEN RING on Steam, eldenring.exe version 2.7.2.0. Other versions may break or crash.
  • Mod Engine 2 2.1.0.0 or newer.
  • Shadow of the Erdtree is optional.
  • Offline only. Mod Engine 2 starts the game without Easy Anti-Cheat. Never go online with mods.

Installation

  1. Back up your saves: %APPDATA%\EldenRing.
  2. Extract Mod Engine 2 anywhere, for example to the desktop.
  3. Extract the mod's zip into the Mod Engine 2 folder, so that the BossReflections folder sits next to modengine2_launcher.exe. Keep the name BossReflections.
  4. Start Steam, then start the game with BossReflections\launch_bossreflections.bat.
  5. Rest at a site of grace and choose Reflections of Battle.

Full instructions, the special fights (Fortissax, Rykard, the Putrescent Knight, Radagon) and troubleshooting are in README_EN.txt inside the zip.

Compatibility: the mod replaces regulation.bin, event\common.emevd, the arena maps and events, the grace menu and the menu texts. Mods that change the same files (most balance mods, randomizers) won't work together with it. Seamless Co-op is not supported.


For developers

Building

Needs a UXM-unpacked game, DarkScript3, WitchyBND (Paramdex defs), Smithbox's SoulsFormats and ESDLang sources and the .NET SDK. Their paths are set at the top of build.ps1, tools\gen_bosses.ps1 and tools\gen_scaling.ps1.

powershell -File build.ps1      # builds .\mod from the game files + src\
powershell -File package.ps1    # packs dist\BossReflections_v<version>.zip

Layout

  • src\bosses.json: the bosses. Generated by tools\gen_bosses.ps1 from the research scripts tools\scan_*.ps1 / pick_spawns.ps1; edit the generator's tables and rerun it.
  • src\event\reflections.js: the reflection logic (common.emevd events 7980000–7980013).
  • src\param\*.rows.xml: our param rows (SpEffects, the "Begin the battle" action button, Rykard's weapon item lot). SpEffectParam.scaling.rows.xml and src\scaling.json come from tools\gen_scaling.ps1 (rerun it when bosses.json changes).
  • tools\EsdUtil: grace menu (ESD), menu texts (FMG), emevd merge.
  • tools\MsbDump: map dump, spawn points, regions and assets added to maps, regulation.bin rows.
  • dist_template\: the launcher, config, language picker and readmes shipped in the zip.

bosses.json fields

field meaning
key id used in logs
map, mapId boss map, as name and as area/block/region/index
bossEntity character whose death sets defeatFlag; with nameId used for the fallback AI/health bar
anchorEntity character present from the start of the fight (phase one), for "player is at the boss" checks
defeatFlag vanilla "boss defeated" flag; its state is saved before the reflection and restored after
nameId NpcName entry: menu text and health bar name
banner TextBannerType of the vanilla defeat banner, shown on a win
finalPhaseFlag vanilla flag on only in the last phase, for bosses whose last-phase character hits 1 HP earlier (Malenia); 0 = none
fogFlag vanilla "player passed the fog" flag; with the player in startRegion it starts the vanilla fight
startRegion vanilla region the fight start waits for
fallbackAi also enable bossEntity's AI + health bar ourselves (only for single-entity bosses)
spawn player spawn point added to the map (entity id, existing spawn point to copy, position, rotation); existing: true = a vanilla spawn point used as is
spawn.map, spawn.cloneMap optional: the spawn point is in another map than the boss (Fire Giant, Radahn), and the map to copy a player spawn point from when that one has none
radius optional "player is at the boss" radius (default 200 m)
presenceDelay optional, seconds the arrival waits for the boss to appear (default 2; Fortissax 60, after the dream cutscene)
resetFlags optional, up to 2 vanilla progress flags switched back off after the reflection (Fortissax's dream flags)
hide characters / assets hidden during the reflection: the map's graces plus things vanilla shows for a defeated boss
realDeath false for all: the boss never dies for real (a real death awards its runes)
deathAnim animation played by the boss on the win (a000_0060xx; 0 = none)
clearFlag optional vanilla "fight started once" flag cleared before the warp (Loretta)
variants optional map variants the boss's entities are copied into (Romina: m61_44_45_10)
tempOff optional vanilla flags off during the reflection and restored after (flag, value + saved = spare flags holding its state): intro cutscene "seen" flags, the Elden Beast's "ending reached"
giveWeapon optional weapon given on arrival through our item lot and taken back after (id, itemLot, given = spare flag): Rykard's Serpent-Hunter
fogWalls optional fog wall assets + SFX forced on; early: 0 = once the fight started, 1 = on arrival, a flag = on arrival if it's on
prepFog optional: the player spawns 2.5 m in front of this fog wall (0 = no fog: the fight starts when walking in) to buff; leaving the region (sphere or cylinder) before the fight ends the reflection; trigger = entity with the "Begin the battle" prompt (Fortissax)
dlc Shadow of the Erdtree boss: listed only when the DLC is owned (flag 6951); left out of the build if its map isn't installed
exitSpawn vanilla spawn point near the arena, used if the return to grace fails
flags request (set by the menu), active, warping, loaded (set by the boss map on load), wasDefeated (world state at the start)

Notes

  • No boss dies for real in a reflection: it is kept immortal and the win counts at 1 HP in its last phase, so the vanilla defeat event (remembrance, world and quest changes, autosave, the ending) never runs.
  • NG+ / Scadutree Blessing options: the choice is kept in flags 10000900 (custom NG on) + 10000901–908 (NG…NG+7) and 10000910 (custom blessing on) + 10000911–931 (level 0–20). On arrival, events 7980020 (every boss) / 7980021 (DLC bosses) add SpEffects that turn the world's NG cycle / the character's blessing level into the chosen one (events generated by tools\scaling_events.ps1).
  • Menu language: the talk script can't tell the game language, so build.ps1 makes one menu per language (mod\lang\<lang>, sorted alphabetically in that language), and select_language.ps1, run by the launcher, copies the one for the Steam language into mod\script\talk.
  • Mod Engine 2 can't resolve a relative mod path, so the shipped launcher rewrites config_bossreflections.toml with the absolute path at every start.

About

Boss rematches in the style of Sekiro's "Reflections of Strength". Rest at any site of grace, choose "Reflections of Battle" and fight the game's and the DLC's main bosses as often as you like. The world doesn't change: no rewards, no runes, no consequences.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages