feat(player): port retail augmentation stat chain
This commit is contained in:
parent
0cb60d98a0
commit
461a1fb7b4
22 changed files with 953 additions and 138 deletions
|
|
@ -141,10 +141,13 @@ InqRunRate(this, &rateOut):
|
|||
EnchantAttribute2nd(this, 4, ¤tStamina) // vital-buff adjusts the LOCAL COPY only
|
||||
// (not the wire "current stamina" state)
|
||||
|
||||
skill = InqSkillBaseLevel(this, SKILL_RUN=0x18) // base: formula-bonus + init + ranks
|
||||
// (+ two minor bonus properties 0x146,
|
||||
// 0x158 — NOT ported, see §6 AP-127)
|
||||
EnchantSkill(this, 0x18, &skill) // vitae * skill-enchantments, floor@0.5, round
|
||||
skill = InqSkillBaseLevel(this, SKILL_RUN=0x18) // formula-bonus + init + ranks
|
||||
skill += max(PropertyInt 0x16D, 0) // LumAugAllSkills
|
||||
skill += matching category augmentation ? 10 : 0 // 0x12C melee / 0x12D missile /
|
||||
// 0x12E magic; exact skill-id switch
|
||||
EnchantSkill(this, 0x18, &skill) // vitae * skill-enchantments, floor@0.5, truncate
|
||||
if (PropertyInt 0x146 > 0) skill += 5 // Jack of All Trades
|
||||
if (skill is specialized) skill += 2 * max(PropertyInt 0x158, 0)
|
||||
|
||||
if (currentStamina == 0) skill = 0 // THE stamina-gates-movement mechanism
|
||||
|
||||
|
|
@ -189,16 +192,21 @@ skill... reading vitae + relevant skill enchantments from the M3
|
|||
active-effect state" without a general effective-skill engine — the only new
|
||||
code is the type-flag filter and the skill-id key.
|
||||
|
||||
**Two things P1 deliberately does NOT port** (bounded scope, register row
|
||||
AP-127):
|
||||
1. Two minor additive skill-bonus properties inside `InqSkillBaseLevel`'s
|
||||
surrounding block (property `0x146` "> 0 → +5", property `0x158`
|
||||
"specialized-skill → double a PP-derived term") — small, rare bonuses
|
||||
unrelated to burden/stamina/vitae.
|
||||
2. `EnchantAttribute2nd`'s buff-adjustment of the LOCAL stamina-current copy
|
||||
used only for the `== 0` gate (i.e. a Stamina-boosting buff could
|
||||
theoretically keep that local copy above 0 even at true-zero wire
|
||||
stamina). We gate on the raw wire "current stamina" value directly.
|
||||
**2026-07-31 #268 closeout:** the previously bounded augmentation terms are
|
||||
now ported in shared `PlayerSkillMath`, after a complete read of
|
||||
`CACQualities::InqSkill @ 0x00592660`. The exact order matters:
|
||||
|
||||
1. intrinsic formula/init/ranks;
|
||||
2. positive property 0x16D plus the exact category +10 switch;
|
||||
3. `EnchantSkill`;
|
||||
4. property 0x146 contributes +5 when positive;
|
||||
5. specialized skills receive `2 × max(property 0x158, 0)`.
|
||||
|
||||
The character panel and Runtime movement both consume this one Core
|
||||
calculation. AP-127 is retired. The apparent current-stamina-copy residual
|
||||
does not create an independently reachable effect for ordinary stat
|
||||
enchantments: current and maximum stamina use distinct secondary-attribute
|
||||
keys, and a max-stamina enchantment cannot turn zero current stamina nonzero.
|
||||
|
||||
## 6. GetRunRate / GetJumpHeight / JumpStaminaCost formula bodies (MovementSystem, pc 695958+)
|
||||
|
||||
|
|
@ -365,10 +373,8 @@ every pre-P1 `PlayerWeenieTests.cs` expectation unchanged.
|
|||
- **TS-23 extended** (not a new row) — its "PlayerKillerStatus not parsed"
|
||||
scope now also covers the new `MovementSystem.JumpStaminaCost` `pk`
|
||||
parameter, hardcoded `false` at the `PlayerWeenie` call site pending P3.
|
||||
- **New AP-127** — two minor retail skill-bonus properties (0x146, 0x158)
|
||||
and the stamina-buff-adjusts-local-copy nuance are not ported (§5, §9
|
||||
bullet list) — bounded, deliberate, low-risk (rare bonus terms, not
|
||||
burden/stamina/vitae).
|
||||
- **AP-127 retired 2026-07-31 (#268)** — the complete 0x16D/category/
|
||||
0x146/0x158 chain is shared by panel and movement (§5 closeout).
|
||||
- **New UN-8** — `CACQualities::CanJump`'s x87 comparison polarity resolved
|
||||
by domain plausibility rather than a literal BN read (§3); Ghidra MCP
|
||||
confirmation is the retire path.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue