How to bring a character, a weapon skill, sounds or a map piece from Dark Souls 1, 2, 3 or Elden Ring into Nightreign Eclipse,
and how to change params and map files from the command line. The tools live in S:/eclipse-build/tools/. Older pieces they
still call live in S:/souls-script-kt.
On these pages EB means py -3.12 -I -B S:/eclipse-build/eb.py. Get a tool with EB tool build <name>. Run anything heavy
with EB run --mem <GB> -- <command>. Stages use shared tools only: ../build/use-shared-tools.md.
Pages
| Page | What it answers |
|---|---|
| port-a-ds2-character.md | Port a Dark Souls II character: the build route, the anim cache, the switches, the traps, reading DS2's real clip usage |
| port-a-ds3-or-er-character.md | Port a Dark Souls III or Elden Ring character: what each port tool does and its command line; the id limits |
| port-a-weapon-skill.md | Port a DS3 weapon art or ER skill into the player's TAE, clips and behaviour graph |
| add-ds3-sounds.md | Add DS3 sounds to the player skill bank cs_c4340.bnk with a job file |
| map-tools.md | Edit map files from the command line: MSB, map models and textures, terrain cuts, POI templates, navmesh |
| edit-params-and-rowlists.md | Change params with a rowlist: the line format, Polish, and the tools around it |
| skins.md | Check a skin's source parts before building; the skin TOML |
| reference.md | Every tool in tools.toml and tools/dotnet: what it does, how to get it, its commands, its environment variables |
Which tool for which job
| Job | Tool | Page |
|---|---|---|
| Build a whole DS2 character port | the port's build.py, which runs build-npc-port-pursuer.nr.kts |
port-a-ds2-character.md |
| See how DS2 really uses a clip | the morpheme MCP |
same |
| Unpack files from the DS2 archives | Ds2Unpack | same |
| Build a whole DS3 character port | ds3-arena/build.py with NpcPort |
port-a-ds3-or-er-character.md |
| Extract files or the regulation from DS3 | NpcPort ds3-extract, ds3-regulation |
same |
| Port a battle AI script | AiPort | same |
| Carry an enemy's stats over | StatPort | same |
| Check a finished port for known faults | PortLint (port-lint) |
same |
| Fix shiny or dull materials on a port | MaterialFix gloss |
same |
| Add a dummy that aims a beam or capsule | DummyAim | same |
| Retarget a clip to another skeleton | KneelRetarget | same |
| Fix the pop between a crit and the death anim | CritFix | same |
| Pack or fix a port's effect binder | FxBnd, FxModelsGen | same |
| Convert a DS3 ragdoll, cloth or character file | Havok2014 | same |
Bring an ER skill's TAE and clips into c0000 |
SkillPort | port-a-weapon-skill.md |
| Add, remove or change single TAE events | SkillPort event-add, event-del, event-edit |
same |
| Retarget DS3 player clips to the NR skeleton | Ds3Retarget | same |
| Turn DS3 TAE events into NR events | arts-py/tae_ds3.py, then Ds3Retarget tae-set |
same |
| Add clip slots to the player behaviour graph | BehEdit apply |
same |
| Add or trim a DS3 sound in the skill bank | snd-py/snd_bank.py |
add-ds3-sounds.md |
| Change param cells, add or delete rows | Polish with a rowlist | edit-params-and-rowlists.md |
| Add a row to a param with duplicate row ids (loot tables) | TableRows | same |
| Compare two regulations or dump rows | RegQ | same |
| Replace a file inside a binder | BndSet | same |
| Add text entries to a msgbnd | CastleVariants fmgadd, InvTool msgadd |
map-tools.md, edit-params-and-rowlists.md |
| Give a seed's mimic the Open prompt | MimicOpen | edit-params-and-rowlists.md |
| List what a map or map model holds | MapKit msbparts, dumpall, flvermats, tpfls |
map-tools.md |
| Merge someone's POI edit as a new variation | MapKit campmerge |
same |
| Make an ER asset draw in Nightreign's open-world tiles | MapKit flvernr, tpflow, matadd |
same |
| Add far (LOD) copies of tile assets | MapKit addfar, farcheck |
same |
| Cut a tunnel mouth or shaft through terrain | TerrainCut | same |
| Swap, clone or drop enemies in maps for a seed | CastleVariants build apply |
same, and ../seeds/put-a-seed-in-the-mod.md |
| Start a new POI from a stripped vanilla one | camp-py/poi_templates/build.py |
map-tools.md |
| Inspect or cut a navmesh | Havok2014 navinfo, navcover, navunlink, navclearance |
same |
| Generate a navmesh in the editor | Smithbox | ../smithbox/generate-navmesh.md |
| Port a whole ER map in the editor | Smithbox | ../smithbox/port-er-map.md |
| Find where a skin's source parts are | skins/preflight.py |
skins.md |
Rules that apply to every page here
- Pass absolute paths to every tool.
- Never build or copy a private tool. Fix the shared source in
S:/eclipse-build/tools. - Build twice into two folders;
EB stage makechecks that the shipped files match. - Do not launch the game to test unless Stan asks. Say on your stage what was and was not seen in game.