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 reducePhysicalVampirism = ____vampirism.reducePhysicalVampirism ____exports.item_vampire_claw = __TS__Class() local item_vampire_claw = ____exports.item_vampire_claw item_vampire_claw.name = "item_vampire_claw" item_vampire_claw.____file_path = "scripts/vscripts/items/default_items/item_vampire_claw.lua" __TS__ClassExtends(item_vampire_claw, BaseItem) function item_vampire_claw.prototype.GetIntrinsicModifierName(self) return "modifier_item_vampire_claw" end function item_vampire_claw.prototype.Precache(self, context) PrecacheResource("particle", "particles/econ/items/bloodseeker/bloodseeker_eztzhok_weapon/bloodseeker_bloodbath_eztzhok.vpcf", context) end function item_vampire_claw.prototype.GetAbilityTextureName(self) local charges = self:GetCurrentCharges() if charges < 7 then return "default_items/vampire_claw/vampire_claw_1" elseif charges < 14 then return "default_items/vampire_claw/vampire_claw_2" elseif charges < 21 then return "default_items/vampire_claw/vampire_claw_3" else return "default_items/vampire_claw/vampire_claw_4" end end function item_vampire_claw.prototype.OnSpellStart(self) local charges = self:GetCurrentCharges() if charges <= 0 then return end local caster = self:GetCaster() local healing = charges * self:GetSpecialValueFor("heal_per_charge") caster:Heal(healing, self) self:SetCurrentCharges(0) SendOverheadEventMessage( nil, OVERHEAD_ALERT_HEAL, caster, healing, caster:GetPlayerOwner() ) local particle = ParticleManager:CreateParticle("particles/econ/items/bloodseeker/bloodseeker_eztzhok_weapon/bloodseeker_bloodbath_eztzhok.vpcf", PATTACH_ABSORIGIN_FOLLOW, caster) ParticleManager:SetParticleControlEnt( particle, 1, caster, PATTACH_ABSORIGIN_FOLLOW, "", caster:GetAbsOrigin(), true ) EmitSoundOn("hero_bloodseeker.bloodRite.silence", caster) end item_vampire_claw = __TS__Decorate( item_vampire_claw, item_vampire_claw, {registerAbility(nil)}, {kind = "class", name = "item_vampire_claw"} ) ____exports.item_vampire_claw = item_vampire_claw ____exports.modifier_item_vampire_claw = __TS__Class() local modifier_item_vampire_claw = ____exports.modifier_item_vampire_claw modifier_item_vampire_claw.name = "modifier_item_vampire_claw" modifier_item_vampire_claw.____file_path = "scripts/vscripts/items/default_items/item_vampire_claw.lua" __TS__ClassExtends(modifier_item_vampire_claw, BaseModifier) function modifier_item_vampire_claw.prototype.____constructor(self, ...) BaseModifier.prototype.____constructor(self, ...) self.bonusStr = 0 self.bonusDamage = 0 self.chargesPerBossAttack = 0 self.chargesPerCreepAttack = 0 self.maxCharges = 0 end function modifier_item_vampire_claw.prototype.IsHidden(self) return true end function modifier_item_vampire_claw.prototype.IsPurgable(self) return false end function modifier_item_vampire_claw.prototype.IsPurgeException(self) return false end function modifier_item_vampire_claw.prototype.RemoveOnDeath(self) return false end function modifier_item_vampire_claw.prototype.IsDebuff(self) return false end function modifier_item_vampire_claw.prototype.GetAttributes(self) return MODIFIER_ATTRIBUTE_MULTIPLE end function modifier_item_vampire_claw.prototype.DeclareFunctions(self) return {MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE, MODIFIER_PROPERTY_STATS_STRENGTH_BONUS, MODIFIER_EVENT_ON_TAKEDAMAGE} end function modifier_item_vampire_claw.prototype.OnCreated(self, params) self:OnRefresh() local hero = self:GetParent() local vampirism = self:GetAbility():GetSpecialValueFor("vampirism") if vampirism > 0 then addPhysicalVampirism(nil, hero, vampirism) end end function modifier_item_vampire_claw.prototype.OnRefresh(self, params) local ability = self:GetAbility() if not ability or ability:IsNull() then return end self.bonusStr = ability:GetSpecialValueFor("bonus_str") self.bonusDamage = ability:GetSpecialValueFor("bonus_damage") self.chargesPerBossAttack = ability:GetSpecialValueFor("charges_for_attack_boss") self.chargesPerCreepAttack = ability:GetSpecialValueFor("charges_for_attack_creep") self.maxCharges = ability:GetSpecialValueFor("max_charges") end function modifier_item_vampire_claw.prototype.OnDestroy(self) if not IsServer() then return end local hero = self:GetParent() local vampirism = self:GetAbility():GetSpecialValueFor("vampirism") if vampirism > 0 then reducePhysicalVampirism(nil, hero, vampirism) end end function modifier_item_vampire_claw.prototype.GetModifierBonusStats_Strength(self) return self.bonusStr end function modifier_item_vampire_claw.prototype.GetModifierPreAttack_BonusDamage(self) return self.bonusDamage end function modifier_item_vampire_claw.prototype.OnTakeDamage(self, event) if event.attacker ~= self:GetParent() then return end local ability = self:GetAbility() if not ability then return end local currentCharges = ability:GetCurrentCharges() local bonusChargesPerAttack = self.chargesPerCreepAttack ability:SetCurrentCharges(math.min(currentCharges + bonusChargesPerAttack, self.maxCharges)) end modifier_item_vampire_claw = __TS__Decorate( modifier_item_vampire_claw, modifier_item_vampire_claw, {registerModifier(nil)}, {kind = "class", name = "modifier_item_vampire_claw"} ) ____exports.modifier_item_vampire_claw = modifier_item_vampire_claw return ____exports