chore: FCS bump b21433ecc + harness [3c.3] enmity tables section#115
Merged
Conversation
The harness previously only surfaced enmity via TargetInfo.EnmityItems,
which Reader.Target.cs gates behind CurrentTargetID > 0 — so the table
was invisible when the player had no target. Two distinct enmity-related
structures exist on UIState and both deserve visibility for testing:
AGRO list (UIState.Hater._haters, HaterCount)
AGROMAP_KEY / AGRO_COUNT_KEY — "who is aggro'd on the player"
Already surfaced on PlayerInfo.EnmityItems; reprinted with the raw
counter alongside for verification.
HATE list (UIState.Hate._hateInfo, HateArrayLength)
ENMITYMAP_KEY / ENMITY_COUNT_KEY — "the player's own hate table"
Read directly from memory using HateItem offsets so the data is
visible regardless of whether GetTargetInfo would populate it.
Names looked up against GetActors() since hate entries store only
ID + Enmity.
Also logs CanGetAgroEntities / CanGetEnmityEntities capability flags so
a stripped scan (missing signature) is obvious at a glance, and lists
up to 10 actors with IsAgroed || InCombat set — independent of either
table — as an eye-check that ActorItem.IsAgroed lights up correctly.
The note above the TargetInfo.EnmityItems print is updated to point at
[3c.3] so it's clear why the same data shows up twice in different forms.
Harness-only — no Sharlayan source changes, no version bump.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Upstream rolled two commits since the previous pin: b21433ecc Add names from EventSystemDefine as comments e04ec6b37 Update structs Routine struct refresh + a comments-only addition. No public-API, field-rename, or layout-shape changes that Sharlayan would notice. Lumina 7.5.0, Lumina.Excel 7.4.3, NLog 6.1.3, Newtonsoft.Json 13.0.4, and ILRepack.Lib.MSBuild.Task 2.0.45 are already at latest stable (verified via `dotnet list package --outdated` — no available updates). Build clean, 189/189 tests pass, merged Sharlayan.dll byte size unchanged at 10980 KB, debug DLLs deployed to Chromatics. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Two commits ahead of
main:3c274c0— chore: bump FCS submodule5d3840d68 → b21433ecc(two upstream commits: routine struct refresh + a comments-only addition forEventSystemDefine)988d9bb— harness: add[3c.3]ENMITY TABLES section — always show both listsFCS bump (
3c274c0)Latest upstream commits since the previous pin:
Nothing that touches public-API names, field layouts, or anything Sharlayan reflects against. Sharlayan.dll size unchanged at 10980 KB; all 189 tests still pass; harness builds clean.
Verified Lumina 7.5.0, Lumina.Excel 7.4.3, NLog 6.1.3, Newtonsoft.Json 13.0.4, and ILRepack.Lib.MSBuild.Task 2.0.45 are all at latest stable via
dotnet list package --outdated— nothing else to bump. No open Dependabot PRs.Harness enmity section (
988d9bb)The harness previously surfaced enmity only via
TargetInfo.EnmityItems, whichReader.Target.cs:111gates behindCurrentTargetID > 0— so the table was invisible whenever the player had no target. Two distinct enmity-related structures exist onUIStateand both deserve visibility for testing:UIState.Hater._haters(AGROMAP_KEY/AGRO_COUNT_KEY)PlayerInfo.EnmityItemsUIState.Hate._hateInfo(ENMITYMAP_KEY/ENMITY_COUNT_KEY)TargetInfo.EnmityItems(gated)The new
[3c.3] ENMITY TABLESsection:CanGetAgroEntities/CanGetEnmityEntitiescapability flags so a stripped scan (missing signature) is obvious at a glance.PlayerInfo.EnmityItemsplus the rawHaterCountfor cross-check.ENMITYMAP_KEYdirectly usingHateItemoffsets, bypassing the target gate so the data is always visible. Names are resolved againstGetActors()since hate entries store only ID + Enmity in memory.IsAgroed || InCombatset, independent of either table, as an eye-check thatActorItem.IsAgroed(CharacterData.Flagsbit 1) lights up correctly.The earlier
TargetInfo.EnmityItemsprint in[3c]is kept and now annotated to point at[3c.3]so it's clear why the same data shows up twice in different forms.Version
9.0.38 → 9.0.39(Sharlayan source changed via the FCS submodule bump; harness-only change in988d9bbdoes not bump per policy).Test plan
pwsh .\build.ps1clean — 0 warnings, 0 errors.dotnet test— 189 / 189 pass.dotnet list package --outdated— no available updates.Build Dependencies/Sharlayan/.pwsh .\harness.ps1against a live client and verify[3c.3]shows the AGGRO and HATE lists with sensible counts when engaged and empty otherwise.🤖 Generated with Claude Code