Add shared core attribute allocation

This commit is contained in:
JB
2026-07-25 22:11:46 -04:00
parent f0fbdc2853
commit 478a37c17a
17 changed files with 206 additions and 40 deletions
+45
View File
@@ -757,6 +757,51 @@ each keystroke does not create a navigation entry. Retain an explicit Search
button for immediate submission and keyboard/accessibility fallback. During
navigation, expose a textual pending state and suppress duplicate submissions.
Builder option grids support an icon-only square mode for small, icon-led
catalogs such as a gear item's two-to-four compatible Brand Sets. In this mode,
the compact 58-pixel cells reset the ordinary text-and-icon grid to a single
centered track, and the transparent icon fills that square. Align the fieldset
with adjacent compact controls rather than inheriting the standard radio-grid
top margin. Visible truncated names are omitted. Preserve the complete name as
the radio control's accessible label and
as hover text. Selection, hover, pressed, and keyboard-focus states remain on
the square perimeter; missing icons fall back to the entity initials.
Builder level controls enforce item availability without changing the scaling
curve's origin. T0 and T1 gear and weapons allow levels 1–50; T2 gear and
weapons allow levels 40–50 because lower-level T2 items are not found in game.
Their base-value progression still follows the same level-1-based curve.
Selecting T2 on a weapon below level 40 raises the configured level to 40 and
calculates the ordinary level-40 curve value; never rebase level 40 as T2 level
1. Slider bounds, direct-input validation, displayed bounds, and clamping must
all enforce the same availability minimum.
ISAC weapon-tier damage and core ranges are observations recorded at their
explicit reference level. The progression curve still has a level-1 origin,
but builder scaling must calculate the ratio between the target level and the
stored observation's `reference_level`. Do not treat every stored endpoint as a
level-1 value merely because the curve begins there.
### Shared core allocation
Firepower, Toughness, and Engineering use one system-wide tier profile shared
by gear and weapons. Maintain the T0/T1/T2 nominal ranges in ISAC Global
Configuration rather than repeating them on every item editor. The initial
level-50 profiles are T0 `30–78`, T1 `36–94`, and T2 `44–112`. Global
configuration mutations follow ordinary contributor moderation and append-only
ISAC audit rules.
The three nominal ranges define a combined allocation pool, not three hard
per-stat clamps. At a given level, the valid total lies between three times the
scaled nominal minimum and three times the scaled nominal maximum. An
individual core may be zero or exceed the nominal maximum when points are
redistributed, up to the entire pool maximum. Builder gear and weapon editors
show three sliders/direct inputs plus an explicit current-total versus
valid-pool readout; out-of-pool totals use textual red/restricted feedback.
Both equipment families contribute their configured cores to the build summary.
Treat this redistribution model as empirical and keep it configurable as more
in-game edge cases are observed.
Pending records may be used as dependencies in later proposals by any
contributor. Render these choices in the ordinary assignment control with a
restrained orange border/background and the explicit text `PENDING` plus the
+13 -1
View File
@@ -150,6 +150,19 @@ targetRaw =
/ weaponMultiplier(referenceLevel)
```
SHD.build stores the reference level associated with each weapon-tier range.
Builder calculations use that recorded observation level in the ratio above.
The curve's level-1 origin does not imply that every stored range was observed
at level 1. T2 availability limits likewise do not change a range's recorded
reference level.
Firepower, Toughness, and Engineering nominal tier ranges are stored once in
the shared core-allocation configuration at reference level 50. Scale those
nominal endpoints to the target level using the appropriate equipment-family
multiplier, then derive the combined pool bounds by multiplying each endpoint
by three. Redistribution changes the split between the three cores without
changing the selected item's total allocation.
The `1.14` offset is provisional and is currently validated only for the
level-40-to-level-50 interval. Preserve enough decimal precision to revise it
without migrating rounded data.
@@ -217,4 +230,3 @@ Useful known outputs include:
`2187 DMG`, `139 FP`, `142 TGH`, `36 ENG`.
- Weapon sample: level 40 `753 DMG`, `44 FP`, `15 TGH`, `45 ENG`; level 50
`873 DMG`, `51 FP`, `18 TGH`, `52 ENG`.