initial commit
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
local ____lualib = require("lualib_bundle")
|
||||
local __TS__NumberIsFinite = ____lualib.__TS__NumberIsFinite
|
||||
local ____exports = {}
|
||||
--- Верхний предел после убывания (как в `incoming_damage_reduction_combine`).
|
||||
____exports.MAX_EFFECTIVE_INCOMING_REDUCTION_FROM_LINEAR_SUM_PCT = 92
|
||||
____exports.INCOMING_DAMAGE_REDUCTION_STAT_KEY = "incoming_damage_reduction_pct"
|
||||
--- «Бумажная» сумма % снижения входящего → эффективный % в бою (убывающая отдача).
|
||||
--
|
||||
-- @param linearSumPositivePct сумма вкладов из KV/арсенала (+20+20+…)
|
||||
function ____exports.resolveIncomingDamageReductionPctFromLinearSum(self, linearSumPositivePct)
|
||||
if not __TS__NumberIsFinite(linearSumPositivePct) or linearSumPositivePct <= 0 then
|
||||
return 0
|
||||
end
|
||||
local s = linearSumPositivePct
|
||||
local hyperbolic = 100 * s / (100 + s)
|
||||
return math.min(____exports.MAX_EFFECTIVE_INCOMING_REDUCTION_FROM_LINEAR_SUM_PCT, hyperbolic)
|
||||
end
|
||||
--- Значение для MODIFIER_PROPERTY_INCOMING_DAMAGE_PERCENTAGE (отрицательное = меньше урона).
|
||||
function ____exports.incomingDamageReductionModifierValue(self, linearSumPositivePct)
|
||||
local effective = ____exports.resolveIncomingDamageReductionPctFromLinearSum(nil, linearSumPositivePct)
|
||||
return effective > 0 and -effective or 0
|
||||
end
|
||||
return ____exports
|
||||
Reference in New Issue
Block a user