Skip to content

Commit 32fbb32

Browse files
VortexUKclaude
andcommitted
docs: pin the English-only EQ2 language assumption
Documenting the assumption + the 2026 "no active non-English servers" finding so future-me doesn't re-research it. Lists the four spots in the code that depend on specific English strings ACT emits, and what the failure mode would be if a non-English EQ2 ever materialises (all four degrade gracefully rather than crash). No code change. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 871cdc0 commit 32fbb32

1 file changed

Lines changed: 15 additions & 0 deletions

File tree

CLAUDE.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,21 @@ Failure modes (offline, GitHub 5xx, rate-limit, malformed JSON) all collapse to
144144

145145
No caching of the GitHub response — request volume is at most a handful per user per day, well under the unauthenticated 60/h/IP limit, and re-fetching on every ACT start means a user who just installed an update sees the banner clear instantly after restarting ACT.
146146

147+
## Language assumptions (English-only EQ2)
148+
149+
The plugin assumes English ACT EQ2-parser output throughout. ACT does have German + French EQ2 parser plugins on record, but as of 2026 there are **no active non-English EQ2 servers** — the EU/JP servers (Storms = French, Valor = German, Sebilis = Japanese) were consolidated into the English-only Thurgadin server in 2016, and the current TLE servers (Varsoon, Kaladim) are English-only. So this assumption is safe today; documenting it so future-you doesn't have to re-research it.
150+
151+
Four spots in the code depend on specific English strings ACT emits:
152+
153+
| Where | English string assumed |
154+
|---|---|
155+
| `src/Core/PayloadBuilder.cs` `OutgoingGroupToSwingType` | `combatant.Items` dict keys: `"Auto-Attack (Out)"`, `"Skill/Ability (Out)"`, `"Healed (Out)"`, `"Cure/Dispel (Out)"`, `"Threat (Out)"` |
156+
| `src/Core/EncounterTitle.cs` `IsPlaceholder` | Placeholder encounter titles `"Encounter"` and `"Unknown"` |
157+
| `src/EncounterCapture.cs` `Poll` | Zone-aggregate pseudo-encounter title `"All"` |
158+
| `src/Core/EncounterZone.cs` `IsImportOrMerge` | Synthetic-zone name `"Import/Merge"` |
159+
160+
**If a non-English EQ2 community ever materialises** (a private server, a Daybreak re-launch, …): the swing-type dict fails *gracefully* — unknown keys just return 0 — so a foreign-language client would still upload but with swings unclassified. The other three are predicates that return safe defaults (don't-skip / not-placeholder / not-import-merge) when their string doesn't match, so the worst outcome is a German user's "Begegnung"-titled fight uploading under that name instead of being deferred. Audit pass at that point: localise each table, ideally pull the canonical strings out of the non-English parser DLL rather than guessing.
161+
147162
## ACT UI extension (v0.1.9+)
148163

149164
ACT has **no documented extension point for its context menu** — plugins reach into the WinForms control tree by name and mutate the existing `ContextMenuStrip`. Reference implementation: [ActStatter](https://github.com/eq2reapp/ActStatter/blob/main/StatterMain.cs). The wiring lives in `src/ActMenuExtension.cs`; the gotchas worth knowing if you ever extend it:

0 commit comments

Comments
 (0)