Skip to content

Commit 9f2152d

Browse files
authored
Update ailment threshold to current values (#4435)
Also remove awakening level as it do not exists anymore and it was taken into account for ailment calculations. Also raise max monster level to 85 for ubers for ailment calculations. The calcuation is done in exactly same way as poedb does it, e.g base life * monster ailment mult * monster type mult * monster map life mult * monster reduced ailment mult: https://poedb.tw/us/Sirus%2C_Awakener_of_Worlds#SirusAwakenerofWorldsAtlasExile5 Signed-off-by: Tomas Slusny <slusnucky@gmail.com>
1 parent 644dd41 commit 9f2152d

File tree

7 files changed

+75
-40
lines changed

7 files changed

+75
-40
lines changed

src/Data/Misc.lua

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,12 @@ data.monsterEvasionTable = { 67, 86, 104, 124, 144, 166, 188, 211, 234, 259, 285
66
data.monsterAccuracyTable = { 14, 15, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 31, 32, 34, 35, 37, 39, 41, 43, 45, 47, 49, 52, 54, 57, 59, 62, 65, 68, 71, 74, 77, 81, 84, 88, 92, 96, 100, 105, 109, 114, 119, 124, 129, 135, 140, 146, 152, 159, 165, 172, 179, 187, 195, 203, 211, 220, 229, 238, 247, 257, 268, 279, 290, 301, 314, 326, 339, 352, 366, 381, 396, 412, 428, 444, 462, 480, 499, 518, 538, 559, 580, 603, 626, 650, 675, 701, 728, 755, 784, 814, 845, 877, 910, 945, 980, }
77
data.monsterLifeTable = { 22, 26, 31, 36, 42, 48, 55, 62, 70, 78, 87, 97, 107, 119, 131, 144, 158, 173, 190, 207, 226, 246, 267, 290, 315, 341, 370, 400, 432, 467, 504, 543, 585, 630, 678, 730, 785, 843, 905, 972, 1042, 1118, 1198, 1284, 1375, 1472, 1575, 1685, 1802, 1927, 2059, 2200, 2350, 2509, 2678, 2858, 3050, 3253, 3469, 3698, 3942, 4201, 4476, 4768, 5078, 5407, 5756, 6127, 6520, 6937, 7380, 7850, 8348, 8876, 9436, 10030, 10660, 11328, 12036, 12787, 13582, 14425, 15319, 16265, 17268, 18331, 19457, 20649, 21913, 23250, 24667, 26168, 27756, 29438, 31220, 33105, 35101, 37214, 39450, 41817, }
88
data.monsterAllyLifeTable = { 15, 17, 20, 23, 26, 30, 33, 37, 41, 46, 50, 55, 60, 66, 71, 77, 84, 91, 98, 105, 113, 122, 131, 140, 150, 161, 171, 183, 195, 208, 222, 236, 251, 266, 283, 300, 318, 337, 357, 379, 401, 424, 448, 474, 501, 529, 559, 590, 622, 656, 692, 730, 769, 810, 853, 899, 946, 996, 1048, 1102, 1159, 1219, 1281, 1346, 1415, 1486, 1561, 1640, 1722, 1807, 1897, 1991, 2089, 2192, 2299, 2411, 2528, 2651, 2779, 2913, 3053, 3199, 3352, 3511, 3678, 3853, 4035, 4225, 4424, 4631, 4848, 5074, 5310, 5557, 5815, 6084, 6364, 6658, 6964, 7283, }
9-
data.monsterDamageTable = { 4.9899997711182, 5.5599999427795, 6.1599998474121, 6.8099999427795, 7.5, 8.2299995422363, 9, 9.8199996948242, 10.699999809265, 11.619999885559, 12.60000038147, 13.640000343323, 14.739999771118, 15.909999847412, 17.139999389648, 18.450000762939, 19.829999923706, 21.290000915527, 22.840000152588, 24.469999313354, 26.190000534058, 28.010000228882, 29.940000534058, 31.959999084473, 34.110000610352, 36.360000610352, 38.75, 41.259998321533, 43.909999847412, 46.700000762939, 49.650001525879, 52.75, 56.009998321533, 59.450000762939, 63.080001831055, 66.889999389648, 70.910003662109, 75.129997253418, 79.580001831055, 84.26000213623, 89.180000305176, 94.349998474121, 99.800003051758, 105.51999664307, 111.5299987793, 117.86000061035, 124.5, 131.49000549316, 138.83000183105, 146.5299987793, 154.63000488281, 163.13999938965, 172.07000732422, 181.44999694824, 191.30000305176, 201.63000488281, 212.47999572754, 223.86999511719, 235.83000183105, 248.36999511719, 261.5299987793, 275.32998657227, 289.82000732422, 305.01000976562, 320.94000244141, 337.64999389648, 355.17999267578, 373.54998779297, 392.80999755859, 413.01000976562, 434.17999267578, 456.36999511719, 479.61999511719, 504, 529.53997802734, 556.29998779297, 584.34997558594, 613.72998046875, 644.5, 676.75, 710.52001953125, 745.89001464844, 782.94000244141, 821.72998046875, 862.35998535156, 904.90002441406, 949.44000244141, 996.07000732422, 1044.8900146484, 1096, 1149.5, 1205.5, 1264.1099853516, 1325.4499511719, 1389.6400146484, 1456.8199462891, 1527.1199951172, 1600.6800537109, 1677.6400146484, 1758.1700439453, }
9+
data.monsterDamageTable = { 4.9899997711182, 5.5599999427795, 6.1599998474121, 6.8099999427795, 7.5, 8.2299995422363, 9, 9.8199996948242, 10.699999809265, 11.619999885559, 12.60000038147, 13.640000343323, 14.739999771118, 15.909999847412, 17.139999389648, 18.450000762939, 19.829999923706, 21.290000915527, 22.840000152588, 24.469999313354, 26.190000534058, 28.010000228882, 29.940000534058, 31.959999084473, 34.110000610352, 36.360000610352, 38.75, 41.259998321533, 43.909999847412, 46.700000762939, 49.650001525879, 52.75, 56.009998321533, 59.450000762939, 63.080001831055, 66.889999389648, 70.910003662109, 75.129997253418, 79.580001831055, 84.26000213623, 89.180000305176, 94.349998474121, 99.800003051758, 105.51999664307, 111.5299987793, 117.86000061035, 124.5, 131.49000549316, 138.83000183105, 146.5299987793, 154.63000488281, 163.13999938965, 172.07000732422, 181.44999694824, 191.30000305176, 201.63000488281, 212.47999572754, 223.86999511719, 235.83000183105, 248.36999511719, 261.5299987793, 275.32998657227, 289.82000732422, 305.01000976563, 320.94000244141, 337.64999389648, 355.17999267578, 373.54998779297, 392.80999755859, 413.01000976563, 434.17999267578, 456.36999511719, 479.61999511719, 504, 529.53997802734, 556.29998779297, 584.34997558594, 613.72998046875, 644.5, 676.75, 710.52001953125, 745.89001464844, 782.94000244141, 821.72998046875, 862.35998535156, 904.90002441406, 949.44000244141, 996.07000732422, 1044.8900146484, 1096, 1149.5, 1205.5, 1264.1099853516, 1325.4499511719, 1389.6400146484, 1456.8199462891, 1527.1199951172, 1600.6800537109, 1677.6400146484, 1758.1700439453, }
1010
data.monsterArmourTable = { 22, 26, 31, 36, 42, 48, 55, 62, 70, 78, 87, 97, 107, 119, 131, 144, 158, 173, 190, 207, 226, 246, 267, 290, 315, 341, 370, 400, 432, 467, 504, 543, 585, 630, 678, 730, 785, 843, 905, 972, 1042, 1118, 1198, 1284, 1375, 1472, 1575, 1685, 1802, 1927, 2059, 2200, 2350, 2509, 2678, 2858, 3050, 3253, 3469, 3698, 3942, 4201, 4476, 4768, 5078, 5407, 5756, 6127, 6520, 6937, 7380, 7850, 8348, 8876, 9436, 10030, 10660, 11328, 12036, 12787, 13582, 14425, 15319, 16265, 17268, 18331, 19457, 20649, 21913, 23250, 24667, 26168, 27756, 29438, 31220, 33105, 35101, 37214, 39450, 41817, }
1111
-- From MonsterVarieties.dat combined with SkillTotemVariations.dat
1212
data.totemLifeMult = { [1] = 1, [2] = 1, [3] = 1, [4] = 1, [5] = 1, [6] = 1.2, [7] = 1, [8] = 1.2, [9] = 1, [10] = 1, [11] = 1, [12] = 1, [13] = 1.2, [15] = 1.2, [16] = 7.44, [17] = 1.2, [18] = 1, [19] = 1, [20] = 1.2, }
1313
-- From MonsterMapDifficulty.dat
1414
data.mapLevelLifeMult = { [66] = 1.01, [67] = 1.03, [68] = 1.05, [69] = 1.09, [70] = 1.13, [71] = 1.19, [72] = 1.24, [73] = 1.3, [74] = 1.36, [75] = 1.43, [76] = 1.49, [77] = 1.55, [78] = 1.61, [79] = 1.68, [80] = 1.77, [81] = 1.87, [82] = 1.98, [83] = 2.09, [84] = 2.17, [85] = 2.25, [86] = 2.34, [87] = 2.42, [88] = 2.5, [89] = 2.58, [90] = 2.66, }
15+
-- From MonsterMapBossDifficulty.dat
16+
data.mapLevelBossLifeMult = { [66] = 2.8, [67] = 2.8, [68] = 2.8, [69] = 3.03, [70] = 3.16, [71] = 3.32, [72] = 3.48, [73] = 5.63, [74] = 5.97, [75] = 6.32, [76] = 6.66, [77] = 6.99, [78] = 10.46, [79] = 11.32, [80] = 13.01, [81] = 15.43, [82] = 17.2, [83] = 19.64, [84] = 21.46, [85] = 21.46, [86] = 21.46, [87] = 21.46, [88] = 21.46, [89] = 21.46, [90] = 21.46, }
17+
data.mapLevelBossAilmentMult = { [66] = 0.63, [67] = 0.63, [68] = 0.6, [69] = 0.59, [70] = 0.58, [71] = 0.57, [72] = 0.56, [73] = 0.55, [74] = 0.53, [75] = 0.52, [76] = 0.51, [77] = 0.5, [78] = 0.49, [79] = 0.48, [80] = 0.48, [81] = 0.47, [82] = 0.47, [83] = 0.47, [84] = 0.47, [85] = 0.47, [86] = 0.47, [87] = 0.47, [88] = 0.47, [89] = 0.47, [90] = 0.47, }

src/Export/Scripts/miscdata.lua

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,17 @@ for row in dat("MonsterMapDifficulty"):Rows() do
4141
end
4242
out:write('}\n')
4343

44+
local mapBossLifeMult = ""
45+
local mapBossAilmentMult = ""
46+
for var in dat("MonsterMapBossDifficulty"):Rows() do
47+
mapBossLifeMult = mapBossLifeMult .. "[" .. var.AreaLevel .. "] = " .. 1 + var.BossLifePercentIncrease / 100 .. ", "
48+
mapBossAilmentMult = mapBossAilmentMult .. "[" .. var.AreaLevel .. "] = " .. (100 + var.BossAilmentPercentDecrease) / 100 .. ", "
49+
end
50+
51+
out:write('-- From MonsterMapBossDifficulty.dat\n')
52+
out:write('data.mapLevelBossLifeMult = { '..mapBossLifeMult..'}\n')
53+
out:write('data.mapLevelBossAilmentMult = { '..mapBossAilmentMult..'}\n')
54+
4455
out:close()
4556

4657
print("Misc data exported.")

src/Export/spec.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5068,7 +5068,7 @@ return {
50685068
},
50695069
[11]={
50705070
list=false,
5071-
name="",
5071+
name="BossAilmentPercentDecrease",
50725072
refTo="",
50735073
type="Int",
50745074
width=150

src/Modules/CalcOffence.lua

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3396,7 +3396,17 @@ function calcs.offence(env, actor, activeSkill)
33963396
end
33973397

33983398
-- Calculate non-damaging ailments effect and duration modifiers
3399-
local enemyThreshold = enemyDB:Sum("BASE", nil, "AilmentThreshold") * enemyDB:More(nil, "Life")
3399+
local isBoss = env.configInput["enemyIsBoss"] ~= "None"
3400+
local enemyBaseLife = data.monsterLifeTable[env.enemyLevel] * enemyDB:More(nil, "Life")
3401+
local enemyMapLifeMult = 1
3402+
local enemyMapAilmentMult = 1
3403+
if env.enemyLevel >= 66 then
3404+
enemyMapLifeMult = isBoss and data.mapLevelBossLifeMult[env.enemyLevel] or data.mapLevelLifeMult[env.enemyLevel]
3405+
enemyMapAilmentMult = isBoss and data.mapLevelBossAilmentMult[env.enemyLevel] or enemyMapAilmentMult
3406+
end
3407+
local enemyTypeMult = isBoss and 7.68 or 1
3408+
local enemyThreshold = enemyBaseLife * enemyTypeMult * enemyMapLifeMult * enemyMapAilmentMult * enemyDB:More(nil, "AilmentThreshold")
3409+
34003410
local bonechill = output.BonechillEffect or enemyDB:Sum("BASE", nil, "DesiredBonechillEffect")
34013411
local ailments = {
34023412
["Chill"] = {
@@ -3496,7 +3506,7 @@ function calcs.offence(env, actor, activeSkill)
34963506
t_insert(val.effList, desired)
34973507
end
34983508
breakdown[ailment.."DPS"].label = "Resulting ailment effect"..((current > 0 and val.ramping) and s_format(" ^8(with a ^7%s%% ^8%s on the enemy)^7", current, ailment) or "")
3499-
breakdown[ailment.."DPS"].footer = s_format("^8(ailment threshold is about equal to life, except on bosses where it is about half their life)\n(the above table shows that when the enemy has X ailment threshold, you ^8%s for Y)", ailment:lower())
3509+
breakdown[ailment.."DPS"].footer = s_format("^8(ailment threshold is about equal to life, except on bosses that have specific ailement thresholds)\n(the above table shows that when the enemy has X ailment threshold, you ^8%s for Y)", ailment:lower())
35003510
breakdown[ailment.."DPS"].rowList = { }
35013511
breakdown[ailment.."DPS"].colList = {
35023512
{ label = "Ailment Threshold", key = "thresh" },
@@ -3509,7 +3519,7 @@ function calcs.offence(env, actor, activeSkill)
35093519
local precision = ailmentData[ailment].precision
35103520
value = m_floor(value * (10 ^ precision)) / (10 ^ precision)
35113521
local valueFormat = "%."..tostring(precision).."f%%"
3512-
local threshString = s_format("%d", thresh)..(m_floor(thresh + 0.5) == m_floor(enemyThreshold + 0.5) and s_format(" ^8(AL%d %s)", skillModList:Sum("BASE", nil, "AwakeningLevel"), env.configInput.enemyIsBoss) or "")
3522+
local threshString = s_format("%d", thresh)..(m_floor(thresh + 0.5) == m_floor(enemyThreshold + 0.5) and s_format(" ^8(%s)", env.configInput.enemyIsBoss) or "")
35133523
local labels = { }
35143524
if decCheck == 1 and value ~= 0 then
35153525
if ailment == "Chill" and value == bonechill then

src/Modules/CalcSetup.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@ function calcs.initEnv(build, mode, override, specEnv)
290290
env.enemyDB = enemyDB
291291
env.itemModDB = new("ModDB")
292292

293-
env.enemyLevel = m_max(1, m_min(100, env.configInput.enemyLevel and env.configInput.enemyLevel or m_min(env.build.characterLevel, data.misc.MaxEnemyLevel)))
293+
env.enemyLevel = m_max(1, m_min(100, env.configInput.enemyLevel and env.configInput.enemyLevel or env.configPlaceholder["enemyLevel"] or m_min(env.build.characterLevel, data.misc.MaxEnemyLevel)))
294294

295295
-- Create player/enemy actors
296296
env.player = {

0 commit comments

Comments
 (0)