Files
Dota-Zombie-Invasion/scripts/vscripts/abilities/hero_rage/apply_hero_rage.lua
T
2026-05-29 15:11:31 +07:00

40 lines
1.4 KiB
Lua

--[[ Generated with https://github.com/TypeScriptToLua/TypeScriptToLua ]]
local ____exports = {}
local ____hero_rage_whitelist = require("abilities.hero_rage.hero_rage_whitelist")
local isUnitNameAllowedForHeroRage = ____hero_rage_whitelist.isUnitNameAllowedForHeroRage
--- Параметры в духе infinity_levels / hero_rage.
local DEFAULT_HERO_RAGE = {
max_rage = 100,
rage_per_attack = 3,
rage_per_damage = 1,
time_decrase_rage = 4,
tick_decrase_rage = 0.5
}
local MOD_NAME = "modifier_hero_rage"
--- Вешает систему «ярости» (мана = ярость) на героя, если ещё не висит.
-- Нужна любая способность-носитель для AddNewModifier (у всех наших героев есть ability_stacking_crit).
-- **Только** герои из `hero_rage_whitelist.ts`.
function ____exports.tryApplyDefaultHeroRage(self, hero)
if not IsServer() then
return
end
if not hero:IsRealHero() or hero:IsIllusion() then
return
end
if not isUnitNameAllowedForHeroRage(
nil,
hero:GetUnitName()
) then
return
end
if hero:HasModifier(MOD_NAME) then
return
end
local host = hero:FindAbilityByName("ability_stacking_crit")
if not host then
return
end
hero:AddNewModifier(hero, host, MOD_NAME, DEFAULT_HERO_RAGE)
end
return ____exports