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 local ____modifier_stats_multiplier = require("modifiers.modifier_stats_multiplier") local removeStatsMultiplierSource = ____modifier_stats_multiplier.removeStatsMultiplierSource local setStatsMultiplierSource = ____modifier_stats_multiplier.setStatsMultiplierSource local SKADI_CUSTOM_SOURCE_PREFIX = "item_skadi_custom" ____exports.item_skadi_custom = __TS__Class() local item_skadi_custom = ____exports.item_skadi_custom item_skadi_custom.name = "item_skadi_custom" item_skadi_custom.____file_path = "scripts/vscripts/items/default_items/item_skadi_custom.lua" __TS__ClassExtends(item_skadi_custom, BaseItem) function item_skadi_custom.prototype.GetIntrinsicModifierName(self) return "modifier_item_skadi_custom" end item_skadi_custom = __TS__Decorate( item_skadi_custom, item_skadi_custom, {registerAbility(nil)}, {kind = "class", name = "item_skadi_custom"} ) ____exports.item_skadi_custom = item_skadi_custom ____exports.modifier_item_skadi_custom = __TS__Class() local modifier_item_skadi_custom = ____exports.modifier_item_skadi_custom modifier_item_skadi_custom.name = "modifier_item_skadi_custom" modifier_item_skadi_custom.____file_path = "scripts/vscripts/items/default_items/item_skadi_custom.lua" __TS__ClassExtends(modifier_item_skadi_custom, BaseModifier) function modifier_item_skadi_custom.prototype.____constructor(self, ...) BaseModifier.prototype.____constructor(self, ...) self.statsSourceId = "" end function modifier_item_skadi_custom.prototype.IsHidden(self) return true end function modifier_item_skadi_custom.prototype.IsPurgable(self) return false end function modifier_item_skadi_custom.prototype.RemoveOnDeath(self) return false end function modifier_item_skadi_custom.prototype.GetAttributes(self) return MODIFIER_ATTRIBUTE_MULTIPLE end function modifier_item_skadi_custom.prototype.OnCreated(self) local hero = self:GetParent() if not (hero and hero:IsRealHero()) then return end self.statsSourceId = (SKADI_CUSTOM_SOURCE_PREFIX .. "_") .. tostring(hero:entindex()) local ability = self:GetAbility() setStatsMultiplierSource( nil, hero, self.statsSourceId, function() if not hero or not IsValidEntity(hero) or not hero:IsRealHero() then return 0 end return ability and ability:GetSpecialValueFor("all_stats_pct") or 0 end, "all_stats_pct" ) end function modifier_item_skadi_custom.prototype.OnDestroy(self) if self.statsSourceId == "" then return end local hero = self:GetParent() if hero and IsValidEntity(hero) then removeStatsMultiplierSource(nil, hero, self.statsSourceId) end self.statsSourceId = "" end function modifier_item_skadi_custom.prototype.DeclareFunctions(self) return {MODIFIER_PROPERTY_STATS_STRENGTH_BONUS, MODIFIER_PROPERTY_STATS_AGILITY_BONUS, MODIFIER_PROPERTY_STATS_INTELLECT_BONUS} end function modifier_item_skadi_custom.prototype.GetModifierBonusStats_Strength(self) return self:GetAbility():GetSpecialValueFor("bonus_all_stats") end function modifier_item_skadi_custom.prototype.GetModifierBonusStats_Agility(self) return self:GetAbility():GetSpecialValueFor("bonus_all_stats") end function modifier_item_skadi_custom.prototype.GetModifierBonusStats_Intellect(self) return self:GetAbility():GetSpecialValueFor("bonus_all_stats") end function modifier_item_skadi_custom.prototype.OnAttackLanded(self, event) if event.attacker ~= self:GetParent() then return end if not event.target or event.target:IsBuilding() or event.target:IsOther() then return end if event.target ~= nil then local ____self_8 = event.target local ____self_8_AddNewModifier_9 = ____self_8.AddNewModifier local ____temp_6 = self:GetParent() local ____temp_7 = self:GetAbility() local ____opt_4 = self:GetAbility() ____self_8_AddNewModifier_9( ____self_8, ____temp_6, ____temp_7, "modifier_item_skadi_custom_debuff", {duration = ____opt_4 and ____opt_4:GetSpecialValueFor("debuff_duration")} ) end end modifier_item_skadi_custom = __TS__Decorate( modifier_item_skadi_custom, modifier_item_skadi_custom, {registerModifier(nil)}, {kind = "class", name = "modifier_item_skadi_custom"} ) ____exports.modifier_item_skadi_custom = modifier_item_skadi_custom ____exports.modifier_item_skadi_custom_debuff = __TS__Class() local modifier_item_skadi_custom_debuff = ____exports.modifier_item_skadi_custom_debuff modifier_item_skadi_custom_debuff.name = "modifier_item_skadi_custom_debuff" modifier_item_skadi_custom_debuff.____file_path = "scripts/vscripts/items/default_items/item_skadi_custom.lua" __TS__ClassExtends(modifier_item_skadi_custom_debuff, BaseModifier) function modifier_item_skadi_custom_debuff.prototype.IsDebuff(self) return true end function modifier_item_skadi_custom_debuff.prototype.IsPurgable(self) return true end function modifier_item_skadi_custom_debuff.prototype.IsHidden(self) return true end function modifier_item_skadi_custom_debuff.prototype.GetModifierProjectileName(self) return "particles/items2_fx/skadi_projectile.vpcf" end function modifier_item_skadi_custom_debuff.prototype.DeclareFunctions(self) return {MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS, MODIFIER_PROPERTY_HEALTH_REGEN_PERCENTAGE, MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE} end function modifier_item_skadi_custom_debuff.prototype.GetModifierMoveSpeedBonus_Percentage(self) return self:GetAbility():GetSpecialValueFor("movespeed_reduction") end function modifier_item_skadi_custom_debuff.prototype.GetModifierHealthRegenPercentage(self) return 1 + (self:GetAbility():GetSpecialValueFor("health_reduction") - 100) * 0.01 end function modifier_item_skadi_custom_debuff.prototype.GetModifierPhysicalArmorBonus(self, event) return self:GetAbility():GetSpecialValueFor("armor_reduction") end modifier_item_skadi_custom_debuff = __TS__Decorate( modifier_item_skadi_custom_debuff, modifier_item_skadi_custom_debuff, {registerModifier(nil)}, {kind = "class", name = "modifier_item_skadi_custom_debuff"} ) ____exports.modifier_item_skadi_custom_debuff = modifier_item_skadi_custom_debuff return ____exports