159 lines
6.7 KiB
Lua
159 lines
6.7 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
|
|
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
|