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

140 lines
5.6 KiB
Lua

local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local ____exports = {}
local ____dota_ts_adapter = require("lib.dota_ts_adapter")
local BaseAbility = ____dota_ts_adapter.BaseAbility
local BaseModifier = ____dota_ts_adapter.BaseModifier
local registerAbility = ____dota_ts_adapter.registerAbility
local registerModifier = ____dota_ts_adapter.registerModifier
local ____creep_render_color = require("utils.creep_render_color")
local trySetIntrinsicCreepRenderColor = ____creep_render_color.trySetIntrinsicCreepRenderColor
--- Пассив: усиливает юнита на bonus_pct процентов (по умолчанию 100 = удвоение по смыслу «+100%»).
-- HP/мана — плоский бонус от базового макс.; урон/IAS/мувспид/спелламп/реген HP% — через модификаторы.
____exports.wave_full_brutality = __TS__Class()
local wave_full_brutality = ____exports.wave_full_brutality
wave_full_brutality.name = "wave_full_brutality"
wave_full_brutality.____file_path = "scripts/vscripts/abilities/creep/wave_full_brutality.lua"
__TS__ClassExtends(wave_full_brutality, BaseAbility)
function wave_full_brutality.prototype.GetIntrinsicModifierName(self)
return "modifier_wave_full_brutality_passive"
end
wave_full_brutality = __TS__Decorate(
wave_full_brutality,
wave_full_brutality,
{registerAbility(nil)},
{kind = "class", name = "wave_full_brutality"}
)
____exports.wave_full_brutality = wave_full_brutality
____exports.modifier_wave_full_brutality_passive = __TS__Class()
local modifier_wave_full_brutality_passive = ____exports.modifier_wave_full_brutality_passive
modifier_wave_full_brutality_passive.name = "modifier_wave_full_brutality_passive"
modifier_wave_full_brutality_passive.____file_path = "scripts/vscripts/abilities/creep/wave_full_brutality.lua"
__TS__ClassExtends(modifier_wave_full_brutality_passive, BaseModifier)
function modifier_wave_full_brutality_passive.prototype.____constructor(self, ...)
BaseModifier.prototype.____constructor(self, ...)
self.bonusPct = 100
self.effectiveBonusPct = 100
self.healthBonusFlat = 0
self.manaBonusFlat = 0
end
function modifier_wave_full_brutality_passive.prototype.IsHidden(self)
return false
end
function modifier_wave_full_brutality_passive.prototype.IsDebuff(self)
return false
end
function modifier_wave_full_brutality_passive.prototype.IsPurgable(self)
return false
end
function modifier_wave_full_brutality_passive.prototype.OnCreated(self)
local ability = self:GetAbility()
local parent = self:GetParent()
if not parent then
return
end
if IsServer() then
trySetIntrinsicCreepRenderColor(
nil,
self:GetParent(),
52,
0,
0
)
end
self.bonusPct = ability and ability:GetSpecialValueFor("bonus_pct") or 100
if self.bonusPct < 0 then
self.bonusPct = 0
end
self.effectiveBonusPct = self.bonusPct
local baseHp = math.max(
1,
parent:GetMaxHealth()
)
local baseMana = math.max(
0,
parent:GetMaxMana()
)
self.healthBonusFlat = math.floor(baseHp * (self.effectiveBonusPct / 100))
self.manaBonusFlat = math.floor(baseMana * (self.effectiveBonusPct / 100))
if IsServer() then
Timers:CreateTimer(
0,
function()
local p = self:GetParent()
if not p or not IsValidEntity(p) or not p:IsAlive() then
return nil
end
p:SetHealth(p:GetMaxHealth() * 2)
if p:GetMaxMana() > 0 then
p:SetMana(p:GetMaxMana() * 2)
end
return nil
end
)
end
end
function modifier_wave_full_brutality_passive.prototype.DeclareFunctions(self)
return {
MODIFIER_PROPERTY_HEALTH_BONUS,
MODIFIER_PROPERTY_MANA_BONUS,
MODIFIER_PROPERTY_DAMAGEOUTGOING_PERCENTAGE,
MODIFIER_PROPERTY_ATTACKSPEED_PERCENTAGE,
MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE,
MODIFIER_PROPERTY_SPELL_AMPLIFY_PERCENTAGE
}
end
function modifier_wave_full_brutality_passive.prototype.GetModifierHealthBonus(self)
return self.healthBonusFlat
end
function modifier_wave_full_brutality_passive.prototype.GetModifierManaBonus(self)
return self.manaBonusFlat
end
function modifier_wave_full_brutality_passive.prototype.GetModifierDamageOutgoing_Percentage(self, _event)
return self.effectiveBonusPct
end
function modifier_wave_full_brutality_passive.prototype.GetModifierAttackSpeedPercentage(self)
return self.effectiveBonusPct
end
function modifier_wave_full_brutality_passive.prototype.GetModifierMoveSpeedBonus_Percentage(self)
return self.effectiveBonusPct
end
function modifier_wave_full_brutality_passive.prototype.GetModifierSpellAmplify_Percentage(self, _event)
return self.effectiveBonusPct
end
function modifier_wave_full_brutality_passive.prototype.GetEffectName(self)
return "particles/items2_fx/mask_of_madness.vpcf"
end
function modifier_wave_full_brutality_passive.prototype.GetEffectAttachType(self)
return PATTACH_ABSORIGIN_FOLLOW
end
modifier_wave_full_brutality_passive = __TS__Decorate(
modifier_wave_full_brutality_passive,
modifier_wave_full_brutality_passive,
{registerModifier(nil)},
{kind = "class", name = "modifier_wave_full_brutality_passive"}
)
____exports.modifier_wave_full_brutality_passive = modifier_wave_full_brutality_passive
return ____exports