Native integration: Codex/healer-man-godot#114. Coordinator: /root, session 01a11cd3-fa7c-7510-ba8f-bc7a3d0310a6. Workers: single_pass_source, single_pass_validation, single_pass_renderer; GPT-6 Luna xhigh.
4.4 KiB
WoW rank-specific global cooldown categories
Shared source issue #3 owns this combat correction. Native integration belongs to Codex/healer-man-godot#114.
Imported rank identity
scripts/generate-wow335-abilities.mjs imports Spell.dbc
StartRecoveryCategory alongside StartRecoveryTime. The expanded 239-field
local enUS layout shifts semantic fields 205/206 to raw columns 211/212.
The extracted DBC SHA-256 is
9f0088da35c5ed0b5106cd20e422611489e435b74043e520e02221e0ce1b1af1.
The additive import joins all 2,229 selected learned rank IDs with no missing
rows and preserves every original generated value and byte after removing
only the inserted gcdCategoryId fields. This is an additive metadata import,
not a regeneration of spell effects, costs, stats or equipment.
wow335AbilityCatalog.ts maps the category into every rank and initial ability;
abilityCatalog.ts selects gcdCategoryId with the learned rank's spell ID,
time and effects. Devotion Aura 48941 is category 38/time 1500 at levels
74–78; 48942 is category 133/time 1500 from level 79 through 80. Categories
are not derived from name, character level or the first rank of the chain.
Combat ownership
wowGlobalCooldown.ts owns matching-category admission and timer creation.
Player state, PartyMember and CombatActorState carry optional
globalCooldownEndsByCategory keyed by decimal category string. For WoW,
globalCooldownEndsAt is the category-133 projection. Starting category 38
or 0 preserves the independent category-133 scalar and timer.
An exact category is checked even when the attempted spell's own duration is
zero. A zero-duration action creates no timer. Explicit category 0 is a real
key: a positive-duration fixture starts key "0" and other categories remain
available. None of the current 2,229 learned rows has positive duration in
category 0, so ordinary learned category-0 actions continue working during
category 133. Legacy entries lacking a category use 133 when duration is
positive; a missing-category zero-duration entry retains its bypass.
Player castAbility and party readiness/commit call the same helper.
Cast completion and Sudden Doom's internal free Death Coil keep their existing
execution exemptions. Actor authority adapters carry category maps in both
directions; initialization, reset and native player switches preserve actor
ownership. NPC next-action scheduling remains its existing rotation cadence.
Raw WoW durations below 1000 ms remain unchanged, including five 500 ms Shadowfury rows and Backdraft/party haste paths. Positive non-133 WoW timers retain their raw duration. Ordinary category-133 timers retain their existing haste policy and one-second floor. Runewaker/RoM timing remains scalar-only; this change does not merge stat formulas, allocation, gear pools or rigs.
The matching-category behavior follows the pinned primary AzerothCore category manager and Spell admission/creation. This is category policy evidence; complete original-client hit tables, spell-attribute haste parity and companion rotation parity remain separate.
Validation and publication
Focused regressions live in src/game/wowGlobalCooldown.test.ts. They include
exact rank selection and public source character initialization/casting.
Native evidence covers the public Ready Discipline cast path and separately
labeled category-38/133/0 UI fixtures. The offline native diagnostic profile
catalog currently fixes its characters at level 80, so its GPU fixture is not
a live level-74 profile claim or additional Paladin certification. Balance
certification remains the existing five Ready WoW specializations.
The published source checkout and installed mirror's combatStore/partyRuntime are equal after CRLF normalization. The native byte-guard manifest instead patches the exact pre-114 installed mirror and preserves its mixed line endings. Native source pins identify installed bytes, not a claim that source Git HEAD alone recreates every asset/export in the native installation. See the owning issues for final commands, validation counts, evidence and review status.