Preserve source rank recovery categories for WoW actor cooldowns (#3)

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.
This commit is contained in:
warren committed 2026-10-09 18:13:10 -04:00
1 parent fc21cbca9b
commit 8a7e44cc14
13 files changed
+448 -18

No files matched your search

+3 -1
View File
@@ -190,6 +190,7 @@ function parseSpells(buffer, castTimes, durations, radii, ranges, icons) {
.replace(/\.(?:blp|tga)$/i, "")
.toLowerCase(),
powerCostPercentage: unsigned(shifted(204)),
startRecoveryCategory: unsigned(shifted(205)),
startRecoveryTimeMs: unsigned(shifted(206)),
effects: Array.from({ length: 3 }, (_, effectIndex) => ({
index: effectIndex,
@@ -293,8 +294,9 @@ function slimRank(spell, spells) {
description: resolveDescription(spell, spells),
castTimeMs: spell.castTimeMs,
cooldownMs: Math.max(spell.recoveryTimeMs, spell.categoryRecoveryTimeMs),
// Zero is the DBC signal for abilities that do not start a global cooldown.
// Keep the category key independent from its StartRecoveryTime duration.
gcdMs: spell.startRecoveryTimeMs,
gcdCategoryId: spell.startRecoveryCategory,
// SpellDuration.dbc uses negative durations for permanent/toggled effects.
// Preserve those as zero so the runtime converts them to a non-expiring aura
// instead of a one-millisecond aura that the AI immediately recasts.