Files
Dota-Zombie-Invasion/scripts/vscripts/items/default_items/item_bloodstone_magical.lua
T
2026-05-29 15:11:31 +07:00

208 lines
7.8 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 registerAbility = ____dota_ts_adapter.registerAbility
local registerModifier = ____dota_ts_adapter.registerModifier
local BaseModifier = ____dota_ts_adapter.BaseModifier
____exports.item_bloodstone_magical = __TS__Class()
local item_bloodstone_magical = ____exports.item_bloodstone_magical
item_bloodstone_magical.name = "item_bloodstone_magical"
item_bloodstone_magical.____file_path = "scripts/vscripts/items/default_items/item_bloodstone_magical.lua"
__TS__ClassExtends(item_bloodstone_magical, BaseItem)
function item_bloodstone_magical.prototype.GetIntrinsicModifierName(self)
return "modifier_item_bloodstone_magical"
end
function item_bloodstone_magical.prototype.OnSpellStart(self)
if not IsServer() then
return
end
self:GetCaster():AddNewModifier(
self:GetCaster(),
self,
"modifier_item_bloodstone_magical_vampirism",
{duration = self:GetSpecialValueFor("duration")}
)
end
item_bloodstone_magical = __TS__Decorate(
item_bloodstone_magical,
item_bloodstone_magical,
{registerAbility(nil)},
{kind = "class", name = "item_bloodstone_magical"}
)
____exports.item_bloodstone_magical = item_bloodstone_magical
____exports.modifier_item_bloodstone_magical = __TS__Class()
local modifier_item_bloodstone_magical = ____exports.modifier_item_bloodstone_magical
modifier_item_bloodstone_magical.name = "modifier_item_bloodstone_magical"
modifier_item_bloodstone_magical.____file_path = "scripts/vscripts/items/default_items/item_bloodstone_magical.lua"
__TS__ClassExtends(modifier_item_bloodstone_magical, BaseModifier)
function modifier_item_bloodstone_magical.prototype.IsHidden(self)
return true
end
function modifier_item_bloodstone_magical.prototype.IsDebuff(self)
return false
end
function modifier_item_bloodstone_magical.prototype.IsPurgable(self)
return false
end
function modifier_item_bloodstone_magical.prototype.DeclareFunctions(self)
return {
MODIFIER_PROPERTY_HEALTH_BONUS,
MODIFIER_PROPERTY_MANA_BONUS,
MODIFIER_PROPERTY_HEALTH_REGEN_CONSTANT,
MODIFIER_PROPERTY_MANA_REGEN_CONSTANT,
MODIFIER_PROPERTY_SPELL_AMPLIFY_PERCENTAGE,
MODIFIER_PROPERTY_COOLDOWN_PERCENTAGE
}
end
function modifier_item_bloodstone_magical.prototype.OnCreated(self, params)
local caster = self:GetCaster()
if not caster then
return
end
addMagicalVampirism(
nil,
caster,
self:GetAbility():GetSpecialValueFor("spell_lifesteal")
)
end
function modifier_item_bloodstone_magical.prototype.OnDestroy(self)
local caster = self:GetCaster()
if not caster then
return
end
reduceMagicalVampirism(
nil,
caster,
self:GetAbility():GetSpecialValueFor("spell_lifesteal")
)
end
function modifier_item_bloodstone_magical.prototype.GetModifierHealthBonus(self)
local item = self:GetAbility()
if not item then
return 0
end
local ____opt_0 = self:GetCaster()
if not (____opt_0 and ____opt_0:HasItemInInventory("item_bloodstone_magical")) then
return 0
end
return item:GetSpecialValueFor("bonus_health")
end
function modifier_item_bloodstone_magical.prototype.GetModifierManaBonus(self)
local item = self:GetAbility()
if not item then
return 0
end
local ____opt_2 = self:GetCaster()
if not (____opt_2 and ____opt_2:HasItemInInventory("item_bloodstone_magical")) then
return 0
end
return item:GetSpecialValueFor("bonus_mana")
end
function modifier_item_bloodstone_magical.prototype.GetModifierConstantHealthRegen(self)
local item = self:GetAbility()
if not item then
return 0
end
local ____opt_4 = self:GetCaster()
if not (____opt_4 and ____opt_4:HasItemInInventory("item_bloodstone_magical")) then
return 0
end
return item:GetSpecialValueFor("bonus_health_regen")
end
function modifier_item_bloodstone_magical.prototype.GetModifierConstantManaRegen(self)
local item = self:GetAbility()
if not item then
return 0
end
local ____opt_6 = self:GetCaster()
if not (____opt_6 and ____opt_6:HasItemInInventory("item_bloodstone_magical")) then
return 0
end
return item:GetSpecialValueFor("bonus_mana_regen")
end
modifier_item_bloodstone_magical = __TS__Decorate(
modifier_item_bloodstone_magical,
modifier_item_bloodstone_magical,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_bloodstone_magical"}
)
____exports.modifier_item_bloodstone_magical = modifier_item_bloodstone_magical
____exports.modifier_item_bloodstone_magical_vampirism = __TS__Class()
local modifier_item_bloodstone_magical_vampirism = ____exports.modifier_item_bloodstone_magical_vampirism
modifier_item_bloodstone_magical_vampirism.name = "modifier_item_bloodstone_magical_vampirism"
modifier_item_bloodstone_magical_vampirism.____file_path = "scripts/vscripts/items/default_items/item_bloodstone_magical.lua"
__TS__ClassExtends(modifier_item_bloodstone_magical_vampirism, BaseModifier)
function modifier_item_bloodstone_magical_vampirism.prototype.IsHidden(self)
return false
end
function modifier_item_bloodstone_magical_vampirism.prototype.IsDebuff(self)
return false
end
function modifier_item_bloodstone_magical_vampirism.prototype.IsPurgable(self)
return false
end
function modifier_item_bloodstone_magical_vampirism.prototype.GetTexture(self)
return "default_items/bloodstone2"
end
function modifier_item_bloodstone_magical_vampirism.prototype.OnCreated(self, params)
local caster = self:GetCaster()
if not caster then
return
end
if IsClient() then
return
end
local player = caster:GetPlayerOwner()
if not player then
return
end
addMagicalVampirism(
nil,
caster,
self:GetAbility():GetSpecialValueFor("spell_lifesteal_active")
)
self.particle = ParticleManager:CreateParticleForPlayer("particles/bloodstone_full_screen_effect.vpcf", PATTACH_ABSORIGIN_FOLLOW, caster, player)
EmitSoundOn("bloodstone_magical_sound", caster)
end
function modifier_item_bloodstone_magical_vampirism.prototype.OnRefresh(self, params)
if self.particle then
ParticleManager:DestroyParticle(self.particle, false)
end
self:OnCreated(params)
end
function modifier_item_bloodstone_magical_vampirism.prototype.OnDestroy(self)
if IsClient() then
return
end
local caster = self:GetCaster()
if self.particle then
ParticleManager:DestroyParticle(self.particle, false)
end
reduceMagicalVampirism(
nil,
caster,
self:GetAbility():GetSpecialValueFor("spell_lifesteal_active")
)
end
function modifier_item_bloodstone_magical_vampirism.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_CASTTIME_PERCENTAGE, MODIFIER_PROPERTY_COOLDOWN_PERCENTAGE}
end
function modifier_item_bloodstone_magical_vampirism.prototype.GetModifierPercentageCasttime(self)
return self:GetAbility():GetSpecialValueFor("casttime_reduction")
end
function modifier_item_bloodstone_magical_vampirism.prototype.GetModifierPercentageCooldown(self)
return self:GetAbility():GetSpecialValueFor("cooldown_reduction_active")
end
modifier_item_bloodstone_magical_vampirism = __TS__Decorate(
modifier_item_bloodstone_magical_vampirism,
modifier_item_bloodstone_magical_vampirism,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_bloodstone_magical_vampirism"}
)
____exports.modifier_item_bloodstone_magical_vampirism = modifier_item_bloodstone_magical_vampirism
return ____exports