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 registerAbility = ____dota_ts_adapter.registerAbility local registerModifier = ____dota_ts_adapter.registerModifier local BaseModifier = ____dota_ts_adapter.BaseModifier ____exports.item_demonic_bow = __TS__Class() local item_demonic_bow = ____exports.item_demonic_bow item_demonic_bow.name = "item_demonic_bow" item_demonic_bow.____file_path = "scripts/vscripts/items/default_items/item_demonic_bow.lua" __TS__ClassExtends(item_demonic_bow, BaseItem) function item_demonic_bow.prototype.GetIntrinsicModifierName(self) return "modifier_item_demonic_bow" end item_demonic_bow = __TS__Decorate( item_demonic_bow, item_demonic_bow, {registerAbility(nil)}, {kind = "class", name = "item_demonic_bow"} ) ____exports.item_demonic_bow = item_demonic_bow ____exports.modifier_item_demonic_bow = __TS__Class() local modifier_item_demonic_bow = ____exports.modifier_item_demonic_bow modifier_item_demonic_bow.name = "modifier_item_demonic_bow" modifier_item_demonic_bow.____file_path = "scripts/vscripts/items/default_items/item_demonic_bow.lua" __TS__ClassExtends(modifier_item_demonic_bow, BaseModifier) function modifier_item_demonic_bow.prototype.IsHidden(self) return true end function modifier_item_demonic_bow.prototype.IsDebuff(self) return false end function modifier_item_demonic_bow.prototype.IsPurgable(self) return false end function modifier_item_demonic_bow.prototype.OnCreated(self) if not IsServer() then return end end function modifier_item_demonic_bow.prototype.CheckState(self) return {[MODIFIER_STATE_CANNOT_MISS] = true} end function modifier_item_demonic_bow.prototype.DeclareFunctions(self) return { MODIFIER_EVENT_ON_ATTACK, MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT, MODIFIER_PROPERTY_ATTACK_RANGE_BONUS, MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE, MODIFIER_PROPERTY_STATS_AGILITY_BONUS, MODIFIER_PROPERTY_STATS_STRENGTH_BONUS, MODIFIER_PROPERTY_STATS_INTELLECT_BONUS, MODIFIER_PROPERTY_HEALTH_BONUS, MODIFIER_PROPERTY_PROCATTACK_BONUS_DAMAGE_MAGICAL } end function modifier_item_demonic_bow.prototype.GetModifierProcAttack_BonusDamage_Magical(self, event) if self:GetParent():IsIllusion() or not self:GetParent():IsRangedAttacker() then return 0 end return self:GetAbility():GetSpecialValueFor("proc_damage_magical") end function modifier_item_demonic_bow.prototype.GetModifierAttackSpeedBonus_Constant(self) return self:GetAbility():GetSpecialValueFor("attack_speed") end function modifier_item_demonic_bow.prototype.GetModifierAttackRangeBonus(self) if not self:GetParent():IsRangedAttacker() then return 0 end return self:GetAbility():GetSpecialValueFor("attack_range") end function modifier_item_demonic_bow.prototype.GetModifierBonusStats_Strength(self) return self:GetAbility():GetSpecialValueFor("strength") end function modifier_item_demonic_bow.prototype.GetModifierBonusStats_Agility(self) return self:GetAbility():GetSpecialValueFor("agility") end function modifier_item_demonic_bow.prototype.GetModifierBonusStats_Intellect(self) return self:GetAbility():GetSpecialValueFor("intellect") end function modifier_item_demonic_bow.prototype.GetModifierHealthBonus(self) return self:GetAbility():GetSpecialValueFor("health") end function modifier_item_demonic_bow.prototype.OnAttack(self, event) if not IsServer() then return end local attacker = event.attacker local target = event.target if not attacker or not target then return end if not attacker:IsRealHero() then return end if attacker ~= self:GetParent() then return end if not attacker:IsRangedAttacker() then return end if event.no_attack_cooldown then return end local radius = self:GetParent():GetAttackRangeBuffer() + self:GetParent():GetBaseAttackRange() local units = FindUnitsInRadius( attacker:GetTeamNumber(), attacker:GetAbsOrigin(), nil, radius, DOTA_UNIT_TARGET_TEAM_ENEMY, DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_BASIC + DOTA_UNIT_TARGET_BUILDING, DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES + DOTA_UNIT_TARGET_FLAG_FOW_VISIBLE, FIND_CLOSEST, false ) local attackCount = 0 for ____, unit in ipairs(units) do if unit and not unit:IsNull() and unit ~= target and unit:IsAlive() then attacker:PerformAttack( unit, true, true, true, false, true, false, false ) attackCount = attackCount + 1 end if attackCount >= self:GetAbility():GetSpecialValueFor("attack_count") then break end end end modifier_item_demonic_bow = __TS__Decorate( modifier_item_demonic_bow, modifier_item_demonic_bow, {registerModifier(nil)}, {kind = "class", name = "modifier_item_demonic_bow"} ) ____exports.modifier_item_demonic_bow = modifier_item_demonic_bow return ____exports