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

200 lines
7.1 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
____exports.ability_dragon_fear_aura = __TS__Class()
local ability_dragon_fear_aura = ____exports.ability_dragon_fear_aura
ability_dragon_fear_aura.name = "ability_dragon_fear_aura"
ability_dragon_fear_aura.____file_path = "scripts/vscripts/abilities/heroes/smaug/ability_dragon_fear_aura.lua"
__TS__ClassExtends(ability_dragon_fear_aura, BaseAbility)
function ability_dragon_fear_aura.prototype.GetIntrinsicModifierName(self)
return ____exports.modifier_dragon_fear_aura.name
end
ability_dragon_fear_aura = __TS__Decorate(
ability_dragon_fear_aura,
ability_dragon_fear_aura,
{registerAbility(nil)},
{kind = "class", name = "ability_dragon_fear_aura"}
)
____exports.ability_dragon_fear_aura = ability_dragon_fear_aura
____exports.modifier_dragon_fear_aura = __TS__Class()
local modifier_dragon_fear_aura = ____exports.modifier_dragon_fear_aura
modifier_dragon_fear_aura.name = "modifier_dragon_fear_aura"
modifier_dragon_fear_aura.____file_path = "scripts/vscripts/abilities/heroes/smaug/ability_dragon_fear_aura.lua"
__TS__ClassExtends(modifier_dragon_fear_aura, BaseModifier)
function modifier_dragon_fear_aura.prototype.____constructor(self, ...)
BaseModifier.prototype.____constructor(self, ...)
self.spellAmp = 0
end
function modifier_dragon_fear_aura.prototype.IsHidden(self)
return true
end
function modifier_dragon_fear_aura.prototype.IsPurgable(self)
return false
end
function modifier_dragon_fear_aura.prototype.OnCreated(self)
local ability = self:GetAbility()
if not ability then
return
end
self.spellAmp = ability:GetSpecialValueFor("spell_amp")
end
function modifier_dragon_fear_aura.prototype.OnRefresh(self)
local ability = self:GetAbility()
if not ability then
return
end
self.spellAmp = ability:GetSpecialValueFor("spell_amp")
end
function modifier_dragon_fear_aura.prototype.DeclareFunctions(self)
return {MODIFIER_EVENT_ON_ATTACK_START, MODIFIER_PROPERTY_SPELL_AMPLIFY_PERCENTAGE}
end
function modifier_dragon_fear_aura.prototype.OnAttackStart(self, event)
if not IsServer() then
return
end
if event.target ~= self:GetParent() then
return
end
if event.attacker:IsMagicImmune() then
return
end
event.attacker:AddNewModifier(
self:GetParent(),
self:GetAbility(),
____exports.modifier_dragon_fear_aura_debuff.name,
{}
)
end
function modifier_dragon_fear_aura.prototype.GetModifierSpellAmplify_Percentage(self)
return self.spellAmp
end
modifier_dragon_fear_aura = __TS__Decorate(
modifier_dragon_fear_aura,
modifier_dragon_fear_aura,
{registerModifier(nil)},
{kind = "class", name = "modifier_dragon_fear_aura"}
)
____exports.modifier_dragon_fear_aura = modifier_dragon_fear_aura
____exports.modifier_dragon_fear_aura_debuff = __TS__Class()
local modifier_dragon_fear_aura_debuff = ____exports.modifier_dragon_fear_aura_debuff
modifier_dragon_fear_aura_debuff.name = "modifier_dragon_fear_aura_debuff"
modifier_dragon_fear_aura_debuff.____file_path = "scripts/vscripts/abilities/heroes/smaug/ability_dragon_fear_aura.lua"
__TS__ClassExtends(modifier_dragon_fear_aura_debuff, BaseModifier)
function modifier_dragon_fear_aura_debuff.prototype.____constructor(self, ...)
BaseModifier.prototype.____constructor(self, ...)
self.outgoing = 0
self.duration = 0
self.incoming = 0
self.attackOther = false
self.hasAttacked = false
end
function modifier_dragon_fear_aura_debuff.prototype.IsHidden(self)
return false
end
function modifier_dragon_fear_aura_debuff.prototype.IsDebuff(self)
return true
end
function modifier_dragon_fear_aura_debuff.prototype.IsStunDebuff(self)
return false
end
function modifier_dragon_fear_aura_debuff.prototype.IsPurgable(self)
return true
end
function modifier_dragon_fear_aura_debuff.prototype.OnCreated(self)
local ability = self:GetAbility()
if not ability then
return
end
self.outgoing = ability:GetSpecialValueFor("outgoing")
self.duration = ability:GetSpecialValueFor("duration")
self.incoming = ability:GetSpecialValueFor("incoming")
end
function modifier_dragon_fear_aura_debuff.prototype.OnRefresh(self)
local ability = self:GetAbility()
if not ability then
return
end
self.outgoing = ability:GetSpecialValueFor("outgoing")
self.duration = ability:GetSpecialValueFor("duration")
self.incoming = ability:GetSpecialValueFor("incoming")
end
function modifier_dragon_fear_aura_debuff.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_PRE_ATTACK, MODIFIER_EVENT_ON_ATTACK, MODIFIER_PROPERTY_DAMAGEOUTGOING_PERCENTAGE, MODIFIER_PROPERTY_INCOMING_DAMAGE_PERCENTAGE}
end
function modifier_dragon_fear_aura_debuff.prototype.GetModifierPreAttack(self, event)
if not IsServer() then
return 0
end
self.record = event.record
self.attackOther = true
local effectCast1 = ParticleManager:CreateParticle(
"particles/econ/items/grimstroke/gs_fall20_immortal/gs_fall20_immortal_soul_debuff.vpcf",
PATTACH_ABSORIGIN_FOLLOW,
self:GetParent()
)
ParticleManager:SetParticleControlEnt(
effectCast1,
2,
self:GetParent(),
PATTACH_ABSORIGIN_FOLLOW,
"",
self:GetParent():GetAbsOrigin(),
true
)
self:AddParticle(
effectCast1,
false,
false,
-1,
false,
false
)
if self.primary then
local effectCast2 = ParticleManager:CreateParticle(
"particles/econ/items/grimstroke/gs_fall20_immortal/gs_fall20_immortal_soul_dragon_model.vpcf",
PATTACH_OVERHEAD_FOLLOW,
self:GetParent()
)
self:AddParticle(
effectCast2,
false,
false,
-1,
false,
true
)
end
return 0
end
function modifier_dragon_fear_aura_debuff.prototype.OnAttack(self, event)
if not IsServer() then
return
end
if event.record ~= self.record then
return
end
self:SetDuration(self.duration, true)
self.hasAttacked = true
end
function modifier_dragon_fear_aura_debuff.prototype.GetModifierDamageOutgoing_Percentage(self)
return self.outgoing
end
function modifier_dragon_fear_aura_debuff.prototype.GetModifierIncomingDamage_Percentage(self)
return self.incoming
end
modifier_dragon_fear_aura_debuff = __TS__Decorate(
modifier_dragon_fear_aura_debuff,
modifier_dragon_fear_aura_debuff,
{registerModifier(nil)},
{kind = "class", name = "modifier_dragon_fear_aura_debuff"}
)
____exports.modifier_dragon_fear_aura_debuff = modifier_dragon_fear_aura_debuff
return ____exports