Compare commits

...

6 commits

Author SHA1 Message Date
6707d64ffb docs: correct stale CoA dispel comments in DCR_init.lua
- COA_CAUTERIZE: bleed IS modelled (DC.BLEED registration exists)
- COA_MENDING_TOUCH: note it is intentionally translation-only (passive)
- COA_BLIGHT_ANTIDOTE: state the 524824 curse-cure is deliberately
  not registered (unverified server-side, like Antivenom's DBC curse)

No behavior change.
2026-06-10 02:15:57 +02:00
a662a14dbb ci(release): sync release.yml from coa-template
hide_archive_links is only honored by Gitea on release edit, not create —
add the PATCH step after create/lookup so auto-generated source archive
links actually stay hidden (coa-template 90874c5).
2026-06-10 02:11:46 +02:00
ffd20d9c74 fix(dispels): map Witch Doctor Hexbreak (806240) as single-target Curse cure
All checks were successful
release / release (push) Successful in 2s
Witch Doctor only had Cleansing Idol (504840, AoE Disease/Poison) registered,
so curses were never flagged or curable. Add Hexbreak (806240) as the
single-target Curse remover (IsBest=1, 40yd instant). DBC dispel-type reads
"Magic" but name+description+gameplay are Curse (cf. Soothing Touch).
2026-05-31 14:45:24 +02:00
af24c1de66 ci(release): hide auto-generated source archives (hide_archive_links) 2026-05-29 20:51:11 +02:00
9adfb1e1bd fix(libs): pcall AceGUI OnGamePadButtonDown (3.3.5 has no gamepad script type)
All checks were successful
release / release (push) Successful in 2s
2026-05-29 20:23:33 +02:00
6a686f9a2d fix: reset Bleed cure state in Configure + map CureBleed checkbox; port icon/border textures .tga->BLP 2026-05-29 10:43:54 +02:00
14 changed files with 19 additions and 11 deletions

View file

@ -37,10 +37,14 @@ jobs:
RID=$(curl -sf -X POST -H "Authorization: token $GITEA_TOKEN" \
-H "Content-Type: application/json" \
"$API/repos/$REPO/releases" \
-d "$(jq -nc --arg t "$TAG" '{tag_name:$t,name:$t,draft:false,prerelease:false}')" \
-d "$(jq -nc --arg t "$TAG" '{tag_name:$t,name:$t,draft:false,prerelease:false,hide_archive_links:true}')" \
| jq -r '.id')
fi
echo "release id: $RID"
# Gitea honors hide_archive_links only on edit, not create — PATCH it
# so the auto-generated Source Code (zip/tar.gz) links stay hidden.
curl -sf -X PATCH -H "Authorization: token $GITEA_TOKEN" -H "Content-Type: application/json" \
"$API/repos/$REPO/releases/$RID" -d '{"hide_archive_links":true}' >/dev/null || true
# Upload every dist/*.zip. Per-asset failures don't fail the job —
# we want partial releases to still publish rather than block the
# whole pipeline on one big file.

View file

@ -124,8 +124,8 @@ DC.AfflictionSound = "Interface\\AddOns\\Decursive\\Sounds\\AfflictionAlert.wav"
--DC.AfflictionSound = "Sound\\Doodad\\BellTollTribal.wav"
DC.FailedSound = "Interface\\AddOns\\Decursive\\Sounds\\FailedSpell.wav";
DC.IconON = "Interface\\AddOns\\Decursive\\iconON.tga";
DC.IconOFF = "Interface\\AddOns\\Decursive\\iconOFF.tga";
DC.IconON = "Interface\\AddOns\\Decursive\\iconON.blp";
DC.IconOFF = "Interface\\AddOns\\Decursive\\iconOFF.blp";
for class in pairs(RAID_CLASS_COLORS) do
DC["CLASS_"..class] = class
@ -506,7 +506,7 @@ function D:OnInitialize() -- Called on ADDON_LOADED -- {{{
DC.SpellsToUse[DS["COA_DEVOUR_CURSE"]] = { Types = {DC.CURSE}, IsBest = 0, Pet = false, } -- Cultist
DC.SpellsToUse[DS["COA_REBUKE"]] = { Types = {DC.MAGIC, DC.DISEASE, DC.POISON}, IsBest = 1, Pet = false, } -- Templar
DC.SpellsToUse[DS["COA_ANTIVENOM"]] = { Types = {DC.POISON}, IsBest = 0, Pet = false, } -- Venomancer (baseline, poison-only — curse-dispel in DBC doesn't fire server-side)
DC.SpellsToUse[DS["COA_BLIGHT_ANTIDOTE"]] = { Types = {DC.POISON}, IsBest = 1, Pet = false, } -- Venomancer (MoA — same Antidote/Antivenom pattern as 800905; Venomancer curse-dispel needs the dedicated 524824 spell)
DC.SpellsToUse[DS["COA_BLIGHT_ANTIDOTE"]] = { Types = {DC.POISON}, IsBest = 1, Pet = false, } -- Venomancer (MoA — same Antidote/Antivenom pattern as 800905; the dedicated curse-cure 524824 is deliberately not registered: like Antivenom's DBC curse-dispel it is unverified to fire server-side)
DC.SpellsToUse[DS["COA_BURN_IMPURITIES"]] = { Types = {DC.DISEASE, DC.POISON}, IsBest = 0, Pet = false, } -- Pyromancer
DC.SpellsToUse[DS["COA_SURVIVAL_POTION"]] = { Types = {DC.DISEASE, DC.POISON}, IsBest = 0, Pet = false, } -- Ranger
DC.SpellsToUse[DS["COA_HEMAL_EXCISION"]] = { Types = {DC.CURSE}, IsBest = 0, Pet = false, } -- Bloodmage
@ -517,6 +517,7 @@ function D:OnInitialize() -- Called on ADDON_LOADED -- {{{
DC.SpellsToUse[DS["COA_SOOTHING_TOUCH"]] = { Types = {DC.DISEASE, DC.POISON}, IsBest = 1, Pet = false, } -- Primalist
DC.SpellsToUse[DS["COA_SOOTHING_TOUCH_MOA"]] = { Types = {DC.DISEASE, DC.POISON}, IsBest = 1, Pet = false, } -- Primalist MoA
DC.SpellsToUse[DS["COA_CLEANSING_IDOL"]] = { Types = {DC.DISEASE, DC.POISON}, IsBest = 0, Pet = false, } -- Witch Doctor — Cleansing Idol (AoE, can't direct-target via click)
DC.SpellsToUse[DS["COA_HEXBREAK"]] = { Types = {DC.CURSE}, IsBest = 1, Pet = false, } -- Witch Doctor — Hexbreak (single-target curse removal, 40yd, instant; DBC type reads "Magic" but description+gameplay = Curse, cf. Soothing Touch)
DC.SpellsToUse[DS["COA_NANOBOT_CLEANSER"]] = { Types = {DC.DISEASE, DC.POISON}, IsBest = 1, Pet = false, } -- Tinker — Nanobot Cleanser (single-target, direct-castable)
DC.SpellsToUse[DS["COA_CAUTERIZE"]] = { Types = {DC.MAGIC, DC.POISON, DC.BLEED}, IsBest = 1, Pet = false, } -- Pyromancer — Cauterize (Magic + Poison via dummy; 1 Bleed via Dispel Mechanic, re-tagged by DC.BleedSpellIDs)
end
@ -826,7 +827,7 @@ function D:OnDisable() -- When the addon is disabled by Ace
D.Status.Enabled = false;
D.DcrFullyInitialized = false;
D:SetIcon("Interface\\AddOns\\Decursive\\iconOFF.tga");
D:SetIcon("Interface\\AddOns\\Decursive\\iconOFF.blp");
if ( D.profile.ShowDebuffsFrame) then
D.MFContainer:Hide();
@ -986,6 +987,7 @@ function D:Configure() --{{{
CuringSpells[DC.POISON] = false;
CuringSpells[DC.DISEASE] = false;
CuringSpells[DC.CHARMED] = false;
CuringSpells[DC.BLEED] = false; -- CoA: reset so Cauterize doesn't ghost after respec
local Spell, spellName, Type, _;
local GetSpellInfo = _G.GetSpellInfo;
@ -1186,12 +1188,13 @@ function D:GetSpellsTranslations(FromDIAG)
["COA_PRAYER_OF_ELUNE"] = { 801987, }, -- Starcaller (Magic)
["COA_WITCHBLOOD_TONIC"] = { 802278, }, -- WitchHunter (Curse)
["COA_SANCTIFY"] = { 524968, }, -- Sun Cleric (Magic, Poison, Disease)
["COA_MENDING_TOUCH"] = { 524971, }, -- Primalist passive (Soothing Touch +Poison +Disease, Neutralizing Touch self-heal on Magic dispel)
["COA_MENDING_TOUCH"] = { 524971, }, -- Primalist passive (Soothing Touch +Poison +Disease, Neutralizing Touch self-heal on Magic dispel) — intentionally translation-only, never registered in SpellsToUse (passive, not castable)
["COA_SOOTHING_TOUCH"] = { 801439, }, -- Primalist (Poison, Disease — DBC type "Magic" doesn't fire; trust gameplay)
["COA_SOOTHING_TOUCH_MOA"] = { 520841, }, -- Primalist MoA (Poison, Disease — same Soothing-Touch variant pattern as Venomancer's Antivenom/Blight pair)
["COA_CLEANSING_IDOL"] = { 504840, }, -- Witch Doctor (Disease, Poison — AoE idol, 30yd, ticks every 3s)
["COA_HEXBREAK"] = { 806240, }, -- Witch Doctor (Curse — single-target, 40yd, instant; DBC type "Magic" doesn't fire, trust description+gameplay)
["COA_NANOBOT_CLEANSER"] = { 502537, }, -- Tinker / Invention (Disease, Poison — single-target, 40yd, ticks every 3s for 15s)
["COA_CAUTERIZE"] = { 560749, }, -- Pyromancer (Magic + Poison via dummy script; also removes 1 bleed via Dispel Mechanic — bleed not modelled by Decursive)
["COA_CAUTERIZE"] = { 560749, }, -- Pyromancer (Magic + Poison via dummy script; 1 Bleed via Dispel Mechanic — DC.BLEED, re-tagged by DC.BleedSpellIDs)
}
for k,v in pairs(customSpells) do Spells[k] = v end
end

View file

@ -84,7 +84,7 @@
<Color r="0" g="0" b="0" a="0.75" />
</Texture> <!-- }}} -->
<Texture name="DcrLVIconTemplate" file="Interface\AddOns\Decursive\iconON.tga" virtual="true"> <!-- {{{ -->
<Texture name="DcrLVIconTemplate" file="Interface\AddOns\Decursive\iconON.blp" virtual="true"> <!-- {{{ -->
<Anchors>
<Anchor point="TOPLEFT" relativePoint="TOPLEFT" relativeTo="$parent">
<Offset>
@ -97,7 +97,7 @@
</Size>
</Texture> <!-- }}} -->
<Texture name="DcrLVRaidIconTemplate" file="Interface\AddOns\Decursive\iconON.tga" virtual="true"> <!-- {{{ -->
<Texture name="DcrLVRaidIconTemplate" file="Interface\AddOns\Decursive\iconON.blp" virtual="true"> <!-- {{{ -->
<Anchors>
<Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" relativeTo="$parent">
<Offset>

View file

@ -1877,6 +1877,7 @@ function D:SetCureOrder (ToChange)
[DC.POISON] = D.options.args.CureOptions.args.CurePoison,
[DC.DISEASE] = D.options.args.CureOptions.args.CureDisease,
[DC.CHARMED] = D.options.args.CureOptions.args.CureCharmed,
[DC.BLEED] = D.options.args.CureOptions.args.CureBleed, -- CoA: added with DC.BLEED
}
end

View file

@ -397,7 +397,7 @@ do
if D.LiveList.TestItemDisplayed and i == 1 and Unit ~= "target" and Unit ~= "mouseover" and UnitExists(Unit) then
D:Debug("|cFFFF0000Setting test debuff for %s (debuff %d)|r", Unit, i);
return "Test item", DC.TypeNames[D.Status.ReversedCureOrder[1]], 2, "Interface\\AddOns\\Decursive\\iconON.tga", D.LiveList.TestItemDisplayed + 70;
return "Test item", DC.TypeNames[D.Status.ReversedCureOrder[1]], 2, "Interface\\AddOns\\Decursive\\iconON.blp", D.LiveList.TestItemDisplayed + 70;
end
--D:Debug("|cFFFF0000Getting debuffs for %s , id = %d|r", Unit, i);

View file

@ -199,7 +199,7 @@ local function Constructor()
button:SetScript("OnKeyDown", Keybinding_OnKeyDown)
button:SetScript("OnMouseDown", Keybinding_OnMouseDown)
button:SetScript("OnMouseWheel", Keybinding_OnMouseWheel)
button:SetScript("OnGamePadButtonDown", Keybinding_OnKeyDown)
pcall(button.SetScript, button, "OnGamePadButtonDown", Keybinding_OnKeyDown)
button:SetPoint("BOTTOMLEFT")
button:SetPoint("BOTTOMRIGHT")
button:SetHeight(24)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1 MiB

BIN
Decursive/iconOFF.blp Normal file

Binary file not shown.

Binary file not shown.

BIN
Decursive/iconON.blp Normal file

Binary file not shown.

Binary file not shown.