123 lines
4.3 KiB
Lua
123 lines
4.3 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 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
|