Skip to content

Commit a769bde

Browse files
committed
Update ailment threshold to current values
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 b007a6c commit a769bde

File tree

7 files changed

+72
-40
lines changed

7 files changed

+72
-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: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3393,7 +3393,14 @@ function calcs.offence(env, actor, activeSkill)
33933393
end
33943394

33953395
-- Calculate non-damaging ailments effect and duration modifiers
3396-
local enemyThreshold = enemyDB:Sum("BASE", nil, "AilmentThreshold") * enemyDB:More(nil, "Life")
3396+
local isBoss = env.configInput["enemyIsBoss"] ~= "None"
3397+
local enemyLevel = m_max(env.enemyLevel, 66)
3398+
local enemyBaseLife = data.monsterLifeTable[enemyLevel]
3399+
local enemyMapLifeMult = isBoss and data.mapLevelBossLifeMult[enemyLevel] or data.mapLevelLifeMult[enemyLevel]
3400+
local enemyMapAilmentMult = isBoss and data.mapLevelBossAilmentMult[enemyLevel] or 1
3401+
local enemyTypeMult = isBoss and 7.68 or 1
3402+
local enemyThreshold = enemyBaseLife * enemyTypeMult * enemyMapLifeMult * enemyMapAilmentMult * enemyDB:More(nil, "AilmentThreshold")
3403+
33973404
local bonechill = output.BonechillEffect or enemyDB:Sum("BASE", nil, "DesiredBonechillEffect")
33983405
local ailments = {
33993406
["Chill"] = {
@@ -3493,7 +3500,7 @@ function calcs.offence(env, actor, activeSkill)
34933500
t_insert(val.effList, desired)
34943501
end
34953502
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 "")
3496-
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())
3503+
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())
34973504
breakdown[ailment.."DPS"].rowList = { }
34983505
breakdown[ailment.."DPS"].colList = {
34993506
{ label = "Ailment Threshold", key = "thresh" },
@@ -3506,7 +3513,7 @@ function calcs.offence(env, actor, activeSkill)
35063513
local precision = ailmentData[ailment].precision
35073514
value = m_floor(value * (10 ^ precision)) / (10 ^ precision)
35083515
local valueFormat = "%."..tostring(precision).."f%%"
3509-
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 "")
3516+
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 "")
35103517
local labels = { }
35113518
if decCheck == 1 and value ~= 0 then
35123519
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)