From c8df46b4cb727fe56892073832e5384b4a8b70de Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Mon, 24 Nov 2025 15:24:52 +1100 Subject: [PATCH] Fix Spellslinger gaining generic damage instead of Spell damage Both mods from Blade Blast and Spellslinger are meant to provide added spell damage but were providing generic damage to the skills they were linked to This was obvious when using a skill like Volatile Dead or Detonate Dead where the corpse explosion was gaining damage when it shouldn't be Also floored the values from the added damage as you can't have fractional damage values --- src/Data/Skills/act_dex.lua | 2 +- src/Data/Skills/act_int.lua | 2 +- src/Export/Skills/act_dex.txt | 2 +- src/Export/Skills/act_int.txt | 2 +- src/Modules/CalcOffence.lua | 32 ++++++++++++++++---------------- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/Data/Skills/act_dex.lua b/src/Data/Skills/act_dex.lua index 6940eeb5e6..7f50c9c23f 100644 --- a/src/Data/Skills/act_dex.lua +++ b/src/Data/Skills/act_dex.lua @@ -1608,7 +1608,7 @@ skills["BladeBlastAltY"] = { castTime = 0.65, statMap = { ["gain_%_of_base_dagger_damage_as_added_spell_damage"] = { - skill("gainPercentBaseDaggerDamage", nil), + skill("gainPercentBaseDaggerDamageToSpells", nil), }, }, baseFlags = { diff --git a/src/Data/Skills/act_int.lua b/src/Data/Skills/act_int.lua index 9da90684ff..edcdb31a7e 100644 --- a/src/Data/Skills/act_int.lua +++ b/src/Data/Skills/act_int.lua @@ -16772,7 +16772,7 @@ skills["SupportSpellslinger"] = { statDescriptionScope = "gem_stat_descriptions", statMap = { ["gain_%_of_base_wand_damage_as_added_spell_damage"] = { - skill("gainPercentBaseWandDamage", nil), + skill("gainPercentBaseWandDamageToSpells", nil), }, ["support_spellslinger_damage_+%_final"] = { mod("Damage", "MORE", nil, 0, bit.bor(KeywordFlag.Hit, KeywordFlag.Ailment)), diff --git a/src/Export/Skills/act_dex.txt b/src/Export/Skills/act_dex.txt index f2e25dea46..b1813f62ff 100644 --- a/src/Export/Skills/act_dex.txt +++ b/src/Export/Skills/act_dex.txt @@ -293,7 +293,7 @@ local skills, mod, flag, skill = ... #flags spell area statMap = { ["gain_%_of_base_dagger_damage_as_added_spell_damage"] = { - skill("gainPercentBaseDaggerDamage", nil), + skill("gainPercentBaseDaggerDamageToSpells", nil), }, }, #mods diff --git a/src/Export/Skills/act_int.txt b/src/Export/Skills/act_int.txt index be6323b034..898ee8ad73 100644 --- a/src/Export/Skills/act_int.txt +++ b/src/Export/Skills/act_int.txt @@ -3642,7 +3642,7 @@ local skills, mod, flag, skill = ... #skill SupportSpellslinger statMap = { ["gain_%_of_base_wand_damage_as_added_spell_damage"] = { - skill("gainPercentBaseWandDamage", nil), + skill("gainPercentBaseWandDamageToSpells", nil), }, ["support_spellslinger_damage_+%_final"] = { mod("Damage", "MORE", nil, 0, bit.bor(KeywordFlag.Hit, KeywordFlag.Ailment)), diff --git a/src/Modules/CalcOffence.lua b/src/Modules/CalcOffence.lua index 7ee4e713b1..32cdd9003f 100644 --- a/src/Modules/CalcOffence.lua +++ b/src/Modules/CalcOffence.lua @@ -843,41 +843,41 @@ function calcs.offence(env, actor, activeSkill) end end end - if skillData.gainPercentBaseWandDamage then - local mult = skillData.gainPercentBaseWandDamage / 100 + if skillData.gainPercentBaseWandDamageToSpells then + local mult = skillData.gainPercentBaseWandDamageToSpells / 100 if actor.weaponData1.type == "Wand" and actor.weaponData2.type == "Wand" then for _, damageType in ipairs(dmgTypeList) do - skillModList:NewMod(damageType.."Min", "BASE", ((actor.weaponData1[damageType.."Min"] or 0) + (actor.weaponData2[damageType.."Min"] or 0)) / 2 * mult, "Spellslinger") - skillModList:NewMod(damageType.."Max", "BASE", ((actor.weaponData1[damageType.."Max"] or 0) + (actor.weaponData2[damageType.."Max"] or 0)) / 2 * mult, "Spellslinger") + skillModList:NewMod(damageType.."Min", "BASE", m_floor(((actor.weaponData1[damageType.."Min"] or 0) + (actor.weaponData2[damageType.."Min"] or 0)) / 2 * mult), "Spellslinger", ModFlag.Spell) + skillModList:NewMod(damageType.."Max", "BASE", m_floor(((actor.weaponData1[damageType.."Max"] or 0) + (actor.weaponData2[damageType.."Max"] or 0)) / 2 * mult), "Spellslinger", ModFlag.Spell) end elseif actor.weaponData1.type == "Wand" then for _, damageType in ipairs(dmgTypeList) do - skillModList:NewMod(damageType.."Min", "BASE", (actor.weaponData1[damageType.."Min"] or 0) * mult, "Spellslinger") - skillModList:NewMod(damageType.."Max", "BASE", (actor.weaponData1[damageType.."Max"] or 0) * mult, "Spellslinger") + skillModList:NewMod(damageType.."Min", "BASE", m_floor((actor.weaponData1[damageType.."Min"] or 0) * mult), "Spellslinger", ModFlag.Spell) + skillModList:NewMod(damageType.."Max", "BASE", m_floor((actor.weaponData1[damageType.."Max"] or 0) * mult), "Spellslinger", ModFlag.Spell) end elseif actor.weaponData2.type == "Wand" then for _, damageType in ipairs(dmgTypeList) do - skillModList:NewMod(damageType.."Min", "BASE", (actor.weaponData2[damageType.."Min"] or 0) * mult, "Spellslinger") - skillModList:NewMod(damageType.."Max", "BASE", (actor.weaponData2[damageType.."Max"] or 0) * mult, "Spellslinger") + skillModList:NewMod(damageType.."Min", "BASE", m_floor((actor.weaponData2[damageType.."Min"] or 0) * mult), "Spellslinger", ModFlag.Spell) + skillModList:NewMod(damageType.."Max", "BASE", m_floor((actor.weaponData2[damageType.."Max"] or 0) * mult), "Spellslinger", ModFlag.Spell) end end end - if skillData.gainPercentBaseDaggerDamage then - local mult = skillData.gainPercentBaseDaggerDamage / 100 + if skillData.gainPercentBaseDaggerDamageToSpells then + local mult = skillData.gainPercentBaseDaggerDamageToSpells / 100 if actor.weaponData1.type == "Dagger" and actor.weaponData2.type == "Dagger" then for _, damageType in ipairs(dmgTypeList) do - skillModList:NewMod(damageType.."Min", "BASE", ((actor.weaponData1[damageType.."Min"] or 0) + (actor.weaponData2[damageType.."Min"] or 0)) / 2 * mult, "Blade Blast of Dagger Detonation") - skillModList:NewMod(damageType.."Max", "BASE", ((actor.weaponData1[damageType.."Max"] or 0) + (actor.weaponData2[damageType.."Max"] or 0)) / 2 * mult, "Blade Blast of Dagger Detonation") + skillModList:NewMod(damageType.."Min", "BASE", m_floor(((actor.weaponData1[damageType.."Min"] or 0) + (actor.weaponData2[damageType.."Min"] or 0)) / 2 * mult), "Blade Blast of Dagger Detonation", ModFlag.Spell) + skillModList:NewMod(damageType.."Max", "BASE", m_floor(((actor.weaponData1[damageType.."Max"] or 0) + (actor.weaponData2[damageType.."Max"] or 0)) / 2 * mult), "Blade Blast of Dagger Detonation", ModFlag.Spell) end elseif actor.weaponData1.type == "Dagger" then for _, damageType in ipairs(dmgTypeList) do - skillModList:NewMod(damageType.."Min", "BASE", (actor.weaponData1[damageType.."Min"] or 0) * mult, "Blade Blast of Dagger Detonation") - skillModList:NewMod(damageType.."Max", "BASE", (actor.weaponData1[damageType.."Max"] or 0) * mult, "Blade Blast of Dagger Detonation") + skillModList:NewMod(damageType.."Min", "BASE", m_floor((actor.weaponData1[damageType.."Min"] or 0) * mult), "Blade Blast of Dagger Detonation", ModFlag.Spell) + skillModList:NewMod(damageType.."Max", "BASE", m_floor((actor.weaponData1[damageType.."Max"] or 0) * mult), "Blade Blast of Dagger Detonation", ModFlag.Spell) end elseif actor.weaponData2.type == "Dagger" then for _, damageType in ipairs(dmgTypeList) do - skillModList:NewMod(damageType.."Min", "BASE", (actor.weaponData2[damageType.."Min"] or 0) * mult, "Blade Blast of Dagger Detonation") - skillModList:NewMod(damageType.."Max", "BASE", (actor.weaponData2[damageType.."Max"] or 0) * mult, "Blade Blast of Dagger Detonation") + skillModList:NewMod(damageType.."Min", "BASE", m_floor((actor.weaponData2[damageType.."Min"] or 0) * mult), "Blade Blast of Dagger Detonation", ModFlag.Spell) + skillModList:NewMod(damageType.."Max", "BASE", m_floor((actor.weaponData2[damageType.."Max"] or 0) * mult), "Blade Blast of Dagger Detonation", ModFlag.Spell) end end end