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 BaseItem = ____dota_ts_adapter.BaseItem local BaseModifier = ____dota_ts_adapter.BaseModifier local registerAbility = ____dota_ts_adapter.registerAbility local registerModifier = ____dota_ts_adapter.registerModifier ____exports.item_mega_fury = __TS__Class() local item_mega_fury = ____exports.item_mega_fury item_mega_fury.name = "item_mega_fury" item_mega_fury.____file_path = "scripts/vscripts/items/default_items/item_mega_fury.lua" __TS__ClassExtends(item_mega_fury, BaseItem) function item_mega_fury.prototype.GetIntrinsicModifierName(self) return "modifier_mega_fury" end function item_mega_fury.prototype.GetAOERadius(self) return self:GetSpecialValueFor("tree") end function item_mega_fury.prototype.OnSpellStart(self) if not IsServer() then return end local caster = self:GetCaster() local point = self:GetCursorPosition() local trees = GridNav:GetAllTreesAroundPoint( point, self:GetSpecialValueFor("tree"), true ) if trees and #trees > 0 then self:CutTree(caster, point) end end function item_mega_fury.prototype.CutTree(self, caster, position) GridNav:DestroyTreesAroundPoint( position, self:GetSpecialValueFor("tree"), true ) end item_mega_fury = __TS__Decorate( item_mega_fury, item_mega_fury, {registerAbility(nil)}, {kind = "class", name = "item_mega_fury"} ) ____exports.item_mega_fury = item_mega_fury ____exports.modifier_mega_fury = __TS__Class() local modifier_mega_fury = ____exports.modifier_mega_fury modifier_mega_fury.name = "modifier_mega_fury" modifier_mega_fury.____file_path = "scripts/vscripts/items/default_items/item_mega_fury.lua" __TS__ClassExtends(modifier_mega_fury, BaseModifier) function modifier_mega_fury.prototype.IsHidden(self) return true end function modifier_mega_fury.prototype.IsDebuff(self) return false end function modifier_mega_fury.prototype.IsPurgable(self) return false end function modifier_mega_fury.prototype.CheckState(self) return {[MODIFIER_STATE_CANNOT_MISS] = true} end function modifier_mega_fury.prototype.GetAttributes(self) return MODIFIER_ATTRIBUTE_MULTIPLE end function modifier_mega_fury.prototype.DeclareFunctions(self) return {MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE, MODIFIER_EVENT_ON_ATTACK_LANDED, MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT, MODIFIER_PROPERTY_ATTACK_RANGE_BONUS} end function modifier_mega_fury.prototype.OnAttackLanded(self, event) if not IsServer() then return end if self:GetParent():IsRangedAttacker() then return end local parent = event.attacker if parent ~= self:GetParent() then return end local ability = self:GetAbility() if not ability then return end local target = event.target local attackDamage = parent:GetAverageTrueAttackDamage(target) local cleaveDamage = attackDamage * (self:GetAbility():GetSpecialValueFor("cleave_damage") / 100) DoCleaveAttack( parent, target, ability, cleaveDamage, self:GetAbility():GetSpecialValueFor("cleave_starting_width"), self:GetAbility():GetSpecialValueFor("cleave_ending_width"), self:GetAbility():GetSpecialValueFor("cleave_distance"), "particles/items_fx/battlefury_cleave.vpcf" ) end function modifier_mega_fury.prototype.GetModifierPreAttack_BonusDamage(self) return self:GetAbility():GetSpecialValueFor("bonus_damage") end function modifier_mega_fury.prototype.GetModifierAttackSpeedBonus_Constant(self) return self:GetAbility():GetSpecialValueFor("attack_speed") end function modifier_mega_fury.prototype.GetModifierAttackRangeBonus(self) if self:GetParent():IsRangedAttacker() then return 0 end return self:GetAbility():GetSpecialValueFor("attack_range") end modifier_mega_fury = __TS__Decorate( modifier_mega_fury, modifier_mega_fury, {registerModifier(nil)}, {kind = "class", name = "modifier_mega_fury"} ) ____exports.modifier_mega_fury = modifier_mega_fury return ____exports