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 ____vampirism = require("utils.vampirism") local addPhysicalVampirism = ____vampirism.addPhysicalVampirism local precacheVampirismParticle = ____vampirism.precacheVampirismParticle local reducePhysicalVampirism = ____vampirism.reducePhysicalVampirism local SATANIC_BUFF_PARTICLE = "particles/items2_fx/satanic_buff.vpcf" ____exports.item_satanic_custom = __TS__Class() local item_satanic_custom = ____exports.item_satanic_custom item_satanic_custom.name = "item_satanic_custom" item_satanic_custom.____file_path = "scripts/vscripts/items/default_items/item_satanic_custom.lua" __TS__ClassExtends(item_satanic_custom, BaseItem) function item_satanic_custom.prototype.Precache(self, context) precacheVampirismParticle(nil, context) PrecacheResource("particle", SATANIC_BUFF_PARTICLE, context) PrecacheResource("soundfile", "soundevents/game_sounds_items.vsndevts", context) end function item_satanic_custom.prototype.GetIntrinsicModifierName(self) return ____exports.modifier_item_satanic_custom.name end function item_satanic_custom.prototype.OnSpellStart(self) if not IsServer() then return end local caster = self:GetCaster() local healthCost = self:GetSpecialValueFor("health_cost") if healthCost > 0 then caster:SetHealth(math.max( 1, caster:GetHealth() - healthCost )) end caster:EmitSound("DOTA_Item.Satanic.Activate") caster:AddNewModifier( caster, self, ____exports.modifier_item_satanic_custom_unholy.name, {duration = self:GetSpecialValueFor("unholy_duration")} ) end item_satanic_custom = __TS__Decorate( item_satanic_custom, item_satanic_custom, {registerAbility(nil)}, {kind = "class", name = "item_satanic_custom"} ) ____exports.item_satanic_custom = item_satanic_custom ____exports.modifier_item_satanic_custom = __TS__Class() local modifier_item_satanic_custom = ____exports.modifier_item_satanic_custom modifier_item_satanic_custom.name = "modifier_item_satanic_custom" modifier_item_satanic_custom.____file_path = "scripts/vscripts/items/default_items/item_satanic_custom.lua" __TS__ClassExtends(modifier_item_satanic_custom, BaseModifier) function modifier_item_satanic_custom.prototype.IsHidden(self) return true end function modifier_item_satanic_custom.prototype.IsPurgable(self) return false end function modifier_item_satanic_custom.prototype.RemoveOnDeath(self) return false end function modifier_item_satanic_custom.prototype.GetAttributes(self) return MODIFIER_ATTRIBUTE_MULTIPLE end function modifier_item_satanic_custom.prototype.DeclareFunctions(self) return {MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE, MODIFIER_PROPERTY_STATS_STRENGTH_BONUS} end function modifier_item_satanic_custom.prototype.GetModifierPreAttack_BonusDamage(self) return self:GetAbility():GetSpecialValueFor("bonus_damage") end function modifier_item_satanic_custom.prototype.GetModifierBonusStats_Strength(self) return self:GetAbility():GetSpecialValueFor("bonus_strength") end function modifier_item_satanic_custom.prototype.OnCreated(self) if not IsServer() then return end local hero = self:GetParent() local lifesteal = self:GetAbility():GetSpecialValueFor("lifesteal") if lifesteal > 0 then addPhysicalVampirism(nil, hero, lifesteal) end end function modifier_item_satanic_custom.prototype.OnDestroy(self) if not IsServer() then return end local hero = self:GetParent() local lifesteal = self:GetAbility():GetSpecialValueFor("lifesteal") if lifesteal > 0 then reducePhysicalVampirism(nil, hero, lifesteal) end end modifier_item_satanic_custom = __TS__Decorate( modifier_item_satanic_custom, modifier_item_satanic_custom, {registerModifier(nil)}, {kind = "class", name = "modifier_item_satanic_custom"} ) ____exports.modifier_item_satanic_custom = modifier_item_satanic_custom ____exports.modifier_item_satanic_custom_unholy = __TS__Class() local modifier_item_satanic_custom_unholy = ____exports.modifier_item_satanic_custom_unholy modifier_item_satanic_custom_unholy.name = "modifier_item_satanic_custom_unholy" modifier_item_satanic_custom_unholy.____file_path = "scripts/vscripts/items/default_items/item_satanic_custom.lua" __TS__ClassExtends(modifier_item_satanic_custom_unholy, BaseModifier) function modifier_item_satanic_custom_unholy.prototype.IsHidden(self) return false end function modifier_item_satanic_custom_unholy.prototype.IsPurgable(self) return true end function modifier_item_satanic_custom_unholy.prototype.IsDebuff(self) return false end function modifier_item_satanic_custom_unholy.prototype.GetTexture(self) return "item_satanic" end function modifier_item_satanic_custom_unholy.prototype.GetEffectName(self) return SATANIC_BUFF_PARTICLE end function modifier_item_satanic_custom_unholy.prototype.GetEffectAttachType(self) return PATTACH_ABSORIGIN_FOLLOW end function modifier_item_satanic_custom_unholy.prototype.OnCreated(self) if not IsServer() then return end local hero = self:GetParent() local bonus = self:GetAbility():GetSpecialValueFor("unholy_lifesteal") if bonus > 0 then addPhysicalVampirism(nil, hero, bonus) end end function modifier_item_satanic_custom_unholy.prototype.OnDestroy(self) if not IsServer() then return end local hero = self:GetParent() local bonus = self:GetAbility():GetSpecialValueFor("unholy_lifesteal") if bonus > 0 then reducePhysicalVampirism(nil, hero, bonus) end end modifier_item_satanic_custom_unholy = __TS__Decorate( modifier_item_satanic_custom_unholy, modifier_item_satanic_custom_unholy, {registerModifier(nil)}, {kind = "class", name = "modifier_item_satanic_custom_unholy"} ) ____exports.modifier_item_satanic_custom_unholy = modifier_item_satanic_custom_unholy return ____exports