Skip to content
This repository was archived by the owner on Oct 21, 2025. It is now read-only.

Commit 4858033

Browse files
Merge pull request #15 from learn2draw/stormweaver
Partial Stormweaver support
2 parents 963eaef + 351aa56 commit 4858033

File tree

5 files changed

+27
-2
lines changed

5 files changed

+27
-2
lines changed

src/Modules/CalcPerform.lua

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2708,7 +2708,18 @@ function calcs.perform(env, skipEHP)
27082708
["Chill"] = {
27092709
condition = "Chilled",
27102710
mods = function(num)
2711-
local mods = { modLib.createMod("ActionSpeed", "INC", -num, "Chill", { type = "Condition", var = "Chilled" }) }
2711+
local mods = { }
2712+
2713+
if modDB:Flag(nil, "ChillCanStack") then
2714+
t_insert(mods, modLib.createMod("DamageTaken", "INC", num, "Shock", { type = "Condition", var = "Shocked" }, { type = "Multiplier", var = "ShockStacks", limit = modDB:Override(nil, "ShockStacksMax") or modDB:Sum("BASE", nil, "ShockStacksMax")}))
2715+
output["CurrentChill"] = num * m_min(enemyDB:Sum("BASE", nil, "Multiplier:ChillStacks"), modDB:Override(nil, "ChillStacksMax") or modDB:Sum("BASE", nil, "ChillStacksMax"))
2716+
if breakdown then
2717+
t_insert(mods, modLib.createMod("ActionSpeed", "INC", -num, "Chill Stacks", { type = "Condition", var = "Chilled" }, { type = "Multiplier", var = "ShockStacks", limit = modDB:Override(nil, "ShockStacksMax") or modDB:Sum("BASE", nil, "ShockStacksMax")}))
2718+
end
2719+
else
2720+
t_insert(mods, modLib.createMod("ActionSpeed", "INC", -num, "Chill", { type = "Condition", var = "Chilled" }))
2721+
end
2722+
27122723
if output.HasBonechill and (hasGuaranteedBonechill or enemyDB:Sum("BASE", nil, "ChillVal") > 0) then
27132724
t_insert(mods, modLib.createMod("ColdDamageTaken", "INC", num, "Bonechill", { type = "Condition", var = "Chilled" }))
27142725
end

src/Modules/CalcSetup.lua

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ function calcs.initModDB(env, modDB)
5757
modDB:NewMod("BallistaPlacementTime", "BASE", 0.35, "Base")
5858
modDB:NewMod("ActiveTotemLimit", "BASE", 1, "Base")
5959
modDB:NewMod("ShockStacksMax", "BASE", 1, "Base")
60+
modDB:NewMod("ChillStacksMax", "BASE", 1, "Base")
6061
modDB:NewMod("ScorchStacksMax", "BASE", 1, "Base")
6162
modDB:NewMod("MovementSpeed", "INC", -30, "Base", { type = "Condition", var = "Maimed" })
6263
modDB:NewMod("Evasion", "INC", -15, "Base", { type = "Condition", var = "Maimed" })

src/Modules/ConfigOptions.lua

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1537,6 +1537,9 @@ Huge sets the radius to 11.
15371537
enemyModList:NewMod("ChillVal", "BASE", val, "Chill", { type = "Condition", var = "ChilledConfig" })
15381538
enemyModList:NewMod("DesiredChillVal", "BASE", val, "Chill", { type = "Condition", var = "ChilledConfig", neg = true })
15391539
end },
1540+
{ var = "ChillStacks", type = "count", label = "^xADAA47Chill ^7Stacks", ifFlag = "ChillCanStack", ifOption = "conditionEnemyChilled", defaultPlaceholderState = 1, tooltip = "Amount of stacks of ^xADAA47Chill ^7applied to the enemy.", apply = function(val, modList, enemyModList)
1541+
enemyModList:NewMod("Multiplier:ChillStacks", "BASE", val, "Config", { type = "Condition", var = "Effective" })
1542+
end },
15401543
{ var = "conditionEnemyChilledByYourHits", type = "check", ifEnemyCond = "ChilledByYourHits", label = "Is the enemy ^x3F6DB3Chilled ^7by your Hits?", apply = function(val, modList, enemyModList)
15411544
enemyModList:NewMod("Condition:Chilled", "FLAG", true, "Config", { type = "Condition", var = "Effective" })
15421545
enemyModList:NewMod("Condition:ChilledByYourHits", "FLAG", true, "Config", { type = "Condition", var = "Effective" })

src/Modules/Data.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ data.nonElementalAilmentTypeList = { "Bleed", "Poison" }
300300
data.nonDamagingAilment = {
301301
["Chill"] = { associatedType = "Cold", alt = false, default = 10, min = 5, max = data.gameConstants["ChillMaxEffect"], precision = 0, duration = data.gameConstants["BaseChillDuration"] },
302302
["Freeze"] = { associatedType = "Cold", alt = false, default = nil, min = 0.3, max = 3, precision = 2, duration = data.gameConstants["FreezeDuration"] },
303-
["Shock"] = { associatedType = "Lightning", alt = false, default = 15, min = 5, max = 50, precision = 0, duration = data.gameConstants["BaseShockDuration"] },
303+
["Shock"] = { associatedType = "Lightning", alt = false, default = 20, min = 20, max = 20, precision = 0, duration = data.gameConstants["BaseShockDuration"] },
304304
}
305305

306306
-- Used in ModStoreClass:ScaleAddMod(...) to identify high precision modifiers

src/Modules/ModParser.lua

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2551,6 +2551,12 @@ local specialModList = {
25512551
flag("ColdCanShock"),
25522552
flag("ChaosCanShock"),
25532553
},
2554+
["all damage from hits contributes to chill magnitude"] = {
2555+
flag("PhysicalCanChill"),
2556+
flag("FireCanChill"),
2557+
flag("LightningCanChill"),
2558+
flag("ChaosCanChill"),
2559+
},
25542560
["all damage can shock"] = {
25552561
flag("PhysicalCanShock"),
25562562
flag("FireCanShock"),
@@ -2783,6 +2789,10 @@ local specialModList = {
27832789
-- Mercenary - Gemling
27842790
["attribute requirements of gems can be satisi?fied by your highest attribute"] = { flag("GemAttributeRequirementsSatisfiedByHighestAttribute") },
27852791
["you can use two copies of the same support gem in different skills"] = { mod("MaxSupportGemCopies", "OVERRIDE", 2) },
2792+
-- Stormweaver
2793+
["targets can be affected by two of your shocks at the same time"] = { flag("ShockCanStack"), mod("ShockStacksMax", "OVERRIDE", 2) },
2794+
["targets can be affected by two of your chills at the same time"] = { flag("ChillCanStack"), mod("ChillStacksMax", "OVERRIDE", 2) },
2795+
["your chills can slow targets by up to a maximum of (%d+)%%"] = function(num) return { mod("ChillMax", "OVERRIDE", num)} end,
27862796
-- Item local modifiers
27872797
["has no sockets"] = { flag("NoSockets") },
27882798
["reflects your other ring"] = {

0 commit comments

Comments
 (0)