208 lines
7.8 KiB
Lua
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
|