Status partial: every section, key and default below was read from src/config.rs on the main checkout
(2026-11-12). The one-line meanings come from the code comments. Nothing was run in game for this page. A release
branch can differ from main: the team notes mention [nightlord_cinder] arena_flag, a key that exists on a release
branch and is not in main's config.rs.
Config files
All beside the DLL (the package's natives\ folder).
| File | Who owns it | Rule |
|---|---|---|
debug-nightreign.toml |
the player | Missing or invalid = defaults. The launcher never overwrites an edited copy. |
debug-nightreign.release.toml |
the release | Merged over the player's file key by key. Every update replaces it. |
debug-nightreign.seeds.toml |
the launcher | [seed] off = [<Nightlord numbers>]. Can only remove pool entries. Ignored when the release sets launcher_toggles = false. |
overlay-calibration.toml |
the overlay's Save button | Wins over [overlay] rects. |
debug-nightreign.toml.example shows most keys as comments. A commented value there is an example, not always the
default: [depth6] shifting_earths = 2, [don] inject_depth6 = true and [dashboard] enabled = true are shown, but the
defaults in code are 0, false and false. Keys the example leaves out are marked "not in example" below.
Sections and keys
[seed]
| Key | Default | Meaning |
|---|---|---|
force_pattern_id |
none | Force this pattern for every expedition. Env DEBUG_NR_FORCE_SEED wins. Also switches off the depth-6 double Shifting Earth. |
force_nightlord |
none | The pattern's Nightlord (its targetBoss). Env DEBUG_NR_FORCE_NIGHTBOSS wins. Must match the pattern. |
seed_mode |
"repeat_expeditions" |
Or "first_roll": force only the first roll. Env DEBUG_NR_SEED_MODE wins. |
force_everdark |
"random" |
"on", "off" (or true / false): the Everdark flag of the Deep of Night pick. "on" skips Heolstor (7) and the Dreglord (9). |
pool |
[] |
The Eclipse seed pool: { nightlord = N, pattern = P, don_weight = 1 } per entry. When set it wins over force_pattern_id and force_nightlord. Not in example. |
don |
"random" |
With a pool, who picks the Deep of Night Nightlord: "random" (by don_weight), "lottery" (the game's roll), or a Nightlord number 0-9. Not in example. |
launcher_toggles |
true |
Honour debug-nightreign.seeds.toml. Not in example. |
seed_log |
false |
seed-selection-log.jsonl. Env DEBUG_NR_SEED_LOG=1 wins. |
filter_log |
false |
seed-filter-pool-log.jsonl. Env DEBUG_NR_FILTER_LOG=1 wins. |
tick_log |
false |
Documents intent only. The hook needs env DEBUG_NR_SEED_TICK_LOG=1. |
orch_log, apply_log |
false |
Document intent only. The hooks need env DEBUG_NR_SEED_ORCH_HOOK=1 / DEBUG_NR_SEED_APPLY_LOG=1. Not in example. |
packet_log |
false |
Packet logging switch. Not in example. |
[depth6]
| Key | Default | Meaning |
|---|---|---|
hp_from_regulation |
true |
Read each enemy family's depth-6 HP step from the regulation. The hp_rate* keys are then ignored. Not in example. |
hp_rate, hp_rate_trash, hp_rate_poi, hp_rate_formidable, hp_rate_night1, hp_rate_night2, hp_rate_nightlord |
about 1.0599, 1.0501, 1.0503, 1.0499, 1.1043, 1.1084, 1.1077 | Depth-6 HP multipliers per enemy family, on top of depth 5. |
stamina_rate |
1.5 / 1.45 | Shared stamina damage step. |
poise_rate |
0.84 / 0.85 | Shared poise step. |
damage_rate |
1.0 | Enemy damage, same as depth 5. |
hp_rate_field, hp_rate_elite |
1.05, 1.11 | Legacy. Parsed, ignored. |
hidden_map_weight, hidden_boss_weight, hidden_none_weight |
50, 50, 0 | The map-challenge roll at embark. The example says these live values are currently inert. |
cursed_uncommon_rate, cursed_rare_rate |
50, 80 | Chance a chest weapon gets the 3-passive layout, depth 6 only. |
everdark_rate |
1.0 | Everdark share in the depth-6 Nightlord lottery. |
chaos_rank_list_extra |
14002 | Rewrites the server's rank list so a rating of 10000 is depth 6. 0 = off. |
force_received_depth |
0 | 6 = any rating above 0 is depth 6. |
weapon_durability |
false |
Weapons lose uses on hit. Needs the patched HUD file. Env DEBUG_NR_WEAPON_DURABILITY=1 wins. |
weapon_uses |
30 | Uses per weapon copy. |
cataclysm_weights |
[] |
Depth-6 weights for 0, 1, 2, 3 cataclysms. Empty = the regulation's row. Not in example. |
shifting_earths |
0 | 2 = every depth-6 run gets Mountaintop and Rotted Woods together. Off whenever a pattern is forced. |
extra_shifting_earth |
0 | Which of the pair goes first (1 Mountaintop, 3 Rotted Woods; 0 = the rolled one, else Mountaintop). |
custom_earth |
0 | 6 = support for a custom sixth Shifting Earth layer (event flag 7606, map files _60/_61/_62). |
custom_earth_block |
[10, 9] |
The LOD2 block the layer covers: tiles 40-43 by 36-39. |
force_custom_earth |
false |
Test aid: every expedition gets layer 6 alone. Env DEBUG_NR_FORCE_EARTH6=1 does the same. |
[don] (Deep of Night)
| Key | Default | Meaning |
|---|---|---|
log |
false |
don-depth-log.jsonl, don-ui-latest.txt, don-ui-log.jsonl. Env DEBUG_NR_DON_LOG=1 wins. |
inject_depth6 |
false |
Use the depth-6 Nightlord weights when depth is 6. Env DEBUG_NR_DON_INJECT_DEPTH6. |
remap_depth6 |
false |
Kill switch: treat depth 6 as 5. Env DEBUG_NR_DON_REMAP_DEPTH6=1. |
force_depth |
none | Override the lottery's depth. Env DEBUG_NR_DON_FORCE_DEPTH. Not in example as a key. |
force_ui_depth |
none | Override the RankControl row when no live rating is stored. Env DEBUG_NR_DON_FORCE_UI_DEPTH. |
rating_cap |
none | Optional clamp of the displayed rating max. Env DEBUG_NR_DON_RATING_CAP. |
force_rating |
none | One-shot rating write on first open. Env DEBUG_NR_DON_FORCE_RATING. |
wylder_greatsword_oneshot |
false |
Test aid: boosts Wylder's Greatsword. Not in example. |
trace_hooks |
false |
Hit trace hooks for the dashboard. Env DEBUG_NR_TRACE_HOOKS=1. Not in example. |
[server] (not in example)
| Key | Default | Meaning |
|---|---|---|
owns_depth |
false |
The Team Cereus server owns depth and rating. The client stops rewriting the rank list and pinning the rating. |
[storm_control]
| Key | Default | Meaning |
|---|---|---|
enabled |
true |
Hook the expedition clock and listen for the hotkeys. At 1x nothing changes. |
hotkey_stop |
"F5" |
Storm stopped, or back to the multiplier from before. "" = none. |
hotkey_speed |
"F6" |
Cycle 1x, 2x, 5x, 10x. "" = none. |
solo_only |
false |
true = hands off in any co-op session. false = the host may use it; guests never. (A code comment says "Default true"; the default in code is false.) |
indicator |
true |
Corner badge while the storm is not at 1x. |
indicator_corner |
"top-right" |
top-left, top-right, bottom-left, bottom-right. |
The module header says: not proven in game.
[hitbox_draw]
| Key | Default | Meaning |
|---|---|---|
enabled |
false |
The game's own debug draw of attack hits and capsules. No hooks. |
hotkey |
"" |
F1-F12: steps through cycle. Only while the game has focus. |
start_on |
true |
With a hotkey: draw the start set at launch. |
attacks |
true |
Start set: every live attack hit. |
attack_details |
false |
The same hits with their recorded path. Allocates per hit. |
capsules |
false |
Each character's movement capsule. |
collision_shapes |
false |
Havok character proxy shapes. |
axes |
false |
Orientation axes. |
cycle |
["attacks+attack_details", "attacks+capsules", "all", "off"] |
Modes the hotkey steps through. |
attacks_key, attack_details_key, capsules_key, collision_shapes_key, axes_key |
"" |
Optional F-key per view. |
It never turns on the per-hit text labels. Team note (2026-11-06): found by static reading; whether the capsule views draw in game was unproven.
[runs]
| Key | Default | Meaning |
|---|---|---|
enabled |
true |
Record the local player's path through each expedition. |
folder |
"runs" |
Beside the DLL, or an absolute path. |
sample_ms |
500 | Sample interval. |
probe_every_s |
30 | Raw character bytes in the file this often. 0 = off. |
Which recorded field is the true map position is not proven. A release toml can switch the recorder off; check it.
[debug_log] and [debug_log.caps]
See Turn on a debug log for the full key table.
[attack_trace]
| Key | Default | Meaning |
|---|---|---|
enabled |
false |
Tester log of what enemy AI targets when an attack starts. Reads only. Needs [debug_log] enabled. |
models |
["c9100-c9999"] |
Models or ranges, matched on the model or npc id. |
rows |
[] |
NpcParam rows, also traced. |
radius |
40.0 | Only within this distance of the player. |
max_chrs |
12 | At most this many of the nearest. |
poll_ms |
33 | Read interval. |
attack_anims |
["3000-3999"] |
Animation ids (modulo 1,000,000) that count as an attack start. |
all_anims |
false |
Log every other animation change too. |
target_changes |
true |
Log AI target changes. |
max_lines_per_s |
30 | Line budget. |
[restage]
| Key | Default | Meaning |
|---|---|---|
replay_gc |
"gate" |
The script GC job on Restage phantoms. gate holds it until the phantom's first update has finished (the crash fix). off never runs it on phantoms. vanilla adds no hook. |
[crash]
| Key | Default | Meaning |
|---|---|---|
enabled |
true |
Crash capture into eclipse-logs/. Local files only. |
keep_reports |
10 | Report folders kept. |
minidump |
true |
Write minidump.dmp. |
test_hotkey |
"" |
"F11" = Ctrl+Shift+F11 crashes the game on purpose. |
restage_fields |
true |
Restage fields in report.json. |
display_guard |
true |
Steps over a vanilla divide by zero when the monitor reports no size. Not in example. |
[hang]
| Key | Default | Meaning |
|---|---|---|
enabled |
true |
The freeze watchdog. No hooks. |
stall_s |
8.0 | Seconds without a frame before a report (clamped 2 to 600). |
dump |
true |
minidump.dmp from a process snapshot. |
dump_full |
true |
Also minidump-full.dmp. |
dump_max_mb |
256 | A bigger full dump is deleted. |
dump_process_data |
false |
Adds environment, command line and handle names. Local tests only. |
max_reports |
2 | Confirmed freeze reports per launch. |
max_unconfirmed |
1 | Unconfirmed ones per launch. |
local_reports |
true |
Reports go to %LOCALAPPDATA%\Nightreign Eclipse\crash-reports. |
drive_probe |
"risky" |
"risky" (USB, removable, network installs), "always", "off". |
drive_probe_s |
5.0 | Seconds between probe reads. |
drive_slow_ms |
250 | A read this slow is a drive_slow line. |
stale_gate |
true |
Pause the debug loggers while frames stand still. |
exit_watch |
true |
Log every close-type window message with who sent it. Not in example. |
[lua_heap]
| Key | Default | Meaning |
|---|---|---|
budget_mib |
64 | Size of the enemy-AI Lua heap. Vanilla is 20. 0 = vanilla. Clamped to 20 to 256. |
[ai_debug]
| Key | Default | Meaning |
|---|---|---|
enabled |
false |
Enemy AI (Lua) diagnostics. |
exclusive |
false |
Install only the AI hooks; skip most of the rest of the DLL. |
log_file |
"ai-debug.log" |
Beside the DLL. |
lua_errors, lua_loads, lua_print, goal_register, activity |
true |
Which line kinds are logged. |
activity_interval_ms |
1000 | Window length. |
think_ids |
[97500000, 97600000, 97210000] |
Watched enemies, by think id. |
chunk_match |
[] |
Extra source substrings to watch, for example a logic id. |
repeat_full |
3 | The same error is logged in full this many times, then at counts 10, 100, 1000. |
per_npc |
true |
One AI_NPC line per watched enemy per window. |
ring_len |
8 | Recent binding calls kept per enemy. |
goal_trace |
true |
GOAL_TRACE, AI_CALL, GOAL_UNKNOWN, AI_GOALS lines. Needs per_npc. |
trace_lines_per_window |
150 | Cap on trace lines per window. |
trace_natives |
13 binding names | Which AI bindings get an AI_CALL line. |
quiet_after_ms |
1500 | Gap before AI_QUIET. |
lua_budget |
false |
lua_state lines in eclipse-events.log: Lua heap use per load. |
[hot_reload]
| Key | Default | Meaning |
|---|---|---|
enabled |
false |
Re-apply edited AI scripts and params while the game runs. Lua reload needs [ai_debug] enabled. |
log_file |
"hot-reload.log" |
Beside the DLL. |
poll_ms |
500 | File watch interval. |
lua |
true |
Watch *.luabnd.dcx in script_dir. |
script_dir |
..\mod\script |
Relative to the DLL folder. |
sticky |
true |
Re-run the newest version after the engine reloads that chunk. |
params |
true |
Watch the regulation. |
regulation |
..\mod\regulation.bin |
Relative to the DLL folder. |
param_names |
NpcParam, NpcThinkParam, AtkParam_Npc, Bullet, BehaviorParam, SpEffectParam, ThrowParam | Params whose changed rows are copied in. |
log_rows |
40 | Changed row ids listed per param in the log. |
reload_key |
"" |
F1-F12: re-apply everything now. |
log_file_opens |
false |
Log loose package files the game opens. |
file_open_match |
\chr\, \script\, \action\, \sd\, regulation |
Path parts that are logged. |
The README says: not verified in game yet.
[sound_debug]
| Key | Default | Meaning |
|---|---|---|
enabled |
false |
Wwise and character sound diagnostics. |
log_file |
"sound-debug.log" |
Beside the DLL. |
chr_filter |
["c9760", "c9740", "c9700", "c9710"] |
Event and bank name prefixes to follow. |
log_names, cs_posts, log_all_banks, bank_callbacks, query_hierarchy, alive_check, wwise_monitor |
true |
Line kinds. |
log_all_game_objects |
false |
Every registered sound object. |
alive_check_ms |
[150, 1500] |
When a playing sound is checked again. |
repeat_full |
5 | Same repeat rule as [ai_debug]. |
summary_interval_ms |
5000 | Summary interval. |
alloc_stats |
false |
Count Wwise heap bytes. |
tae_trace, tae_trace_all_types |
false |
Trace the TAE sound event handler's early exits. |
bank_resolve_trace |
false |
Trace bank id resolution. |
voice_fallback, voice_fallback_radius, voice_parts |
false, 3.0, [] |
Human-voice fix for ported humans. Not in example. |
bgm_probe, bgm_probe_ms, bgm_line_ms, bgm_events, bgm_callbacks, bgm_set_state_hook, bgm_all_states, bgm_query_poll |
false, 250, 1000, 5 event ids, true, true, false, false |
Boss music probe. Not in example. |
[npc_sound]
| Key | Default | Meaning |
|---|---|---|
npc_player_sound_cull_fix |
false |
Makes human NPCs placed in a map audible by distance, like other enemies. |
npc_player_sound_radius |
48.0 | Metres used when the NpcParam value cannot be read. |
log |
false |
NPC_SOUND_CULL lines in sound-debug.log. |
[hp_tick_sync]
| Key | Default | Meaning |
|---|---|---|
enabled |
true |
Continuous HP loss and recovery passives tick in the same frame. |
ids |
46277, 350200, 6850500, 7001100, 7220000, 8540000, 8766000, 8766050 | The SpEffect ids aligned. |
[ui]
| Key | Default | Meaning |
|---|---|---|
hero_change_fade |
0.25 | Seconds of black screen when the Nightfarer is changed. 0.5 = vanilla (no hooks). |
andre_weapon |
true |
Andre's starting armament goes on the Nightfarer's garb rows. |
andre_menu_mark |
1 | Icon on the picked armament's row, 1 to 13. 0 = none. |
andre_menu_direct |
true |
Andre's menu opens straight on the armament list. |
andre_intro_hero |
0 | Experiment: play the expedition intro as this Nightfarer (1 to 10). 0 = off. Not in example. |
[nightlord_cinder] (not in example)
| Key | Default | Meaning |
|---|---|---|
enabled |
false |
The Soul of Cinder Nightlord on menu row 17. The release toml turns it on. |
row, boss |
17, 7 | The menu row and the boss index the engine reads for it. |
everdark_boss7 |
true |
In Deep of Night or with a pool, boss 7 always gets the Everdark flag. |
music |
true |
Swap the boss music state for the port's own. |
run_flag |
7590 | Event flag kept on while this Nightlord is the expedition's. 0 = off. |
menu_list |
true |
Make the expedition list show the row. |
group, carrier, state |
"BgmEnemyType", "_CL_c7580", "c9915" |
The music state names. |
[talisman_pouch] (not in example)
| Key | Default | Meaning |
|---|---|---|
enabled |
false |
One extra talisman slot while the Eclipse pouch is owned. A release toml turns it on. |
goods_id |
10051 | The pouch's EquipParamGoods id. |
write |
false |
Apply the extra slot. |
diag |
false |
Log the values it reads. |
[events]
| Key | Default | Meaning |
|---|---|---|
enabled |
false |
Set event flags for offline tests. Writes are local, not synced. |
log_file |
"flag-events.log" |
Beside the DLL. |
set_flags |
[] |
Set once per run. A negative id clears the flag. |
after_flag |
7500 | Wait for this flag first (7500 = Day 1 started). 0 = as soon as possible. |
delay_s |
15.0 | Delay after after_flag. |
hotkey |
"" |
F1-F12: sets hotkey_flags on each press. |
hotkey_flags |
[] |
Flags for the hotkey. |
watch_flags |
[] |
Flags logged at start and on change. |
poll_ms |
250 | Poll interval. |
[dashboard] and [test_cheats]
| Key | Default | Meaning |
|---|---|---|
[dashboard] enabled |
false |
The LAN control page. |
bind, port |
"0.0.0.0", 27015 |
Where it listens. |
token |
"" |
Shared secret for every POST. Empty = anyone on the LAN. Never write a real token on a page. |
weapon_durability |
30 | Weapon use-counter max set from the dashboard. Not in example. |
[test_cheats] infinite_weapon_uses |
false |
Weapon use counters never drop. |
fast_character_skill |
false |
The Nightfarer skill recharges almost at once. |
character_skill_cooldown |
0.1 | Seconds while that is on (0.05 to 60). |
character_skill_uses |
0 | 0 = vanilla charges, else at least this many (max 5). |
stonesword_key_flag |
0 | Event flag of the Stonesword Key test event. 0 = off. |
[test_cheats] is never set in a release toml.
[overlay]
| Key | Default | Meaning |
|---|---|---|
enabled |
false |
In-game weapon-use bars. A stand-in. |
toggle_key, calibrate_key |
"F7", "F8" |
Hide or show; open calibration. |
opacity |
0.35 | Bar opacity. |
show_text |
true |
Show the number. |
right, left |
{x, y, w, h} rects |
Where the bars sit, as fractions of the screen. |
[net_capture]
| Key | Default | Meaning |
|---|---|---|
enabled |
false |
net-capture.jsonl: decrypted previews of the game's server traffic. A developer tool. Never uploaded. |
Sections that are gone or not in main
[stance_log]: removed. An old toml with it still loads.[chr_reload]: named insrc/chr_reload.rs, but main'sconfig.rshas no such section. See the module list.
Files the DLL writes
Beside the DLL unless a path is given.
| File | From |
|---|---|
chains-debug |
The DLL's text log. |
eclipse-logs/eclipse-events.log |
The event log ([crash]). Rotates at 1 MB. |
eclipse-logs/eclipse-debug.jsonl, eclipse-anim.jsonl, eclipse-poise.jsonl |
[debug_log] |
eclipse-logs/crash-reports/<stamp>-<pid>/ |
[crash] |
%LOCALAPPDATA%\Nightreign Eclipse\crash-reports\<stamp>-<pid>-hang\ |
[hang] |
runs/<UTC date>_seed<pattern>.json |
[runs] |
seed-run-log.jsonl, seed-boss-log.jsonl |
The seed hooks. |
seed-selection-log.jsonl, seed-filter-pool-log.jsonl |
[seed] seed_log, filter_log |
don-depth-log.jsonl, don-ui-latest.txt, don-ui-log.jsonl |
[don] log |
ai-debug.log, hot-reload.log, sound-debug.log, flag-events.log |
Their sections. |
net-capture.jsonl |
[net_capture] |
Source modules (src/)
Compiled into the DLL (listed in lib.rs):
| Module | What it does |
|---|---|
config.rs |
Loads and merges the toml files. |
path.rs |
Finds the DLL's folder for logs. |
seed_filter.rs, seed_log.rs, seed_boss.rs, seed_pick.rs, seed_session.rs |
Seed forcing: the pattern filter, the per-expedition pin and run log, the Deep of Night Nightlord pick, the seed pool, and who is host or guest. |
seed_orch.rs, seed_apply.rs, seed_tick.rs, packet_log.rs |
Opt-in, log-only seed hooks. |
hook_guard.rs |
Re-arms hooks the game's anti-tamper repairs away. |
shifting_earth.rs |
Depth-6 double Shifting Earth, and the custom layer 6. |
don_ui/ |
Deep of Night: rating, HUD, depth-6 scaling, cursed rates, weapon uses, the dashboard's cheats, the Talisman Pouch. |
chaos_rank_http.rs |
Rewrites the server's rank list for depth 6; [net_capture]. |
red_variant.rs |
Depth-6 red enemy variants. |
depth6_chalices.rs |
A Nightlord kill at depth 6 unlocks two chalices. |
cinder_nightlord.rs |
[nightlord_cinder]: the Soul of Cinder Nightlord. |
andre_weapon.rs, andre_menu.rs, andre_store.rs |
Andre's starting armament: applying it, his menu, and a second copy of the picks. |
hero_fade.rs |
[ui] hero_change_fade. |
hp_tick_sync.rs |
[hp_tick_sync]. |
lua_heap.rs |
[lua_heap]: the bigger enemy-AI Lua heap. |
storm_control.rs |
[storm_control]: storm and expedition clock speed. |
hitbox_draw.rs |
[hitbox_draw]: the engine's debug draw of hits and capsules. |
run_recorder.rs |
[runs]: records the path through each expedition for the seed viewer. |
restage_trace.rs |
The Restage crash fix ([restage]) and its trace. |
eclipse_log.rs |
The size-capped logs in eclipse-logs/: queue, caps, scrubbing. |
chr_watch.rs, combat.rs |
[debug_log]: the character watcher and the combat channel. |
poise_trace.rs |
[debug_log] poise_hooks. |
attack_trace.rs |
[attack_trace]. |
crash.rs, crash_guard.rs, hks_crash.rs, display_guard.rs |
Crash capture, its fallbacks, the script-code crash details, and the display divide-by-zero guard. |
hang_watch.rs, drive_probe.rs, exit_watch.rs |
[hang]: freeze watchdog, install drive probe, why the game closed. |
ai_debug.rs, ai_binds.rs |
[ai_debug] and the AI binding name table. |
hot_reload.rs, souls_files.rs |
[hot_reload] and the file readers it needs. |
sound_debug.rs, sound_debug/ |
[sound_debug], including the boss music probe. |
npc_sound.rs |
[npc_sound]. |
flag_events.rs |
[events]. |
server.rs, dashboard.html |
The LAN dashboard. |
overlay.rs |
The in-game overlay: weapon-use bars and the storm badge. |
dump.rs |
Param and singleton dumps. |
Present in the folder but not compiled on main (not in lib.rs):
| File | State |
|---|---|
chr_reload.rs |
Dev-only reload of one character's loose files. Untracked in git. |
reload_status.rs |
Hot-reload and chr-reload status for the dashboard. Untracked. |
script_view.rs |
Read-only script listing for the dashboard. Untracked. |
pose_sample.rs |
Facing sample for [debug_log] pose. Untracked. |
display.rs, display/, events.rs, monitor.rs |
Dormant older code; the file headers say so. |
hooks.rs |
Not in lib.rs. Its purpose was not checked. |
There is no stance_log.rs on main. The stance logger of release 0.0.40 never logged anything (team note, 2026-11-02)
and was removed; poise_* lines in eclipse-poise.jsonl replace it.