40 lines
1.4 KiB
Lua
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
|