diff --git a/src/Classes/ItemsTab.lua b/src/Classes/ItemsTab.lua index 2017698929..582b94fa31 100644 --- a/src/Classes/ItemsTab.lua +++ b/src/Classes/ItemsTab.lua @@ -2885,24 +2885,26 @@ function ItemsTabClass:AddItemTooltip(tooltip, item, slot, dbMode) for _, modLine in ipairs(modList) do if item:CheckModLineVariant(modLine) then if scale ~= 1 then - local codyModLine = copyTable(modLine) + local copyModLine = copyTable(modLine) local modsList = copyTable(modLine.modList) local scaledList = new("ModList") - -- some passive node mods are only Condition/Flag and have no value to scale by default, grab number from line - if modsList[1] and modsList[1].type == "FLAG" then - modsList[1].value = tonumber(codyModLine.line:match("%d+")) - end scaledList:ScaleAddList(modsList, scale) for j, mod in ipairs(scaledList) do - local newValue = 0 + local newValue if type(mod.value) == "number" then newValue = mod.value elseif type(mod.value) == "table" then - newValue = mod.value.mod.value + if mod.value.mod then + newValue = mod.value.mod.value + else + newValue = mod.value.value + end + end + if type(newValue) == "number" then + copyModLine.line = copyModLine.line:gsub("%d*%.?%d+", math.abs(newValue), 1) -- Only scale first number in line end - codyModLine.line = codyModLine.line:gsub("%d*%.?%d+", math.abs(newValue)) end - tooltip:AddLine(16, itemLib.formatModLine(codyModLine, dbMode)) + tooltip:AddLine(16, itemLib.formatModLine(copyModLine, dbMode)) else tooltip:AddLine(16, itemLib.formatModLine(modLine, dbMode)) end diff --git a/src/Classes/PassiveTreeView.lua b/src/Classes/PassiveTreeView.lua index c53022dd92..62a4fe018d 100644 --- a/src/Classes/PassiveTreeView.lua +++ b/src/Classes/PassiveTreeView.lua @@ -1243,23 +1243,25 @@ function PassiveTreeViewClass:AddNodeTooltip(tooltip, node, build, incSmallPassi end -- Apply Inc Node scaling from Hulking Form + Radius Jewels only visually - if ((incSmallPassiveSkillEffect + localIncEffect) > 0 and node.type == "Normal") or (localIncEffect > 0 and node.type == "Notable") and not node.isAttribute and not node.ascendancyName and node.mods[i].list then + if (((incSmallPassiveSkillEffect + localIncEffect) > 0 and node.type == "Normal") or (localIncEffect > 0 and node.type == "Notable")) and not node.isAttribute and not node.ascendancyName and node.mods[i].list then local scale = 1 + (node.type == "Normal" and incSmallPassiveSkillEffect or 0 + localIncEffect) / 100 local modsList = copyTable(node.mods[i].list) local scaledList = new("ModList") - -- some passive node mods are only Condition/Flag and have no value to scale by default, grab number from line - if modsList[1] and modsList[1].type == "FLAG" then - modsList[1].value = tonumber(line:match("%d+")) - end scaledList:ScaleAddList(modsList, scale) for j, mod in ipairs(scaledList) do - local newValue = 0 + local newValue if type(mod.value) == "number" then newValue = mod.value elseif type(mod.value) == "table" then - newValue = mod.value.mod.value + if mod.value.mod then + newValue = mod.value.mod.value + else + newValue = mod.value.value + end + end + if type(newValue) == "number" then + line = line:gsub("%d*%.?%d+", math.abs(newValue), 1) -- Only scale first number in line end - line = line:gsub("%d*%.?%d+", math.abs(newValue), 1) -- Only scale first number in line end -- line = line .. " ^8(Effect increased by "..incSmallPassiveSkillEffect.."%)" end diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index e2b805839c..7a765c1eb4 100755 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -966,7 +966,7 @@ c["10 Life gained when you Block"]={{[1]={flags=0,keywordFlags=0,name="LifeOnBlo c["10% Chance to build an additional Combo on Hit"]={{}," to build an additional Combo "} c["10% chance for Attack Hits to apply ten Incision"]={{[1]={flags=0,keywordFlags=0,name="Condition:CanInflictIncision",type="FLAG",value=true}},nil} c["10% chance for Enemies you Kill to Explode, dealing 100%"]={{}," for Enemies you Kill to Explode, dealing 100% "} -c["10% chance for Enemies you Kill to Explode, dealing 100% of their maximum Life as Physical Damage"]={{[1]={flags=0,keywordFlags=0,name="ExplodeMod",type="LIST",value={amount=100,chance=0.1,keyOfScaledMod="chance",type="Physical"}},[2]={flags=0,keywordFlags=0,name="CanExplode",type="FLAG",value=true}},nil} +c["10% chance for Enemies you Kill to Explode, dealing 100% of their maximum Life as Physical Damage"]={{[1]={flags=0,keywordFlags=0,name="ExplodeMod",type="LIST",value={amount=100,keyOfScaledMod="chance",type="Physical",value=10}},[2]={flags=0,keywordFlags=0,name="CanExplode",type="FLAG",value=true}},nil} c["10% chance for Flasks you use to not consume Charges"]={{[1]={flags=0,keywordFlags=0,name="FlaskChanceNotConsumeCharges",type="BASE",value=10}},nil} c["10% chance for Mace Slam Skills you use yourself to cause Aftershocks"]={{}," for Mace Slam Skills you use yourself to cause Aftershocks "} c["10% chance for Mace Slam Skills you use yourself to cause Aftershocks 10% chance for Mace Strike Skills you use yourself to cause Aftershocks, dealing"]={{}," for Mace Slam Skills you use yourself to cause Aftershocks 10% chance forSkills you use yourself to cause Aftershocks, dealing "} @@ -4218,7 +4218,7 @@ c["Breaks Armour equal to 40% of damage from Hits with this weapon"]={nil,"Break c["Breaks Armour equal to 40% of damage from Hits with this weapon Fully Armour Broken enemies you kill with Hits Shatter"]={nil,"Breaks Armour equal to 40% of damage from Hits with this weapon Fully Armour Broken enemies you kill with Hits Shatter "} c["Buffs on you expire 10% slower"]={{[1]={[1]={skillType=5,type="SkillType"},flags=0,keywordFlags=0,name="Duration",type="INC",value=10}},nil} c["Burning Enemies you kill have a 5% chance to Explode, dealing a"]={nil,"Burning Enemies you kill have a 5% chance to Explode, dealing a "} -c["Burning Enemies you kill have a 5% chance to Explode, dealing a tenth of their maximum Life as Fire Damage"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="Burning"},flags=0,keywordFlags=0,name="ExplodeMod",type="LIST",value={amount=10,chance=0.05,keyOfScaledMod="chance",type="Fire"}},[2]={flags=0,keywordFlags=0,name="CanExplode",type="FLAG",value=true}},nil} +c["Burning Enemies you kill have a 5% chance to Explode, dealing a tenth of their maximum Life as Fire Damage"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="Burning"},flags=0,keywordFlags=0,name="ExplodeMod",type="LIST",value={amount=10,keyOfScaledMod="chance",type="Fire",value=5}},[2]={flags=0,keywordFlags=0,name="CanExplode",type="FLAG",value=true}},nil} c["Can Attack as though using a Quarterstaff while both of your hand slots are empty"]={nil,"Can Attack as though using a Quarterstaff while both of your hand slots are empty "} c["Can Attack as though using a Quarterstaff while both of your hand slots are empty Unarmed Attacks that would use your Quarterstaff's damage gain:"]={nil,"Can Attack as though using a Quarterstaff while both of your hand slots are empty Unarmed Attacks that would use your Quarterstaff's damage gain: "} c["Can Attack as though using a Quarterstaff while both of your hand slots are empty Unarmed Attacks that would use your Quarterstaff's damage gain: Physical damage based on their Skill Level"]={nil,"Can Attack as though using a Quarterstaff while both of your hand slots are empty Unarmed Attacks that would use your Quarterstaff's damage gain: Physical damage based on their Skill Level "} @@ -4272,7 +4272,7 @@ c["Causes 60% increased Stun Buildup"]={nil,"Causes 60% increased Stun Buildup " c["Causes 60% increased Stun Buildup Heavy Stuns Enemies that are on Full Life"]={nil,"Causes 60% increased Stun Buildup Heavy Stuns Enemies that are on Full Life "} c["Causes Bleeding on Hit"]={{[1]={[1]={type="Condition",var="{Hand}Attack"},flags=0,keywordFlags=0,name="BleedChance",type="BASE",value=100}},nil} c["Causes Double Stun Buildup"]={{}," Stun Buildup "} -c["Causes Enemies to Explode on Critical kill, for 10% of their Life as Physical Damage"]={{[1]={flags=0,keywordFlags=0,name="ExplodeMod",type="LIST",value={amount=10,chance=1,keyOfScaledMod="chance",type="Physical"}},[2]={flags=0,keywordFlags=0,name="CanExplode",type="FLAG",value=true}},nil} +c["Causes Enemies to Explode on Critical kill, for 10% of their Life as Physical Damage"]={{[1]={flags=0,keywordFlags=0,name="ExplodeMod",type="LIST",value={amount=10,keyOfScaledMod="chance",type="Physical",value=100}},[2]={flags=0,keywordFlags=0,name="CanExplode",type="FLAG",value=true}},nil} c["Chain an additional time"]={nil,"Chain an additional time "} c["Chain an additional time Chain from Terrain an additional time"]={nil,"Chain an additional time Chain from Terrain an additional time "} c["Chain an additional time Chain from Terrain an additional time Cannot collide with targets"]={nil,"Chain an additional time Chain from Terrain an additional time Cannot collide with targets "} @@ -4343,8 +4343,8 @@ c["Curse Skills have 15% increased Cast Speed"]={{[1]={flags=16,keywordFlags=2,n c["Curse Skills have 20% increased Cast Speed"]={{[1]={flags=16,keywordFlags=2,name="Speed",type="INC",value=20}},nil} c["Curse Skills have 20% increased Skill Effect Duration"]={{[1]={flags=0,keywordFlags=2,name="Duration",type="INC",value=20}},nil} c["Curse zones erupt after 10% reduced delay"]={nil,"Curse zones erupt after 10% reduced delay "} -c["Cursed Enemies Killed by you, or by Allies in your Presence, have a 33% chance to Explode, dealing a quarter of their maximum Life as Chaos Damage"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="Cursed"},flags=0,keywordFlags=0,name="ExplodeMod",type="LIST",value={amount=25,chance=0.33,keyOfScaledMod="chance",type="Chaos"}},[2]={flags=0,keywordFlags=0,name="CanExplode",type="FLAG",value=true}},nil} -c["Cursed Enemies Killed by you, or by Allies in your Presence, have a 33% chance to Explode, dealing a quarter of their maximum Life as Physical Damage"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="Cursed"},flags=0,keywordFlags=0,name="ExplodeMod",type="LIST",value={amount=25,chance=0.33,keyOfScaledMod="chance",type="Physical"}},[2]={flags=0,keywordFlags=0,name="CanExplode",type="FLAG",value=true}},nil} +c["Cursed Enemies Killed by you, or by Allies in your Presence, have a 33% chance to Explode, dealing a quarter of their maximum Life as Chaos Damage"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="Cursed"},flags=0,keywordFlags=0,name="ExplodeMod",type="LIST",value={amount=25,keyOfScaledMod="chance",type="Chaos",value=33}},[2]={flags=0,keywordFlags=0,name="CanExplode",type="FLAG",value=true}},nil} +c["Cursed Enemies Killed by you, or by Allies in your Presence, have a 33% chance to Explode, dealing a quarter of their maximum Life as Physical Damage"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="Cursed"},flags=0,keywordFlags=0,name="ExplodeMod",type="LIST",value={amount=25,keyOfScaledMod="chance",type="Physical",value=33}},[2]={flags=0,keywordFlags=0,name="CanExplode",type="FLAG",value=true}},nil} c["Curses have no Activation Delay"]={{[1]={flags=0,keywordFlags=0,name="CurseDelay",type="MORE",value=-100}},nil} c["Curses you inflict are reflected back to you"]={nil,"Curses you inflict are reflected back to you "} c["Curses you inflict have infinite Duration"]={nil,"Curses you inflict have infinite Duration "} @@ -4521,13 +4521,13 @@ c["Enemies you Electrocute have 20% increased Damage taken"]={{[1]={flags=0,keyw c["Enemies you Fully Armour Break are Maimed"]={nil,"Enemies you Fully Armour Break are Maimed "} c["Enemies you Fully Armour Break cannot Regenerate Life"]={nil,"Enemies you Fully Armour Break cannot Regenerate Life "} c["Enemies you Fully Armour Break cannot Regenerate Life Enemies you Fully Armour Break are Maimed"]={nil,"Enemies you Fully Armour Break cannot Regenerate Life Enemies you Fully Armour Break are Maimed "} -c["Enemies you Kill have a 10% chance to Explode, dealing a quarter of their maximum Life as Chaos Damage"]={{[1]={flags=0,keywordFlags=0,name="ExplodeMod",type="LIST",value={amount=25,chance=0.1,keyOfScaledMod="chance",type="Chaos"}},[2]={flags=0,keywordFlags=0,name="CanExplode",type="FLAG",value=true}},nil} +c["Enemies you Kill have a 10% chance to Explode, dealing a quarter of their maximum Life as Chaos Damage"]={{[1]={flags=0,keywordFlags=0,name="ExplodeMod",type="LIST",value={amount=25,keyOfScaledMod="chance",type="Chaos",value=10}},[2]={flags=0,keywordFlags=0,name="CanExplode",type="FLAG",value=true}},nil} c["Enemies you Mark cannot deal Critical Hits"]={{[1]={flags=0,keywordFlags=0,name="EnemyModifier",type="LIST",value={mod={[1]={type="Condition",var="Marked"},flags=0,keywordFlags=0,name="NeverCrit",type="FLAG",value=true}}},[2]={flags=0,keywordFlags=0,name="EnemyModifier",type="LIST",value={mod={[1]={type="Condition",var="Marked"},flags=0,keywordFlags=0,name="Condition:NeverCrit",type="FLAG",value=true}}}},nil} c["Enemies you Mark have 10% reduced Accuracy Rating"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="Marked"},flags=0,keywordFlags=0,name="EnemyModifier",type="LIST",value={mod={flags=0,keywordFlags=0,name="Accuracy",type="INC",value=-10}}}},nil} c["Enemies you Mark take 10% increased Damage"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="Marked"},flags=0,keywordFlags=0,name="EnemyModifier",type="LIST",value={mod={flags=0,keywordFlags=0,name="DamageTaken",type="INC",value=10}}}},nil} c["Enemies you apply Incision to take 2% increased Physical Damage per Incision"]={{[1]={flags=0,keywordFlags=0,name="EnemyModifier",type="LIST",value={mod={[1]={type="Multiplier",var="IncisionStack"},flags=0,keywordFlags=0,name="PhysicalDamageTaken",type="INC",value=2}}}},nil} c["Enemies you inflict Bleeding on cannot Regenerate Life"]={nil,"Enemies you inflict Bleeding on cannot Regenerate Life "} -c["Enemies you kill with Empowered Attacks have a 10% chance to Explode, dealing a tenth of their maximum Life as Fire Damage"]={{[1]={flags=0,keywordFlags=0,name="ExplodeMod",type="LIST",value={amount=10,chance=0.1,keyOfScaledMod="chance",type="Fire"}},[2]={flags=0,keywordFlags=0,name="CanExplode",type="FLAG",value=true}},nil} +c["Enemies you kill with Empowered Attacks have a 10% chance to Explode, dealing a tenth of their maximum Life as Fire Damage"]={{[1]={flags=0,keywordFlags=0,name="ExplodeMod",type="LIST",value={amount=10,keyOfScaledMod="chance",type="Fire",value=10}},[2]={flags=0,keywordFlags=0,name="CanExplode",type="FLAG",value=true}},nil} c["Enemies' Damage with Critical Hits against you is Lucky"]={nil,"Enemies' Damage with Critical Hits is Lucky "} c["Energy Generation is doubled"]={{},"Energy Generation "} c["Energy Shield Recharge is not interrupted by Damage if Recharge began Recently"]={nil,"Energy Shield Recharge is not interrupted by Damage if Recharge began Recently "} @@ -5651,8 +5651,8 @@ c["Used when you take Lightning damage from a Hit 40% increased Charges gained"] c["Volatile Power also grants 1% increased Critical Hit chance per Volatility exploded"]={nil,"Volatile Power also grants 1% increased Critical Hit chance per Volatility exploded "} c["Warcries Debilitate Enemies"]={{[1]={flags=0,keywordFlags=0,name="DebilitateChance",type="BASE",value=100}},nil} c["Warcries Empower an additional Attack"]={nil,"Warcries Empower an additional Attack "} -c["Warcries Explode Corpses dealing 10% of their Life as Physical Damage"]={{[1]={flags=0,keywordFlags=0,name="ExplodeMod",type="LIST",value={amount=10,chance=1,keyOfScaledMod="chance",type="Physical"}},[2]={flags=0,keywordFlags=0,name="CanExplode",type="FLAG",value=true}},nil} -c["Warcries Explode Corpses dealing 25% of their Life as Physical Damage"]={{[1]={flags=0,keywordFlags=0,name="ExplodeMod",type="LIST",value={amount=25,chance=1,keyOfScaledMod="chance",type="Physical"}},[2]={flags=0,keywordFlags=0,name="CanExplode",type="FLAG",value=true}},nil} +c["Warcries Explode Corpses dealing 10% of their Life as Physical Damage"]={{[1]={flags=0,keywordFlags=0,name="ExplodeMod",type="LIST",value={amount=10,keyOfScaledMod="chance",type="Physical",value=100}},[2]={flags=0,keywordFlags=0,name="CanExplode",type="FLAG",value=true}},nil} +c["Warcries Explode Corpses dealing 25% of their Life as Physical Damage"]={{[1]={flags=0,keywordFlags=0,name="ExplodeMod",type="LIST",value={amount=25,keyOfScaledMod="chance",type="Physical",value=100}},[2]={flags=0,keywordFlags=0,name="CanExplode",type="FLAG",value=true}},nil} c["Warcries have 15% chance to Empower 3 additional Attacks"]={nil,"Warcries have 15% chance to Empower 3 additional Attacks "} c["Warcries have a minimum of 10 Power"]={{[1]={flags=0,keywordFlags=0,name="MinimumWarcryPower",type="BASE",value=10}},nil} c["Warcry Skills have 25% increased Area of Effect"]={{[1]={[1]={skillType=63,type="SkillType"},flags=0,keywordFlags=0,name="AreaOfEffect",type="INC",value=25}},nil} diff --git a/src/Data/Skills/other.lua b/src/Data/Skills/other.lua index e7d9e21338..28e595c148 100644 --- a/src/Data/Skills/other.lua +++ b/src/Data/Skills/other.lua @@ -6739,7 +6739,7 @@ skills["VoidIllusionSpawnPlayer"] = { else activeSkill.skillData[explodeMod.type.."EffectiveExplodePercentage"] = explodeMod.amount end - output.ExplodeChance = statSet.index == 2 and 1 or explodeMod.chance + output.ExplodeChance = statSet.index == 2 and 1 or explodeMod.value / 100 end end else @@ -6747,7 +6747,7 @@ skills["VoidIllusionSpawnPlayer"] = { local explodeModList = activeSkill.skillModList:List(activeSkill.skillCfg, "ExplodeMod") for _, explodeMod in ipairs(explodeModList) do local amountChance = typeAmountChances[explodeMod.type] or { } - amountChance[explodeMod.amount] = (amountChance[explodeMod.amount] or 0) + explodeMod.chance + amountChance[explodeMod.amount] = (amountChance[explodeMod.amount] or 0) + explodeMod.value / 100 typeAmountChances[explodeMod.type] = amountChance end for type, amountChance in pairs(typeAmountChances) do diff --git a/src/Export/Skills/other.txt b/src/Export/Skills/other.txt index 86d07e326f..175f819eee 100644 --- a/src/Export/Skills/other.txt +++ b/src/Export/Skills/other.txt @@ -526,7 +526,7 @@ skills["EnemyExplode"] = { else activeSkill.skillData[explodeMod.type.."EffectiveExplodePercentage"] = explodeMod.amount end - output.ExplodeChance = statSet.index == 2 and 1 or explodeMod.chance + output.ExplodeChance = statSet.index == 2 and 1 or explodeMod.value / 100 end end else @@ -534,7 +534,7 @@ skills["EnemyExplode"] = { local explodeModList = activeSkill.skillModList:List(activeSkill.skillCfg, "ExplodeMod") for _, explodeMod in ipairs(explodeModList) do local amountChance = typeAmountChances[explodeMod.type] or { } - amountChance[explodeMod.amount] = (amountChance[explodeMod.amount] or 0) + explodeMod.chance + amountChance[explodeMod.amount] = (amountChance[explodeMod.amount] or 0) + explodeMod.value / 100 typeAmountChances[explodeMod.type] = amountChance end for type, amountChance in pairs(typeAmountChances) do diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index 00315b849a..e7087cf9db 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -2149,7 +2149,7 @@ local explodeFunc = function(chance, amount, type, ...) local amounts = {} amounts[type] = amountNumber return { - mod("ExplodeMod", "LIST", { type = firstToUpper(type), chance = chance / 100, amount = amountNumber, keyOfScaledMod = "chance" }, ...), + mod("ExplodeMod", "LIST", { type = firstToUpper(type), value = chance, amount = amountNumber, keyOfScaledMod = "chance" }, ...), flag("CanExplode") } end