--[[ 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