fix(ui): port live experience quality updates (#217)

Parse retail PrivateUpdatePropertyInt64 and route authoritative Total/Available Experience through both local-player projections so Attributes, the level meter, and Skills refresh together. Preserve the existing retail XP curve and right-align the Total XP value.

Close the user-confirmed item-give gate for #216 and record the named-retail/ACE/holtburger conformance evidence.

Co-Authored-By: Codex <noreply@openai.com>
This commit is contained in:
Erik 2026-07-13 20:43:48 +02:00
parent 30d294506c
commit 84b7d2d7cd
15 changed files with 391 additions and 29 deletions

View file

@ -327,6 +327,18 @@ public sealed class LocalPlayerState
CharacterChanged?.Invoke();
}
/// <summary>
/// Apply one authoritative signed 64-bit player-quality update and notify
/// character-sheet consumers. Retail routes 0x02CF through
/// <c>Handle_Qualities__PrivateUpdateInt64 @ 0x00559000</c>; Total XP (1)
/// and Available XP (2) are the character-window values carried here.
/// </summary>
public void OnInt64PropertyUpdate(uint propertyId, long value)
{
_properties.Int64s[propertyId] = value;
CharacterChanged?.Invoke();
}
/// <summary>Apply or replace one PlayerDescription skill entry.</summary>
public void OnSkillUpdate(
uint skillId,