160 lines
6.3 KiB
Lua
160 lines
6.3 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 ____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
|