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 ____modifier_overheating = require("abilities.heroes.sargatanas.modifier_overheating") local modifier_overheating = ____modifier_overheating.modifier_overheating local function DamageHell(self, unit) if unit:HasModifier(modifier_overheating.name) then local modif = unit:FindModifierByName(modifier_overheating.name) if modif then return modif:GetStackCount() / 100 + 1 end end return 1 end ____exports.ability_firecleave = __TS__Class() local ability_firecleave = ____exports.ability_firecleave ability_firecleave.name = "ability_firecleave" ability_firecleave.____file_path = "scripts/vscripts/abilities/heroes/sargatanas/ability_firecleave.lua" __TS__ClassExtends(ability_firecleave, BaseAbility) function ability_firecleave.prototype.GetIntrinsicModifierName(self) return ____exports.modifier_ability_firecleave.name end ability_firecleave = __TS__Decorate( ability_firecleave, ability_firecleave, {registerAbility(nil)}, {kind = "class", name = "ability_firecleave"} ) ____exports.ability_firecleave = ability_firecleave ____exports.modifier_ability_firecleave = __TS__Class() local modifier_ability_firecleave = ____exports.modifier_ability_firecleave modifier_ability_firecleave.name = "modifier_ability_firecleave" modifier_ability_firecleave.____file_path = "scripts/vscripts/abilities/heroes/sargatanas/ability_firecleave.lua" __TS__ClassExtends(modifier_ability_firecleave, BaseModifier) function modifier_ability_firecleave.prototype.____constructor(self, ...) BaseModifier.prototype.____constructor(self, ...) self.cleaveStartingWidth = 0 self.cleaveEndingWidth = 0 self.cleaveDistance = 0 self.greatCleaveDamage = 0 end function modifier_ability_firecleave.prototype.IsHidden(self) return true end function modifier_ability_firecleave.prototype.IsPurgable(self) return false end function modifier_ability_firecleave.prototype.IsDebuff(self) return false end function modifier_ability_firecleave.prototype.IsBuff(self) return true end function modifier_ability_firecleave.prototype.RemoveOnDeath(self) return true end function modifier_ability_firecleave.prototype.AllowIllusionDuplicate(self) return false end function modifier_ability_firecleave.prototype.DeclareFunctions(self) return {MODIFIER_EVENT_ON_ATTACK_LANDED} end function modifier_ability_firecleave.prototype.OnCreated(self) if not IsServer() then return end local ability = self:GetAbility() if not ability then return end self.cleaveStartingWidth = ability:GetSpecialValueFor("cleave_starting_width") self.cleaveEndingWidth = ability:GetSpecialValueFor("cleave_ending_width") self.cleaveDistance = ability:GetSpecialValueFor("cleave_distance") end function modifier_ability_firecleave.prototype.OnRefresh(self) self:OnCreated() end function modifier_ability_firecleave.prototype.OnAttackLanded(self, event) if not IsServer() then return end local caster = self:GetParent() local target = event.target local attacker = event.attacker local ability = self:GetAbility() if not ability then return end local duration = ability:GetSpecialValueFor("duration") if caster == attacker and not caster:PassivesDisabled() then self.greatCleaveDamage = ability:GetSpecialValueFor("great_cleave_damage") / 100 * self:GetCaster():GetAverageTrueAttackDamage(event.target) if target:HasModifier(____exports.modifier_ability_firecleave_fire.name) then local modif = target:FindModifierByName(____exports.modifier_ability_firecleave_fire.name) if modif then modif:IncrementStackCount() modif:SetDuration(duration, true) end else local newModif = target:AddNewModifier(caster, ability, ____exports.modifier_ability_firecleave_fire.name, {duration = duration}) if newModif ~= nil and newModif ~= nil then newModif:SetStackCount(1) end end local fx = "particles/econ/items/sven/sven_ti7_sword/sven_ti7_sword_spell_great_cleave_gods_strength_crit_b.vpcf" DoCleaveAttack( caster, target, ability, self.greatCleaveDamage, self.cleaveStartingWidth, self.cleaveEndingWidth, self.cleaveDistance, fx ) end end modifier_ability_firecleave = __TS__Decorate( modifier_ability_firecleave, modifier_ability_firecleave, {registerModifier(nil)}, {kind = "class", name = "modifier_ability_firecleave"} ) ____exports.modifier_ability_firecleave = modifier_ability_firecleave ____exports.modifier_ability_firecleave_fire = __TS__Class() local modifier_ability_firecleave_fire = ____exports.modifier_ability_firecleave_fire modifier_ability_firecleave_fire.name = "modifier_ability_firecleave_fire" modifier_ability_firecleave_fire.____file_path = "scripts/vscripts/abilities/heroes/sargatanas/ability_firecleave.lua" __TS__ClassExtends(modifier_ability_firecleave_fire, BaseModifier) function modifier_ability_firecleave_fire.prototype.IsHidden(self) return false end function modifier_ability_firecleave_fire.prototype.IsPurgable(self) return true end function modifier_ability_firecleave_fire.prototype.IsDebuff(self) return true end function modifier_ability_firecleave_fire.prototype.IsBuff(self) return false end function modifier_ability_firecleave_fire.prototype.RemoveOnDeath(self) return true end function modifier_ability_firecleave_fire.prototype.AllowIllusionDuplicate(self) return false end function modifier_ability_firecleave_fire.prototype.GetEffectName(self) return "particles/econ/items/huskar/huskar_2021_immortal/huskar_2021_immortal_burning_spear_debuff_flame_circulate.vpcf" end function modifier_ability_firecleave_fire.prototype.GetEffectAttachType(self) return PATTACH_ABSORIGIN_FOLLOW end function modifier_ability_firecleave_fire.prototype.OnCreated(self) if not IsServer() then return end self:StartIntervalThink(1) end function modifier_ability_firecleave_fire.prototype.OnIntervalThink(self) if not IsServer() then return end local ability = self:GetAbility() local caster = self:GetCaster() if not ability or not caster then return end local damage if caster:HasModifier("modifier_ability_metamorphosis") then damage = ability:GetSpecialValueFor("fire_damage") * 2 else damage = ability:GetSpecialValueFor("fire_damage") end ApplyDamage({ victim = self:GetParent(), attacker = caster, damage = damage * DamageHell( nil, self:GetParent() ), damage_type = ability:GetAbilityDamageType(), ability = ability }) end modifier_ability_firecleave_fire = __TS__Decorate( modifier_ability_firecleave_fire, modifier_ability_firecleave_fire, {registerModifier(nil)}, {kind = "class", name = "modifier_ability_firecleave_fire"} ) ____exports.modifier_ability_firecleave_fire = modifier_ability_firecleave_fire return ____exports