Summary
ConfigLoader.getInt(), getFloat(), and getString() only accept a single key argument and perform a flat lookup against DEFAULTS — they do not support the 2-arg getValue(section, key, fallback) namespace API. Every call site that uses these convenience getters silently falls through to hard-coded fallback values instead of reading from the actual JSON config sections.
Location
scripts/autoload/config_loader.gd:126-147 — convenience getters
scripts/autoload/config_loader.gd:17-50 — DEFAULTS is flat (section-less)
scripts/combat/room_loader.gd:38 — calls getString("enemy_types") (flattened key that may not exist in sectioned JSON)
scripts/combat/combat_formula.gd:176,178 — calls config_int("ability_min", ...) where key does not exist in DEFAULTS
Impact
- All config reads via convenience getters return hard-coded fallbacks instead of JSON values
- Tunable values in
config/game_config.json are silently ignored
- Balance changes require code changes instead of config edits
- Estimated: 5–8 call sites affected
Priority: P1 · Size: M · Status: Ready
Summary
ConfigLoader.getInt(),getFloat(), andgetString()only accept a single key argument and perform a flat lookup againstDEFAULTS— they do not support the 2-arggetValue(section, key, fallback)namespace API. Every call site that uses these convenience getters silently falls through to hard-coded fallback values instead of reading from the actual JSON config sections.Location
scripts/autoload/config_loader.gd:126-147— convenience gettersscripts/autoload/config_loader.gd:17-50—DEFAULTSis flat (section-less)scripts/combat/room_loader.gd:38— callsgetString("enemy_types")(flattened key that may not exist in sectioned JSON)scripts/combat/combat_formula.gd:176,178— callsconfig_int("ability_min", ...)where key does not exist inDEFAULTSImpact
config/game_config.jsonare silently ignoredPriority: P1 · Size: M · Status: Ready