@@ -1354,53 +1354,55 @@ function calcs.defence(env, actor)
13541354 local recoupTypeList = {" Life" , " Mana" , " EnergyShield" }
13551355 for _ , recoupType in ipairs (recoupTypeList ) do
13561356 local baseRecoup = modDB :Sum (" BASE" , nil , recoupType .. " Recoup" )
1357- output [recoupType .. " Recoup" ] = baseRecoup * output [recoupType .. " RecoveryRateMod" ]
1358- output [" anyRecoup" ] = output [" anyRecoup" ] + output [recoupType .. " Recoup" ]
1359- if breakdown then
1360- if output [recoupType .. " RecoveryRateMod" ] ~= 1 then
1361- breakdown [recoupType .. " Recoup" ] = {
1362- s_format (" %d%% ^8(base)" , baseRecoup ),
1363- s_format (" * %.2f ^8(recovery rate modifier)" , output [recoupType .. " RecoveryRateMod" ]),
1364- s_format (" = %.1f%% over %d seconds" , output [recoupType .. " Recoup" ], (modDB :Flag (nil , " 3Second" .. recoupType .. " Recoup" ) or modDB :Flag (nil , " 3SecondRecoup" )) and 3 or 4 )
1365- }
1366- else
1367- breakdown [recoupType .. " Recoup" ] = { s_format (" %d%% over %d seconds" , output [recoupType .. " Recoup" ], (modDB :Flag (nil , " 3Second" .. recoupType .. " Recoup" ) or modDB :Flag (nil , " 3SecondRecoup" )) and 3 or 4 ) }
1357+ if recoupType == " Life" and modDB :Flag (nil , " EnergyShieldRecoupInsteadOfLife" ) then
1358+ output .LifeRecoup = 0
1359+ local lifeRecoup = modDB :Sum (" BASE" , nil , " LifeRecoup" )
1360+ modDB :NewMod (" EnergyShieldRecoup" , " BASE" , lifeRecoup , " Life Recoup Conversion" )
1361+ else
1362+ output [recoupType .. " Recoup" ] = baseRecoup * output [recoupType .. " RecoveryRateMod" ]
1363+ output [" anyRecoup" ] = output [" anyRecoup" ] + output [recoupType .. " Recoup" ]
1364+ if breakdown then
1365+ if output [recoupType .. " RecoveryRateMod" ] ~= 1 then
1366+ breakdown [recoupType .. " Recoup" ] = {
1367+ s_format (" %d%% ^8(base)" , baseRecoup ),
1368+ s_format (" * %.2f ^8(recovery rate modifier)" , output [recoupType .. " RecoveryRateMod" ]),
1369+ s_format (" = %.1f%% over %d seconds" , output [recoupType .. " Recoup" ], (modDB :Flag (nil , " 3Second" .. recoupType .. " Recoup" ) or modDB :Flag (nil , " 3SecondRecoup" )) and 3 or 4 )
1370+ }
1371+ else
1372+ breakdown [recoupType .. " Recoup" ] = { s_format (" %d%% over %d seconds" , output [recoupType .. " Recoup" ], (modDB :Flag (nil , " 3Second" .. recoupType .. " Recoup" ) or modDB :Flag (nil , " 3SecondRecoup" )) and 3 or 4 ) }
1373+ end
13681374 end
13691375 end
13701376 end
13711377
13721378 if modDB :Flag (nil , " UsePowerCharges" ) and modDB :Flag (nil , " PowerChargesConvertToAbsorptionCharges" ) then
13731379 local ElementalEnergyShieldRecoupPerAbsorptionCharges = modDB :Sum (" BASE" , nil , " PerAbsorptionElementalEnergyShieldRecoup" )
1374- modDB :NewMod (" ElementalEnergyShieldRecoup" , " BASE" , ElementalEnergyShieldRecoupPerAbsorptionCharges , " Absorption Charges" , { type = " Multiplier" , var = " AbsorptionCharge" } )
1375- end
1376- local ElementalEnergyShieldRecoup = modDB :Sum (" BASE" , nil , " ElementalEnergyShieldRecoup" )
1377- output .ElementalEnergyShieldRecoup = ElementalEnergyShieldRecoup * output .EnergyShieldRecoveryRateMod
1378- output [" anyRecoup" ] = output [" anyRecoup" ] + output .ElementalEnergyShieldRecoup
1379- if breakdown then
1380- if output .EnergyShieldRecoveryRateMod ~= 1 then
1381- breakdown .ElementalEnergyShieldRecoup = {
1382- s_format (" %d%% ^8(base)" , ElementalEnergyShieldRecoup ),
1383- s_format (" * %.2f ^8(recovery rate modifier)" , output .EnergyShieldRecoveryRateMod ),
1384- s_format (" = %.1f%% over %d seconds" , output .ElementalEnergyShieldRecoup , (modDB :Flag (nil , " 3SecondEnergyShieldRecoup" ) or modDB :Flag (nil , " 3SecondRecoup" )) and 3 or 4 )
1385- }
1386- else
1387- breakdown .ElementalEnergyShieldRecoup = { s_format (" %d%% over %d seconds" , output .ElementalEnergyShieldRecoup , (modDB :Flag (nil , " 3SecondEnergyShieldRecoup" ) or modDB :Flag (nil , " 3SecondRecoup" )) and 3 or 4 ) }
1388- end
1380+ modDB :NewMod (" ColdEnergyShieldRecoup" , " BASE" , ElementalEnergyShieldRecoupPerAbsorptionCharges , " Absorption Charges" , { type = " Multiplier" , var = " AbsorptionCharge" } )
1381+ modDB :NewMod (" FireEnergyShieldRecoup" , " BASE" , ElementalEnergyShieldRecoupPerAbsorptionCharges , " Absorption Charges" , { type = " Multiplier" , var = " AbsorptionCharge" } )
1382+ modDB :NewMod (" LightningEnergyShieldRecoup" , " BASE" , ElementalEnergyShieldRecoupPerAbsorptionCharges , " Absorption Charges" , { type = " Multiplier" , var = " AbsorptionCharge" } )
13891383 end
1390-
1391- for _ , damageType in ipairs (dmgTypeList ) do
1392- local LifeRecoup = modDB :Sum (" BASE" , nil , damageType .. " LifeRecoup" )
1393- output [damageType .. " LifeRecoup" ] = LifeRecoup * output .LifeRecoveryRateMod
1394- output [" anyRecoup" ] = output [" anyRecoup" ] + output [damageType .. " LifeRecoup" ]
1395- if breakdown then
1396- if output .LifeRecoveryRateMod ~= 1 then
1397- breakdown [damageType .. " LifeRecoup" ] = {
1398- s_format (" %d%% ^8(base)" , LifeRecoup ),
1399- s_format (" * %.2f ^8(recovery rate modifier)" , output .LifeRecoveryRateMod ),
1400- s_format (" = %.1f%% over %d seconds" , output [damageType .. " LifeRecoup" ], (modDB :Flag (nil , " 3SecondLifeRecoup" ) or modDB :Flag (nil , " 3SecondRecoup" )) and 3 or 4 )
1401- }
1384+
1385+ for _ , recoupType in ipairs (recoupTypeList ) do
1386+ for _ , damageType in ipairs (dmgTypeList ) do
1387+ if recoupType == " Life" and modDB :Flag (nil , " EnergyShieldRecoupInsteadOfLife" ) then
1388+ output [damageType .. " LifeRecoup" ] = 0
1389+ local lifeRecoup = modDB :Sum (" BASE" , nil , damageType .. " LifeRecoup" )
1390+ modDB :NewMod (damageType .. " EnergyShieldRecoup" , " BASE" , lifeRecoup , " Life Recoup Conversion" )
14021391 else
1403- breakdown [damageType .. " LifeRecoup" ] = { s_format (" %d%% over %d seconds" , output [damageType .. " LifeRecoup" ], (modDB :Flag (nil , " 3SecondLifeRecoup" ) or modDB :Flag (nil , " 3SecondRecoup" )) and 3 or 4 ) }
1392+ local recoup = modDB :Sum (" BASE" , nil , damageType .. recoupType .. " Recoup" )
1393+ output [damageType .. recoupType .. " Recoup" ] = recoup * output [recoupType .. " RecoveryRateMod" ]
1394+ output [" anyRecoup" ] = output [" anyRecoup" ] + output [damageType .. recoupType .. " Recoup" ]
1395+ if breakdown then
1396+ if output [recoupType .. " RecoveryRateMod" ] ~= 1 then
1397+ breakdown [damageType .. recoupType .. " Recoup" ] = {
1398+ s_format (" %d%% ^8(base)" , recoup ),
1399+ s_format (" * %.2f ^8(recovery rate modifier)" , output [recoupType .. " RecoveryRateMod" ]),
1400+ s_format (" = %.1f%% over %d seconds" , output [damageType .. recoupType .. " Recoup" ], (modDB :Flag (nil , " 3Second" .. recoupType .. " Recoup" ) or modDB :Flag (nil , " 3SecondRecoup" )) and 3 or 4 )
1401+ }
1402+ else
1403+ breakdown [damageType .. recoupType .. " Recoup" ] = { s_format (" %d%% over %d seconds" , output [damageType .. recoupType .. " Recoup" ], (modDB :Flag (nil , " 3Second" .. recoupType .. " Recoup" ) or modDB :Flag (nil , " 3SecondRecoup" )) and 3 or 4 ) }
1404+ end
1405+ end
14041406 end
14051407 end
14061408 end
0 commit comments