140 lines
5.6 KiB
Lua
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
|