69 lines
2.3 KiB
Lua
69 lines
2.3 KiB
Lua
--[[ Generated with https://github.com/TypeScriptToLua/TypeScriptToLua ]]
|
|
local ____exports = {}
|
|
local CRIT_MULT_KEY_PREFIX
|
|
require("lib.dota_ts_adapter")
|
|
function ____exports.getCritMult(self, hero)
|
|
if not hero or not IsValidEntity(hero) then
|
|
return 100
|
|
end
|
|
local playerId = hero:GetPlayerOwnerID()
|
|
if playerId == nil or playerId == nil or playerId < 0 then
|
|
return 100
|
|
end
|
|
local key = CRIT_MULT_KEY_PREFIX .. tostring(playerId)
|
|
local data = CustomNetTables:GetTableValue("custom_stats", key)
|
|
local ____data_0
|
|
if data then
|
|
____data_0 = data.value
|
|
else
|
|
____data_0 = 100
|
|
end
|
|
return ____data_0
|
|
end
|
|
CRIT_MULT_KEY_PREFIX = "crit_mult_"
|
|
function ____exports.setCritMult(self, hero, critMult)
|
|
if not IsServer() then
|
|
return
|
|
end
|
|
local playerId = hero:GetPlayerOwnerID()
|
|
if playerId == nil or playerId == nil or playerId < 0 then
|
|
return
|
|
end
|
|
local key = CRIT_MULT_KEY_PREFIX .. tostring(playerId)
|
|
CustomNetTables:SetTableValue("custom_stats", key, {value = critMult})
|
|
end
|
|
function ____exports.addCritMult(self, hero, delta)
|
|
if not IsServer() then
|
|
return
|
|
end
|
|
local current = ____exports.getCritMult(nil, hero)
|
|
____exports.setCritMult(nil, hero, current + delta)
|
|
end
|
|
function ____exports.reduceCritMult(self, hero, delta)
|
|
if not IsServer() then
|
|
return
|
|
end
|
|
____exports.addCritMult(
|
|
nil,
|
|
hero,
|
|
-math.abs(delta)
|
|
)
|
|
end
|
|
--- Итоговый множитель урона крита (физика и магия): sum(mult/100 из источников) × (крит_мульт героя / 100).
|
|
--
|
|
-- @param stackedCritMultSum сумма mult/100 по сработавшим источникам (например 1.75 + 1.6)
|
|
function ____exports.getFinalStackingCritMultiplier(self, unit, stackedCritMultSum)
|
|
if stackedCritMultSum <= 0 then
|
|
return 0
|
|
end
|
|
local critMultStat = unit:IsHero() and ____exports.getCritMult(nil, unit) or 100
|
|
return stackedCritMultSum * (critMultStat / 100)
|
|
end
|
|
local g = _G
|
|
g.setCritMult = ____exports.setCritMult
|
|
g.addCritMult = ____exports.addCritMult
|
|
g.reduceCritMult = ____exports.reduceCritMult
|
|
g.getCritMult = ____exports.getCritMult
|
|
g.getFinalStackingCritMultiplier = ____exports.getFinalStackingCritMultiplier
|
|
return ____exports
|