From 03ccf976e08c640f1273ce170bb774fefc6cccfd Mon Sep 17 00:00:00 2001 From: Simon Date: Sat, 13 Sep 2025 12:49:25 +0200 Subject: [PATCH 01/23] Add parsing/support for buildup mechanics Add poise from data Add poise to ConfigOptions --- src/Data/Misc.lua | 48 +---------- src/Data/ModCache.lua | 139 +++++++++++--------------------- src/Export/Scripts/miscdata.lua | 3 + src/Modules/CalcOffence.lua | 38 ++++++++- src/Modules/CalcSections.lua | 4 +- src/Modules/CalcSetup.lua | 1 + src/Modules/ConfigOptions.lua | 12 +++ src/Modules/ModParser.lua | 4 + 8 files changed, 107 insertions(+), 142 deletions(-) mode change 100755 => 100644 src/Data/ModCache.lua diff --git a/src/Data/Misc.lua b/src/Data/Misc.lua index a11304ef8..1a7a79f63 100644 --- a/src/Data/Misc.lua +++ b/src/Data/Misc.lua @@ -10,6 +10,7 @@ data.monsterDamageTable = { 9.1599998474121, 10.260000228882, 11.390000343323, 1 data.monsterAllyDamageTable = { 3.1099998950958, 4.4200000762939, 5.8200001716614, 7.3099999427795, 8.9200000762939, 10.630000114441, 12.460000038147, 14.420000076294, 16.510000228882, 18.729999542236, 21.10000038147, 23.620000839233, 26.309999465942, 29.159999847412, 32.189998626709, 35.419998168945, 38.830001831055, 42.459999084473, 46.310001373291, 50.389999389648, 54.709999084473, 59.290000915527, 64.139999389648, 69.269996643066, 74.690002441406, 80.430000305176, 86.5, 92.910003662109, 99.690002441406, 106.83999633789, 114.40000152588, 122.37000274658, 130.78999328613, 139.66999816895, 149.03999328613, 158.91000366211, 169.32000732422, 180.28999328613, 191.86000061035, 204.03999328613, 216.86000061035, 230.36999511719, 244.60000610352, 259.57000732422, 275.32000732422, 291.89999389648, 309.33999633789, 327.69000244141, 346.98001098633, 367.26998901367, 388.58999633789, 411.01000976562, 434.57000732422, 459.32000732422, 485.32998657227, 512.65997314453, 541.34997558594, 571.48999023438, 603.14001464844, 636.36999511719, 671.26000976562, 707.86999511719, 746.29998779297, 786.63000488281, 828.94000244141, 873.34002685547, 919.90997314453, 968.76000976562, 1019.9899902344, 1073.7199707031, 1130.0600585938, 1189.1300048828, 1251.0600585938, 1315.9799804688, 1384.0300292969, 1455.3399658203, 1530.0799560547, 1608.4000244141, 1690.4599609375, 1776.4300537109, 1866.5, 1960.8399658203, 2059.6599121094, 2163.1599121094, 2271.5600585938, 2385.0600585938, 2503.9099121094, 2628.3601074219, 2758.6398925781, 2895.0300292969, 3037.8000488281, 3187.2399902344, 3343.6599121094, 3507.3500976562, 3678.6599121094, 3857.9299316406, 4045.5100097656, 4241.7700195312, 4447.1098632812, 4661.9301757812, } data.monsterArmourTable = { 3, 6, 8, 10, 13, 16, 19, 22, 26, 30, 34, 39, 43, 49, 54, 60, 67, 73, 81, 89, 97, 106, 116, 126, 137, 149, 161, 174, 189, 204, 220, 237, 255, 274, 295, 317, 340, 364, 391, 418, 448, 479, 512, 547, 585, 624, 666, 711, 758, 808, 861, 917, 976, 1039, 1105, 1176, 1250, 1329, 1412, 1500, 1594, 1692, 1796, 1906, 2023, 2146, 2276, 2413, 2558, 2712, 2874, 3044, 3225, 3416, 3617, 3829, 4053, 4290, 4540, 4803, 5081, 5375, 5684, 6011, 6355, 6718, 7101, 7505, 7930, 8379, 8852, 9351, 9877, 10431, 11015, 11630, 12279, 12962, 13682, 14441, } data.monsterAilmentThresholdTable = { 15, 20, 24, 28, 34, 39, 46, 52, 60, 70, 81, 95, 110, 126, 144, 171, 193, 218, 245, 275, 306, 340, 376, 413, 455, 497, 543, 590, 641, 695, 752, 812, 874, 950, 1033, 1123, 1220, 1326, 1442, 1568, 1705, 1854, 2015, 2192, 2384, 2564, 2757, 2966, 3188, 3426, 3681, 3955, 4247, 4560, 4895, 5254, 5638, 6049, 6489, 6959, 7462, 8001, 8576, 9193, 9723, 10382, 11085, 11837, 12639, 13497, 14413, 15390, 16435, 17549, 18742, 20013, 21372, 22824, 24373, 26029, 27796, 29684, 31700, 33852, 36153, 38608, 41230, 44033, 47023, 50219, 53630, 57272, 61164, 65318, 69757, 74494, 79554, 84958, 90729, 96892, } +data.monsterPoiseThresholdTable = { 30, 40, 48, 57, 67, 79, 93, 106, 122, 142, 165, 192, 220, 254, 290, 344, 390, 437, 488, 542, 599, 659, 724, 791, 862, 937, 1015, 1097, 1183, 1273, 1367, 1464, 1567, 1660, 1758, 1864, 1976, 2093, 2219, 2352, 2494, 2644, 2804, 2971, 3150, 3369, 3598, 3846, 4109, 4387, 4685, 5002, 5338, 5697, 6078, 6485, 6915, 7377, 7866, 8386, 8940, 9528, 10153, 10819, 11376, 12648, 14061, 15634, 17382, 19326, 21492, 23897, 26573, 29553, 32864, 36550, 40649, 45211, 50282, 55927, 62209, 69197, 76969, 85615, 95241, 105954, 117866, 131122, 145878, 162291, 180568, 200887, 223518, 248690, 276705, 307880, 342574, 381187, 424158, 471974, } -- From MinionGemLevelScaling.dat data.minionLevelTable = { 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, } @@ -312,50 +313,3 @@ data.monsterVarietyLifeMult = { } -- From MonsterMapDifficulty.dat data.mapLevelLifeMult = { [66] = 1, [67] = 1, [68] = 1, [69] = 1, [70] = 1, [71] = 1, [72] = 1, [73] = 1, [74] = 1, [75] = 1, [76] = 1, [77] = 1, [78] = 1, [79] = 1, [80] = 1, [81] = 1, [82] = 1, [83] = 1, [84] = 1, [85] = 1, [86] = 1, [87] = 1, [88] = 1, [89] = 1, [90] = 1, } --- From MonsterMapBossDifficulty.dat -data.mapLevelBossLifeMult = { [1] = 1, [2] = 1, [3] = 1, [4] = 1, [5] = 1, [6] = 1, [7] = 1, [8] = 1, [9] = 1, [10] = 1, [11] = 1, [12] = 1, [13] = 1, [14] = 1, [15] = 1, [16] = 1, [17] = 1, [18] = 1, [19] = 1, [20] = 1, [21] = 1, [22] = 1, [23] = 1, [24] = 1, [25] = 1, [26] = 1, [27] = 1, [28] = 1, [29] = 1, [30] = 1, [31] = 1, [32] = 1, [33] = 1, [34] = 1, [35] = 1, [36] = 1, [37] = 1, [38] = 1, [39] = 1, [40] = 1, [41] = 1, [42] = 1, [43] = 1, [44] = 1, [45] = 1, [46] = 1, [47] = 1, [48] = 1, [49] = 1, [50] = 1, [51] = 1, [52] = 1, [53] = 1, [54] = 1, [55] = 1, [56] = 1, [57] = 1, [58] = 1, [59] = 1, [60] = 1, [61] = 1, [62] = 1, [63] = 1, [64] = 1, [65] = 1, [66] = 1, [67] = 1, [68] = 1, [69] = 1, [70] = 1, [71] = 1, [72] = 1, [73] = 1, [74] = 1, [75] = 1, [76] = 1, [77] = 1, [78] = 1, [79] = 1, [80] = 1, [81] = 1, [82] = 1, [83] = 1, [84] = 1, [85] = 1, [86] = 1, [87] = 1, [88] = 1, [89] = 1, [90] = 1, } -data.mapLevelBossAilmentMult = { [1] = 1, [2] = 1, [3] = 1, [4] = 1, [5] = 1, [6] = 1, [7] = 1, [8] = 1, [9] = 1, [10] = 1, [11] = 1, [12] = 1, [13] = 1, [14] = 1, [15] = 1, [16] = 1, [17] = 1, [18] = 1, [19] = 1, [20] = 1, [21] = 1, [22] = 1, [23] = 1, [24] = 1, [25] = 1, [26] = 1, [27] = 1, [28] = 1, [29] = 1, [30] = 1, [31] = 1, [32] = 1, [33] = 1, [34] = 1, [35] = 1, [36] = 1, [37] = 1, [38] = 1, [39] = 1, [40] = 1, [41] = 1, [42] = 1, [43] = 1, [44] = 1, [45] = 1, [46] = 1, [47] = 1, [48] = 1, [49] = 1, [50] = 1, [51] = 1, [52] = 1, [53] = 1, [54] = 1, [55] = 1, [56] = 1, [57] = 1, [58] = 1, [59] = 1, [60] = 1, [61] = 1, [62] = 1, [63] = 1, [64] = 1, [65] = 1, [66] = 1, [67] = 1, [68] = 1, [69] = 1, [70] = 1, [71] = 1, [72] = 1, [73] = 1, [74] = 1, [75] = 1, [76] = 1, [77] = 1, [78] = 1, [79] = 1, [80] = 1, [81] = 1, [82] = 1, [83] = 1, [84] = 1, [85] = 1, [86] = 1, [87] = 1, [88] = 1, [89] = 1, [90] = 1, } - --- From FlatPhysicalDamageValues.dat -data.hollowPalmAddedPhys = { - [1] = { 11, 17 }, - [2] = { 18, 27 }, - [3] = { 27, 41 }, - [4] = { 37, 55 }, - [5] = { 47, 70 }, - [6] = { 57, 86 }, - [7] = { 67, 100 }, - [8] = { 78, 117 }, - [9] = { 88, 132 }, - [10] = { 99, 148 }, - [11] = { 109, 164 }, - [12] = { 114, 171 }, - [13] = { 118, 177 }, - [14] = { 128, 192 }, - [15] = { 138, 207 }, - [16] = { 146, 219 }, - [17] = { 155, 233 }, - [18] = { 164, 245 }, - [19] = { 172, 258 }, - [20] = { 180, 270 }, - [21] = { 187, 281 }, - [22] = { 194, 291 }, - [23] = { 200, 300 }, - [24] = { 207, 310 }, - [25] = { 213, 320 }, - [26] = { 219, 329 }, - [27] = { 226, 339 }, - [28] = { 232, 348 }, - [29] = { 239, 358 }, - [30] = { 245, 367 }, - [31] = { 251, 377 }, - [32] = { 258, 387 }, - [33] = { 264, 396 }, - [34] = { 270, 405 }, - [35] = { 276, 415 }, - [36] = { 283, 424 }, - [37] = { 289, 434 }, - [38] = { 295, 443 }, - [39] = { 302, 452 }, - [40] = { 308, 462 }, -} diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua old mode 100755 new mode 100644 index 911562ffd..69b9dd182 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -1063,7 +1063,7 @@ c["10% increased Duration of Ailments on Beasts"]={{[1]={flags=0,keywordFlags=0, c["10% increased Duration of Elemental Ailments on Enemies"]={{[1]={flags=0,keywordFlags=0,name="EnemyElementalAilmentDuration",type="INC",value=10}},nil} c["10% increased Duration of Ignite, Shock and Chill on Enemies"]={{[1]={flags=0,keywordFlags=0,name="EnemyShockDuration",type="INC",value=10},[2]={flags=0,keywordFlags=0,name="EnemyChillDuration",type="INC",value=10},[3]={flags=0,keywordFlags=0,name="EnemyIgniteDuration",type="INC",value=10}},nil} c["10% increased Effect of your Mark Skills"]={{[1]={[1]={skillType=98,type="SkillType"},flags=0,keywordFlags=0,name="LocalEffect",type="INC",value=10}},nil} -c["10% increased Electrocute Buildup"]={{}," Electrocute Buildup "} +c["10% increased Electrocute Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyElectrocuteBuildup",type="INC",value=10}},nil} c["10% increased Elemental Damage"]={{[1]={flags=0,keywordFlags=0,name="ElementalDamage",type="INC",value=10}},nil} c["10% increased Elemental Infusion duration"]={{[1]={flags=0,keywordFlags=0,name="Duration",type="INC",value=10}}," Elemental Infusion "} c["10% increased Endurance, Frenzy and Power Charge Duration"]={{[1]={flags=0,keywordFlags=0,name="PowerChargesDuration",type="INC",value=10},[2]={flags=0,keywordFlags=0,name="FrenzyChargesDuration",type="INC",value=10},[3]={flags=0,keywordFlags=0,name="EnduranceChargesDuration",type="INC",value=10}},nil} @@ -1076,9 +1076,7 @@ c["10% increased Flammability Magnitude"]={{[1]={flags=0,keywordFlags=0,name="En c["10% increased Flask Charges gained"]={{[1]={flags=0,keywordFlags=0,name="FlaskChargesGained",type="INC",value=10}},nil} c["10% increased Flask Effect Duration"]={{[1]={flags=0,keywordFlags=0,name="FlaskDuration",type="INC",value=10}},nil} c["10% increased Flask and Charm Charges gained"]={{[1]={flags=0,keywordFlags=0,name="CharmChargesGained",type="INC",value=10},[2]={flags=0,keywordFlags=0,name="FlaskChargesGained",type="INC",value=10}},nil} -c["10% increased Freeze Buildup"]={{}," Freeze Buildup "} -c["10% increased Freeze Buildup 10% increased chance to Shock"]={{[1]={flags=0,keywordFlags=0,name="EnemyShockChance",type="INC",value=10}}," Freeze Buildup 10% increased "} -c["10% increased Freeze Buildup 8% increased Elemental Damage"]={{[1]={flags=0,keywordFlags=0,name="ElementalDamage",type="INC",value=10}}," Freeze Buildup 8% increased "} +c["10% increased Freeze Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyFreezeBuildup",type="INC",value=10}},nil} c["10% increased Freeze Threshold"]={{[1]={flags=0,keywordFlags=0,name="FreezeThreshold",type="INC",value=10}},nil} c["10% increased Global Defences"]={{[1]={[1]={type="Global"},flags=0,keywordFlags=0,name="Defences",type="INC",value=10}},nil} c["10% increased Global Defences per Socket filled"]={{[1]={[1]={type="Global"},[2]={type="Multiplier",var="RunesSocketedIn{SlotName}"},flags=0,keywordFlags=0,name="Defences",type="INC",value=10}},nil} @@ -1129,14 +1127,7 @@ c["10% increased Spell Damage"]={{[1]={flags=2,keywordFlags=0,name="Damage",type c["10% increased Spell Damage per 10 Spirit"]={{[1]={[1]={div=10,stat="Spirit",type="PerStat"},flags=2,keywordFlags=0,name="Damage",type="INC",value=10}},nil} c["10% increased Spirit Reservation Efficiency of Skills"]={{[1]={flags=0,keywordFlags=0,name="SpiritReservationEfficiency",type="INC",value=10}},nil} c["10% increased Strength"]={{[1]={flags=0,keywordFlags=0,name="Str",type="INC",value=10}},nil} -c["10% increased Stun Buildup"]={{}," Stun Buildup "} -c["10% increased Stun Buildup 10% increased Damage with Two Handed Weapons"]={{[1]={flags=34359738372,keywordFlags=0,name="Damage",type="INC",value=10}}," Stun Buildup 10% increased "} -c["10% increased Stun Buildup 10% increased Knockback Distance"]={{[1]={flags=0,keywordFlags=0,name="EnemyKnockbackDistance",type="INC",value=10}}," Stun Buildup 10% increased "} -c["10% increased Stun Buildup 10% increased Melee Damage"]={{[1]={flags=256,keywordFlags=0,name="Damage",type="INC",value=10}}," Stun Buildup 10% increased "} -c["10% increased Stun Buildup 16% increased Melee Damage"]={{[1]={flags=256,keywordFlags=0,name="Damage",type="INC",value=10}}," Stun Buildup 16% increased "} -c["10% increased Stun Buildup 16% increased Melee Damage +10 to Strength"]={{[1]={flags=256,keywordFlags=0,name="Damage",type="INC",value=10}}," Stun Buildup 16% increased +10 to Strength "} -c["10% increased Stun Buildup Ancestrally Boosted Attacks deal 16% increased Damage"]={{[1]={flags=0,keywordFlags=0,name="Damage",type="INC",value=10}}," Stun Buildup Ancestrally Boosted Attacks deal 16% increased "} -c["10% increased Stun Buildup Damage Penetrates 5% Fire Resistance"]={{[1]={flags=0,keywordFlags=0,name="Damage",type="INC",value=10}}," Stun Buildup Penetrates 5% Fire Resistance "} +c["10% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=10}},nil} c["10% increased Stun Threshold"]={{[1]={flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=10}},nil} c["10% increased Stun Threshold for each time you've been Hit by an Enemy Recently, up to 100%"]={{[1]={flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=10}}," for each time you've been Hit by an Enemy Recently, up to 100% "} c["10% increased Thorns damage"]={{[1]={flags=0,keywordFlags=0,name="ThornsDamage",type="INC",value=10}},nil} @@ -1237,8 +1228,7 @@ c["100% increased Evasion and Energy Shield"]={{[1]={flags=0,keywordFlags=0,name c["100% increased Fire Damage"]={{[1]={flags=0,keywordFlags=0,name="FireDamage",type="INC",value=100}},nil} c["100% increased Flammability Magnitude"]={{[1]={flags=0,keywordFlags=0,name="EnemyIgniteChance",type="INC",value=100}},nil} c["100% increased Flask Charges gained"]={{[1]={flags=0,keywordFlags=0,name="FlaskChargesGained",type="INC",value=100}},nil} -c["100% increased Freeze Buildup"]={{}," Freeze Buildup "} -c["100% increased Freeze Buildup Enemies Frozen by you take 50% increased Damage"]={{[1]={flags=0,keywordFlags=0,name="Damage",type="INC",value=100}}," Freeze Buildup Enemies Frozen by you take 50% increased "} +c["100% increased Freeze Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyFreezeBuildup",type="INC",value=100}},nil} c["100% increased Ignite Magnitude"]={{[1]={flags=0,keywordFlags=8388608,name="AilmentMagnitude",type="INC",value=100}},nil} c["100% increased Lightning Damage"]={{[1]={flags=0,keywordFlags=0,name="LightningDamage",type="INC",value=100}},nil} c["100% increased Mana Regeneration Rate"]={{[1]={flags=0,keywordFlags=0,name="ManaRegen",type="INC",value=100}},nil} @@ -1313,8 +1303,7 @@ c["12% increased Elemental Damage with Attacks"]={{[1]={flags=0,keywordFlags=655 c["12% increased Evasion Rating"]={{[1]={flags=0,keywordFlags=0,name="Evasion",type="INC",value=12}},nil} c["12% increased Fire Damage"]={{[1]={flags=0,keywordFlags=0,name="FireDamage",type="INC",value=12}},nil} c["12% increased Flammability Magnitude"]={{[1]={flags=0,keywordFlags=0,name="EnemyIgniteChance",type="INC",value=12}},nil} -c["12% increased Freeze Buildup"]={{}," Freeze Buildup "} -c["12% increased Freeze Buildup 12% increased chance to Shock"]={{[1]={flags=0,keywordFlags=0,name="EnemyShockChance",type="INC",value=12}}," Freeze Buildup 12% increased "} +c["12% increased Freeze Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyFreezeBuildup",type="INC",value=12}},nil} c["12% increased Grenade Damage"]={{[1]={[1]={skillType=158,type="SkillType"},flags=0,keywordFlags=0,name="Damage",type="INC",value=12}},nil} c["12% increased Ignite Magnitude"]={{[1]={flags=0,keywordFlags=8388608,name="AilmentMagnitude",type="INC",value=12}},nil} c["12% increased Life Regeneration rate"]={{[1]={flags=0,keywordFlags=0,name="LifeRegen",type="INC",value=12}},nil} @@ -1333,8 +1322,6 @@ c["12% increased Spell Damage if you have consumed an Elemental Infusion Recentl c["12% increased Spell Damage per 10 Spirit"]={{[1]={[1]={div=10,stat="Spirit",type="PerStat"},flags=2,keywordFlags=0,name="Damage",type="INC",value=12}},nil} c["12% increased Spell Damage while on Full Energy Shield"]={{[1]={[1]={type="Condition",var="FullEnergyShield"},flags=2,keywordFlags=0,name="Damage",type="INC",value=12}},nil} c["12% increased Spell Damage while wielding a Melee Weapon"]={{[1]={[1]={type="Condition",var="UsingMeleeWeapon"},flags=2,keywordFlags=0,name="Damage",type="INC",value=12}},nil} -c["12% increased Spell Damage with Spells that cost Life"]={{[1]={[1]={stat="LifeCost",threshold=1,type="StatThreshold"},flags=2,keywordFlags=131072,name="Damage",type="INC",value=12}},nil} -c["12% increased Stun Buildup"]={{}," Stun Buildup "} c["12% increased Stun Buildup 10% increased Damage with Maces"]={{[1]={flags=1048580,keywordFlags=0,name="Damage",type="INC",value=12}}," Stun Buildup 10% increased "} c["12% increased Stun Buildup Gain additional Stun Threshold equal to 10% of maximum Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=12}}," Stun Buildup Gain additional equal to 10% of maximum Energy Shield "} c["12% increased Stun Threshold"]={{[1]={flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=12}},nil} @@ -1465,7 +1452,7 @@ c["15% increased Duration of Ailments against Enemies with Exposure"]={{[1]={[1] c["15% increased Duration of Damaging Ailments on Enemies"]={{[1]={flags=0,keywordFlags=0,name="EnemyIgniteDuration",type="INC",value=15},[2]={flags=0,keywordFlags=0,name="EnemyBleedDuration",type="INC",value=15},[3]={flags=0,keywordFlags=0,name="EnemyPoisonDuration",type="INC",value=15}},nil} c["15% increased Duration of Elemental Ailments on Enemies"]={{[1]={flags=0,keywordFlags=0,name="EnemyElementalAilmentDuration",type="INC",value=15}},nil} c["15% increased Duration of Ignite, Shock and Chill on Enemies"]={{[1]={flags=0,keywordFlags=0,name="EnemyShockDuration",type="INC",value=15},[2]={flags=0,keywordFlags=0,name="EnemyChillDuration",type="INC",value=15},[3]={flags=0,keywordFlags=0,name="EnemyIgniteDuration",type="INC",value=15}},nil} -c["15% increased Electrocute Buildup"]={{}," Electrocute Buildup "} +c["15% increased Electrocute Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyElectrocuteBuildup",type="INC",value=15}},nil} c["15% increased Elemental Ailment Threshold"]={{[1]={flags=0,keywordFlags=0,name="AilmentThreshold",type="INC",value=15}},nil} c["15% increased Endurance, Frenzy and Power Charge Duration"]={{[1]={flags=0,keywordFlags=0,name="PowerChargesDuration",type="INC",value=15},[2]={flags=0,keywordFlags=0,name="FrenzyChargesDuration",type="INC",value=15},[3]={flags=0,keywordFlags=0,name="EnduranceChargesDuration",type="INC",value=15}},nil} c["15% increased Energy Shield Recharge Rate"]={{[1]={flags=0,keywordFlags=0,name="EnergyShieldRecharge",type="INC",value=15}},nil} @@ -1475,8 +1462,7 @@ c["15% increased Fire Damage"]={{[1]={flags=0,keywordFlags=0,name="FireDamage",t c["15% increased Flammability Magnitude"]={{[1]={flags=0,keywordFlags=0,name="EnemyIgniteChance",type="INC",value=15}},nil} c["15% increased Flask Charges gained"]={{[1]={flags=0,keywordFlags=0,name="FlaskChargesGained",type="INC",value=15}},nil} c["15% increased Flask Effect Duration"]={{[1]={flags=0,keywordFlags=0,name="FlaskDuration",type="INC",value=15}},nil} -c["15% increased Freeze Buildup"]={{}," Freeze Buildup "} -c["15% increased Freeze Buildup 15% increased Chill and Freeze Duration on Enemies"]={{[1]={flags=0,keywordFlags=0,name="EnemyFreezeDuration",type="INC",value=15},[2]={flags=0,keywordFlags=0,name="EnemyChillDuration",type="INC",value=15}}," Freeze Buildup 15% increased "} +c["15% increased Freeze Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyFreezeBuildup",type="INC",value=15}},nil} c["15% increased Global Physical Damage"]={{[1]={[1]={type="Global"},flags=0,keywordFlags=0,name="PhysicalDamage",type="INC",value=15}},nil} c["15% increased Glory generation"]={{}," Glory generation "} c["15% increased Ignite Duration on Enemies"]={{[1]={flags=0,keywordFlags=0,name="EnemyIgniteDuration",type="INC",value=15}},nil} @@ -1527,10 +1513,9 @@ c["15% increased Skill Speed"]={{[1]={flags=0,keywordFlags=0,name="Speed",type=" c["15% increased Spell Damage"]={{[1]={flags=2,keywordFlags=0,name="Damage",type="INC",value=15}},nil} c["15% increased Spell Damage if you've dealt a Critical Hit Recently"]={{[1]={[1]={type="Condition",var="CritRecently"},flags=2,keywordFlags=0,name="Damage",type="INC",value=15}},nil} c["15% increased Strength"]={{[1]={flags=0,keywordFlags=0,name="Str",type="INC",value=15}},nil} -c["15% increased Stun Buildup"]={{}," Stun Buildup "} -c["15% increased Stun Buildup 15% increased Freeze Buildup"]={{}," Stun Buildup 15% increased Freeze Buildup "} -c["15% increased Stun Buildup with Melee Damage"]={{[1]={flags=256,keywordFlags=0,name="Damage",type="INC",value=15}}," Stun Buildup with "} -c["15% increased Stun Buildup with Melee Damage +15 to Strength"]={{[1]={flags=256,keywordFlags=0,name="Damage",type="INC",value=15}}," Stun Buildup with +15 to Strength "} +c["15% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=15}},nil} +c["15% increased Stun Buildup with Melee Damage"]={{[1]={flags=256,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=15}}," with Damage "} +c["15% increased Stun Buildup with Melee Damage +15 to Strength"]={{[1]={flags=256,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=15}}," with Damage +15 to Strength "} c["15% increased Stun Duration"]={{[1]={flags=0,keywordFlags=0,name="EnemyStunDuration",type="INC",value=15}},nil} c["15% increased Stun Threshold"]={{[1]={flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=15}},nil} c["15% increased Totem Damage"]={{[1]={flags=0,keywordFlags=16384,name="Damage",type="INC",value=15}},nil} @@ -1632,9 +1617,9 @@ c["18% increased Curse Magnitudes"]={{[1]={flags=0,keywordFlags=0,name="CurseEff c["18% increased Mana Regeneration Rate"]={{[1]={flags=0,keywordFlags=0,name="ManaRegen",type="INC",value=18}},nil} c["18% increased Projectile Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="ProjectileCount",type="INC",value=18}}," Stun Buildup "} c["18% increased Skill Effect Duration"]={{[1]={flags=0,keywordFlags=0,name="Duration",type="INC",value=18}},nil} -c["18% increased Stun Buildup"]={{}," Stun Buildup "} -c["18% increased Stun Buildup with Maces"]={{}," Stun Buildup "} -c["18% increased Stun Buildup with Melee Damage"]={{[1]={flags=256,keywordFlags=0,name="Damage",type="INC",value=18}}," Stun Buildup with "} +c["18% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=18}},nil} +c["18% increased Stun Buildup with Maces"]={{[1]={flags=1048580,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=18}},nil} +c["18% increased Stun Buildup with Melee Damage"]={{[1]={flags=256,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=18}}," with Damage "} c["18% increased Warcry Cooldown Recovery Rate"]={{[1]={flags=0,keywordFlags=4,name="CooldownRecovery",type="INC",value=18}},nil} c["18% increased maximum Energy Shield"]={{[1]={[1]={type="Global"},flags=0,keywordFlags=0,name="EnergyShield",type="INC",value=18}},nil} c["18% of Damage taken Recouped as Life"]={{[1]={flags=0,keywordFlags=0,name="LifeRecoup",type="BASE",value=18}},nil} @@ -1780,12 +1765,8 @@ c["20% increased Fire Damage"]={{[1]={flags=0,keywordFlags=0,name="FireDamage",t c["20% increased Flammability Magnitude"]={{[1]={flags=0,keywordFlags=0,name="EnemyIgniteChance",type="INC",value=20}},nil} c["20% increased Flask Effect Duration"]={{[1]={flags=0,keywordFlags=0,name="FlaskDuration",type="INC",value=20}},nil} c["20% increased Flask and Charm Charges gained"]={{[1]={flags=0,keywordFlags=0,name="CharmChargesGained",type="INC",value=20},[2]={flags=0,keywordFlags=0,name="FlaskChargesGained",type="INC",value=20}},nil} -c["20% increased Freeze Buildup"]={{}," Freeze Buildup "} -c["20% increased Freeze Buildup 20% increased chance to Shock"]={{[1]={flags=0,keywordFlags=0,name="EnemyShockChance",type="INC",value=20}}," Freeze Buildup 20% increased "} -c["20% increased Freeze Buildup 50% increased Damage with Hits against Frozen Enemies"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="Frozen"},flags=0,keywordFlags=262144,name="Damage",type="INC",value=20}}," Freeze Buildup 50% increased "} -c["20% increased Freeze Buildup Gain 25% of Cold Damage as Extra Fire Damage against Frozen Enemies"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="Frozen"},flags=0,keywordFlags=0,name="ColdDamage",type="INC",value=20}}," Freeze Buildup Gain 25% of as Extra Fire Damage "} -c["20% increased Freeze Buildup Hits ignore non-negative Elemental Resistances of Frozen Enemies"]={{[1]={flags=0,keywordFlags=0,name="ElementalResist",type="INC",value=20}}," Freeze Buildup Hits ignore non-negative of Frozen Enemies "} -c["20% increased Freeze Buildup with Quarterstaves"]={{}," Freeze Buildup "} +c["20% increased Freeze Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyFreezeBuildup",type="INC",value=20}},nil} +c["20% increased Freeze Buildup with Quarterstaves"]={{[1]={flags=2097156,keywordFlags=0,name="EnemyFreezeBuildup",type="INC",value=20}},nil} c["20% increased Freeze Duration on Enemies"]={{[1]={flags=0,keywordFlags=0,name="EnemyFreezeDuration",type="INC",value=20}},nil} c["20% increased Frenzy Charge Duration"]={{[1]={flags=0,keywordFlags=0,name="FrenzyChargesDuration",type="INC",value=20}},nil} c["20% increased Global Defences"]={{[1]={[1]={type="Global"},flags=0,keywordFlags=0,name="Defences",type="INC",value=20}},nil} @@ -1842,12 +1823,8 @@ c["20% increased Skill Effect Duration"]={{[1]={flags=0,keywordFlags=0,name="Dur c["20% increased Spell Area Damage"]={{[1]={flags=514,keywordFlags=0,name="Damage",type="INC",value=20}},nil} c["20% increased Spell Damage"]={{[1]={flags=2,keywordFlags=0,name="Damage",type="INC",value=20}},nil} c["20% increased Strength"]={{[1]={flags=0,keywordFlags=0,name="Str",type="INC",value=20}},nil} -c["20% increased Stun Buildup"]={{}," Stun Buildup "} -c["20% increased Stun Buildup 20% increased Knockback Distance"]={{[1]={flags=0,keywordFlags=0,name="EnemyKnockbackDistance",type="INC",value=20}}," Stun Buildup 20% increased "} -c["20% increased Stun Buildup 20% increased Knockback Distance 20% increased Physical Damage"]={{[1]={flags=0,keywordFlags=0,name="EnemyKnockbackDistance",type="INC",value=20}}," Stun Buildup 20% increased 20% increased Physical Damage "} -c["20% increased Stun Buildup 25% increased Attack Area Damage"]={{[1]={flags=513,keywordFlags=0,name="Damage",type="INC",value=20}}," Stun Buildup 25% increased "} -c["20% increased Stun Buildup 40% increased Damage with Two Handed Weapons"]={{[1]={flags=34359738372,keywordFlags=0,name="Damage",type="INC",value=20}}," Stun Buildup 40% increased "} -c["20% increased Stun Buildup with Quarterstaves"]={{}," Stun Buildup "} +c["20% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=20}},nil} +c["20% increased Stun Buildup with Quarterstaves"]={{[1]={flags=2097156,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=20}},nil} c["20% increased Stun Duration"]={{[1]={flags=0,keywordFlags=0,name="EnemyStunDuration",type="INC",value=20}},nil} c["20% increased Stun Recovery"]={{[1]={flags=0,keywordFlags=0,name="StunRecovery",type="INC",value=20}},nil} c["20% increased Stun Threshold"]={{[1]={flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=20}},nil} @@ -1876,7 +1853,7 @@ c["20% less Attributes"]={{[1]={flags=0,keywordFlags=0,name="Str",type="MORE",va c["20% less Damage taken if you have not been Hit Recently"]={{[1]={[1]={neg=true,type="Condition",var="BeenHitRecently"},flags=0,keywordFlags=0,name="DamageTaken",type="MORE",value=-20}},nil} c["20% more Charm Charges gained"]={{[1]={flags=0,keywordFlags=0,name="CharmChargesGained",type="MORE",value=20}},nil} c["20% more Damage against Heavy Stunned Enemies with Maces"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="HeavyStunned"},flags=1048580,keywordFlags=0,name="Damage",type="MORE",value=20}},nil} -c["20% more Stun Buildup with Critical Hits"]={{}," Stun Buildup "} +c["20% more Stun Buildup with Critical Hits"]={{[1]={[1]={type="Condition",var="CriticalStrike"},flags=0,keywordFlags=0,name="EnemyStunBuildup",type="MORE",value=20}},nil} c["20% of Cold Damage taken as Fire Damage"]={{[1]={flags=0,keywordFlags=0,name="ColdDamageTakenAsFire",type="BASE",value=20}},nil} c["20% of Damage from Hits is taken from your nearest Totem's Life before you"]={{[1]={[1]={type="Condition",var="HaveTotem"},flags=0,keywordFlags=0,name="takenFromTotemsBeforeYou",type="BASE",value=20}},nil} c["20% of Damage is taken from Mana before Life"]={{[1]={flags=0,keywordFlags=0,name="DamageTakenFromManaBeforeLife",type="BASE",value=20}},nil} @@ -2036,7 +2013,7 @@ c["25% increased Damage with Swords"]={{[1]={flags=4194308,keywordFlags=0,name=" c["25% increased Daze Duration"]={{[1]={flags=0,keywordFlags=0,name="Duration",type="INC",value=25}}," Daze "} c["25% increased Defences from Equipped Shield"]={{[1]={[1]={slotName="Weapon 2",type="SlotName"},[2]={type="Condition",var="UsingShield"},flags=0,keywordFlags=0,name="Defences",type="INC",value=25}},nil} c["25% increased Duration"]={{[1]={flags=0,keywordFlags=0,name="Duration",type="INC",value=25}},nil} -c["25% increased Electrocute Buildup"]={{}," Electrocute Buildup "} +c["25% increased Electrocute Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyElectrocuteBuildup",type="INC",value=25}},nil} c["25% increased Elemental Ailment Threshold"]={{[1]={flags=0,keywordFlags=0,name="AilmentThreshold",type="INC",value=25}},nil} c["25% increased Energy Shield Recharge Rate"]={{[1]={flags=0,keywordFlags=0,name="EnergyShieldRecharge",type="INC",value=25}},nil} c["25% increased Evasion Rating"]={{[1]={flags=0,keywordFlags=0,name="Evasion",type="INC",value=25}},nil} @@ -2048,9 +2025,7 @@ c["25% increased Flammability Magnitude"]={{[1]={flags=0,keywordFlags=0,name="En c["25% increased Flask Charges gained"]={{[1]={flags=0,keywordFlags=0,name="FlaskChargesGained",type="INC",value=25}},nil} c["25% increased Flask Life Recovery rate"]={{[1]={flags=0,keywordFlags=0,name="FlaskLifeRecoveryRate",type="INC",value=25}},nil} c["25% increased Flask Mana Recovery rate"]={{[1]={flags=0,keywordFlags=0,name="FlaskManaRecoveryRate",type="INC",value=25}},nil} -c["25% increased Freeze Buildup"]={{}," Freeze Buildup "} -c["25% increased Freeze Buildup 25% increased chance to Shock"]={{[1]={flags=0,keywordFlags=0,name="EnemyShockChance",type="INC",value=25}}," Freeze Buildup 25% increased "} -c["25% increased Freeze Buildup 25% increased chance to Shock 25% increased Electrocute Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyShockChance",type="INC",value=25}}," Freeze Buildup 25% increased 25% increased Electrocute Buildup "} +c["25% increased Freeze Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyFreezeBuildup",type="INC",value=25}},nil} c["25% increased Frenzy Charge Duration"]={{[1]={flags=0,keywordFlags=0,name="FrenzyChargesDuration",type="INC",value=25}},nil} c["25% increased Ignite Magnitude"]={{[1]={flags=0,keywordFlags=8388608,name="AilmentMagnitude",type="INC",value=25}},nil} c["25% increased Life Recovery from Flasks"]={{[1]={flags=0,keywordFlags=0,name="FlaskLifeRecovery",type="INC",value=25}},nil} @@ -2083,6 +2058,7 @@ c["25% increased Shock Duration"]={{[1]={flags=0,keywordFlags=0,name="EnemyShock c["25% increased Skill Effect Duration"]={{[1]={flags=0,keywordFlags=0,name="Duration",type="INC",value=25}},nil} c["25% increased Spell Damage"]={{[1]={flags=2,keywordFlags=0,name="Damage",type="INC",value=25}},nil} c["25% increased Spell Damage while on Full Energy Shield"]={{[1]={[1]={type="Condition",var="FullEnergyShield"},flags=2,keywordFlags=0,name="Damage",type="INC",value=25}},nil} +c["25% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=25}},nil} c["25% increased Stun Threshold"]={{[1]={flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=25}},nil} c["25% increased Stun Threshold if you haven't been Stunned Recently"]={{[1]={[1]={neg=true,type="Condition",var="StunnedRecently"},flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=25}},nil} c["25% increased Stun Threshold while on Full Life"]={{[1]={[1]={type="Condition",var="FullLife"},flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=25}},nil} @@ -2256,7 +2232,7 @@ c["30% increased Damage with Hits against Hindered Enemies"]={{[1]={[1]={actor=" c["30% increased Damage with Hits against Ignited Enemies"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="Ignited"},flags=0,keywordFlags=262144,name="Damage",type="INC",value=30}},nil} c["30% increased Damage with Hits against Shocked Enemies"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="Shocked"},flags=0,keywordFlags=262144,name="Damage",type="INC",value=30}},nil} c["30% increased Defences while wielding a Quarterstaff"]={{[1]={[1]={type="Condition",var="UsingStaff"},flags=0,keywordFlags=0,name="Defences",type="INC",value=30}},nil} -c["30% increased Electrocute Buildup"]={{}," Electrocute Buildup "} +c["30% increased Electrocute Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyElectrocuteBuildup",type="INC",value=30}},nil} c["30% increased Elemental Ailment Threshold"]={{[1]={flags=0,keywordFlags=0,name="AilmentThreshold",type="INC",value=30}},nil} c["30% increased Elemental Damage"]={{[1]={flags=0,keywordFlags=0,name="ElementalDamage",type="INC",value=30}},nil} c["30% increased Elemental Damage if you've Chilled an Enemy Recently"]={{[1]={[1]={type="Condition",var="ChilledEnemyRecently"},flags=0,keywordFlags=0,name="ElementalDamage",type="INC",value=30}},nil} @@ -2278,12 +2254,8 @@ c["30% increased Flask Charges gained"]={{[1]={flags=0,keywordFlags=0,name="Flas c["30% increased Flask Effect Duration"]={{[1]={flags=0,keywordFlags=0,name="FlaskDuration",type="INC",value=30}},nil} c["30% increased Flask Life Recovery rate"]={{[1]={flags=0,keywordFlags=0,name="FlaskLifeRecoveryRate",type="INC",value=30}},nil} c["30% increased Flask Mana Recovery rate"]={{[1]={flags=0,keywordFlags=0,name="FlaskManaRecoveryRate",type="INC",value=30}},nil} -c["30% increased Freeze Buildup"]={{}," Freeze Buildup "} -c["30% increased Freeze Buildup 100% of Lightning Damage Converted to Cold Damage"]={{[1]={flags=0,keywordFlags=0,name="LightningDamage",type="INC",value=30}}," Freeze Buildup 100% of Converted to Cold Damage "} -c["30% increased Freeze Buildup 20% increased Chill Duration on Enemies"]={{[1]={flags=0,keywordFlags=0,name="EnemyChillDuration",type="INC",value=30}}," Freeze Buildup 20% increased "} -c["30% increased Freeze Buildup 20% increased Chill Duration on Enemies 20% increased Magnitude of Chill you inflict"]={{[1]={flags=0,keywordFlags=0,name="EnemyChillDuration",type="INC",value=30}}," Freeze Buildup 20% increased 20% increased Magnitude of Chill you inflict "} -c["30% increased Freeze Buildup with Quarterstaves"]={{}," Freeze Buildup "} -c["30% increased Freeze Buildup with Quarterstaves 30% increased Stun Buildup with Quarterstaves"]={{}," Freeze Buildup 30% increased Stun Buildup with Quarterstaves "} +c["30% increased Freeze Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyFreezeBuildup",type="INC",value=30}},nil} +c["30% increased Freeze Buildup with Quarterstaves"]={{[1]={flags=2097156,keywordFlags=0,name="EnemyFreezeBuildup",type="INC",value=30}},nil} c["30% increased Freeze Threshold"]={{[1]={flags=0,keywordFlags=0,name="FreezeThreshold",type="INC",value=30}},nil} c["30% increased Hazard Immobilisation buildup"]={{}," Immobilisation buildup "} c["30% increased Life Recovery from Flasks"]={{[1]={flags=0,keywordFlags=0,name="FlaskLifeRecovery",type="INC",value=30}},nil} @@ -2322,24 +2294,13 @@ c["30% increased Skill Speed"]={{[1]={flags=0,keywordFlags=0,name="Speed",type=" c["30% increased Spell Damage"]={{[1]={flags=2,keywordFlags=0,name="Damage",type="INC",value=30}},nil} c["30% increased Spell Damage if you have consumed an Elemental Infusion Recently"]={{[1]={flags=2,keywordFlags=0,name="Damage",type="INC",value=30}}," if you have consumed an Elemental Infusion Recently "} c["30% increased Strength"]={{[1]={flags=0,keywordFlags=0,name="Str",type="INC",value=30}},nil} -c["30% increased Stun Buildup"]={{}," Stun Buildup "} -c["30% increased Stun Buildup +15 to Strength"]={{[1]={flags=0,keywordFlags=0,name="Str",type="INC",value=30}}," Stun Buildup +15 to "} -c["30% increased Stun Buildup 10% chance to Daze on Hit"]={{[1]={flags=4,keywordFlags=0,name="DazeChance",type="INC",value=30}}," Stun Buildup 10% chance "} -c["30% increased Stun Buildup 12% increased Area of Effect if you have Stunned an Enemy Recently"]={{[1]={[1]={type="Condition",var="StunnedEnemyRecently"},flags=0,keywordFlags=0,name="AreaOfEffect",type="INC",value=30}}," Stun Buildup 12% increased "} -c["30% increased Stun Buildup 30% increased Stun Threshold"]={{[1]={flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=30}}," Stun Buildup 30% increased "} -c["30% increased Stun Buildup 30% increased Stun Threshold 5% increased Strength"]={{[1]={flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=30}}," Stun Buildup 30% increased 5% increased Strength "} -c["30% increased Stun Buildup 40% increased Stun Buildup"]={{}," Stun Buildup 40% increased Stun Buildup "} -c["30% increased Stun Buildup 50% increased Attack Damage"]={{[1]={flags=1,keywordFlags=0,name="Damage",type="INC",value=30}}," Stun Buildup 50% increased "} -c["30% increased Stun Buildup Damage with Hits is Lucky against Heavy Stunned Enemies"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="HeavyStunned"},flags=0,keywordFlags=262144,name="Damage",type="INC",value=30}}," Stun Buildup is Lucky "} -c["30% increased Stun Buildup Gain an Endurance Charge when you Heavy Stun a Rare or Unique Enemy"]={{}," Stun Buildup Gain an Endurance Charge when you Heavy Stun a Rare or Unique Enemy "} -c["30% increased Stun Buildup Giant's Blood"]={{}," Stun Buildup Giant's Blood "} -c["30% increased Stun Buildup Hits Break 50% increased Armour on targets with Ailments"]={{[1]={flags=2048,keywordFlags=0,name="Armour",type="INC",value=30}}," Stun Buildup Hits Break 50% increased on targets "} -c["30% increased Stun Buildup against Enemies that are on Low Life"]={{}," Stun Buildup "} -c["30% increased Stun Buildup against enemies within 2 metres"]={{}," Stun Buildup against enemies within 2 metres "} -c["30% increased Stun Buildup against enemies within 2 metres +5 to Strength and Dexterity"]={{[1]={flags=0,keywordFlags=0,name="Str",type="INC",value=30},[2]={flags=0,keywordFlags=0,name="Dex",type="INC",value=30},[3]={flags=0,keywordFlags=0,name="StrDex",type="INC",value=30}}," Stun Buildup against enemies within 2 metres +5 to "} -c["30% increased Stun Buildup with Melee Damage"]={{[1]={flags=256,keywordFlags=0,name="Damage",type="INC",value=30}}," Stun Buildup with "} -c["30% increased Stun Buildup with Melee Damage Projectiles deal 75% increased Damage against Heavy Stunned Enemies"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="HeavyStunned"},flags=256,keywordFlags=0,name="Damage",type="INC",value=30}}," Stun Buildup with Projectiles deal 75% increased Damage "} -c["30% increased Stun Buildup with Quarterstaves"]={{}," Stun Buildup "} +c["30% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=30}},nil} +c["30% increased Stun Buildup against Enemies that are on Low Life"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="LowLife"},flags=0,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=30}},nil} +c["30% increased Stun Buildup against enemies within 2 metres"]={{[1]={flags=0,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=30}}," against enemies within 2 metres "} +c["30% increased Stun Buildup against enemies within 2 metres +5 to Strength and Dexterity"]={{[1]={flags=0,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=30}}," against enemies within 2 metres +5 to Strength and Dexterity "} +c["30% increased Stun Buildup with Melee Damage"]={{[1]={flags=256,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=30}}," with Damage "} +c["30% increased Stun Buildup with Melee Damage Projectiles deal 75% increased Damage against Heavy Stunned Enemies"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="HeavyStunned"},flags=256,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=30}}," with Damage Projectiles deal 75% increased Damage "} +c["30% increased Stun Buildup with Quarterstaves"]={{[1]={flags=2097156,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=30}},nil} c["30% increased Stun Recovery"]={{[1]={flags=0,keywordFlags=0,name="StunRecovery",type="INC",value=30}},nil} c["30% increased Stun Threshold"]={{[1]={flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=30}},nil} c["30% increased Stun Threshold if you haven't been Stunned Recently"]={{[1]={[1]={neg=true,type="Condition",var="StunnedRecently"},flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=30}},nil} @@ -2407,6 +2368,7 @@ c["31% increased Magnitude of Unholy Might buffs you grant You have Unholy Might c["32% increased Spell Damage while wielding a Melee Weapon"]={{[1]={[1]={type="Condition",var="UsingMeleeWeapon"},flags=2,keywordFlags=0,name="Damage",type="INC",value=32}},nil} c["33% increased Damage with Hits against Enemies affected by Ailments"]={{[1]={[1]={actor="enemy",type="ActorCondition",varList={[1]="Frozen",[2]="Chilled",[3]="Shocked",[4]="Ignited",[5]="Scorched",[6]="Brittle",[7]="Sapped",[8]="Poisoned",[9]="Bleeding"}},flags=0,keywordFlags=262144,name="Damage",type="INC",value=33}},nil} c["33% increased Mana Regeneration Rate"]={{[1]={flags=0,keywordFlags=0,name="ManaRegen",type="INC",value=33}},nil} +c["33% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=33}},nil} c["33% of Elemental Damage Converted to Cold Damage"]={{[1]={flags=0,keywordFlags=0,name="ElementalDamageConvertToCold",type="BASE",value=33}},nil} c["33% of Elemental Damage Converted to Fire Damage"]={{[1]={flags=0,keywordFlags=0,name="ElementalDamageConvertToFire",type="BASE",value=33}},nil} c["33% of Elemental Damage Converted to Lightning Damage"]={{[1]={flags=0,keywordFlags=0,name="ElementalDamageConvertToLightning",type="BASE",value=33}},nil} @@ -2422,14 +2384,13 @@ c["35% increased Damage with Hits against Burning Enemies"]={{[1]={[1]={actor="e c["35% increased Damage with Hits against Enemies that are on Low Life"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="LowLife"},flags=0,keywordFlags=262144,name="Damage",type="INC",value=35}},nil} c["35% increased Elemental Ailment Threshold"]={{[1]={flags=0,keywordFlags=0,name="AilmentThreshold",type="INC",value=35}},nil} c["35% increased Flask Life Recovery rate"]={{[1]={flags=0,keywordFlags=0,name="FlaskLifeRecoveryRate",type="INC",value=35}},nil} -c["35% increased Freeze Buildup"]={{}," Freeze Buildup "} +c["35% increased Freeze Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyFreezeBuildup",type="INC",value=35}},nil} c["35% increased Life and Mana Recovery from Flasks"]={{[1]={flags=0,keywordFlags=0,name="FlaskLifeRecovery",type="INC",value=35},[2]={flags=0,keywordFlags=0,name="FlaskManaRecovery",type="INC",value=35}},nil} c["35% increased Mana Regeneration Rate"]={{[1]={flags=0,keywordFlags=0,name="ManaRegen",type="INC",value=35}},nil} c["35% increased Projectile Speed with this Weapon"]={{[1]={[1]={type="Condition",var="{Hand}Attack"},[2]={neg=true,skillType=167,type="SkillType"},flags=8192,keywordFlags=0,name="ProjectileSpeed",type="INC",value=35}},nil} c["35% increased Rarity of Items found"]={{[1]={flags=0,keywordFlags=0,name="LootRarity",type="INC",value=35}},nil} c["35% increased Spell Area Damage"]={{[1]={flags=514,keywordFlags=0,name="Damage",type="INC",value=35}},nil} -c["35% increased Stun Buildup"]={{}," Stun Buildup "} -c["35% increased Stun Buildup 35% increased Freeze Buildup"]={{}," Stun Buildup 35% increased Freeze Buildup "} +c["35% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=35}},nil} c["35% increased Stun Threshold"]={{[1]={flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=35}},nil} c["35% increased amount of Life Leeched"]={{[1]={flags=0,keywordFlags=0,name="MaxLifeLeechRate",type="INC",value=35}},nil} c["35% less Armour and Evasion Rating"]={{[1]={flags=0,keywordFlags=0,name="ArmourAndEvasion",type="MORE",value=-35}},nil} @@ -2526,8 +2487,7 @@ c["40% increased Damage with Bow Skills"]={{[1]={flags=0,keywordFlags=1024,name= c["40% increased Damage with Hits against Ignited Enemies"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="Ignited"},flags=0,keywordFlags=262144,name="Damage",type="INC",value=40}},nil} c["40% increased Damage with Two Handed Weapons"]={{[1]={flags=34359738372,keywordFlags=0,name="Damage",type="INC",value=40}},nil} c["40% increased Damage with Warcries"]={{[1]={flags=0,keywordFlags=4,name="Damage",type="INC",value=40}},nil} -c["40% increased Electrocute Buildup"]={{}," Electrocute Buildup "} -c["40% increased Electrocute Buildup 30% increased Shock Chance against Electrocuted Enemies"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="Electrocuted"},flags=0,keywordFlags=0,name="EnemyShockChance",type="INC",value=40}}," Electrocute Buildup 30% increased "} +c["40% increased Electrocute Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyElectrocuteBuildup",type="INC",value=40}},nil} c["40% increased Elemental Ailment Threshold"]={{[1]={flags=0,keywordFlags=0,name="AilmentThreshold",type="INC",value=40}},nil} c["40% increased Elemental Damage"]={{[1]={flags=0,keywordFlags=0,name="ElementalDamage",type="INC",value=40}},nil} c["40% increased Elemental Damage if you've dealt a Critical Hit Recently"]={{[1]={[1]={type="Condition",var="CritRecently"},flags=0,keywordFlags=0,name="ElementalDamage",type="INC",value=40}},nil} @@ -2545,8 +2505,7 @@ c["40% increased Fire Damage"]={{[1]={flags=0,keywordFlags=0,name="FireDamage",t c["40% increased Fire Damage while affected by Herald of Ash"]={{[1]={[1]={type="Condition",var="AffectedByHeraldofAsh"},flags=0,keywordFlags=0,name="FireDamage",type="INC",value=40}},nil} c["40% increased Flammability Magnitude"]={{[1]={flags=0,keywordFlags=0,name="EnemyIgniteChance",type="INC",value=40}},nil} c["40% increased Flask Life Recovery rate"]={{[1]={flags=0,keywordFlags=0,name="FlaskLifeRecoveryRate",type="INC",value=40}},nil} -c["40% increased Freeze Buildup"]={{}," Freeze Buildup "} -c["40% increased Freeze Buildup 20% increased Freeze Duration on Enemies"]={{[1]={flags=0,keywordFlags=0,name="EnemyFreezeDuration",type="INC",value=40}}," Freeze Buildup 20% increased "} +c["40% increased Freeze Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyFreezeBuildup",type="INC",value=40}},nil} c["40% increased Hazard Damage"]={{[1]={[1]={skillType=203,type="SkillType"},flags=0,keywordFlags=0,name="Damage",type="INC",value=40}},nil} c["40% increased Jagged Ground Duration"]={{[1]={flags=0,keywordFlags=0,name="Duration",type="INC",value=40}}," Jagged Ground "} c["40% increased Life Recovery from Flasks"]={{[1]={flags=0,keywordFlags=0,name="FlaskLifeRecovery",type="INC",value=40}},nil} @@ -2579,8 +2538,7 @@ c["40% increased Spell Damage"]={{[1]={flags=2,keywordFlags=0,name="Damage",type c["40% increased Spell Damage if one of your Minions has died Recently"]={{[1]={[1]={type="Condition",var="MinionsDiedRecently"},flags=2,keywordFlags=0,name="Damage",type="INC",value=40}},nil} c["40% increased Spell Damage with Spells that cost Life"]={{[1]={[1]={stat="LifeCost",threshold=1,type="StatThreshold"},flags=2,keywordFlags=131072,name="Damage",type="INC",value=40}},nil} c["40% increased Spirit"]={{[1]={flags=0,keywordFlags=0,name="Spirit",type="INC",value=40}},nil} -c["40% increased Stun Buildup"]={{}," Stun Buildup "} -c["40% increased Stun Buildup Adds 11 to 20 Physical Damage to Attacks"]={{[1]={flags=0,keywordFlags=0,name="PhysicalDamage",type="INC",value=40}}," Stun Buildup Adds 11 to 20 to Attacks "} +c["40% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=40}},nil} c["40% increased Stun Recovery"]={{[1]={flags=0,keywordFlags=0,name="StunRecovery",type="INC",value=40}},nil} c["40% increased Stun Threshold"]={{[1]={flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=40}},nil} c["40% increased Totem Damage"]={{[1]={flags=0,keywordFlags=16384,name="Damage",type="INC",value=40}},nil} @@ -2620,6 +2578,7 @@ c["45% increased Armour"]={{[1]={flags=0,keywordFlags=0,name="Armour",type="INC" c["45% increased Armour and Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="ArmourAndEnergyShield",type="INC",value=45}},nil} c["45% increased Critical Damage Bonus"]={{[1]={flags=0,keywordFlags=0,name="CritMultiplier",type="INC",value=45}},nil} c["45% increased Evasion and Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="EvasionAndEnergyShield",type="INC",value=45}},nil} +c["45% increased Freeze Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyFreezeBuildup",type="INC",value=45}},nil} c["45% increased Mana Regeneration Rate"]={{[1]={flags=0,keywordFlags=0,name="ManaRegen",type="INC",value=45}},nil} c["45% increased Melee Damage if you've dealt a Projectile Attack Hit in the past eight seconds"]={{[1]={[1]={type="Condition",var="HitProjectileRecently"},flags=256,keywordFlags=0,name="Damage",type="INC",value=45}},nil} c["45% increased Presence Area of Effect"]={{[1]={flags=0,keywordFlags=0,name="PresenceArea",type="INC",value=45}},nil} @@ -2747,8 +2706,7 @@ c["50% increased Duration of Ailments on Beasts"]={{[1]={flags=0,keywordFlags=0, c["50% increased Duration of Ailments on Beasts 50% increased Critical Hit Chance against Humanoids"]={{[1]={flags=0,keywordFlags=0,name="EnemyAilmentDuration",type="INC",value=50}}," on Beasts 50% increased Critical Hit Chance against Humanoids "} c["50% increased Duration of Ailments on Beasts 50% increased Critical Hit Chance against Humanoids 50% increased Immobilisation buildup against Constructs"]={{[1]={flags=0,keywordFlags=0,name="EnemyAilmentDuration",type="INC",value=50}}," on Beasts 50% increased Critical Hit Chance against Humanoids 50% increased Immobilisation buildup against Constructs "} c["50% increased Effect of Jewel Socket Passive Skills containing Corrupted Magic Jewels"]={{[1]={flags=0,keywordFlags=0,name="JewelData",type="LIST",value={key="corruptedMagicJewelIncEffect",value=50}}},nil} -c["50% increased Electrocute Buildup against Shocked Enemies"]={{}," Electrocute Buildup "} -c["50% increased Electrocute Buildup against Shocked Enemies 50% increased Shock Chance against Electrocuted Enemies"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="Shocked"},[2]={actor="enemy",type="ActorCondition",var="Electrocuted"},flags=0,keywordFlags=0,name="EnemyShockChance",type="INC",value=50}}," Electrocute Buildup 50% increased "} +c["50% increased Electrocute Buildup against Shocked Enemies"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="Shocked"},flags=0,keywordFlags=0,name="EnemyElectrocuteBuildup",type="INC",value=50}},nil} c["50% increased Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="EnergyShield",type="INC",value=50}},nil} c["50% increased Energy Shield Recharge Rate"]={{[1]={flags=0,keywordFlags=0,name="EnergyShieldRecharge",type="INC",value=50}},nil} c["50% increased Evasion Rating"]={{[1]={flags=0,keywordFlags=0,name="Evasion",type="INC",value=50}},nil} @@ -2764,9 +2722,7 @@ c["50% increased Flask Charges gained"]={{[1]={flags=0,keywordFlags=0,name="Flas c["50% increased Flask Charges used"]={{[1]={flags=0,keywordFlags=0,name="FlaskChargesUsed",type="INC",value=50}},nil} c["50% increased Flask Life Recovery rate"]={{[1]={flags=0,keywordFlags=0,name="FlaskLifeRecoveryRate",type="INC",value=50}},nil} c["50% increased Flask Mana Recovery rate"]={{[1]={flags=0,keywordFlags=0,name="FlaskManaRecoveryRate",type="INC",value=50}},nil} -c["50% increased Freeze Buildup"]={{}," Freeze Buildup "} -c["50% increased Freeze Buildup 30% increased Chill Duration on Enemies"]={{[1]={flags=0,keywordFlags=0,name="EnemyChillDuration",type="INC",value=50}}," Freeze Buildup 30% increased "} -c["50% increased Freeze Buildup 30% increased Magnitude of Chill you inflict"]={{[1]={flags=0,keywordFlags=0,name="EnemyChillMagnitude",type="INC",value=50}}," Freeze Buildup 30% increased "} +c["50% increased Freeze Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyFreezeBuildup",type="INC",value=50}},nil} c["50% increased Grenade Detonation Time"]={{[1]={[1]={skillType=158,type="SkillType"},flags=0,keywordFlags=0,name="DetonationTime",type="INC",value=50}},nil} c["50% increased Hazard Area of Effect"]={{[1]={[1]={skillType=203,type="SkillType"},flags=0,keywordFlags=0,name="AreaOfEffect",type="INC",value=50}},nil} c["50% increased Ignite Magnitude"]={{[1]={flags=0,keywordFlags=8388608,name="AilmentMagnitude",type="INC",value=50}},nil} @@ -2947,7 +2903,7 @@ c["65% increased Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="EnergyShiel c["65% increased Evasion Rating"]={{[1]={flags=0,keywordFlags=0,name="Evasion",type="INC",value=65}},nil} c["65% increased Evasion and Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="EvasionAndEnergyShield",type="INC",value=65}},nil} c["650% increased Physical Damage"]={{[1]={flags=0,keywordFlags=0,name="PhysicalDamage",type="INC",value=650}},nil} -c["66% increased Freeze Buildup"]={{}," Freeze Buildup "} +c["66% increased Freeze Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyFreezeBuildup",type="INC",value=66}},nil} c["666% increased Armour and Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="ArmourAndEnergyShield",type="INC",value=666}},nil} c["666% increased effect of Socketed Soul Cores"]={{[1]={flags=0,keywordFlags=0,name="SocketedSoulCoreEffect",type="INC",value=666}},nil} c["68% increased Elemental Damage with Attacks"]={{[1]={flags=0,keywordFlags=65536,name="ElementalDamage",type="INC",value=68}},nil} @@ -3039,7 +2995,7 @@ c["8% increased Flammability Magnitude"]={{[1]={flags=0,keywordFlags=0,name="Ene c["8% increased Flask Charges gained"]={{[1]={flags=0,keywordFlags=0,name="FlaskChargesGained",type="INC",value=8}},nil} c["8% increased Flask Effect Duration"]={{[1]={flags=0,keywordFlags=0,name="FlaskDuration",type="INC",value=8}},nil} c["8% increased Flask and Charm Charges gained"]={{[1]={flags=0,keywordFlags=0,name="CharmChargesGained",type="INC",value=8},[2]={flags=0,keywordFlags=0,name="FlaskChargesGained",type="INC",value=8}},nil} -c["8% increased Freeze Buildup"]={{}," Freeze Buildup "} +c["8% increased Freeze Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyFreezeBuildup",type="INC",value=8}},nil} c["8% increased Glory generation"]={{}," Glory generation "} c["8% increased Ignite Duration on Enemies"]={{[1]={flags=0,keywordFlags=0,name="EnemyIgniteDuration",type="INC",value=8}},nil} c["8% increased Ignite Magnitude"]={{[1]={flags=0,keywordFlags=8388608,name="AilmentMagnitude",type="INC",value=8}},nil} @@ -4268,12 +4224,12 @@ c["Causes 200% increased Stun Buildup All Damage from Hits with this Weapon Cont c["Causes 50% increased Stun Buildup"]={nil,"Causes 50% increased Stun Buildup "} c["Causes 50% increased Stun Buildup 172% increased Physical Damage"]={nil,"Causes 50% increased Stun Buildup 172% increased Physical Damage "} c["Causes 50% increased Stun Buildup 80% increased Physical Damage"]={nil,"Causes 50% increased Stun Buildup 80% increased Physical Damage "} -c["Causes 50% increased Stun Buildup Adds 85 to 131 Fire Damage"]={{[1]={flags=0,keywordFlags=0,name="FireMin",type="BASE",value=85},[2]={flags=0,keywordFlags=0,name="FireMax",type="BASE",value=131}},"Causes 50% increased Stun Buildup "} +c["Causes 50% increased Stun Buildup Adds 85 to 131 Fire Damage"]={{[1]={flags=0,keywordFlags=0,name="FireMin",type="BASE",value=85},[2]={flags=0,keywordFlags=0,name="FireMax",type="BASE",value=131}},"Causes 50% increased "} c["Causes 50% increased Stun Buildup Always deals Critical Hits against Heavy Stunned Enemies"]={nil,"Causes 50% increased Stun Buildup Always deals Critical Hits against Heavy Stunned Enemies "} 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 Double Stun Buildup"]={{[1]={[1]={globalLimit=100,globalLimitKey="EnemyStunBuildupDoubledLimit",type="Multiplier",var="EnemyStunBuildupDoubled"},flags=0,keywordFlags=0,name="EnemyStunBuildup",type="MORE",value=100},[2]={flags=0,keywordFlags=0,name="Multiplier:EnemyStunBuildupDoubled",type="OVERRIDE",value=1}},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,chance=1,keyOfScaledMod="chance",type="Physical"}},[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 "} @@ -4465,8 +4421,7 @@ c["Empowered Attacks deal 20% increased Damage"]={{[1]={[1]={type="Condition",va c["Empowered Attacks deal 30% increased Damage"]={{[1]={[1]={type="Condition",var="Empowered"},flags=1,keywordFlags=0,name="Damage",type="INC",value=30}},nil} c["Empowered Attacks deal 50% increased Damage"]={{[1]={[1]={type="Condition",var="Empowered"},flags=1,keywordFlags=0,name="Damage",type="INC",value=50}},nil} c["Empowered Attacks deal 8% increased Damage"]={{[1]={[1]={type="Condition",var="Empowered"},flags=1,keywordFlags=0,name="Damage",type="INC",value=8}},nil} -c["Empowered Attacks have 50% increased Stun Buildup"]={{}," Stun Buildup "} -c["Empowered Attacks have 50% increased Stun Buildup 100% increased Stun Threshold during Empowered Attacks"]={{[1]={[1]={type="Condition",var="Empowered"},[2]={type="Condition",var="Empowered"},flags=1,keywordFlags=0,name="StunThreshold",type="INC",value=50}}," Stun Buildup 100% increased "} +c["Empowered Attacks have 50% increased Stun Buildup"]={{[1]={[1]={type="Condition",var="Empowered"},flags=1,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=50}},nil} c["Enemies Blinded by you have 15% reduced Critical Hit Chance"]={{[1]={flags=0,keywordFlags=0,name="EnemyModifier",type="LIST",value={mod={[1]={type="Condition",var="Blinded"},flags=0,keywordFlags=0,name="CritChance",type="INC",value=-15}}}},nil} c["Enemies Blinded by you have 50% reduced Critical Hit Chance"]={{[1]={flags=0,keywordFlags=0,name="EnemyModifier",type="LIST",value={mod={[1]={type="Condition",var="Blinded"},flags=0,keywordFlags=0,name="CritChance",type="INC",value=-50}}}},nil} c["Enemies Chilled by your Hits can be Shattered as though Frozen"]={nil,"your Hits can be Shattered as though Frozen "} @@ -5291,8 +5246,8 @@ c["Other Modifiers to Movement Speed do not apply Other Modifiers to Movement Sp c["Pain Attunement"]={{[1]={flags=0,keywordFlags=0,name="Keystone",type="LIST",value="Pain Attunement"}},nil} c["Parried enemies take more Spell Damage instead of more Attack Damage"]={nil,"Parried enemies take more Spell Damage instead of more Attack Damage "} c["Parried enemies take more Spell Damage instead of more Attack Damage 100% increased Parried Debuff Duration"]={nil,"Parried enemies take more Spell Damage instead of more Attack Damage 100% increased Parried Debuff Duration "} -c["Parry has 20% increased Stun Buildup"]={{}," Stun Buildup "} -c["Parry has 25% increased Stun Buildup"]={{}," Stun Buildup "} +c["Parry has 20% increased Stun Buildup"]={{[1]={[1]={includeTransfigured=true,skillName="Parry",type="SkillName"},flags=0,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=20}},nil} +c["Parry has 25% increased Stun Buildup"]={{[1]={[1]={includeTransfigured=true,skillName="Parry",type="SkillName"},flags=0,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=25}},nil} c["Parrying applies 10 Stacks of Critical Weakness"]={nil,"Parrying applies 10 Stacks of Critical Weakness "} c["Parrying applies 10 Stacks of Critical Weakness 100% increased Parry Damage"]={nil,"Parrying applies 10 Stacks of Critical Weakness 100% increased Parry Damage "} c["Passives in Radius can be Allocated without being connected to your tree"]={{[1]={flags=0,keywordFlags=0,name="JewelData",type="LIST",value={key="intuitiveLeapLike",value=true}}},nil} diff --git a/src/Export/Scripts/miscdata.lua b/src/Export/Scripts/miscdata.lua index b5eac0568..a51e07b39 100644 --- a/src/Export/Scripts/miscdata.lua +++ b/src/Export/Scripts/miscdata.lua @@ -9,6 +9,7 @@ local allyDamage = "" local damage = "" local armour = "" local ailmentThreshold = "" +local poiseThreshold = "" local minionLevel = "" for stats in dat("DefaultMonsterStats"):Rows() do evasion = evasion .. stats.Evasion .. ", " @@ -19,6 +20,7 @@ for stats in dat("DefaultMonsterStats"):Rows() do allyDamage = allyDamage .. stats.MinionDamage .. ", " armour = armour .. stats.Armour .. ", " ailmentThreshold = ailmentThreshold .. stats.AilmentThreshold .. ", " + poiseThreshold = poiseThreshold .. stats.PoiseThreshold .. ", " end -- Table was incorrect is PoE 1 but seems to be correct for PoE 2. Keeping here just in case --for i = 1, 100 do @@ -33,6 +35,7 @@ out:write('data.monsterDamageTable = { '..damage..'}\n') out:write('data.monsterAllyDamageTable = { '..allyDamage..'}\n') out:write('data.monsterArmourTable = { '..armour..'}\n') out:write('data.monsterAilmentThresholdTable = { '..ailmentThreshold..'}\n') +out:write('data.monsterPoiseThresholdTable = { '..poiseThreshold..'}\n') out:write('\n') out:write('-- From MinionGemLevelScaling.dat\n') diff --git a/src/Modules/CalcOffence.lua b/src/Modules/CalcOffence.lua index ef402369f..f51f66ce2 100644 --- a/src/Modules/CalcOffence.lua +++ b/src/Modules/CalcOffence.lua @@ -4352,6 +4352,9 @@ function calcs.offence(env, actor, activeSkill) -- Calculate ailment thresholds local enemyThreshold = data.monsterAilmentThresholdTable[env.enemyLevel] * calcLib.mod(enemyDB, nil, "AilmentThreshold") output['EnemyAilmentThreshold'] = enemyThreshold + local enemyPoiseThreshold = data.monsterPoiseThresholdTable[env.enemyLevel] * calcLib.mod(enemyDB, nil, "PoiseThreshold") + output['EnemyPoiseThreshold'] = enemyPoiseThreshold + -- Calculate ailments and debuffs (poison, bleed, ignite, impale, exposure, etc) for _, pass in ipairs(passList) do @@ -4887,9 +4890,40 @@ function calcs.offence(env, actor, activeSkill) output["FreezeChanceOnHit"] = 0 output["FreezeChanceOnCrit"] = 0 skillFlags["inflictFreeze"] = false - output["ElectrocuteChanceOnHit"] = 0 - output["ElectrocuteChanceOnCrit"] = 0 skillFlags["inflictElectrocute"] = false + + + + + -- Calculate poise-related debuffs + for _, ailment in ipairs({"Freeze", "Electrocute", "HeavyStun"}) do + local damageTypes + if ailment == "HeavyStun" then + damageTypes = { DamageType = "Physical" } + else + damageTypes = data.defaultAilmentDamageTypes[ailment].ScalesFrom + end + local hitMin, hitMax, critMin, critMax = calcMinMaxUnmitigatedAilmentSourceDamage(ailment, damageTypes) + -- TODO: average for now, can do more complicated calculation later + local hitAvg = hitMin + (hitMax - hitMin) / 2 + local critAvg = critMin + (critMax - critMin) / 2 + local inc = skillModList:Sum("INC", cfg, "Enemy"..ailment.."Buildup") + local more = data.gameConstants[ailment .. "ThresholdModifier"] or 0 + local hitPoiseBuildup = hitAvg / enemyPoiseThreshold * data.gameConstants[ailment .. "DamageScale"] + hitPoiseBuildup = hitPoiseBuildup * (1 + inc / 100) * (1 + more / 100) + local critPoiseBuildup = critAvg / enemyPoiseThreshold * data.gameConstants[ailment .. "DamageScale"] + critPoiseBuildup = critPoiseBuildup * (1 + inc / 100) * (1 + more / 100) + + + + if skillFlags.hit and not skillModList:Flag(cfg, "Cannot"..ailment) then + output[ailment.."BuildupOnHit"] = m_min(100, hitPoiseBuildup) + output[ailment.."BuildupOnCrit"] = m_min(100, critPoiseBuildup) + else + output[ailment.."BuildupOnHit"] = 0 + output[ailment.."BuildupOnCrit"] = 0 + end + end -- Calculate scaling threshold ailment chance for _, ailment in ipairs({"Ignite", "Shock"}) do diff --git a/src/Modules/CalcSections.lua b/src/Modules/CalcSections.lua index 69321b5d7..fb35ad88a 100644 --- a/src/Modules/CalcSections.lua +++ b/src/Modules/CalcSections.lua @@ -1365,6 +1365,8 @@ return { { label = "Configured Sap", modName = "SapVal", enemy = true, modType = "BASE" }, { label = "Guaranteed Saps", modName = "SapOverride", modType = "BASE" }, }, }, + { label = "Electrocute Build-up", { format = "{0:output:ElectrocuteBuildupOnHit}%", { modName = "ElectrocuteBuildupOnHit" }, }, }, + { label = "Poise", { format = "{0:output:EnemyPoiseThreshold}", { modName = "EnemyPoiseThreshold" }, }, }, } } } }, { 1, "MiscEffects", 1, colorCodes.OFFENCE, {{ defaultCollapsed = false, label = "Other Effects", data = { @@ -1828,7 +1830,7 @@ return { { label = "Weap. Swap Speed", { format = "{0:output:WeaponSwapSpeed} ms", { breakdown = "WeaponSwapSpeedMod" }, { modName = { "WeaponSwapSpeed" } }, }, }, } }, { defaultCollapsed = false, label = "Stun Duration", data = { { label = "Stun Avoid Chance", haveOutput = "StunAvoidChance", { format = "{0:output:StunAvoidChance}%", { breakdown = "StunAvoidChance" }, { modName = "AvoidStun" }, }, }, - { label = "Stun Threshold", { format = "{0:output:StunThreshold}", { breakdown = "StunThreshold" }, { modName = { "StunThreshold", "StunThresholdManaPercent", "StunThresholdEnergyShieldPercent" } }, }, }, + { label = "Stun Threshold", { format = "{ 0:output:StunThreshold}", { breakdown = "StunThreshold" }, { modName = { "StunThreshold", "StunThresholdManaPercent", "StunThresholdEnergyShieldPercent" } }, }, }, { label = "Stun Chance", { format = "{0:output:SelfStunChance}%", { breakdown = "SelfStunChance" }, }, }, { label = "Interrupt Avoid Ch.", haveOutput = "InterruptStunAvoidChance", { format = "{0:output:InterruptStunAvoidChance}%", { modName = "AvoidInterruptStun" }, }, }, { label = "Stun Duration", { format = "{2:output:StunDuration}s", diff --git a/src/Modules/CalcSetup.lua b/src/Modules/CalcSetup.lua index b4e803f06..ede728603 100644 --- a/src/Modules/CalcSetup.lua +++ b/src/Modules/CalcSetup.lua @@ -61,6 +61,7 @@ function calcs.initModDB(env, modDB) modDB:NewMod("MovementSpeed", "INC", -30, "Base", { type = "Condition", var = "Maimed" }) modDB:NewMod("Evasion", "INC", -15, "Base", { type = "Condition", var = "Maimed" }) modDB:NewMod("AilmentThreshold", "BASE", 50, "Base", { type = "PercentStat", stat = "Life", percent = 1 }) + modDB:NewMod("PoiseThreshold", "BASE", 50, "Base", { type = "PercentStat", stat = "Life", percent = 1 }) modDB:NewMod("DamageTaken", "INC", 10, "Base", { type = "Condition", var = "Intimidated"}) modDB:NewMod("DamageTaken", "INC", 10, "Base", { type = "Condition", var = "Intimidated", neg = true}, { type = "Condition", var = "Party:Intimidated"}) modDB:NewMod("Damage", "INC", -10, "Base", { type = "Condition", var = "Intimidated"}) diff --git a/src/Modules/ConfigOptions.lua b/src/Modules/ConfigOptions.lua index 166897baf..eb04fd929 100644 --- a/src/Modules/ConfigOptions.lua +++ b/src/Modules/ConfigOptions.lua @@ -1913,6 +1913,10 @@ Huge sets the radius to 11. enemyModList:NewMod("Condition:Unique", "FLAG", true, "Config", { type = "Condition", var = "Effective" }) enemyModList:NewMod("Condition:RareOrUnique", "FLAG", true, "Config", { type = "Condition", var = "Effective" }) enemyModList:NewMod("CurseEffectOnSelf", "INC", -50, "Unique", { type = "Condition", var = "Effective" }) + for _, ailment in ipairs({"Freeze", "Electrocute", "HeavyStun"}) do + local mod = data.gameConstants[ailment .. "ThresholdModifier"] + enemyModList:NewMod("Enemy" .. ailment .. "Buildup", "More", mod, "Unique", { type = "Condition", var = "Effective" }) + end modList:NewMod("WarcryPower", "BASE", 20, "Boss") modList:NewMod("Multiplier:EnemyPower", "BASE", 20, "Boss") @@ -1949,6 +1953,10 @@ Huge sets the radius to 11. enemyModList:NewMod("Condition:RareOrUnique", "FLAG", true, "Config", { type = "Condition", var = "Effective" }) enemyModList:NewMod("Condition:PinnacleBoss", "FLAG", true, "Config", { type = "Condition", var = "Effective" }) enemyModList:NewMod("CurseEffectOnSelf", "INC", -50, "Unique", { type = "Condition", var = "Effective" }) + for _, ailment in ipairs({"Freeze", "Electrocute", "HeavyStun"}) do + local mod = data.gameConstants[ailment .. "ThresholdModifier"] + enemyModList:NewMod("Enemy" .. ailment .. "Buildup", "More", mod, "Unique", { type = "Condition", var = "Effective" }) + end modList:NewMod("WarcryPower", "BASE", 20, "Boss") modList:NewMod("Multiplier:EnemyPower", "BASE", 20, "Boss") @@ -1984,6 +1992,10 @@ Huge sets the radius to 11. enemyModList:NewMod("Condition:PinnacleBoss", "FLAG", true, "Config", { type = "Condition", var = "Effective" }) enemyModList:NewMod("CurseEffectOnSelf", "INC", -50, "Unique", { type = "Condition", var = "Effective" }) enemyModList:NewMod("DamageTaken", "MORE", -70, "Boss") + for _, ailment in ipairs({"Freeze", "Electrocute", "HeavyStun"}) do + local mod = data.gameConstants[ailment .. "ThresholdModifier"] + enemyModList:NewMod("Enemy" .. ailment .. "Buildup", "More", mod, "Unique", { type = "Condition", var = "Effective" }) + end modList:NewMod("WarcryPower", "BASE", 20, "Boss") modList:NewMod("Multiplier:EnemyPower", "BASE", 20, "Boss") diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index b6fee1557..00ba05fd4 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -834,6 +834,10 @@ local modNameList = { -- Other negative effects ["to daze"] = "DazeChance", ["to inflict daze"] = "DazeChance", + -- Build-up effects + ["electrocute buildup"] = "EnemyElectrocuteBuildup", + ["stun buildup"] = "EnemyStunBuildup", + ["freeze buildup"] = "EnemyFreezeBuildup", -- Misc modifiers ["movement speed"] = "MovementSpeed", ["attack, cast and movement speed"] = { "Speed", "MovementSpeed" }, From 1e539f4de8f814bee500ee64471a49f07a2de844 Mon Sep 17 00:00:00 2001 From: Simon Date: Mon, 15 Sep 2025 19:25:29 +0200 Subject: [PATCH 02/23] Add pin buildup Add data table Clean up code --- src/Data/ModCache.lua | 14 ++++++-------- src/Modules/CalcOffence.lua | 10 ++-------- src/Modules/Data.lua | 23 +++++++++++++++++++++++ src/Modules/ModParser.lua | 1 + 4 files changed, 32 insertions(+), 16 deletions(-) diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index 69b9dd182..d2fdb6eb9 100644 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -1322,8 +1322,8 @@ c["12% increased Spell Damage if you have consumed an Elemental Infusion Recentl c["12% increased Spell Damage per 10 Spirit"]={{[1]={[1]={div=10,stat="Spirit",type="PerStat"},flags=2,keywordFlags=0,name="Damage",type="INC",value=12}},nil} c["12% increased Spell Damage while on Full Energy Shield"]={{[1]={[1]={type="Condition",var="FullEnergyShield"},flags=2,keywordFlags=0,name="Damage",type="INC",value=12}},nil} c["12% increased Spell Damage while wielding a Melee Weapon"]={{[1]={[1]={type="Condition",var="UsingMeleeWeapon"},flags=2,keywordFlags=0,name="Damage",type="INC",value=12}},nil} -c["12% increased Stun Buildup 10% increased Damage with Maces"]={{[1]={flags=1048580,keywordFlags=0,name="Damage",type="INC",value=12}}," Stun Buildup 10% increased "} -c["12% increased Stun Buildup Gain additional Stun Threshold equal to 10% of maximum Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=12}}," Stun Buildup Gain additional equal to 10% of maximum Energy Shield "} +c["12% increased Spell Damage with Spells that cost Life"]={{[1]={[1]={stat="LifeCost",threshold=1,type="StatThreshold"},flags=2,keywordFlags=131072,name="Damage",type="INC",value=12}},nil} +c["12% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=12}},nil} c["12% increased Stun Threshold"]={{[1]={flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=12}},nil} c["12% increased Stun Threshold if you haven't been Stunned Recently"]={{[1]={[1]={neg=true,type="Condition",var="StunnedRecently"},flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=12}},nil} c["12% increased Thorns damage"]={{[1]={flags=0,keywordFlags=0,name="ThornsDamage",type="INC",value=12}},nil} @@ -1497,7 +1497,7 @@ c["15% increased Melee Damage with Hits at Close Range"]={{[1]={[1]={type="Condi c["15% increased Minion Duration"]={{[1]={[1]={skillType=77,type="SkillType"},flags=0,keywordFlags=0,name="Duration",type="INC",value=15}},nil} c["15% increased Movement Speed"]={{[1]={flags=0,keywordFlags=0,name="MovementSpeed",type="INC",value=15}},nil} c["15% increased Parried Debuff Duration"]={{[1]={flags=0,keywordFlags=0,name="Duration",type="INC",value=15}}," Parried Debuff "} -c["15% increased Pin Buildup"]={{}," Pin Buildup "} +c["15% increased Pin Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyPinBuildup",type="INC",value=15}},nil} c["15% increased Pin duration"]={{[1]={flags=0,keywordFlags=0,name="Duration",type="INC",value=15}}," Pin "} c["15% increased Poison Duration"]={{[1]={flags=0,keywordFlags=0,name="EnemyPoisonDuration",type="INC",value=15}},nil} c["15% increased Presence Area of Effect"]={{[1]={flags=0,keywordFlags=0,name="PresenceArea",type="INC",value=15}},nil} @@ -1649,7 +1649,7 @@ c["2% increased Movement Speed"]={{[1]={flags=0,keywordFlags=0,name="MovementSpe c["2% increased Movement Speed while Sprinting"]={{[1]={[1]={type="Condition",var="Sprinting"},flags=0,keywordFlags=0,name="MovementSpeed",type="INC",value=2}},nil} c["2% increased Parried Debuff Duration per 10 Tribute"]={{[1]={[1]={actor="parent",div=10,stat="Tribute",type="PerStat"},flags=0,keywordFlags=0,name="Duration",type="INC",value=2}}," Parried Debuff "} c["2% increased Spirit per socketed Grand Spectrum"]={{[1]={[1]={type="Multiplier",var="GrandSpectrum"},flags=0,keywordFlags=0,name="Spirit",type="INC",value=2}},nil} -c["2% increased Stun Buildup per 10 Tribute"]={{}," Stun Buildup "} +c["2% increased Stun Buildup per 10 Tribute"]={{[1]={[1]={actor="parent",div=10,stat="Tribute",type="PerStat"},flags=0,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=2}},nil} c["2% increased Thorns damage per 10 Tribute"]={{[1]={[1]={actor="parent",div=10,stat="Tribute",type="PerStat"},flags=0,keywordFlags=0,name="ThornsDamage",type="INC",value=2}},nil} c["2% increased maximum Life"]={{[1]={flags=0,keywordFlags=0,name="Life",type="INC",value=2}},nil} c["2% increased maximum Mana"]={{[1]={flags=0,keywordFlags=0,name="Mana",type="INC",value=2}},nil} @@ -1807,7 +1807,7 @@ c["20% increased Parried Debuff Duration"]={{[1]={flags=0,keywordFlags=0,name="D c["20% increased Parry Damage"]={{[1]={[1]={includeTransfigured=true,skillName="Parry",type="SkillName"},flags=0,keywordFlags=0,name="Damage",type="INC",value=20}},nil} c["20% increased Parry Range"]={{[1]={[1]={includeTransfigured=true,skillName="Parry",type="SkillName"},flags=0,keywordFlags=0,name="WeaponRange",type="INC",value=20}},nil} c["20% increased Physical Damage"]={{[1]={flags=0,keywordFlags=0,name="PhysicalDamage",type="INC",value=20}},nil} -c["20% increased Pin Buildup"]={{}," Pin Buildup "} +c["20% increased Pin Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyPinBuildup",type="INC",value=20}},nil} c["20% increased Pin duration"]={{[1]={flags=0,keywordFlags=0,name="Duration",type="INC",value=20}}," Pin "} c["20% increased Pin duration Pinned Enemies cannot deal Critical Hits"]={{[1]={flags=0,keywordFlags=0,name="Duration",type="INC",value=20}}," Pin Pinned Enemies cannot deal Critical Hits "} c["20% increased Poison Duration"]={{[1]={flags=0,keywordFlags=0,name="EnemyPoisonDuration",type="INC",value=20}},nil} @@ -2279,9 +2279,7 @@ c["30% increased Movement Speed"]={{[1]={flags=0,keywordFlags=0,name="MovementSp c["30% increased Parried Debuff Magnitude"]={{}," Parried Debuff Magnitude "} c["30% increased Parry Damage"]={{[1]={[1]={includeTransfigured=true,skillName="Parry",type="SkillName"},flags=0,keywordFlags=0,name="Damage",type="INC",value=30}},nil} c["30% increased Parry Range"]={{[1]={[1]={includeTransfigured=true,skillName="Parry",type="SkillName"},flags=0,keywordFlags=0,name="WeaponRange",type="INC",value=30}},nil} -c["30% increased Pin Buildup"]={{}," Pin Buildup "} -c["30% increased Pin Buildup 5% increased Movement Speed if you've Pinned an Enemy Recently"]={{[1]={[1]={type="Condition",var="PinnedEnemyRecently"},flags=0,keywordFlags=0,name="MovementSpeed",type="INC",value=30}}," Pin Buildup 5% increased "} -c["30% increased Pin Buildup Bleeding you inflict on Pinned Enemies is Aggravated"]={{}," Pin Buildup Bleeding you inflict on Pinned Enemies is Aggravated "} +c["30% increased Pin Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyPinBuildup",type="INC",value=30}},nil} c["30% increased Presence Area of Effect"]={{[1]={flags=0,keywordFlags=0,name="PresenceArea",type="INC",value=30}},nil} c["30% increased Projectile Damage if you've dealt a Melee Hit in the past eight seconds"]={{[1]={[1]={type="Condition",var="HitMeleeRecently"},flags=1024,keywordFlags=0,name="Damage",type="INC",value=30}},nil} c["30% increased Projectile Speed"]={{[1]={flags=0,keywordFlags=0,name="ProjectileSpeed",type="INC",value=30}},nil} diff --git a/src/Modules/CalcOffence.lua b/src/Modules/CalcOffence.lua index f51f66ce2..b4c62cdf7 100644 --- a/src/Modules/CalcOffence.lua +++ b/src/Modules/CalcOffence.lua @@ -4896,14 +4896,8 @@ function calcs.offence(env, actor, activeSkill) -- Calculate poise-related debuffs - for _, ailment in ipairs({"Freeze", "Electrocute", "HeavyStun"}) do - local damageTypes - if ailment == "HeavyStun" then - damageTypes = { DamageType = "Physical" } - else - damageTypes = data.defaultAilmentDamageTypes[ailment].ScalesFrom - end - local hitMin, hitMax, critMin, critMax = calcMinMaxUnmitigatedAilmentSourceDamage(ailment, damageTypes) + for _, ailment in ipairs({"Freeze", "Electrocute", "HeavyStun", "Pin"}) do + local hitMin, hitMax, critMin, critMax = calcMinMaxUnmitigatedAilmentSourceDamage(ailment, data.buildupTypes[ailment].ScalesFrom) -- TODO: average for now, can do more complicated calculation later local hitAvg = hitMin + (hitMax - hitMin) / 2 local critAvg = critMin + (critMax - critMin) / 2 diff --git a/src/Modules/Data.lua b/src/Modules/Data.lua index 24da073fc..990b1e7e0 100644 --- a/src/Modules/Data.lua +++ b/src/Modules/Data.lua @@ -342,6 +342,29 @@ data.nonDamagingAilment = { ["Shock"] = { associatedType = "Lightning", alt = false, default = 20, min = 20, max = 100, precision = 0, duration = data.gameConstants["BaseShockDuration"] }, } +data.buildupTypes = { + ["Electrocute"] = { + ["ScalesFrom"] = { + ["Lightning"] = true, + } + }, + ["Freeze"] = { + ["ScalesFrom"] = { + ["Cold"] = true, + } + }, + ["HeavyStun"] = { + ["ScalesFrom"] = { + ["Physical"] = true, + } + }, + ["Pin"] = { + ["ScalesFrom"] = { + ["Physical"] = true, + } + }, +} + data.defaultAilmentDamageTypes = { -- damaging ["Bleed"] = { diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index 00ba05fd4..381dee54c 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -838,6 +838,7 @@ local modNameList = { ["electrocute buildup"] = "EnemyElectrocuteBuildup", ["stun buildup"] = "EnemyStunBuildup", ["freeze buildup"] = "EnemyFreezeBuildup", + ["pin buildup"] = "EnemyPinBuildup", -- Misc modifiers ["movement speed"] = "MovementSpeed", ["attack, cast and movement speed"] = { "Speed", "MovementSpeed" }, From 0bdcf89ee34b0d0611c80308985459955bd9b1ee Mon Sep 17 00:00:00 2001 From: Simon Date: Mon, 15 Sep 2025 23:59:46 +0200 Subject: [PATCH 03/23] Add breakdown for buildup Add breakdown support in CalcOffense --- src/Modules/CalcOffence.lua | 45 +++++++++++++++++++++++++++++++----- src/Modules/CalcSections.lua | 6 +++-- 2 files changed, 43 insertions(+), 8 deletions(-) diff --git a/src/Modules/CalcOffence.lua b/src/Modules/CalcOffence.lua index b4c62cdf7..fa7c90e8e 100644 --- a/src/Modules/CalcOffence.lua +++ b/src/Modules/CalcOffence.lua @@ -4892,8 +4892,16 @@ function calcs.offence(env, actor, activeSkill) skillFlags["inflictFreeze"] = false skillFlags["inflictElectrocute"] = false - - + -- Poise breakdown + if breakdown then + breakdown.Buildup = { + "Enemy level: " .. env.enemyLevel .. (env.configInput.enemyLevel and " ^8(overridden from the Configuration tab" or " ^8(can be overridden in the Configuration tab)"), + "Enemy poise: " .. enemyPoiseThreshold, + "", + "Expected buildup:", + } + output["MaxBuildup"] = 0 + end -- Calculate poise-related debuffs for _, ailment in ipairs({"Freeze", "Electrocute", "HeavyStun", "Pin"}) do @@ -4908,17 +4916,42 @@ function calcs.offence(env, actor, activeSkill) local critPoiseBuildup = critAvg / enemyPoiseThreshold * data.gameConstants[ailment .. "DamageScale"] critPoiseBuildup = critPoiseBuildup * (1 + inc / 100) * (1 + more / 100) + + if skillFlags.hit and not skillModList:Flag(cfg, "Cannot"..ailment) then - output[ailment.."BuildupOnHit"] = m_min(100, hitPoiseBuildup) - output[ailment.."BuildupOnCrit"] = m_min(100, critPoiseBuildup) + output[ailment .. "BuildupOnHit"] = m_min(100, hitPoiseBuildup) + output[ailment .. "BuildupOnCrit"] = m_min(100, critPoiseBuildup) else - output[ailment.."BuildupOnHit"] = 0 - output[ailment.."BuildupOnCrit"] = 0 + output[ailment .. "BuildupOnHit"] = 0 + output[ailment .. "BuildupOnCrit"] = 0 + end + + if breakdown then + local displayedAilment = ailment + if ailment == "HeavyStun" then + displayedAilment = "Heavy Stun" + end + local displayValue + if output[ailment .. "BuildupOnHit"] == 0 then + displayValue = "0" + else + displayValue = s_format("%.1f", output[ailment .. "BuildupOnHit"] * 100) + end + t_insert(breakdown.Buildup, displayedAilment .. ": " .. displayValue .. "%" ) + + if output[ailment .. "BuildupOnHit"] > output["MaxBuildup"] then + output["MaxBuildup"] = output[ailment .. "BuildupOnHit"] + end end end + if breakdown then + output["MaxBuildup"] = output["MaxBuildup"] * 100 + end + + -- Calculate scaling threshold ailment chance for _, ailment in ipairs({"Ignite", "Shock"}) do local hitMin, hitMax, critMin, critMax = calcMinMaxUnmitigatedAilmentSourceDamage(ailment, data.defaultAilmentDamageTypes[ailment]["ScalesFrom"]) diff --git a/src/Modules/CalcSections.lua b/src/Modules/CalcSections.lua index fb35ad88a..4bcb4706d 100644 --- a/src/Modules/CalcSections.lua +++ b/src/Modules/CalcSections.lua @@ -1365,8 +1365,10 @@ return { { label = "Configured Sap", modName = "SapVal", enemy = true, modType = "BASE" }, { label = "Guaranteed Saps", modName = "SapOverride", modType = "BASE" }, }, }, - { label = "Electrocute Build-up", { format = "{0:output:ElectrocuteBuildupOnHit}%", { modName = "ElectrocuteBuildupOnHit" }, }, }, - { label = "Poise", { format = "{0:output:EnemyPoiseThreshold}", { modName = "EnemyPoiseThreshold" }, }, }, + { label = "Buildup", { format = "{1:output:MaxBuildup}%", + { breakdown = "Buildup" }, + { label = "Player modifiers", modName = { "EnemyElectrocuteBuildup", "EnemyFreezeBuildup", "EnemyHeavyStunBuildup", "EnemyPinBuildup" } }, + }, }, } } } }, { 1, "MiscEffects", 1, colorCodes.OFFENCE, {{ defaultCollapsed = false, label = "Other Effects", data = { From 22cd1f569ac3cfad08a6f6ffbd6ab6bb6f799ef8 Mon Sep 17 00:00:00 2001 From: ImmotephSimon Date: Tue, 16 Sep 2025 00:20:32 +0200 Subject: [PATCH 04/23] Add all damage types to stun in data --- src/Modules/Data.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Modules/Data.lua b/src/Modules/Data.lua index 990b1e7e0..0aa8eb38e 100644 --- a/src/Modules/Data.lua +++ b/src/Modules/Data.lua @@ -356,6 +356,10 @@ data.buildupTypes = { ["HeavyStun"] = { ["ScalesFrom"] = { ["Physical"] = true, + ["Fire"] = true, + ["Cold"] = true, + ["Lightning"] = true, + ["Chaos"] = true, } }, ["Pin"] = { From 76c3c7d1eed016d6a3c2f356705b1d3e264f0c06 Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Wed, 17 Sep 2025 22:45:11 +1000 Subject: [PATCH 05/23] Fix Poise Threshold + Misc.lua --- src/Data/Misc.lua | 47 +++++++++++++++++++++++++++++++++++ src/Modules/ConfigOptions.lua | 18 +++++--------- 2 files changed, 53 insertions(+), 12 deletions(-) diff --git a/src/Data/Misc.lua b/src/Data/Misc.lua index 1a7a79f63..c91318f76 100644 --- a/src/Data/Misc.lua +++ b/src/Data/Misc.lua @@ -313,3 +313,50 @@ data.monsterVarietyLifeMult = { } -- From MonsterMapDifficulty.dat data.mapLevelLifeMult = { [66] = 1, [67] = 1, [68] = 1, [69] = 1, [70] = 1, [71] = 1, [72] = 1, [73] = 1, [74] = 1, [75] = 1, [76] = 1, [77] = 1, [78] = 1, [79] = 1, [80] = 1, [81] = 1, [82] = 1, [83] = 1, [84] = 1, [85] = 1, [86] = 1, [87] = 1, [88] = 1, [89] = 1, [90] = 1, } +-- From MonsterMapBossDifficulty.dat +data.mapLevelBossLifeMult = { [1] = 1, [2] = 1, [3] = 1, [4] = 1, [5] = 1, [6] = 1, [7] = 1, [8] = 1, [9] = 1, [10] = 1, [11] = 1, [12] = 1, [13] = 1, [14] = 1, [15] = 1, [16] = 1, [17] = 1, [18] = 1, [19] = 1, [20] = 1, [21] = 1, [22] = 1, [23] = 1, [24] = 1, [25] = 1, [26] = 1, [27] = 1, [28] = 1, [29] = 1, [30] = 1, [31] = 1, [32] = 1, [33] = 1, [34] = 1, [35] = 1, [36] = 1, [37] = 1, [38] = 1, [39] = 1, [40] = 1, [41] = 1, [42] = 1, [43] = 1, [44] = 1, [45] = 1, [46] = 1, [47] = 1, [48] = 1, [49] = 1, [50] = 1, [51] = 1, [52] = 1, [53] = 1, [54] = 1, [55] = 1, [56] = 1, [57] = 1, [58] = 1, [59] = 1, [60] = 1, [61] = 1, [62] = 1, [63] = 1, [64] = 1, [65] = 1, [66] = 1, [67] = 1, [68] = 1, [69] = 1, [70] = 1, [71] = 1, [72] = 1, [73] = 1, [74] = 1, [75] = 1, [76] = 1, [77] = 1, [78] = 1, [79] = 1, [80] = 1, [81] = 1, [82] = 1, [83] = 1, [84] = 1, [85] = 1, [86] = 1, [87] = 1, [88] = 1, [89] = 1, [90] = 1, } +data.mapLevelBossAilmentMult = { [1] = 1, [2] = 1, [3] = 1, [4] = 1, [5] = 1, [6] = 1, [7] = 1, [8] = 1, [9] = 1, [10] = 1, [11] = 1, [12] = 1, [13] = 1, [14] = 1, [15] = 1, [16] = 1, [17] = 1, [18] = 1, [19] = 1, [20] = 1, [21] = 1, [22] = 1, [23] = 1, [24] = 1, [25] = 1, [26] = 1, [27] = 1, [28] = 1, [29] = 1, [30] = 1, [31] = 1, [32] = 1, [33] = 1, [34] = 1, [35] = 1, [36] = 1, [37] = 1, [38] = 1, [39] = 1, [40] = 1, [41] = 1, [42] = 1, [43] = 1, [44] = 1, [45] = 1, [46] = 1, [47] = 1, [48] = 1, [49] = 1, [50] = 1, [51] = 1, [52] = 1, [53] = 1, [54] = 1, [55] = 1, [56] = 1, [57] = 1, [58] = 1, [59] = 1, [60] = 1, [61] = 1, [62] = 1, [63] = 1, [64] = 1, [65] = 1, [66] = 1, [67] = 1, [68] = 1, [69] = 1, [70] = 1, [71] = 1, [72] = 1, [73] = 1, [74] = 1, [75] = 1, [76] = 1, [77] = 1, [78] = 1, [79] = 1, [80] = 1, [81] = 1, [82] = 1, [83] = 1, [84] = 1, [85] = 1, [86] = 1, [87] = 1, [88] = 1, [89] = 1, [90] = 1, } + +-- From FlatPhysicalDamageValues.dat +data.hollowPalmAddedPhys = { + [1] = { 11, 17 }, + [2] = { 18, 27 }, + [3] = { 27, 41 }, + [4] = { 37, 55 }, + [5] = { 47, 70 }, + [6] = { 57, 86 }, + [7] = { 67, 100 }, + [8] = { 78, 117 }, + [9] = { 88, 132 }, + [10] = { 99, 148 }, + [11] = { 109, 164 }, + [12] = { 114, 171 }, + [13] = { 118, 177 }, + [14] = { 128, 192 }, + [15] = { 138, 207 }, + [16] = { 146, 219 }, + [17] = { 155, 233 }, + [18] = { 164, 245 }, + [19] = { 172, 258 }, + [20] = { 180, 270 }, + [21] = { 187, 281 }, + [22] = { 194, 291 }, + [23] = { 200, 300 }, + [24] = { 207, 310 }, + [25] = { 213, 320 }, + [26] = { 219, 329 }, + [27] = { 226, 339 }, + [28] = { 232, 348 }, + [29] = { 239, 358 }, + [30] = { 245, 367 }, + [31] = { 251, 377 }, + [32] = { 258, 387 }, + [33] = { 264, 396 }, + [34] = { 270, 405 }, + [35] = { 276, 415 }, + [36] = { 283, 424 }, + [37] = { 289, 434 }, + [38] = { 295, 443 }, + [39] = { 302, 452 }, + [40] = { 308, 462 }, +} diff --git a/src/Modules/ConfigOptions.lua b/src/Modules/ConfigOptions.lua index eb04fd929..633d4f587 100644 --- a/src/Modules/ConfigOptions.lua +++ b/src/Modules/ConfigOptions.lua @@ -1913,10 +1913,8 @@ Huge sets the radius to 11. enemyModList:NewMod("Condition:Unique", "FLAG", true, "Config", { type = "Condition", var = "Effective" }) enemyModList:NewMod("Condition:RareOrUnique", "FLAG", true, "Config", { type = "Condition", var = "Effective" }) enemyModList:NewMod("CurseEffectOnSelf", "INC", -50, "Unique", { type = "Condition", var = "Effective" }) - for _, ailment in ipairs({"Freeze", "Electrocute", "HeavyStun"}) do - local mod = data.gameConstants[ailment .. "ThresholdModifier"] - enemyModList:NewMod("Enemy" .. ailment .. "Buildup", "More", mod, "Unique", { type = "Condition", var = "Effective" }) - end + enemyModList:NewMod("PoiseThreshold", "MORE", 500, "Unique", { type = "Condition", var = "Effective" }) + enemyModList:NewMod("PoiseThreshold", "MORE", 310, "Map Boss", { type = "Condition", var = "Effective" }) modList:NewMod("WarcryPower", "BASE", 20, "Boss") modList:NewMod("Multiplier:EnemyPower", "BASE", 20, "Boss") @@ -1953,10 +1951,8 @@ Huge sets the radius to 11. enemyModList:NewMod("Condition:RareOrUnique", "FLAG", true, "Config", { type = "Condition", var = "Effective" }) enemyModList:NewMod("Condition:PinnacleBoss", "FLAG", true, "Config", { type = "Condition", var = "Effective" }) enemyModList:NewMod("CurseEffectOnSelf", "INC", -50, "Unique", { type = "Condition", var = "Effective" }) - for _, ailment in ipairs({"Freeze", "Electrocute", "HeavyStun"}) do - local mod = data.gameConstants[ailment .. "ThresholdModifier"] - enemyModList:NewMod("Enemy" .. ailment .. "Buildup", "More", mod, "Unique", { type = "Condition", var = "Effective" }) - end + enemyModList:NewMod("PoiseThreshold", "MORE", 500, "Unique", { type = "Condition", var = "Effective" }) + enemyModList:NewMod("PoiseThreshold", "MORE", 938, "Xesht", { type = "Condition", var = "Effective" }) modList:NewMod("WarcryPower", "BASE", 20, "Boss") modList:NewMod("Multiplier:EnemyPower", "BASE", 20, "Boss") @@ -1992,10 +1988,8 @@ Huge sets the radius to 11. enemyModList:NewMod("Condition:PinnacleBoss", "FLAG", true, "Config", { type = "Condition", var = "Effective" }) enemyModList:NewMod("CurseEffectOnSelf", "INC", -50, "Unique", { type = "Condition", var = "Effective" }) enemyModList:NewMod("DamageTaken", "MORE", -70, "Boss") - for _, ailment in ipairs({"Freeze", "Electrocute", "HeavyStun"}) do - local mod = data.gameConstants[ailment .. "ThresholdModifier"] - enemyModList:NewMod("Enemy" .. ailment .. "Buildup", "More", mod, "Unique", { type = "Condition", var = "Effective" }) - end + enemyModList:NewMod("PoiseThreshold", "MORE", 500, "Unique", { type = "Condition", var = "Effective" }) + enemyModList:NewMod("PoiseThreshold", "MORE", 938, "Xesht", { type = "Condition", var = "Effective" }) modList:NewMod("WarcryPower", "BASE", 20, "Boss") modList:NewMod("Multiplier:EnemyPower", "BASE", 20, "Boss") From 08fcf512f460272a04044bbf9584b6d7870fff0b Mon Sep 17 00:00:00 2001 From: ImmotephSimon Date: Wed, 17 Sep 2025 14:47:43 +0200 Subject: [PATCH 06/23] Redo removed export --- src/Data/Misc.lua | 49 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/src/Data/Misc.lua b/src/Data/Misc.lua index 1a7a79f63..3f8d31df0 100644 --- a/src/Data/Misc.lua +++ b/src/Data/Misc.lua @@ -219,10 +219,10 @@ data.characterConstants = { ["branching_fissure_placement_along_main_fissure_variance_%"] = 5, ["branching_fissure_min_branch_angle"] = 40, ["branching_fissure_max_branch_angle"] = 80, - ["dodge_roll_sprint_minimum_time_ms"] = 100, ["dodge_roll_sprint_turn_rate"] = 150, ["sprint_movement_speed_+%"] = 50, ["sprint_end_stun_linger_duration_ms"] = 200, + ["dodge_roll_sprint_minimum_time_ms"] = 500, ["base_speed"] = 37, } -- From Metadata/Monsters/Monster.ot @@ -313,3 +313,50 @@ data.monsterVarietyLifeMult = { } -- From MonsterMapDifficulty.dat data.mapLevelLifeMult = { [66] = 1, [67] = 1, [68] = 1, [69] = 1, [70] = 1, [71] = 1, [72] = 1, [73] = 1, [74] = 1, [75] = 1, [76] = 1, [77] = 1, [78] = 1, [79] = 1, [80] = 1, [81] = 1, [82] = 1, [83] = 1, [84] = 1, [85] = 1, [86] = 1, [87] = 1, [88] = 1, [89] = 1, [90] = 1, } +-- From MonsterMapBossDifficulty.dat +data.mapLevelBossLifeMult = { [1] = 1, [2] = 1, [3] = 1, [4] = 1, [5] = 1, [6] = 1, [7] = 1, [8] = 1, [9] = 1, [10] = 1, [11] = 1, [12] = 1, [13] = 1, [14] = 1, [15] = 1, [16] = 1, [17] = 1, [18] = 1, [19] = 1, [20] = 1, [21] = 1, [22] = 1, [23] = 1, [24] = 1, [25] = 1, [26] = 1, [27] = 1, [28] = 1, [29] = 1, [30] = 1, [31] = 1, [32] = 1, [33] = 1, [34] = 1, [35] = 1, [36] = 1, [37] = 1, [38] = 1, [39] = 1, [40] = 1, [41] = 1, [42] = 1, [43] = 1, [44] = 1, [45] = 1, [46] = 1, [47] = 1, [48] = 1, [49] = 1, [50] = 1, [51] = 1, [52] = 1, [53] = 1, [54] = 1, [55] = 1, [56] = 1, [57] = 1, [58] = 1, [59] = 1, [60] = 1, [61] = 1, [62] = 1, [63] = 1, [64] = 1, [65] = 1, [66] = 1, [67] = 1, [68] = 1, [69] = 1, [70] = 1, [71] = 1, [72] = 1, [73] = 1, [74] = 1, [75] = 1, [76] = 1, [77] = 1, [78] = 1, [79] = 1, [80] = 1, [81] = 1, [82] = 1, [83] = 1, [84] = 1, [85] = 1, [86] = 1, [87] = 1, [88] = 1, [89] = 1, [90] = 1, } +data.mapLevelBossAilmentMult = { [1] = 1, [2] = 1, [3] = 1, [4] = 1, [5] = 1, [6] = 1, [7] = 1, [8] = 1, [9] = 1, [10] = 1, [11] = 1, [12] = 1, [13] = 1, [14] = 1, [15] = 1, [16] = 1, [17] = 1, [18] = 1, [19] = 1, [20] = 1, [21] = 1, [22] = 1, [23] = 1, [24] = 1, [25] = 1, [26] = 1, [27] = 1, [28] = 1, [29] = 1, [30] = 1, [31] = 1, [32] = 1, [33] = 1, [34] = 1, [35] = 1, [36] = 1, [37] = 1, [38] = 1, [39] = 1, [40] = 1, [41] = 1, [42] = 1, [43] = 1, [44] = 1, [45] = 1, [46] = 1, [47] = 1, [48] = 1, [49] = 1, [50] = 1, [51] = 1, [52] = 1, [53] = 1, [54] = 1, [55] = 1, [56] = 1, [57] = 1, [58] = 1, [59] = 1, [60] = 1, [61] = 1, [62] = 1, [63] = 1, [64] = 1, [65] = 1, [66] = 1, [67] = 1, [68] = 1, [69] = 1, [70] = 1, [71] = 1, [72] = 1, [73] = 1, [74] = 1, [75] = 1, [76] = 1, [77] = 1, [78] = 1, [79] = 1, [80] = 1, [81] = 1, [82] = 1, [83] = 1, [84] = 1, [85] = 1, [86] = 1, [87] = 1, [88] = 1, [89] = 1, [90] = 1, } + +-- From FlatPhysicalDamageValues.dat +data.hollowPalmAddedPhys = { + [1] = { 11, 17 }, + [2] = { 18, 27 }, + [3] = { 27, 41 }, + [4] = { 37, 55 }, + [5] = { 47, 70 }, + [6] = { 57, 86 }, + [7] = { 67, 100 }, + [8] = { 78, 117 }, + [9] = { 88, 132 }, + [10] = { 99, 148 }, + [11] = { 109, 164 }, + [12] = { 114, 171 }, + [13] = { 118, 177 }, + [14] = { 128, 192 }, + [15] = { 138, 207 }, + [16] = { 146, 219 }, + [17] = { 155, 233 }, + [18] = { 164, 245 }, + [19] = { 172, 258 }, + [20] = { 180, 270 }, + [21] = { 187, 281 }, + [22] = { 194, 291 }, + [23] = { 200, 300 }, + [24] = { 207, 310 }, + [25] = { 213, 320 }, + [26] = { 219, 329 }, + [27] = { 226, 339 }, + [28] = { 232, 348 }, + [29] = { 239, 358 }, + [30] = { 245, 367 }, + [31] = { 251, 377 }, + [32] = { 258, 387 }, + [33] = { 264, 396 }, + [34] = { 270, 405 }, + [35] = { 276, 415 }, + [36] = { 283, 424 }, + [37] = { 289, 434 }, + [38] = { 295, 443 }, + [39] = { 302, 452 }, + [40] = { 308, 462 }, +} From 857072abf73d2216643a22770731f38e8efb0cd0 Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Wed, 17 Sep 2025 23:00:00 +1000 Subject: [PATCH 07/23] Fix misc and add poise number --- src/Data/Misc.lua | 2 +- src/Modules/CalcSections.lua | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Data/Misc.lua b/src/Data/Misc.lua index 3f8d31df0..c91318f76 100644 --- a/src/Data/Misc.lua +++ b/src/Data/Misc.lua @@ -219,10 +219,10 @@ data.characterConstants = { ["branching_fissure_placement_along_main_fissure_variance_%"] = 5, ["branching_fissure_min_branch_angle"] = 40, ["branching_fissure_max_branch_angle"] = 80, + ["dodge_roll_sprint_minimum_time_ms"] = 100, ["dodge_roll_sprint_turn_rate"] = 150, ["sprint_movement_speed_+%"] = 50, ["sprint_end_stun_linger_duration_ms"] = 200, - ["dodge_roll_sprint_minimum_time_ms"] = 500, ["base_speed"] = 37, } -- From Metadata/Monsters/Monster.ot diff --git a/src/Modules/CalcSections.lua b/src/Modules/CalcSections.lua index 4bcb4706d..fe4df6df0 100644 --- a/src/Modules/CalcSections.lua +++ b/src/Modules/CalcSections.lua @@ -1205,6 +1205,7 @@ return { } }, { 1, "EleAilments", 1, colorCodes.OFFENCE, {{ defaultCollapsed = false, label = "Non-Damaging Ailments", data = { { label = "Enemy Ail. Thresh.", { format = "{0:output:EnemyAilmentThreshold}", { modName = "EnemyAilmentThreshold" }, }, }, + { label = "Enemy Poise", { format = "{0:output:EnemyPoiseThreshold}", { modName = "EnemyPoiseThreshold" }, }, }, { label = "Scorch Effect Mod", bgCol = colorCodes.SCORCHBG, flag = "scorch", { format = "x {2:output:ScorchEffectMod}", { breakdown = "ScorchEffectMod" }, { breakdown = "MainHand.ScorchDPS" }, From 619ec063f42b4392a33235e14b7cb935b562a831 Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Thu, 18 Sep 2025 00:21:37 +1000 Subject: [PATCH 08/23] Update breakdown --- src/Data/ModCache.lua | 18 +++++------ src/Modules/CalcOffence.lua | 58 +++++++++++------------------------- src/Modules/CalcSections.lua | 18 +++++++++-- src/Modules/ModParser.lua | 2 ++ 4 files changed, 44 insertions(+), 52 deletions(-) diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index d2fdb6eb9..fed71ee4e 100644 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -1083,7 +1083,7 @@ c["10% increased Global Defences per Socket filled"]={{[1]={[1]={type="Global"}, c["10% increased Grenade Area of Effect"]={{[1]={[1]={skillType=158,type="SkillType"},flags=0,keywordFlags=0,name="AreaOfEffect",type="INC",value=10}},nil} c["10% increased Hazard Area of Effect"]={{[1]={[1]={skillType=203,type="SkillType"},flags=0,keywordFlags=0,name="AreaOfEffect",type="INC",value=10}},nil} c["10% increased Ignite Magnitude"]={{[1]={flags=0,keywordFlags=8388608,name="AilmentMagnitude",type="INC",value=10}},nil} -c["10% increased Immobilisation buildup against Constructs"]={{}," Immobilisation buildup against Constructs "} +c["10% increased Immobilisation buildup against Constructs"]={{[1]={flags=0,keywordFlags=0,name="EnemyImmobilisationBuildup",type="INC",value=10}}," against Constructs "} c["10% increased Intelligence"]={{[1]={flags=0,keywordFlags=0,name="Int",type="INC",value=10}},nil} c["10% increased Knockback Distance"]={{[1]={flags=0,keywordFlags=0,name="EnemyKnockbackDistance",type="INC",value=10}},nil} c["10% increased Life Recovery from Flasks"]={{[1]={flags=0,keywordFlags=0,name="FlaskLifeRecovery",type="INC",value=10}},nil} @@ -1467,7 +1467,7 @@ c["15% increased Global Physical Damage"]={{[1]={[1]={type="Global"},flags=0,key c["15% increased Glory generation"]={{}," Glory generation "} c["15% increased Ignite Duration on Enemies"]={{[1]={flags=0,keywordFlags=0,name="EnemyIgniteDuration",type="INC",value=15}},nil} c["15% increased Ignite Magnitude"]={{[1]={flags=0,keywordFlags=8388608,name="AilmentMagnitude",type="INC",value=15}},nil} -c["15% increased Immobilisation buildup"]={{}," Immobilisation buildup "} +c["15% increased Immobilisation buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyImmobilisationBuildup",type="INC",value=15}},nil} c["15% increased Intelligence"]={{[1]={flags=0,keywordFlags=0,name="Int",type="INC",value=15}},nil} c["15% increased Life Cost of Skills"]={{[1]={flags=0,keywordFlags=0,name="LifeCost",type="INC",value=15}},nil} c["15% increased Life Flask Charges gained"]={{[1]={flags=0,keywordFlags=0,name="LifeFlaskChargesGained",type="INC",value=15}},nil} @@ -1709,7 +1709,7 @@ c["20% increased Attack Damage while you have no Life Flask uses left"]={{[1]={[ c["20% increased Attack Speed"]={{[1]={flags=1,keywordFlags=0,name="Speed",type="INC",value=20}},nil} c["20% increased Attack Speed while Surrounded"]={{[1]={[1]={type="Condition",var="Surrounded"},flags=1,keywordFlags=0,name="Speed",type="INC",value=20}},nil} c["20% increased Ballista Critical Hit Chance"]={{[1]={[1]={type="Condition",var="BallistaSkill"},flags=0,keywordFlags=16384,name="CritChance",type="INC",value=20}},nil} -c["20% increased Ballista Immobilisation buildup"]={{}," Immobilisation buildup "} +c["20% increased Ballista Immobilisation buildup"]={{[1]={[1]={type="Condition",var="BallistaSkill"},flags=0,keywordFlags=16384,name="EnemyImmobilisationBuildup",type="INC",value=20}},nil} c["20% increased Blind Effect"]={{[1]={flags=0,keywordFlags=0,name="EnemyModifier",type="LIST",value={mod={flags=0,keywordFlags=0,name="BlindEffect",type="INC",value=20}}}},nil} c["20% increased Block chance"]={{[1]={flags=0,keywordFlags=0,name="BlockChance",type="INC",value=20}},nil} c["20% increased Cast Speed"]={{[1]={flags=16,keywordFlags=0,name="Speed",type="INC",value=20}},nil} @@ -1773,7 +1773,7 @@ c["20% increased Global Defences"]={{[1]={[1]={type="Global"},flags=0,keywordFla c["20% increased Global Physical Damage"]={{[1]={[1]={type="Global"},flags=0,keywordFlags=0,name="PhysicalDamage",type="INC",value=20}},nil} c["20% increased Glory generation for Banner Skills"]={{}," Glory generation for Banner Skills "} c["20% increased Hazard Duration"]={{[1]={[1]={skillType=203,type="SkillType"},flags=0,keywordFlags=0,name="Duration",type="INC",value=20}},nil} -c["20% increased Hazard Immobilisation buildup"]={{}," Immobilisation buildup "} +c["20% increased Hazard Immobilisation buildup"]={{[1]={[1]={skillType=203,type="SkillType"},flags=0,keywordFlags=0,name="EnemyImmobilisationBuildup",type="INC",value=20}},nil} c["20% increased Hinder Duration"]={{[1]={flags=0,keywordFlags=0,name="Duration",type="INC",value=20}}," Hinder "} c["20% increased Ignite Duration on Enemies"]={{[1]={flags=0,keywordFlags=0,name="EnemyIgniteDuration",type="INC",value=20}},nil} c["20% increased Ignite Magnitude"]={{[1]={flags=0,keywordFlags=8388608,name="AilmentMagnitude",type="INC",value=20}},nil} @@ -2257,7 +2257,7 @@ c["30% increased Flask Mana Recovery rate"]={{[1]={flags=0,keywordFlags=0,name=" c["30% increased Freeze Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyFreezeBuildup",type="INC",value=30}},nil} c["30% increased Freeze Buildup with Quarterstaves"]={{[1]={flags=2097156,keywordFlags=0,name="EnemyFreezeBuildup",type="INC",value=30}},nil} c["30% increased Freeze Threshold"]={{[1]={flags=0,keywordFlags=0,name="FreezeThreshold",type="INC",value=30}},nil} -c["30% increased Hazard Immobilisation buildup"]={{}," Immobilisation buildup "} +c["30% increased Hazard Immobilisation buildup"]={{[1]={[1]={skillType=203,type="SkillType"},flags=0,keywordFlags=0,name="EnemyImmobilisationBuildup",type="INC",value=30}},nil} c["30% increased Life Recovery from Flasks"]={{[1]={flags=0,keywordFlags=0,name="FlaskLifeRecovery",type="INC",value=30}},nil} c["30% increased Life Regeneration rate during Effect of any Life Flask"]={{[1]={[1]={type="Condition",var="UsingLifeFlask"},flags=0,keywordFlags=0,name="LifeRegen",type="INC",value=30}},nil} c["30% increased Life Regeneration rate while Surrounded"]={{[1]={[1]={type="Condition",var="Surrounded"},flags=0,keywordFlags=0,name="LifeRegen",type="INC",value=30}},nil} @@ -2545,7 +2545,7 @@ c["40% increased effect of Arcane Surge on you"]={{[1]={flags=0,keywordFlags=0,n c["40% increased maximum Energy Shield"]={{[1]={[1]={type="Global"},flags=0,keywordFlags=0,name="EnergyShield",type="INC",value=40}},nil} c["40% less Attack Damage"]={{[1]={flags=1,keywordFlags=0,name="Damage",type="MORE",value=-40}},nil} c["40% less minimum Physical Attack Damage"]={{[1]={[1]={skillType=1,type="SkillType"},flags=0,keywordFlags=0,name="MinPhysicalDamage",type="MORE",value=-40}},nil} -c["40% more Immobilisation buildup"]={{}," Immobilisation buildup "} +c["40% more Immobilisation buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyImmobilisationBuildup",type="MORE",value=40}},nil} c["40% more maximum Physical Attack Damage"]={{[1]={[1]={skillType=1,type="SkillType"},flags=0,keywordFlags=0,name="MaxPhysicalDamage",type="MORE",value=40}},nil} c["40% of Physical Damage taken as Fire Damage"]={{[1]={flags=0,keywordFlags=0,name="PhysicalDamageTakenAsFire",type="BASE",value=40}},nil} c["40% of Physical damage from Hits taken as Lightning damage"]={{[1]={flags=0,keywordFlags=0,name="PhysicalDamageFromHitsTakenAsLightning",type="BASE",value=40}},nil} @@ -2679,7 +2679,7 @@ c["50% increased Attack Damage"]={{[1]={flags=1,keywordFlags=0,name="Damage",typ c["50% increased Attack Speed"]={{[1]={flags=1,keywordFlags=0,name="Speed",type="INC",value=50}},nil} c["50% increased Attack damage while moving"]={{[1]={[1]={type="Condition",var="Moving"},flags=1,keywordFlags=0,name="Damage",type="INC",value=50}},nil} c["50% increased Attribute Requirements"]={{[1]={flags=0,keywordFlags=0,name="StrRequirement",type="INC",value=50},[2]={flags=0,keywordFlags=0,name="DexRequirement",type="INC",value=50},[3]={flags=0,keywordFlags=0,name="IntRequirement",type="INC",value=50}},nil} -c["50% increased Ballista Immobilisation buildup"]={{}," Immobilisation buildup "} +c["50% increased Ballista Immobilisation buildup"]={{[1]={[1]={type="Condition",var="BallistaSkill"},flags=0,keywordFlags=16384,name="EnemyImmobilisationBuildup",type="INC",value=50}},nil} c["50% increased Blind Effect"]={{[1]={flags=0,keywordFlags=0,name="EnemyModifier",type="LIST",value={mod={flags=0,keywordFlags=0,name="BlindEffect",type="INC",value=50}}}},nil} c["50% increased Block chance"]={{[1]={flags=0,keywordFlags=0,name="BlockChance",type="INC",value=50}},nil} c["50% increased Cooldown Recovery Rate"]={{[1]={flags=0,keywordFlags=0,name="CooldownRecovery",type="INC",value=50}},nil} @@ -2724,7 +2724,7 @@ c["50% increased Freeze Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyFreez c["50% increased Grenade Detonation Time"]={{[1]={[1]={skillType=158,type="SkillType"},flags=0,keywordFlags=0,name="DetonationTime",type="INC",value=50}},nil} c["50% increased Hazard Area of Effect"]={{[1]={[1]={skillType=203,type="SkillType"},flags=0,keywordFlags=0,name="AreaOfEffect",type="INC",value=50}},nil} c["50% increased Ignite Magnitude"]={{[1]={flags=0,keywordFlags=8388608,name="AilmentMagnitude",type="INC",value=50}},nil} -c["50% increased Immobilisation buildup against Constructs"]={{}," Immobilisation buildup against Constructs "} +c["50% increased Immobilisation buildup against Constructs"]={{[1]={flags=0,keywordFlags=0,name="EnemyImmobilisationBuildup",type="INC",value=50}}," against Constructs "} c["50% increased Life Regeneration rate"]={{[1]={flags=0,keywordFlags=0,name="LifeRegen",type="INC",value=50}},nil} c["50% increased Mana Regeneration Rate"]={{[1]={flags=0,keywordFlags=0,name="ManaRegen",type="INC",value=50}},nil} c["50% increased Mana Regeneration Rate while moving"]={{[1]={[1]={type="Condition",var="Moving"},flags=0,keywordFlags=0,name="ManaRegen",type="INC",value=50}},nil} @@ -2997,7 +2997,7 @@ c["8% increased Freeze Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyFreeze c["8% increased Glory generation"]={{}," Glory generation "} c["8% increased Ignite Duration on Enemies"]={{[1]={flags=0,keywordFlags=0,name="EnemyIgniteDuration",type="INC",value=8}},nil} c["8% increased Ignite Magnitude"]={{[1]={flags=0,keywordFlags=8388608,name="AilmentMagnitude",type="INC",value=8}},nil} -c["8% increased Immobilisation buildup"]={{}," Immobilisation buildup "} +c["8% increased Immobilisation buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyImmobilisationBuildup",type="INC",value=8}},nil} c["8% increased Knockback Distance"]={{[1]={flags=0,keywordFlags=0,name="EnemyKnockbackDistance",type="INC",value=8}},nil} c["8% increased Lightning Damage"]={{[1]={flags=0,keywordFlags=0,name="LightningDamage",type="INC",value=8}},nil} c["8% increased Mana Cost Efficiency"]={{[1]={flags=0,keywordFlags=0,name="ManaCostEfficiency",type="INC",value=8}},nil} diff --git a/src/Modules/CalcOffence.lua b/src/Modules/CalcOffence.lua index fa7c90e8e..2179bc64c 100644 --- a/src/Modules/CalcOffence.lua +++ b/src/Modules/CalcOffence.lua @@ -4390,7 +4390,7 @@ function calcs.offence(env, actor, activeSkill) return true end -- Process overrides eg. LightningCanFreeze - if skillModList:Flag(cfg, damageType.."Can"..ailmentType) then + if skillModList:Flag(cfg, damageType.."Can"..ailmentType) or skillModList:Flag(cfg, "Can"..ailmentType) then return true end return false @@ -4892,65 +4892,43 @@ function calcs.offence(env, actor, activeSkill) skillFlags["inflictFreeze"] = false skillFlags["inflictElectrocute"] = false - -- Poise breakdown - if breakdown then - breakdown.Buildup = { - "Enemy level: " .. env.enemyLevel .. (env.configInput.enemyLevel and " ^8(overridden from the Configuration tab" or " ^8(can be overridden in the Configuration tab)"), - "Enemy poise: " .. enemyPoiseThreshold, - "", - "Expected buildup:", - } - output["MaxBuildup"] = 0 - end - -- Calculate poise-related debuffs for _, ailment in ipairs({"Freeze", "Electrocute", "HeavyStun", "Pin"}) do local hitMin, hitMax, critMin, critMax = calcMinMaxUnmitigatedAilmentSourceDamage(ailment, data.buildupTypes[ailment].ScalesFrom) -- TODO: average for now, can do more complicated calculation later local hitAvg = hitMin + (hitMax - hitMin) / 2 local critAvg = critMin + (critMax - critMin) / 2 - local inc = skillModList:Sum("INC", cfg, "Enemy"..ailment.."Buildup") - local more = data.gameConstants[ailment .. "ThresholdModifier"] or 0 - local hitPoiseBuildup = hitAvg / enemyPoiseThreshold * data.gameConstants[ailment .. "DamageScale"] - hitPoiseBuildup = hitPoiseBuildup * (1 + inc / 100) * (1 + more / 100) - local critPoiseBuildup = critAvg / enemyPoiseThreshold * data.gameConstants[ailment .. "DamageScale"] - critPoiseBuildup = critPoiseBuildup * (1 + inc / 100) * (1 + more / 100) + local inc = skillModList:Sum("INC", cfg, "Enemy"..ailment.."Buildup", "EnemyImmobilisationBuildup") + local more = skillModList:More(cfg, "Enemy"..ailment.."Buildup", "EnemyImmobilisationBuildup") + local hitPoiseBuildup = hitAvg * data.gameConstants[ailment .. "DamageScale"] / enemyPoiseThreshold + hitPoiseBuildup = hitPoiseBuildup * (1 + inc / 100) * more * 100 + local critPoiseBuildup = critAvg * data.gameConstants[ailment .. "DamageScale"] / enemyPoiseThreshold + critPoiseBuildup = critPoiseBuildup * (1 + inc / 100) * more * 100 if skillFlags.hit and not skillModList:Flag(cfg, "Cannot"..ailment) then - output[ailment .. "BuildupOnHit"] = m_min(100, hitPoiseBuildup) - output[ailment .. "BuildupOnCrit"] = m_min(100, critPoiseBuildup) + globalOutput[ailment .. "BuildupOnHit"] = m_min(100, hitPoiseBuildup) + globalOutput[ailment .. "BuildupOnCrit"] = m_min(100, critPoiseBuildup) else - output[ailment .. "BuildupOnHit"] = 0 - output[ailment .. "BuildupOnCrit"] = 0 + globalOutput[ailment .. "BuildupOnHit"] = 0 + globalOutput[ailment .. "BuildupOnCrit"] = 0 end if breakdown then local displayedAilment = ailment - if ailment == "HeavyStun" then - displayedAilment = "Heavy Stun" - end - local displayValue - if output[ailment .. "BuildupOnHit"] == 0 then - displayValue = "0" - else - displayValue = s_format("%.1f", output[ailment .. "BuildupOnHit"] * 100) - end - t_insert(breakdown.Buildup, displayedAilment .. ": " .. displayValue .. "%" ) - - if output[ailment .. "BuildupOnHit"] > output["MaxBuildup"] then - output["MaxBuildup"] = output[ailment .. "BuildupOnHit"] - end + globalBreakdown[ailment .. "Buildup"] = { + "Enemy level: " .. env.enemyLevel .. (env.configInput.enemyLevel and " ^8(overridden from the Configuration tab" or " ^8(can be overridden in the Configuration tab)"), + "Enemy poise: " .. enemyPoiseThreshold, + "", + } + t_insert(globalBreakdown[ailment .. "Buildup"], s_format("Regular Hit Poise buildup %.1f%%", hitPoiseBuildup)) + t_insert(globalBreakdown[ailment .. "Buildup"], s_format("Crit Poise buildup %.1f%%", critPoiseBuildup)) end end - if breakdown then - output["MaxBuildup"] = output["MaxBuildup"] * 100 - end - -- Calculate scaling threshold ailment chance for _, ailment in ipairs({"Ignite", "Shock"}) do diff --git a/src/Modules/CalcSections.lua b/src/Modules/CalcSections.lua index fe4df6df0..8e528a260 100644 --- a/src/Modules/CalcSections.lua +++ b/src/Modules/CalcSections.lua @@ -1366,9 +1366,21 @@ return { { label = "Configured Sap", modName = "SapVal", enemy = true, modType = "BASE" }, { label = "Guaranteed Saps", modName = "SapOverride", modType = "BASE" }, }, }, - { label = "Buildup", { format = "{1:output:MaxBuildup}%", - { breakdown = "Buildup" }, - { label = "Player modifiers", modName = { "EnemyElectrocuteBuildup", "EnemyFreezeBuildup", "EnemyHeavyStunBuildup", "EnemyPinBuildup" } }, + { label = "Freeze Buildup", haveOutput = "FreezeBuildupOnHit", { format = "{1:output:FreezeBuildupOnHit}%", + { breakdown = "FreezeBuildup" }, + { label = "Player modifiers", modName = { "EnemyFreezeBuildup", "EnemyImmobilisationBuildup" } }, + }, }, + { label = "Electrocute Buildup", haveOutput = "ElectrocuteBuildupOnHit", { format = "{1:output:ElectrocuteBuildupOnHit}%", + { breakdown = "ElectrocuteBuildup" }, + { label = "Player modifiers", modName = { "EnemyElectrocuteBuildup", "EnemyImmobilisationBuildup" } }, + }, }, + { label = "Stun Buildup", haveOutput = "HeavyStunBuildupOnHit", { format = "{1:output:HeavyStunBuildupOnHit}%", + { breakdown = "HeavyStunBuildup" }, + { label = "Player modifiers", modName = { "EnemyHeavyStunBuildup", "EnemyImmobilisationBuildup" } }, + }, }, + { label = "Pin Buildup", haveOutput = "PinBuildupOnHit", { format = "{1:output:PinBuildupOnHit}%", + { breakdown = "PinBuildup" }, + { label = "Player modifiers", modName = { "EnemyElectrocuteBuildup", "EnemyFreezeBuildup", "EnemyHeavyStunBuildup", "EnemyPinBuildup", "EnemyImmobilisationBuildup" } }, }, }, } } } }, diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index 381dee54c..fdace5c76 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -839,6 +839,7 @@ local modNameList = { ["stun buildup"] = "EnemyStunBuildup", ["freeze buildup"] = "EnemyFreezeBuildup", ["pin buildup"] = "EnemyPinBuildup", + ["immobilisation buildup"] = "EnemyImmobilisationBuildup", -- Misc modifiers ["movement speed"] = "MovementSpeed", ["attack, cast and movement speed"] = { "Speed", "MovementSpeed" }, @@ -3128,6 +3129,7 @@ local specialModList = { mod("ExtraAura", "LIST", { onlyAllies = true, mod = flag("GainMainHandDmgFromParent") }), mod("Multiplier:MainHandDamageToAllies", "BASE", num), } end, + ["projectile damage can pin"] = flag("CanPin", nil, ModFlag.Projectile), -- Warrior - Smith of Kitava ["body armour grants armour also applies to (%a+) damage taken from hits"] = function(_, dmgType) return { mod("ArmourAppliesTo"..firstToUpper(dmgType).."DamageTaken", "BASE", 100, { type = "ItemCondition", itemSlot = "Body Armour", rarityCond = "NORMAL" }) From 8286c2de6ce844966f4e1a77f443fc7d56dcbd9f Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Thu, 18 Sep 2025 04:23:46 +1000 Subject: [PATCH 09/23] Fix parsing for proj pin + remove pin damage type --- src/Data/ModCache.lua | 11 ++++------- src/Modules/CalcOffence.lua | 2 +- src/Modules/Data.lua | 11 ----------- src/Modules/ModParser.lua | 3 ++- 4 files changed, 7 insertions(+), 20 deletions(-) diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index fed71ee4e..f275bc446 100644 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -1514,8 +1514,7 @@ c["15% increased Spell Damage"]={{[1]={flags=2,keywordFlags=0,name="Damage",type c["15% increased Spell Damage if you've dealt a Critical Hit Recently"]={{[1]={[1]={type="Condition",var="CritRecently"},flags=2,keywordFlags=0,name="Damage",type="INC",value=15}},nil} c["15% increased Strength"]={{[1]={flags=0,keywordFlags=0,name="Str",type="INC",value=15}},nil} c["15% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=15}},nil} -c["15% increased Stun Buildup with Melee Damage"]={{[1]={flags=256,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=15}}," with Damage "} -c["15% increased Stun Buildup with Melee Damage +15 to Strength"]={{[1]={flags=256,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=15}}," with Damage +15 to Strength "} +c["15% increased Stun Buildup with Melee Damage"]={{[1]={flags=256,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=15}},nil} c["15% increased Stun Duration"]={{[1]={flags=0,keywordFlags=0,name="EnemyStunDuration",type="INC",value=15}},nil} c["15% increased Stun Threshold"]={{[1]={flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=15}},nil} c["15% increased Totem Damage"]={{[1]={flags=0,keywordFlags=16384,name="Damage",type="INC",value=15}},nil} @@ -1619,7 +1618,7 @@ c["18% increased Projectile Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="P c["18% increased Skill Effect Duration"]={{[1]={flags=0,keywordFlags=0,name="Duration",type="INC",value=18}},nil} c["18% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=18}},nil} c["18% increased Stun Buildup with Maces"]={{[1]={flags=1048580,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=18}},nil} -c["18% increased Stun Buildup with Melee Damage"]={{[1]={flags=256,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=18}}," with Damage "} +c["18% increased Stun Buildup with Melee Damage"]={{[1]={flags=256,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=18}},nil} c["18% increased Warcry Cooldown Recovery Rate"]={{[1]={flags=0,keywordFlags=4,name="CooldownRecovery",type="INC",value=18}},nil} c["18% increased maximum Energy Shield"]={{[1]={[1]={type="Global"},flags=0,keywordFlags=0,name="EnergyShield",type="INC",value=18}},nil} c["18% of Damage taken Recouped as Life"]={{[1]={flags=0,keywordFlags=0,name="LifeRecoup",type="BASE",value=18}},nil} @@ -2296,8 +2295,7 @@ c["30% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyStunBui c["30% increased Stun Buildup against Enemies that are on Low Life"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="LowLife"},flags=0,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=30}},nil} c["30% increased Stun Buildup against enemies within 2 metres"]={{[1]={flags=0,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=30}}," against enemies within 2 metres "} c["30% increased Stun Buildup against enemies within 2 metres +5 to Strength and Dexterity"]={{[1]={flags=0,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=30}}," against enemies within 2 metres +5 to Strength and Dexterity "} -c["30% increased Stun Buildup with Melee Damage"]={{[1]={flags=256,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=30}}," with Damage "} -c["30% increased Stun Buildup with Melee Damage Projectiles deal 75% increased Damage against Heavy Stunned Enemies"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="HeavyStunned"},flags=256,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=30}}," with Damage Projectiles deal 75% increased Damage "} +c["30% increased Stun Buildup with Melee Damage"]={{[1]={flags=256,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=30}},nil} c["30% increased Stun Buildup with Quarterstaves"]={{[1]={flags=2097156,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=30}},nil} c["30% increased Stun Recovery"]={{[1]={flags=0,keywordFlags=0,name="StunRecovery",type="INC",value=30}},nil} c["30% increased Stun Threshold"]={{[1]={flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=30}},nil} @@ -5314,8 +5312,7 @@ c["Prevent +15% of Damage from Deflected Critical Hits"]={nil,"Prevent +15% of D c["Prevent +3% of Damage from Deflected Hits"]={{[1]={flags=0,keywordFlags=0,name="DeflectEffect",type="BASE",value=3}},nil} c["Prevent +6% of Damage from Deflected Hits"]={{[1]={flags=0,keywordFlags=0,name="DeflectEffect",type="BASE",value=6}},nil} c["Projectile Attacks have a 12% chance to fire two additional Projectiles while moving"]={nil,"Projectile Attacks have a 12% chance to fire two additional Projectiles while moving "} -c["Projectile Damage builds Pin"]={nil,"Projectile Damage builds Pin "} -c["Projectile Damage builds Pin Pinned enemies cannot perform actions"]={nil,"Projectile Damage builds Pin Pinned enemies cannot perform actions "} +c["Projectile Damage builds Pin"]={{[1]={flags=1024,keywordFlags=0,name="CanPin",type="FLAG",value=true}},nil} c["Projectiles Pierce all Ignited enemies"]={nil,"Projectiles Pierce all Ignited enemies "} c["Projectiles Pierce all Ignited enemies Attacks Gain 10% of Damage as Extra Fire Damage"]={nil,"Projectiles Pierce all Ignited enemies Attacks Gain 10% of Damage as Extra Fire Damage "} c["Projectiles Pierce enemies with Fully Broken Armour"]={{[1]={[1]={type="Condition",var="ArmourFullyBroken"},flags=0,keywordFlags=0,name="PierceCount",type="BASE",value=1}},nil} diff --git a/src/Modules/CalcOffence.lua b/src/Modules/CalcOffence.lua index 2179bc64c..9161ccdcf 100644 --- a/src/Modules/CalcOffence.lua +++ b/src/Modules/CalcOffence.lua @@ -4920,7 +4920,7 @@ function calcs.offence(env, actor, activeSkill) if breakdown then local displayedAilment = ailment globalBreakdown[ailment .. "Buildup"] = { - "Enemy level: " .. env.enemyLevel .. (env.configInput.enemyLevel and " ^8(overridden from the Configuration tab" or " ^8(can be overridden in the Configuration tab)"), + "Enemy level: " .. env.enemyLevel .. (env.configInput.enemyLevel and " ^8(overridden from the Configuration tab" or " ^8(can be overridden in the Configuration tab)"), "Enemy poise: " .. enemyPoiseThreshold, "", } diff --git a/src/Modules/Data.lua b/src/Modules/Data.lua index 0aa8eb38e..54d6454bc 100644 --- a/src/Modules/Data.lua +++ b/src/Modules/Data.lua @@ -364,7 +364,6 @@ data.buildupTypes = { }, ["Pin"] = { ["ScalesFrom"] = { - ["Physical"] = true, } }, } @@ -401,16 +400,6 @@ data.defaultAilmentDamageTypes = { ["Cold"] = true, } }, - ["Freeze"] = { - ["ScalesFrom"] = { - ["Cold"] = true, - } - }, - ["Electrocute"] = { - ["ScalesFrom"] = { - ["Lightning"] = true, - } - }, } -- Used in ModStoreClass:ScaleAddMod(...) to identify high precision modifiers diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index fdace5c76..fee6bd204 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -1017,6 +1017,7 @@ local modFlagList = { ["crossbow"] = { flags = ModFlag.Crossbow }, ["for crossbow attacks"] = { flags = ModFlag.Crossbow, tag = { type = "SkillType", skillType = SkillType.CrossbowSkill } }, ["with melee attacks"] = { flags = ModFlag.Melee }, + ["with melee damage"] = { flags = ModFlag.Melee }, ["with melee critical hits"] = { flags = ModFlag.Melee, tag = { type = "Condition", var = "CriticalStrike" } }, ["with melee skills"] = { tag = { type = "SkillType", skillType = SkillType.Melee } }, ["with bow skills"] = { keywordFlags = KeywordFlag.Bow }, @@ -3129,7 +3130,7 @@ local specialModList = { mod("ExtraAura", "LIST", { onlyAllies = true, mod = flag("GainMainHandDmgFromParent") }), mod("Multiplier:MainHandDamageToAllies", "BASE", num), } end, - ["projectile damage can pin"] = flag("CanPin", nil, ModFlag.Projectile), + ["projectile damage builds pin"] = { flag("CanPin", nil, ModFlag.Projectile) }, -- Warrior - Smith of Kitava ["body armour grants armour also applies to (%a+) damage taken from hits"] = function(_, dmgType) return { mod("ArmourAppliesTo"..firstToUpper(dmgType).."DamageTaken", "BASE", 100, { type = "ItemCondition", itemSlot = "Body Armour", rarityCond = "NORMAL" }) From 21807de89872c416d832523520cf0ee520bd6cdf Mon Sep 17 00:00:00 2001 From: ImmotephSimon Date: Wed, 17 Sep 2025 21:16:05 +0200 Subject: [PATCH 10/23] Add Bone Cage pin mods --- src/Data/SkillStatMap.lua | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/Data/SkillStatMap.lua b/src/Data/SkillStatMap.lua index 8394cbbda..631aa5bbd 100644 --- a/src/Data/SkillStatMap.lua +++ b/src/Data/SkillStatMap.lua @@ -1478,6 +1478,16 @@ return { ["base_lightning_damage_can_electrocute"] = { flag("LightningCanElectrocute"), }, +["base_lightning_damage_can_electrocute"] = { + flag("LightningCanElectrocute"), +}, +["base_all_damage_can_pin"] = { + { flag("CanPin", nil, ModFlag.Physical) }, + { flag("CanPin", nil, ModFlag.Cold) }, + { flag("CanPin", nil, ModFlag.Fire) }, + { flag("CanPin", nil, ModFlag.Lightning) }, + { flag("CanPin", nil, ModFlag.Chaos) }, +}, ["is_hazard"] = { flag("CanCreateHazards"), }, @@ -2589,6 +2599,9 @@ return { ["armour_break_physical_damage_%_dealt_as_armour_break"] = { flag("Condition:CanArmourBreak", { type = "GlobalEffect", effectType = "Buff", effectName = "ArmourBreak" }), }, +["active_skill_pins_as_though_dealt_damage_+%_final"] = { + mod("EnemyPinBuildup", "MORE", nil), +}, -- -- Spectre or Minion-specific stats -- From 9ea674e7a3db3167393896e69793aa2f3f5a80f7 Mon Sep 17 00:00:00 2001 From: ImmotephSimon Date: Wed, 17 Sep 2025 21:22:48 +0200 Subject: [PATCH 11/23] Undo duplicated electrocute-change Simplify base_all_damage_can_pin --- src/Data/SkillStatMap.lua | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/Data/SkillStatMap.lua b/src/Data/SkillStatMap.lua index 631aa5bbd..8c5872416 100644 --- a/src/Data/SkillStatMap.lua +++ b/src/Data/SkillStatMap.lua @@ -1478,15 +1478,8 @@ return { ["base_lightning_damage_can_electrocute"] = { flag("LightningCanElectrocute"), }, -["base_lightning_damage_can_electrocute"] = { - flag("LightningCanElectrocute"), -}, ["base_all_damage_can_pin"] = { - { flag("CanPin", nil, ModFlag.Physical) }, - { flag("CanPin", nil, ModFlag.Cold) }, - { flag("CanPin", nil, ModFlag.Fire) }, - { flag("CanPin", nil, ModFlag.Lightning) }, - { flag("CanPin", nil, ModFlag.Chaos) }, + { flag("CanPin") }, }, ["is_hazard"] = { flag("CanCreateHazards"), From 4e1f5e9cd02f922dffa2635b32cd2b0712fa7c58 Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Thu, 18 Sep 2025 10:42:00 +1000 Subject: [PATCH 12/23] Tree / Gear mods for builup --- src/Data/ModCache.lua | 103 +++++++++++++++++--------------------- src/Modules/ModParser.lua | 32 +++++++++--- 2 files changed, 72 insertions(+), 63 deletions(-) diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index f275bc446..d3653bed8 100644 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -1096,7 +1096,7 @@ c["10% increased Lightning Exposure Effect"]={{[1]={flags=0,keywordFlags=0,name= c["10% increased Magnitude of Ailments you inflict"]={{[1]={flags=0,keywordFlags=0,name="AilmentMagnitude",type="INC",value=10}},nil} c["10% increased Magnitude of Bleeding you inflict"]={{[1]={flags=0,keywordFlags=4194304,name="AilmentMagnitude",type="INC",value=10}},nil} c["10% increased Magnitude of Chill you inflict"]={{[1]={flags=0,keywordFlags=0,name="EnemyChillMagnitude",type="INC",value=10}},nil} -c["10% increased Magnitude of Non-Damaging Ailments you inflict"]={{[1]={flags=0,keywordFlags=0,name="EnemyShockMagnitude",type="INC",value=10},[2]={flags=0,keywordFlags=0,name="EnemyChillMagnitude",type="INC",value=10},[3]={flags=0,keywordFlags=0,name="EnemyFreezeEffect",type="INC",value=10}},nil} +c["10% increased Magnitude of Non-Damaging Ailments you inflict"]={{[1]={flags=0,keywordFlags=0,name="EnemyShockMagnitude",type="INC",value=10},[2]={flags=0,keywordFlags=0,name="EnemyChillMagnitude",type="INC",value=10},[3]={flags=0,keywordFlags=0,name="EnemyFreezeBuildup",type="INC",value=10}},nil} c["10% increased Magnitude of Poison you inflict"]={{[1]={flags=0,keywordFlags=2097152,name="AilmentMagnitude",type="INC",value=10}},nil} c["10% increased Magnitude of Shock you inflict"]={{[1]={flags=0,keywordFlags=0,name="EnemyShockMagnitude",type="INC",value=10}},nil} c["10% increased Mana Cost Efficiency"]={{[1]={flags=0,keywordFlags=0,name="ManaCostEfficiency",type="INC",value=10}},nil} @@ -1127,7 +1127,7 @@ c["10% increased Spell Damage"]={{[1]={flags=2,keywordFlags=0,name="Damage",type c["10% increased Spell Damage per 10 Spirit"]={{[1]={[1]={div=10,stat="Spirit",type="PerStat"},flags=2,keywordFlags=0,name="Damage",type="INC",value=10}},nil} c["10% increased Spirit Reservation Efficiency of Skills"]={{[1]={flags=0,keywordFlags=0,name="SpiritReservationEfficiency",type="INC",value=10}},nil} c["10% increased Strength"]={{[1]={flags=0,keywordFlags=0,name="Str",type="INC",value=10}},nil} -c["10% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=10}},nil} +c["10% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyHeavyStunBuildup",type="INC",value=10}},nil} c["10% increased Stun Threshold"]={{[1]={flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=10}},nil} c["10% increased Stun Threshold for each time you've been Hit by an Enemy Recently, up to 100%"]={{[1]={flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=10}}," for each time you've been Hit by an Enemy Recently, up to 100% "} c["10% increased Thorns damage"]={{[1]={flags=0,keywordFlags=0,name="ThornsDamage",type="INC",value=10}},nil} @@ -1323,7 +1323,7 @@ c["12% increased Spell Damage per 10 Spirit"]={{[1]={[1]={div=10,stat="Spirit",t c["12% increased Spell Damage while on Full Energy Shield"]={{[1]={[1]={type="Condition",var="FullEnergyShield"},flags=2,keywordFlags=0,name="Damage",type="INC",value=12}},nil} c["12% increased Spell Damage while wielding a Melee Weapon"]={{[1]={[1]={type="Condition",var="UsingMeleeWeapon"},flags=2,keywordFlags=0,name="Damage",type="INC",value=12}},nil} c["12% increased Spell Damage with Spells that cost Life"]={{[1]={[1]={stat="LifeCost",threshold=1,type="StatThreshold"},flags=2,keywordFlags=131072,name="Damage",type="INC",value=12}},nil} -c["12% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=12}},nil} +c["12% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyHeavyStunBuildup",type="INC",value=12}},nil} c["12% increased Stun Threshold"]={{[1]={flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=12}},nil} c["12% increased Stun Threshold if you haven't been Stunned Recently"]={{[1]={[1]={neg=true,type="Condition",var="StunnedRecently"},flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=12}},nil} c["12% increased Thorns damage"]={{[1]={flags=0,keywordFlags=0,name="ThornsDamage",type="INC",value=12}},nil} @@ -1513,8 +1513,8 @@ c["15% increased Skill Speed"]={{[1]={flags=0,keywordFlags=0,name="Speed",type=" c["15% increased Spell Damage"]={{[1]={flags=2,keywordFlags=0,name="Damage",type="INC",value=15}},nil} c["15% increased Spell Damage if you've dealt a Critical Hit Recently"]={{[1]={[1]={type="Condition",var="CritRecently"},flags=2,keywordFlags=0,name="Damage",type="INC",value=15}},nil} c["15% increased Strength"]={{[1]={flags=0,keywordFlags=0,name="Str",type="INC",value=15}},nil} -c["15% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=15}},nil} -c["15% increased Stun Buildup with Melee Damage"]={{[1]={flags=256,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=15}},nil} +c["15% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyHeavyStunBuildup",type="INC",value=15}},nil} +c["15% increased Stun Buildup with Melee Damage"]={{[1]={flags=256,keywordFlags=0,name="EnemyHeavyStunBuildup",type="INC",value=15}},nil} c["15% increased Stun Duration"]={{[1]={flags=0,keywordFlags=0,name="EnemyStunDuration",type="INC",value=15}},nil} c["15% increased Stun Threshold"]={{[1]={flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=15}},nil} c["15% increased Totem Damage"]={{[1]={flags=0,keywordFlags=16384,name="Damage",type="INC",value=15}},nil} @@ -1614,11 +1614,11 @@ c["18% increased Cooldown Recovery Rate"]={{[1]={flags=0,keywordFlags=0,name="Co c["18% increased Critical Damage Bonus with Quarterstaves"]={{[1]={flags=2097156,keywordFlags=0,name="CritMultiplier",type="INC",value=18}},nil} c["18% increased Curse Magnitudes"]={{[1]={flags=0,keywordFlags=0,name="CurseEffect",type="INC",value=18}},nil} c["18% increased Mana Regeneration Rate"]={{[1]={flags=0,keywordFlags=0,name="ManaRegen",type="INC",value=18}},nil} -c["18% increased Projectile Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="ProjectileCount",type="INC",value=18}}," Stun Buildup "} +c["18% increased Projectile Stun Buildup"]={{[1]={flags=1024,keywordFlags=0,name="EnemyHeavyStunBuildup",type="INC",value=18}},nil} c["18% increased Skill Effect Duration"]={{[1]={flags=0,keywordFlags=0,name="Duration",type="INC",value=18}},nil} -c["18% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=18}},nil} -c["18% increased Stun Buildup with Maces"]={{[1]={flags=1048580,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=18}},nil} -c["18% increased Stun Buildup with Melee Damage"]={{[1]={flags=256,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=18}},nil} +c["18% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyHeavyStunBuildup",type="INC",value=18}},nil} +c["18% increased Stun Buildup with Maces"]={{[1]={flags=1048580,keywordFlags=0,name="EnemyHeavyStunBuildup",type="INC",value=18}},nil} +c["18% increased Stun Buildup with Melee Damage"]={{[1]={flags=256,keywordFlags=0,name="EnemyHeavyStunBuildup",type="INC",value=18}},nil} c["18% increased Warcry Cooldown Recovery Rate"]={{[1]={flags=0,keywordFlags=4,name="CooldownRecovery",type="INC",value=18}},nil} c["18% increased maximum Energy Shield"]={{[1]={[1]={type="Global"},flags=0,keywordFlags=0,name="EnergyShield",type="INC",value=18}},nil} c["18% of Damage taken Recouped as Life"]={{[1]={flags=0,keywordFlags=0,name="LifeRecoup",type="BASE",value=18}},nil} @@ -1648,7 +1648,7 @@ c["2% increased Movement Speed"]={{[1]={flags=0,keywordFlags=0,name="MovementSpe c["2% increased Movement Speed while Sprinting"]={{[1]={[1]={type="Condition",var="Sprinting"},flags=0,keywordFlags=0,name="MovementSpeed",type="INC",value=2}},nil} c["2% increased Parried Debuff Duration per 10 Tribute"]={{[1]={[1]={actor="parent",div=10,stat="Tribute",type="PerStat"},flags=0,keywordFlags=0,name="Duration",type="INC",value=2}}," Parried Debuff "} c["2% increased Spirit per socketed Grand Spectrum"]={{[1]={[1]={type="Multiplier",var="GrandSpectrum"},flags=0,keywordFlags=0,name="Spirit",type="INC",value=2}},nil} -c["2% increased Stun Buildup per 10 Tribute"]={{[1]={[1]={actor="parent",div=10,stat="Tribute",type="PerStat"},flags=0,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=2}},nil} +c["2% increased Stun Buildup per 10 Tribute"]={{[1]={[1]={actor="parent",div=10,stat="Tribute",type="PerStat"},flags=0,keywordFlags=0,name="EnemyHeavyStunBuildup",type="INC",value=2}},nil} c["2% increased Thorns damage per 10 Tribute"]={{[1]={[1]={actor="parent",div=10,stat="Tribute",type="PerStat"},flags=0,keywordFlags=0,name="ThornsDamage",type="INC",value=2}},nil} c["2% increased maximum Life"]={{[1]={flags=0,keywordFlags=0,name="Life",type="INC",value=2}},nil} c["2% increased maximum Mana"]={{[1]={flags=0,keywordFlags=0,name="Mana",type="INC",value=2}},nil} @@ -1788,7 +1788,7 @@ c["20% increased Magnitude of Bleeding you inflict"]={{[1]={flags=0,keywordFlags c["20% increased Magnitude of Chill you inflict"]={{[1]={flags=0,keywordFlags=0,name="EnemyChillMagnitude",type="INC",value=20}},nil} c["20% increased Magnitude of Damaging Ailments you inflict"]={{[1]={flags=0,keywordFlags=14680064,name="AilmentMagnitude",type="INC",value=20}},nil} c["20% increased Magnitude of Impales inflicted with Spells"]={{[1]={flags=0,keywordFlags=131072,name="ImpaleEffect",type="INC",value=20}},nil} -c["20% increased Magnitude of Non-Damaging Ailments you inflict with Critical Hits"]={{[1]={[1]={type="Condition",var="CriticalStrike"},flags=0,keywordFlags=0,name="EnemyShockMagnitude",type="INC",value=20},[2]={[1]={type="Condition",var="CriticalStrike"},flags=0,keywordFlags=0,name="EnemyChillMagnitude",type="INC",value=20},[3]={[1]={type="Condition",var="CriticalStrike"},flags=0,keywordFlags=0,name="EnemyFreezeEffect",type="INC",value=20}},nil} +c["20% increased Magnitude of Non-Damaging Ailments you inflict with Critical Hits"]={{[1]={[1]={type="Condition",var="CriticalStrike"},flags=0,keywordFlags=0,name="EnemyShockMagnitude",type="INC",value=20},[2]={[1]={type="Condition",var="CriticalStrike"},flags=0,keywordFlags=0,name="EnemyChillMagnitude",type="INC",value=20},[3]={[1]={type="Condition",var="CriticalStrike"},flags=0,keywordFlags=0,name="EnemyFreezeBuildup",type="INC",value=20}},nil} c["20% increased Magnitude of Poison you inflict"]={{[1]={flags=0,keywordFlags=2097152,name="AilmentMagnitude",type="INC",value=20}},nil} c["20% increased Magnitude of Shock you inflict"]={{[1]={flags=0,keywordFlags=0,name="EnemyShockMagnitude",type="INC",value=20}},nil} c["20% increased Mana Cost Efficiency"]={{[1]={flags=0,keywordFlags=0,name="ManaCostEfficiency",type="INC",value=20}},nil} @@ -1813,7 +1813,7 @@ c["20% increased Poison Duration"]={{[1]={flags=0,keywordFlags=0,name="EnemyPois c["20% increased Power Charge Duration"]={{[1]={flags=0,keywordFlags=0,name="PowerChargesDuration",type="INC",value=20}},nil} c["20% increased Presence Area of Effect"]={{[1]={flags=0,keywordFlags=0,name="PresenceArea",type="INC",value=20}},nil} c["20% increased Projectile Damage"]={{[1]={flags=1024,keywordFlags=0,name="Damage",type="INC",value=20}},nil} -c["20% increased Projectile Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="ProjectileCount",type="INC",value=20}}," Stun Buildup "} +c["20% increased Projectile Stun Buildup"]={{[1]={flags=1024,keywordFlags=0,name="EnemyHeavyStunBuildup",type="INC",value=20}},nil} c["20% increased Rarity of Items found"]={{[1]={flags=0,keywordFlags=0,name="LootRarity",type="INC",value=20}},nil} c["20% increased Reload Speed"]={{[1]={flags=1,keywordFlags=0,name="ReloadSpeed",type="INC",value=20}},nil} c["20% increased Reservation Efficiency of Herald Skills"]={{[1]={[1]={skillType=52,type="SkillType"},flags=0,keywordFlags=0,name="ReservationEfficiency",type="INC",value=20}},nil} @@ -1822,8 +1822,8 @@ c["20% increased Skill Effect Duration"]={{[1]={flags=0,keywordFlags=0,name="Dur c["20% increased Spell Area Damage"]={{[1]={flags=514,keywordFlags=0,name="Damage",type="INC",value=20}},nil} c["20% increased Spell Damage"]={{[1]={flags=2,keywordFlags=0,name="Damage",type="INC",value=20}},nil} c["20% increased Strength"]={{[1]={flags=0,keywordFlags=0,name="Str",type="INC",value=20}},nil} -c["20% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=20}},nil} -c["20% increased Stun Buildup with Quarterstaves"]={{[1]={flags=2097156,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=20}},nil} +c["20% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyHeavyStunBuildup",type="INC",value=20}},nil} +c["20% increased Stun Buildup with Quarterstaves"]={{[1]={flags=2097156,keywordFlags=0,name="EnemyHeavyStunBuildup",type="INC",value=20}},nil} c["20% increased Stun Duration"]={{[1]={flags=0,keywordFlags=0,name="EnemyStunDuration",type="INC",value=20}},nil} c["20% increased Stun Recovery"]={{[1]={flags=0,keywordFlags=0,name="StunRecovery",type="INC",value=20}},nil} c["20% increased Stun Threshold"]={{[1]={flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=20}},nil} @@ -1852,7 +1852,7 @@ c["20% less Attributes"]={{[1]={flags=0,keywordFlags=0,name="Str",type="MORE",va c["20% less Damage taken if you have not been Hit Recently"]={{[1]={[1]={neg=true,type="Condition",var="BeenHitRecently"},flags=0,keywordFlags=0,name="DamageTaken",type="MORE",value=-20}},nil} c["20% more Charm Charges gained"]={{[1]={flags=0,keywordFlags=0,name="CharmChargesGained",type="MORE",value=20}},nil} c["20% more Damage against Heavy Stunned Enemies with Maces"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="HeavyStunned"},flags=1048580,keywordFlags=0,name="Damage",type="MORE",value=20}},nil} -c["20% more Stun Buildup with Critical Hits"]={{[1]={[1]={type="Condition",var="CriticalStrike"},flags=0,keywordFlags=0,name="EnemyStunBuildup",type="MORE",value=20}},nil} +c["20% more Stun Buildup with Critical Hits"]={{[1]={[1]={type="Condition",var="CriticalStrike"},flags=0,keywordFlags=0,name="EnemyHeavyStunBuildup",type="MORE",value=20}},nil} c["20% of Cold Damage taken as Fire Damage"]={{[1]={flags=0,keywordFlags=0,name="ColdDamageTakenAsFire",type="BASE",value=20}},nil} c["20% of Damage from Hits is taken from your nearest Totem's Life before you"]={{[1]={[1]={type="Condition",var="HaveTotem"},flags=0,keywordFlags=0,name="takenFromTotemsBeforeYou",type="BASE",value=20}},nil} c["20% of Damage is taken from Mana before Life"]={{[1]={flags=0,keywordFlags=0,name="DamageTakenFromManaBeforeLife",type="BASE",value=20}},nil} @@ -2057,7 +2057,7 @@ c["25% increased Shock Duration"]={{[1]={flags=0,keywordFlags=0,name="EnemyShock c["25% increased Skill Effect Duration"]={{[1]={flags=0,keywordFlags=0,name="Duration",type="INC",value=25}},nil} c["25% increased Spell Damage"]={{[1]={flags=2,keywordFlags=0,name="Damage",type="INC",value=25}},nil} c["25% increased Spell Damage while on Full Energy Shield"]={{[1]={[1]={type="Condition",var="FullEnergyShield"},flags=2,keywordFlags=0,name="Damage",type="INC",value=25}},nil} -c["25% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=25}},nil} +c["25% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyHeavyStunBuildup",type="INC",value=25}},nil} c["25% increased Stun Threshold"]={{[1]={flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=25}},nil} c["25% increased Stun Threshold if you haven't been Stunned Recently"]={{[1]={[1]={neg=true,type="Condition",var="StunnedRecently"},flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=25}},nil} c["25% increased Stun Threshold while on Full Life"]={{[1]={[1]={type="Condition",var="FullLife"},flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=25}},nil} @@ -2263,8 +2263,8 @@ c["30% increased Life Regeneration rate while Surrounded"]={{[1]={[1]={type="Con c["30% increased Light Radius"]={{[1]={flags=0,keywordFlags=0,name="LightRadius",type="INC",value=30}},nil} c["30% increased Magnitude of Ailments you inflict"]={{[1]={flags=0,keywordFlags=0,name="AilmentMagnitude",type="INC",value=30}},nil} c["30% increased Magnitude of Chill you inflict"]={{[1]={flags=0,keywordFlags=0,name="EnemyChillMagnitude",type="INC",value=30}},nil} -c["30% increased Magnitude of Non-Damaging Ailments you inflict"]={{[1]={flags=0,keywordFlags=0,name="EnemyShockMagnitude",type="INC",value=30},[2]={flags=0,keywordFlags=0,name="EnemyChillMagnitude",type="INC",value=30},[3]={flags=0,keywordFlags=0,name="EnemyFreezeEffect",type="INC",value=30}},nil} -c["30% increased Magnitude of Non-Damaging Ailments you inflict with Critical Hits"]={{[1]={[1]={type="Condition",var="CriticalStrike"},flags=0,keywordFlags=0,name="EnemyShockMagnitude",type="INC",value=30},[2]={[1]={type="Condition",var="CriticalStrike"},flags=0,keywordFlags=0,name="EnemyChillMagnitude",type="INC",value=30},[3]={[1]={type="Condition",var="CriticalStrike"},flags=0,keywordFlags=0,name="EnemyFreezeEffect",type="INC",value=30}},nil} +c["30% increased Magnitude of Non-Damaging Ailments you inflict"]={{[1]={flags=0,keywordFlags=0,name="EnemyShockMagnitude",type="INC",value=30},[2]={flags=0,keywordFlags=0,name="EnemyChillMagnitude",type="INC",value=30},[3]={flags=0,keywordFlags=0,name="EnemyFreezeBuildup",type="INC",value=30}},nil} +c["30% increased Magnitude of Non-Damaging Ailments you inflict with Critical Hits"]={{[1]={[1]={type="Condition",var="CriticalStrike"},flags=0,keywordFlags=0,name="EnemyShockMagnitude",type="INC",value=30},[2]={[1]={type="Condition",var="CriticalStrike"},flags=0,keywordFlags=0,name="EnemyChillMagnitude",type="INC",value=30},[3]={[1]={type="Condition",var="CriticalStrike"},flags=0,keywordFlags=0,name="EnemyFreezeBuildup",type="INC",value=30}},nil} c["30% increased Magnitude of Poison you inflict"]={{[1]={flags=0,keywordFlags=2097152,name="AilmentMagnitude",type="INC",value=30}},nil} c["30% increased Magnitude of Shock you inflict"]={{[1]={flags=0,keywordFlags=0,name="EnemyShockMagnitude",type="INC",value=30}},nil} c["30% increased Mana Cost Efficiency"]={{[1]={flags=0,keywordFlags=0,name="ManaCostEfficiency",type="INC",value=30}},nil} @@ -2291,12 +2291,11 @@ c["30% increased Skill Speed"]={{[1]={flags=0,keywordFlags=0,name="Speed",type=" c["30% increased Spell Damage"]={{[1]={flags=2,keywordFlags=0,name="Damage",type="INC",value=30}},nil} c["30% increased Spell Damage if you have consumed an Elemental Infusion Recently"]={{[1]={flags=2,keywordFlags=0,name="Damage",type="INC",value=30}}," if you have consumed an Elemental Infusion Recently "} c["30% increased Strength"]={{[1]={flags=0,keywordFlags=0,name="Str",type="INC",value=30}},nil} -c["30% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=30}},nil} -c["30% increased Stun Buildup against Enemies that are on Low Life"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="LowLife"},flags=0,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=30}},nil} -c["30% increased Stun Buildup against enemies within 2 metres"]={{[1]={flags=0,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=30}}," against enemies within 2 metres "} -c["30% increased Stun Buildup against enemies within 2 metres +5 to Strength and Dexterity"]={{[1]={flags=0,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=30}}," against enemies within 2 metres +5 to Strength and Dexterity "} -c["30% increased Stun Buildup with Melee Damage"]={{[1]={flags=256,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=30}},nil} -c["30% increased Stun Buildup with Quarterstaves"]={{[1]={flags=2097156,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=30}},nil} +c["30% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyHeavyStunBuildup",type="INC",value=30}},nil} +c["30% increased Stun Buildup against Enemies that are on Low Life"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="LowLife"},flags=0,keywordFlags=0,name="EnemyHeavyStunBuildup",type="INC",value=30}},nil} +c["30% increased Stun Buildup against enemies within 2 metres"]={{[1]={[1]={threshold=20,type="MultiplierThreshold",upper=true,var="enemyDistance"},flags=0,keywordFlags=0,name="EnemyHeavyStunBuildup",type="INC",value=30}},nil} +c["30% increased Stun Buildup with Melee Damage"]={{[1]={flags=256,keywordFlags=0,name="EnemyHeavyStunBuildup",type="INC",value=30}},nil} +c["30% increased Stun Buildup with Quarterstaves"]={{[1]={flags=2097156,keywordFlags=0,name="EnemyHeavyStunBuildup",type="INC",value=30}},nil} c["30% increased Stun Recovery"]={{[1]={flags=0,keywordFlags=0,name="StunRecovery",type="INC",value=30}},nil} c["30% increased Stun Threshold"]={{[1]={flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=30}},nil} c["30% increased Stun Threshold if you haven't been Stunned Recently"]={{[1]={[1]={neg=true,type="Condition",var="StunnedRecently"},flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=30}},nil} @@ -2364,7 +2363,7 @@ c["31% increased Magnitude of Unholy Might buffs you grant You have Unholy Might c["32% increased Spell Damage while wielding a Melee Weapon"]={{[1]={[1]={type="Condition",var="UsingMeleeWeapon"},flags=2,keywordFlags=0,name="Damage",type="INC",value=32}},nil} c["33% increased Damage with Hits against Enemies affected by Ailments"]={{[1]={[1]={actor="enemy",type="ActorCondition",varList={[1]="Frozen",[2]="Chilled",[3]="Shocked",[4]="Ignited",[5]="Scorched",[6]="Brittle",[7]="Sapped",[8]="Poisoned",[9]="Bleeding"}},flags=0,keywordFlags=262144,name="Damage",type="INC",value=33}},nil} c["33% increased Mana Regeneration Rate"]={{[1]={flags=0,keywordFlags=0,name="ManaRegen",type="INC",value=33}},nil} -c["33% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=33}},nil} +c["33% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyHeavyStunBuildup",type="INC",value=33}},nil} c["33% of Elemental Damage Converted to Cold Damage"]={{[1]={flags=0,keywordFlags=0,name="ElementalDamageConvertToCold",type="BASE",value=33}},nil} c["33% of Elemental Damage Converted to Fire Damage"]={{[1]={flags=0,keywordFlags=0,name="ElementalDamageConvertToFire",type="BASE",value=33}},nil} c["33% of Elemental Damage Converted to Lightning Damage"]={{[1]={flags=0,keywordFlags=0,name="ElementalDamageConvertToLightning",type="BASE",value=33}},nil} @@ -2386,7 +2385,7 @@ c["35% increased Mana Regeneration Rate"]={{[1]={flags=0,keywordFlags=0,name="Ma c["35% increased Projectile Speed with this Weapon"]={{[1]={[1]={type="Condition",var="{Hand}Attack"},[2]={neg=true,skillType=167,type="SkillType"},flags=8192,keywordFlags=0,name="ProjectileSpeed",type="INC",value=35}},nil} c["35% increased Rarity of Items found"]={{[1]={flags=0,keywordFlags=0,name="LootRarity",type="INC",value=35}},nil} c["35% increased Spell Area Damage"]={{[1]={flags=514,keywordFlags=0,name="Damage",type="INC",value=35}},nil} -c["35% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=35}},nil} +c["35% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyHeavyStunBuildup",type="INC",value=35}},nil} c["35% increased Stun Threshold"]={{[1]={flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=35}},nil} c["35% increased amount of Life Leeched"]={{[1]={flags=0,keywordFlags=0,name="MaxLifeLeechRate",type="INC",value=35}},nil} c["35% less Armour and Evasion Rating"]={{[1]={flags=0,keywordFlags=0,name="ArmourAndEvasion",type="MORE",value=-35}},nil} @@ -2510,7 +2509,7 @@ c["40% increased Life and Mana Recovery from Flasks"]={{[1]={flags=0,keywordFlag c["40% increased Life and Mana Recovery from Flasks while you have an active Charm"]={{[1]={[1]={type="Condition",var="UsingCharm"},flags=0,keywordFlags=0,name="FlaskLifeRecovery",type="INC",value=40},[2]={[1]={type="Condition",var="UsingCharm"},flags=0,keywordFlags=0,name="FlaskManaRecovery",type="INC",value=40}},nil} c["40% increased Lightning Damage"]={{[1]={flags=0,keywordFlags=0,name="LightningDamage",type="INC",value=40}},nil} c["40% increased Lightning Damage while affected by Herald of Thunder"]={{[1]={[1]={type="Condition",var="AffectedByHeraldofThunder"},flags=0,keywordFlags=0,name="LightningDamage",type="INC",value=40}},nil} -c["40% increased Magnitude of Bleeding you inflict against Pinned Enemies"]={{[1]={flags=0,keywordFlags=4194304,name="AilmentMagnitude",type="INC",value=40}}," against Pinned Enemies "} +c["40% increased Magnitude of Bleeding you inflict against Pinned Enemies"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="Pinned"},flags=0,keywordFlags=4194304,name="AilmentMagnitude",type="INC",value=40}},nil} c["40% increased Magnitude of Shock you inflict with Critical Hits"]={{[1]={[1]={type="Condition",var="CriticalStrike"},flags=0,keywordFlags=0,name="EnemyShockMagnitude",type="INC",value=40}},nil} c["40% increased Mana Cost Efficiency"]={{[1]={flags=0,keywordFlags=0,name="ManaCostEfficiency",type="INC",value=40}},nil} c["40% increased Mana Recovery from Flasks"]={{[1]={flags=0,keywordFlags=0,name="FlaskManaRecovery",type="INC",value=40}},nil} @@ -2525,7 +2524,7 @@ c["40% increased Poison Duration"]={{[1]={flags=0,keywordFlags=0,name="EnemyPois c["40% increased Presence Area of Effect"]={{[1]={flags=0,keywordFlags=0,name="PresenceArea",type="INC",value=40}},nil} c["40% increased Projectile Damage"]={{[1]={flags=1024,keywordFlags=0,name="Damage",type="INC",value=40}},nil} c["40% increased Projectile Damage with Spears while there are no Enemies within 3m"]={{[1]={flags=268436484,keywordFlags=0,name="Damage",type="INC",value=40}}," while there are no Enemies within 3m "} -c["40% increased Projectile Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="ProjectileCount",type="INC",value=40}}," Stun Buildup "} +c["40% increased Projectile Stun Buildup"]={{[1]={flags=1024,keywordFlags=0,name="EnemyHeavyStunBuildup",type="INC",value=40}},nil} c["40% increased Rarity of Items found"]={{[1]={flags=0,keywordFlags=0,name="LootRarity",type="INC",value=40}},nil} c["40% increased Shock Duration"]={{[1]={flags=0,keywordFlags=0,name="EnemyShockDuration",type="INC",value=40}},nil} c["40% increased Skill Effect Duration"]={{[1]={flags=0,keywordFlags=0,name="Duration",type="INC",value=40}},nil} @@ -2534,7 +2533,7 @@ c["40% increased Spell Damage"]={{[1]={flags=2,keywordFlags=0,name="Damage",type c["40% increased Spell Damage if one of your Minions has died Recently"]={{[1]={[1]={type="Condition",var="MinionsDiedRecently"},flags=2,keywordFlags=0,name="Damage",type="INC",value=40}},nil} c["40% increased Spell Damage with Spells that cost Life"]={{[1]={[1]={stat="LifeCost",threshold=1,type="StatThreshold"},flags=2,keywordFlags=131072,name="Damage",type="INC",value=40}},nil} c["40% increased Spirit"]={{[1]={flags=0,keywordFlags=0,name="Spirit",type="INC",value=40}},nil} -c["40% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=40}},nil} +c["40% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyHeavyStunBuildup",type="INC",value=40}},nil} c["40% increased Stun Recovery"]={{[1]={flags=0,keywordFlags=0,name="StunRecovery",type="INC",value=40}},nil} c["40% increased Stun Threshold"]={{[1]={flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=40}},nil} c["40% increased Totem Damage"]={{[1]={flags=0,keywordFlags=16384,name="Damage",type="INC",value=40}},nil} @@ -3226,10 +3225,8 @@ c["All Damage from Hits against Bleeding targets Contributes to Chill Magnitude c["All Damage from Hits against Poisoned targets Contributes to Chill Magnitude"]={nil,"All Damage from Hits against Poisoned targets Contributes to Chill Magnitude "} c["All Damage from Hits against Poisoned targets Contributes to Chill Magnitude 25% increased Magnitude of Poison you inflict"]={nil,"All Damage from Hits against Poisoned targets Contributes to Chill Magnitude 25% increased Magnitude of Poison you inflict "} c["All Damage from Hits with this Weapon Contributes to Chill Magnitude"]={nil,"All Damage from Hits with this Weapon Contributes to Chill Magnitude "} -c["All Damage from Hits with this Weapon Contributes to Freeze Buildup"]={nil,"All Damage from Hits with this Weapon Contributes to Freeze Buildup "} -c["All Damage from Hits with this Weapon Contributes to Freeze Buildup Culling Strike against Frozen Enemies"]={nil,"All Damage from Hits with this Weapon Contributes to Freeze Buildup Culling Strike against Frozen Enemies "} -c["All Damage from Hits with this Weapon Contributes to Pin Buildup"]={nil,"All Damage from Hits with this Weapon Contributes to Pin Buildup "} -c["All Damage from Hits with this Weapon Contributes to Pin Buildup 30% increased Projectile Speed with this Weapon"]={nil,"All Damage from Hits with this Weapon Contributes to Pin Buildup 30% increased Projectile Speed with this Weapon "} +c["All Damage from Hits with this Weapon Contributes to Freeze Buildup"]={{[1]={[1]={type="Condition",var="{Hand}Attack"},flags=0,keywordFlags=0,name="CanFreeze",type="FLAG",value=true}},nil} +c["All Damage from Hits with this Weapon Contributes to Pin Buildup"]={{[1]={[1]={type="Condition",var="{Hand}Attack"},flags=0,keywordFlags=0,name="CanPin",type="FLAG",value=true}},nil} c["All Damage from you and Allies in your Presence"]={nil,"All Damage from you and "} c["All Damage from you and Allies in your Presence contributes to Flammability and Ignite Magnitudes"]={{[1]={flags=0,keywordFlags=0,name="ExtraAura",type="LIST",value={mod={flags=0,keywordFlags=0,name="ColdCanIgnite",type="FLAG",value=true}}},[2]={flags=0,keywordFlags=0,name="ExtraAura",type="LIST",value={mod={flags=0,keywordFlags=0,name="LightningCanIgnite",type="FLAG",value=true}}},[3]={flags=0,keywordFlags=0,name="ExtraAura",type="LIST",value={mod={flags=0,keywordFlags=0,name="ChaosCanIgnite",type="FLAG",value=true}}},[4]={flags=0,keywordFlags=0,name="ExtraAura",type="LIST",value={mod={flags=0,keywordFlags=0,name="PhysicalCanIgnite",type="FLAG",value=true}}}},nil} c["All Damage is taken from Mana before Life"]={{[1]={flags=0,keywordFlags=0,name="DamageTakenFromManaBeforeLife",type="BASE",value=100}},nil} @@ -3242,7 +3239,7 @@ c["All Flames of Chayula that you manifest are Blue"]={nil,"All Flames of Chayul c["All Flames of Chayula that you manifest are Purple"]={nil,"All Flames of Chayula that you manifest are Purple "} c["All Flames of Chayula that you manifest are Red"]={nil,"All Flames of Chayula that you manifest are Red "} c["All bonuses from Equipped Amulet apply to your Minions instead of you"]={{},nil} -c["All damage with this Weapon causes Electrocution buildup"]={nil,"All damage with this Weapon causes Electrocution buildup "} +c["All damage with this Weapon causes Electrocution buildup"]={{[1]={[1]={type="Condition",var="{Hand}Attack"},flags=0,keywordFlags=0,name="CanElectrocution",type="FLAG",value=true}},nil} c["Allies in your Presence Gain 20% of Damage as Extra Chaos Damage"]={{[1]={flags=0,keywordFlags=0,name="ExtraAura",type="LIST",value={mod={flags=0,keywordFlags=0,name="DamageGainAsChaos",type="BASE",value=20},onlyAllies=true}}},nil} c["Allies in your Presence Gain 25% of Damage as Extra Chaos Damage"]={{[1]={flags=0,keywordFlags=0,name="ExtraAura",type="LIST",value={mod={flags=0,keywordFlags=0,name="DamageGainAsChaos",type="BASE",value=25},onlyAllies=true}}},nil} c["Allies in your Presence Gain 25% of Damage as Extra Fire Damage"]={{[1]={flags=0,keywordFlags=0,name="ExtraAura",type="LIST",value={mod={flags=0,keywordFlags=0,name="DamageGainAsFire",type="BASE",value=25},onlyAllies=true}}},nil} @@ -4215,17 +4212,13 @@ c["Cannot use Projectile Attacks"]={{[1]={[1]={skillType=1,type="SkillType"},[2] c["Cannot use Shield Skills"]={{[1]={[1]={skillType=10,type="SkillType"},flags=0,keywordFlags=0,name="DisableSkill",type="FLAG",value=true}},nil} c["Cannot use Warcries"]={{[1]={[1]={skillType=63,type="SkillType"},flags=0,keywordFlags=0,name="DisableSkill",type="FLAG",value=true}},nil} c["Carry a Chest which adds 20 Inventory Slots"]={{},nil} -c["Causes 200% increased Stun Buildup"]={nil,"Causes 200% increased Stun Buildup "} -c["Causes 200% increased Stun Buildup All Damage from Hits with this Weapon Contributes to Chill Magnitude"]={nil,"Causes 200% increased Stun Buildup All Damage from Hits with this Weapon Contributes to Chill Magnitude "} -c["Causes 50% increased Stun Buildup"]={nil,"Causes 50% increased Stun Buildup "} -c["Causes 50% increased Stun Buildup 172% increased Physical Damage"]={nil,"Causes 50% increased Stun Buildup 172% increased Physical Damage "} -c["Causes 50% increased Stun Buildup 80% increased Physical Damage"]={nil,"Causes 50% increased Stun Buildup 80% increased Physical Damage "} -c["Causes 50% increased Stun Buildup Adds 85 to 131 Fire Damage"]={{[1]={flags=0,keywordFlags=0,name="FireMin",type="BASE",value=85},[2]={flags=0,keywordFlags=0,name="FireMax",type="BASE",value=131}},"Causes 50% increased "} -c["Causes 50% increased Stun Buildup Always deals Critical Hits against Heavy Stunned Enemies"]={nil,"Causes 50% increased Stun Buildup Always deals Critical Hits against Heavy Stunned Enemies "} -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 175% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyHeavyStunBuildup",type="INC",value=175}},nil} +c["Causes 200% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyHeavyStunBuildup",type="INC",value=200}},nil} +c["Causes 40% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyHeavyStunBuildup",type="INC",value=40}},nil} +c["Causes 50% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyHeavyStunBuildup",type="INC",value=50}},nil} +c["Causes 60% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="EnemyHeavyStunBuildup",type="INC",value=60}},nil} 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"]={{[1]={[1]={globalLimit=100,globalLimitKey="EnemyStunBuildupDoubledLimit",type="Multiplier",var="EnemyStunBuildupDoubled"},flags=0,keywordFlags=0,name="EnemyStunBuildup",type="MORE",value=100},[2]={flags=0,keywordFlags=0,name="Multiplier:EnemyStunBuildupDoubled",type="OVERRIDE",value=1}},nil} +c["Causes Double Stun Buildup"]={{[1]={[1]={globalLimit=100,globalLimitKey="EnemyHeavyStunBuildupDoubledLimit",type="Multiplier",var="EnemyHeavyStunBuildupDoubled"},flags=0,keywordFlags=0,name="EnemyHeavyStunBuildup",type="MORE",value=100},[2]={flags=0,keywordFlags=0,name="Multiplier:EnemyHeavyStunBuildupDoubled",type="OVERRIDE",value=1}},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,chance=1,keyOfScaledMod="chance",type="Physical"}},[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 "} @@ -4238,10 +4231,8 @@ c["Chance to Deflect is Lucky"]={{[1]={flags=0,keywordFlags=0,name="DeflectIsLuc c["Chance to Evade is Unlucky"]={{[1]={flags=0,keywordFlags=0,name="UnluckyEvade",type="FLAG",value=true}},nil} c["Chance to Hit with Attacks can exceed 100%"]={{[1]={[1]={skillType=1,type="Skilltype"},flags=0,keywordFlags=0,name="Condition:HitChanceCanExceed100",type="FLAG",value=true}},nil} c["Chaos Damage from Fire Spells Contributes to Flammability and Ignite Magnitudes"]={{[1]={[1]={skillType=2,type="SkillType"},[2]={skillType=28,type="SkillType"},flags=0,keywordFlags=0,name="ChaosCanIgnite",type="FLAG",value=true}},nil} -c["Chaos Damage from Hits also Contributes to Electrocute Buildup"]={nil,"Chaos Damage from Hits also Contributes to Electrocute Buildup "} -c["Chaos Damage from Hits also Contributes to Electrocute Buildup Attacks Gain 20% of Physical Damage as extra Chaos Damage"]={nil,"Chaos Damage from Hits also Contributes to Electrocute Buildup Attacks Gain 20% of Physical Damage as extra Chaos Damage "} -c["Chaos Damage from Hits also Contributes to Freeze Buildup"]={nil,"Chaos Damage from Hits also Contributes to Freeze Buildup "} -c["Chaos Damage from Hits also Contributes to Freeze Buildup Chaos Damage from Hits also Contributes to Electrocute Buildup"]={nil,"Chaos Damage from Hits also Contributes to Freeze Buildup Chaos Damage from Hits also Contributes to Electrocute Buildup "} +c["Chaos Damage from Hits also Contributes to Electrocute Buildup"]={{[1]={flags=0,keywordFlags=0,name="ChaosCanElectrocute",type="FLAG",value=true}},nil} +c["Chaos Damage from Hits also Contributes to Freeze Buildup"]={{[1]={flags=0,keywordFlags=0,name="ChaosCanFreeze",type="FLAG",value=true}},nil} c["Chaos Damage from Hits also Contributes to Shock Chance"]={{[1]={flags=0,keywordFlags=0,name="ChaosCanShock",type="FLAG",value=true}},nil} c["Chaos Resistance is doubled"]={{[1]={[1]={globalLimit=100,globalLimitKey="ChaosResistDoubledLimit",type="Multiplier",var="ChaosResistDoubled"},flags=0,keywordFlags=0,name="ChaosResist",type="MORE",value=100},[2]={flags=0,keywordFlags=0,name="Multiplier:ChaosResistDoubled",type="OVERRIDE",value=1}},nil} c["Chaos Resistance is zero"]={{[1]={flags=0,keywordFlags=0,name="ChaosResist",type="OVERRIDE",value=0}},nil} @@ -4417,7 +4408,7 @@ c["Empowered Attacks deal 20% increased Damage"]={{[1]={[1]={type="Condition",va c["Empowered Attacks deal 30% increased Damage"]={{[1]={[1]={type="Condition",var="Empowered"},flags=1,keywordFlags=0,name="Damage",type="INC",value=30}},nil} c["Empowered Attacks deal 50% increased Damage"]={{[1]={[1]={type="Condition",var="Empowered"},flags=1,keywordFlags=0,name="Damage",type="INC",value=50}},nil} c["Empowered Attacks deal 8% increased Damage"]={{[1]={[1]={type="Condition",var="Empowered"},flags=1,keywordFlags=0,name="Damage",type="INC",value=8}},nil} -c["Empowered Attacks have 50% increased Stun Buildup"]={{[1]={[1]={type="Condition",var="Empowered"},flags=1,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=50}},nil} +c["Empowered Attacks have 50% increased Stun Buildup"]={{[1]={[1]={type="Condition",var="Empowered"},flags=1,keywordFlags=0,name="EnemyHeavyStunBuildup",type="INC",value=50}},nil} c["Enemies Blinded by you have 15% reduced Critical Hit Chance"]={{[1]={flags=0,keywordFlags=0,name="EnemyModifier",type="LIST",value={mod={[1]={type="Condition",var="Blinded"},flags=0,keywordFlags=0,name="CritChance",type="INC",value=-15}}}},nil} c["Enemies Blinded by you have 50% reduced Critical Hit Chance"]={{[1]={flags=0,keywordFlags=0,name="EnemyModifier",type="LIST",value={mod={[1]={type="Condition",var="Blinded"},flags=0,keywordFlags=0,name="CritChance",type="INC",value=-50}}}},nil} c["Enemies Chilled by your Hits can be Shattered as though Frozen"]={nil,"your Hits can be Shattered as though Frozen "} @@ -4875,7 +4866,7 @@ c["Has 6 Rune Sockets"]={nil,"Has 6 Rune Sockets "} c["Hazards cannot be triggered for 3 seconds after being created"]={nil,"Hazards cannot be triggered for 3 seconds after being created "} c["Hazards have 15% chance to rearm after they are triggered"]={{[1]={[1]={skillType=203,type="SkillType"},flags=0,keywordFlags=0,name="HazardRearmChance",type="BASE",value=15}},nil} c["Hazards have 5% chance to rearm after they are triggered"]={{[1]={[1]={skillType=203,type="SkillType"},flags=0,keywordFlags=0,name="HazardRearmChance",type="BASE",value=5}},nil} -c["Heavy Stuns Enemies that are on Full Life"]={nil,"Heavy Stuns Enemies that are on Full Life "} +c["Heavy Stuns Enemies that are on Full Life"]={{[1]={flags=0,keywordFlags=0,name="EnemyModifier",type="LIST",value={mod={[1]={type="Condition",var="FullLife"},flags=0,keywordFlags=0,name="Condition:HeavyStunned",type="FLAG",value=true}}}},nil} c["Herald Skills deal 20% increased Damage"]={{[1]={[1]={skillType=52,type="SkillType"},flags=0,keywordFlags=0,name="Damage",type="INC",value=20}},nil} c["Herald Skills deal 30% increased Damage"]={{[1]={[1]={skillType=52,type="SkillType"},flags=0,keywordFlags=0,name="Damage",type="INC",value=30}},nil} c["Herald Skills have 25% increased Area of Effect"]={{[1]={[1]={skillType=52,type="SkillType"},flags=0,keywordFlags=0,name="AreaOfEffect",type="INC",value=25}},nil} @@ -5034,7 +5025,7 @@ c["Lightning Damage of Enemies Hitting you is Unlucky during effect"]={nil,"Ligh c["Lightning Resistance does not affect Lightning damage taken"]={{[1]={flags=0,keywordFlags=0,name="SelfIgnoreLightningResistance",type="FLAG",value=true}},nil} c["Lightning Resistance is unaffected by Area Penalties"]={nil,"Lightning Resistance is unaffected by Area Penalties "} c["Lightning Resistance is unaffected by Area Penalties You can only Socket Emerald Jewels in this item"]={nil,"Lightning Resistance is unaffected by Area Penalties You can only Socket Emerald Jewels in this item "} -c["Lightning damage from Hits Contributes to Electrocution Buildup"]={nil,"Lightning damage from Hits Contributes to Electrocution Buildup "} +c["Lightning damage from Hits Contributes to Electrocution Buildup"]={{[1]={flags=0,keywordFlags=0,name="LightningCanElectrocution",type="FLAG",value=true}},nil} c["Link Skills Link to 1 additional random target"]={nil,"Link Skills Link to 1 additional random target "} c["Link Skills can target Damageable Minions"]={{[1]={flags=0,keywordFlags=0,name="Condition:CanLinkToMinions",type="FLAG",value=true}},nil} c["Link Skills have 10% increased Buff Effect"]={{[1]={[1]={skillType=107,type="SkillType"},flags=0,keywordFlags=0,name="BuffEffect",type="INC",value=10}},nil} @@ -5109,7 +5100,7 @@ c["Minions Revive 5% faster"]={{[1]={flags=0,keywordFlags=0,name="MinionRevivalT c["Minions Revive 50% faster"]={{[1]={flags=0,keywordFlags=0,name="MinionRevivalTime",type="INC",value=-50}},nil} c["Minions cannot Die while affected by a Life Flask"]={nil,"cannot Die while affected by a Life Flask "} c["Minions cannot Die while affected by a Life Flask 30% increased Flask Charges gained"]={nil,"cannot Die while affected by a Life Flask 30% increased Flask Charges gained "} -c["Minions cause 15% increased Stun Buildup"]={nil,"cause 15% increased Stun Buildup "} +c["Minions cause 15% increased Stun Buildup"]={{[1]={flags=0,keywordFlags=0,name="MinionModifier",type="LIST",value={mod={flags=0,keywordFlags=0,name="EnemyHeavyStunBuildup",type="INC",value=15}}}},nil} c["Minions deal (25-35)% increased Damage"]={nil,"(25-35)% increased Damage "} c["Minions deal (8-13)% increased Damage"]={nil,"(8-13)% increased Damage "} c["Minions deal 1% increased damage per 10 Tribute"]={{[1]={flags=0,keywordFlags=0,name="MinionModifier",type="LIST",value={mod={[1]={actor="parent",div=10,stat="Tribute",type="PerStat"},flags=0,keywordFlags=0,name="Damage",type="INC",value=1}}}},nil} @@ -5242,8 +5233,8 @@ c["Other Modifiers to Movement Speed do not apply Other Modifiers to Movement Sp c["Pain Attunement"]={{[1]={flags=0,keywordFlags=0,name="Keystone",type="LIST",value="Pain Attunement"}},nil} c["Parried enemies take more Spell Damage instead of more Attack Damage"]={nil,"Parried enemies take more Spell Damage instead of more Attack Damage "} c["Parried enemies take more Spell Damage instead of more Attack Damage 100% increased Parried Debuff Duration"]={nil,"Parried enemies take more Spell Damage instead of more Attack Damage 100% increased Parried Debuff Duration "} -c["Parry has 20% increased Stun Buildup"]={{[1]={[1]={includeTransfigured=true,skillName="Parry",type="SkillName"},flags=0,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=20}},nil} -c["Parry has 25% increased Stun Buildup"]={{[1]={[1]={includeTransfigured=true,skillName="Parry",type="SkillName"},flags=0,keywordFlags=0,name="EnemyStunBuildup",type="INC",value=25}},nil} +c["Parry has 20% increased Stun Buildup"]={{[1]={[1]={includeTransfigured=true,skillName="Parry",type="SkillName"},flags=0,keywordFlags=0,name="EnemyHeavyStunBuildup",type="INC",value=20}},nil} +c["Parry has 25% increased Stun Buildup"]={{[1]={[1]={includeTransfigured=true,skillName="Parry",type="SkillName"},flags=0,keywordFlags=0,name="EnemyHeavyStunBuildup",type="INC",value=25}},nil} c["Parrying applies 10 Stacks of Critical Weakness"]={nil,"Parrying applies 10 Stacks of Critical Weakness "} c["Parrying applies 10 Stacks of Critical Weakness 100% increased Parry Damage"]={nil,"Parrying applies 10 Stacks of Critical Weakness 100% increased Parry Damage "} c["Passives in Radius can be Allocated without being connected to your tree"]={{[1]={flags=0,keywordFlags=0,name="JewelData",type="LIST",value={key="intuitiveLeapLike",value=true}}},nil} @@ -5283,8 +5274,8 @@ c["Passives in radius of Zealot's Oath can be Allocated without being connected c["Permanently Intimidate enemies on Block"]={{[1]={[1]={type="Condition",var="BlockedRecently"},flags=0,keywordFlags=0,name="EnemyModifier",type="LIST",value={mod={flags=0,keywordFlags=0,name="Condition:Intimidated",type="FLAG",value=true}}}},nil} c["Persistent Buffs have 50% less Reservation"]={{[1]={[1]={skillType=139,type="SkillType"},[2]={skillType=5,type="SkillType"},flags=0,keywordFlags=0,name="Reserved",type="MORE",value=-50}},nil} c["Physical Damage Reduction from Armour is based on your combined Armour and Evasion Rating"]={{[1]={flags=0,keywordFlags=0,name="EvasionAppliesToPhysicalDamageTaken",type="BASE",value=100}},nil} -c["Physical Damage is Pinning"]={nil,"Physical Damage is Pinning "} -c["Physical Spell Critical Hits build Pin"]={nil,"Physical Spell Critical Hits build Pin "} +c["Physical Damage is Pinning"]={{[1]={flags=0,keywordFlags=0,name="PhysicalCanPin",type="FLAG",value=true}},nil} +c["Physical Spell Critical Hits build Pin"]={{[1]={[1]={type="Condition",var="CriticalStrike"},flags=2,keywordFlags=16,name="CanPin",type="FLAG",value=true}},nil} c["Pin Enemies which are Primed for Pinning"]={nil,"Pin Enemies which are Primed for Pinning "} c["Pin Enemies which are Primed for Pinning Require 5 fewer enemies to be Surrounded"]={nil,"Pin Enemies which are Primed for Pinning Require 5 fewer enemies to be Surrounded "} c["Pinned Enemies cannot deal Critical Hits"]={{[1]={flags=0,keywordFlags=0,name="EnemyModifier",type="LIST",value={mod={[1]={type="Condition",var="Pinned"},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="Pinned"},flags=0,keywordFlags=0,name="Condition:NeverCrit",type="FLAG",value=true}}}},nil} diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index fee6bd204..3db349aab 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -776,9 +776,9 @@ local modNameList = { ["effect of chill on you"] = "SelfChillEffect", ["effect of freeze on you"] = "SelfFreezeEffect", ["effect of shock on you"] = "SelfShockEffect", - ["effect of non-damaging ailments"] = { "EnemyShockMagnitude", "EnemyChillMagnitude", "EnemyFreezeEffect" }, - ["effect of non-damaging ailments you inflict"] = { "EnemyShockMagnitude", "EnemyChillMagnitude", "EnemyFreezeEffect" }, - ["magnitude of non-damaging ailments you inflict"] = { "EnemyShockMagnitude", "EnemyChillMagnitude", "EnemyFreezeEffect" }, + ["effect of non-damaging ailments"] = { "EnemyShockMagnitude", "EnemyChillMagnitude", "EnemyFreezeBuildup" }, + ["effect of non-damaging ailments you inflict"] = { "EnemyShockMagnitude", "EnemyChillMagnitude", "EnemyFreezeBuildup" }, + ["magnitude of non-damaging ailments you inflict"] = { "EnemyShockMagnitude", "EnemyChillMagnitude", "EnemyFreezeBuildup" }, ["shock duration"] = "EnemyShockDuration", ["duration of shocks you inflict"] = "EnemyShockDuration", ["shock duration on you"] = "SelfShockDuration", @@ -836,7 +836,8 @@ local modNameList = { ["to inflict daze"] = "DazeChance", -- Build-up effects ["electrocute buildup"] = "EnemyElectrocuteBuildup", - ["stun buildup"] = "EnemyStunBuildup", + ["stun buildup"] = "EnemyHeavyStunBuildup", + ["projectile stun buildup"] = { "EnemyHeavyStunBuildup", flags = ModFlag.Projectile }, ["freeze buildup"] = "EnemyFreezeBuildup", ["pin buildup"] = "EnemyPinBuildup", ["immobilisation buildup"] = "EnemyImmobilisationBuildup", @@ -1166,12 +1167,13 @@ local preFlagList = { ["^hits deal "] = { keywordFlags = KeywordFlag.Hit }, ["^melee weapon damage"] = { flags = ModFlag.WeaponMelee }, ["^deal "] = { }, + ["^causes "] = { }, ["^arrows deal "] = { flags = ModFlag.Bow }, ["^critical hits deal "] = { tag = { type = "Condition", var = "CriticalStrike" } }, ["^poisons you inflict with critical hits have "] = { keywordFlags = bor(KeywordFlag.Poison, KeywordFlag.MatchAll), tag = { type = "Condition", var = "CriticalStrike" } }, -- Add to minion ["^minions "] = { addToMinion = true }, - ["^minions [thd][ae][kva][el] "] = { addToMinion = true }, + ["^minions [cthd][ae][ukva][sel]e? "] = { addToMinion = true }, ["^while a unique enemy is in your presence, minions [hd][ae][va][el] "] = { addToMinion = true, playerTag = { type = "ActorCondition", actor = "enemy", var = "RareOrUnique" } }, ["^while a pinnacle atlas boss is in your presence, minions [hd][ae][va][el] "] = { addToMinion = true, playerTag = { type = "ActorCondition", actor = "enemy", var = "PinnacleBoss" } }, ["^minions leech "] = { addToMinion = true }, @@ -1998,6 +2000,7 @@ local modTagList = { ["against unique enemies"] = { tag = { type = "ActorCondition", actor = "enemy", var = "RareOrUnique" } }, ["against enemies on full life"] = { tag = { type = "ActorCondition", actor = "enemy", var = "FullLife" } }, ["against enemies that are on full life"] = { tag = { type = "ActorCondition", actor = "enemy", var = "FullLife" } }, + ["that are on full life"] = { tag = { type = "ActorCondition", actor = "enemy", var = "FullLife" } }, ["against enemies on low life"] = { tag = { type = "ActorCondition", actor = "enemy", var = "LowLife" } }, ["against enemies that are on low life"] = { tag = { type = "ActorCondition", actor = "enemy", var = "LowLife" } }, ["to enemies which have energy shield"] = { tag = { type = "ActorCondition", actor = "enemy", var = "HaveEnergyShield" }, keywordFlags = bor(KeywordFlag.Hit, KeywordFlag.Ailment) }, @@ -2007,6 +2010,7 @@ local modTagList = { ["against heavy stunned enemies"] = { tag = { type = "ActorCondition", actor = "enemy", var = "HeavyStunned" } }, ["against enemies with fully broken armour"] = { tag = { type = "ActorCondition", actor = "enemy", var = "ArmourFullyBroken" } }, ["against enemies with exposure"] = { tag = { type = "ActorCondition", actor = "enemy", var = "HasExposure" } }, + ["against pinned enemies"] = { tag = { type = "ActorCondition", actor = "enemy", var = "Pinned" } }, ["against immobilised enemies"] = { tag = { type = "ActorCondition", actor = "enemy", var = "Immobilised" } }, ["on cursed enemies"] = { tag = { type = "ActorCondition", actor = "enemy", var = "Cursed" } }, ["of cursed enemies'"] = { tag = { type = "ActorCondition", actor = "enemy", var = "Cursed" } }, @@ -2062,7 +2066,7 @@ local modTagList = { ["by s?l?a?i?n? ?frozen enemies"] = { tag = { type = "ActorCondition", actor = "enemy", var = "Frozen" } }, ["by s?l?a?i?n? ?shocked enemies"] = { tag = { type = "ActorCondition", actor = "enemy", var = "Shocked" } }, ["against enemies further than (%d+)m"] = function(num) return { tag = { type = "MultiplierThreshold", var = "enemyDistance", threshold = num * 10 } } end, - ["against enemies within (%d+)m"] = function(num) return { tag = { type = "MultiplierThreshold", var = "enemyDistance", threshold = num * 10, upper = true } } end, + ["against enemies within (%d+) ?me?t?r?e?s?"] = function(num) return { tag = { type = "MultiplierThreshold", var = "enemyDistance", threshold = num * 10, upper = true } } end, -- Enemy multipliers ["per freeze, shock [ao][nr]d? ignite on enemy"] = { tag = { type = "Multiplier", var = "FreezeShockIgniteOnEnemy" } }, ["per poison affecting enemy"] = { tag = { type = "Multiplier", actor = "enemy", var = "PoisonStack" } }, @@ -3577,6 +3581,7 @@ local specialModList = { ["gain a flask charge when you deal a critical hit while at maximum frenzy charges"] = { mod("FlaskChargeOnCritChance", "BASE", 100, { type = "StatThreshold", stat = "FrenzyCharges", thresholdStat = "FrenzyChargesMax" }) }, ["enemies poisoned by you cannot deal critical hits"] = { mod("EnemyModifier", "LIST", { mod = flag("NeverCrit", { type = "Condition", var = "Poisoned" }) }), mod("EnemyModifier", "LIST", { mod = flag("Condition:NeverCrit", { type = "Condition", var = "Poisoned" })}) }, ["pinned enemies cannot deal critical hits"] = { mod("EnemyModifier", "LIST", { mod = flag("NeverCrit", { type = "Condition", var = "Pinned" }) }), mod("EnemyModifier", "LIST", { mod = flag("Condition:NeverCrit", { type = "Condition", var = "Pinned" })}) }, + ["physical spell critical hits build pin"] = { flag("CanPin", nil, ModFlag.Spell, KeywordFlag.Physical, { type = "Condition", var = "CriticalStrike" }) }, ["enemies you mark cannot deal critical hits"] = { mod("EnemyModifier", "LIST", { mod = flag("NeverCrit", { type = "Condition", var = "Marked" }) }), mod("EnemyModifier", "LIST", { mod = flag("Condition:NeverCrit", { type = "Condition", var = "Marked" })}) }, ["hits against you cannot be critical hits if you've been stunned recently"] = { mod("EnemyModifier", "LIST", { mod = flag("NeverCrit") }, {type = "Condition", var = "StunnedRecently" }), mod("EnemyModifier", "LIST", { mod = flag("Condition:NeverCrit")}, {type = "Condition", var = "StunnedRecently" })}, ["nearby enemies cannot deal critical hits"] = { mod("EnemyModifier", "LIST", { mod = flag("NeverCrit") }), mod("EnemyModifier", "LIST", { mod = flag("Condition:NeverCrit") }) }, @@ -3629,6 +3634,18 @@ local specialModList = { flag("FireCanChill", { type = "Condition", var = "UsingMace" }), flag("ChaosCanChill", { type = "Condition", var = "UsingMace" }) }, + ["(%a+) damage from hits ?a?l?s?o? contributes to (%a+%s*%a*) buildup"] = function(_, damage, ailment)return { + flag(firstToUpper(damage) .. "Can" .. ailment:gsub("^%l", string.upper):gsub(" %l", string.upper):gsub(" ", "")) + } end, + ["all damage with this weapon causes (%a+%s*%a*) buildup"] = function(_, ailment)return { + flag("Can" .. ailment:gsub("^%l", string.upper):gsub(" %l", string.upper):gsub(" ", ""), { type = "Condition", var = "{Hand}Attack" }) + } end, + ["all damage from hits with this weapon contributes to (%a+%s*%a*) buildup"] = function(_, ailment)return { + flag("Can" .. ailment:gsub("^%l", string.upper):gsub(" %l", string.upper):gsub(" ", ""), { type = "Condition", var = "{Hand}Attack" }) + } end, + ["(%a+) damage is pinning"] = function(_, damage)return { + flag(firstToUpper(damage) .. "CanPin") + } end, ["your cold damage can ignite"] = { flag("ColdCanIgnite") }, ["your lightning damage can ignite"] = { flag("LightningCanIgnite") }, ["all damage from lightning strike and frost blades hits can ignite"] = { @@ -3731,7 +3748,7 @@ local specialModList = { ["non%-damaging elemental ailments you inflict have (%d+)%% more effect"] = function(num) return { mod("EnemyShockMagnitude", "MORE", num), mod("EnemyChillMagnitude", "MORE", num), - mod("EnemyFreezeEffect", "MORE", num), + mod("EnemyFreezeBuildup", "MORE", num), } end, ["immun[ei]t?y? to elemental ailments while on consecrated ground if you have at least (%d+) devotion"] = function(num) return { flag("ElementalAilmentImmune", { type = "Condition", var = "OnConsecratedGround" }, { type = "StatThreshold", stat = "Devotion", threshold = num }), } end, ["freeze enemies as though dealing (%d+)%% more damage"] = function(num) return { mod("FreezeAsThoughDealing", "MORE", num) } end, @@ -5041,6 +5058,7 @@ local specialModList = { flag("AddESToStunThreshold"), mod("ESToStunThresholdPercent", "BASE", num), } end, + ["heavy stuns enemies that are on full life"] = { mod("EnemyModifier", "LIST", { mod = flag("Condition:HeavyStunned", { type = "Condition", var = "FullLife" }) }) }, ["(%d+)%% increased armour per second you've been stationary, up to a maximum of (%d+)%%"] = function(num, _, limit) return { mod("Armour", "INC", num, { type = "Multiplier", var = "StationarySeconds", limit = tonumber(limit / num) }, { type = "Condition", var = "Stationary" }), } end, From 2c6bd44a03ec82c03f37f47fe72a750d56fb7d99 Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Thu, 18 Sep 2025 10:45:25 +1000 Subject: [PATCH 13/23] Fix breakdown --- src/Modules/CalcOffence.lua | 10 ++-------- src/Modules/CalcSections.lua | 13 ++++++++----- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/src/Modules/CalcOffence.lua b/src/Modules/CalcOffence.lua index 9161ccdcf..8fef1ecf6 100644 --- a/src/Modules/CalcOffence.lua +++ b/src/Modules/CalcOffence.lua @@ -4352,8 +4352,6 @@ function calcs.offence(env, actor, activeSkill) -- Calculate ailment thresholds local enemyThreshold = data.monsterAilmentThresholdTable[env.enemyLevel] * calcLib.mod(enemyDB, nil, "AilmentThreshold") output['EnemyAilmentThreshold'] = enemyThreshold - local enemyPoiseThreshold = data.monsterPoiseThresholdTable[env.enemyLevel] * calcLib.mod(enemyDB, nil, "PoiseThreshold") - output['EnemyPoiseThreshold'] = enemyPoiseThreshold -- Calculate ailments and debuffs (poison, bleed, ignite, impale, exposure, etc) @@ -4384,7 +4382,7 @@ function calcs.offence(env, actor, activeSkill) -- check against input valid types if ((defaultDamageTypes and defaultDamageTypes[damageType]) or (ailmentData[ailmentType] and damageType == ailmentData[ailmentType].associatedType)) then - if skillModList:Flag(cfg, damageType.."Cannot"..ailmentType) then + if skillModList:Flag(cfg, damageType.."Cannot"..ailmentType) or skillModList:Flag(cfg, "Cannot"..ailmentType) then return false end return true @@ -4894,6 +4892,7 @@ function calcs.offence(env, actor, activeSkill) -- Calculate poise-related debuffs for _, ailment in ipairs({"Freeze", "Electrocute", "HeavyStun", "Pin"}) do + local enemyPoiseThreshold = data.monsterPoiseThresholdTable[env.enemyLevel] * calcLib.mod(enemyDB, nil, "PoiseThreshold", "Enemy"..ailment.."Threshold") local hitMin, hitMax, critMin, critMax = calcMinMaxUnmitigatedAilmentSourceDamage(ailment, data.buildupTypes[ailment].ScalesFrom) -- TODO: average for now, can do more complicated calculation later local hitAvg = hitMin + (hitMax - hitMin) / 2 @@ -4904,11 +4903,7 @@ function calcs.offence(env, actor, activeSkill) hitPoiseBuildup = hitPoiseBuildup * (1 + inc / 100) * more * 100 local critPoiseBuildup = critAvg * data.gameConstants[ailment .. "DamageScale"] / enemyPoiseThreshold critPoiseBuildup = critPoiseBuildup * (1 + inc / 100) * more * 100 - - - - if skillFlags.hit and not skillModList:Flag(cfg, "Cannot"..ailment) then globalOutput[ailment .. "BuildupOnHit"] = m_min(100, hitPoiseBuildup) globalOutput[ailment .. "BuildupOnCrit"] = m_min(100, critPoiseBuildup) @@ -4918,7 +4913,6 @@ function calcs.offence(env, actor, activeSkill) end if breakdown then - local displayedAilment = ailment globalBreakdown[ailment .. "Buildup"] = { "Enemy level: " .. env.enemyLevel .. (env.configInput.enemyLevel and " ^8(overridden from the Configuration tab" or " ^8(can be overridden in the Configuration tab)"), "Enemy poise: " .. enemyPoiseThreshold, diff --git a/src/Modules/CalcSections.lua b/src/Modules/CalcSections.lua index 8e528a260..b10e81863 100644 --- a/src/Modules/CalcSections.lua +++ b/src/Modules/CalcSections.lua @@ -1205,7 +1205,6 @@ return { } }, { 1, "EleAilments", 1, colorCodes.OFFENCE, {{ defaultCollapsed = false, label = "Non-Damaging Ailments", data = { { label = "Enemy Ail. Thresh.", { format = "{0:output:EnemyAilmentThreshold}", { modName = "EnemyAilmentThreshold" }, }, }, - { label = "Enemy Poise", { format = "{0:output:EnemyPoiseThreshold}", { modName = "EnemyPoiseThreshold" }, }, }, { label = "Scorch Effect Mod", bgCol = colorCodes.SCORCHBG, flag = "scorch", { format = "x {2:output:ScorchEffectMod}", { breakdown = "ScorchEffectMod" }, { breakdown = "MainHand.ScorchDPS" }, @@ -1368,19 +1367,23 @@ return { }, }, { label = "Freeze Buildup", haveOutput = "FreezeBuildupOnHit", { format = "{1:output:FreezeBuildupOnHit}%", { breakdown = "FreezeBuildup" }, - { label = "Player modifiers", modName = { "EnemyFreezeBuildup", "EnemyImmobilisationBuildup" } }, + { label = "Player modifiers", modName = { "EnemyFreezeBuildup", "EnemyImmobilisationBuildup" }, cfg = "skill" }, + { label = "Enemy modifiers", modName = { "PoiseThreshold", "EnemyFreezeThreshold" }, enemy = true }, }, }, { label = "Electrocute Buildup", haveOutput = "ElectrocuteBuildupOnHit", { format = "{1:output:ElectrocuteBuildupOnHit}%", { breakdown = "ElectrocuteBuildup" }, - { label = "Player modifiers", modName = { "EnemyElectrocuteBuildup", "EnemyImmobilisationBuildup" } }, + { label = "Player modifiers", modName = { "EnemyElectrocuteBuildup", "EnemyImmobilisationBuildup" }, cfg = "skill" }, + { label = "Enemy modifiers", modName = { "PoiseThreshold", "EnemyElectrocuteThreshold" }, enemy = true }, }, }, { label = "Stun Buildup", haveOutput = "HeavyStunBuildupOnHit", { format = "{1:output:HeavyStunBuildupOnHit}%", { breakdown = "HeavyStunBuildup" }, - { label = "Player modifiers", modName = { "EnemyHeavyStunBuildup", "EnemyImmobilisationBuildup" } }, + { label = "Player modifiers", modName = { "EnemyHeavyStunBuildup", "EnemyImmobilisationBuildup" }, cfg = "skill" }, + { label = "Enemy modifiers", modName = { "PoiseThreshold", "EnemyHeavyStunThreshold" }, enemy = true }, }, }, { label = "Pin Buildup", haveOutput = "PinBuildupOnHit", { format = "{1:output:PinBuildupOnHit}%", { breakdown = "PinBuildup" }, - { label = "Player modifiers", modName = { "EnemyElectrocuteBuildup", "EnemyFreezeBuildup", "EnemyHeavyStunBuildup", "EnemyPinBuildup", "EnemyImmobilisationBuildup" } }, + { label = "Player modifiers", modName = { "EnemyPinBuildup", "EnemyImmobilisationBuildup" }, cfg = "skill" }, + { label = "Enemy modifiers", modName = { "PoiseThreshold", "EnemyPinThreshold" }, enemy = true }, }, }, } } } }, From 23a709a4ff7e389c00bb6335c58bcd7ffa840590 Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Thu, 18 Sep 2025 11:04:19 +1000 Subject: [PATCH 14/23] Add support for a lot of skills with buildups --- src/Data/SkillStatMap.lua | 58 ++++++++++++++++++++++++++++++----- src/Data/Skills/sup_dex.lua | 4 +-- src/Data/Skills/sup_str.lua | 14 +++++++-- src/Export/Skills/sup_dex.txt | 4 +-- src/Export/Skills/sup_str.txt | 14 +++++++-- src/Modules/CalcOffence.lua | 47 +++++++++++++++------------- src/Modules/CalcSections.lua | 4 +-- 7 files changed, 105 insertions(+), 40 deletions(-) diff --git a/src/Data/SkillStatMap.lua b/src/Data/SkillStatMap.lua index 8c5872416..bc504f5cb 100644 --- a/src/Data/SkillStatMap.lua +++ b/src/Data/SkillStatMap.lua @@ -1138,6 +1138,9 @@ return { ["skill_overwhelming_pressure_aura_enemy_ailment_threshold_+%"] = { mod("AilmentThreshold", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Debuff", effectName = "Overwhelming Presence"}), }, +["skill_overwhelming_pressure_aura_enemy_stun_threshold_+%"] = { + mod("EnemyStunThreshold", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Debuff", effectName = "Overwhelming Presence"}), +}, ["bleed_on_hit_with_attacks_%"] = { mod("BleedChance", "BASE", nil, ModFlag.Attack), }, @@ -1275,10 +1278,13 @@ return { ["active_skill_shock_effect_+%_final"] = { mod("EnemyShockMagnitude", "MORE", nil), }, +["active_skill_electrocutes_as_though_dealt_damage_+%_final"] = { + mod("EnemyElectrocuteBuildup", "MORE", nil), +}, ["non_damaging_ailment_effect_+%"] = { mod("EnemyChillMagnitude", "INC", nil), mod("EnemyShockMagnitude", "INC", nil), - mod("EnemyFreezeEffect", "INC", nil), + mod("EnemyFreezeBuildup", "INC", nil), }, ["lightning_ailment_effect_+%"] = { mod("EnemyShockMagnitude", "INC", nil), @@ -1293,10 +1299,16 @@ return { }, ["cold_ailment_effect_+%"] = { mod("EnemyChillMagnitude", "INC", nil), - mod("EnemyFreezeEffect", "INC", nil), + mod("EnemyFreezeBuildup", "INC", nil), +}, +["hit_damage_freeze_multiplier_+%"] = { + mod("EnemyFreezeBuildup", "INC", nil), }, ["active_skill_hit_damage_freeze_multiplier_+%_final"] = { - mod("EnemyFreezeEffect", "MORE", nil), + mod("EnemyFreezeBuildup", "MORE", nil), +}, +["support_hypothermia_hit_damage_freeze_multiplier_+%_final"] = { + mod("EnemyFreezeBuildup", "MORE", nil), }, ["base_poison_effect_+%"] = { mod("AilmentEffect", "INC", nil), @@ -1403,6 +1415,10 @@ return { ["shock_minimum_damage_taken_increase_%+"] = { mod("ShockMinimum", "BASE", nil), }, +["active_skill_pins_as_though_dealt_damage_+%_final"] = { + mod("EnemyPinBuildup", "MORE", nil), +}, + -- Global flags ["never_ignite"] = { flag("CannotIgnite"), @@ -1420,6 +1436,13 @@ return { ["never_chill"] = { flag("CannotChill"), }, +["cannot_pin"] = { + flag("CannotPin"), +}, +["cannot_stun"] = { + flag("CannotHeavyStun"), + flag("CannotStun"), +}, ["cannot_cause_bleeding"] = { flag("CannotBleed"), }, @@ -1472,6 +1495,9 @@ return { flag("FireCanShock"), flag("ChaosCanShock"), }, +["chaos_damage_can_freeze"] = { + flag("ChaosCanFreeze"), +}, ["base_chaos_damage_can_ignite"] = { flag("ChaosCanIgnite"), }, @@ -1479,7 +1505,16 @@ return { flag("LightningCanElectrocute"), }, ["base_all_damage_can_pin"] = { - { flag("CanPin") }, + flag("CanPin"), +}, +["support_pin_physical_damage_can_pin"] = { + flag("PhysicalCanPin"), +}, +["support_pin_buildup_pin_instead_of_stun"] = { + flag("PinBuildupInsteadOfHeavyStunBuildup"), +}, +["support_pin_pin_buildup_+%_final"] = { + mod("EnemyPinBuildup", "MORE", nil), }, ["is_hazard"] = { flag("CanCreateHazards"), @@ -1497,6 +1532,15 @@ return { mod("EnemyImpalePhysicalDamageReduction", "BASE", nil), mult = -1, }, +["support_brink_hit_damage_stun_multiplier_+%_final"] = { + mod("EnemyHeavyStunBuildup", "MORE", nil), +}, +["active_skill_hit_damage_stun_multiplier_+%_final"] = { + mod("EnemyHeavyStunBuildup", "MORE", nil), +}, +["active_skill_minion_hit_damage_stun_multiplier_+%_final"] = { + mod("MinionModifier", "LIST", { mod = mod("EnemyHeavyStunBuildup", "MORE", nil) }), +}, ["base_stun_duration_+%"] = { mod("EnemyStunDuration", "INC", nil), }, @@ -2592,9 +2636,6 @@ return { ["armour_break_physical_damage_%_dealt_as_armour_break"] = { flag("Condition:CanArmourBreak", { type = "GlobalEffect", effectType = "Buff", effectName = "ArmourBreak" }), }, -["active_skill_pins_as_though_dealt_damage_+%_final"] = { - mod("EnemyPinBuildup", "MORE", nil), -}, -- -- Spectre or Minion-specific stats -- @@ -2794,4 +2835,7 @@ return { ["quality_display_supercharged_slam_is_gem"] = { -- Display Only }, +["quality_display_active_skill_pins_as_though_dealt_damage_+%_final_is_gem"] = { + -- Display Only +}, } diff --git a/src/Data/Skills/sup_dex.lua b/src/Data/Skills/sup_dex.lua index ea62c1a21..d522da58f 100644 --- a/src/Data/Skills/sup_dex.lua +++ b/src/Data/Skills/sup_dex.lua @@ -1334,8 +1334,8 @@ skills["SupportCommiseratePlayer"] = { mod("AilmentMagnitude", "MORE", nil, 0, KeywordFlag.Poison, { type = "Condition", var = "Poisoned" }), mod("EnemyShockMagnitude", "MORE", nil, 0, 0, { type = "Condition", var = "Shocked" }), mod("EnemyChillMagnitude", "MORE", nil, 0, 0, { type = "Condition", var = "Chilled" }), - mod("EnemyFreezeEffect", "MORE", nil, 0, 0, { type = "Condition", var = "Frozen" }), - mod("EnemyElectrocuteEffect", "MORE", nil, 0, 0, { type = "Condition", var = "Electrocuted" }), + mod("EnemyFreezeBuildup", "MORE", nil, 0, 0, { type = "Condition", var = "Frozen" }), + mod("EnemyElectrocuteBuildup", "MORE", nil, 0, 0, { type = "Condition", var = "Electrocuted" }), }, }, baseFlags = { diff --git a/src/Data/Skills/sup_str.lua b/src/Data/Skills/sup_str.lua index 1f726c50a..027debf8e 100644 --- a/src/Data/Skills/sup_str.lua +++ b/src/Data/Skills/sup_str.lua @@ -5600,6 +5600,14 @@ skills["RuthlessSupportPlayer"] = { label = "Ruthless", incrementalEffectiveness = 0.092720001935959, statDescriptionScope = "gem_stat_descriptions", + statMap = { + ["support_ruthless_big_hit_max_count"] = { + mod("RuthlessBlowMaxCount", "BASE", nil), + }, + ["support_ruthless_big_hit_stun_damage_+%_final"] = { + mod("RuthlessBlowStunMultiplier", "BASE", nil), + }, + }, baseFlags = { }, constantStats = { @@ -6224,7 +6232,7 @@ skills["SupportStunPlayer"] = { statDescriptionScope = "gem_stat_descriptions", statMap = { ["support_overpower_hit_damage_stun_multiplier_+%_final"] = { - mod("StunBuildup", "MORE", nil), + mod("EnemyHeavyStunBuildup", "MORE", nil), }, }, baseFlags = { @@ -6259,7 +6267,7 @@ skills["SupportStunPlayerTwo"] = { statDescriptionScope = "gem_stat_descriptions", statMap = { ["support_overpower_hit_damage_stun_multiplier_+%_final"] = { - mod("StunBuildup", "MORE", nil), + mod("EnemyHeavyStunBuildup", "MORE", nil), }, }, baseFlags = { @@ -6294,7 +6302,7 @@ skills["SupportStunPlayerThree"] = { statDescriptionScope = "gem_stat_descriptions", statMap = { ["support_overpower_hit_damage_stun_multiplier_+%_final"] = { - mod("StunBuildup", "MORE", nil), + mod("EnemyHeavyStunBuildup", "MORE", nil), }, ["support_overpower_damage_+%_final"] = { mod("Damage", "MORE", nil), diff --git a/src/Export/Skills/sup_dex.txt b/src/Export/Skills/sup_dex.txt index 73921bd27..8821c5293 100644 --- a/src/Export/Skills/sup_dex.txt +++ b/src/Export/Skills/sup_dex.txt @@ -292,8 +292,8 @@ statMap = { mod("AilmentMagnitude", "MORE", nil, 0, KeywordFlag.Poison, { type = "Condition", var = "Poisoned" }), mod("EnemyShockMagnitude", "MORE", nil, 0, 0, { type = "Condition", var = "Shocked" }), mod("EnemyChillMagnitude", "MORE", nil, 0, 0, { type = "Condition", var = "Chilled" }), - mod("EnemyFreezeEffect", "MORE", nil, 0, 0, { type = "Condition", var = "Frozen" }), - mod("EnemyElectrocuteEffect", "MORE", nil, 0, 0, { type = "Condition", var = "Electrocuted" }), + mod("EnemyFreezeBuildup", "MORE", nil, 0, 0, { type = "Condition", var = "Frozen" }), + mod("EnemyElectrocuteBuildup", "MORE", nil, 0, 0, { type = "Condition", var = "Electrocuted" }), }, }, #mods diff --git a/src/Export/Skills/sup_str.txt b/src/Export/Skills/sup_str.txt index 20c3bb1e2..e81f61782 100644 --- a/src/Export/Skills/sup_str.txt +++ b/src/Export/Skills/sup_str.txt @@ -1302,6 +1302,14 @@ statMap = { #skill RuthlessSupportPlayer #set RuthlessSupportPlayer +statMap = { + ["support_ruthless_big_hit_max_count"] = { + mod("RuthlessBlowMaxCount", "BASE", nil), + }, + ["support_ruthless_big_hit_stun_damage_+%_final"] = { + mod("RuthlessBlowStunMultiplier", "BASE", nil), + }, +}, #mods #skillEnd @@ -1445,7 +1453,7 @@ statMap = { #set SupportStunPlayer statMap = { ["support_overpower_hit_damage_stun_multiplier_+%_final"] = { - mod("StunBuildup", "MORE", nil), + mod("EnemyHeavyStunBuildup", "MORE", nil), }, }, #mods @@ -1455,7 +1463,7 @@ statMap = { #set SupportStunPlayerTwo statMap = { ["support_overpower_hit_damage_stun_multiplier_+%_final"] = { - mod("StunBuildup", "MORE", nil), + mod("EnemyHeavyStunBuildup", "MORE", nil), }, }, #mods @@ -1465,7 +1473,7 @@ statMap = { #set SupportStunPlayerThree statMap = { ["support_overpower_hit_damage_stun_multiplier_+%_final"] = { - mod("StunBuildup", "MORE", nil), + mod("EnemyHeavyStunBuildup", "MORE", nil), }, ["support_overpower_damage_+%_final"] = { mod("Damage", "MORE", nil), diff --git a/src/Modules/CalcOffence.lua b/src/Modules/CalcOffence.lua index 8fef1ecf6..107c47810 100644 --- a/src/Modules/CalcOffence.lua +++ b/src/Modules/CalcOffence.lua @@ -770,6 +770,17 @@ function calcs.offence(env, actor, activeSkill) end end end + if skillModList:Flag(nil, "PinBuildupInsteadOfHeavyStunBuildup") then + -- Fortifying Cry mod + for i, value in ipairs(skillModList:Tabulate("INC", { }, "EnemyHeavyStunBuildup")) do + local mod = value.mod + skillModList:NewMod("EnemyPinBuildup", mod.type, mod.value, mod.source, mod.flags, mod.keywordFlags, unpack(mod)) + end + for i, value in ipairs(skillModList:Tabulate("MORE", { }, "EnemyHeavyStunBuildup")) do + local mod = value.mod + skillModList:NewMod("EnemyPinBuildup", mod.type, mod.value, mod.source, mod.flags, mod.keywordFlags, unpack(mod)) + end + end if skillModList:Flag(nil, "ProjectileSpeedAppliesToProjectileDamage") then -- Projectile speed to projectile damage conversion for i, value in ipairs(skillModList:Tabulate("INC", { }, "ProjectileSpeed")) do @@ -3196,28 +3207,25 @@ function calcs.offence(env, actor, activeSkill) end end end - - output.RuthlessBlowHitEffect = 1 - output.RuthlessBlowAilmentEffect = 1 + output.FistOfWarDamageEffect = 1 if env.mode_combat then local ruthlessEffect = env.configInput.ruthlessSupportMode or "AVERAGE" - -- Calculate Ruthless Blow chance/multipliers + Fist of War multipliers - output.RuthlessBlowMaxCount = skillModList:Sum("BASE", cfg, "RuthlessBlowMaxCount") - if output.RuthlessBlowMaxCount > 0 and ( not skillCfg.skillCond["usedByMirage"] or (skillData.mirageUses or 0) > output.RuthlessBlowMaxCount ) then + local ruthlessBlowMaxCount = skillModList:Sum("BASE", cfg, "RuthlessBlowMaxCount") + local ruthlessBlowChance + if ruthlessBlowMaxCount > 0 and ( not skillCfg.skillCond["usedByMirage"] or (skillData.mirageUses or 0) > ruthlessBlowMaxCount ) then if ruthlessEffect == "AVERAGE" then - output.RuthlessBlowChance = round(100 / output.RuthlessBlowMaxCount) + ruthlessBlowChance = round(100 / ruthlessBlowMaxCount) elseif ruthlessEffect == "MAX" then - output.RuthlessBlowChance = 100 - skillModList:NewMod("DPS", "MORE", -100 / (output.RuthlessBlowMaxCount or 1), "Only Ruthless Blows") + ruthlessBlowChance = 100 + skillModList:NewMod("DPS", "MORE", -100 + 100 / (ruthlessBlowMaxCount or 1), "Only Ruthless Blows") end else - output.RuthlessBlowChance = 0 + ruthlessBlowChance = 0 end - output.RuthlessBlowHitMultiplier = 1 + skillModList:Sum("BASE", cfg, "RuthlessBlowHitMultiplier") / 100 - output.RuthlessBlowAilmentMultiplier = 1 + skillModList:Sum("BASE", cfg, "RuthlessBlowAilmentMultiplier") / 100 - output.RuthlessBlowHitEffect = 1 - output.RuthlessBlowChance / 100 + output.RuthlessBlowChance / 100 * output.RuthlessBlowHitMultiplier - output.RuthlessBlowAilmentEffect = 1 - output.RuthlessBlowChance / 100 + output.RuthlessBlowChance / 100 * output.RuthlessBlowAilmentMultiplier + local ruthlessBlowStunMultiplier = skillModList:Sum("BASE", cfg, "RuthlessBlowStunMultiplier") / 100 + local ruthlessBlowStunEffect = (ruthlessBlowChance / 100) * ruthlessBlowStunMultiplier + skillModList:NewMod("EnemyHeavyStunBuildup", "MORE", ruthlessBlowStunEffect * 100, "Ruthless Blows") globalOutput.FistOfWarCooldown = skillModList:Sum("BASE", cfg, "FistOfWarCooldown") or 0 -- If Fist of War & Active Skill is a Slam Skill & NOT a Vaal Skill & NOT used by mirage or other @@ -3593,9 +3601,6 @@ function calcs.offence(env, actor, activeSkill) elseif output.TripleDamageEffect ~= 0 then t_insert(breakdown[damageType], s_format("x %.2f ^8(multiplier from %d%% chance to deal triple damage)", 1 + output.TripleDamageEffect, output.TripleDamageChance)) end - if output.RuthlessBlowHitEffect ~= 1 then - t_insert(breakdown[damageType], s_format("x %.2f ^8(ruthless blow effect modifier)", output.RuthlessBlowHitEffect)) - end if output.FistOfWarDamageEffect ~= 1 then t_insert(breakdown[damageType], s_format("x %.2f ^8(fist of war effect modifier)", output.FistOfWarDamageEffect)) end @@ -3607,9 +3612,9 @@ function calcs.offence(env, actor, activeSkill) end end if activeSkill.skillModList:Flag(nil, "Condition:WarcryMaxHit") then - output.allMult = output.ScaledDamageEffect * output.RuthlessBlowHitEffect * output.FistOfWarDamageEffect * globalOutput.MaxOffensiveWarcryEffect + output.allMult = output.ScaledDamageEffect * output.FistOfWarDamageEffect * globalOutput.MaxOffensiveWarcryEffect else - output.allMult = output.ScaledDamageEffect * output.RuthlessBlowHitEffect * output.FistOfWarDamageEffect * globalOutput.OffensiveWarcryEffect + output.allMult = output.ScaledDamageEffect * output.FistOfWarDamageEffect * globalOutput.OffensiveWarcryEffect end local allMult = output.allMult if pass == 1 then @@ -4892,12 +4897,12 @@ function calcs.offence(env, actor, activeSkill) -- Calculate poise-related debuffs for _, ailment in ipairs({"Freeze", "Electrocute", "HeavyStun", "Pin"}) do - local enemyPoiseThreshold = data.monsterPoiseThresholdTable[env.enemyLevel] * calcLib.mod(enemyDB, nil, "PoiseThreshold", "Enemy"..ailment.."Threshold") + local enemyPoiseThreshold = data.monsterPoiseThresholdTable[env.enemyLevel] * calcLib.mod(enemyDB, nil, "PoiseThreshold", ailment.."Threshold", ailment == "HeavyStun" and "EnemyStunThreshold") local hitMin, hitMax, critMin, critMax = calcMinMaxUnmitigatedAilmentSourceDamage(ailment, data.buildupTypes[ailment].ScalesFrom) -- TODO: average for now, can do more complicated calculation later local hitAvg = hitMin + (hitMax - hitMin) / 2 local critAvg = critMin + (critMax - critMin) / 2 - local inc = skillModList:Sum("INC", cfg, "Enemy"..ailment.."Buildup", "EnemyImmobilisationBuildup") + local inc = skillModList:Sum("INC", cfg, not skillModList:Flag(cfg, "PinBuildupInsteadOf"..ailment.."Buildup") and "Enemy"..ailment.."Buildup", "EnemyImmobilisationBuildup") local more = skillModList:More(cfg, "Enemy"..ailment.."Buildup", "EnemyImmobilisationBuildup") local hitPoiseBuildup = hitAvg * data.gameConstants[ailment .. "DamageScale"] / enemyPoiseThreshold hitPoiseBuildup = hitPoiseBuildup * (1 + inc / 100) * more * 100 diff --git a/src/Modules/CalcSections.lua b/src/Modules/CalcSections.lua index b10e81863..f88dd0db8 100644 --- a/src/Modules/CalcSections.lua +++ b/src/Modules/CalcSections.lua @@ -1378,7 +1378,7 @@ return { { label = "Stun Buildup", haveOutput = "HeavyStunBuildupOnHit", { format = "{1:output:HeavyStunBuildupOnHit}%", { breakdown = "HeavyStunBuildup" }, { label = "Player modifiers", modName = { "EnemyHeavyStunBuildup", "EnemyImmobilisationBuildup" }, cfg = "skill" }, - { label = "Enemy modifiers", modName = { "PoiseThreshold", "EnemyHeavyStunThreshold" }, enemy = true }, + { label = "Enemy modifiers", modName = { "PoiseThreshold", "EnemyHeavyStunThreshold", "EnemyStunThreshold" }, enemy = true }, }, }, { label = "Pin Buildup", haveOutput = "PinBuildupOnHit", { format = "{1:output:PinBuildupOnHit}%", { breakdown = "PinBuildup" }, @@ -1848,7 +1848,7 @@ return { { label = "Weap. Swap Speed", { format = "{0:output:WeaponSwapSpeed} ms", { breakdown = "WeaponSwapSpeedMod" }, { modName = { "WeaponSwapSpeed" } }, }, }, } }, { defaultCollapsed = false, label = "Stun Duration", data = { { label = "Stun Avoid Chance", haveOutput = "StunAvoidChance", { format = "{0:output:StunAvoidChance}%", { breakdown = "StunAvoidChance" }, { modName = "AvoidStun" }, }, }, - { label = "Stun Threshold", { format = "{ 0:output:StunThreshold}", { breakdown = "StunThreshold" }, { modName = { "StunThreshold", "StunThresholdManaPercent", "StunThresholdEnergyShieldPercent" } }, }, }, + { label = "Stun Threshold", { format = "{0:output:StunThreshold}", { breakdown = "StunThreshold" }, { modName = { "StunThreshold", "StunThresholdManaPercent", "StunThresholdEnergyShieldPercent" } }, }, }, { label = "Stun Chance", { format = "{0:output:SelfStunChance}%", { breakdown = "SelfStunChance" }, }, }, { label = "Interrupt Avoid Ch.", haveOutput = "InterruptStunAvoidChance", { format = "{0:output:InterruptStunAvoidChance}%", { modName = "AvoidInterruptStun" }, }, }, { label = "Stun Duration", { format = "{2:output:StunDuration}s", From 106af0c4fbc9040ade80a99679b38dbb80823600 Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Thu, 18 Sep 2025 11:08:30 +1000 Subject: [PATCH 15/23] Fix Lightning damage innately affection electrocution --- src/Modules/Data.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Modules/Data.lua b/src/Modules/Data.lua index 54d6454bc..75114e2fb 100644 --- a/src/Modules/Data.lua +++ b/src/Modules/Data.lua @@ -345,7 +345,6 @@ data.nonDamagingAilment = { data.buildupTypes = { ["Electrocute"] = { ["ScalesFrom"] = { - ["Lightning"] = true, } }, ["Freeze"] = { From 6841fa3b5343c8437fec8eb223bd62944b661bc8 Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Sun, 21 Sep 2025 11:46:41 +1000 Subject: [PATCH 16/23] Innate Melee / Phys damage Stun bonuses --- src/Modules/CalcOffence.lua | 13 +++++++------ src/Modules/CalcPerform.lua | 2 ++ src/Modules/CalcSetup.lua | 2 ++ 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/Modules/CalcOffence.lua b/src/Modules/CalcOffence.lua index 107c47810..d62f91fe5 100644 --- a/src/Modules/CalcOffence.lua +++ b/src/Modules/CalcOffence.lua @@ -4428,16 +4428,17 @@ function calcs.offence(env, actor, activeSkill) for _, damageType in ipairs(dmgTypeList) do if canDoAilment(ailment, damageType, defaultDamageTypes) then local override = skillModList:Override(cfg, ailment .. damageType .. "HitDamage") + local more = skillModList:More(cfg, damageType .. ailment .. "Buildup") local ailmentHitMin = override or output[damageType.."StoredHitMin"] or 0 local ailmentHitMax = override or output[damageType.."StoredHitMax"] or 0 - hitMin = hitMin + ailmentHitMin - hitMax = hitMax + ailmentHitMax - output[ailment .. damageType .. "Min"] = ailmentHitMin - output[ailment .. damageType .. "Max"] = ailmentHitMax + hitMin = hitMin + ailmentHitMin * more + hitMax = hitMax + ailmentHitMax * more + output[ailment .. damageType .. "Min"] = ailmentHitMin * more + output[ailment .. damageType .. "Max"] = ailmentHitMax * more if canCrit then override = skillModList:Override(cfg, ailment .. damageType .. "CritDamage") - critMin = critMin + (override or output[damageType.."StoredCritMin"] or 0) - critMax = critMax + (override or output[damageType.."StoredCritMax"] or 0) + critMin = critMin + (override or output[damageType.."StoredCritMin"] or 0) * more + critMax = critMax + (override or output[damageType.."StoredCritMax"] or 0) * more end end end diff --git a/src/Modules/CalcPerform.lua b/src/Modules/CalcPerform.lua index 6be9d9d1f..9870f044a 100644 --- a/src/Modules/CalcPerform.lua +++ b/src/Modules/CalcPerform.lua @@ -923,6 +923,8 @@ function calcs.perform(env, skipEHP) env.minion.modDB:NewMod("LightningResist", "BASE", env.minion.minionData.lightningResist, "Base") env.minion.modDB:NewMod("ChaosResist", "BASE", env.minion.minionData.chaosResist, "Base") env.minion.modDB:NewMod("ProjectileCount", "BASE", 1, "Base") + env.minion.modDB:NewMod("PhysicalHeavyStunBuildup", "MORE", data.monsterConstants["physical_hit_damage_stun_multiplier_+%_final_from_ot"], "Physical Damage") + env.minion.modDB:NewMod("HeavyStunBuildup", "MORE", data.monsterConstants["melee_hit_damage_stun_multiplier_+%_final_from_ot"], "Melee Damage", ModFlag.Melee) for _, mod in ipairs(env.minion.minionData.modList) do env.minion.modDB:AddMod(mod) end diff --git a/src/Modules/CalcSetup.lua b/src/Modules/CalcSetup.lua index ede728603..df7f379bc 100644 --- a/src/Modules/CalcSetup.lua +++ b/src/Modules/CalcSetup.lua @@ -634,6 +634,8 @@ function calcs.initEnv(build, mode, override, specEnv) modDB:NewMod("EnemyMarkLimit", "BASE", 1, "Base") modDB:NewMod("SocketedCursesHexLimitValue", "BASE", 1, "Base") modDB:NewMod("ProjectileCount", "BASE", 1, "Base") + modDB:NewMod("PhysicalHeavyStunBuildup", "MORE", data.characterConstants["physical_hit_damage_stun_multiplier_+%_final_from_ot"], "Physical Damage") + modDB:NewMod("HeavyStunBuildup", "MORE", data.characterConstants["melee_hit_damage_stun_multiplier_+%_final_from_ot"], "Melee Damage", ModFlag.Melee) modDB:NewMod("AilmentMagnitude", "MORE", data.monsterConstants["bleeding_moving_damage_%_of_base_override"] - 100, "Base", 0, KeywordFlag.Bleed, { type = "ActorCondition", actor = "enemy", varList = { "Moving", "BleedAggravated" } }, { type = "Condition", var = "NoExtraBleedDamageToMovingEnemy", neg = true }) modDB:NewMod("Condition:BloodStance", "FLAG", true, "Base", { type = "Condition", var = "SandStance", neg = true }) modDB:NewMod("Condition:PrideMinEffect", "FLAG", true, "Base", { type = "Condition", var = "PrideMaxEffect", neg = true }) From c5d94875a3bfa3f76bb266e658028ef3cdaf15db Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Sun, 21 Sep 2025 11:47:48 +1000 Subject: [PATCH 17/23] Adds support for buildup from: Rime Chaotic Freeze Leap Slam Shield Charge Freezing Mark --- src/Data/SkillStatMap.lua | 3 +++ src/Data/Skills/act_int.lua | 5 +++++ src/Data/Skills/act_str.lua | 28 ++++++++++++++++++++++++++++ src/Data/Skills/sup_int.lua | 13 +++++++++++++ src/Export/Skills/act_int.txt | 5 +++++ src/Export/Skills/act_str.txt | 28 ++++++++++++++++++++++++++-- src/Export/Skills/sup_int.txt | 13 +++++++++++++ src/Modules/CalcOffence.lua | 2 +- src/Modules/CalcSections.lua | 16 ++++++++-------- 9 files changed, 102 insertions(+), 11 deletions(-) diff --git a/src/Data/SkillStatMap.lua b/src/Data/SkillStatMap.lua index bc504f5cb..633327855 100644 --- a/src/Data/SkillStatMap.lua +++ b/src/Data/SkillStatMap.lua @@ -2838,4 +2838,7 @@ return { ["quality_display_active_skill_pins_as_though_dealt_damage_+%_final_is_gem"] = { -- Display Only }, +["quality_display_freezing_mark_is_gem"] = { + -- Display Only +}, } diff --git a/src/Data/Skills/act_int.lua b/src/Data/Skills/act_int.lua index 0bc32e68f..9a1a79b0c 100644 --- a/src/Data/Skills/act_int.lua +++ b/src/Data/Skills/act_int.lua @@ -8503,6 +8503,11 @@ skills["FreezingMarkPlayer"] = { label = "Mark", incrementalEffectiveness = 0.054999999701977, statDescriptionScope = "freezing_mark", + statMap = { + ["freezing_mark_hit_damage_freeze_multiplier_+%_final"] = { + mod("FreezeBuildup", "MORE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), + }, + }, baseFlags = { area = true, duration = true, diff --git a/src/Data/Skills/act_str.lua b/src/Data/Skills/act_str.lua index 294c5fcd3..1cfafa648 100644 --- a/src/Data/Skills/act_str.lua +++ b/src/Data/Skills/act_str.lua @@ -5919,6 +5919,11 @@ skills["LeapSlamPlayer"] = { baseEffectiveness = 0, incrementalEffectiveness = 0.092720001935959, statDescriptionScope = "leap_slam", + statMap = { + ["active_skill_consume_enemy_fully_broken_armour_to_gain_hit_damage_stun_multiplier_+%"] = { + mod("EnemyHeavyStunBuildup", "MORE", nil, 0, 0, { type = "ActorCondition", actor = "enemy", var = "ArmourFullyBroken" }), + }, + }, baseFlags = { attack = true, area = true, @@ -12604,16 +12609,28 @@ skills["ShieldChargePlayer"] = { [39] = { attackTime = 600, baseMultiplier = 2.36, critChance = 5, levelRequirement = 90, cost = { ManaPerMinute = 10702, }, }, [40] = { attackTime = 600, baseMultiplier = 2.48, critChance = 5, levelRequirement = 90, cost = { ManaPerMinute = 11389, }, }, }, + preDamageFunc = function(activeSkill, output) + activeSkill.skillData.hitTimeMultiplier = 1 + activeSkill.skillData.channelTimeMultiplier = 1 + end, statSets = { [1] = { label = "Area of Effect", incrementalEffectiveness = 0.27349999547005, statDescriptionScope = "channel_shield_charge", + statMap = { + ["shield_charge_hit_damage_stun_multiplier_when_fully_charged_+%_final"] = { + mod("EnemyHeavyStunBuildup", "MORE", nil), + }, + ["base_skill_show_average_damage_instead_of_dps"] = { + }, + }, baseFlags = { attack = true, area = true, melee = true, shieldAttack = true, + channelRelease = true, }, constantStats = { { "active_skill_base_area_of_effect_radius", 24 }, @@ -12691,11 +12708,22 @@ skills["ShieldChargePlayer"] = { label = "Collision", incrementalEffectiveness = 0.054999999701977, statDescriptionScope = "channel_shield_charge", + statMap = { + ["shield_charge_hit_damage_stun_multiplier_when_fully_charged_+%_final"] = { + mod("EnemyHeavyStunBuildup", "MORE", nil), + }, + ["base_skill_show_average_damage_instead_of_dps"] = { + }, + }, baseFlags = { attack = true, area = true, melee = true, shieldAttack = true, + channelRelease = true, + }, + baseMods = { + skill("minChannelTime", 1.3), }, constantStats = { { "active_skill_base_area_of_effect_radius", 24 }, diff --git a/src/Data/Skills/sup_int.lua b/src/Data/Skills/sup_int.lua index 4c2418982..7ccc3d4fd 100644 --- a/src/Data/Skills/sup_int.lua +++ b/src/Data/Skills/sup_int.lua @@ -968,6 +968,11 @@ skills["SupportChaoticFreezePlayer"] = { label = "Chaotic Freeze", incrementalEffectiveness = 0.054999999701977, statDescriptionScope = "gem_stat_descriptions", + statMap = { + ["support_chaotic_freeze_dots_allow_enemies_to_be_frozen_by_chaos_damage"] = { + flag("ChaosCanFreeze", { type = "GlobalEffect", effectType = "Buff", effectName = "Chaotic Freeze" }), + }, + }, baseFlags = { }, stats = { @@ -4535,6 +4540,14 @@ skills["SupportRimePlayer"] = { label = "Rime", incrementalEffectiveness = 0.054999999701977, statDescriptionScope = "gem_stat_descriptions", + statMap = { + ["chilled_ground_applies_%_freeze_multiplier_taken"] = { + mod("EnemyFreezeBuildup", "MORE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Rime" }, { type = "ActorCondition", actor = "enemy", var = "OnChilledGround" }), + }, + ["support_winterblast_chill_effect_+%_final"] = { + mod("EnemyChillMagnitude", "MORE", nil), + }, + }, baseFlags = { }, constantStats = { diff --git a/src/Export/Skills/act_int.txt b/src/Export/Skills/act_int.txt index 41b878eb8..29c54e0c8 100644 --- a/src/Export/Skills/act_int.txt +++ b/src/Export/Skills/act_int.txt @@ -548,6 +548,11 @@ statMap = { #skill FreezingMarkPlayer #set FreezingMarkPlayer #flags area duration +statMap = { + ["freezing_mark_hit_damage_freeze_multiplier_+%_final"] = { + mod("FreezeBuildup", "MORE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), + }, +}, #mods #skillEnd diff --git a/src/Export/Skills/act_str.txt b/src/Export/Skills/act_str.txt index 6f7cab604..8d283a19f 100644 --- a/src/Export/Skills/act_str.txt +++ b/src/Export/Skills/act_str.txt @@ -397,6 +397,11 @@ statMap = { #skill LeapSlamPlayer #set LeapSlamPlayer #flags attack area melee +statMap = { + ["active_skill_consume_enemy_fully_broken_armour_to_gain_hit_damage_stun_multiplier_+%"] = { + mod("EnemyHeavyStunBuildup", "MORE", nil, 0, 0, { type = "ActorCondition", actor = "enemy", var = "ArmourFullyBroken" }), + }, +}, #mods #skillEnd @@ -739,11 +744,30 @@ statMap = { #skillEnd #skill ShieldChargePlayer +preDamageFunc = function(activeSkill, output) + activeSkill.skillData.hitTimeMultiplier = 1 + activeSkill.skillData.channelTimeMultiplier = 1 +end, #set ShieldChargePlayer -#flags attack area melee shieldAttack +#flags attack area melee shieldAttack channelRelease +statMap = { + ["shield_charge_hit_damage_stun_multiplier_when_fully_charged_+%_final"] = { + mod("EnemyHeavyStunBuildup", "MORE", nil), + }, + ["base_skill_show_average_damage_instead_of_dps"] = { + }, +}, #mods #set ShieldChargeFinalConePlayer -#flags attack area melee shieldAttack +#flags attack area melee shieldAttack channelRelease +statMap = { + ["shield_charge_hit_damage_stun_multiplier_when_fully_charged_+%_final"] = { + mod("EnemyHeavyStunBuildup", "MORE", nil), + }, + ["base_skill_show_average_damage_instead_of_dps"] = { + }, +}, +#baseMod skill("minChannelTime", 1.3) #mods #skillEnd diff --git a/src/Export/Skills/sup_int.txt b/src/Export/Skills/sup_int.txt index a65266e70..9307a6a52 100644 --- a/src/Export/Skills/sup_int.txt +++ b/src/Export/Skills/sup_int.txt @@ -198,6 +198,11 @@ statMap = { #skill SupportChaoticFreezePlayer #set SupportChaoticFreezePlayer +statMap = { + ["support_chaotic_freeze_dots_allow_enemies_to_be_frozen_by_chaos_damage"] = { + flag("ChaosCanFreeze", { type = "GlobalEffect", effectType = "Buff", effectName = "Chaotic Freeze" }), + }, +}, #mods #skillEnd @@ -1007,6 +1012,14 @@ statMap = { #skill SupportRimePlayer #set SupportRimePlayer +statMap = { + ["chilled_ground_applies_%_freeze_multiplier_taken"] = { + mod("EnemyFreezeBuildup", "MORE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Rime" }, { type = "ActorCondition", actor = "enemy", var = "OnChilledGround" }), + }, + ["support_winterblast_chill_effect_+%_final"] = { + mod("EnemyChillMagnitude", "MORE", nil), + }, +}, #mods #skillEnd diff --git a/src/Modules/CalcOffence.lua b/src/Modules/CalcOffence.lua index d62f91fe5..011a6362c 100644 --- a/src/Modules/CalcOffence.lua +++ b/src/Modules/CalcOffence.lua @@ -4904,7 +4904,7 @@ function calcs.offence(env, actor, activeSkill) local hitAvg = hitMin + (hitMax - hitMin) / 2 local critAvg = critMin + (critMax - critMin) / 2 local inc = skillModList:Sum("INC", cfg, not skillModList:Flag(cfg, "PinBuildupInsteadOf"..ailment.."Buildup") and "Enemy"..ailment.."Buildup", "EnemyImmobilisationBuildup") - local more = skillModList:More(cfg, "Enemy"..ailment.."Buildup", "EnemyImmobilisationBuildup") + local more = skillModList:More(cfg, "Enemy"..ailment.."Buildup", "EnemyImmobilisationBuildup") * calcLib.mod(enemyDB, nil, ailment.."Buildup", "ImmobilisationBuildup", ailment == "HeavyStun" and "StunBuildup") local hitPoiseBuildup = hitAvg * data.gameConstants[ailment .. "DamageScale"] / enemyPoiseThreshold hitPoiseBuildup = hitPoiseBuildup * (1 + inc / 100) * more * 100 local critPoiseBuildup = critAvg * data.gameConstants[ailment .. "DamageScale"] / enemyPoiseThreshold diff --git a/src/Modules/CalcSections.lua b/src/Modules/CalcSections.lua index f88dd0db8..e774341f5 100644 --- a/src/Modules/CalcSections.lua +++ b/src/Modules/CalcSections.lua @@ -1367,23 +1367,23 @@ return { }, }, { label = "Freeze Buildup", haveOutput = "FreezeBuildupOnHit", { format = "{1:output:FreezeBuildupOnHit}%", { breakdown = "FreezeBuildup" }, - { label = "Player modifiers", modName = { "EnemyFreezeBuildup", "EnemyImmobilisationBuildup" }, cfg = "skill" }, - { label = "Enemy modifiers", modName = { "PoiseThreshold", "EnemyFreezeThreshold" }, enemy = true }, + { label = "Player modifiers", modName = { "EnemyFreezeBuildup", "EnemyImmobilisationBuildup" }, cfg = "skill" }, + { label = "Enemy modifiers", modName = { "PoiseThreshold", "EnemyFreezeThreshold", "FreezeBuildup", "ImmobilisationBuildup" }, enemy = true }, }, }, { label = "Electrocute Buildup", haveOutput = "ElectrocuteBuildupOnHit", { format = "{1:output:ElectrocuteBuildupOnHit}%", { breakdown = "ElectrocuteBuildup" }, - { label = "Player modifiers", modName = { "EnemyElectrocuteBuildup", "EnemyImmobilisationBuildup" }, cfg = "skill" }, - { label = "Enemy modifiers", modName = { "PoiseThreshold", "EnemyElectrocuteThreshold" }, enemy = true }, + { label = "Player modifiers", modName = { "EnemyElectrocuteBuildup", "EnemyImmobilisationBuildup" }, cfg = "skill" }, + { label = "Enemy modifiers", modName = { "PoiseThreshold", "EnemyElectrocuteThreshold", "ElectrocuteBuildup", "ImmobilisationBuildup" }, enemy = true }, }, }, { label = "Stun Buildup", haveOutput = "HeavyStunBuildupOnHit", { format = "{1:output:HeavyStunBuildupOnHit}%", { breakdown = "HeavyStunBuildup" }, - { label = "Player modifiers", modName = { "EnemyHeavyStunBuildup", "EnemyImmobilisationBuildup" }, cfg = "skill" }, - { label = "Enemy modifiers", modName = { "PoiseThreshold", "EnemyHeavyStunThreshold", "EnemyStunThreshold" }, enemy = true }, + { label = "Player modifiers", modName = { "EnemyHeavyStunBuildup", "EnemyImmobilisationBuildup", "PhysicalHeavyStunBuildup" }, cfg = "skill" }, + { label = "Enemy modifiers", modName = { "PoiseThreshold", "EnemyHeavyStunThreshold", "EnemyStunThreshold", "HeavyStunBuildup", "ImmobilisationBuildup", "StunBuildup" }, enemy = true }, }, }, { label = "Pin Buildup", haveOutput = "PinBuildupOnHit", { format = "{1:output:PinBuildupOnHit}%", { breakdown = "PinBuildup" }, - { label = "Player modifiers", modName = { "EnemyPinBuildup", "EnemyImmobilisationBuildup" }, cfg = "skill" }, - { label = "Enemy modifiers", modName = { "PoiseThreshold", "EnemyPinThreshold" }, enemy = true }, + { label = "Player modifiers", modName = { "EnemyPinBuildup", "EnemyImmobilisationBuildup" }, cfg = "skill" }, + { label = "Enemy modifiers", modName = { "PoiseThreshold", "EnemyPinThreshold", "PinBuildup", "ImmobilisationBuildup" }, enemy = true }, }, }, } } } }, From 548be0a21ae60939f4c67ced7bc266574e3d93f9 Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Sun, 21 Sep 2025 12:05:31 +1000 Subject: [PATCH 18/23] Fix Pin support not disabling Stun --- src/Data/SkillStatMap.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Data/SkillStatMap.lua b/src/Data/SkillStatMap.lua index 871bba3fe..ae3ce3261 100644 --- a/src/Data/SkillStatMap.lua +++ b/src/Data/SkillStatMap.lua @@ -1521,6 +1521,8 @@ return { }, ["support_pin_buildup_pin_instead_of_stun"] = { flag("PinBuildupInsteadOfHeavyStunBuildup"), + flag("CannotStun"), + flag("CannotHeavyStun"), }, ["support_pin_pin_buildup_+%_final"] = { mod("EnemyPinBuildup", "MORE", nil), From 6331dc13810e202065513d0fa2d4c5e9f8125fa9 Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Mon, 22 Sep 2025 04:07:44 +1000 Subject: [PATCH 19/23] Fix Melee Damage buildup not working --- src/Modules/CalcPerform.lua | 2 +- src/Modules/CalcSetup.lua | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Modules/CalcPerform.lua b/src/Modules/CalcPerform.lua index 9870f044a..f389e157c 100644 --- a/src/Modules/CalcPerform.lua +++ b/src/Modules/CalcPerform.lua @@ -924,7 +924,7 @@ function calcs.perform(env, skipEHP) env.minion.modDB:NewMod("ChaosResist", "BASE", env.minion.minionData.chaosResist, "Base") env.minion.modDB:NewMod("ProjectileCount", "BASE", 1, "Base") env.minion.modDB:NewMod("PhysicalHeavyStunBuildup", "MORE", data.monsterConstants["physical_hit_damage_stun_multiplier_+%_final_from_ot"], "Physical Damage") - env.minion.modDB:NewMod("HeavyStunBuildup", "MORE", data.monsterConstants["melee_hit_damage_stun_multiplier_+%_final_from_ot"], "Melee Damage", ModFlag.Melee) + env.minion.modDB:NewMod("EnemyHeavyStunBuildup", "MORE", data.monsterConstants["melee_hit_damage_stun_multiplier_+%_final_from_ot"], "Melee Damage", ModFlag.Melee) for _, mod in ipairs(env.minion.minionData.modList) do env.minion.modDB:AddMod(mod) end diff --git a/src/Modules/CalcSetup.lua b/src/Modules/CalcSetup.lua index fcf9cda0c..dd395ada2 100644 --- a/src/Modules/CalcSetup.lua +++ b/src/Modules/CalcSetup.lua @@ -635,7 +635,7 @@ function calcs.initEnv(build, mode, override, specEnv) modDB:NewMod("SocketedCursesHexLimitValue", "BASE", 1, "Base") modDB:NewMod("ProjectileCount", "BASE", 1, "Base") modDB:NewMod("PhysicalHeavyStunBuildup", "MORE", data.characterConstants["physical_hit_damage_stun_multiplier_+%_final_from_ot"], "Physical Damage") - modDB:NewMod("HeavyStunBuildup", "MORE", data.characterConstants["melee_hit_damage_stun_multiplier_+%_final_from_ot"], "Melee Damage", ModFlag.Melee) + modDB:NewMod("EnemyHeavyStunBuildup", "MORE", data.characterConstants["melee_hit_damage_stun_multiplier_+%_final_from_ot"], "Melee Damage", ModFlag.Melee) modDB:NewMod("AilmentMagnitude", "MORE", data.monsterConstants["bleeding_moving_damage_%_of_base_override"] - 100, "Base", 0, KeywordFlag.Bleed, { type = "ActorCondition", actor = "enemy", varList = { "Moving", "BleedAggravated" } }, { type = "Condition", var = "NoExtraBleedDamageToMovingEnemy", neg = true }) modDB:NewMod("Condition:BloodStance", "FLAG", true, "Base", { type = "Condition", var = "SandStance", neg = true }) modDB:NewMod("Condition:PrideMinEffect", "FLAG", true, "Base", { type = "Condition", var = "PrideMaxEffect", neg = true }) From 494d69e15d6fea838bc89817c417129f44d63a8a Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Mon, 22 Sep 2025 08:31:00 +1000 Subject: [PATCH 20/23] Fix Enemy Poise multiplier The base value in MonsterVarieties is 100 so we need to take away 100 when applying it as a more multiplier --- src/Modules/ConfigOptions.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Modules/ConfigOptions.lua b/src/Modules/ConfigOptions.lua index 1297055c7..175801795 100644 --- a/src/Modules/ConfigOptions.lua +++ b/src/Modules/ConfigOptions.lua @@ -1914,7 +1914,7 @@ Huge sets the radius to 11. enemyModList:NewMod("Condition:RareOrUnique", "FLAG", true, "Config", { type = "Condition", var = "Effective" }) enemyModList:NewMod("CurseEffectOnSelf", "MORE", -50, "Unique", { type = "Condition", var = "Effective" }) enemyModList:NewMod("PoiseThreshold", "MORE", 500, "Unique", { type = "Condition", var = "Effective" }) - enemyModList:NewMod("PoiseThreshold", "MORE", 310, "Map Boss", { type = "Condition", var = "Effective" }) + enemyModList:NewMod("PoiseThreshold", "MORE", 213, "Map Boss", { type = "Condition", var = "Effective" }) modList:NewMod("WarcryPower", "BASE", 20, "Boss") modList:NewMod("Multiplier:EnemyPower", "BASE", 20, "Boss") @@ -1952,7 +1952,7 @@ Huge sets the radius to 11. enemyModList:NewMod("Condition:PinnacleBoss", "FLAG", true, "Config", { type = "Condition", var = "Effective" }) enemyModList:NewMod("CurseEffectOnSelf", "MORE", -50, "Unique", { type = "Condition", var = "Effective" }) enemyModList:NewMod("PoiseThreshold", "MORE", 500, "Unique", { type = "Condition", var = "Effective" }) - enemyModList:NewMod("PoiseThreshold", "MORE", 938, "Xesht", { type = "Condition", var = "Effective" }) + enemyModList:NewMod("PoiseThreshold", "MORE", 838, "Xesht", { type = "Condition", var = "Effective" }) modList:NewMod("WarcryPower", "BASE", 20, "Boss") modList:NewMod("Multiplier:EnemyPower", "BASE", 20, "Boss") @@ -1989,7 +1989,7 @@ Huge sets the radius to 11. enemyModList:NewMod("CurseEffectOnSelf", "MORE", -50, "Unique", { type = "Condition", var = "Effective" }) enemyModList:NewMod("DamageTaken", "MORE", -70, "Boss") enemyModList:NewMod("PoiseThreshold", "MORE", 500, "Unique", { type = "Condition", var = "Effective" }) - enemyModList:NewMod("PoiseThreshold", "MORE", 938, "Xesht", { type = "Condition", var = "Effective" }) + enemyModList:NewMod("PoiseThreshold", "MORE", 838, "Xesht", { type = "Condition", var = "Effective" }) modList:NewMod("WarcryPower", "BASE", 20, "Boss") modList:NewMod("Multiplier:EnemyPower", "BASE", 20, "Boss") From f7a33518c3a67fabadd476d55d618462de8c716a Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Fri, 3 Oct 2025 13:17:02 +1000 Subject: [PATCH 21/23] Add stat name to config mods --- src/Modules/ConfigOptions.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Modules/ConfigOptions.lua b/src/Modules/ConfigOptions.lua index ff518818f..b6dae5231 100644 --- a/src/Modules/ConfigOptions.lua +++ b/src/Modules/ConfigOptions.lua @@ -1917,7 +1917,7 @@ Huge sets the radius to 11. enemyModList:NewMod("KnockbackDistanceOnSelf", "MORE", -75, "Unique", { type = "Condition", var = "Effective" }) -- MonsterUnique12 enemyModList:NewMod("SlowEffectOnSelf", "MORE", -50, "Unique", { type = "Condition", var = "Effective" }) -- MonsterUnique11 enemyModList:NewMod("MinimumMovementSpeed", "BASE", 20, "Unique", { type = "Condition", var = "Effective" }) -- MonsterUnique9 - enemyModList:NewMod("PoiseThreshold", "MORE", 500, "Unique", { type = "Condition", var = "Effective" }) + enemyModList:NewMod("PoiseThreshold", "MORE", 500, "Unique", { type = "Condition", var = "Effective" }) -- MonsterUnique2 enemyModList:NewMod("PoiseThreshold", "MORE", 213, "Map Boss", { type = "Condition", var = "Effective" }) modList:NewMod("WarcryPower", "BASE", 20, "Boss") modList:NewMod("Multiplier:EnemyPower", "BASE", 20, "Boss") @@ -1959,7 +1959,7 @@ Huge sets the radius to 11. enemyModList:NewMod("KnockbackDistanceOnSelf", "MORE", -75, "Unique", { type = "Condition", var = "Effective" }) -- MonsterUnique12 enemyModList:NewMod("SlowEffectOnSelf", "MORE", -50, "Unique", { type = "Condition", var = "Effective" }) -- MonsterUnique11 enemyModList:NewMod("MinimumMovementSpeed", "BASE", 20, "Unique", { type = "Condition", var = "Effective" }) -- MonsterUnique9 - enemyModList:NewMod("PoiseThreshold", "MORE", 500, "Unique", { type = "Condition", var = "Effective" }) + enemyModList:NewMod("PoiseThreshold", "MORE", 500, "Unique", { type = "Condition", var = "Effective" }) -- MonsterUnique2 enemyModList:NewMod("PoiseThreshold", "MORE", 838, "Xesht", { type = "Condition", var = "Effective" }) modList:NewMod("WarcryPower", "BASE", 20, "Boss") modList:NewMod("Multiplier:EnemyPower", "BASE", 20, "Boss") @@ -2000,7 +2000,7 @@ Huge sets the radius to 11. enemyModList:NewMod("SlowEffectOnSelf", "MORE", -50, "Unique", { type = "Condition", var = "Effective" }) -- MonsterUnique11 enemyModList:NewMod("MinimumMovementSpeed", "BASE", 20, "Unique", { type = "Condition", var = "Effective" }) -- MonsterUnique9 enemyModList:NewMod("DamageTaken", "MORE", -70, "Boss") - enemyModList:NewMod("PoiseThreshold", "MORE", 500, "Unique", { type = "Condition", var = "Effective" }) + enemyModList:NewMod("PoiseThreshold", "MORE", 500, "Unique", { type = "Condition", var = "Effective" }) -- MonsterUnique2 enemyModList:NewMod("PoiseThreshold", "MORE", 838, "Xesht", { type = "Condition", var = "Effective" }) modList:NewMod("WarcryPower", "BASE", 20, "Boss") modList:NewMod("Multiplier:EnemyPower", "BASE", 20, "Boss") From 4276961b5e3517e637cccdb02a0d3e8dad3c1afd Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Sun, 5 Oct 2025 18:37:15 +1100 Subject: [PATCH 22/23] Use enemy damage taken instead of pre hit mitigation --- src/Data/SkillStatMap.lua | 2 +- src/Modules/CalcOffence.lua | 83 +++++++++++++++++++++++++++++------- src/Modules/CalcSections.lua | 12 +++--- src/Modules/ModParser.lua | 15 ++++++- 4 files changed, 88 insertions(+), 24 deletions(-) diff --git a/src/Data/SkillStatMap.lua b/src/Data/SkillStatMap.lua index 083b4db17..8d33ad2cc 100644 --- a/src/Data/SkillStatMap.lua +++ b/src/Data/SkillStatMap.lua @@ -1155,7 +1155,7 @@ return { }, -- Ailments ["skill_overwhelming_pressure_aura_enemy_ailment_threshold_+%"] = { - mod("AilmentThreshold", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Debuff", effectName = "Overwhelming Presence"}), + mod("EnemyAilmentThreshold", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Debuff", effectName = "Overwhelming Presence"}), }, ["skill_overwhelming_pressure_aura_enemy_stun_threshold_+%"] = { mod("EnemyStunThreshold", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Debuff", effectName = "Overwhelming Presence"}), diff --git a/src/Modules/CalcOffence.lua b/src/Modules/CalcOffence.lua index 1ae47997d..c7eb3ed3a 100644 --- a/src/Modules/CalcOffence.lua +++ b/src/Modules/CalcOffence.lua @@ -4389,7 +4389,7 @@ function calcs.offence(env, actor, activeSkill) skillFlags.impale = false -- Calculate ailment thresholds - local enemyThreshold = data.monsterAilmentThresholdTable[env.enemyLevel] * calcLib.mod(enemyDB, nil, "AilmentThreshold") + local enemyThreshold = data.monsterAilmentThresholdTable[env.enemyLevel] * calcLib.mod(enemyDB, nil, "EnemyAilmentThreshold") output['EnemyAilmentThreshold'] = enemyThreshold @@ -4478,7 +4478,47 @@ function calcs.offence(env, actor, activeSkill) end return hitMin, hitMax, critMin, critMax end - + + ---Calculates damage to be used in poise related ailment calculations + ---@param ailment string + ---@param defaultDamageTypes table + ---@return number, number, number, number min / max / avg hit, min / max/ avg crit damage + local function calcMinMaxPoiseSourceDamage(ailment, defaultDamageTypes) + local canCrit = not skillModList:Flag(cfg, "AilmentsAreNeverFromCrit") + local hitMin, hitMax, hitAvg = 0, 0, 0 + local critMin, critMax , critAvg = 0, 0, 0 + local poseDamageAvg = 0 + local critChance = output.CritChance + for _, damageType in ipairs(dmgTypeList) do + if canDoAilment(ailment, damageType, defaultDamageTypes) then + local override = skillModList:Override(cfg, ailment .. damageType .. "HitDamage") + local more = skillModList:More(cfg, damageType .. ailment .. "Buildup") + local ailmentHitMin = override or output[damageType.."StoredHitMin"] or 0 + local ailmentHitMax = override or output[damageType.."StoredHitMax"] or 0 + local ailmentAverage = override or output[damageType.."HitAverage"] or 0 + local effMulti = output[damageType.."EffMult"] or 1 + hitMin = hitMin + ailmentHitMin * more * effMulti + hitMax = hitMax + ailmentHitMax * more * effMulti + hitAvg = hitAvg + ailmentAverage * more + output[ailment .. damageType .. "Min"] = ailmentHitMin * more + output[ailment .. damageType .. "Max"] = ailmentHitMax * more + output[ailment .. damageType .. "Max"] = ailmentAverage * more + if canCrit then + override = skillModList:Override(cfg, ailment .. damageType .. "CritDamage") + critMin = critMin + (override or output[damageType.."StoredCritMin"] or 0) * more * effMulti + critMax = critMax + (override or output[damageType.."StoredCritMax"] or 0) * more * effMulti + critAvg = critAvg + (override or output[damageType.."CritAverage"] or 0) * more + end + end + end + if canCrit then + poseDamageAvg = hitAvg * (1 - critChance / 100) + critAvg * critChance / 100 + else + poseDamageAvg = hitAvg + end + return hitMin, hitMax, hitAvg, critMin, critMax, critAvg, poseDamageAvg + end + ---Calculate the inflict chance and base damage of a secondary effect (bleed/poison/ignite/shock/freeze) ---@param ailment string ---@param sourceCritChance number @@ -4932,24 +4972,24 @@ function calcs.offence(env, actor, activeSkill) -- Calculate poise-related debuffs for _, ailment in ipairs({"Freeze", "Electrocute", "HeavyStun", "Pin"}) do - local enemyPoiseThreshold = data.monsterPoiseThresholdTable[env.enemyLevel] * calcLib.mod(enemyDB, nil, "PoiseThreshold", ailment.."Threshold", ailment == "HeavyStun" and "EnemyStunThreshold") - local hitMin, hitMax, critMin, critMax = calcMinMaxUnmitigatedAilmentSourceDamage(ailment, data.buildupTypes[ailment].ScalesFrom) + local enemyPoiseThreshold = m_floor(data.monsterPoiseThresholdTable[env.enemyLevel] * calcLib.mod(enemyDB, nil, "PoiseThreshold", ailment.."Threshold", ailment == "HeavyStun" and "EnemyStunThreshold", (ailment == "Freeze" or ailment == "Electrocute") and "EnemyAilmentThreshold")) + local hitMin, hitMax, hitAvg, critMin, critMax, critAvg, poiseAvg = calcMinMaxPoiseSourceDamage(ailment, data.buildupTypes[ailment].ScalesFrom) -- TODO: average for now, can do more complicated calculation later - local hitAvg = hitMin + (hitMax - hitMin) / 2 - local critAvg = critMin + (critMax - critMin) / 2 local inc = skillModList:Sum("INC", cfg, not skillModList:Flag(cfg, "PinBuildupInsteadOf"..ailment.."Buildup") and "Enemy"..ailment.."Buildup", "EnemyImmobilisationBuildup") local more = skillModList:More(cfg, "Enemy"..ailment.."Buildup", "EnemyImmobilisationBuildup") * calcLib.mod(enemyDB, nil, ailment.."Buildup", "ImmobilisationBuildup", ailment == "HeavyStun" and "StunBuildup") - local hitPoiseBuildup = hitAvg * data.gameConstants[ailment .. "DamageScale"] / enemyPoiseThreshold - hitPoiseBuildup = hitPoiseBuildup * (1 + inc / 100) * more * 100 - local critPoiseBuildup = critAvg * data.gameConstants[ailment .. "DamageScale"] / enemyPoiseThreshold - critPoiseBuildup = critPoiseBuildup * (1 + inc / 100) * more * 100 + local poiseBuildup = data.gameConstants[ailment .. "DamageScale"] / enemyPoiseThreshold * (1 + inc / 100) * more * 100 + local minHit = hitMin * poiseBuildup + local maxHit = hitMax * poiseBuildup + local hitPoiseBuildup = hitAvg * poiseBuildup + local minCrit = critMin * poiseBuildup + local maxCrit = critMax * poiseBuildup + local critPoiseBuildup = critAvg * poiseBuildup + local totalAvgPoiseBuildup = poiseAvg * poiseBuildup if skillFlags.hit and not skillModList:Flag(cfg, "Cannot"..ailment) then - globalOutput[ailment .. "BuildupOnHit"] = m_min(100, hitPoiseBuildup) - globalOutput[ailment .. "BuildupOnCrit"] = m_min(100, critPoiseBuildup) + globalOutput[ailment .. "BuildupAvg"] = totalAvgPoiseBuildup else - globalOutput[ailment .. "BuildupOnHit"] = 0 - globalOutput[ailment .. "BuildupOnCrit"] = 0 + globalOutput[ailment .. "BuildupAvg"] = 0 end if breakdown then @@ -4958,8 +4998,19 @@ function calcs.offence(env, actor, activeSkill) "Enemy poise: " .. enemyPoiseThreshold, "", } - t_insert(globalBreakdown[ailment .. "Buildup"], s_format("Regular Hit Poise buildup %.1f%%", hitPoiseBuildup)) - t_insert(globalBreakdown[ailment .. "Buildup"], s_format("Crit Poise buildup %.1f%%", critPoiseBuildup)) + t_insert(globalBreakdown[ailment .. "Buildup"], s_format("Regular Hit "..ailment.." buildup")) + t_insert(globalBreakdown[ailment .. "Buildup"], s_format("Min: %.1f%%", minHit)) + t_insert(globalBreakdown[ailment .. "Buildup"], s_format("Max: %.1f%%", maxHit)) + t_insert(globalBreakdown[ailment .. "Buildup"], s_format("Avg: %.1f%%", hitPoiseBuildup)) + t_insert(globalBreakdown[ailment .. "Buildup"], s_format("")) + t_insert(globalBreakdown[ailment .. "Buildup"], s_format("Crit "..ailment.." buildup")) + t_insert(globalBreakdown[ailment .. "Buildup"], s_format("Crit Min: %.1f%%", minCrit)) + t_insert(globalBreakdown[ailment .. "Buildup"], s_format("Crit Max: %.1f%%", maxCrit)) + t_insert(globalBreakdown[ailment .. "Buildup"], s_format("Crit Avg: %.1f%%", critPoiseBuildup)) + + t_insert(globalBreakdown[ailment .. "Buildup"], s_format("")) + t_insert(globalBreakdown[ailment .. "Buildup"], s_format("Average "..ailment.." buildup")) + t_insert(globalBreakdown[ailment .. "Buildup"], s_format("= %.1f%%", totalAvgPoiseBuildup)) end end diff --git a/src/Modules/CalcSections.lua b/src/Modules/CalcSections.lua index 9c778bbab..2e4fbeb12 100644 --- a/src/Modules/CalcSections.lua +++ b/src/Modules/CalcSections.lua @@ -1366,22 +1366,22 @@ return { { label = "Configured Sap", modName = "SapVal", enemy = true, modType = "BASE" }, { label = "Guaranteed Saps", modName = "SapOverride", modType = "BASE" }, }, }, - { label = "Freeze Buildup", haveOutput = "FreezeBuildupOnHit", { format = "{1:output:FreezeBuildupOnHit}%", + { label = "Freeze Buildup", haveOutput = "FreezeBuildupAvg", { format = "{1:output:FreezeBuildupAvg}%", { breakdown = "FreezeBuildup" }, { label = "Player modifiers", modName = { "EnemyFreezeBuildup", "EnemyImmobilisationBuildup" }, cfg = "skill" }, - { label = "Enemy modifiers", modName = { "PoiseThreshold", "EnemyFreezeThreshold", "FreezeBuildup", "ImmobilisationBuildup" }, enemy = true }, + { label = "Enemy modifiers", modName = { "PoiseThreshold", "EnemyFreezeThreshold", "FreezeBuildup", "ImmobilisationBuildup", "EnemyAilmentThreshold" }, enemy = true }, }, }, - { label = "Electrocute Buildup", haveOutput = "ElectrocuteBuildupOnHit", { format = "{1:output:ElectrocuteBuildupOnHit}%", + { label = "Electrocute Buildup", haveOutput = "ElectrocuteBuildupAvg", { format = "{1:output:ElectrocuteBuildupAvg}%", { breakdown = "ElectrocuteBuildup" }, { label = "Player modifiers", modName = { "EnemyElectrocuteBuildup", "EnemyImmobilisationBuildup" }, cfg = "skill" }, - { label = "Enemy modifiers", modName = { "PoiseThreshold", "EnemyElectrocuteThreshold", "ElectrocuteBuildup", "ImmobilisationBuildup" }, enemy = true }, + { label = "Enemy modifiers", modName = { "PoiseThreshold", "EnemyElectrocuteThreshold", "ElectrocuteBuildup", "ImmobilisationBuildup", "EnemyAilmentThreshold" }, enemy = true }, }, }, - { label = "Stun Buildup", haveOutput = "HeavyStunBuildupOnHit", { format = "{1:output:HeavyStunBuildupOnHit}%", + { label = "Stun Buildup", haveOutput = "HeavyStunBuildupAvg", { format = "{1:output:HeavyStunBuildupAvg}%", { breakdown = "HeavyStunBuildup" }, { label = "Player modifiers", modName = { "EnemyHeavyStunBuildup", "EnemyImmobilisationBuildup", "PhysicalHeavyStunBuildup" }, cfg = "skill" }, { label = "Enemy modifiers", modName = { "PoiseThreshold", "EnemyHeavyStunThreshold", "EnemyStunThreshold", "HeavyStunBuildup", "ImmobilisationBuildup", "StunBuildup" }, enemy = true }, }, }, - { label = "Pin Buildup", haveOutput = "PinBuildupOnHit", { format = "{1:output:PinBuildupOnHit}%", + { label = "Pin Buildup", haveOutput = "PinBuildupAvg", { format = "{1:output:PinBuildupAvg}%", { breakdown = "PinBuildup" }, { label = "Player modifiers", modName = { "EnemyPinBuildup", "EnemyImmobilisationBuildup" }, cfg = "skill" }, { label = "Enemy modifiers", modName = { "PoiseThreshold", "EnemyPinThreshold", "PinBuildup", "ImmobilisationBuildup" }, enemy = true }, diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index 872c6e968..b2f038516 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -4061,7 +4061,20 @@ local specialModList = { ["damage with hits is lucky against heavy stunned enemies"] = { mod("LuckyHitsChance", "BASE", 100, { type = "ActorCondition", actor = "enemy", var = "HeavyStunned" }) }, ["damage with hits is lucky against enemies that are on low life"] = { mod("LuckyHitsChance", "BASE", 100, { type = "ActorCondition", actor = "enemy", var = "LowLife" }) }, ["your damage with hits is lucky"] = { mod("LuckyHitsChance", "BASE", 100) }, - ["(%w+) damage with hits is lucky"] = function(_, damageType) return { mod(firstToUpper(damageType).."LuckyHitsChance", "BASE", 100) } end, + ["(physical|fire|cold|lightning|chaos) damage with hits is lucky"] = function(_, damageType) return { mod(firstToUpper(damageType).."LuckyHitsChance", "BASE", 100) } end, + ["(%w+) damage with hits is lucky"] = function(_, damageType) + local validTypes = { + Physical = true, + Fire = true, + Cold = true, + Lightning = true, + Chaos = true, + } + damageType = firstToUpper(damageType) + if validTypes[damageType] then + return { mod(damageType.."LuckyHitsChance", "BASE", 100) } + end + end, ["(%d+)%% chance for (%w*) ?damage with hits to be lucky"] = function(num, _, damageType) return { mod(firstToUpper(damageType).."LuckyHitsChance", "BASE", num) } end, ["elemental damage with hits is lucky while you are shocked"] = { flag("ElementalLuckHits", { type = "Condition", var = "Shocked" }) }, ["break (%d+)%% of armour on heavy stunning an enemy"] = { flag("Condition:CanArmourBreak", { type = "GlobalEffect", effectType = "Buff", effectName = "ArmourBreak" }) }, From fe4a6a287dda8d2a88a383fd2aaaa0ce549c6c90 Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Mon, 20 Oct 2025 17:42:28 +1100 Subject: [PATCH 23/23] Fix Quality on Overwhelming Presence not affecting threshold mods The stat was not being applied as a AuraDebuff so wasn't being properly scaled by the Aura effect quality mod --- src/Data/SkillStatMap.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Data/SkillStatMap.lua b/src/Data/SkillStatMap.lua index 8d33ad2cc..97d0a249e 100644 --- a/src/Data/SkillStatMap.lua +++ b/src/Data/SkillStatMap.lua @@ -1155,10 +1155,10 @@ return { }, -- Ailments ["skill_overwhelming_pressure_aura_enemy_ailment_threshold_+%"] = { - mod("EnemyAilmentThreshold", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Debuff", effectName = "Overwhelming Presence"}), + mod("EnemyAilmentThreshold", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "AuraDebuff", effectName = "Overwhelming Presence"}), }, ["skill_overwhelming_pressure_aura_enemy_stun_threshold_+%"] = { - mod("EnemyStunThreshold", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Debuff", effectName = "Overwhelming Presence"}), + mod("EnemyStunThreshold", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "AuraDebuff", effectName = "Overwhelming Presence"}), }, ["bleed_on_hit_with_attacks_%"] = { mod("BleedChance", "BASE", nil, ModFlag.Attack),