initial commit

This commit is contained in:
achmad
2026-05-29 15:11:31 +07:00
commit 777ee9bad8
1539 changed files with 172449 additions and 0 deletions
@@ -0,0 +1,71 @@
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
--- Синий воск — бонус к восстановлению маны (стакается).
____exports.item_blackshop_common_blue_tallow = __TS__Class()
local item_blackshop_common_blue_tallow = ____exports.item_blackshop_common_blue_tallow
item_blackshop_common_blue_tallow.name = "item_blackshop_common_blue_tallow"
item_blackshop_common_blue_tallow.____file_path = "scripts/vscripts/items/blackshop/common/item_blackshop_common_blue_tallow.lua"
__TS__ClassExtends(item_blackshop_common_blue_tallow, BaseItem)
function item_blackshop_common_blue_tallow.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local add = self:GetSpecialValueFor("bonus_mana_regen")
if caster:HasModifier("modifier_item_blue_tallow") then
local m = caster:FindModifierByName("modifier_item_blue_tallow")
m:SetStackCount(m:GetStackCount() + add)
else
caster:AddNewModifier(caster, self, "modifier_item_blue_tallow", {}):SetStackCount(add)
end
UTIL_Remove(self)
end
item_blackshop_common_blue_tallow = __TS__Decorate(
item_blackshop_common_blue_tallow,
item_blackshop_common_blue_tallow,
{registerAbility(nil)},
{kind = "class", name = "item_blackshop_common_blue_tallow"}
)
____exports.item_blackshop_common_blue_tallow = item_blackshop_common_blue_tallow
____exports.modifier_item_blue_tallow = __TS__Class()
local modifier_item_blue_tallow = ____exports.modifier_item_blue_tallow
modifier_item_blue_tallow.name = "modifier_item_blue_tallow"
modifier_item_blue_tallow.____file_path = "scripts/vscripts/items/blackshop/common/item_blackshop_common_blue_tallow.lua"
__TS__ClassExtends(modifier_item_blue_tallow, BaseModifier)
function modifier_item_blue_tallow.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_blue_tallow.prototype.IsHidden(self)
return true
end
function modifier_item_blue_tallow.prototype.IsPurgable(self)
return false
end
function modifier_item_blue_tallow.prototype.GetTexture(self)
return "../items/blackshop/blue_tallow"
end
function modifier_item_blue_tallow.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_MANA_REGEN_CONSTANT}
end
function modifier_item_blue_tallow.prototype.GetModifierConstantManaRegen(self)
return self:GetStackCount()
end
modifier_item_blue_tallow = __TS__Decorate(
modifier_item_blue_tallow,
modifier_item_blue_tallow,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_blue_tallow"}
)
____exports.modifier_item_blue_tallow = modifier_item_blue_tallow
return ____exports
@@ -0,0 +1,69 @@
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
____exports.item_blackshop_common_bonus_stats_agi = __TS__Class()
local item_blackshop_common_bonus_stats_agi = ____exports.item_blackshop_common_bonus_stats_agi
item_blackshop_common_bonus_stats_agi.name = "item_blackshop_common_bonus_stats_agi"
item_blackshop_common_bonus_stats_agi.____file_path = "scripts/vscripts/items/blackshop/common/item_blackshop_common_bonus_stats_agi.lua"
__TS__ClassExtends(item_blackshop_common_bonus_stats_agi, BaseItem)
function item_blackshop_common_bonus_stats_agi.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local stats = self:GetSpecialValueFor("bonus_agility")
if caster:HasModifier("modifier_item_bonus_stats_agi") then
caster:FindModifierByName("modifier_item_bonus_stats_agi"):SetStackCount(caster:FindModifierByName("modifier_item_bonus_stats_agi"):GetStackCount() + stats)
else
caster:AddNewModifier(caster, self, "modifier_item_bonus_stats_agi", {}):SetStackCount(stats)
end
UTIL_Remove(self)
end
item_blackshop_common_bonus_stats_agi = __TS__Decorate(
item_blackshop_common_bonus_stats_agi,
item_blackshop_common_bonus_stats_agi,
{registerAbility(nil)},
{kind = "class", name = "item_blackshop_common_bonus_stats_agi"}
)
____exports.item_blackshop_common_bonus_stats_agi = item_blackshop_common_bonus_stats_agi
____exports.modifier_item_bonus_stats_agi = __TS__Class()
local modifier_item_bonus_stats_agi = ____exports.modifier_item_bonus_stats_agi
modifier_item_bonus_stats_agi.name = "modifier_item_bonus_stats_agi"
modifier_item_bonus_stats_agi.____file_path = "scripts/vscripts/items/blackshop/common/item_blackshop_common_bonus_stats_agi.lua"
__TS__ClassExtends(modifier_item_bonus_stats_agi, BaseModifier)
function modifier_item_bonus_stats_agi.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_bonus_stats_agi.prototype.IsHidden(self)
return true
end
function modifier_item_bonus_stats_agi.prototype.IsPurgable(self)
return false
end
function modifier_item_bonus_stats_agi.prototype.GetTexture(self)
return "../items/blackshop/book_agi"
end
function modifier_item_bonus_stats_agi.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_STATS_AGILITY_BONUS}
end
function modifier_item_bonus_stats_agi.prototype.GetModifierBonusStats_Agility(self)
return self:GetStackCount()
end
modifier_item_bonus_stats_agi = __TS__Decorate(
modifier_item_bonus_stats_agi,
modifier_item_bonus_stats_agi,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_bonus_stats_agi"}
)
____exports.modifier_item_bonus_stats_agi = modifier_item_bonus_stats_agi
return ____exports
@@ -0,0 +1,69 @@
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
____exports.item_blackshop_common_bonus_stats_int = __TS__Class()
local item_blackshop_common_bonus_stats_int = ____exports.item_blackshop_common_bonus_stats_int
item_blackshop_common_bonus_stats_int.name = "item_blackshop_common_bonus_stats_int"
item_blackshop_common_bonus_stats_int.____file_path = "scripts/vscripts/items/blackshop/common/item_blackshop_common_bonus_stats_int.lua"
__TS__ClassExtends(item_blackshop_common_bonus_stats_int, BaseItem)
function item_blackshop_common_bonus_stats_int.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local stats = self:GetSpecialValueFor("bonus_intelligence")
if caster:HasModifier("modifier_item_bonus_stats_int") then
caster:FindModifierByName("modifier_item_bonus_stats_int"):SetStackCount(caster:FindModifierByName("modifier_item_bonus_stats_int"):GetStackCount() + stats)
else
caster:AddNewModifier(caster, self, "modifier_item_bonus_stats_int", {}):SetStackCount(stats)
end
UTIL_Remove(self)
end
item_blackshop_common_bonus_stats_int = __TS__Decorate(
item_blackshop_common_bonus_stats_int,
item_blackshop_common_bonus_stats_int,
{registerAbility(nil)},
{kind = "class", name = "item_blackshop_common_bonus_stats_int"}
)
____exports.item_blackshop_common_bonus_stats_int = item_blackshop_common_bonus_stats_int
____exports.modifier_item_bonus_stats_int = __TS__Class()
local modifier_item_bonus_stats_int = ____exports.modifier_item_bonus_stats_int
modifier_item_bonus_stats_int.name = "modifier_item_bonus_stats_int"
modifier_item_bonus_stats_int.____file_path = "scripts/vscripts/items/blackshop/common/item_blackshop_common_bonus_stats_int.lua"
__TS__ClassExtends(modifier_item_bonus_stats_int, BaseModifier)
function modifier_item_bonus_stats_int.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_bonus_stats_int.prototype.IsHidden(self)
return true
end
function modifier_item_bonus_stats_int.prototype.IsPurgable(self)
return false
end
function modifier_item_bonus_stats_int.prototype.GetTexture(self)
return "../items/blackshop/book_int"
end
function modifier_item_bonus_stats_int.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_STATS_INTELLECT_BONUS}
end
function modifier_item_bonus_stats_int.prototype.GetModifierBonusStats_Intellect(self)
return self:GetStackCount()
end
modifier_item_bonus_stats_int = __TS__Decorate(
modifier_item_bonus_stats_int,
modifier_item_bonus_stats_int,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_bonus_stats_int"}
)
____exports.modifier_item_bonus_stats_int = modifier_item_bonus_stats_int
return ____exports
@@ -0,0 +1,69 @@
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
____exports.item_blackshop_common_bonus_stats_str = __TS__Class()
local item_blackshop_common_bonus_stats_str = ____exports.item_blackshop_common_bonus_stats_str
item_blackshop_common_bonus_stats_str.name = "item_blackshop_common_bonus_stats_str"
item_blackshop_common_bonus_stats_str.____file_path = "scripts/vscripts/items/blackshop/common/item_blackshop_common_bonus_stats_str.lua"
__TS__ClassExtends(item_blackshop_common_bonus_stats_str, BaseItem)
function item_blackshop_common_bonus_stats_str.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local stats = self:GetSpecialValueFor("bonus_strength")
if caster:HasModifier("modifier_item_bonus_stats_str") then
caster:FindModifierByName("modifier_item_bonus_stats_str"):SetStackCount(caster:FindModifierByName("modifier_item_bonus_stats_str"):GetStackCount() + stats)
else
caster:AddNewModifier(caster, self, "modifier_item_bonus_stats_str", {}):SetStackCount(stats)
end
UTIL_Remove(self)
end
item_blackshop_common_bonus_stats_str = __TS__Decorate(
item_blackshop_common_bonus_stats_str,
item_blackshop_common_bonus_stats_str,
{registerAbility(nil)},
{kind = "class", name = "item_blackshop_common_bonus_stats_str"}
)
____exports.item_blackshop_common_bonus_stats_str = item_blackshop_common_bonus_stats_str
____exports.modifier_item_bonus_stats_str = __TS__Class()
local modifier_item_bonus_stats_str = ____exports.modifier_item_bonus_stats_str
modifier_item_bonus_stats_str.name = "modifier_item_bonus_stats_str"
modifier_item_bonus_stats_str.____file_path = "scripts/vscripts/items/blackshop/common/item_blackshop_common_bonus_stats_str.lua"
__TS__ClassExtends(modifier_item_bonus_stats_str, BaseModifier)
function modifier_item_bonus_stats_str.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_bonus_stats_str.prototype.IsHidden(self)
return true
end
function modifier_item_bonus_stats_str.prototype.IsPurgable(self)
return false
end
function modifier_item_bonus_stats_str.prototype.GetTexture(self)
return "../items/blackshop/book_str"
end
function modifier_item_bonus_stats_str.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_STATS_STRENGTH_BONUS}
end
function modifier_item_bonus_stats_str.prototype.GetModifierBonusStats_Strength(self)
return self:GetStackCount()
end
modifier_item_bonus_stats_str = __TS__Decorate(
modifier_item_bonus_stats_str,
modifier_item_bonus_stats_str,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_bonus_stats_str"}
)
____exports.modifier_item_bonus_stats_str = modifier_item_bonus_stats_str
return ____exports
@@ -0,0 +1,75 @@
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
____exports.item_blackshop_common_boo_stuff = __TS__Class()
local item_blackshop_common_boo_stuff = ____exports.item_blackshop_common_boo_stuff
item_blackshop_common_boo_stuff.name = "item_blackshop_common_boo_stuff"
item_blackshop_common_boo_stuff.____file_path = "scripts/vscripts/items/blackshop/common/item_blackshop_common_boo_stuff.lua"
__TS__ClassExtends(item_blackshop_common_boo_stuff, BaseItem)
function item_blackshop_common_boo_stuff.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local stats = self:GetSpecialValueFor("bonus_stats")
if caster:HasModifier("modifier_item_boo_stuff") then
caster:FindModifierByName("modifier_item_boo_stuff"):SetStackCount(caster:FindModifierByName("modifier_item_boo_stuff"):GetStackCount() + stats)
else
caster:AddNewModifier(caster, self, "modifier_item_boo_stuff", {}):SetStackCount(stats)
end
UTIL_Remove(self)
end
item_blackshop_common_boo_stuff = __TS__Decorate(
item_blackshop_common_boo_stuff,
item_blackshop_common_boo_stuff,
{registerAbility(nil)},
{kind = "class", name = "item_blackshop_common_boo_stuff"}
)
____exports.item_blackshop_common_boo_stuff = item_blackshop_common_boo_stuff
____exports.modifier_item_boo_stuff = __TS__Class()
local modifier_item_boo_stuff = ____exports.modifier_item_boo_stuff
modifier_item_boo_stuff.name = "modifier_item_boo_stuff"
modifier_item_boo_stuff.____file_path = "scripts/vscripts/items/blackshop/common/item_blackshop_common_boo_stuff.lua"
__TS__ClassExtends(modifier_item_boo_stuff, BaseModifier)
function modifier_item_boo_stuff.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_boo_stuff.prototype.IsHidden(self)
return true
end
function modifier_item_boo_stuff.prototype.IsPurgable(self)
return false
end
function modifier_item_boo_stuff.prototype.GetTexture(self)
return "../items/blackshop/boo_stuff"
end
function modifier_item_boo_stuff.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE, MODIFIER_PROPERTY_ATTACK_RANGE_BONUS}
end
function modifier_item_boo_stuff.prototype.GetModifierPreAttack_BonusDamage(self)
return self:GetStackCount()
end
function modifier_item_boo_stuff.prototype.GetModifierAttackRangeBonus(self)
if not self:GetParent():IsRangedAttacker() then
return 50
end
return 0
end
modifier_item_boo_stuff = __TS__Decorate(
modifier_item_boo_stuff,
modifier_item_boo_stuff,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_boo_stuff"}
)
____exports.modifier_item_boo_stuff = modifier_item_boo_stuff
return ____exports
@@ -0,0 +1,72 @@
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
____exports.item_blackshop_common_injector = __TS__Class()
local item_blackshop_common_injector = ____exports.item_blackshop_common_injector
item_blackshop_common_injector.name = "item_blackshop_common_injector"
item_blackshop_common_injector.____file_path = "scripts/vscripts/items/blackshop/common/item_blackshop_common_injector.lua"
__TS__ClassExtends(item_blackshop_common_injector, BaseItem)
function item_blackshop_common_injector.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local stats = self:GetSpecialValueFor("attack_speed")
if caster:HasModifier("modifier_item_injector") then
caster:FindModifierByName("modifier_item_injector"):SetStackCount(caster:FindModifierByName("modifier_item_injector"):GetStackCount() + stats)
else
caster:AddNewModifier(caster, self, "modifier_item_injector", {}):SetStackCount(stats)
end
UTIL_Remove(self)
end
item_blackshop_common_injector = __TS__Decorate(
item_blackshop_common_injector,
item_blackshop_common_injector,
{registerAbility(nil)},
{kind = "class", name = "item_blackshop_common_injector"}
)
____exports.item_blackshop_common_injector = item_blackshop_common_injector
____exports.modifier_item_injector = __TS__Class()
local modifier_item_injector = ____exports.modifier_item_injector
modifier_item_injector.name = "modifier_item_injector"
modifier_item_injector.____file_path = "scripts/vscripts/items/blackshop/common/item_blackshop_common_injector.lua"
__TS__ClassExtends(modifier_item_injector, BaseModifier)
function modifier_item_injector.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_injector.prototype.IsHidden(self)
return true
end
function modifier_item_injector.prototype.IsPurgable(self)
return false
end
function modifier_item_injector.prototype.GetTexture(self)
return "../items/blackshop/soldier"
end
function modifier_item_injector.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT, MODIFIER_PROPERTY_MOVESPEED_BONUS_CONSTANT}
end
function modifier_item_injector.prototype.GetModifierAttackSpeedBonus_Constant(self)
return self:GetStackCount()
end
function modifier_item_injector.prototype.GetModifierMoveSpeedBonus_Constant(self)
return self:GetStackCount()
end
modifier_item_injector = __TS__Decorate(
modifier_item_injector,
modifier_item_injector,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_injector"}
)
____exports.modifier_item_injector = modifier_item_injector
return ____exports
@@ -0,0 +1,72 @@
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
____exports.item_blackshop_common_king_crown = __TS__Class()
local item_blackshop_common_king_crown = ____exports.item_blackshop_common_king_crown
item_blackshop_common_king_crown.name = "item_blackshop_common_king_crown"
item_blackshop_common_king_crown.____file_path = "scripts/vscripts/items/blackshop/common/item_blackshop_common_king_crown.lua"
__TS__ClassExtends(item_blackshop_common_king_crown, BaseItem)
function item_blackshop_common_king_crown.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local stats = self:GetSpecialValueFor("bonus_armor")
if caster:HasModifier("modifier_item_king_crown") then
caster:FindModifierByName("modifier_item_king_crown"):SetStackCount(caster:FindModifierByName("modifier_item_king_crown"):GetStackCount() + stats)
else
caster:AddNewModifier(caster, self, "modifier_item_king_crown", {}):SetStackCount(stats)
end
UTIL_Remove(self)
end
item_blackshop_common_king_crown = __TS__Decorate(
item_blackshop_common_king_crown,
item_blackshop_common_king_crown,
{registerAbility(nil)},
{kind = "class", name = "item_blackshop_common_king_crown"}
)
____exports.item_blackshop_common_king_crown = item_blackshop_common_king_crown
____exports.modifier_item_king_crown = __TS__Class()
local modifier_item_king_crown = ____exports.modifier_item_king_crown
modifier_item_king_crown.name = "modifier_item_king_crown"
modifier_item_king_crown.____file_path = "scripts/vscripts/items/blackshop/common/item_blackshop_common_king_crown.lua"
__TS__ClassExtends(modifier_item_king_crown, BaseModifier)
function modifier_item_king_crown.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_king_crown.prototype.IsHidden(self)
return false
end
function modifier_item_king_crown.prototype.IsPurgable(self)
return false
end
function modifier_item_king_crown.prototype.GetTexture(self)
return "../items/blackshop/crown"
end
function modifier_item_king_crown.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_HEALTH_BONUS, MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS}
end
function modifier_item_king_crown.prototype.GetModifierHealthBonus(self)
return math.floor(self:GetStackCount() * 10)
end
function modifier_item_king_crown.prototype.GetModifierPhysicalArmorBonus(self)
return self:GetStackCount()
end
modifier_item_king_crown = __TS__Decorate(
modifier_item_king_crown,
modifier_item_king_crown,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_king_crown"}
)
____exports.modifier_item_king_crown = modifier_item_king_crown
return ____exports
@@ -0,0 +1,72 @@
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
____exports.item_blackshop_common_manaflare = __TS__Class()
local item_blackshop_common_manaflare = ____exports.item_blackshop_common_manaflare
item_blackshop_common_manaflare.name = "item_blackshop_common_manaflare"
item_blackshop_common_manaflare.____file_path = "scripts/vscripts/items/blackshop/common/item_blackshop_common_manaflare.lua"
__TS__ClassExtends(item_blackshop_common_manaflare, BaseItem)
function item_blackshop_common_manaflare.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local stats = self:GetSpecialValueFor("bonus_mana")
if caster:HasModifier("modifier_item_manaflare") then
caster:FindModifierByName("modifier_item_manaflare"):SetStackCount(caster:FindModifierByName("modifier_item_manaflare"):GetStackCount() + stats)
else
caster:AddNewModifier(caster, self, "modifier_item_manaflare", {}):SetStackCount(stats)
end
UTIL_Remove(self)
end
item_blackshop_common_manaflare = __TS__Decorate(
item_blackshop_common_manaflare,
item_blackshop_common_manaflare,
{registerAbility(nil)},
{kind = "class", name = "item_blackshop_common_manaflare"}
)
____exports.item_blackshop_common_manaflare = item_blackshop_common_manaflare
____exports.modifier_item_manaflare = __TS__Class()
local modifier_item_manaflare = ____exports.modifier_item_manaflare
modifier_item_manaflare.name = "modifier_item_manaflare"
modifier_item_manaflare.____file_path = "scripts/vscripts/items/blackshop/common/item_blackshop_common_manaflare.lua"
__TS__ClassExtends(modifier_item_manaflare, BaseModifier)
function modifier_item_manaflare.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_manaflare.prototype.IsHidden(self)
return false
end
function modifier_item_manaflare.prototype.IsPurgable(self)
return false
end
function modifier_item_manaflare.prototype.GetTexture(self)
return "../items/blackshop/manaflare"
end
function modifier_item_manaflare.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_MANA_BONUS, MODIFIER_PROPERTY_MANA_REGEN_CONSTANT}
end
function modifier_item_manaflare.prototype.GetModifierManaBonus(self)
return self:GetStackCount()
end
function modifier_item_manaflare.prototype.GetModifierConstantManaRegen(self)
return self:GetStackCount() / 100
end
modifier_item_manaflare = __TS__Decorate(
modifier_item_manaflare,
modifier_item_manaflare,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_manaflare"}
)
____exports.modifier_item_manaflare = modifier_item_manaflare
return ____exports
@@ -0,0 +1,72 @@
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
____exports.item_blackshop_common_spell_mask = __TS__Class()
local item_blackshop_common_spell_mask = ____exports.item_blackshop_common_spell_mask
item_blackshop_common_spell_mask.name = "item_blackshop_common_spell_mask"
item_blackshop_common_spell_mask.____file_path = "scripts/vscripts/items/blackshop/common/item_blackshop_common_spell_mask.lua"
__TS__ClassExtends(item_blackshop_common_spell_mask, BaseItem)
function item_blackshop_common_spell_mask.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local stats = self:GetSpecialValueFor("bonus_spell_amp")
if caster:HasModifier("modifier_item_spell_mask") then
caster:FindModifierByName("modifier_item_spell_mask"):SetStackCount(caster:FindModifierByName("modifier_item_spell_mask"):GetStackCount() + stats)
else
caster:AddNewModifier(caster, self, "modifier_item_spell_mask", {}):SetStackCount(stats)
end
UTIL_Remove(self)
end
item_blackshop_common_spell_mask = __TS__Decorate(
item_blackshop_common_spell_mask,
item_blackshop_common_spell_mask,
{registerAbility(nil)},
{kind = "class", name = "item_blackshop_common_spell_mask"}
)
____exports.item_blackshop_common_spell_mask = item_blackshop_common_spell_mask
____exports.modifier_item_spell_mask = __TS__Class()
local modifier_item_spell_mask = ____exports.modifier_item_spell_mask
modifier_item_spell_mask.name = "modifier_item_spell_mask"
modifier_item_spell_mask.____file_path = "scripts/vscripts/items/blackshop/common/item_blackshop_common_spell_mask.lua"
__TS__ClassExtends(modifier_item_spell_mask, BaseModifier)
function modifier_item_spell_mask.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_spell_mask.prototype.IsHidden(self)
return true
end
function modifier_item_spell_mask.prototype.IsPurgable(self)
return false
end
function modifier_item_spell_mask.prototype.GetTexture(self)
return "../items/blackshop/spell_mask"
end
function modifier_item_spell_mask.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_SPELL_AMPLIFY_PERCENTAGE, MODIFIER_PROPERTY_MANA_REGEN_CONSTANT}
end
function modifier_item_spell_mask.prototype.GetModifierSpellAmplify_Percentage(self)
return self:GetStackCount()
end
function modifier_item_spell_mask.prototype.GetModifierConstantManaRegen(self)
return self:GetStackCount()
end
modifier_item_spell_mask = __TS__Decorate(
modifier_item_spell_mask,
modifier_item_spell_mask,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_spell_mask"}
)
____exports.modifier_item_spell_mask = modifier_item_spell_mask
return ____exports
@@ -0,0 +1,69 @@
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
____exports.item_blackshop_common_stone_armor = __TS__Class()
local item_blackshop_common_stone_armor = ____exports.item_blackshop_common_stone_armor
item_blackshop_common_stone_armor.name = "item_blackshop_common_stone_armor"
item_blackshop_common_stone_armor.____file_path = "scripts/vscripts/items/blackshop/common/item_blackshop_common_stone_armor.lua"
__TS__ClassExtends(item_blackshop_common_stone_armor, BaseItem)
function item_blackshop_common_stone_armor.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local stats = self:GetSpecialValueFor("bonus_armor")
if caster:HasModifier("modifier_item_stone_armor") then
caster:FindModifierByName("modifier_item_stone_armor"):SetStackCount(caster:FindModifierByName("modifier_item_stone_armor"):GetStackCount() + stats)
else
caster:AddNewModifier(caster, self, "modifier_item_stone_armor", {}):SetStackCount(stats)
end
UTIL_Remove(self)
end
item_blackshop_common_stone_armor = __TS__Decorate(
item_blackshop_common_stone_armor,
item_blackshop_common_stone_armor,
{registerAbility(nil)},
{kind = "class", name = "item_blackshop_common_stone_armor"}
)
____exports.item_blackshop_common_stone_armor = item_blackshop_common_stone_armor
____exports.modifier_item_stone_armor = __TS__Class()
local modifier_item_stone_armor = ____exports.modifier_item_stone_armor
modifier_item_stone_armor.name = "modifier_item_stone_armor"
modifier_item_stone_armor.____file_path = "scripts/vscripts/items/blackshop/common/item_blackshop_common_stone_armor.lua"
__TS__ClassExtends(modifier_item_stone_armor, BaseModifier)
function modifier_item_stone_armor.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_stone_armor.prototype.IsHidden(self)
return true
end
function modifier_item_stone_armor.prototype.IsPurgable(self)
return false
end
function modifier_item_stone_armor.prototype.GetTexture(self)
return "../items/blackshop/stone_armor"
end
function modifier_item_stone_armor.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS}
end
function modifier_item_stone_armor.prototype.GetModifierPhysicalArmorBonus(self)
return self:GetStackCount()
end
modifier_item_stone_armor = __TS__Decorate(
modifier_item_stone_armor,
modifier_item_stone_armor,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_stone_armor"}
)
____exports.modifier_item_stone_armor = modifier_item_stone_armor
return ____exports
@@ -0,0 +1,71 @@
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
--- Настойка силы — постоянный бонус к регену HP (стакается).
____exports.item_blackshop_common_vigor_tincture = __TS__Class()
local item_blackshop_common_vigor_tincture = ____exports.item_blackshop_common_vigor_tincture
item_blackshop_common_vigor_tincture.name = "item_blackshop_common_vigor_tincture"
item_blackshop_common_vigor_tincture.____file_path = "scripts/vscripts/items/blackshop/common/item_blackshop_common_vigor_tincture.lua"
__TS__ClassExtends(item_blackshop_common_vigor_tincture, BaseItem)
function item_blackshop_common_vigor_tincture.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local add = self:GetSpecialValueFor("bonus_hp_regen")
if caster:HasModifier("modifier_item_vigor_tincture") then
local m = caster:FindModifierByName("modifier_item_vigor_tincture")
m:SetStackCount(m:GetStackCount() + add)
else
caster:AddNewModifier(caster, self, "modifier_item_vigor_tincture", {}):SetStackCount(add)
end
UTIL_Remove(self)
end
item_blackshop_common_vigor_tincture = __TS__Decorate(
item_blackshop_common_vigor_tincture,
item_blackshop_common_vigor_tincture,
{registerAbility(nil)},
{kind = "class", name = "item_blackshop_common_vigor_tincture"}
)
____exports.item_blackshop_common_vigor_tincture = item_blackshop_common_vigor_tincture
____exports.modifier_item_vigor_tincture = __TS__Class()
local modifier_item_vigor_tincture = ____exports.modifier_item_vigor_tincture
modifier_item_vigor_tincture.name = "modifier_item_vigor_tincture"
modifier_item_vigor_tincture.____file_path = "scripts/vscripts/items/blackshop/common/item_blackshop_common_vigor_tincture.lua"
__TS__ClassExtends(modifier_item_vigor_tincture, BaseModifier)
function modifier_item_vigor_tincture.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_vigor_tincture.prototype.IsHidden(self)
return true
end
function modifier_item_vigor_tincture.prototype.IsPurgable(self)
return false
end
function modifier_item_vigor_tincture.prototype.GetTexture(self)
return "../items/blackshop/vigor_salve"
end
function modifier_item_vigor_tincture.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_HEALTH_REGEN_CONSTANT}
end
function modifier_item_vigor_tincture.prototype.GetModifierConstantHealthRegen(self)
return self:GetStackCount()
end
modifier_item_vigor_tincture = __TS__Decorate(
modifier_item_vigor_tincture,
modifier_item_vigor_tincture,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_vigor_tincture"}
)
____exports.modifier_item_vigor_tincture = modifier_item_vigor_tincture
return ____exports
@@ -0,0 +1,71 @@
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
--- Пыль ветра — бонус к скорости передвижения (стакается).
____exports.item_blackshop_common_wind_dust = __TS__Class()
local item_blackshop_common_wind_dust = ____exports.item_blackshop_common_wind_dust
item_blackshop_common_wind_dust.name = "item_blackshop_common_wind_dust"
item_blackshop_common_wind_dust.____file_path = "scripts/vscripts/items/blackshop/common/item_blackshop_common_wind_dust.lua"
__TS__ClassExtends(item_blackshop_common_wind_dust, BaseItem)
function item_blackshop_common_wind_dust.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local add = self:GetSpecialValueFor("bonus_movement_speed")
if caster:HasModifier("modifier_item_wind_dust") then
local m = caster:FindModifierByName("modifier_item_wind_dust")
m:SetStackCount(m:GetStackCount() + add)
else
caster:AddNewModifier(caster, self, "modifier_item_wind_dust", {}):SetStackCount(add)
end
UTIL_Remove(self)
end
item_blackshop_common_wind_dust = __TS__Decorate(
item_blackshop_common_wind_dust,
item_blackshop_common_wind_dust,
{registerAbility(nil)},
{kind = "class", name = "item_blackshop_common_wind_dust"}
)
____exports.item_blackshop_common_wind_dust = item_blackshop_common_wind_dust
____exports.modifier_item_wind_dust = __TS__Class()
local modifier_item_wind_dust = ____exports.modifier_item_wind_dust
modifier_item_wind_dust.name = "modifier_item_wind_dust"
modifier_item_wind_dust.____file_path = "scripts/vscripts/items/blackshop/common/item_blackshop_common_wind_dust.lua"
__TS__ClassExtends(modifier_item_wind_dust, BaseModifier)
function modifier_item_wind_dust.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_wind_dust.prototype.IsHidden(self)
return true
end
function modifier_item_wind_dust.prototype.IsPurgable(self)
return false
end
function modifier_item_wind_dust.prototype.GetTexture(self)
return "../items/blackshop/granite_boots"
end
function modifier_item_wind_dust.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_MOVESPEED_BONUS_CONSTANT}
end
function modifier_item_wind_dust.prototype.GetModifierMoveSpeedBonus_Constant(self)
return self:GetStackCount()
end
modifier_item_wind_dust = __TS__Decorate(
modifier_item_wind_dust,
modifier_item_wind_dust,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_wind_dust"}
)
____exports.modifier_item_wind_dust = modifier_item_wind_dust
return ____exports
@@ -0,0 +1,66 @@
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local __TS__SourceMapTraceBack = ____lualib.__TS__SourceMapTraceBack
__TS__SourceMapTraceBack(debug.getinfo(1).short_src, {["8"] = 1,["9"] = 1,["10"] = 1,["11"] = 1,["12"] = 1,["13"] = 3,["14"] = 4,["15"] = 3,["16"] = 4,["17"] = 5,["18"] = 6,["21"] = 8,["22"] = 9,["25"] = 11,["26"] = 13,["27"] = 14,["29"] = 18,["31"] = 20,["32"] = 5,["33"] = 4,["34"] = 4,["35"] = 4,["36"] = 3,["39"] = 4,["40"] = 24,["41"] = 25,["42"] = 24,["43"] = 25,["44"] = 26,["45"] = 27,["46"] = 26,["47"] = 30,["48"] = 31,["49"] = 30,["50"] = 34,["51"] = 35,["52"] = 34,["53"] = 38,["54"] = 39,["55"] = 38,["56"] = 42,["57"] = 43,["58"] = 42,["59"] = 25,["60"] = 25,["61"] = 25,["62"] = 24,["65"] = 25});
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
____exports.item_bonus_stats_agi = __TS__Class()
local item_bonus_stats_agi = ____exports.item_bonus_stats_agi
item_bonus_stats_agi.name = "item_bonus_stats_agi"
__TS__ClassExtends(item_bonus_stats_agi, BaseItem)
function item_bonus_stats_agi.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local stats = self:GetSpecialValueFor("bonus_agility")
if caster:HasModifier("modifier_item_bonus_stats_agi") then
caster:FindModifierByName("modifier_item_bonus_stats_agi"):SetStackCount(caster:FindModifierByName("modifier_item_bonus_stats_agi"):GetStackCount() + stats)
else
caster:AddNewModifier(caster, self, "modifier_item_bonus_stats_agi", {}):SetStackCount(stats)
end
UTIL_Remove(self)
end
item_bonus_stats_agi = __TS__Decorate(
item_bonus_stats_agi,
item_bonus_stats_agi,
{registerAbility(nil)},
{kind = "class", name = "item_bonus_stats_agi"}
)
____exports.item_bonus_stats_agi = item_bonus_stats_agi
____exports.modifier_item_bonus_stats_agi = __TS__Class()
local modifier_item_bonus_stats_agi = ____exports.modifier_item_bonus_stats_agi
modifier_item_bonus_stats_agi.name = "modifier_item_bonus_stats_agi"
__TS__ClassExtends(modifier_item_bonus_stats_agi, BaseModifier)
function modifier_item_bonus_stats_agi.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_bonus_stats_agi.prototype.IsHidden(self)
return true
end
function modifier_item_bonus_stats_agi.prototype.IsPurgable(self)
return false
end
function modifier_item_bonus_stats_agi.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_STATS_AGILITY_BONUS}
end
function modifier_item_bonus_stats_agi.prototype.GetModifierBonusStats_Agility(self)
return self:GetStackCount()
end
modifier_item_bonus_stats_agi = __TS__Decorate(
modifier_item_bonus_stats_agi,
modifier_item_bonus_stats_agi,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_bonus_stats_agi"}
)
____exports.modifier_item_bonus_stats_agi = modifier_item_bonus_stats_agi
return ____exports
@@ -0,0 +1,66 @@
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local __TS__SourceMapTraceBack = ____lualib.__TS__SourceMapTraceBack
__TS__SourceMapTraceBack(debug.getinfo(1).short_src, {["8"] = 1,["9"] = 1,["10"] = 1,["11"] = 1,["12"] = 1,["13"] = 3,["14"] = 4,["15"] = 3,["16"] = 4,["17"] = 5,["18"] = 6,["21"] = 8,["22"] = 9,["25"] = 11,["26"] = 13,["27"] = 14,["29"] = 18,["31"] = 20,["32"] = 5,["33"] = 4,["34"] = 4,["35"] = 4,["36"] = 3,["39"] = 4,["40"] = 24,["41"] = 25,["42"] = 24,["43"] = 25,["44"] = 26,["45"] = 27,["46"] = 26,["47"] = 30,["48"] = 31,["49"] = 30,["50"] = 34,["51"] = 35,["52"] = 34,["53"] = 38,["54"] = 39,["55"] = 38,["56"] = 42,["57"] = 43,["58"] = 42,["59"] = 25,["60"] = 25,["61"] = 25,["62"] = 24,["65"] = 25});
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
____exports.item_bonus_stats_int = __TS__Class()
local item_bonus_stats_int = ____exports.item_bonus_stats_int
item_bonus_stats_int.name = "item_bonus_stats_int"
__TS__ClassExtends(item_bonus_stats_int, BaseItem)
function item_bonus_stats_int.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local stats = self:GetSpecialValueFor("bonus_intelligence")
if caster:HasModifier("modifier_item_bonus_stats_int") then
caster:FindModifierByName("modifier_item_bonus_stats_int"):SetStackCount(caster:FindModifierByName("modifier_item_bonus_stats_int"):GetStackCount() + stats)
else
caster:AddNewModifier(caster, self, "modifier_item_bonus_stats_int", {}):SetStackCount(stats)
end
UTIL_Remove(self)
end
item_bonus_stats_int = __TS__Decorate(
item_bonus_stats_int,
item_bonus_stats_int,
{registerAbility(nil)},
{kind = "class", name = "item_bonus_stats_int"}
)
____exports.item_bonus_stats_int = item_bonus_stats_int
____exports.modifier_item_bonus_stats_int = __TS__Class()
local modifier_item_bonus_stats_int = ____exports.modifier_item_bonus_stats_int
modifier_item_bonus_stats_int.name = "modifier_item_bonus_stats_int"
__TS__ClassExtends(modifier_item_bonus_stats_int, BaseModifier)
function modifier_item_bonus_stats_int.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_bonus_stats_int.prototype.IsHidden(self)
return true
end
function modifier_item_bonus_stats_int.prototype.IsPurgable(self)
return false
end
function modifier_item_bonus_stats_int.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_STATS_INTELLECT_BONUS}
end
function modifier_item_bonus_stats_int.prototype.GetModifierBonusStats_Intellect(self)
return self:GetStackCount()
end
modifier_item_bonus_stats_int = __TS__Decorate(
modifier_item_bonus_stats_int,
modifier_item_bonus_stats_int,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_bonus_stats_int"}
)
____exports.modifier_item_bonus_stats_int = modifier_item_bonus_stats_int
return ____exports
@@ -0,0 +1,66 @@
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local __TS__SourceMapTraceBack = ____lualib.__TS__SourceMapTraceBack
__TS__SourceMapTraceBack(debug.getinfo(1).short_src, {["8"] = 1,["9"] = 1,["10"] = 1,["11"] = 1,["12"] = 1,["13"] = 3,["14"] = 4,["15"] = 3,["16"] = 4,["17"] = 5,["18"] = 6,["21"] = 8,["22"] = 9,["25"] = 11,["26"] = 13,["27"] = 14,["29"] = 18,["31"] = 20,["32"] = 5,["33"] = 4,["34"] = 4,["35"] = 4,["36"] = 3,["39"] = 4,["40"] = 24,["41"] = 25,["42"] = 24,["43"] = 25,["44"] = 26,["45"] = 27,["46"] = 26,["47"] = 30,["48"] = 31,["49"] = 30,["50"] = 34,["51"] = 35,["52"] = 34,["53"] = 38,["54"] = 39,["55"] = 38,["56"] = 42,["57"] = 43,["58"] = 42,["59"] = 25,["60"] = 25,["61"] = 25,["62"] = 24,["65"] = 25});
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
____exports.item_bonus_stats_str = __TS__Class()
local item_bonus_stats_str = ____exports.item_bonus_stats_str
item_bonus_stats_str.name = "item_bonus_stats_str"
__TS__ClassExtends(item_bonus_stats_str, BaseItem)
function item_bonus_stats_str.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local stats = self:GetSpecialValueFor("bonus_strength")
if caster:HasModifier("modifier_item_bonus_stats_str") then
caster:FindModifierByName("modifier_item_bonus_stats_str"):SetStackCount(caster:FindModifierByName("modifier_item_bonus_stats_str"):GetStackCount() + stats)
else
caster:AddNewModifier(caster, self, "modifier_item_bonus_stats_str", {}):SetStackCount(stats)
end
UTIL_Remove(self)
end
item_bonus_stats_str = __TS__Decorate(
item_bonus_stats_str,
item_bonus_stats_str,
{registerAbility(nil)},
{kind = "class", name = "item_bonus_stats_str"}
)
____exports.item_bonus_stats_str = item_bonus_stats_str
____exports.modifier_item_bonus_stats_str = __TS__Class()
local modifier_item_bonus_stats_str = ____exports.modifier_item_bonus_stats_str
modifier_item_bonus_stats_str.name = "modifier_item_bonus_stats_str"
__TS__ClassExtends(modifier_item_bonus_stats_str, BaseModifier)
function modifier_item_bonus_stats_str.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_bonus_stats_str.prototype.IsHidden(self)
return true
end
function modifier_item_bonus_stats_str.prototype.IsPurgable(self)
return false
end
function modifier_item_bonus_stats_str.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_STATS_STRENGTH_BONUS}
end
function modifier_item_bonus_stats_str.prototype.GetModifierBonusStats_Strength(self)
return self:GetStackCount()
end
modifier_item_bonus_stats_str = __TS__Decorate(
modifier_item_bonus_stats_str,
modifier_item_bonus_stats_str,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_bonus_stats_str"}
)
____exports.modifier_item_bonus_stats_str = modifier_item_bonus_stats_str
return ____exports
@@ -0,0 +1,72 @@
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local __TS__SourceMapTraceBack = ____lualib.__TS__SourceMapTraceBack
__TS__SourceMapTraceBack(debug.getinfo(1).short_src, {["8"] = 1,["9"] = 1,["10"] = 1,["11"] = 1,["12"] = 1,["13"] = 3,["14"] = 4,["15"] = 3,["16"] = 4,["17"] = 5,["18"] = 6,["21"] = 8,["22"] = 9,["25"] = 11,["26"] = 13,["27"] = 14,["29"] = 16,["31"] = 18,["32"] = 5,["33"] = 4,["34"] = 4,["35"] = 4,["36"] = 3,["39"] = 4,["40"] = 22,["41"] = 23,["42"] = 22,["43"] = 23,["44"] = 24,["45"] = 25,["46"] = 24,["47"] = 28,["48"] = 29,["49"] = 28,["50"] = 32,["51"] = 33,["52"] = 32,["53"] = 36,["54"] = 37,["55"] = 36,["56"] = 40,["57"] = 41,["58"] = 40,["59"] = 43,["60"] = 44,["61"] = 45,["63"] = 47,["64"] = 43,["65"] = 23,["66"] = 23,["67"] = 23,["68"] = 22,["71"] = 23});
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
____exports.item_boo_stuff = __TS__Class()
local item_boo_stuff = ____exports.item_boo_stuff
item_boo_stuff.name = "item_boo_stuff"
__TS__ClassExtends(item_boo_stuff, BaseItem)
function item_boo_stuff.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local stats = self:GetSpecialValueFor("bonus_stats")
if caster:HasModifier("modifier_item_boo_stuff") then
caster:FindModifierByName("modifier_item_boo_stuff"):SetStackCount(caster:FindModifierByName("modifier_item_boo_stuff"):GetStackCount() + stats)
else
caster:AddNewModifier(caster, self, "modifier_item_boo_stuff", {}):SetStackCount(stats)
end
UTIL_Remove(self)
end
item_boo_stuff = __TS__Decorate(
item_boo_stuff,
item_boo_stuff,
{registerAbility(nil)},
{kind = "class", name = "item_boo_stuff"}
)
____exports.item_boo_stuff = item_boo_stuff
____exports.modifier_item_boo_stuff = __TS__Class()
local modifier_item_boo_stuff = ____exports.modifier_item_boo_stuff
modifier_item_boo_stuff.name = "modifier_item_boo_stuff"
__TS__ClassExtends(modifier_item_boo_stuff, BaseModifier)
function modifier_item_boo_stuff.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_boo_stuff.prototype.IsHidden(self)
return true
end
function modifier_item_boo_stuff.prototype.IsPurgable(self)
return false
end
function modifier_item_boo_stuff.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE, MODIFIER_PROPERTY_ATTACK_RANGE_BONUS}
end
function modifier_item_boo_stuff.prototype.GetModifierPreAttack_BonusDamage(self)
return self:GetStackCount()
end
function modifier_item_boo_stuff.prototype.GetModifierAttackRangeBonus(self)
if not self:GetParent():IsRangedAttacker() then
return 50
end
return 0
end
modifier_item_boo_stuff = __TS__Decorate(
modifier_item_boo_stuff,
modifier_item_boo_stuff,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_boo_stuff"}
)
____exports.modifier_item_boo_stuff = modifier_item_boo_stuff
return ____exports
@@ -0,0 +1,69 @@
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local __TS__SourceMapTraceBack = ____lualib.__TS__SourceMapTraceBack
__TS__SourceMapTraceBack(debug.getinfo(1).short_src, {["8"] = 1,["9"] = 1,["10"] = 1,["11"] = 1,["12"] = 1,["13"] = 3,["14"] = 4,["15"] = 3,["16"] = 4,["17"] = 5,["18"] = 6,["21"] = 8,["22"] = 9,["25"] = 11,["26"] = 13,["27"] = 14,["29"] = 16,["31"] = 18,["32"] = 5,["33"] = 4,["34"] = 4,["35"] = 4,["36"] = 3,["39"] = 4,["40"] = 22,["41"] = 23,["42"] = 22,["43"] = 23,["44"] = 24,["45"] = 25,["46"] = 24,["47"] = 27,["48"] = 28,["49"] = 27,["50"] = 31,["51"] = 32,["52"] = 31,["53"] = 35,["54"] = 36,["55"] = 35,["56"] = 39,["57"] = 40,["58"] = 39,["59"] = 43,["60"] = 44,["61"] = 43,["62"] = 23,["63"] = 23,["64"] = 23,["65"] = 22,["68"] = 23});
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
____exports.item_injector = __TS__Class()
local item_injector = ____exports.item_injector
item_injector.name = "item_injector"
__TS__ClassExtends(item_injector, BaseItem)
function item_injector.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local stats = self:GetSpecialValueFor("attack_speed")
if caster:HasModifier("modifier_item_injector") then
caster:FindModifierByName("modifier_item_injector"):SetStackCount(caster:FindModifierByName("modifier_item_injector"):GetStackCount() + stats)
else
caster:AddNewModifier(caster, self, "modifier_item_injector", {}):SetStackCount(stats)
end
UTIL_Remove(self)
end
item_injector = __TS__Decorate(
item_injector,
item_injector,
{registerAbility(nil)},
{kind = "class", name = "item_injector"}
)
____exports.item_injector = item_injector
____exports.modifier_item_injector = __TS__Class()
local modifier_item_injector = ____exports.modifier_item_injector
modifier_item_injector.name = "modifier_item_injector"
__TS__ClassExtends(modifier_item_injector, BaseModifier)
function modifier_item_injector.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_injector.prototype.IsHidden(self)
return true
end
function modifier_item_injector.prototype.IsPurgable(self)
return false
end
function modifier_item_injector.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT, MODIFIER_PROPERTY_MOVESPEED_BONUS_CONSTANT}
end
function modifier_item_injector.prototype.GetModifierAttackSpeedBonus_Constant(self)
return self:GetStackCount()
end
function modifier_item_injector.prototype.GetModifierMoveSpeedBonus_Constant(self)
return self:GetStackCount()
end
modifier_item_injector = __TS__Decorate(
modifier_item_injector,
modifier_item_injector,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_injector"}
)
____exports.modifier_item_injector = modifier_item_injector
return ____exports
@@ -0,0 +1,69 @@
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local __TS__SourceMapTraceBack = ____lualib.__TS__SourceMapTraceBack
__TS__SourceMapTraceBack(debug.getinfo(1).short_src, {["8"] = 1,["9"] = 1,["10"] = 1,["11"] = 1,["12"] = 1,["13"] = 3,["14"] = 4,["15"] = 3,["16"] = 4,["17"] = 5,["18"] = 6,["21"] = 8,["22"] = 9,["25"] = 11,["26"] = 13,["27"] = 14,["29"] = 16,["31"] = 18,["32"] = 5,["33"] = 4,["34"] = 4,["35"] = 4,["36"] = 3,["39"] = 4,["40"] = 22,["41"] = 23,["42"] = 22,["43"] = 23,["44"] = 24,["45"] = 25,["46"] = 24,["47"] = 28,["48"] = 29,["49"] = 28,["50"] = 32,["51"] = 33,["52"] = 32,["53"] = 36,["54"] = 37,["55"] = 36,["56"] = 40,["57"] = 41,["58"] = 40,["59"] = 44,["60"] = 45,["61"] = 44,["62"] = 23,["63"] = 23,["64"] = 23,["65"] = 22,["68"] = 23});
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
____exports.item_king_crown = __TS__Class()
local item_king_crown = ____exports.item_king_crown
item_king_crown.name = "item_king_crown"
__TS__ClassExtends(item_king_crown, BaseItem)
function item_king_crown.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local stats = self:GetSpecialValueFor("bonus_armor")
if caster:HasModifier("modifier_item_king_crown") then
caster:FindModifierByName("modifier_item_king_crown"):SetStackCount(caster:FindModifierByName("modifier_item_king_crown"):GetStackCount() + stats)
else
caster:AddNewModifier(caster, self, "modifier_item_king_crown", {}):SetStackCount(stats)
end
UTIL_Remove(self)
end
item_king_crown = __TS__Decorate(
item_king_crown,
item_king_crown,
{registerAbility(nil)},
{kind = "class", name = "item_king_crown"}
)
____exports.item_king_crown = item_king_crown
____exports.modifier_item_king_crown = __TS__Class()
local modifier_item_king_crown = ____exports.modifier_item_king_crown
modifier_item_king_crown.name = "modifier_item_king_crown"
__TS__ClassExtends(modifier_item_king_crown, BaseModifier)
function modifier_item_king_crown.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_king_crown.prototype.IsHidden(self)
return false
end
function modifier_item_king_crown.prototype.IsPurgable(self)
return false
end
function modifier_item_king_crown.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_HEALTH_BONUS, MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS}
end
function modifier_item_king_crown.prototype.GetModifierHealthBonus(self)
return math.floor(self:GetStackCount() * 10)
end
function modifier_item_king_crown.prototype.GetModifierPhysicalArmorBonus(self)
return self:GetStackCount()
end
modifier_item_king_crown = __TS__Decorate(
modifier_item_king_crown,
modifier_item_king_crown,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_king_crown"}
)
____exports.modifier_item_king_crown = modifier_item_king_crown
return ____exports
@@ -0,0 +1,69 @@
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local __TS__SourceMapTraceBack = ____lualib.__TS__SourceMapTraceBack
__TS__SourceMapTraceBack(debug.getinfo(1).short_src, {["8"] = 1,["9"] = 1,["10"] = 1,["11"] = 1,["12"] = 1,["13"] = 3,["14"] = 4,["15"] = 3,["16"] = 4,["17"] = 5,["18"] = 6,["21"] = 8,["22"] = 9,["25"] = 11,["26"] = 13,["27"] = 14,["29"] = 16,["31"] = 18,["32"] = 5,["33"] = 4,["34"] = 4,["35"] = 4,["36"] = 3,["39"] = 4,["40"] = 22,["41"] = 23,["42"] = 22,["43"] = 23,["44"] = 24,["45"] = 25,["46"] = 24,["47"] = 27,["48"] = 28,["49"] = 27,["50"] = 31,["51"] = 32,["52"] = 31,["53"] = 35,["54"] = 36,["55"] = 35,["56"] = 39,["57"] = 40,["58"] = 39,["59"] = 43,["60"] = 44,["61"] = 43,["62"] = 23,["63"] = 23,["64"] = 23,["65"] = 22,["68"] = 23});
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
____exports.item_manaflare = __TS__Class()
local item_manaflare = ____exports.item_manaflare
item_manaflare.name = "item_manaflare"
__TS__ClassExtends(item_manaflare, BaseItem)
function item_manaflare.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local stats = self:GetSpecialValueFor("bonus_mana")
if caster:HasModifier("modifier_item_manaflare") then
caster:FindModifierByName("modifier_item_manaflare"):SetStackCount(caster:FindModifierByName("modifier_item_manaflare"):GetStackCount() + stats)
else
caster:AddNewModifier(caster, self, "modifier_item_manaflare", {}):SetStackCount(stats)
end
UTIL_Remove(self)
end
item_manaflare = __TS__Decorate(
item_manaflare,
item_manaflare,
{registerAbility(nil)},
{kind = "class", name = "item_manaflare"}
)
____exports.item_manaflare = item_manaflare
____exports.modifier_item_manaflare = __TS__Class()
local modifier_item_manaflare = ____exports.modifier_item_manaflare
modifier_item_manaflare.name = "modifier_item_manaflare"
__TS__ClassExtends(modifier_item_manaflare, BaseModifier)
function modifier_item_manaflare.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_manaflare.prototype.IsHidden(self)
return false
end
function modifier_item_manaflare.prototype.IsPurgable(self)
return false
end
function modifier_item_manaflare.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_MANA_BONUS, MODIFIER_PROPERTY_MANA_REGEN_CONSTANT}
end
function modifier_item_manaflare.prototype.GetModifierManaBonus(self)
return self:GetStackCount()
end
function modifier_item_manaflare.prototype.GetModifierConstantManaRegen(self)
return self:GetStackCount() / 100
end
modifier_item_manaflare = __TS__Decorate(
modifier_item_manaflare,
modifier_item_manaflare,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_manaflare"}
)
____exports.modifier_item_manaflare = modifier_item_manaflare
return ____exports
@@ -0,0 +1,69 @@
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local __TS__SourceMapTraceBack = ____lualib.__TS__SourceMapTraceBack
__TS__SourceMapTraceBack(debug.getinfo(1).short_src, {["8"] = 1,["9"] = 1,["10"] = 1,["11"] = 1,["12"] = 1,["13"] = 3,["14"] = 4,["15"] = 3,["16"] = 4,["17"] = 5,["18"] = 6,["21"] = 8,["22"] = 9,["25"] = 11,["26"] = 13,["27"] = 14,["29"] = 16,["31"] = 18,["32"] = 5,["33"] = 4,["34"] = 4,["35"] = 4,["36"] = 3,["39"] = 4,["40"] = 22,["41"] = 23,["42"] = 22,["43"] = 23,["44"] = 24,["45"] = 25,["46"] = 24,["47"] = 27,["48"] = 28,["49"] = 27,["50"] = 31,["51"] = 32,["52"] = 31,["53"] = 35,["54"] = 36,["55"] = 35,["56"] = 39,["57"] = 40,["58"] = 39,["59"] = 43,["60"] = 44,["61"] = 43,["62"] = 23,["63"] = 23,["64"] = 23,["65"] = 22,["68"] = 23});
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
____exports.item_spell_mask = __TS__Class()
local item_spell_mask = ____exports.item_spell_mask
item_spell_mask.name = "item_spell_mask"
__TS__ClassExtends(item_spell_mask, BaseItem)
function item_spell_mask.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local stats = self:GetSpecialValueFor("bonus_spell_amp")
if caster:HasModifier("modifier_item_spell_mask") then
caster:FindModifierByName("modifier_item_spell_mask"):SetStackCount(caster:FindModifierByName("modifier_item_spell_mask"):GetStackCount() + stats)
else
caster:AddNewModifier(caster, self, "modifier_item_spell_mask", {}):SetStackCount(stats)
end
UTIL_Remove(self)
end
item_spell_mask = __TS__Decorate(
item_spell_mask,
item_spell_mask,
{registerAbility(nil)},
{kind = "class", name = "item_spell_mask"}
)
____exports.item_spell_mask = item_spell_mask
____exports.modifier_item_spell_mask = __TS__Class()
local modifier_item_spell_mask = ____exports.modifier_item_spell_mask
modifier_item_spell_mask.name = "modifier_item_spell_mask"
__TS__ClassExtends(modifier_item_spell_mask, BaseModifier)
function modifier_item_spell_mask.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_spell_mask.prototype.IsHidden(self)
return true
end
function modifier_item_spell_mask.prototype.IsPurgable(self)
return false
end
function modifier_item_spell_mask.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_SPELL_AMPLIFY_PERCENTAGE, MODIFIER_PROPERTY_MANA_REGEN_CONSTANT}
end
function modifier_item_spell_mask.prototype.GetModifierSpellAmplify_Percentage(self)
return self:GetStackCount()
end
function modifier_item_spell_mask.prototype.GetModifierConstantManaRegen(self)
return self:GetStackCount()
end
modifier_item_spell_mask = __TS__Decorate(
modifier_item_spell_mask,
modifier_item_spell_mask,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_spell_mask"}
)
____exports.modifier_item_spell_mask = modifier_item_spell_mask
return ____exports
@@ -0,0 +1,66 @@
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local __TS__SourceMapTraceBack = ____lualib.__TS__SourceMapTraceBack
__TS__SourceMapTraceBack(debug.getinfo(1).short_src, {["8"] = 1,["9"] = 1,["10"] = 1,["11"] = 1,["12"] = 1,["13"] = 3,["14"] = 4,["15"] = 3,["16"] = 4,["17"] = 5,["18"] = 6,["21"] = 8,["22"] = 9,["25"] = 11,["26"] = 13,["27"] = 14,["29"] = 16,["31"] = 18,["32"] = 5,["33"] = 4,["34"] = 4,["35"] = 4,["36"] = 3,["39"] = 4,["40"] = 22,["41"] = 23,["42"] = 22,["43"] = 23,["44"] = 24,["45"] = 25,["46"] = 24,["47"] = 27,["48"] = 28,["49"] = 27,["50"] = 31,["51"] = 32,["52"] = 31,["53"] = 35,["54"] = 36,["55"] = 35,["56"] = 39,["57"] = 40,["58"] = 39,["59"] = 23,["60"] = 23,["61"] = 23,["62"] = 22,["65"] = 23});
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
____exports.item_stone_armor = __TS__Class()
local item_stone_armor = ____exports.item_stone_armor
item_stone_armor.name = "item_stone_armor"
__TS__ClassExtends(item_stone_armor, BaseItem)
function item_stone_armor.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local stats = self:GetSpecialValueFor("bonus_armor")
if caster:HasModifier("modifier_item_stone_armor") then
caster:FindModifierByName("modifier_item_stone_armor"):SetStackCount(caster:FindModifierByName("modifier_item_stone_armor"):GetStackCount() + stats)
else
caster:AddNewModifier(caster, self, "modifier_item_stone_armor", {}):SetStackCount(stats)
end
UTIL_Remove(self)
end
item_stone_armor = __TS__Decorate(
item_stone_armor,
item_stone_armor,
{registerAbility(nil)},
{kind = "class", name = "item_stone_armor"}
)
____exports.item_stone_armor = item_stone_armor
____exports.modifier_item_stone_armor = __TS__Class()
local modifier_item_stone_armor = ____exports.modifier_item_stone_armor
modifier_item_stone_armor.name = "modifier_item_stone_armor"
__TS__ClassExtends(modifier_item_stone_armor, BaseModifier)
function modifier_item_stone_armor.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_stone_armor.prototype.IsHidden(self)
return true
end
function modifier_item_stone_armor.prototype.IsPurgable(self)
return false
end
function modifier_item_stone_armor.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS}
end
function modifier_item_stone_armor.prototype.GetModifierPhysicalArmorBonus(self)
return self:GetStackCount()
end
modifier_item_stone_armor = __TS__Decorate(
modifier_item_stone_armor,
modifier_item_stone_armor,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_stone_armor"}
)
____exports.modifier_item_stone_armor = modifier_item_stone_armor
return ____exports
@@ -0,0 +1,123 @@
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
--- Скрытый стак исходящего урона — стак = %%.
____exports.modifier_item_glass_pact_outgoing = __TS__Class()
local modifier_item_glass_pact_outgoing = ____exports.modifier_item_glass_pact_outgoing
modifier_item_glass_pact_outgoing.name = "modifier_item_glass_pact_outgoing"
modifier_item_glass_pact_outgoing.____file_path = "scripts/vscripts/items/blackshop/cursed/item_blackshop_cursed_glass_pact.lua"
__TS__ClassExtends(modifier_item_glass_pact_outgoing, BaseModifier)
function modifier_item_glass_pact_outgoing.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_glass_pact_outgoing.prototype.IsHidden(self)
return true
end
function modifier_item_glass_pact_outgoing.prototype.IsPurgable(self)
return false
end
function modifier_item_glass_pact_outgoing.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_DAMAGEOUTGOING_PERCENTAGE}
end
function modifier_item_glass_pact_outgoing.prototype.GetModifierDamageOutgoing_Percentage(self)
return self:GetStackCount()
end
modifier_item_glass_pact_outgoing = __TS__Decorate(
modifier_item_glass_pact_outgoing,
modifier_item_glass_pact_outgoing,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_glass_pact_outgoing"}
)
____exports.modifier_item_glass_pact_outgoing = modifier_item_glass_pact_outgoing
--- Скрытый стак входящего урона — стак = %%.
____exports.modifier_item_glass_pact_incoming = __TS__Class()
local modifier_item_glass_pact_incoming = ____exports.modifier_item_glass_pact_incoming
modifier_item_glass_pact_incoming.name = "modifier_item_glass_pact_incoming"
modifier_item_glass_pact_incoming.____file_path = "scripts/vscripts/items/blackshop/cursed/item_blackshop_cursed_glass_pact.lua"
__TS__ClassExtends(modifier_item_glass_pact_incoming, BaseModifier)
function modifier_item_glass_pact_incoming.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_glass_pact_incoming.prototype.IsHidden(self)
return true
end
function modifier_item_glass_pact_incoming.prototype.IsPurgable(self)
return false
end
function modifier_item_glass_pact_incoming.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_INCOMING_DAMAGE_PERCENTAGE}
end
function modifier_item_glass_pact_incoming.prototype.GetModifierIncomingDamage_Percentage(self)
return self:GetStackCount()
end
modifier_item_glass_pact_incoming = __TS__Decorate(
modifier_item_glass_pact_incoming,
modifier_item_glass_pact_incoming,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_glass_pact_incoming"}
)
____exports.modifier_item_glass_pact_incoming = modifier_item_glass_pact_incoming
--- Видимый маркер пакта.
____exports.modifier_item_glass_pact = __TS__Class()
local modifier_item_glass_pact = ____exports.modifier_item_glass_pact
modifier_item_glass_pact.name = "modifier_item_glass_pact"
modifier_item_glass_pact.____file_path = "scripts/vscripts/items/blackshop/cursed/item_blackshop_cursed_glass_pact.lua"
__TS__ClassExtends(modifier_item_glass_pact, BaseModifier)
function modifier_item_glass_pact.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_glass_pact.prototype.IsHidden(self)
return false
end
function modifier_item_glass_pact.prototype.IsPurgable(self)
return false
end
function modifier_item_glass_pact.prototype.GetTexture(self)
return "../items/blackshop/glass_pact"
end
modifier_item_glass_pact = __TS__Decorate(
modifier_item_glass_pact,
modifier_item_glass_pact,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_glass_pact"}
)
____exports.modifier_item_glass_pact = modifier_item_glass_pact
--- Стеклянный пакт — больше входящего и исходящего урона (один раз на героя).
____exports.item_blackshop_cursed_glass_pact = __TS__Class()
local item_blackshop_cursed_glass_pact = ____exports.item_blackshop_cursed_glass_pact
item_blackshop_cursed_glass_pact.name = "item_blackshop_cursed_glass_pact"
item_blackshop_cursed_glass_pact.____file_path = "scripts/vscripts/items/blackshop/cursed/item_blackshop_cursed_glass_pact.lua"
__TS__ClassExtends(item_blackshop_cursed_glass_pact, BaseItem)
function item_blackshop_cursed_glass_pact.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
if caster:HasModifier(____exports.modifier_item_glass_pact.name) then
return
end
local outPct = self:GetSpecialValueFor("outgoing_damage_pct")
local inPct = self:GetSpecialValueFor("incoming_damage_pct")
caster:AddNewModifier(caster, self, ____exports.modifier_item_glass_pact_outgoing.name, {}):SetStackCount(outPct)
caster:AddNewModifier(caster, self, ____exports.modifier_item_glass_pact_incoming.name, {}):SetStackCount(inPct)
caster:AddNewModifier(caster, self, ____exports.modifier_item_glass_pact.name, {}):SetStackCount(1)
UTIL_Remove(self)
end
item_blackshop_cursed_glass_pact = __TS__Decorate(
item_blackshop_cursed_glass_pact,
item_blackshop_cursed_glass_pact,
{registerAbility(nil)},
{kind = "class", name = "item_blackshop_cursed_glass_pact"}
)
____exports.item_blackshop_cursed_glass_pact = item_blackshop_cursed_glass_pact
return ____exports
@@ -0,0 +1,141 @@
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
--- Скрытый стак бонуса урона к атаке — сумма из KV за все слои.
____exports.modifier_item_martyrs_damage = __TS__Class()
local modifier_item_martyrs_damage = ____exports.modifier_item_martyrs_damage
modifier_item_martyrs_damage.name = "modifier_item_martyrs_damage"
modifier_item_martyrs_damage.____file_path = "scripts/vscripts/items/blackshop/cursed/item_blackshop_cursed_martyrs_brand.lua"
__TS__ClassExtends(modifier_item_martyrs_damage, BaseModifier)
function modifier_item_martyrs_damage.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_martyrs_damage.prototype.IsHidden(self)
return true
end
function modifier_item_martyrs_damage.prototype.IsPurgable(self)
return false
end
function modifier_item_martyrs_damage.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_DAMAGEOUTGOING_PERCENTAGE}
end
function modifier_item_martyrs_damage.prototype.GetModifierDamageOutgoing_Percentage(self)
return self:GetStackCount()
end
modifier_item_martyrs_damage = __TS__Decorate(
modifier_item_martyrs_damage,
modifier_item_martyrs_damage,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_martyrs_damage"}
)
____exports.modifier_item_martyrs_damage = modifier_item_martyrs_damage
--- Скрытый стак %% входящего урона — сумма из KV за все слои.
____exports.modifier_item_martyrs_incoming = __TS__Class()
local modifier_item_martyrs_incoming = ____exports.modifier_item_martyrs_incoming
modifier_item_martyrs_incoming.name = "modifier_item_martyrs_incoming"
modifier_item_martyrs_incoming.____file_path = "scripts/vscripts/items/blackshop/cursed/item_blackshop_cursed_martyrs_brand.lua"
__TS__ClassExtends(modifier_item_martyrs_incoming, BaseModifier)
function modifier_item_martyrs_incoming.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_martyrs_incoming.prototype.IsHidden(self)
return true
end
function modifier_item_martyrs_incoming.prototype.IsPurgable(self)
return false
end
function modifier_item_martyrs_incoming.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_INCOMING_DAMAGE_PERCENTAGE}
end
function modifier_item_martyrs_incoming.prototype.GetModifierIncomingDamage_Percentage(self)
return self:GetStackCount()
end
modifier_item_martyrs_incoming = __TS__Decorate(
modifier_item_martyrs_incoming,
modifier_item_martyrs_incoming,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_martyrs_incoming"}
)
____exports.modifier_item_martyrs_incoming = modifier_item_martyrs_incoming
--- Видимый маркер клейма (стак = число слоёв).
____exports.modifier_item_martyrs_brand = __TS__Class()
local modifier_item_martyrs_brand = ____exports.modifier_item_martyrs_brand
modifier_item_martyrs_brand.name = "modifier_item_martyrs_brand"
modifier_item_martyrs_brand.____file_path = "scripts/vscripts/items/blackshop/cursed/item_blackshop_cursed_martyrs_brand.lua"
__TS__ClassExtends(modifier_item_martyrs_brand, BaseModifier)
function modifier_item_martyrs_brand.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_martyrs_brand.prototype.IsHidden(self)
return false
end
function modifier_item_martyrs_brand.prototype.IsDebuff(self)
return false
end
function modifier_item_martyrs_brand.prototype.IsPurgable(self)
return false
end
function modifier_item_martyrs_brand.prototype.GetTexture(self)
return "../items/blackshop/martyrs_brand"
end
modifier_item_martyrs_brand = __TS__Decorate(
modifier_item_martyrs_brand,
modifier_item_martyrs_brand,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_martyrs_brand"}
)
____exports.modifier_item_martyrs_brand = modifier_item_martyrs_brand
--- Клеймо мученика — урон растёт, но ты получаешь больше входящего (стакается).
____exports.item_blackshop_cursed_martyrs_brand = __TS__Class()
local item_blackshop_cursed_martyrs_brand = ____exports.item_blackshop_cursed_martyrs_brand
item_blackshop_cursed_martyrs_brand.name = "item_blackshop_cursed_martyrs_brand"
item_blackshop_cursed_martyrs_brand.____file_path = "scripts/vscripts/items/blackshop/cursed/item_blackshop_cursed_martyrs_brand.lua"
__TS__ClassExtends(item_blackshop_cursed_martyrs_brand, BaseItem)
function item_blackshop_cursed_martyrs_brand.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local dmgAdd = self:GetSpecialValueFor("bonus_damage_per")
local incAdd = self:GetSpecialValueFor("incoming_damage_per_stack")
local dMod = ____exports.modifier_item_martyrs_damage.name
local iMod = ____exports.modifier_item_martyrs_incoming.name
local disp = ____exports.modifier_item_martyrs_brand.name
local m = caster:FindModifierByName(dMod)
if m then
m:SetStackCount(m:GetStackCount() + dmgAdd)
else
caster:AddNewModifier(caster, self, dMod, {}):SetStackCount(dmgAdd)
end
m = caster:FindModifierByName(iMod)
if m then
m:SetStackCount(m:GetStackCount() + incAdd)
else
caster:AddNewModifier(caster, self, iMod, {}):SetStackCount(incAdd)
end
m = caster:FindModifierByName(disp)
if m then
m:SetStackCount(m:GetStackCount() + 1)
else
caster:AddNewModifier(caster, self, disp, {}):SetStackCount(1)
end
UTIL_Remove(self)
end
item_blackshop_cursed_martyrs_brand = __TS__Decorate(
item_blackshop_cursed_martyrs_brand,
item_blackshop_cursed_martyrs_brand,
{registerAbility(nil)},
{kind = "class", name = "item_blackshop_cursed_martyrs_brand"}
)
____exports.item_blackshop_cursed_martyrs_brand = item_blackshop_cursed_martyrs_brand
return ____exports
@@ -0,0 +1,196 @@
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
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
____exports.item_blackshop_cursed_the_hand_of_gluttony = __TS__Class()
local item_blackshop_cursed_the_hand_of_gluttony = ____exports.item_blackshop_cursed_the_hand_of_gluttony
item_blackshop_cursed_the_hand_of_gluttony.name = "item_blackshop_cursed_the_hand_of_gluttony"
item_blackshop_cursed_the_hand_of_gluttony.____file_path = "scripts/vscripts/items/blackshop/cursed/item_blackshop_cursed_the_hand_of_gluttony.lua"
__TS__ClassExtends(item_blackshop_cursed_the_hand_of_gluttony, BaseItem)
function item_blackshop_cursed_the_hand_of_gluttony.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local stats = self:GetSpecialValueFor("bonus_stats")
if caster:HasModifier("modifier_item_the_hand_of_gluttony") then
caster:FindModifierByName("modifier_item_the_hand_of_gluttony"):SetStackCount(caster:FindModifierByName("modifier_item_the_hand_of_gluttony"):GetStackCount() + stats)
else
caster:AddNewModifier(caster, self, "modifier_item_the_hand_of_gluttony", {}):SetStackCount(stats)
end
UTIL_Remove(self)
end
item_blackshop_cursed_the_hand_of_gluttony = __TS__Decorate(
item_blackshop_cursed_the_hand_of_gluttony,
item_blackshop_cursed_the_hand_of_gluttony,
{registerAbility(nil)},
{kind = "class", name = "item_blackshop_cursed_the_hand_of_gluttony"}
)
____exports.item_blackshop_cursed_the_hand_of_gluttony = item_blackshop_cursed_the_hand_of_gluttony
____exports.modifier_item_the_hand_of_gluttony = __TS__Class()
local modifier_item_the_hand_of_gluttony = ____exports.modifier_item_the_hand_of_gluttony
modifier_item_the_hand_of_gluttony.name = "modifier_item_the_hand_of_gluttony"
modifier_item_the_hand_of_gluttony.____file_path = "scripts/vscripts/items/blackshop/cursed/item_blackshop_cursed_the_hand_of_gluttony.lua"
__TS__ClassExtends(modifier_item_the_hand_of_gluttony, BaseModifier)
function modifier_item_the_hand_of_gluttony.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_the_hand_of_gluttony.prototype.IsHidden(self)
return false
end
function modifier_item_the_hand_of_gluttony.prototype.IsPurgable(self)
return false
end
function modifier_item_the_hand_of_gluttony.prototype.GetTexture(self)
return "../items/blackshop/the_hand_of_gluttony"
end
function modifier_item_the_hand_of_gluttony.prototype.GetAuraRadius(self)
return self:GetParent():GetBaseAttackRange() + 235
end
function modifier_item_the_hand_of_gluttony.prototype.GetAuraSearchTeam(self)
return DOTA_UNIT_TARGET_TEAM_FRIENDLY
end
function modifier_item_the_hand_of_gluttony.prototype.GetAuraSearchType(self)
return DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_BASIC
end
function modifier_item_the_hand_of_gluttony.prototype.GetModifierAura(self)
return "modifier_item_the_hand_of_gluttony_aura"
end
function modifier_item_the_hand_of_gluttony.prototype.IsAura(self)
return true
end
function modifier_item_the_hand_of_gluttony.prototype.DeclareFunctions(self)
return {MODIFIER_EVENT_ON_ATTACK_LANDED, MODIFIER_EVENT_ON_ATTACK_START}
end
function modifier_item_the_hand_of_gluttony.prototype.OnAttackStart(self, event)
if not IsServer() then
return
end
if event.attacker ~= self:GetParent() then
return
end
local parent = self:GetParent()
local units = FindUnitsInRadius(
parent:GetTeamNumber(),
parent:GetAbsOrigin(),
nil,
self:GetAuraRadius(),
DOTA_UNIT_TARGET_TEAM_FRIENDLY,
DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_BASIC,
DOTA_UNIT_TARGET_FLAG_NONE,
FIND_ANY_ORDER,
false
)
if #units > 1 and RollPseudoRandomPercentage(
self:GetStackCount() / 12,
1,
self:GetParent()
) then
if self:GetParent():HasModifier("modifier_lose_control") then
return
end
local allies = __TS__ArrayFilter(
units,
function(____, unit) return unit ~= parent end
)
local randomAlly = allies[RandomInt(0, #allies - 1) + 1]
parent:MoveToTargetToAttack(randomAlly)
parent:AddNewModifier(
parent,
self:GetAbility(),
"modifier_lose_control",
{duration = 3}
)
end
end
function modifier_item_the_hand_of_gluttony.prototype.OnAttackLanded(self, event)
if not IsServer() then
return
end
if event.attacker ~= self:GetParent() then
return
end
local damage = event.damage
local heal = damage * (self:GetStackCount() / 100)
SendOverheadEventMessage(
nil,
OVERHEAD_ALERT_HEAL,
self:GetParent(),
heal,
nil
)
local healParticle = ParticleManager:CreateParticle(
"particles/generic_gameplay/generic_lifesteal.vpcf",
PATTACH_ABSORIGIN_FOLLOW,
self:GetParent()
)
ParticleManager:ReleaseParticleIndex(healParticle)
local parent = self:GetParent()
parent:Heal(
heal,
self:GetAbility()
)
end
modifier_item_the_hand_of_gluttony = __TS__Decorate(
modifier_item_the_hand_of_gluttony,
modifier_item_the_hand_of_gluttony,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_the_hand_of_gluttony"}
)
____exports.modifier_item_the_hand_of_gluttony = modifier_item_the_hand_of_gluttony
____exports.modifier_item_the_hand_of_gluttony_aura = __TS__Class()
local modifier_item_the_hand_of_gluttony_aura = ____exports.modifier_item_the_hand_of_gluttony_aura
modifier_item_the_hand_of_gluttony_aura.name = "modifier_item_the_hand_of_gluttony_aura"
modifier_item_the_hand_of_gluttony_aura.____file_path = "scripts/vscripts/items/blackshop/cursed/item_blackshop_cursed_the_hand_of_gluttony.lua"
__TS__ClassExtends(modifier_item_the_hand_of_gluttony_aura, BaseModifier)
function modifier_item_the_hand_of_gluttony_aura.prototype.IsHidden(self)
return true
end
function modifier_item_the_hand_of_gluttony_aura.prototype.IsDebuff(self)
return true
end
function modifier_item_the_hand_of_gluttony_aura.prototype.IsPurgable(self)
return false
end
function modifier_item_the_hand_of_gluttony_aura.prototype.CheckState(self)
return {[MODIFIER_STATE_SPECIALLY_DENIABLE] = true}
end
function modifier_item_the_hand_of_gluttony_aura.prototype.GetTexture(self)
return "../items/blackshop/the_hand_of_gluttony"
end
modifier_item_the_hand_of_gluttony_aura = __TS__Decorate(
modifier_item_the_hand_of_gluttony_aura,
modifier_item_the_hand_of_gluttony_aura,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_the_hand_of_gluttony_aura"}
)
____exports.modifier_item_the_hand_of_gluttony_aura = modifier_item_the_hand_of_gluttony_aura
____exports.modifier_lose_control = __TS__Class()
local modifier_lose_control = ____exports.modifier_lose_control
modifier_lose_control.name = "modifier_lose_control"
modifier_lose_control.____file_path = "scripts/vscripts/items/blackshop/cursed/item_blackshop_cursed_the_hand_of_gluttony.lua"
__TS__ClassExtends(modifier_lose_control, BaseModifier)
function modifier_lose_control.prototype.IsHidden(self)
return false
end
function modifier_lose_control.prototype.CheckState(self)
return {[MODIFIER_STATE_COMMAND_RESTRICTED] = true}
end
modifier_lose_control = __TS__Decorate(
modifier_lose_control,
modifier_lose_control,
{registerModifier(nil)},
{kind = "class", name = "modifier_lose_control"}
)
____exports.modifier_lose_control = modifier_lose_control
return ____exports
@@ -0,0 +1,201 @@
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
--- Короткий само-рут после удара (цепь вдовы).
____exports.modifier_item_widow_chain_root = __TS__Class()
local modifier_item_widow_chain_root = ____exports.modifier_item_widow_chain_root
modifier_item_widow_chain_root.name = "modifier_item_widow_chain_root"
modifier_item_widow_chain_root.____file_path = "scripts/vscripts/items/blackshop/cursed/item_blackshop_cursed_widow_chain.lua"
__TS__ClassExtends(modifier_item_widow_chain_root, BaseModifier)
function modifier_item_widow_chain_root.prototype.IsHidden(self)
return false
end
function modifier_item_widow_chain_root.prototype.IsDebuff(self)
return true
end
function modifier_item_widow_chain_root.prototype.IsPurgable(self)
return true
end
function modifier_item_widow_chain_root.prototype.GetTexture(self)
return "../items/blackshop/widow_chain"
end
function modifier_item_widow_chain_root.prototype.CheckState(self)
return {[MODIFIER_STATE_ROOTED] = true}
end
function modifier_item_widow_chain_root.prototype.GetEffectName(self)
return "particles/units/heroes/hero_treant/treant_bramble_root.vpcf"
end
function modifier_item_widow_chain_root.prototype.GetEffectAttachType(self)
return PATTACH_ABSORIGIN_FOLLOW
end
modifier_item_widow_chain_root = __TS__Decorate(
modifier_item_widow_chain_root,
modifier_item_widow_chain_root,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_widow_chain_root"}
)
____exports.modifier_item_widow_chain_root = modifier_item_widow_chain_root
--- Скрытый стак %% исходящего урона — сумма за слои.
____exports.modifier_item_widow_outgoing = __TS__Class()
local modifier_item_widow_outgoing = ____exports.modifier_item_widow_outgoing
modifier_item_widow_outgoing.name = "modifier_item_widow_outgoing"
modifier_item_widow_outgoing.____file_path = "scripts/vscripts/items/blackshop/cursed/item_blackshop_cursed_widow_chain.lua"
__TS__ClassExtends(modifier_item_widow_outgoing, BaseModifier)
function modifier_item_widow_outgoing.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_widow_outgoing.prototype.IsHidden(self)
return true
end
function modifier_item_widow_outgoing.prototype.IsPurgable(self)
return false
end
function modifier_item_widow_outgoing.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_DAMAGEOUTGOING_PERCENTAGE}
end
function modifier_item_widow_outgoing.prototype.GetModifierDamageOutgoing_Percentage(self)
return self:GetStackCount()
end
modifier_item_widow_outgoing = __TS__Decorate(
modifier_item_widow_outgoing,
modifier_item_widow_outgoing,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_widow_outgoing"}
)
____exports.modifier_item_widow_outgoing = modifier_item_widow_outgoing
--- Скрытый стак штрафа скорости атаки — сумма %% за слои.
____exports.modifier_item_widow_as = __TS__Class()
local modifier_item_widow_as = ____exports.modifier_item_widow_as
modifier_item_widow_as.name = "modifier_item_widow_as"
modifier_item_widow_as.____file_path = "scripts/vscripts/items/blackshop/cursed/item_blackshop_cursed_widow_chain.lua"
__TS__ClassExtends(modifier_item_widow_as, BaseModifier)
function modifier_item_widow_as.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_widow_as.prototype.IsHidden(self)
return true
end
function modifier_item_widow_as.prototype.IsPurgable(self)
return false
end
function modifier_item_widow_as.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_ATTACKSPEED_PERCENTAGE}
end
function modifier_item_widow_as.prototype.GetModifierAttackSpeedPercentage(self)
return -self:GetStackCount()
end
modifier_item_widow_as = __TS__Decorate(
modifier_item_widow_as,
modifier_item_widow_as,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_widow_as"}
)
____exports.modifier_item_widow_as = modifier_item_widow_as
--- Видимый маркер цепи (стак = слои; рут по длительности из params при первом создании).
____exports.modifier_item_widow_chain = __TS__Class()
local modifier_item_widow_chain = ____exports.modifier_item_widow_chain
modifier_item_widow_chain.name = "modifier_item_widow_chain"
modifier_item_widow_chain.____file_path = "scripts/vscripts/items/blackshop/cursed/item_blackshop_cursed_widow_chain.lua"
__TS__ClassExtends(modifier_item_widow_chain, BaseModifier)
function modifier_item_widow_chain.prototype.____constructor(self, ...)
BaseModifier.prototype.____constructor(self, ...)
self.rootDuration = 0
end
function modifier_item_widow_chain.prototype.OnCreated(self, params)
self.rootDuration = params.root_duration or 0
end
function modifier_item_widow_chain.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_widow_chain.prototype.IsHidden(self)
return false
end
function modifier_item_widow_chain.prototype.IsDebuff(self)
return false
end
function modifier_item_widow_chain.prototype.IsPurgable(self)
return false
end
function modifier_item_widow_chain.prototype.GetTexture(self)
return "../items/blackshop/widow_chain"
end
function modifier_item_widow_chain.prototype.DeclareFunctions(self)
return {MODIFIER_EVENT_ON_ATTACK_LANDED}
end
function modifier_item_widow_chain.prototype.OnAttackLanded(self, event)
if not IsServer() then
return
end
local parent = self:GetParent()
if event.attacker ~= parent or not parent or not parent:IsAlive() then
return
end
parent:AddNewModifier(
parent,
getModifierSourceAbility(nil, parent),
____exports.modifier_item_widow_chain_root.name,
{duration = self.rootDuration}
)
end
modifier_item_widow_chain = __TS__Decorate(
modifier_item_widow_chain,
modifier_item_widow_chain,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_widow_chain"}
)
____exports.modifier_item_widow_chain = modifier_item_widow_chain
--- Цепь вдовы — огромный урон, медленные атаки; каждый удар коренит героя.
____exports.item_blackshop_cursed_widow_chain = __TS__Class()
local item_blackshop_cursed_widow_chain = ____exports.item_blackshop_cursed_widow_chain
item_blackshop_cursed_widow_chain.name = "item_blackshop_cursed_widow_chain"
item_blackshop_cursed_widow_chain.____file_path = "scripts/vscripts/items/blackshop/cursed/item_blackshop_cursed_widow_chain.lua"
__TS__ClassExtends(item_blackshop_cursed_widow_chain, BaseItem)
function item_blackshop_cursed_widow_chain.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local dmgAdd = self:GetSpecialValueFor("bonus_outgoing_damage_pct")
local asAdd = self:GetSpecialValueFor("attack_speed_loss_pct")
local rootDur = self:GetSpecialValueFor("root_duration")
local outMod = ____exports.modifier_item_widow_outgoing.name
local asMod = ____exports.modifier_item_widow_as.name
local disp = ____exports.modifier_item_widow_chain.name
local m = caster:FindModifierByName(outMod)
if m then
m:SetStackCount(m:GetStackCount() + dmgAdd)
else
caster:AddNewModifier(caster, self, outMod, {}):SetStackCount(dmgAdd)
end
m = caster:FindModifierByName(asMod)
if m then
m:SetStackCount(m:GetStackCount() + asAdd)
else
caster:AddNewModifier(caster, self, asMod, {}):SetStackCount(asAdd)
end
m = caster:FindModifierByName(disp)
if m then
m:SetStackCount(m:GetStackCount() + 1)
else
caster:AddNewModifier(caster, self, disp, {root_duration = rootDur}):SetStackCount(1)
end
UTIL_Remove(self)
end
item_blackshop_cursed_widow_chain = __TS__Decorate(
item_blackshop_cursed_widow_chain,
item_blackshop_cursed_widow_chain,
{registerAbility(nil)},
{kind = "class", name = "item_blackshop_cursed_widow_chain"}
)
____exports.item_blackshop_cursed_widow_chain = item_blackshop_cursed_widow_chain
return ____exports
@@ -0,0 +1,191 @@
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
local __TS__SourceMapTraceBack = ____lualib.__TS__SourceMapTraceBack
__TS__SourceMapTraceBack(debug.getinfo(1).short_src, {["9"] = 1,["10"] = 1,["11"] = 1,["12"] = 1,["13"] = 1,["14"] = 3,["15"] = 4,["16"] = 3,["17"] = 4,["18"] = 5,["19"] = 6,["22"] = 8,["23"] = 9,["26"] = 11,["27"] = 13,["28"] = 14,["30"] = 18,["32"] = 20,["33"] = 5,["34"] = 4,["35"] = 4,["36"] = 4,["37"] = 3,["40"] = 4,["41"] = 24,["42"] = 25,["43"] = 24,["44"] = 25,["45"] = 26,["46"] = 27,["47"] = 26,["48"] = 30,["49"] = 31,["50"] = 30,["51"] = 34,["52"] = 35,["53"] = 34,["54"] = 38,["55"] = 39,["56"] = 38,["57"] = 42,["58"] = 43,["59"] = 42,["60"] = 46,["61"] = 47,["62"] = 46,["63"] = 50,["64"] = 51,["65"] = 50,["66"] = 54,["67"] = 55,["68"] = 54,["69"] = 58,["70"] = 59,["71"] = 58,["72"] = 62,["73"] = 63,["76"] = 64,["79"] = 66,["80"] = 67,["81"] = 67,["82"] = 67,["83"] = 67,["84"] = 67,["85"] = 67,["86"] = 67,["87"] = 67,["88"] = 67,["89"] = 67,["90"] = 67,["91"] = 79,["92"] = 79,["93"] = 79,["94"] = 79,["95"] = 79,["96"] = 80,["99"] = 81,["100"] = 81,["101"] = 81,["102"] = 81,["103"] = 82,["104"] = 83,["105"] = 85,["106"] = 85,["107"] = 85,["108"] = 85,["109"] = 85,["110"] = 85,["112"] = 62,["113"] = 89,["114"] = 90,["117"] = 91,["120"] = 93,["121"] = 94,["122"] = 95,["123"] = 95,["124"] = 95,["125"] = 95,["126"] = 95,["127"] = 95,["128"] = 95,["129"] = 96,["130"] = 96,["131"] = 96,["132"] = 96,["133"] = 96,["134"] = 101,["135"] = 103,["136"] = 104,["137"] = 104,["138"] = 104,["139"] = 104,["140"] = 89,["141"] = 25,["142"] = 25,["143"] = 25,["144"] = 24,["147"] = 25,["148"] = 108,["149"] = 109,["150"] = 108,["151"] = 109,["152"] = 110,["153"] = 111,["154"] = 110,["155"] = 114,["156"] = 115,["157"] = 114,["158"] = 118,["159"] = 119,["160"] = 118,["161"] = 122,["162"] = 123,["163"] = 122,["164"] = 128,["165"] = 129,["166"] = 128,["167"] = 109,["168"] = 109,["169"] = 109,["170"] = 108,["173"] = 109,["174"] = 133,["175"] = 134,["176"] = 133,["177"] = 134,["178"] = 135,["179"] = 136,["180"] = 135,["181"] = 138,["182"] = 139,["183"] = 138,["184"] = 134,["185"] = 134,["186"] = 134,["187"] = 133,["190"] = 134});
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
____exports.item_the_hand_of_gluttony = __TS__Class()
local item_the_hand_of_gluttony = ____exports.item_the_hand_of_gluttony
item_the_hand_of_gluttony.name = "item_the_hand_of_gluttony"
__TS__ClassExtends(item_the_hand_of_gluttony, BaseItem)
function item_the_hand_of_gluttony.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local stats = self:GetSpecialValueFor("bonus_stats")
if caster:HasModifier("modifier_item_the_hand_of_gluttony") then
caster:FindModifierByName("modifier_item_the_hand_of_gluttony"):SetStackCount(caster:FindModifierByName("modifier_item_the_hand_of_gluttony"):GetStackCount() + stats)
else
caster:AddNewModifier(caster, self, "modifier_item_the_hand_of_gluttony", {}):SetStackCount(stats)
end
UTIL_Remove(self)
end
item_the_hand_of_gluttony = __TS__Decorate(
item_the_hand_of_gluttony,
item_the_hand_of_gluttony,
{registerAbility(nil)},
{kind = "class", name = "item_the_hand_of_gluttony"}
)
____exports.item_the_hand_of_gluttony = item_the_hand_of_gluttony
____exports.modifier_item_the_hand_of_gluttony = __TS__Class()
local modifier_item_the_hand_of_gluttony = ____exports.modifier_item_the_hand_of_gluttony
modifier_item_the_hand_of_gluttony.name = "modifier_item_the_hand_of_gluttony"
__TS__ClassExtends(modifier_item_the_hand_of_gluttony, BaseModifier)
function modifier_item_the_hand_of_gluttony.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_the_hand_of_gluttony.prototype.IsHidden(self)
return false
end
function modifier_item_the_hand_of_gluttony.prototype.IsPurgable(self)
return false
end
function modifier_item_the_hand_of_gluttony.prototype.GetAuraRadius(self)
return self:GetParent():GetBaseAttackRange() + 235
end
function modifier_item_the_hand_of_gluttony.prototype.GetAuraSearchTeam(self)
return DOTA_UNIT_TARGET_TEAM_FRIENDLY
end
function modifier_item_the_hand_of_gluttony.prototype.GetAuraSearchType(self)
return DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_BASIC
end
function modifier_item_the_hand_of_gluttony.prototype.GetModifierAura(self)
return "modifier_item_the_hand_of_gluttony_aura"
end
function modifier_item_the_hand_of_gluttony.prototype.IsAura(self)
return true
end
function modifier_item_the_hand_of_gluttony.prototype.DeclareFunctions(self)
return {MODIFIER_EVENT_ON_ATTACK_LANDED, MODIFIER_EVENT_ON_ATTACK_START}
end
function modifier_item_the_hand_of_gluttony.prototype.OnAttackStart(self, event)
if not IsServer() then
return
end
if event.attacker ~= self:GetParent() then
return
end
local parent = self:GetParent()
local units = FindUnitsInRadius(
parent:GetTeamNumber(),
parent:GetAbsOrigin(),
nil,
self:GetAuraRadius(),
DOTA_UNIT_TARGET_TEAM_FRIENDLY,
DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_BASIC,
DOTA_UNIT_TARGET_FLAG_NONE,
FIND_ANY_ORDER,
false
)
if #units > 1 and RollPseudoRandomPercentage(
self:GetStackCount() / 12,
1,
self:GetParent()
) then
if self:GetParent():HasModifier("modifier_lose_control") then
return
end
local allies = __TS__ArrayFilter(
units,
function(____, unit) return unit ~= parent end
)
local randomAlly = allies[RandomInt(0, #allies - 1) + 1]
parent:MoveToTargetToAttack(randomAlly)
parent:AddNewModifier(
parent,
self:GetAbility(),
"modifier_lose_control",
{duration = 3}
)
end
end
function modifier_item_the_hand_of_gluttony.prototype.OnAttackLanded(self, event)
if not IsServer() then
return
end
if event.attacker ~= self:GetParent() then
return
end
local damage = event.damage
local heal = damage * (self:GetStackCount() / 100)
SendOverheadEventMessage(
nil,
OVERHEAD_ALERT_HEAL,
self:GetParent(),
heal,
nil
)
local healParticle = ParticleManager:CreateParticle(
"particles/generic_gameplay/generic_lifesteal.vpcf",
PATTACH_ABSORIGIN_FOLLOW,
self:GetParent()
)
ParticleManager:ReleaseParticleIndex(healParticle)
local parent = self:GetParent()
parent:Heal(
heal,
self:GetAbility()
)
end
modifier_item_the_hand_of_gluttony = __TS__Decorate(
modifier_item_the_hand_of_gluttony,
modifier_item_the_hand_of_gluttony,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_the_hand_of_gluttony"}
)
____exports.modifier_item_the_hand_of_gluttony = modifier_item_the_hand_of_gluttony
____exports.modifier_item_the_hand_of_gluttony_aura = __TS__Class()
local modifier_item_the_hand_of_gluttony_aura = ____exports.modifier_item_the_hand_of_gluttony_aura
modifier_item_the_hand_of_gluttony_aura.name = "modifier_item_the_hand_of_gluttony_aura"
__TS__ClassExtends(modifier_item_the_hand_of_gluttony_aura, BaseModifier)
function modifier_item_the_hand_of_gluttony_aura.prototype.IsHidden(self)
return true
end
function modifier_item_the_hand_of_gluttony_aura.prototype.IsDebuff(self)
return true
end
function modifier_item_the_hand_of_gluttony_aura.prototype.IsPurgable(self)
return false
end
function modifier_item_the_hand_of_gluttony_aura.prototype.CheckState(self)
return {[MODIFIER_STATE_SPECIALLY_DENIABLE] = true}
end
function modifier_item_the_hand_of_gluttony_aura.prototype.GetTexture(self)
return "item_the_hand_of_gluttony"
end
modifier_item_the_hand_of_gluttony_aura = __TS__Decorate(
modifier_item_the_hand_of_gluttony_aura,
modifier_item_the_hand_of_gluttony_aura,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_the_hand_of_gluttony_aura"}
)
____exports.modifier_item_the_hand_of_gluttony_aura = modifier_item_the_hand_of_gluttony_aura
____exports.modifier_lose_control = __TS__Class()
local modifier_lose_control = ____exports.modifier_lose_control
modifier_lose_control.name = "modifier_lose_control"
__TS__ClassExtends(modifier_lose_control, BaseModifier)
function modifier_lose_control.prototype.IsHidden(self)
return false
end
function modifier_lose_control.prototype.CheckState(self)
return {[MODIFIER_STATE_COMMAND_RESTRICTED] = true}
end
modifier_lose_control = __TS__Decorate(
modifier_lose_control,
modifier_lose_control,
{registerModifier(nil)},
{kind = "class", name = "modifier_lose_control"}
)
____exports.modifier_lose_control = modifier_lose_control
return ____exports
@@ -0,0 +1,138 @@
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
--- Скрытый стак брони — число в стаке = суммарный бонус из KV (как синий воск).
____exports.modifier_item_bulwark_plate_armor = __TS__Class()
local modifier_item_bulwark_plate_armor = ____exports.modifier_item_bulwark_plate_armor
modifier_item_bulwark_plate_armor.name = "modifier_item_bulwark_plate_armor"
modifier_item_bulwark_plate_armor.____file_path = "scripts/vscripts/items/blackshop/epic/item_blackshop_epic_bulwark_plate.lua"
__TS__ClassExtends(modifier_item_bulwark_plate_armor, BaseModifier)
function modifier_item_bulwark_plate_armor.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_bulwark_plate_armor.prototype.IsHidden(self)
return true
end
function modifier_item_bulwark_plate_armor.prototype.IsPurgable(self)
return false
end
function modifier_item_bulwark_plate_armor.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS}
end
function modifier_item_bulwark_plate_armor.prototype.GetModifierPhysicalArmorBonus(self)
return self:GetStackCount()
end
modifier_item_bulwark_plate_armor = __TS__Decorate(
modifier_item_bulwark_plate_armor,
modifier_item_bulwark_plate_armor,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_bulwark_plate_armor"}
)
____exports.modifier_item_bulwark_plate_armor = modifier_item_bulwark_plate_armor
--- Скрытый стак магического сопротивления — стак = сумма процентов из KV.
____exports.modifier_item_bulwark_plate_mr = __TS__Class()
local modifier_item_bulwark_plate_mr = ____exports.modifier_item_bulwark_plate_mr
modifier_item_bulwark_plate_mr.name = "modifier_item_bulwark_plate_mr"
modifier_item_bulwark_plate_mr.____file_path = "scripts/vscripts/items/blackshop/epic/item_blackshop_epic_bulwark_plate.lua"
__TS__ClassExtends(modifier_item_bulwark_plate_mr, BaseModifier)
function modifier_item_bulwark_plate_mr.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_bulwark_plate_mr.prototype.IsHidden(self)
return true
end
function modifier_item_bulwark_plate_mr.prototype.IsPurgable(self)
return false
end
function modifier_item_bulwark_plate_mr.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_MAGICAL_RESISTANCE_BONUS}
end
function modifier_item_bulwark_plate_mr.prototype.GetModifierMagicalResistanceBonus(self)
return self:GetStackCount()
end
modifier_item_bulwark_plate_mr = __TS__Decorate(
modifier_item_bulwark_plate_mr,
modifier_item_bulwark_plate_mr,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_bulwark_plate_mr"}
)
____exports.modifier_item_bulwark_plate_mr = modifier_item_bulwark_plate_mr
--- Видимый маркер пластины (без статов — только иконка/слои для игрока).
____exports.modifier_item_bulwark_plate_display = __TS__Class()
local modifier_item_bulwark_plate_display = ____exports.modifier_item_bulwark_plate_display
modifier_item_bulwark_plate_display.name = "modifier_item_bulwark_plate_display"
modifier_item_bulwark_plate_display.____file_path = "scripts/vscripts/items/blackshop/epic/item_blackshop_epic_bulwark_plate.lua"
__TS__ClassExtends(modifier_item_bulwark_plate_display, BaseModifier)
function modifier_item_bulwark_plate_display.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_bulwark_plate_display.prototype.IsHidden(self)
return false
end
function modifier_item_bulwark_plate_display.prototype.IsPurgable(self)
return false
end
function modifier_item_bulwark_plate_display.prototype.GetTexture(self)
return "../items/blackshop/iron_plate"
end
modifier_item_bulwark_plate_display = __TS__Decorate(
modifier_item_bulwark_plate_display,
modifier_item_bulwark_plate_display,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_bulwark_plate_display"}
)
____exports.modifier_item_bulwark_plate_display = modifier_item_bulwark_plate_display
--- Пластина бастиона — за применение добавляет в стаки брони и МР величины из AbilityValues предмета.
____exports.item_blackshop_epic_bulwark_plate = __TS__Class()
local item_blackshop_epic_bulwark_plate = ____exports.item_blackshop_epic_bulwark_plate
item_blackshop_epic_bulwark_plate.name = "item_blackshop_epic_bulwark_plate"
item_blackshop_epic_bulwark_plate.____file_path = "scripts/vscripts/items/blackshop/epic/item_blackshop_epic_bulwark_plate.lua"
__TS__ClassExtends(item_blackshop_epic_bulwark_plate, BaseItem)
function item_blackshop_epic_bulwark_plate.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local armorAdd = self:GetSpecialValueFor("bonus_armor_per")
local mrAdd = self:GetSpecialValueFor("bonus_mr_per")
local armorMod = ____exports.modifier_item_bulwark_plate_armor.name
local mrMod = ____exports.modifier_item_bulwark_plate_mr.name
local disp = ____exports.modifier_item_bulwark_plate_display.name
local m = caster:FindModifierByName(armorMod)
if m then
m:SetStackCount(m:GetStackCount() + armorAdd)
else
caster:AddNewModifier(caster, self, armorMod, {}):SetStackCount(armorAdd)
end
m = caster:FindModifierByName(mrMod)
if m then
m:SetStackCount(m:GetStackCount() + mrAdd)
else
caster:AddNewModifier(caster, self, mrMod, {}):SetStackCount(mrAdd)
end
local d = caster:FindModifierByName(disp)
if d then
d:SetStackCount(d:GetStackCount() + 1)
else
caster:AddNewModifier(caster, self, disp, {}):SetStackCount(1)
end
UTIL_Remove(self)
end
item_blackshop_epic_bulwark_plate = __TS__Decorate(
item_blackshop_epic_bulwark_plate,
item_blackshop_epic_bulwark_plate,
{registerAbility(nil)},
{kind = "class", name = "item_blackshop_epic_bulwark_plate"}
)
____exports.item_blackshop_epic_bulwark_plate = item_blackshop_epic_bulwark_plate
return ____exports
@@ -0,0 +1,33 @@
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
____exports.item_blackshop_epic_critical_paladin_sword = __TS__Class()
local item_blackshop_epic_critical_paladin_sword = ____exports.item_blackshop_epic_critical_paladin_sword
item_blackshop_epic_critical_paladin_sword.name = "item_blackshop_epic_critical_paladin_sword"
item_blackshop_epic_critical_paladin_sword.____file_path = "scripts/vscripts/items/blackshop/epic/item_blackshop_epic_critical_paladin_sword.lua"
__TS__ClassExtends(item_blackshop_epic_critical_paladin_sword, BaseItem)
function item_blackshop_epic_critical_paladin_sword.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local mult = self:GetSpecialValueFor("crit_multiplier")
local stackingCritMod = self:GetCaster():FindModifierByName("modifier_stacking_crit")
if stackingCritMod then
local ability = self
stackingCritMod:AddCustomCrit(0, mult, "item_critical_paladin_sword", ability)
end
UTIL_Remove(self)
end
item_blackshop_epic_critical_paladin_sword = __TS__Decorate(
item_blackshop_epic_critical_paladin_sword,
item_blackshop_epic_critical_paladin_sword,
{registerAbility(nil)},
{kind = "class", name = "item_blackshop_epic_critical_paladin_sword"}
)
____exports.item_blackshop_epic_critical_paladin_sword = item_blackshop_epic_critical_paladin_sword
return ____exports
@@ -0,0 +1,105 @@
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
____exports.item_blackshop_epic_power_of_grow = __TS__Class()
local item_blackshop_epic_power_of_grow = ____exports.item_blackshop_epic_power_of_grow
item_blackshop_epic_power_of_grow.name = "item_blackshop_epic_power_of_grow"
item_blackshop_epic_power_of_grow.____file_path = "scripts/vscripts/items/blackshop/epic/item_blackshop_epic_power_of_grow.lua"
__TS__ClassExtends(item_blackshop_epic_power_of_grow, BaseItem)
function item_blackshop_epic_power_of_grow.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local stats = self:GetSpecialValueFor("bonus_stats")
if caster:HasModifier("modifier_item_power_of_grow") then
caster:FindModifierByName("modifier_item_power_of_grow_scale"):SetStackCount(caster:FindModifierByName("modifier_item_power_of_grow_scale"):GetStackCount() + stats)
else
caster:AddNewModifier(caster, self, "modifier_item_power_of_grow", {})
caster:AddNewModifier(caster, self, "modifier_item_power_of_grow_scale", {}):SetStackCount(stats)
end
UTIL_Remove(self)
end
item_blackshop_epic_power_of_grow = __TS__Decorate(
item_blackshop_epic_power_of_grow,
item_blackshop_epic_power_of_grow,
{registerAbility(nil)},
{kind = "class", name = "item_blackshop_epic_power_of_grow"}
)
____exports.item_blackshop_epic_power_of_grow = item_blackshop_epic_power_of_grow
____exports.modifier_item_power_of_grow = __TS__Class()
local modifier_item_power_of_grow = ____exports.modifier_item_power_of_grow
modifier_item_power_of_grow.name = "modifier_item_power_of_grow"
modifier_item_power_of_grow.____file_path = "scripts/vscripts/items/blackshop/epic/item_blackshop_epic_power_of_grow.lua"
__TS__ClassExtends(modifier_item_power_of_grow, BaseModifier)
function modifier_item_power_of_grow.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_power_of_grow.prototype.IsHidden(self)
return true
end
function modifier_item_power_of_grow.prototype.IsPurgable(self)
return false
end
function modifier_item_power_of_grow.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_DAMAGEOUTGOING_PERCENTAGE, MODIFIER_PROPERTY_MODEL_SCALE}
end
function modifier_item_power_of_grow.prototype.OnCreated(self)
self:StartIntervalThink(0.1)
end
function modifier_item_power_of_grow.prototype.OnIntervalThink(self)
if not IsServer() then
return
end
local parent = self:GetParent()
local scale = (parent:GetModelScale() - 1) * 100
self:SetStackCount(scale)
end
function modifier_item_power_of_grow.prototype.GetModifierDamageOutgoing_Percentage(self)
return self:GetStackCount()
end
modifier_item_power_of_grow = __TS__Decorate(
modifier_item_power_of_grow,
modifier_item_power_of_grow,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_power_of_grow"}
)
____exports.modifier_item_power_of_grow = modifier_item_power_of_grow
____exports.modifier_item_power_of_grow_scale = __TS__Class()
local modifier_item_power_of_grow_scale = ____exports.modifier_item_power_of_grow_scale
modifier_item_power_of_grow_scale.name = "modifier_item_power_of_grow_scale"
modifier_item_power_of_grow_scale.____file_path = "scripts/vscripts/items/blackshop/epic/item_blackshop_epic_power_of_grow.lua"
__TS__ClassExtends(modifier_item_power_of_grow_scale, BaseModifier)
function modifier_item_power_of_grow_scale.prototype.IsHidden(self)
return false
end
function modifier_item_power_of_grow_scale.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_power_of_grow_scale.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_MODEL_SCALE}
end
function modifier_item_power_of_grow_scale.prototype.GetTexture(self)
return "../items/blackshop/magic_mushroom"
end
function modifier_item_power_of_grow_scale.prototype.GetModifierModelScale(self)
return self:GetStackCount()
end
modifier_item_power_of_grow_scale = __TS__Decorate(
modifier_item_power_of_grow_scale,
modifier_item_power_of_grow_scale,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_power_of_grow_scale"}
)
____exports.modifier_item_power_of_grow_scale = modifier_item_power_of_grow_scale
return ____exports
@@ -0,0 +1,77 @@
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
--- Печать тройственности — эпик: ко всем атрибутам за применение (стакается).
____exports.item_blackshop_epic_trinity_seal = __TS__Class()
local item_blackshop_epic_trinity_seal = ____exports.item_blackshop_epic_trinity_seal
item_blackshop_epic_trinity_seal.name = "item_blackshop_epic_trinity_seal"
item_blackshop_epic_trinity_seal.____file_path = "scripts/vscripts/items/blackshop/epic/item_blackshop_epic_trinity_seal.lua"
__TS__ClassExtends(item_blackshop_epic_trinity_seal, BaseItem)
function item_blackshop_epic_trinity_seal.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local stats = self:GetSpecialValueFor("bonus_all")
if caster:HasModifier("modifier_item_trinity_seal") then
local m = caster:FindModifierByName("modifier_item_trinity_seal")
m:SetStackCount(m:GetStackCount() + stats)
else
caster:AddNewModifier(caster, self, "modifier_item_trinity_seal", {}):SetStackCount(stats)
end
UTIL_Remove(self)
end
item_blackshop_epic_trinity_seal = __TS__Decorate(
item_blackshop_epic_trinity_seal,
item_blackshop_epic_trinity_seal,
{registerAbility(nil)},
{kind = "class", name = "item_blackshop_epic_trinity_seal"}
)
____exports.item_blackshop_epic_trinity_seal = item_blackshop_epic_trinity_seal
____exports.modifier_item_trinity_seal = __TS__Class()
local modifier_item_trinity_seal = ____exports.modifier_item_trinity_seal
modifier_item_trinity_seal.name = "modifier_item_trinity_seal"
modifier_item_trinity_seal.____file_path = "scripts/vscripts/items/blackshop/epic/item_blackshop_epic_trinity_seal.lua"
__TS__ClassExtends(modifier_item_trinity_seal, BaseModifier)
function modifier_item_trinity_seal.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_trinity_seal.prototype.IsHidden(self)
return true
end
function modifier_item_trinity_seal.prototype.IsPurgable(self)
return false
end
function modifier_item_trinity_seal.prototype.GetTexture(self)
return "../items/blackshop/trinity_seal"
end
function modifier_item_trinity_seal.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_STATS_AGILITY_BONUS, MODIFIER_PROPERTY_STATS_INTELLECT_BONUS, MODIFIER_PROPERTY_STATS_STRENGTH_BONUS}
end
function modifier_item_trinity_seal.prototype.GetModifierBonusStats_Agility(self)
return self:GetStackCount()
end
function modifier_item_trinity_seal.prototype.GetModifierBonusStats_Intellect(self)
return self:GetStackCount()
end
function modifier_item_trinity_seal.prototype.GetModifierBonusStats_Strength(self)
return self:GetStackCount()
end
modifier_item_trinity_seal = __TS__Decorate(
modifier_item_trinity_seal,
modifier_item_trinity_seal,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_trinity_seal"}
)
____exports.modifier_item_trinity_seal = modifier_item_trinity_seal
return ____exports
@@ -0,0 +1,35 @@
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local __TS__SourceMapTraceBack = ____lualib.__TS__SourceMapTraceBack
__TS__SourceMapTraceBack(debug.getinfo(1).short_src, {["8"] = 1,["9"] = 1,["10"] = 1,["11"] = 3,["12"] = 4,["13"] = 3,["14"] = 4,["15"] = 5,["16"] = 6,["19"] = 7,["20"] = 8,["21"] = 9,["22"] = 10,["23"] = 11,["24"] = 12,["26"] = 14,["27"] = 5,["28"] = 4,["29"] = 4,["30"] = 4,["31"] = 3,["34"] = 4});
local ____exports = {}
local ____dota_ts_adapter = require("lib.dota_ts_adapter")
local BaseItem = ____dota_ts_adapter.BaseItem
local registerAbility = ____dota_ts_adapter.registerAbility
____exports.item_critical_paladin_sword = __TS__Class()
local item_critical_paladin_sword = ____exports.item_critical_paladin_sword
item_critical_paladin_sword.name = "item_critical_paladin_sword"
__TS__ClassExtends(item_critical_paladin_sword, BaseItem)
function item_critical_paladin_sword.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local mult = self:GetSpecialValueFor("crit_multiplier")
print("[Item Test] Adding crit modifier")
local stackingCritMod = self:GetCaster():FindModifierByName("modifier_stacking_crit")
if stackingCritMod then
local ability = self
stackingCritMod:AddCustomCrit(0, mult, "item_critical_paladin_sword", ability)
end
UTIL_Remove(self)
end
item_critical_paladin_sword = __TS__Decorate(
item_critical_paladin_sword,
item_critical_paladin_sword,
{registerAbility(nil)},
{kind = "class", name = "item_critical_paladin_sword"}
)
____exports.item_critical_paladin_sword = item_critical_paladin_sword
return ____exports
@@ -0,0 +1,104 @@
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local __TS__SourceMapTraceBack = ____lualib.__TS__SourceMapTraceBack
__TS__SourceMapTraceBack(debug.getinfo(1).short_src, {["8"] = 1,["9"] = 1,["10"] = 1,["11"] = 1,["12"] = 1,["13"] = 3,["14"] = 4,["15"] = 3,["16"] = 4,["17"] = 5,["18"] = 6,["21"] = 8,["22"] = 9,["25"] = 11,["26"] = 13,["27"] = 14,["29"] = 18,["30"] = 19,["32"] = 21,["33"] = 5,["34"] = 4,["35"] = 4,["36"] = 4,["37"] = 3,["40"] = 4,["41"] = 25,["42"] = 26,["43"] = 25,["44"] = 26,["45"] = 27,["46"] = 28,["47"] = 27,["48"] = 31,["49"] = 32,["50"] = 31,["51"] = 35,["52"] = 36,["53"] = 35,["54"] = 39,["55"] = 40,["56"] = 39,["57"] = 43,["58"] = 44,["59"] = 43,["60"] = 47,["61"] = 48,["64"] = 49,["65"] = 50,["66"] = 52,["67"] = 47,["68"] = 55,["69"] = 56,["70"] = 55,["71"] = 26,["72"] = 26,["73"] = 26,["74"] = 25,["77"] = 26,["78"] = 60,["79"] = 61,["80"] = 60,["81"] = 61,["82"] = 62,["83"] = 63,["84"] = 62,["85"] = 65,["86"] = 66,["87"] = 65,["88"] = 68,["89"] = 69,["90"] = 68,["91"] = 71,["92"] = 72,["93"] = 71,["94"] = 74,["95"] = 75,["96"] = 74,["97"] = 61,["98"] = 61,["99"] = 61,["100"] = 60,["103"] = 61});
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
____exports.item_power_of_grow = __TS__Class()
local item_power_of_grow = ____exports.item_power_of_grow
item_power_of_grow.name = "item_power_of_grow"
__TS__ClassExtends(item_power_of_grow, BaseItem)
function item_power_of_grow.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local stats = self:GetSpecialValueFor("bonus_stats")
if caster:HasModifier("modifier_item_power_of_grow") then
caster:FindModifierByName("modifier_item_power_of_grow_scale"):SetStackCount(caster:FindModifierByName("modifier_item_power_of_grow_scale"):GetStackCount() + stats)
else
caster:AddNewModifier(caster, self, "modifier_item_power_of_grow", {})
caster:AddNewModifier(caster, self, "modifier_item_power_of_grow_scale", {}):SetStackCount(stats)
end
UTIL_Remove(self)
end
item_power_of_grow = __TS__Decorate(
item_power_of_grow,
item_power_of_grow,
{registerAbility(nil)},
{kind = "class", name = "item_power_of_grow"}
)
____exports.item_power_of_grow = item_power_of_grow
____exports.modifier_item_power_of_grow = __TS__Class()
local modifier_item_power_of_grow = ____exports.modifier_item_power_of_grow
modifier_item_power_of_grow.name = "modifier_item_power_of_grow"
__TS__ClassExtends(modifier_item_power_of_grow, BaseModifier)
function modifier_item_power_of_grow.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_power_of_grow.prototype.IsHidden(self)
return true
end
function modifier_item_power_of_grow.prototype.IsPurgable(self)
return false
end
function modifier_item_power_of_grow.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_DAMAGEOUTGOING_PERCENTAGE, MODIFIER_PROPERTY_MODEL_SCALE}
end
function modifier_item_power_of_grow.prototype.OnCreated(self)
self:StartIntervalThink(0.1)
end
function modifier_item_power_of_grow.prototype.OnIntervalThink(self)
if not IsServer() then
return
end
local parent = self:GetParent()
local scale = (parent:GetModelScale() - 1) * 100
self:SetStackCount(scale)
end
function modifier_item_power_of_grow.prototype.GetModifierDamageOutgoing_Percentage(self)
return self:GetStackCount()
end
modifier_item_power_of_grow = __TS__Decorate(
modifier_item_power_of_grow,
modifier_item_power_of_grow,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_power_of_grow"}
)
____exports.modifier_item_power_of_grow = modifier_item_power_of_grow
____exports.modifier_item_power_of_grow_scale = __TS__Class()
local modifier_item_power_of_grow_scale = ____exports.modifier_item_power_of_grow_scale
modifier_item_power_of_grow_scale.name = "modifier_item_power_of_grow_scale"
__TS__ClassExtends(modifier_item_power_of_grow_scale, BaseModifier)
function modifier_item_power_of_grow_scale.prototype.IsHidden(self)
return false
end
function modifier_item_power_of_grow_scale.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_power_of_grow_scale.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_MODEL_SCALE}
end
function modifier_item_power_of_grow_scale.prototype.GetTexture(self)
return "blackshop/magic_mushroom"
end
function modifier_item_power_of_grow_scale.prototype.GetModifierModelScale(self)
return self:GetStackCount()
end
modifier_item_power_of_grow_scale = __TS__Decorate(
modifier_item_power_of_grow_scale,
modifier_item_power_of_grow_scale,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_power_of_grow_scale"}
)
____exports.modifier_item_power_of_grow_scale = modifier_item_power_of_grow_scale
return ____exports
@@ -0,0 +1,161 @@
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
____exports.modifier_item_heavenly_dawn_chorus_status = __TS__Class()
local modifier_item_heavenly_dawn_chorus_status = ____exports.modifier_item_heavenly_dawn_chorus_status
modifier_item_heavenly_dawn_chorus_status.name = "modifier_item_heavenly_dawn_chorus_status"
modifier_item_heavenly_dawn_chorus_status.____file_path = "scripts/vscripts/items/blackshop/heavenly/item_blackshop_heavenly_dawn_chorus.lua"
__TS__ClassExtends(modifier_item_heavenly_dawn_chorus_status, BaseModifier)
function modifier_item_heavenly_dawn_chorus_status.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_heavenly_dawn_chorus_status.prototype.IsHidden(self)
return true
end
function modifier_item_heavenly_dawn_chorus_status.prototype.IsPurgable(self)
return false
end
function modifier_item_heavenly_dawn_chorus_status.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_STATUS_RESISTANCE_STACKING}
end
function modifier_item_heavenly_dawn_chorus_status.prototype.GetModifierStatusResistanceStacking(self)
return self:GetStackCount()
end
modifier_item_heavenly_dawn_chorus_status = __TS__Decorate(
modifier_item_heavenly_dawn_chorus_status,
modifier_item_heavenly_dawn_chorus_status,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_heavenly_dawn_chorus_status"}
)
____exports.modifier_item_heavenly_dawn_chorus_status = modifier_item_heavenly_dawn_chorus_status
____exports.modifier_item_heavenly_dawn_chorus_mr = __TS__Class()
local modifier_item_heavenly_dawn_chorus_mr = ____exports.modifier_item_heavenly_dawn_chorus_mr
modifier_item_heavenly_dawn_chorus_mr.name = "modifier_item_heavenly_dawn_chorus_mr"
modifier_item_heavenly_dawn_chorus_mr.____file_path = "scripts/vscripts/items/blackshop/heavenly/item_blackshop_heavenly_dawn_chorus.lua"
__TS__ClassExtends(modifier_item_heavenly_dawn_chorus_mr, BaseModifier)
function modifier_item_heavenly_dawn_chorus_mr.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_heavenly_dawn_chorus_mr.prototype.IsHidden(self)
return true
end
function modifier_item_heavenly_dawn_chorus_mr.prototype.IsPurgable(self)
return false
end
function modifier_item_heavenly_dawn_chorus_mr.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_MAGICAL_RESISTANCE_BONUS}
end
function modifier_item_heavenly_dawn_chorus_mr.prototype.GetModifierMagicalResistanceBonus(self)
return self:GetStackCount()
end
modifier_item_heavenly_dawn_chorus_mr = __TS__Decorate(
modifier_item_heavenly_dawn_chorus_mr,
modifier_item_heavenly_dawn_chorus_mr,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_heavenly_dawn_chorus_mr"}
)
____exports.modifier_item_heavenly_dawn_chorus_mr = modifier_item_heavenly_dawn_chorus_mr
____exports.modifier_item_heavenly_dawn_chorus_display = __TS__Class()
local modifier_item_heavenly_dawn_chorus_display = ____exports.modifier_item_heavenly_dawn_chorus_display
modifier_item_heavenly_dawn_chorus_display.name = "modifier_item_heavenly_dawn_chorus_display"
modifier_item_heavenly_dawn_chorus_display.____file_path = "scripts/vscripts/items/blackshop/heavenly/item_blackshop_heavenly_dawn_chorus.lua"
__TS__ClassExtends(modifier_item_heavenly_dawn_chorus_display, BaseModifier)
function modifier_item_heavenly_dawn_chorus_display.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_heavenly_dawn_chorus_display.prototype.IsHidden(self)
return false
end
function modifier_item_heavenly_dawn_chorus_display.prototype.IsPurgable(self)
return false
end
function modifier_item_heavenly_dawn_chorus_display.prototype.GetTexture(self)
return "../items/blackshop/dawn_chorus"
end
modifier_item_heavenly_dawn_chorus_display = __TS__Decorate(
modifier_item_heavenly_dawn_chorus_display,
modifier_item_heavenly_dawn_chorus_display,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_heavenly_dawn_chorus_display"}
)
____exports.modifier_item_heavenly_dawn_chorus_display = modifier_item_heavenly_dawn_chorus_display
--- Рассветный хор — каждому союзнику в радиусе в стаки добавляет значения из KV.
____exports.item_blackshop_heavenly_dawn_chorus = __TS__Class()
local item_blackshop_heavenly_dawn_chorus = ____exports.item_blackshop_heavenly_dawn_chorus
item_blackshop_heavenly_dawn_chorus.name = "item_blackshop_heavenly_dawn_chorus"
item_blackshop_heavenly_dawn_chorus.____file_path = "scripts/vscripts/items/blackshop/heavenly/item_blackshop_heavenly_dawn_chorus.lua"
__TS__ClassExtends(item_blackshop_heavenly_dawn_chorus, BaseItem)
function item_blackshop_heavenly_dawn_chorus.prototype.GetAOERadius(self)
return self:GetSpecialValueFor("radius")
end
function item_blackshop_heavenly_dawn_chorus.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster or not caster:IsRealHero() then
return
end
local radius = self:GetSpecialValueFor("radius")
local srAdd = self:GetSpecialValueFor("status_resist")
local mrAdd = self:GetSpecialValueFor("magic_resist")
local ms = ____exports.modifier_item_heavenly_dawn_chorus_status.name
local mm = ____exports.modifier_item_heavenly_dawn_chorus_mr.name
local md = ____exports.modifier_item_heavenly_dawn_chorus_display.name
EmitSoundOn("Hero_Chen.HandOfGod", caster)
local allies = FindUnitsInRadius(
caster:GetTeamNumber(),
caster:GetAbsOrigin(),
nil,
radius,
DOTA_UNIT_TARGET_TEAM_FRIENDLY,
DOTA_UNIT_TARGET_HERO,
DOTA_UNIT_TARGET_FLAG_NOT_ILLUSIONS,
FIND_ANY_ORDER,
false
)
for ____, hero in ipairs(allies) do
do
if not hero or not IsValidEntity(hero) or not hero:IsAlive() then
goto __continue20
end
local m = hero:FindModifierByName(ms)
if m then
m:SetStackCount(m:GetStackCount() + srAdd)
else
hero:AddNewModifier(caster, self, ms, {}):SetStackCount(srAdd)
end
m = hero:FindModifierByName(mm)
if m then
m:SetStackCount(m:GetStackCount() + mrAdd)
else
hero:AddNewModifier(caster, self, mm, {}):SetStackCount(mrAdd)
end
local d = hero:FindModifierByName(md)
if d then
d:SetStackCount(d:GetStackCount() + 1)
else
hero:AddNewModifier(caster, self, md, {}):SetStackCount(1)
end
local pfx = ParticleManager:CreateParticle("particles/items_fx/healing_clarity.vpcf", PATTACH_ABSORIGIN_FOLLOW, hero)
ParticleManager:ReleaseParticleIndex(pfx)
end
::__continue20::
end
UTIL_Remove(self)
end
item_blackshop_heavenly_dawn_chorus = __TS__Decorate(
item_blackshop_heavenly_dawn_chorus,
item_blackshop_heavenly_dawn_chorus,
{registerAbility(nil)},
{kind = "class", name = "item_blackshop_heavenly_dawn_chorus"}
)
____exports.item_blackshop_heavenly_dawn_chorus = item_blackshop_heavenly_dawn_chorus
return ____exports
@@ -0,0 +1,345 @@
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local __TS__ObjectAssign = ____lualib.__TS__ObjectAssign
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 ____heal_tracker = require("utils.heal_tracker")
local HealWithBattlePass = ____heal_tracker.HealWithBattlePass
local function fontMercyReadParams(self, raw)
if not raw then
return nil
end
local t = raw
local heal_flat = t.heal_flat
local heal_max_hp_pct = t.heal_max_hp_pct
local radius = t.radius
local crisis_hp_pct = t.crisis_hp_pct
local hero_cooldown = t.hero_cooldown
if heal_flat == nil or heal_max_hp_pct == nil or radius == nil or crisis_hp_pct == nil or hero_cooldown == nil then
return nil
end
return {
heal_flat = heal_flat,
heal_max_hp_pct = heal_max_hp_pct,
radius = radius,
crisis_hp_pct = crisis_hp_pct,
hero_cooldown = hero_cooldown
}
end
local function fontMercyHasCrisisAlly(self, caster, v)
local allies = FindUnitsInRadius(
caster:GetTeamNumber(),
caster:GetAbsOrigin(),
nil,
v.radius,
DOTA_UNIT_TARGET_TEAM_FRIENDLY,
DOTA_UNIT_TARGET_HERO,
DOTA_UNIT_TARGET_FLAG_NOT_ILLUSIONS,
FIND_ANY_ORDER,
false
)
for ____, hero in ipairs(allies) do
do
if not hero or not IsValidEntity(hero) or not hero:IsAlive() then
goto __continue6
end
if hero:GetHealthPercent() < v.crisis_hp_pct then
return true
end
end
::__continue6::
end
return false
end
local function fontMercyPerformEffect(self, caster, v, refAbility)
local pctHeal = v.heal_max_hp_pct / 100
EmitSoundOn("Hero_Omniknight.GuardianAngel", caster)
local allies = FindUnitsInRadius(
caster:GetTeamNumber(),
caster:GetAbsOrigin(),
nil,
v.radius,
DOTA_UNIT_TARGET_TEAM_FRIENDLY,
DOTA_UNIT_TARGET_HERO,
DOTA_UNIT_TARGET_FLAG_NOT_ILLUSIONS,
FIND_ANY_ORDER,
false
)
for ____, hero in ipairs(allies) do
do
if not hero or not IsValidEntity(hero) or not hero:IsAlive() then
goto __continue11
end
local amount = v.heal_flat + hero:GetMaxHealth() * pctHeal
if amount > 0 then
if hero == caster then
hero:Heal(amount, refAbility)
else
HealWithBattlePass(
nil,
hero,
amount,
refAbility,
caster,
true
)
end
end
hero:Purge(
false,
true,
false,
false,
false
)
local pfx = ParticleManager:CreateParticle("particles/units/heroes/hero_omniknight/omniknight_purification_cast.vpcf", PATTACH_ABSORIGIN_FOLLOW, hero)
ParticleManager:ReleaseParticleIndex(pfx)
end
::__continue11::
end
end
--- Скрытая логика (как status/mr у рассветного хора): тикер и KV-заначка; без иконки в столбце бафов.
-- После каждого срабатывания купели следующий интервал: hero_cooldown / 2^(N1), N — номер уже случившегося прока.
____exports.modifier_item_heavenly_font_of_mercy_engine = __TS__Class()
local modifier_item_heavenly_font_of_mercy_engine = ____exports.modifier_item_heavenly_font_of_mercy_engine
modifier_item_heavenly_font_of_mercy_engine.name = "modifier_item_heavenly_font_of_mercy_engine"
modifier_item_heavenly_font_of_mercy_engine.____file_path = "scripts/vscripts/items/blackshop/heavenly/item_blackshop_heavenly_font_of_mercy.lua"
__TS__ClassExtends(modifier_item_heavenly_font_of_mercy_engine, BaseModifier)
function modifier_item_heavenly_font_of_mercy_engine.prototype.____constructor(self, ...)
BaseModifier.prototype.____constructor(self, ...)
self.cdUntil = 0
self.mercyProcCount = 0
end
function modifier_item_heavenly_font_of_mercy_engine.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_heavenly_font_of_mercy_engine.prototype.IsHidden(self)
return true
end
function modifier_item_heavenly_font_of_mercy_engine.prototype.IsPurgable(self)
return false
end
function modifier_item_heavenly_font_of_mercy_engine.prototype.OnCreated(self, params)
if not IsServer() then
return
end
local v = fontMercyReadParams(nil, params)
if not v then
return
end
self.values = v
local t = params
self.cdUntil = t.cd_until or 0
self.mercyProcCount = t.mercy_proc_count or 0
self:StartIntervalThink(____exports.modifier_item_heavenly_font_of_mercy_engine.thinkInterval)
self:refreshCooldownVisual()
end
function modifier_item_heavenly_font_of_mercy_engine.prototype.nextCooldownDuration(self)
local base = self.values.hero_cooldown
local exp = math.max(0, self.mercyProcCount - 1)
return math.max(____exports.modifier_item_heavenly_font_of_mercy_engine.cooldownFloor, base / 2 ^ exp)
end
function modifier_item_heavenly_font_of_mercy_engine.prototype.refreshCooldownVisual(self)
if not IsServer() then
return
end
local hero = self:GetParent()
if not hero or not IsValidEntity(hero) then
return
end
local name = ____exports.modifier_item_heavenly_font_of_mercy_cooldown.name
local now = GameRules:GetGameTime()
local remaining = self.cdUntil - now
local existing = hero:FindModifierByName(name)
if remaining <= 0.05 then
if existing then
existing:Destroy()
end
return
end
if existing then
existing:SetDuration(remaining, true)
else
local created = hero:AddNewModifier(
hero,
getModifierSourceAbility(nil, hero),
name,
{}
)
created:SetDuration(remaining, true)
end
end
function modifier_item_heavenly_font_of_mercy_engine.prototype.OnIntervalThink(self)
local hero = self:GetParent()
if not hero or not hero:IsRealHero() or not IsValidEntity(hero) or not hero:IsAlive() then
return
end
if not self.values then
return
end
local now = GameRules:GetGameTime()
if now < self.cdUntil then
return
end
if not fontMercyHasCrisisAlly(nil, hero, self.values) then
return
end
fontMercyPerformEffect(nil, hero, self.values, nil)
self.mercyProcCount = self.mercyProcCount + 1
self.cdUntil = now + self:nextCooldownDuration()
self:refreshCooldownVisual()
local disp = hero:FindModifierByName(____exports.modifier_item_heavenly_font_of_mercy_display.name)
if disp then
disp:SetStackCount(disp:GetStackCount() + 1)
end
end
modifier_item_heavenly_font_of_mercy_engine.thinkInterval = 0.35
modifier_item_heavenly_font_of_mercy_engine.cooldownFloor = 12
modifier_item_heavenly_font_of_mercy_engine = __TS__Decorate(
modifier_item_heavenly_font_of_mercy_engine,
modifier_item_heavenly_font_of_mercy_engine,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_heavenly_font_of_mercy_engine"}
)
____exports.modifier_item_heavenly_font_of_mercy_engine = modifier_item_heavenly_font_of_mercy_engine
--- Отображение оставшегося КД автопрока (круг на иконке бафа).
____exports.modifier_item_heavenly_font_of_mercy_cooldown = __TS__Class()
local modifier_item_heavenly_font_of_mercy_cooldown = ____exports.modifier_item_heavenly_font_of_mercy_cooldown
modifier_item_heavenly_font_of_mercy_cooldown.name = "modifier_item_heavenly_font_of_mercy_cooldown"
modifier_item_heavenly_font_of_mercy_cooldown.____file_path = "scripts/vscripts/items/blackshop/heavenly/item_blackshop_heavenly_font_of_mercy.lua"
__TS__ClassExtends(modifier_item_heavenly_font_of_mercy_cooldown, BaseModifier)
function modifier_item_heavenly_font_of_mercy_cooldown.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_heavenly_font_of_mercy_cooldown.prototype.IsHidden(self)
return false
end
function modifier_item_heavenly_font_of_mercy_cooldown.prototype.IsDebuff(self)
return false
end
function modifier_item_heavenly_font_of_mercy_cooldown.prototype.IsPurgable(self)
return false
end
function modifier_item_heavenly_font_of_mercy_cooldown.prototype.GetTexture(self)
return "../items/blackshop/holy_mercy"
end
function modifier_item_heavenly_font_of_mercy_cooldown.prototype.DeclareFunctions(self)
return {MODIFIER_EVENT_ON_DEATH}
end
function modifier_item_heavenly_font_of_mercy_cooldown.prototype.OnDeath(self, keys)
local parent = self:GetParent()
if not parent then
return
end
local eng = ____exports.modifier_item_heavenly_font_of_mercy_engine.name
local disp = ____exports.modifier_item_heavenly_font_of_mercy_display.name
local m = parent:FindModifierByName(eng)
if m then
m:Destroy()
end
local d = parent:FindModifierByName(disp)
if d then
d:Destroy()
end
end
modifier_item_heavenly_font_of_mercy_cooldown = __TS__Decorate(
modifier_item_heavenly_font_of_mercy_cooldown,
modifier_item_heavenly_font_of_mercy_cooldown,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_heavenly_font_of_mercy_cooldown"}
)
____exports.modifier_item_heavenly_font_of_mercy_cooldown = modifier_item_heavenly_font_of_mercy_cooldown
--- Иконка в UI (как modifier_item_heavenly_dawn_chorus_display).
____exports.modifier_item_heavenly_font_of_mercy_display = __TS__Class()
local modifier_item_heavenly_font_of_mercy_display = ____exports.modifier_item_heavenly_font_of_mercy_display
modifier_item_heavenly_font_of_mercy_display.name = "modifier_item_heavenly_font_of_mercy_display"
modifier_item_heavenly_font_of_mercy_display.____file_path = "scripts/vscripts/items/blackshop/heavenly/item_blackshop_heavenly_font_of_mercy.lua"
__TS__ClassExtends(modifier_item_heavenly_font_of_mercy_display, BaseModifier)
function modifier_item_heavenly_font_of_mercy_display.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_heavenly_font_of_mercy_display.prototype.IsHidden(self)
return false
end
function modifier_item_heavenly_font_of_mercy_display.prototype.IsPurgable(self)
return false
end
function modifier_item_heavenly_font_of_mercy_display.prototype.GetTexture(self)
return "../items/blackshop/holy_mercy"
end
modifier_item_heavenly_font_of_mercy_display = __TS__Decorate(
modifier_item_heavenly_font_of_mercy_display,
modifier_item_heavenly_font_of_mercy_display,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_heavenly_font_of_mercy_display"}
)
____exports.modifier_item_heavenly_font_of_mercy_display = modifier_item_heavenly_font_of_mercy_display
--- Купель милости — расходник; после применения как покров: вечные модификаторы + автопрок по условиям из KV.
____exports.item_blackshop_heavenly_font_of_mercy = __TS__Class()
local item_blackshop_heavenly_font_of_mercy = ____exports.item_blackshop_heavenly_font_of_mercy
item_blackshop_heavenly_font_of_mercy.name = "item_blackshop_heavenly_font_of_mercy"
item_blackshop_heavenly_font_of_mercy.____file_path = "scripts/vscripts/items/blackshop/heavenly/item_blackshop_heavenly_font_of_mercy.lua"
__TS__ClassExtends(item_blackshop_heavenly_font_of_mercy, BaseItem)
function item_blackshop_heavenly_font_of_mercy.prototype.Precache(context)
PrecacheResource("particle", "particles/units/heroes/hero_omniknight/omniknight_purification_cast.vpcf", context)
end
function item_blackshop_heavenly_font_of_mercy.prototype.GetAOERadius(self)
return self:GetSpecialValueFor("radius")
end
function item_blackshop_heavenly_font_of_mercy.prototype.HasEngine(self, hero)
return hero:HasModifier(____exports.modifier_item_heavenly_font_of_mercy_engine.name)
end
function item_blackshop_heavenly_font_of_mercy.prototype.BuildStoredFromKv(self)
return {
heal_flat = self:GetSpecialValueFor("heal_flat"),
heal_max_hp_pct = self:GetSpecialValueFor("heal_max_hp_pct"),
radius = self:GetSpecialValueFor("radius"),
crisis_hp_pct = self:GetSpecialValueFor("crisis_hp_pct"),
hero_cooldown = self:GetSpecialValueFor("hero_cooldown")
}
end
function item_blackshop_heavenly_font_of_mercy.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster or not caster:IsRealHero() then
return
end
if self:HasEngine(caster) then
return
end
local v = self:BuildStoredFromKv()
local heroCd = v.hero_cooldown
local now = GameRules:GetGameTime()
fontMercyPerformEffect(nil, caster, v, self)
local eng = ____exports.modifier_item_heavenly_font_of_mercy_engine.name
local dis = ____exports.modifier_item_heavenly_font_of_mercy_display.name
caster:AddNewModifier(
caster,
self,
eng,
__TS__ObjectAssign({}, v, {cd_until = now + heroCd, mercy_proc_count = 1})
)
local d = caster:FindModifierByName(dis)
if d then
d:SetStackCount(d:GetStackCount() + 1)
else
caster:AddNewModifier(caster, self, dis, {}):SetStackCount(1)
end
UTIL_Remove(self)
end
item_blackshop_heavenly_font_of_mercy = __TS__Decorate(
item_blackshop_heavenly_font_of_mercy,
item_blackshop_heavenly_font_of_mercy,
{registerAbility(nil)},
{kind = "class", name = "item_blackshop_heavenly_font_of_mercy"}
)
____exports.item_blackshop_heavenly_font_of_mercy = item_blackshop_heavenly_font_of_mercy
return ____exports
@@ -0,0 +1,37 @@
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 ____blackshop = require("blackshop")
local BlackShop = ____blackshop.BlackShop
____exports.item_blackshop_heavenly_reset_to_zero = __TS__Class()
local item_blackshop_heavenly_reset_to_zero = ____exports.item_blackshop_heavenly_reset_to_zero
item_blackshop_heavenly_reset_to_zero.name = "item_blackshop_heavenly_reset_to_zero"
item_blackshop_heavenly_reset_to_zero.____file_path = "scripts/vscripts/items/blackshop/heavenly/item_blackshop_heavenly_reset_to_zero.lua"
__TS__ClassExtends(item_blackshop_heavenly_reset_to_zero, BaseItem)
function item_blackshop_heavenly_reset_to_zero.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
BlackShop:getInstance():ResetUniqueItems()
EmitSoundOn("Hero_Phoenix.SuperNova.Explode", caster)
local particle = ParticleManager:CreateParticle("particles/units/heroes/hero_phoenix/phoenix_supernova_reborn.vpcf", PATTACH_ABSORIGIN_FOLLOW, caster)
ParticleManager:ReleaseParticleIndex(particle)
UTIL_Remove(self)
end
item_blackshop_heavenly_reset_to_zero = __TS__Decorate(
item_blackshop_heavenly_reset_to_zero,
item_blackshop_heavenly_reset_to_zero,
{registerAbility(nil)},
{kind = "class", name = "item_blackshop_heavenly_reset_to_zero"}
)
____exports.item_blackshop_heavenly_reset_to_zero = item_blackshop_heavenly_reset_to_zero
return ____exports
@@ -0,0 +1,160 @@
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
____exports.modifier_item_heavenly_sanctuary_veil_status = __TS__Class()
local modifier_item_heavenly_sanctuary_veil_status = ____exports.modifier_item_heavenly_sanctuary_veil_status
modifier_item_heavenly_sanctuary_veil_status.name = "modifier_item_heavenly_sanctuary_veil_status"
modifier_item_heavenly_sanctuary_veil_status.____file_path = "scripts/vscripts/items/blackshop/heavenly/item_blackshop_heavenly_sanctuary_veil.lua"
__TS__ClassExtends(modifier_item_heavenly_sanctuary_veil_status, BaseModifier)
function modifier_item_heavenly_sanctuary_veil_status.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_heavenly_sanctuary_veil_status.prototype.IsHidden(self)
return true
end
function modifier_item_heavenly_sanctuary_veil_status.prototype.IsPurgable(self)
return false
end
function modifier_item_heavenly_sanctuary_veil_status.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_STATUS_RESISTANCE_STACKING}
end
function modifier_item_heavenly_sanctuary_veil_status.prototype.GetModifierStatusResistanceStacking(self)
return self:GetStackCount()
end
modifier_item_heavenly_sanctuary_veil_status = __TS__Decorate(
modifier_item_heavenly_sanctuary_veil_status,
modifier_item_heavenly_sanctuary_veil_status,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_heavenly_sanctuary_veil_status"}
)
____exports.modifier_item_heavenly_sanctuary_veil_status = modifier_item_heavenly_sanctuary_veil_status
____exports.modifier_item_heavenly_sanctuary_veil_mr = __TS__Class()
local modifier_item_heavenly_sanctuary_veil_mr = ____exports.modifier_item_heavenly_sanctuary_veil_mr
modifier_item_heavenly_sanctuary_veil_mr.name = "modifier_item_heavenly_sanctuary_veil_mr"
modifier_item_heavenly_sanctuary_veil_mr.____file_path = "scripts/vscripts/items/blackshop/heavenly/item_blackshop_heavenly_sanctuary_veil.lua"
__TS__ClassExtends(modifier_item_heavenly_sanctuary_veil_mr, BaseModifier)
function modifier_item_heavenly_sanctuary_veil_mr.prototype.____constructor(self, ...)
BaseModifier.prototype.____constructor(self, ...)
self.totalMagicResistBonus = 0
end
function modifier_item_heavenly_sanctuary_veil_mr.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_heavenly_sanctuary_veil_mr.prototype.IsHidden(self)
return true
end
function modifier_item_heavenly_sanctuary_veil_mr.prototype.IsPurgable(self)
return false
end
function modifier_item_heavenly_sanctuary_veil_mr.prototype.addMagicResistFromAbilityValue(self, amount)
if not IsServer() then
return
end
local n = math.floor(amount)
if n <= 0 then
return
end
self.totalMagicResistBonus = self.totalMagicResistBonus + n
end
function modifier_item_heavenly_sanctuary_veil_mr.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_MAGICAL_RESISTANCE_BONUS}
end
function modifier_item_heavenly_sanctuary_veil_mr.prototype.GetModifierMagicalResistanceBonus(self)
return self.totalMagicResistBonus
end
modifier_item_heavenly_sanctuary_veil_mr = __TS__Decorate(
modifier_item_heavenly_sanctuary_veil_mr,
modifier_item_heavenly_sanctuary_veil_mr,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_heavenly_sanctuary_veil_mr"}
)
____exports.modifier_item_heavenly_sanctuary_veil_mr = modifier_item_heavenly_sanctuary_veil_mr
____exports.modifier_item_heavenly_sanctuary_veil_display = __TS__Class()
local modifier_item_heavenly_sanctuary_veil_display = ____exports.modifier_item_heavenly_sanctuary_veil_display
modifier_item_heavenly_sanctuary_veil_display.name = "modifier_item_heavenly_sanctuary_veil_display"
modifier_item_heavenly_sanctuary_veil_display.____file_path = "scripts/vscripts/items/blackshop/heavenly/item_blackshop_heavenly_sanctuary_veil.lua"
__TS__ClassExtends(modifier_item_heavenly_sanctuary_veil_display, BaseModifier)
function modifier_item_heavenly_sanctuary_veil_display.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_heavenly_sanctuary_veil_display.prototype.IsHidden(self)
return false
end
function modifier_item_heavenly_sanctuary_veil_display.prototype.IsPurgable(self)
return false
end
function modifier_item_heavenly_sanctuary_veil_display.prototype.GetTexture(self)
return "../items/blackshop/sanctuary_veil"
end
modifier_item_heavenly_sanctuary_veil_display = __TS__Decorate(
modifier_item_heavenly_sanctuary_veil_display,
modifier_item_heavenly_sanctuary_veil_display,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_heavenly_sanctuary_veil_display"}
)
____exports.modifier_item_heavenly_sanctuary_veil_display = modifier_item_heavenly_sanctuary_veil_display
--- Покров святилища — status_resist суммируется в стеке статус-модификатора; magic_resist копится в поле MR-модификатора при каждом касте (константы из KV).
____exports.item_blackshop_heavenly_sanctuary_veil = __TS__Class()
local item_blackshop_heavenly_sanctuary_veil = ____exports.item_blackshop_heavenly_sanctuary_veil
item_blackshop_heavenly_sanctuary_veil.name = "item_blackshop_heavenly_sanctuary_veil"
item_blackshop_heavenly_sanctuary_veil.____file_path = "scripts/vscripts/items/blackshop/heavenly/item_blackshop_heavenly_sanctuary_veil.lua"
__TS__ClassExtends(item_blackshop_heavenly_sanctuary_veil, BaseItem)
function item_blackshop_heavenly_sanctuary_veil.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster or not caster:IsRealHero() then
return
end
caster:Purge(
false,
true,
false,
false,
false
)
local srAdd = self:GetSpecialValueFor("status_resist")
local mrAdd = self:GetSpecialValueFor("magic_resist")
local ms = ____exports.modifier_item_heavenly_sanctuary_veil_status.name
local mm = ____exports.modifier_item_heavenly_sanctuary_veil_mr.name
local md = ____exports.modifier_item_heavenly_sanctuary_veil_display.name
local m = caster:FindModifierByName(ms)
if m then
m:SetStackCount(m:GetStackCount() + srAdd)
else
caster:AddNewModifier(caster, self, ms, {}):SetStackCount(srAdd)
end
m = caster:FindModifierByName(mm)
if m then
m:addMagicResistFromAbilityValue(mrAdd)
else
local mrMod = caster:AddNewModifier(caster, self, mm, {})
mrMod:addMagicResistFromAbilityValue(mrAdd)
end
local d = caster:FindModifierByName(md)
if d then
d:SetStackCount(d:GetStackCount() + 1)
else
caster:AddNewModifier(caster, self, md, {}):SetStackCount(1)
local pfx = ParticleManager:CreateParticle("particles/items_fx/black_king_bar_avatar.vpcf", PATTACH_ABSORIGIN_FOLLOW, caster)
ParticleManager:ReleaseParticleIndex(pfx)
end
EmitSoundOn("Hero_Omniknight.Repel", caster)
UTIL_Remove(self)
end
item_blackshop_heavenly_sanctuary_veil = __TS__Decorate(
item_blackshop_heavenly_sanctuary_veil,
item_blackshop_heavenly_sanctuary_veil,
{registerAbility(nil)},
{kind = "class", name = "item_blackshop_heavenly_sanctuary_veil"}
)
____exports.item_blackshop_heavenly_sanctuary_veil = item_blackshop_heavenly_sanctuary_veil
return ____exports
@@ -0,0 +1,38 @@
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local __TS__SourceMapTraceBack = ____lualib.__TS__SourceMapTraceBack
__TS__SourceMapTraceBack(debug.getinfo(1).short_src, {["8"] = 1,["9"] = 1,["10"] = 1,["11"] = 2,["12"] = 2,["13"] = 4,["14"] = 5,["15"] = 4,["16"] = 5,["17"] = 6,["18"] = 7,["21"] = 9,["22"] = 10,["25"] = 13,["26"] = 16,["27"] = 17,["28"] = 22,["29"] = 25,["30"] = 6,["31"] = 5,["32"] = 5,["33"] = 5,["34"] = 4,["37"] = 5});
local ____exports = {}
local ____dota_ts_adapter = require("lib.dota_ts_adapter")
local BaseItem = ____dota_ts_adapter.BaseItem
local registerAbility = ____dota_ts_adapter.registerAbility
local ____blackshop = require("blackshop")
local BlackShop = ____blackshop.BlackShop
____exports.item_reset_to_zero = __TS__Class()
local item_reset_to_zero = ____exports.item_reset_to_zero
item_reset_to_zero.name = "item_reset_to_zero"
__TS__ClassExtends(item_reset_to_zero, BaseItem)
function item_reset_to_zero.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
BlackShop:getInstance():ResetUniqueItems()
EmitSoundOn("Hero_Phoenix.SuperNova.Explode", caster)
local particle = ParticleManager:CreateParticle("particles/units/heroes/hero_phoenix/phoenix_supernova_reborn.vpcf", PATTACH_ABSORIGIN_FOLLOW, caster)
ParticleManager:ReleaseParticleIndex(particle)
UTIL_Remove(self)
end
item_reset_to_zero = __TS__Decorate(
item_reset_to_zero,
item_reset_to_zero,
{registerAbility(nil)},
{kind = "class", name = "item_reset_to_zero"}
)
____exports.item_reset_to_zero = item_reset_to_zero
return ____exports
@@ -0,0 +1,138 @@
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
--- Скрытый стак дальности каста — число в стаке = суммарный бонус (реплицируется на клиент для HUD).
____exports.modifier_item_astral_anchor_cast = __TS__Class()
local modifier_item_astral_anchor_cast = ____exports.modifier_item_astral_anchor_cast
modifier_item_astral_anchor_cast.name = "modifier_item_astral_anchor_cast"
modifier_item_astral_anchor_cast.____file_path = "scripts/vscripts/items/blackshop/legendary/item_blackshop_legendary_astral_anchor.lua"
__TS__ClassExtends(modifier_item_astral_anchor_cast, BaseModifier)
function modifier_item_astral_anchor_cast.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_astral_anchor_cast.prototype.IsHidden(self)
return true
end
function modifier_item_astral_anchor_cast.prototype.IsPurgable(self)
return false
end
function modifier_item_astral_anchor_cast.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_CAST_RANGE_BONUS_STACKING}
end
function modifier_item_astral_anchor_cast.prototype.GetModifierCastRangeBonusStacking(self)
return self:GetStackCount()
end
modifier_item_astral_anchor_cast = __TS__Decorate(
modifier_item_astral_anchor_cast,
modifier_item_astral_anchor_cast,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_astral_anchor_cast"}
)
____exports.modifier_item_astral_anchor_cast = modifier_item_astral_anchor_cast
--- Скрытый стак штрафа к скорости — стак = сумма процентов из KV.
____exports.modifier_item_astral_anchor_slow = __TS__Class()
local modifier_item_astral_anchor_slow = ____exports.modifier_item_astral_anchor_slow
modifier_item_astral_anchor_slow.name = "modifier_item_astral_anchor_slow"
modifier_item_astral_anchor_slow.____file_path = "scripts/vscripts/items/blackshop/legendary/item_blackshop_legendary_astral_anchor.lua"
__TS__ClassExtends(modifier_item_astral_anchor_slow, BaseModifier)
function modifier_item_astral_anchor_slow.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_astral_anchor_slow.prototype.IsHidden(self)
return true
end
function modifier_item_astral_anchor_slow.prototype.IsPurgable(self)
return false
end
function modifier_item_astral_anchor_slow.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE}
end
function modifier_item_astral_anchor_slow.prototype.GetModifierMoveSpeedBonus_Percentage(self)
return -self:GetStackCount()
end
modifier_item_astral_anchor_slow = __TS__Decorate(
modifier_item_astral_anchor_slow,
modifier_item_astral_anchor_slow,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_astral_anchor_slow"}
)
____exports.modifier_item_astral_anchor_slow = modifier_item_astral_anchor_slow
--- Видимый маркер якоря (иконка; статы в скрытых модификаторах выше).
____exports.modifier_item_astral_anchor = __TS__Class()
local modifier_item_astral_anchor = ____exports.modifier_item_astral_anchor
modifier_item_astral_anchor.name = "modifier_item_astral_anchor"
modifier_item_astral_anchor.____file_path = "scripts/vscripts/items/blackshop/legendary/item_blackshop_legendary_astral_anchor.lua"
__TS__ClassExtends(modifier_item_astral_anchor, BaseModifier)
function modifier_item_astral_anchor.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_astral_anchor.prototype.IsHidden(self)
return false
end
function modifier_item_astral_anchor.prototype.IsPurgable(self)
return false
end
function modifier_item_astral_anchor.prototype.GetTexture(self)
return "../items/blackshop/astral_anchor"
end
modifier_item_astral_anchor = __TS__Decorate(
modifier_item_astral_anchor,
modifier_item_astral_anchor,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_astral_anchor"}
)
____exports.modifier_item_astral_anchor = modifier_item_astral_anchor
--- Якорь звёздной тверди — дальность кастов ценой скорости (каждое применение суммируется).
____exports.item_blackshop_legendary_astral_anchor = __TS__Class()
local item_blackshop_legendary_astral_anchor = ____exports.item_blackshop_legendary_astral_anchor
item_blackshop_legendary_astral_anchor.name = "item_blackshop_legendary_astral_anchor"
item_blackshop_legendary_astral_anchor.____file_path = "scripts/vscripts/items/blackshop/legendary/item_blackshop_legendary_astral_anchor.lua"
__TS__ClassExtends(item_blackshop_legendary_astral_anchor, BaseItem)
function item_blackshop_legendary_astral_anchor.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local castRange = self:GetSpecialValueFor("cast_range_bonus")
local moveSlowPct = self:GetSpecialValueFor("move_speed_loss_pct")
local castMod = ____exports.modifier_item_astral_anchor_cast.name
local slowMod = ____exports.modifier_item_astral_anchor_slow.name
local dispMod = ____exports.modifier_item_astral_anchor.name
local m = caster:FindModifierByName(castMod)
if m then
m:SetStackCount(m:GetStackCount() + castRange)
else
caster:AddNewModifier(caster, self, castMod, {}):SetStackCount(castRange)
end
m = caster:FindModifierByName(slowMod)
if m then
m:SetStackCount(m:GetStackCount() + moveSlowPct)
else
caster:AddNewModifier(caster, self, slowMod, {}):SetStackCount(moveSlowPct)
end
m = caster:FindModifierByName(dispMod)
if m then
m:SetStackCount(m:GetStackCount() + 1)
else
caster:AddNewModifier(caster, self, dispMod, {}):SetStackCount(1)
end
UTIL_Remove(self)
end
item_blackshop_legendary_astral_anchor = __TS__Decorate(
item_blackshop_legendary_astral_anchor,
item_blackshop_legendary_astral_anchor,
{registerAbility(nil)},
{kind = "class", name = "item_blackshop_legendary_astral_anchor"}
)
____exports.item_blackshop_legendary_astral_anchor = item_blackshop_legendary_astral_anchor
return ____exports
@@ -0,0 +1,39 @@
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 ____luck = require("utils.luck")
local addLuck = ____luck.addLuck
--- Жребий судьбы — навсегда повышает удачу героя (расходуется).
____exports.item_blackshop_legendary_fated_die = __TS__Class()
local item_blackshop_legendary_fated_die = ____exports.item_blackshop_legendary_fated_die
item_blackshop_legendary_fated_die.name = "item_blackshop_legendary_fated_die"
item_blackshop_legendary_fated_die.____file_path = "scripts/vscripts/items/blackshop/legendary/item_blackshop_legendary_fated_die.lua"
__TS__ClassExtends(item_blackshop_legendary_fated_die, BaseItem)
function item_blackshop_legendary_fated_die.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster or not caster:IsRealHero() then
return
end
local luck = self:GetSpecialValueFor("luck_bonus")
addLuck(nil, caster, luck)
EmitSoundOn("DOTA_Item.Hand_Of_Midas", caster)
local pfx = ParticleManager:CreateParticle("particles/items2_fx/veil_of_discord.vpcf", PATTACH_ABSORIGIN_FOLLOW, caster)
ParticleManager:ReleaseParticleIndex(pfx)
UTIL_Remove(self)
end
item_blackshop_legendary_fated_die = __TS__Decorate(
item_blackshop_legendary_fated_die,
item_blackshop_legendary_fated_die,
{registerAbility(nil)},
{kind = "class", name = "item_blackshop_legendary_fated_die"}
)
____exports.item_blackshop_legendary_fated_die = item_blackshop_legendary_fated_die
return ____exports
@@ -0,0 +1,167 @@
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
____exports.item_blackshop_legendary_fire_summoner = __TS__Class()
local item_blackshop_legendary_fire_summoner = ____exports.item_blackshop_legendary_fire_summoner
item_blackshop_legendary_fire_summoner.name = "item_blackshop_legendary_fire_summoner"
item_blackshop_legendary_fire_summoner.____file_path = "scripts/vscripts/items/blackshop/legendary/item_blackshop_legendary_fire_summoner.lua"
__TS__ClassExtends(item_blackshop_legendary_fire_summoner, BaseItem)
function item_blackshop_legendary_fire_summoner.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local demon = CreateUnitByName(
"npc_dota_fire_summon",
caster:GetAbsOrigin() + RandomVector(100),
true,
caster,
caster,
caster:GetTeamNumber()
)
demon:SetOwner(caster)
demon:SetBaseDamageMin(caster:GetBaseDamageMin())
demon:SetBaseDamageMax(caster:GetBaseDamageMax())
demon:SetBaseMoveSpeed(caster:GetBaseMoveSpeed() + 65)
demon:AddNewModifier(
caster,
getModifierSourceAbility(nil, caster),
"modifier_fire_summoner_demon",
{}
)
demon:AddAbility("ability_stacking_crit"):SetLevel(1)
caster:EmitSound("Item.TomeOfKnowledge")
if self:GetCurrentCharges() <= self:GetInitialCharges() then
UTIL_Remove(self)
return
end
self:SetCurrentCharges(self:GetCurrentCharges() - self:GetInitialCharges())
end
item_blackshop_legendary_fire_summoner = __TS__Decorate(
item_blackshop_legendary_fire_summoner,
item_blackshop_legendary_fire_summoner,
{registerAbility(nil)},
{kind = "class", name = "item_blackshop_legendary_fire_summoner"}
)
____exports.item_blackshop_legendary_fire_summoner = item_blackshop_legendary_fire_summoner
____exports.modifier_fire_summoner_demon = __TS__Class()
local modifier_fire_summoner_demon = ____exports.modifier_fire_summoner_demon
modifier_fire_summoner_demon.name = "modifier_fire_summoner_demon"
modifier_fire_summoner_demon.____file_path = "scripts/vscripts/items/blackshop/legendary/item_blackshop_legendary_fire_summoner.lua"
__TS__ClassExtends(modifier_fire_summoner_demon, BaseModifier)
function modifier_fire_summoner_demon.prototype.OnCreated(self)
if not IsServer() then
return
end
self:StartIntervalThink(0.1)
self:OnIntervalThink()
end
function modifier_fire_summoner_demon.prototype.IsPurgable(self)
return false
end
function modifier_fire_summoner_demon.prototype.GetTexture(self)
return "../items/blackshop/fire_summoner"
end
function modifier_fire_summoner_demon.prototype.GetRealOwner(self)
local parent = self:GetParent()
if not parent then
return nil
end
if parent:IsRealHero() then
return parent
end
local owner = parent:GetOwner()
if not owner then
return nil
end
local ownerUnit = owner
if ownerUnit:IsRealHero() then
return ownerUnit
end
return nil
end
function modifier_fire_summoner_demon.prototype.OnIntervalThink(self)
if not IsServer() then
return
end
local parent = self:GetParent()
if not parent then
return
end
local realOwner = self:GetRealOwner()
if not realOwner then
return
end
local critModifier = realOwner:FindModifierByName("modifier_stacking_crit")
if critModifier then
local parentCritModifier = parent:FindModifierByName("modifier_stacking_crit")
if parentCritModifier then
parentCritModifier.critModifiers = critModifier.critModifiers
end
end
parent:SetBaseAttackTime(realOwner:GetBaseAttackTime())
parent:SetBaseDamageMin(realOwner:GetBaseDamageMin())
parent:SetBaseDamageMax(realOwner:GetBaseDamageMax())
parent:SetBaseMoveSpeed(realOwner:GetBaseMoveSpeed())
local distanceToOwner = (parent:GetAbsOrigin() - realOwner:GetAbsOrigin()):Length2D()
if distanceToOwner > 160 then
parent:MoveToPosition(toVectorWS(
nil,
realOwner:GetAbsOrigin() + RandomVector(200)
))
end
if distanceToOwner > 400 then
FindClearSpaceForUnit(
parent,
toVectorWS(
nil,
realOwner:GetAbsOrigin() + RandomVector(200)
),
true
)
end
if distanceToOwner <= 300 and realOwner:IsAlive() then
local enemies = FindUnitsInRadius(
parent:GetTeamNumber(),
parent:GetAbsOrigin(),
nil,
500,
DOTA_UNIT_TARGET_TEAM_ENEMY,
bit.bor(DOTA_UNIT_TARGET_BASIC, DOTA_UNIT_TARGET_HERO),
DOTA_UNIT_TARGET_FLAG_NONE,
FIND_CLOSEST,
false
)
if #enemies > 0 then
enemies[1]:MoveToTargetToAttack(realOwner)
parent:MoveToTargetToAttack(enemies[1])
end
end
end
function modifier_fire_summoner_demon.prototype.CheckState(self)
return {
[MODIFIER_STATE_NO_HEALTH_BAR] = true,
[MODIFIER_STATE_INVULNERABLE] = true,
[MODIFIER_STATE_NO_UNIT_COLLISION] = true,
[MODIFIER_STATE_NO_TEAM_SELECT] = true,
[MODIFIER_STATE_NO_TEAM_MOVE_TO] = true
}
end
modifier_fire_summoner_demon = __TS__Decorate(
modifier_fire_summoner_demon,
modifier_fire_summoner_demon,
{registerModifier(nil)},
{kind = "class", name = "modifier_fire_summoner_demon"}
)
____exports.modifier_fire_summoner_demon = modifier_fire_summoner_demon
return ____exports
@@ -0,0 +1,77 @@
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
--- Осколок прародины — легендарка: крупный прирост ко всем атрибутам за применение (стакается).
____exports.item_blackshop_legendary_primordial_shard = __TS__Class()
local item_blackshop_legendary_primordial_shard = ____exports.item_blackshop_legendary_primordial_shard
item_blackshop_legendary_primordial_shard.name = "item_blackshop_legendary_primordial_shard"
item_blackshop_legendary_primordial_shard.____file_path = "scripts/vscripts/items/blackshop/legendary/item_blackshop_legendary_primordial_shard.lua"
__TS__ClassExtends(item_blackshop_legendary_primordial_shard, BaseItem)
function item_blackshop_legendary_primordial_shard.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local stats = self:GetSpecialValueFor("bonus_all")
if caster:HasModifier("modifier_item_primordial_shard") then
local m = caster:FindModifierByName("modifier_item_primordial_shard")
m:SetStackCount(m:GetStackCount() + stats)
else
caster:AddNewModifier(caster, self, "modifier_item_primordial_shard", {}):SetStackCount(stats)
end
UTIL_Remove(self)
end
item_blackshop_legendary_primordial_shard = __TS__Decorate(
item_blackshop_legendary_primordial_shard,
item_blackshop_legendary_primordial_shard,
{registerAbility(nil)},
{kind = "class", name = "item_blackshop_legendary_primordial_shard"}
)
____exports.item_blackshop_legendary_primordial_shard = item_blackshop_legendary_primordial_shard
____exports.modifier_item_primordial_shard = __TS__Class()
local modifier_item_primordial_shard = ____exports.modifier_item_primordial_shard
modifier_item_primordial_shard.name = "modifier_item_primordial_shard"
modifier_item_primordial_shard.____file_path = "scripts/vscripts/items/blackshop/legendary/item_blackshop_legendary_primordial_shard.lua"
__TS__ClassExtends(modifier_item_primordial_shard, BaseModifier)
function modifier_item_primordial_shard.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_primordial_shard.prototype.IsHidden(self)
return false
end
function modifier_item_primordial_shard.prototype.IsPurgable(self)
return false
end
function modifier_item_primordial_shard.prototype.GetTexture(self)
return "../items/blackshop/primordial_shard"
end
function modifier_item_primordial_shard.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_STATS_AGILITY_BONUS, MODIFIER_PROPERTY_STATS_INTELLECT_BONUS, MODIFIER_PROPERTY_STATS_STRENGTH_BONUS}
end
function modifier_item_primordial_shard.prototype.GetModifierBonusStats_Agility(self)
return self:GetStackCount()
end
function modifier_item_primordial_shard.prototype.GetModifierBonusStats_Intellect(self)
return self:GetStackCount()
end
function modifier_item_primordial_shard.prototype.GetModifierBonusStats_Strength(self)
return self:GetStackCount()
end
modifier_item_primordial_shard = __TS__Decorate(
modifier_item_primordial_shard,
modifier_item_primordial_shard,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_primordial_shard"}
)
____exports.modifier_item_primordial_shard = modifier_item_primordial_shard
return ____exports
@@ -0,0 +1,63 @@
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
____exports.item_blackshop_legendary_restock = __TS__Class()
local item_blackshop_legendary_restock = ____exports.item_blackshop_legendary_restock
item_blackshop_legendary_restock.name = "item_blackshop_legendary_restock"
item_blackshop_legendary_restock.____file_path = "scripts/vscripts/items/blackshop/legendary/item_blackshop_legendary_restock.lua"
__TS__ClassExtends(item_blackshop_legendary_restock, BaseItem)
function item_blackshop_legendary_restock.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local heroes = HeroList:GetAllHeroes()
for ____, hero in ipairs(heroes) do
if hero:IsRealHero() then
hero:AddNewModifier(caster, self, "modifier_item_restock", {})
end
end
UTIL_Remove(self)
end
item_blackshop_legendary_restock = __TS__Decorate(
item_blackshop_legendary_restock,
item_blackshop_legendary_restock,
{registerAbility(nil)},
{kind = "class", name = "item_blackshop_legendary_restock"}
)
____exports.item_blackshop_legendary_restock = item_blackshop_legendary_restock
____exports.modifier_item_restock = __TS__Class()
local modifier_item_restock = ____exports.modifier_item_restock
modifier_item_restock.name = "modifier_item_restock"
modifier_item_restock.____file_path = "scripts/vscripts/items/blackshop/legendary/item_blackshop_legendary_restock.lua"
__TS__ClassExtends(modifier_item_restock, BaseModifier)
function modifier_item_restock.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_restock.prototype.IsPurgable(self)
return false
end
function modifier_item_restock.prototype.IsHidden(self)
return false
end
function modifier_item_restock.prototype.GetTexture(self)
return "../items/blackshop/restock"
end
modifier_item_restock = __TS__Decorate(
modifier_item_restock,
modifier_item_restock,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_restock"}
)
____exports.modifier_item_restock = modifier_item_restock
return ____exports
@@ -0,0 +1,123 @@
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
--- Скрытый стак усиления магии — стак = проценты spell amp (реплицируется на клиент).
____exports.modifier_item_twilight_mirror_spell = __TS__Class()
local modifier_item_twilight_mirror_spell = ____exports.modifier_item_twilight_mirror_spell
modifier_item_twilight_mirror_spell.name = "modifier_item_twilight_mirror_spell"
modifier_item_twilight_mirror_spell.____file_path = "scripts/vscripts/items/blackshop/legendary/item_blackshop_legendary_twilight_mirror.lua"
__TS__ClassExtends(modifier_item_twilight_mirror_spell, BaseModifier)
function modifier_item_twilight_mirror_spell.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_twilight_mirror_spell.prototype.IsHidden(self)
return true
end
function modifier_item_twilight_mirror_spell.prototype.IsPurgable(self)
return false
end
function modifier_item_twilight_mirror_spell.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_SPELL_AMPLIFY_PERCENTAGE}
end
function modifier_item_twilight_mirror_spell.prototype.GetModifierSpellAmplify_Percentage(self)
return self:GetStackCount()
end
modifier_item_twilight_mirror_spell = __TS__Decorate(
modifier_item_twilight_mirror_spell,
modifier_item_twilight_mirror_spell,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_twilight_mirror_spell"}
)
____exports.modifier_item_twilight_mirror_spell = modifier_item_twilight_mirror_spell
--- Скрытый стак входящего урона — стак = %% доп. получаемого урона.
____exports.modifier_item_twilight_mirror_incoming = __TS__Class()
local modifier_item_twilight_mirror_incoming = ____exports.modifier_item_twilight_mirror_incoming
modifier_item_twilight_mirror_incoming.name = "modifier_item_twilight_mirror_incoming"
modifier_item_twilight_mirror_incoming.____file_path = "scripts/vscripts/items/blackshop/legendary/item_blackshop_legendary_twilight_mirror.lua"
__TS__ClassExtends(modifier_item_twilight_mirror_incoming, BaseModifier)
function modifier_item_twilight_mirror_incoming.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_twilight_mirror_incoming.prototype.IsHidden(self)
return true
end
function modifier_item_twilight_mirror_incoming.prototype.IsPurgable(self)
return false
end
function modifier_item_twilight_mirror_incoming.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_INCOMING_DAMAGE_PERCENTAGE}
end
function modifier_item_twilight_mirror_incoming.prototype.GetModifierIncomingDamage_Percentage(self)
return self:GetStackCount()
end
modifier_item_twilight_mirror_incoming = __TS__Decorate(
modifier_item_twilight_mirror_incoming,
modifier_item_twilight_mirror_incoming,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_twilight_mirror_incoming"}
)
____exports.modifier_item_twilight_mirror_incoming = modifier_item_twilight_mirror_incoming
--- Видимый маркер зеркала (без статов).
____exports.modifier_item_twilight_mirror = __TS__Class()
local modifier_item_twilight_mirror = ____exports.modifier_item_twilight_mirror
modifier_item_twilight_mirror.name = "modifier_item_twilight_mirror"
modifier_item_twilight_mirror.____file_path = "scripts/vscripts/items/blackshop/legendary/item_blackshop_legendary_twilight_mirror.lua"
__TS__ClassExtends(modifier_item_twilight_mirror, BaseModifier)
function modifier_item_twilight_mirror.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_twilight_mirror.prototype.IsHidden(self)
return false
end
function modifier_item_twilight_mirror.prototype.IsPurgable(self)
return false
end
function modifier_item_twilight_mirror.prototype.GetTexture(self)
return "../items/blackshop/twilight_mirror"
end
modifier_item_twilight_mirror = __TS__Decorate(
modifier_item_twilight_mirror,
modifier_item_twilight_mirror,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_twilight_mirror"}
)
____exports.modifier_item_twilight_mirror = modifier_item_twilight_mirror
--- Зеркало сумерек — огромный усилитель магии ценой уязвимости (одно применение, навсегда).
____exports.item_blackshop_legendary_twilight_mirror = __TS__Class()
local item_blackshop_legendary_twilight_mirror = ____exports.item_blackshop_legendary_twilight_mirror
item_blackshop_legendary_twilight_mirror.name = "item_blackshop_legendary_twilight_mirror"
item_blackshop_legendary_twilight_mirror.____file_path = "scripts/vscripts/items/blackshop/legendary/item_blackshop_legendary_twilight_mirror.lua"
__TS__ClassExtends(item_blackshop_legendary_twilight_mirror, BaseItem)
function item_blackshop_legendary_twilight_mirror.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
if caster:HasModifier(____exports.modifier_item_twilight_mirror.name) then
return
end
local spell = self:GetSpecialValueFor("spell_amp_pct")
local inc = self:GetSpecialValueFor("incoming_damage_pct")
caster:AddNewModifier(caster, self, ____exports.modifier_item_twilight_mirror_spell.name, {}):SetStackCount(spell)
caster:AddNewModifier(caster, self, ____exports.modifier_item_twilight_mirror_incoming.name, {}):SetStackCount(inc)
caster:AddNewModifier(caster, self, ____exports.modifier_item_twilight_mirror.name, {}):SetStackCount(1)
UTIL_Remove(self)
end
item_blackshop_legendary_twilight_mirror = __TS__Decorate(
item_blackshop_legendary_twilight_mirror,
item_blackshop_legendary_twilight_mirror,
{registerAbility(nil)},
{kind = "class", name = "item_blackshop_legendary_twilight_mirror"}
)
____exports.item_blackshop_legendary_twilight_mirror = item_blackshop_legendary_twilight_mirror
return ____exports
@@ -0,0 +1,150 @@
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local __TS__SourceMapTraceBack = ____lualib.__TS__SourceMapTraceBack
__TS__SourceMapTraceBack(debug.getinfo(1).short_src, {["8"] = 1,["9"] = 1,["10"] = 1,["11"] = 1,["12"] = 1,["13"] = 3,["14"] = 4,["15"] = 3,["16"] = 4,["17"] = 5,["18"] = 6,["21"] = 8,["22"] = 9,["25"] = 12,["26"] = 12,["27"] = 12,["28"] = 12,["29"] = 12,["30"] = 12,["31"] = 12,["32"] = 12,["33"] = 13,["34"] = 14,["35"] = 15,["36"] = 16,["37"] = 18,["38"] = 19,["39"] = 20,["40"] = 22,["41"] = 23,["44"] = 26,["45"] = 5,["46"] = 4,["47"] = 4,["48"] = 4,["49"] = 3,["52"] = 4,["53"] = 30,["54"] = 31,["55"] = 30,["56"] = 31,["57"] = 32,["58"] = 33,["61"] = 34,["62"] = 35,["63"] = 32,["64"] = 38,["65"] = 39,["66"] = 40,["67"] = 40,["69"] = 43,["70"] = 43,["72"] = 46,["73"] = 47,["74"] = 47,["76"] = 50,["77"] = 51,["78"] = 51,["80"] = 53,["81"] = 38,["82"] = 56,["83"] = 57,["86"] = 59,["87"] = 60,["90"] = 63,["91"] = 64,["94"] = 67,["95"] = 68,["96"] = 69,["97"] = 70,["98"] = 72,["101"] = 76,["102"] = 77,["103"] = 78,["104"] = 79,["105"] = 82,["106"] = 83,["107"] = 84,["109"] = 86,["110"] = 87,["111"] = 87,["112"] = 87,["113"] = 87,["114"] = 87,["116"] = 91,["117"] = 92,["118"] = 92,["119"] = 92,["120"] = 92,["121"] = 92,["122"] = 92,["123"] = 92,["124"] = 92,["125"] = 92,["126"] = 92,["127"] = 92,["128"] = 104,["129"] = 105,["130"] = 106,["133"] = 56,["134"] = 111,["135"] = 112,["136"] = 112,["137"] = 112,["138"] = 112,["139"] = 112,["140"] = 112,["141"] = 112,["142"] = 111,["143"] = 31,["144"] = 31,["145"] = 31,["146"] = 30,["149"] = 31});
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
____exports.item_fire_summoner = __TS__Class()
local item_fire_summoner = ____exports.item_fire_summoner
item_fire_summoner.name = "item_fire_summoner"
__TS__ClassExtends(item_fire_summoner, BaseItem)
function item_fire_summoner.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local demon = CreateUnitByName(
"npc_dota_fire_summon",
caster:GetAbsOrigin() + RandomVector(100),
true,
caster,
caster,
caster:GetTeamNumber()
)
demon:SetOwner(caster)
demon:SetBaseDamageMin(caster:GetBaseDamageMin())
demon:SetBaseDamageMax(caster:GetBaseDamageMax())
demon:SetBaseMoveSpeed(caster:GetBaseMoveSpeed() + 65)
demon:AddNewModifier(caster, nil, "modifier_fire_summoner_demon", {})
demon:AddAbility("ability_stacking_crit"):SetLevel(1)
caster:EmitSound("Item.TomeOfKnowledge")
if self:GetCurrentCharges() <= self:GetInitialCharges() then
UTIL_Remove(self)
return
end
self:SetCurrentCharges(self:GetCurrentCharges() - self:GetInitialCharges())
end
item_fire_summoner = __TS__Decorate(
item_fire_summoner,
item_fire_summoner,
{registerAbility(nil)},
{kind = "class", name = "item_fire_summoner"}
)
____exports.item_fire_summoner = item_fire_summoner
____exports.modifier_fire_summoner_demon = __TS__Class()
local modifier_fire_summoner_demon = ____exports.modifier_fire_summoner_demon
modifier_fire_summoner_demon.name = "modifier_fire_summoner_demon"
__TS__ClassExtends(modifier_fire_summoner_demon, BaseModifier)
function modifier_fire_summoner_demon.prototype.OnCreated(self)
if not IsServer() then
return
end
self:StartIntervalThink(0.1)
self:OnIntervalThink()
end
function modifier_fire_summoner_demon.prototype.GetRealOwner(self)
local parent = self:GetParent()
if not parent then
return nil
end
if parent:IsRealHero() then
return parent
end
local owner = parent:GetOwner()
if not owner then
return nil
end
local ownerUnit = owner
if ownerUnit:IsRealHero() then
return ownerUnit
end
return nil
end
function modifier_fire_summoner_demon.prototype.OnIntervalThink(self)
if not IsServer() then
return
end
local parent = self:GetParent()
if not parent then
return
end
local realOwner = self:GetRealOwner()
if not realOwner then
return
end
local critModifier = realOwner:FindModifierByName("modifier_stacking_crit")
if critModifier then
local parentCritModifier = parent:FindModifierByName("modifier_stacking_crit")
if parentCritModifier then
parentCritModifier.critModifiers = critModifier.critModifiers
end
end
parent:SetBaseAttackTime(realOwner:GetBaseAttackTime())
parent:SetBaseDamageMin(realOwner:GetBaseDamageMin())
parent:SetBaseDamageMax(realOwner:GetBaseDamageMax())
parent:SetBaseMoveSpeed(realOwner:GetBaseMoveSpeed())
local distanceToOwner = (parent:GetAbsOrigin() - realOwner:GetAbsOrigin()):Length2D()
if distanceToOwner > 160 then
parent:MoveToPosition(realOwner:GetAbsOrigin() + RandomVector(200))
end
if distanceToOwner > 400 then
FindClearSpaceForUnit(
parent,
realOwner:GetAbsOrigin() + RandomVector(200),
true
)
end
if distanceToOwner <= 300 and realOwner:IsAlive() then
local enemies = FindUnitsInRadius(
parent:GetTeamNumber(),
parent:GetAbsOrigin(),
nil,
500,
DOTA_UNIT_TARGET_TEAM_ENEMY,
bit.bor(DOTA_UNIT_TARGET_BASIC, DOTA_UNIT_TARGET_HERO),
DOTA_UNIT_TARGET_FLAG_NONE,
FIND_CLOSEST,
false
)
if #enemies > 0 then
enemies[1]:MoveToTargetToAttack(realOwner)
parent:MoveToTargetToAttack(enemies[1])
end
end
end
function modifier_fire_summoner_demon.prototype.CheckState(self)
return {
[MODIFIER_STATE_NO_HEALTH_BAR] = true,
[MODIFIER_STATE_INVULNERABLE] = true,
[MODIFIER_STATE_NO_UNIT_COLLISION] = true,
[MODIFIER_STATE_NO_TEAM_SELECT] = true,
[MODIFIER_STATE_NO_TEAM_MOVE_TO] = true
}
end
modifier_fire_summoner_demon = __TS__Decorate(
modifier_fire_summoner_demon,
modifier_fire_summoner_demon,
{registerModifier(nil)},
{kind = "class", name = "modifier_fire_summoner_demon"}
)
____exports.modifier_fire_summoner_demon = modifier_fire_summoner_demon
return ____exports
@@ -0,0 +1,60 @@
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local __TS__SourceMapTraceBack = ____lualib.__TS__SourceMapTraceBack
__TS__SourceMapTraceBack(debug.getinfo(1).short_src, {["8"] = 1,["9"] = 1,["10"] = 1,["11"] = 1,["12"] = 1,["13"] = 4,["14"] = 5,["15"] = 4,["16"] = 5,["17"] = 6,["18"] = 7,["21"] = 9,["22"] = 10,["25"] = 13,["26"] = 16,["27"] = 17,["28"] = 19,["31"] = 22,["32"] = 6,["33"] = 5,["34"] = 5,["35"] = 5,["36"] = 4,["39"] = 5,["40"] = 26,["41"] = 27,["42"] = 26,["43"] = 27,["44"] = 28,["45"] = 29,["46"] = 28,["47"] = 31,["48"] = 32,["49"] = 31,["50"] = 34,["51"] = 35,["52"] = 34,["53"] = 27,["54"] = 27,["55"] = 27,["56"] = 26,["59"] = 27});
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
____exports.item_restock = __TS__Class()
local item_restock = ____exports.item_restock
item_restock.name = "item_restock"
__TS__ClassExtends(item_restock, BaseItem)
function item_restock.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local heroes = HeroList:GetAllHeroes()
for ____, hero in ipairs(heroes) do
if hero:IsRealHero() then
hero:AddNewModifier(caster, self, "modifier_item_restock", {})
end
end
UTIL_Remove(self)
end
item_restock = __TS__Decorate(
item_restock,
item_restock,
{registerAbility(nil)},
{kind = "class", name = "item_restock"}
)
____exports.item_restock = item_restock
____exports.modifier_item_restock = __TS__Class()
local modifier_item_restock = ____exports.modifier_item_restock
modifier_item_restock.name = "modifier_item_restock"
__TS__ClassExtends(modifier_item_restock, BaseModifier)
function modifier_item_restock.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_restock.prototype.IsHidden(self)
return false
end
function modifier_item_restock.prototype.GetTexture(self)
return "blackshop/restock"
end
modifier_item_restock = __TS__Decorate(
modifier_item_restock,
modifier_item_restock,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_restock"}
)
____exports.modifier_item_restock = modifier_item_restock
return ____exports
@@ -0,0 +1,66 @@
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local __TS__SourceMapTraceBack = ____lualib.__TS__SourceMapTraceBack
__TS__SourceMapTraceBack(debug.getinfo(1).short_src, {["8"] = 1,["9"] = 1,["10"] = 1,["11"] = 1,["12"] = 1,["13"] = 3,["14"] = 4,["15"] = 3,["16"] = 4,["17"] = 5,["18"] = 6,["21"] = 8,["22"] = 9,["25"] = 11,["26"] = 13,["27"] = 14,["29"] = 18,["31"] = 20,["32"] = 5,["33"] = 4,["34"] = 4,["35"] = 4,["36"] = 3,["39"] = 4,["40"] = 24,["41"] = 25,["42"] = 24,["43"] = 25,["44"] = 26,["45"] = 27,["46"] = 26,["47"] = 30,["48"] = 31,["49"] = 30,["50"] = 34,["51"] = 35,["52"] = 34,["53"] = 38,["54"] = 39,["55"] = 38,["56"] = 42,["57"] = 43,["58"] = 42,["59"] = 25,["60"] = 25,["61"] = 25,["62"] = 24,["65"] = 25});
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
____exports.item_agility_cape = __TS__Class()
local item_agility_cape = ____exports.item_agility_cape
item_agility_cape.name = "item_agility_cape"
__TS__ClassExtends(item_agility_cape, BaseItem)
function item_agility_cape.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local agility = self:GetSpecialValueFor("bonus_agility")
if caster:HasModifier("modifier_item_agility_cape") then
caster:FindModifierByName("modifier_item_agility_cape"):SetStackCount(caster:FindModifierByName("modifier_item_agility_cape"):GetStackCount() + agility)
else
caster:AddNewModifier(caster, self, "modifier_item_agility_cape", {}):SetStackCount(agility)
end
UTIL_Remove(self)
end
item_agility_cape = __TS__Decorate(
item_agility_cape,
item_agility_cape,
{registerAbility(nil)},
{kind = "class", name = "item_agility_cape"}
)
____exports.item_agility_cape = item_agility_cape
____exports.modifier_item_agility_cape = __TS__Class()
local modifier_item_agility_cape = ____exports.modifier_item_agility_cape
modifier_item_agility_cape.name = "modifier_item_agility_cape"
__TS__ClassExtends(modifier_item_agility_cape, BaseModifier)
function modifier_item_agility_cape.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_agility_cape.prototype.IsHidden(self)
return true
end
function modifier_item_agility_cape.prototype.IsPurgable(self)
return false
end
function modifier_item_agility_cape.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_STATS_AGILITY_BONUS}
end
function modifier_item_agility_cape.prototype.GetModifierBonusStats_Agility(self)
return self:GetStackCount()
end
modifier_item_agility_cape = __TS__Decorate(
modifier_item_agility_cape,
modifier_item_agility_cape,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_agility_cape"}
)
____exports.modifier_item_agility_cape = modifier_item_agility_cape
return ____exports
@@ -0,0 +1,69 @@
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
____exports.item_blackshop_rare_agility_cape = __TS__Class()
local item_blackshop_rare_agility_cape = ____exports.item_blackshop_rare_agility_cape
item_blackshop_rare_agility_cape.name = "item_blackshop_rare_agility_cape"
item_blackshop_rare_agility_cape.____file_path = "scripts/vscripts/items/blackshop/rare/item_blackshop_rare_agility_cape.lua"
__TS__ClassExtends(item_blackshop_rare_agility_cape, BaseItem)
function item_blackshop_rare_agility_cape.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local agility = self:GetSpecialValueFor("bonus_agility")
if caster:HasModifier("modifier_item_agility_cape") then
caster:FindModifierByName("modifier_item_agility_cape"):SetStackCount(caster:FindModifierByName("modifier_item_agility_cape"):GetStackCount() + agility)
else
caster:AddNewModifier(caster, self, "modifier_item_agility_cape", {}):SetStackCount(agility)
end
UTIL_Remove(self)
end
item_blackshop_rare_agility_cape = __TS__Decorate(
item_blackshop_rare_agility_cape,
item_blackshop_rare_agility_cape,
{registerAbility(nil)},
{kind = "class", name = "item_blackshop_rare_agility_cape"}
)
____exports.item_blackshop_rare_agility_cape = item_blackshop_rare_agility_cape
____exports.modifier_item_agility_cape = __TS__Class()
local modifier_item_agility_cape = ____exports.modifier_item_agility_cape
modifier_item_agility_cape.name = "modifier_item_agility_cape"
modifier_item_agility_cape.____file_path = "scripts/vscripts/items/blackshop/rare/item_blackshop_rare_agility_cape.lua"
__TS__ClassExtends(modifier_item_agility_cape, BaseModifier)
function modifier_item_agility_cape.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_agility_cape.prototype.IsHidden(self)
return true
end
function modifier_item_agility_cape.prototype.IsPurgable(self)
return false
end
function modifier_item_agility_cape.prototype.GetTexture(self)
return "../items/blackshop/agility_cape"
end
function modifier_item_agility_cape.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_STATS_AGILITY_BONUS}
end
function modifier_item_agility_cape.prototype.GetModifierBonusStats_Agility(self)
return self:GetStackCount()
end
modifier_item_agility_cape = __TS__Decorate(
modifier_item_agility_cape,
modifier_item_agility_cape,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_agility_cape"}
)
____exports.modifier_item_agility_cape = modifier_item_agility_cape
return ____exports
@@ -0,0 +1,68 @@
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
____exports.item_blackshop_rare_critical_havoc = __TS__Class()
local item_blackshop_rare_critical_havoc = ____exports.item_blackshop_rare_critical_havoc
item_blackshop_rare_critical_havoc.name = "item_blackshop_rare_critical_havoc"
item_blackshop_rare_critical_havoc.____file_path = "scripts/vscripts/items/blackshop/rare/item_blackshop_rare_critical_havoc.lua"
__TS__ClassExtends(item_blackshop_rare_critical_havoc, BaseItem)
function item_blackshop_rare_critical_havoc.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
caster:AddNewModifier(caster, self, "modifier_item_critical_havoc", {})
UTIL_Remove(self)
end
item_blackshop_rare_critical_havoc = __TS__Decorate(
item_blackshop_rare_critical_havoc,
item_blackshop_rare_critical_havoc,
{registerAbility(nil)},
{kind = "class", name = "item_blackshop_rare_critical_havoc"}
)
____exports.item_blackshop_rare_critical_havoc = item_blackshop_rare_critical_havoc
____exports.modifier_item_critical_havoc = __TS__Class()
local modifier_item_critical_havoc = ____exports.modifier_item_critical_havoc
modifier_item_critical_havoc.name = "modifier_item_critical_havoc"
modifier_item_critical_havoc.____file_path = "scripts/vscripts/items/blackshop/rare/item_blackshop_rare_critical_havoc.lua"
__TS__ClassExtends(modifier_item_critical_havoc, BaseModifier)
function modifier_item_critical_havoc.prototype.IsHidden(self)
return true
end
function modifier_item_critical_havoc.prototype.IsPurgable(self)
return false
end
function modifier_item_critical_havoc.prototype.GetTexture(self)
return "../items/blackshop/critical_havoc"
end
function modifier_item_critical_havoc.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_critical_havoc.prototype.OnCreated(self)
if not IsServer() then
return
end
local stackingCritMod = self:GetParent():FindModifierByName("modifier_stacking_crit")
if stackingCritMod then
local ability = self:GetAbility()
stackingCritMod:AddCustomCrit(10, 200, "item_critical_havoc", ability)
end
end
modifier_item_critical_havoc = __TS__Decorate(
modifier_item_critical_havoc,
modifier_item_critical_havoc,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_critical_havoc"}
)
____exports.modifier_item_critical_havoc = modifier_item_critical_havoc
return ____exports
@@ -0,0 +1,135 @@
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
____exports.item_blackshop_rare_damage_dagger = __TS__Class()
local item_blackshop_rare_damage_dagger = ____exports.item_blackshop_rare_damage_dagger
item_blackshop_rare_damage_dagger.name = "item_blackshop_rare_damage_dagger"
item_blackshop_rare_damage_dagger.____file_path = "scripts/vscripts/items/blackshop/rare/item_blackshop_rare_damage_dagger.lua"
__TS__ClassExtends(item_blackshop_rare_damage_dagger, BaseItem)
function item_blackshop_rare_damage_dagger.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local stats = self:GetSpecialValueFor("bonus_damage")
if caster:HasModifier("modifier_item_damage_dagger") then
caster:FindModifierByName("modifier_item_damage_dagger"):SetStackCount(caster:FindModifierByName("modifier_item_damage_dagger"):GetStackCount() + stats)
else
caster:AddNewModifier(caster, self, "modifier_item_damage_dagger", {}):SetStackCount(stats)
end
UTIL_Remove(self)
end
item_blackshop_rare_damage_dagger = __TS__Decorate(
item_blackshop_rare_damage_dagger,
item_blackshop_rare_damage_dagger,
{registerAbility(nil)},
{kind = "class", name = "item_blackshop_rare_damage_dagger"}
)
____exports.item_blackshop_rare_damage_dagger = item_blackshop_rare_damage_dagger
____exports.modifier_item_damage_dagger = __TS__Class()
local modifier_item_damage_dagger = ____exports.modifier_item_damage_dagger
modifier_item_damage_dagger.name = "modifier_item_damage_dagger"
modifier_item_damage_dagger.____file_path = "scripts/vscripts/items/blackshop/rare/item_blackshop_rare_damage_dagger.lua"
__TS__ClassExtends(modifier_item_damage_dagger, BaseModifier)
function modifier_item_damage_dagger.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_damage_dagger.prototype.IsHidden(self)
return false
end
function modifier_item_damage_dagger.prototype.IsPurgable(self)
return false
end
function modifier_item_damage_dagger.prototype.GetTexture(self)
return "../items/blackshop/damage_dagger"
end
function modifier_item_damage_dagger.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE, MODIFIER_EVENT_ON_ATTACK_LANDED}
end
function modifier_item_damage_dagger.prototype.GetModifierPreAttack_BonusDamage(self)
return self:GetStackCount()
end
function modifier_item_damage_dagger.prototype.OnAttackLanded(self, keys)
if not IsServer() then
return
end
local attacker = keys.attacker
if attacker ~= self:GetParent() then
return
end
local parent = self:GetParent()
if not parent then
return
end
if not parent:HasModifier("modifier_item_damage_dagger_timer") then
parent:AddNewModifier(
parent,
getModifierSourceAbility(nil, parent),
"modifier_item_damage_dagger_timer",
{duration = 4}
):SetStackCount(self:GetStackCount())
parent:RemoveModifierByName("modifier_item_damage_dagger")
end
end
modifier_item_damage_dagger = __TS__Decorate(
modifier_item_damage_dagger,
modifier_item_damage_dagger,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_damage_dagger"}
)
____exports.modifier_item_damage_dagger = modifier_item_damage_dagger
____exports.modifier_item_damage_dagger_timer = __TS__Class()
local modifier_item_damage_dagger_timer = ____exports.modifier_item_damage_dagger_timer
modifier_item_damage_dagger_timer.name = "modifier_item_damage_dagger_timer"
modifier_item_damage_dagger_timer.____file_path = "scripts/vscripts/items/blackshop/rare/item_blackshop_rare_damage_dagger.lua"
__TS__ClassExtends(modifier_item_damage_dagger_timer, BaseModifier)
function modifier_item_damage_dagger_timer.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_damage_dagger_timer.prototype.IsPurgable(self)
return false
end
function modifier_item_damage_dagger_timer.prototype.GetTexture(self)
return "../items/blackshop/damage_dagger"
end
function modifier_item_damage_dagger_timer.prototype.OnDestroy(self)
if IsClient() then
return
end
local parent = self:GetParent()
if not parent or not parent:IsAlive() then
return
end
local stacks = self:GetStackCount()
local modifier = parent:AddNewModifier(
parent,
getModifierSourceAbility(nil, parent),
"modifier_item_damage_dagger",
{}
)
if modifier ~= nil then
if self:GetParent():HasModifier("modifier_item_damage_dagger") then
modifier:SetStackCount(self:GetParent():FindModifierByName("modifier_item_damage_dagger"):GetStackCount() + stacks)
else
modifier:SetStackCount(stacks)
end
end
end
modifier_item_damage_dagger_timer = __TS__Decorate(
modifier_item_damage_dagger_timer,
modifier_item_damage_dagger_timer,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_damage_dagger_timer"}
)
____exports.modifier_item_damage_dagger_timer = modifier_item_damage_dagger_timer
return ____exports
@@ -0,0 +1,75 @@
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
____exports.item_blackshop_rare_egg_of_death = __TS__Class()
local item_blackshop_rare_egg_of_death = ____exports.item_blackshop_rare_egg_of_death
item_blackshop_rare_egg_of_death.name = "item_blackshop_rare_egg_of_death"
item_blackshop_rare_egg_of_death.____file_path = "scripts/vscripts/items/blackshop/rare/item_blackshop_rare_egg_of_death.lua"
__TS__ClassExtends(item_blackshop_rare_egg_of_death, BaseItem)
function item_blackshop_rare_egg_of_death.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local stats = self:GetSpecialValueFor("bonus_all")
if caster:HasModifier("modifier_item_egg_of_death") then
caster:FindModifierByName("modifier_item_egg_of_death"):SetStackCount(caster:FindModifierByName("modifier_item_egg_of_death"):GetStackCount() + stats)
else
caster:AddNewModifier(caster, self, "modifier_item_egg_of_death", {}):SetStackCount(stats)
end
UTIL_Remove(self)
end
item_blackshop_rare_egg_of_death = __TS__Decorate(
item_blackshop_rare_egg_of_death,
item_blackshop_rare_egg_of_death,
{registerAbility(nil)},
{kind = "class", name = "item_blackshop_rare_egg_of_death"}
)
____exports.item_blackshop_rare_egg_of_death = item_blackshop_rare_egg_of_death
____exports.modifier_item_egg_of_death = __TS__Class()
local modifier_item_egg_of_death = ____exports.modifier_item_egg_of_death
modifier_item_egg_of_death.name = "modifier_item_egg_of_death"
modifier_item_egg_of_death.____file_path = "scripts/vscripts/items/blackshop/rare/item_blackshop_rare_egg_of_death.lua"
__TS__ClassExtends(modifier_item_egg_of_death, BaseModifier)
function modifier_item_egg_of_death.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_egg_of_death.prototype.IsHidden(self)
return true
end
function modifier_item_egg_of_death.prototype.IsPurgable(self)
return false
end
function modifier_item_egg_of_death.prototype.GetTexture(self)
return "../items/blackshop/egg_of_death"
end
function modifier_item_egg_of_death.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_STATS_AGILITY_BONUS, MODIFIER_PROPERTY_STATS_INTELLECT_BONUS, MODIFIER_PROPERTY_STATS_STRENGTH_BONUS}
end
function modifier_item_egg_of_death.prototype.GetModifierBonusStats_Agility(self)
return self:GetStackCount()
end
function modifier_item_egg_of_death.prototype.GetModifierBonusStats_Intellect(self)
return self:GetStackCount()
end
function modifier_item_egg_of_death.prototype.GetModifierBonusStats_Strength(self)
return self:GetStackCount()
end
modifier_item_egg_of_death = __TS__Decorate(
modifier_item_egg_of_death,
modifier_item_egg_of_death,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_egg_of_death"}
)
____exports.modifier_item_egg_of_death = modifier_item_egg_of_death
return ____exports
@@ -0,0 +1,71 @@
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
--- Гранитный жетон — запас здоровья (стакается).
____exports.item_blackshop_rare_granite_badge = __TS__Class()
local item_blackshop_rare_granite_badge = ____exports.item_blackshop_rare_granite_badge
item_blackshop_rare_granite_badge.name = "item_blackshop_rare_granite_badge"
item_blackshop_rare_granite_badge.____file_path = "scripts/vscripts/items/blackshop/rare/item_blackshop_rare_granite_badge.lua"
__TS__ClassExtends(item_blackshop_rare_granite_badge, BaseItem)
function item_blackshop_rare_granite_badge.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local add = self:GetSpecialValueFor("bonus_health")
if caster:HasModifier("modifier_item_granite_badge") then
local m = caster:FindModifierByName("modifier_item_granite_badge")
m:SetStackCount(m:GetStackCount() + add)
else
caster:AddNewModifier(caster, self, "modifier_item_granite_badge", {}):SetStackCount(add)
end
UTIL_Remove(self)
end
item_blackshop_rare_granite_badge = __TS__Decorate(
item_blackshop_rare_granite_badge,
item_blackshop_rare_granite_badge,
{registerAbility(nil)},
{kind = "class", name = "item_blackshop_rare_granite_badge"}
)
____exports.item_blackshop_rare_granite_badge = item_blackshop_rare_granite_badge
____exports.modifier_item_granite_badge = __TS__Class()
local modifier_item_granite_badge = ____exports.modifier_item_granite_badge
modifier_item_granite_badge.name = "modifier_item_granite_badge"
modifier_item_granite_badge.____file_path = "scripts/vscripts/items/blackshop/rare/item_blackshop_rare_granite_badge.lua"
__TS__ClassExtends(modifier_item_granite_badge, BaseModifier)
function modifier_item_granite_badge.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_granite_badge.prototype.IsHidden(self)
return false
end
function modifier_item_granite_badge.prototype.IsPurgable(self)
return false
end
function modifier_item_granite_badge.prototype.GetTexture(self)
return "../items/blackshop/granite_stone"
end
function modifier_item_granite_badge.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_HEALTH_BONUS}
end
function modifier_item_granite_badge.prototype.GetModifierHealthBonus(self)
return self:GetStackCount()
end
modifier_item_granite_badge = __TS__Decorate(
modifier_item_granite_badge,
modifier_item_granite_badge,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_granite_badge"}
)
____exports.modifier_item_granite_badge = modifier_item_granite_badge
return ____exports
@@ -0,0 +1,71 @@
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
--- Железная воля — стойкость к эффектам (стакается).
____exports.item_blackshop_rare_iron_resolve = __TS__Class()
local item_blackshop_rare_iron_resolve = ____exports.item_blackshop_rare_iron_resolve
item_blackshop_rare_iron_resolve.name = "item_blackshop_rare_iron_resolve"
item_blackshop_rare_iron_resolve.____file_path = "scripts/vscripts/items/blackshop/rare/item_blackshop_rare_iron_resolve.lua"
__TS__ClassExtends(item_blackshop_rare_iron_resolve, BaseItem)
function item_blackshop_rare_iron_resolve.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local add = self:GetSpecialValueFor("bonus_status_resist")
if caster:HasModifier("modifier_item_iron_resolve") then
local m = caster:FindModifierByName("modifier_item_iron_resolve")
m:SetStackCount(m:GetStackCount() + add)
else
caster:AddNewModifier(caster, self, "modifier_item_iron_resolve", {}):SetStackCount(add)
end
UTIL_Remove(self)
end
item_blackshop_rare_iron_resolve = __TS__Decorate(
item_blackshop_rare_iron_resolve,
item_blackshop_rare_iron_resolve,
{registerAbility(nil)},
{kind = "class", name = "item_blackshop_rare_iron_resolve"}
)
____exports.item_blackshop_rare_iron_resolve = item_blackshop_rare_iron_resolve
____exports.modifier_item_iron_resolve = __TS__Class()
local modifier_item_iron_resolve = ____exports.modifier_item_iron_resolve
modifier_item_iron_resolve.name = "modifier_item_iron_resolve"
modifier_item_iron_resolve.____file_path = "scripts/vscripts/items/blackshop/rare/item_blackshop_rare_iron_resolve.lua"
__TS__ClassExtends(modifier_item_iron_resolve, BaseModifier)
function modifier_item_iron_resolve.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_iron_resolve.prototype.IsHidden(self)
return false
end
function modifier_item_iron_resolve.prototype.IsPurgable(self)
return false
end
function modifier_item_iron_resolve.prototype.GetTexture(self)
return "../items/blackshop/ironwood_tree"
end
function modifier_item_iron_resolve.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_STATUS_RESISTANCE_STACKING}
end
function modifier_item_iron_resolve.prototype.GetModifierStatusResistanceStacking(self)
return self:GetStackCount()
end
modifier_item_iron_resolve = __TS__Decorate(
modifier_item_iron_resolve,
modifier_item_iron_resolve,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_iron_resolve"}
)
____exports.modifier_item_iron_resolve = modifier_item_iron_resolve
return ____exports
@@ -0,0 +1,81 @@
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
____exports.item_blackshop_rare_silver_eye = __TS__Class()
local item_blackshop_rare_silver_eye = ____exports.item_blackshop_rare_silver_eye
item_blackshop_rare_silver_eye.name = "item_blackshop_rare_silver_eye"
item_blackshop_rare_silver_eye.____file_path = "scripts/vscripts/items/blackshop/rare/item_blackshop_rare_silver_eye.lua"
__TS__ClassExtends(item_blackshop_rare_silver_eye, BaseItem)
function item_blackshop_rare_silver_eye.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local vision = self:GetSpecialValueFor("bonus_vision")
if caster:HasModifier("modifier_item_silver_eye") then
caster:FindModifierByName("modifier_item_silver_eye"):SetStackCount(caster:FindModifierByName("modifier_item_silver_eye"):GetStackCount() + vision)
else
caster:AddNewModifier(caster, self, "modifier_item_silver_eye", {}):SetStackCount(vision)
end
UTIL_Remove(self)
end
item_blackshop_rare_silver_eye = __TS__Decorate(
item_blackshop_rare_silver_eye,
item_blackshop_rare_silver_eye,
{registerAbility(nil)},
{kind = "class", name = "item_blackshop_rare_silver_eye"}
)
____exports.item_blackshop_rare_silver_eye = item_blackshop_rare_silver_eye
____exports.modifier_item_silver_eye = __TS__Class()
local modifier_item_silver_eye = ____exports.modifier_item_silver_eye
modifier_item_silver_eye.name = "modifier_item_silver_eye"
modifier_item_silver_eye.____file_path = "scripts/vscripts/items/blackshop/rare/item_blackshop_rare_silver_eye.lua"
__TS__ClassExtends(modifier_item_silver_eye, BaseModifier)
function modifier_item_silver_eye.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_silver_eye.prototype.IsHidden(self)
return true
end
function modifier_item_silver_eye.prototype.IsPurgable(self)
return false
end
function modifier_item_silver_eye.prototype.GetTexture(self)
return "../items/blackshop/silver_eye"
end
function modifier_item_silver_eye.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_BONUS_NIGHT_VISION, MODIFIER_PROPERTY_BONUS_DAY_VISION, MODIFIER_PROPERTY_CAST_RANGE_BONUS_STACKING, MODIFIER_PROPERTY_ATTACK_RANGE_BONUS}
end
function modifier_item_silver_eye.prototype.GetBonusNightVision(self)
return self:GetStackCount()
end
function modifier_item_silver_eye.prototype.GetBonusDayVision(self)
return self:GetStackCount()
end
function modifier_item_silver_eye.prototype.GetModifierCastRangeBonusStacking(self)
return self:GetStackCount()
end
function modifier_item_silver_eye.prototype.GetModifierAttackRangeBonus(self)
if self:GetParent():IsRangedAttacker() then
return self:GetStackCount()
end
return 0
end
modifier_item_silver_eye = __TS__Decorate(
modifier_item_silver_eye,
modifier_item_silver_eye,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_silver_eye"}
)
____exports.modifier_item_silver_eye = modifier_item_silver_eye
return ____exports
@@ -0,0 +1,66 @@
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local __TS__SourceMapTraceBack = ____lualib.__TS__SourceMapTraceBack
__TS__SourceMapTraceBack(debug.getinfo(1).short_src, {["8"] = 1,["9"] = 1,["10"] = 1,["11"] = 1,["12"] = 1,["13"] = 4,["14"] = 5,["15"] = 4,["16"] = 5,["17"] = 6,["18"] = 7,["21"] = 9,["22"] = 10,["25"] = 11,["26"] = 13,["27"] = 6,["28"] = 5,["29"] = 5,["30"] = 5,["31"] = 4,["34"] = 5,["35"] = 17,["36"] = 18,["37"] = 17,["38"] = 18,["39"] = 19,["40"] = 20,["41"] = 19,["42"] = 23,["43"] = 24,["44"] = 23,["45"] = 27,["46"] = 28,["47"] = 27,["48"] = 31,["49"] = 32,["52"] = 33,["53"] = 34,["54"] = 35,["55"] = 36,["56"] = 37,["58"] = 31,["59"] = 18,["60"] = 18,["61"] = 18,["62"] = 17,["65"] = 18});
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
____exports.item_critical_havoc = __TS__Class()
local item_critical_havoc = ____exports.item_critical_havoc
item_critical_havoc.name = "item_critical_havoc"
__TS__ClassExtends(item_critical_havoc, BaseItem)
function item_critical_havoc.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
caster:AddNewModifier(caster, self, "modifier_item_critical_havoc", {})
UTIL_Remove(self)
end
item_critical_havoc = __TS__Decorate(
item_critical_havoc,
item_critical_havoc,
{registerAbility(nil)},
{kind = "class", name = "item_critical_havoc"}
)
____exports.item_critical_havoc = item_critical_havoc
____exports.modifier_item_critical_havoc = __TS__Class()
local modifier_item_critical_havoc = ____exports.modifier_item_critical_havoc
modifier_item_critical_havoc.name = "modifier_item_critical_havoc"
__TS__ClassExtends(modifier_item_critical_havoc, BaseModifier)
function modifier_item_critical_havoc.prototype.IsHidden(self)
return true
end
function modifier_item_critical_havoc.prototype.IsPurgable(self)
return false
end
function modifier_item_critical_havoc.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_critical_havoc.prototype.OnCreated(self)
if not IsServer() then
return
end
print("[Item Test] Adding crit modifier")
local stackingCritMod = self:GetParent():FindModifierByName("modifier_stacking_crit")
if stackingCritMod then
local ability = self:GetAbility()
stackingCritMod:AddCustomCrit(10, 200, "item_critical_havoc", ability)
end
end
modifier_item_critical_havoc = __TS__Decorate(
modifier_item_critical_havoc,
modifier_item_critical_havoc,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_critical_havoc"}
)
____exports.modifier_item_critical_havoc = modifier_item_critical_havoc
return ____exports
@@ -0,0 +1,124 @@
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local __TS__SourceMapTraceBack = ____lualib.__TS__SourceMapTraceBack
__TS__SourceMapTraceBack(debug.getinfo(1).short_src, {["8"] = 1,["9"] = 1,["10"] = 1,["11"] = 1,["12"] = 1,["13"] = 3,["14"] = 4,["15"] = 3,["16"] = 4,["17"] = 5,["18"] = 6,["21"] = 8,["22"] = 9,["25"] = 11,["26"] = 13,["27"] = 14,["29"] = 18,["31"] = 20,["32"] = 5,["33"] = 4,["34"] = 4,["35"] = 4,["36"] = 3,["39"] = 4,["40"] = 24,["41"] = 25,["42"] = 24,["43"] = 25,["44"] = 26,["45"] = 27,["46"] = 26,["47"] = 30,["48"] = 31,["49"] = 30,["50"] = 34,["51"] = 35,["52"] = 34,["53"] = 37,["54"] = 38,["55"] = 37,["56"] = 41,["57"] = 42,["58"] = 41,["59"] = 45,["60"] = 46,["61"] = 45,["62"] = 49,["63"] = 50,["66"] = 52,["67"] = 53,["70"] = 54,["71"] = 55,["74"] = 57,["75"] = 58,["76"] = 59,["78"] = 49,["79"] = 25,["80"] = 25,["81"] = 25,["82"] = 24,["85"] = 25,["86"] = 64,["87"] = 65,["88"] = 64,["89"] = 65,["90"] = 66,["91"] = 67,["92"] = 66,["93"] = 69,["94"] = 70,["95"] = 69,["96"] = 72,["97"] = 73,["98"] = 72,["99"] = 75,["100"] = 76,["103"] = 78,["104"] = 79,["107"] = 81,["108"] = 82,["109"] = 83,["110"] = 84,["111"] = 85,["113"] = 87,["116"] = 75,["117"] = 65,["118"] = 65,["119"] = 65,["120"] = 64,["123"] = 65});
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
____exports.item_damage_dagger = __TS__Class()
local item_damage_dagger = ____exports.item_damage_dagger
item_damage_dagger.name = "item_damage_dagger"
__TS__ClassExtends(item_damage_dagger, BaseItem)
function item_damage_dagger.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local stats = self:GetSpecialValueFor("bonus_damage")
if caster:HasModifier("modifier_item_damage_dagger") then
caster:FindModifierByName("modifier_item_damage_dagger"):SetStackCount(caster:FindModifierByName("modifier_item_damage_dagger"):GetStackCount() + stats)
else
caster:AddNewModifier(caster, self, "modifier_item_damage_dagger", {}):SetStackCount(stats)
end
UTIL_Remove(self)
end
item_damage_dagger = __TS__Decorate(
item_damage_dagger,
item_damage_dagger,
{registerAbility(nil)},
{kind = "class", name = "item_damage_dagger"}
)
____exports.item_damage_dagger = item_damage_dagger
____exports.modifier_item_damage_dagger = __TS__Class()
local modifier_item_damage_dagger = ____exports.modifier_item_damage_dagger
modifier_item_damage_dagger.name = "modifier_item_damage_dagger"
__TS__ClassExtends(modifier_item_damage_dagger, BaseModifier)
function modifier_item_damage_dagger.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_damage_dagger.prototype.IsHidden(self)
return false
end
function modifier_item_damage_dagger.prototype.IsPurgable(self)
return false
end
function modifier_item_damage_dagger.prototype.GetTexture(self)
return "blackshop/damage_dagger"
end
function modifier_item_damage_dagger.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE, MODIFIER_EVENT_ON_ATTACK_LANDED}
end
function modifier_item_damage_dagger.prototype.GetModifierPreAttack_BonusDamage(self)
return self:GetStackCount()
end
function modifier_item_damage_dagger.prototype.OnAttackLanded(self, keys)
if not IsServer() then
return
end
local attacker = keys.attacker
if attacker ~= self:GetParent() then
return
end
local parent = self:GetParent()
if not parent then
return
end
if not parent:HasModifier("modifier_item_damage_dagger_timer") then
parent:AddNewModifier(parent, nil, "modifier_item_damage_dagger_timer", {duration = 4}):SetStackCount(self:GetStackCount())
parent:RemoveModifierByName("modifier_item_damage_dagger")
end
end
modifier_item_damage_dagger = __TS__Decorate(
modifier_item_damage_dagger,
modifier_item_damage_dagger,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_damage_dagger"}
)
____exports.modifier_item_damage_dagger = modifier_item_damage_dagger
____exports.modifier_item_damage_dagger_timer = __TS__Class()
local modifier_item_damage_dagger_timer = ____exports.modifier_item_damage_dagger_timer
modifier_item_damage_dagger_timer.name = "modifier_item_damage_dagger_timer"
__TS__ClassExtends(modifier_item_damage_dagger_timer, BaseModifier)
function modifier_item_damage_dagger_timer.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_damage_dagger_timer.prototype.IsPurgable(self)
return false
end
function modifier_item_damage_dagger_timer.prototype.GetTexture(self)
return "blackshop/damage_dagger"
end
function modifier_item_damage_dagger_timer.prototype.OnDestroy(self)
if not IsServer() then
return
end
local parent = self:GetParent()
if not parent or not parent:IsAlive() then
return
end
local stacks = self:GetStackCount()
local modifier = parent:AddNewModifier(parent, nil, "modifier_item_damage_dagger", {})
if modifier ~= nil then
if self:GetParent():HasModifier("modifier_item_damage_dagger") then
modifier:SetStackCount(self:GetParent():FindModifierByName("modifier_item_damage_dagger"):GetStackCount() + stacks)
else
modifier:SetStackCount(stacks)
end
end
end
modifier_item_damage_dagger_timer = __TS__Decorate(
modifier_item_damage_dagger_timer,
modifier_item_damage_dagger_timer,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_damage_dagger_timer"}
)
____exports.modifier_item_damage_dagger_timer = modifier_item_damage_dagger_timer
return ____exports
@@ -0,0 +1,72 @@
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local __TS__SourceMapTraceBack = ____lualib.__TS__SourceMapTraceBack
__TS__SourceMapTraceBack(debug.getinfo(1).short_src, {["8"] = 1,["9"] = 1,["10"] = 1,["11"] = 1,["12"] = 1,["13"] = 3,["14"] = 4,["15"] = 3,["16"] = 4,["17"] = 5,["18"] = 6,["21"] = 8,["22"] = 9,["25"] = 11,["26"] = 13,["27"] = 14,["29"] = 16,["31"] = 18,["32"] = 5,["33"] = 4,["34"] = 4,["35"] = 4,["36"] = 3,["39"] = 4,["40"] = 22,["41"] = 23,["42"] = 22,["43"] = 23,["44"] = 24,["45"] = 25,["46"] = 24,["47"] = 28,["48"] = 29,["49"] = 28,["50"] = 32,["51"] = 33,["52"] = 32,["53"] = 36,["54"] = 37,["55"] = 36,["56"] = 40,["57"] = 41,["58"] = 40,["59"] = 44,["60"] = 45,["61"] = 44,["62"] = 48,["63"] = 49,["64"] = 48,["65"] = 23,["66"] = 23,["67"] = 23,["68"] = 22,["71"] = 23});
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
____exports.item_egg_of_death = __TS__Class()
local item_egg_of_death = ____exports.item_egg_of_death
item_egg_of_death.name = "item_egg_of_death"
__TS__ClassExtends(item_egg_of_death, BaseItem)
function item_egg_of_death.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local stats = self:GetSpecialValueFor("bonus_all")
if caster:HasModifier("modifier_item_egg_of_death") then
caster:FindModifierByName("modifier_item_egg_of_death"):SetStackCount(caster:FindModifierByName("modifier_item_egg_of_death"):GetStackCount() + stats)
else
caster:AddNewModifier(caster, self, "modifier_item_egg_of_death", {}):SetStackCount(stats)
end
UTIL_Remove(self)
end
item_egg_of_death = __TS__Decorate(
item_egg_of_death,
item_egg_of_death,
{registerAbility(nil)},
{kind = "class", name = "item_egg_of_death"}
)
____exports.item_egg_of_death = item_egg_of_death
____exports.modifier_item_egg_of_death = __TS__Class()
local modifier_item_egg_of_death = ____exports.modifier_item_egg_of_death
modifier_item_egg_of_death.name = "modifier_item_egg_of_death"
__TS__ClassExtends(modifier_item_egg_of_death, BaseModifier)
function modifier_item_egg_of_death.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_egg_of_death.prototype.IsHidden(self)
return true
end
function modifier_item_egg_of_death.prototype.IsPurgable(self)
return false
end
function modifier_item_egg_of_death.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_STATS_AGILITY_BONUS, MODIFIER_PROPERTY_STATS_INTELLECT_BONUS, MODIFIER_PROPERTY_STATS_STRENGTH_BONUS}
end
function modifier_item_egg_of_death.prototype.GetModifierBonusStats_Agility(self)
return self:GetStackCount()
end
function modifier_item_egg_of_death.prototype.GetModifierBonusStats_Intellect(self)
return self:GetStackCount()
end
function modifier_item_egg_of_death.prototype.GetModifierBonusStats_Strength(self)
return self:GetStackCount()
end
modifier_item_egg_of_death = __TS__Decorate(
modifier_item_egg_of_death,
modifier_item_egg_of_death,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_egg_of_death"}
)
____exports.modifier_item_egg_of_death = modifier_item_egg_of_death
return ____exports
@@ -0,0 +1,78 @@
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local __TS__SourceMapTraceBack = ____lualib.__TS__SourceMapTraceBack
__TS__SourceMapTraceBack(debug.getinfo(1).short_src, {["8"] = 1,["9"] = 1,["10"] = 1,["11"] = 1,["12"] = 1,["13"] = 3,["14"] = 4,["15"] = 3,["16"] = 4,["17"] = 5,["18"] = 6,["21"] = 8,["22"] = 9,["25"] = 11,["26"] = 13,["27"] = 14,["29"] = 16,["31"] = 18,["32"] = 5,["33"] = 4,["34"] = 4,["35"] = 4,["36"] = 3,["39"] = 4,["40"] = 22,["41"] = 23,["42"] = 22,["43"] = 23,["44"] = 24,["45"] = 25,["46"] = 24,["47"] = 28,["48"] = 29,["49"] = 28,["50"] = 32,["51"] = 33,["52"] = 32,["53"] = 36,["54"] = 37,["55"] = 36,["56"] = 45,["57"] = 46,["58"] = 45,["59"] = 48,["60"] = 49,["61"] = 48,["62"] = 51,["63"] = 52,["64"] = 51,["65"] = 54,["66"] = 55,["67"] = 56,["69"] = 58,["70"] = 54,["71"] = 23,["72"] = 23,["73"] = 23,["74"] = 22,["77"] = 23});
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
____exports.item_silver_eye = __TS__Class()
local item_silver_eye = ____exports.item_silver_eye
item_silver_eye.name = "item_silver_eye"
__TS__ClassExtends(item_silver_eye, BaseItem)
function item_silver_eye.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local vision = self:GetSpecialValueFor("bonus_vision")
if caster:HasModifier("modifier_item_silver_eye") then
caster:FindModifierByName("modifier_item_silver_eye"):SetStackCount(caster:FindModifierByName("modifier_item_silver_eye"):GetStackCount() + vision)
else
caster:AddNewModifier(caster, self, "modifier_item_silver_eye", {}):SetStackCount(vision)
end
UTIL_Remove(self)
end
item_silver_eye = __TS__Decorate(
item_silver_eye,
item_silver_eye,
{registerAbility(nil)},
{kind = "class", name = "item_silver_eye"}
)
____exports.item_silver_eye = item_silver_eye
____exports.modifier_item_silver_eye = __TS__Class()
local modifier_item_silver_eye = ____exports.modifier_item_silver_eye
modifier_item_silver_eye.name = "modifier_item_silver_eye"
__TS__ClassExtends(modifier_item_silver_eye, BaseModifier)
function modifier_item_silver_eye.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_silver_eye.prototype.IsHidden(self)
return true
end
function modifier_item_silver_eye.prototype.IsPurgable(self)
return false
end
function modifier_item_silver_eye.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_BONUS_NIGHT_VISION, MODIFIER_PROPERTY_BONUS_DAY_VISION, MODIFIER_PROPERTY_CAST_RANGE_BONUS_STACKING, MODIFIER_PROPERTY_ATTACK_RANGE_BONUS}
end
function modifier_item_silver_eye.prototype.GetBonusNightVision(self)
return self:GetStackCount()
end
function modifier_item_silver_eye.prototype.GetBonusDayVision(self)
return self:GetStackCount()
end
function modifier_item_silver_eye.prototype.GetModifierCastRangeBonusStacking(self)
return self:GetStackCount()
end
function modifier_item_silver_eye.prototype.GetModifierAttackRangeBonus(self)
if self:GetParent():IsRangedAttacker() then
return self:GetStackCount()
end
return 0
end
modifier_item_silver_eye = __TS__Decorate(
modifier_item_silver_eye,
modifier_item_silver_eye,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_silver_eye"}
)
____exports.modifier_item_silver_eye = modifier_item_silver_eye
return ____exports
@@ -0,0 +1,180 @@
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 BaseAbility = ____dota_ts_adapter.BaseAbility
local BaseModifier = ____dota_ts_adapter.BaseModifier
local registerAbility = ____dota_ts_adapter.registerAbility
local registerModifier = ____dota_ts_adapter.registerModifier
____exports.item_armlet_of_eternal_hunger = __TS__Class()
local item_armlet_of_eternal_hunger = ____exports.item_armlet_of_eternal_hunger
item_armlet_of_eternal_hunger.name = "item_armlet_of_eternal_hunger"
item_armlet_of_eternal_hunger.____file_path = "scripts/vscripts/items/default_items/item_armlet_of_eternal_hunger.lua"
__TS__ClassExtends(item_armlet_of_eternal_hunger, BaseAbility)
function item_armlet_of_eternal_hunger.prototype.GetIntrinsicModifierName(self)
return "modifier_item_armlet_of_eternal_hunger"
end
function item_armlet_of_eternal_hunger.prototype.GetAbilityTextureName(self)
local caster = self:GetCaster()
if caster and caster:HasModifier("modifier_item_armlet_of_eternal_hunger_buff") then
return "default_items/armlet_of_eternal_hunger/armlet2"
else
return "default_items/armlet_of_eternal_hunger/armlet2_off"
end
end
function item_armlet_of_eternal_hunger.prototype.OnToggle(self)
local caster = self:GetCaster()
local toggle = self:GetToggleState()
if not IsServer() then
return
end
if toggle then
self:EndCooldown()
caster:AddNewModifier(caster, self, "modifier_item_armlet_of_eternal_hunger_buff", {})
else
local mod = caster:FindModifierByName("modifier_item_armlet_of_eternal_hunger_buff")
if mod then
mod:Destroy()
self:UseResources(false, false, false, true)
end
end
end
item_armlet_of_eternal_hunger = __TS__Decorate(
item_armlet_of_eternal_hunger,
item_armlet_of_eternal_hunger,
{registerAbility(nil)},
{kind = "class", name = "item_armlet_of_eternal_hunger"}
)
____exports.item_armlet_of_eternal_hunger = item_armlet_of_eternal_hunger
____exports.modifier_item_armlet_of_eternal_hunger = __TS__Class()
local modifier_item_armlet_of_eternal_hunger = ____exports.modifier_item_armlet_of_eternal_hunger
modifier_item_armlet_of_eternal_hunger.name = "modifier_item_armlet_of_eternal_hunger"
modifier_item_armlet_of_eternal_hunger.____file_path = "scripts/vscripts/items/default_items/item_armlet_of_eternal_hunger.lua"
__TS__ClassExtends(modifier_item_armlet_of_eternal_hunger, BaseModifier)
function modifier_item_armlet_of_eternal_hunger.prototype.IsHidden(self)
return true
end
function modifier_item_armlet_of_eternal_hunger.prototype.GetAttributes(self)
return MODIFIER_ATTRIBUTE_PERMANENT
end
function modifier_item_armlet_of_eternal_hunger.prototype.IsPurgable(self)
return false
end
function modifier_item_armlet_of_eternal_hunger.prototype.OnCreated(self, params)
addPhysicalVampirism(
nil,
self:GetParent(),
self:GetAbility():GetSpecialValueFor("lifesteal")
)
end
function modifier_item_armlet_of_eternal_hunger.prototype.OnDestroy(self)
if IsClient() then
return
end
reducePhysicalVampirism(
nil,
self:GetParent(),
self:GetAbility():GetSpecialValueFor("lifesteal")
)
local mod = self:GetParent():FindModifierByName("modifier_item_armlet_of_eternal_hunger_buff")
if mod then
mod:Destroy()
end
end
function modifier_item_armlet_of_eternal_hunger.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE, MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT, MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS, MODIFIER_PROPERTY_HEALTH_REGEN_CONSTANT}
end
function modifier_item_armlet_of_eternal_hunger.prototype.GetModifierPhysicalArmorBonus(self, event)
return self:GetAbility():GetSpecialValueFor("bonus_armor")
end
function modifier_item_armlet_of_eternal_hunger.prototype.GetModifierPreAttack_BonusDamage(self)
return self:GetAbility():GetSpecialValueFor("bonus_damage")
end
function modifier_item_armlet_of_eternal_hunger.prototype.GetModifierAttackSpeedBonus_Constant(self)
return self:GetAbility():GetSpecialValueFor("bonus_attack_speed")
end
function modifier_item_armlet_of_eternal_hunger.prototype.GetModifierConstantHealthRegen(self)
return self:GetAbility():GetSpecialValueFor("bonus_hp_regen")
end
modifier_item_armlet_of_eternal_hunger = __TS__Decorate(
modifier_item_armlet_of_eternal_hunger,
modifier_item_armlet_of_eternal_hunger,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_armlet_of_eternal_hunger"}
)
____exports.modifier_item_armlet_of_eternal_hunger = modifier_item_armlet_of_eternal_hunger
____exports.modifier_item_armlet_of_eternal_hunger_buff = __TS__Class()
local modifier_item_armlet_of_eternal_hunger_buff = ____exports.modifier_item_armlet_of_eternal_hunger_buff
modifier_item_armlet_of_eternal_hunger_buff.name = "modifier_item_armlet_of_eternal_hunger_buff"
modifier_item_armlet_of_eternal_hunger_buff.____file_path = "scripts/vscripts/items/default_items/item_armlet_of_eternal_hunger.lua"
__TS__ClassExtends(modifier_item_armlet_of_eternal_hunger_buff, BaseModifier)
function modifier_item_armlet_of_eternal_hunger_buff.prototype.IsPurgable(self)
return false
end
function modifier_item_armlet_of_eternal_hunger_buff.prototype.OnCreated(self)
if not IsServer() then
return
end
addPhysicalVampirism(
nil,
self:GetParent(),
self:GetAbility():GetSpecialValueFor("lifesteal_active")
)
self:StartIntervalThink(0.25)
end
function modifier_item_armlet_of_eternal_hunger_buff.prototype.OnDestroy(self)
if IsClient() then
return
end
reducePhysicalVampirism(
nil,
self:GetParent(),
self:GetAbility():GetSpecialValueFor("lifesteal_active")
)
end
function modifier_item_armlet_of_eternal_hunger_buff.prototype.OnIntervalThink(self)
if not IsServer() then
return
end
self:GetParent():SetHealth(math.max(
self:GetParent():GetHealth() - self:GetAbility():GetSpecialValueFor("health_per_sec") * 0.25,
1
))
end
function modifier_item_armlet_of_eternal_hunger_buff.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE, MODIFIER_PROPERTY_MOVESPEED_BONUS_CONSTANT, MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT, MODIFIER_PROPERTY_STATS_STRENGTH_BONUS}
end
function modifier_item_armlet_of_eternal_hunger_buff.prototype.CheckState(self)
return {[MODIFIER_STATE_SILENCED] = true}
end
function modifier_item_armlet_of_eternal_hunger_buff.prototype.GetModifierPreAttack_BonusDamage(self)
return self:GetAbility():GetSpecialValueFor("bonus_damage_active")
end
function modifier_item_armlet_of_eternal_hunger_buff.prototype.GetModifierAttackSpeedBonus_Constant(self)
return self:GetAbility():GetSpecialValueFor("bonus_attack_speed_active")
end
function modifier_item_armlet_of_eternal_hunger_buff.prototype.GetModifierMoveSpeedBonus_Constant(self)
return self:GetAbility():GetSpecialValueFor("movespeed_active")
end
function modifier_item_armlet_of_eternal_hunger_buff.prototype.GetModifierBonusStats_Strength(self)
return self:GetAbility():GetSpecialValueFor("bonus_str_active")
end
function modifier_item_armlet_of_eternal_hunger_buff.prototype.GetAbilityTextureName(self)
return "default_items/armlet_of_eternal_hunger/armlet2"
end
function modifier_item_armlet_of_eternal_hunger_buff.prototype.GetEffectName(self)
return "particles/units/heroes/hero_bloodseeker/bloodseeker_bloodrage.vpcf"
end
function modifier_item_armlet_of_eternal_hunger_buff.prototype.GetEffectAttachType(self)
return PATTACH_ABSORIGIN_FOLLOW
end
modifier_item_armlet_of_eternal_hunger_buff = __TS__Decorate(
modifier_item_armlet_of_eternal_hunger_buff,
modifier_item_armlet_of_eternal_hunger_buff,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_armlet_of_eternal_hunger_buff"}
)
____exports.modifier_item_armlet_of_eternal_hunger_buff = modifier_item_armlet_of_eternal_hunger_buff
return ____exports
@@ -0,0 +1,55 @@
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
____exports.item_bag_of_gold = __TS__Class()
local item_bag_of_gold = ____exports.item_bag_of_gold
item_bag_of_gold.name = "item_bag_of_gold"
item_bag_of_gold.____file_path = "scripts/vscripts/items/default_items/item_bag_of_gold.lua"
__TS__ClassExtends(item_bag_of_gold, BaseItem)
function item_bag_of_gold.prototype.____constructor(self, ...)
BaseItem.prototype.____constructor(self, ...)
self.GOLD_AMOUNT = RandomInt(10, 50)
end
function item_bag_of_gold.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local playerID = caster:GetPlayerOwnerID()
if not PlayerResource:IsValidPlayerID(playerID) then
return
end
PlayerResource:ModifyGold(playerID, self.GOLD_AMOUNT, true, DOTA_ModifyGold_SharedGold)
EmitSoundOnClient(
"General.Coins",
PlayerResource:GetPlayer(playerID)
)
SendOverheadEventMessage(
PlayerResource:GetPlayer(playerID),
OVERHEAD_ALERT_GOLD,
caster,
self.GOLD_AMOUNT,
nil
)
local container = self:GetContainer()
if container then
container:RemoveSelf()
end
self:RemoveSelf()
end
item_bag_of_gold = __TS__Decorate(
item_bag_of_gold,
item_bag_of_gold,
{registerAbility(nil)},
{kind = "class", name = "item_bag_of_gold"}
)
____exports.item_bag_of_gold = item_bag_of_gold
return ____exports
@@ -0,0 +1,298 @@
local ____lualib = require("lualib_bundle")
local Map = ____lualib.Map
local __TS__New = ____lualib.__TS__New
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local Set = ____lualib.Set
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 chainHitTargets = __TS__New(Map)
local chainIdCounter = 0
____exports.item_balist_custom = __TS__Class()
local item_balist_custom = ____exports.item_balist_custom
item_balist_custom.name = "item_balist_custom"
item_balist_custom.____file_path = "scripts/vscripts/items/default_items/item_balist_custom.lua"
__TS__ClassExtends(item_balist_custom, BaseItem)
function item_balist_custom.prototype.GetIntrinsicModifierName(self)
return "modifier_balist_custom"
end
function item_balist_custom.prototype.Precache(self, context)
PrecacheResource("particle", "particles/items_fx/chain_lightning.vpcf", context)
end
item_balist_custom = __TS__Decorate(
item_balist_custom,
item_balist_custom,
{registerAbility(nil)},
{kind = "class", name = "item_balist_custom"}
)
____exports.item_balist_custom = item_balist_custom
____exports.modifier_balist_custom = __TS__Class()
local modifier_balist_custom = ____exports.modifier_balist_custom
modifier_balist_custom.name = "modifier_balist_custom"
modifier_balist_custom.____file_path = "scripts/vscripts/items/default_items/item_balist_custom.lua"
__TS__ClassExtends(modifier_balist_custom, BaseModifier)
function modifier_balist_custom.prototype.IsHidden(self)
return true
end
function modifier_balist_custom.prototype.IsDebuff(self)
return false
end
function modifier_balist_custom.prototype.IsPurgable(self)
return false
end
function modifier_balist_custom.prototype.GetAttributes(self)
return MODIFIER_ATTRIBUTE_MULTIPLE
end
function modifier_balist_custom.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE, MODIFIER_EVENT_ON_ATTACK_LANDED}
end
function modifier_balist_custom.prototype.GetModifierPreAttack_BonusDamage(self)
return self:GetAbility():GetSpecialValueFor("bonus_damage")
end
function modifier_balist_custom.prototype.OnAttackLanded(self, event)
if event.attacker ~= self:GetParent() then
return
end
if RandomInt(1, 100) > self:GetAbility():GetSpecialValueFor("chance") then
return
end
local ____opt_0 = self:GetAbility()
if (____opt_0 and ____opt_0:IsCooldownReady()) == false then
return
end
local mainTarget = event.target
local attacker = self:GetCaster()
local ability = self:GetAbility()
local boltRadius = ability:GetSpecialValueFor("bolt_radius")
chainIdCounter = chainIdCounter + 1
local chainId = chainIdCounter
chainHitTargets:set(
chainId,
__TS__New(
Set,
{mainTarget:entindex()}
)
)
mainTarget:AddNewModifier(
self:GetParent(),
ability,
"modifier_balist_custom_dps",
{duration = 0.26, initial_stacks = 3, chain_id = chainId, chain_radius = boltRadius}
)
ability:StartCooldown(ability:GetSpecialValueFor("ability_cooldown"))
end
function modifier_balist_custom.prototype.OnCreated(self)
if not IsServer() then
return
end
local stackingCritMod = self:GetParent():FindModifierByName("modifier_stacking_crit")
local ____addCritMult_5 = addCritMult
local ____temp_4 = self:GetCaster()
local ____opt_2 = self:GetAbility()
____addCritMult_5(
nil,
____temp_4,
____opt_2 and ____opt_2:GetSpecialValueFor("crit_multiplier") or 0
)
if stackingCritMod then
local ability = self:GetAbility()
local ____self_11 = stackingCritMod
local ____self_11_AddCustomCrit_12 = ____self_11.AddCustomCrit
local ____opt_6 = self:GetAbility()
local ____temp_10 = ____opt_6 and ____opt_6:GetSpecialValueFor("crit_chance") or 0
local ____opt_8 = self:GetAbility()
____self_11_AddCustomCrit_12(
____self_11,
____temp_10,
____opt_8 and ____opt_8:GetSpecialValueFor("crit_mult") or 0,
"item_balist_custom",
ability
)
end
end
function modifier_balist_custom.prototype.OnDestroy(self)
if IsClient() then
return
end
local parent = self:GetParent()
if not parent or not IsValidEntity(parent) then
return
end
local stackingCritModifier = parent:FindModifierByName("modifier_stacking_crit")
if not stackingCritModifier then
return
end
local ____reduceCritMult_16 = reduceCritMult
local ____temp_15 = self:GetCaster()
local ____opt_13 = self:GetAbility()
____reduceCritMult_16(
nil,
____temp_15,
____opt_13 and ____opt_13:GetSpecialValueFor("crit_multiplier") or 0
)
local ability = self:GetAbility()
stackingCritModifier:RemoveCrit("item_balist_custom", ability)
end
modifier_balist_custom = __TS__Decorate(
modifier_balist_custom,
modifier_balist_custom,
{registerModifier(nil)},
{kind = "class", name = "modifier_balist_custom"}
)
____exports.modifier_balist_custom = modifier_balist_custom
local function hitWithBolt(self, attacker, victim, ability, sourceForParticle)
local particle = ParticleManager:CreateParticle("particles/items_fx/chain_lightning.vpcf", PATTACH_ABSORIGIN_FOLLOW, victim)
if sourceForParticle and IsValidEntity(sourceForParticle) then
ParticleManager:SetParticleControlEnt(
particle,
0,
sourceForParticle,
PATTACH_POINT_FOLLOW,
"attach_hitloc",
sourceForParticle:GetAbsOrigin(),
true
)
else
ParticleManager:SetParticleControl(
particle,
0,
victim:GetAbsOrigin()
)
end
ParticleManager:SetParticleControlEnt(
particle,
1,
victim,
PATTACH_POINT_FOLLOW,
"attach_hitloc",
victim:GetAbsOrigin(),
true
)
ParticleManager:SetParticleControl(
particle,
2,
Vector(1, 1, 1)
)
ParticleManager:ReleaseParticleIndex(particle)
if not IsServer() then
return
end
attacker:PerformAttack(
victim,
true,
true,
true,
false,
false,
false,
true
)
ApplyDamage({
victim = victim,
attacker = attacker,
damage = ability:GetSpecialValueFor("bolt_damage"),
damage_type = DAMAGE_TYPE_MAGICAL,
damage_flags = DOTA_DAMAGE_FLAG_NONE,
ability = ability
})
victim:AddNewModifier(
victim,
ability,
"modifier_stunned",
{duration = ability:GetSpecialValueFor("stun")}
)
end
____exports.modifier_balist_custom_dps = __TS__Class()
local modifier_balist_custom_dps = ____exports.modifier_balist_custom_dps
modifier_balist_custom_dps.name = "modifier_balist_custom_dps"
modifier_balist_custom_dps.____file_path = "scripts/vscripts/items/default_items/item_balist_custom.lua"
__TS__ClassExtends(modifier_balist_custom_dps, BaseModifier)
function modifier_balist_custom_dps.prototype.IsHidden(self)
return false
end
function modifier_balist_custom_dps.prototype.IsDebuff(self)
return true
end
function modifier_balist_custom_dps.prototype.IsPurgable(self)
return true
end
function modifier_balist_custom_dps.prototype.OnCreated(self, params)
local stacks = params and params.initial_stacks or 3
self:SetStackCount(stacks)
if (params and params.chain_id) ~= nil and (params and params.chain_radius) ~= nil then
self.chainParams = {chain_id = params.chain_id, chain_radius = params.chain_radius}
end
self:StartIntervalThink(0.25)
end
function modifier_balist_custom_dps.prototype.OnIntervalThink(self)
if self:GetStackCount() == 0 then
return
end
local mainTarget = self:GetParent()
local attacker = self:GetCaster()
local ability = self:GetAbility()
local params = self.chainParams
if not attacker or not ability then
return
end
self:SetDuration(0.26, true)
self:SetStackCount(self:GetStackCount() - 1)
hitWithBolt(
nil,
attacker,
mainTarget,
ability,
attacker
)
if params and IsServer() then
local hitSet = chainHitTargets:get(params.chain_id)
if hitSet then
local nearbyEnemies = FindUnitsInRadius(
attacker:GetTeamNumber(),
mainTarget:GetAbsOrigin(),
nil,
params.chain_radius,
DOTA_UNIT_TARGET_TEAM_ENEMY,
bit.bor(
bit.bor(DOTA_UNIT_TARGET_HERO, DOTA_UNIT_TARGET_BASIC),
DOTA_UNIT_TARGET_BUILDING
),
DOTA_UNIT_TARGET_FLAG_NONE,
FIND_CLOSEST,
false
)
for ____, enemy in ipairs(nearbyEnemies) do
if enemy and enemy:IsAlive() and not hitSet:has(enemy:entindex()) then
hitSet:add(enemy:entindex())
hitWithBolt(
nil,
attacker,
enemy,
ability,
mainTarget
)
break
end
end
if self:GetStackCount() == 0 then
chainHitTargets:delete(params.chain_id)
end
end
end
end
function modifier_balist_custom_dps.prototype.GetTexture(self)
return "default_items/balist_custom"
end
modifier_balist_custom_dps = __TS__Decorate(
modifier_balist_custom_dps,
modifier_balist_custom_dps,
{registerModifier(nil)},
{kind = "class", name = "modifier_balist_custom_dps"}
)
____exports.modifier_balist_custom_dps = modifier_balist_custom_dps
return ____exports
@@ -0,0 +1 @@
--[[ Generated with https://github.com/TypeScriptToLua/TypeScriptToLua ]]
@@ -0,0 +1,110 @@
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
____exports.item_battle_fury_custom = __TS__Class()
local item_battle_fury_custom = ____exports.item_battle_fury_custom
item_battle_fury_custom.name = "item_battle_fury_custom"
item_battle_fury_custom.____file_path = "scripts/vscripts/items/default_items/item_battle_fury_custom.lua"
__TS__ClassExtends(item_battle_fury_custom, BaseItem)
function item_battle_fury_custom.prototype.GetIntrinsicModifierName(self)
return "modifier_battle_fury_custom"
end
function item_battle_fury_custom.prototype.GetAOERadius(self)
return self:GetSpecialValueFor("tree")
end
function item_battle_fury_custom.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
local point = self:GetCursorPosition()
local trees = GridNav:GetAllTreesAroundPoint(
point,
self:GetSpecialValueFor("tree"),
true
)
if trees and #trees > 0 then
self:CutTree(caster, point)
end
end
function item_battle_fury_custom.prototype.CutTree(self, caster, position)
GridNav:DestroyTreesAroundPoint(
position,
self:GetSpecialValueFor("tree"),
true
)
end
item_battle_fury_custom = __TS__Decorate(
item_battle_fury_custom,
item_battle_fury_custom,
{registerAbility(nil)},
{kind = "class", name = "item_battle_fury_custom"}
)
____exports.item_battle_fury_custom = item_battle_fury_custom
____exports.modifier_battle_fury_custom = __TS__Class()
local modifier_battle_fury_custom = ____exports.modifier_battle_fury_custom
modifier_battle_fury_custom.name = "modifier_battle_fury_custom"
modifier_battle_fury_custom.____file_path = "scripts/vscripts/items/default_items/item_battle_fury_custom.lua"
__TS__ClassExtends(modifier_battle_fury_custom, BaseModifier)
function modifier_battle_fury_custom.prototype.IsHidden(self)
return true
end
function modifier_battle_fury_custom.prototype.IsDebuff(self)
return false
end
function modifier_battle_fury_custom.prototype.IsPurgable(self)
return false
end
function modifier_battle_fury_custom.prototype.GetAttributes(self)
return MODIFIER_ATTRIBUTE_MULTIPLE
end
function modifier_battle_fury_custom.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE, MODIFIER_EVENT_ON_ATTACK_LANDED}
end
function modifier_battle_fury_custom.prototype.OnAttackLanded(self, event)
if not IsServer() then
return
end
if self:GetParent():IsRangedAttacker() then
return
end
local parent = event.attacker
if parent ~= self:GetParent() then
return
end
local ability = self:GetAbility()
if not ability then
return
end
local target = event.target
local attackDamage = parent:GetAverageTrueAttackDamage(target)
local cleaveDamage = attackDamage * (self:GetAbility():GetSpecialValueFor("cleave_damage") / 100)
DoCleaveAttack(
parent,
target,
ability,
cleaveDamage,
self:GetAbility():GetSpecialValueFor("cleave_starting_width"),
self:GetAbility():GetSpecialValueFor("cleave_ending_width"),
self:GetAbility():GetSpecialValueFor("cleave_distance"),
"particles/items_fx/battlefury_cleave.vpcf"
)
end
function modifier_battle_fury_custom.prototype.GetModifierPreAttack_BonusDamage(self)
return self:GetAbility():GetSpecialValueFor("bonus_damage")
end
modifier_battle_fury_custom = __TS__Decorate(
modifier_battle_fury_custom,
modifier_battle_fury_custom,
{registerModifier(nil)},
{kind = "class", name = "modifier_battle_fury_custom"}
)
____exports.modifier_battle_fury_custom = modifier_battle_fury_custom
return ____exports
@@ -0,0 +1,138 @@
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_bearstbow = __TS__Class()
local item_bearstbow = ____exports.item_bearstbow
item_bearstbow.name = "item_bearstbow"
item_bearstbow.____file_path = "scripts/vscripts/items/default_items/item_bearstbow.lua"
__TS__ClassExtends(item_bearstbow, BaseItem)
function item_bearstbow.prototype.GetIntrinsicModifierName(self)
return "modifier_item_bearstbow"
end
item_bearstbow = __TS__Decorate(
item_bearstbow,
item_bearstbow,
{registerAbility(nil)},
{kind = "class", name = "item_bearstbow"}
)
____exports.item_bearstbow = item_bearstbow
____exports.modifier_item_bearstbow = __TS__Class()
local modifier_item_bearstbow = ____exports.modifier_item_bearstbow
modifier_item_bearstbow.name = "modifier_item_bearstbow"
modifier_item_bearstbow.____file_path = "scripts/vscripts/items/default_items/item_bearstbow.lua"
__TS__ClassExtends(modifier_item_bearstbow, BaseModifier)
function modifier_item_bearstbow.prototype.IsHidden(self)
return true
end
function modifier_item_bearstbow.prototype.IsDebuff(self)
return false
end
function modifier_item_bearstbow.prototype.IsPurgable(self)
return false
end
function modifier_item_bearstbow.prototype.OnCreated(self)
if not IsServer() then
return
end
end
function modifier_item_bearstbow.prototype.DeclareFunctions(self)
return {
MODIFIER_EVENT_ON_ATTACK,
MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT,
MODIFIER_PROPERTY_ATTACK_RANGE_BONUS,
MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE,
MODIFIER_PROPERTY_STATS_AGILITY_BONUS,
MODIFIER_PROPERTY_STATS_STRENGTH_BONUS,
MODIFIER_PROPERTY_STATS_INTELLECT_BONUS,
MODIFIER_PROPERTY_HEALTH_BONUS
}
end
function modifier_item_bearstbow.prototype.GetModifierAttackSpeedBonus_Constant(self)
return self:GetAbility():GetSpecialValueFor("attack_speed")
end
function modifier_item_bearstbow.prototype.GetModifierAttackRangeBonus(self)
if not self:GetParent():IsRangedAttacker() then
return 0
end
return self:GetAbility():GetSpecialValueFor("attack_range")
end
function modifier_item_bearstbow.prototype.GetModifierBonusStats_Strength(self)
return self:GetAbility():GetSpecialValueFor("strength")
end
function modifier_item_bearstbow.prototype.GetModifierBonusStats_Agility(self)
return self:GetAbility():GetSpecialValueFor("agility")
end
function modifier_item_bearstbow.prototype.GetModifierBonusStats_Intellect(self)
return self:GetAbility():GetSpecialValueFor("intellect")
end
function modifier_item_bearstbow.prototype.GetModifierHealthBonus(self)
return self:GetAbility():GetSpecialValueFor("health")
end
function modifier_item_bearstbow.prototype.OnAttack(self, event)
if not IsServer() then
return
end
local attacker = event.attacker
local target = event.target
if not attacker or not target then
return
end
if not attacker:IsRealHero() then
return
end
if attacker ~= self:GetParent() then
return
end
if not attacker:IsRangedAttacker() then
return
end
if event.no_attack_cooldown then
return
end
local radius = self:GetParent():GetAttackRangeBuffer() + self:GetParent():GetBaseAttackRange()
local units = FindUnitsInRadius(
attacker:GetTeamNumber(),
attacker:GetAbsOrigin(),
nil,
radius,
DOTA_UNIT_TARGET_TEAM_ENEMY,
DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_BASIC + DOTA_UNIT_TARGET_BUILDING,
DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES + DOTA_UNIT_TARGET_FLAG_FOW_VISIBLE,
FIND_CLOSEST,
false
)
local attackCount = 0
for ____, unit in ipairs(units) do
if unit and not unit:IsNull() and unit ~= target and unit:IsAlive() then
attacker:PerformAttack(
unit,
true,
true,
true,
false,
true,
false,
false
)
attackCount = attackCount + 1
end
if attackCount >= self:GetAbility():GetSpecialValueFor("attack_count") then
break
end
end
end
modifier_item_bearstbow = __TS__Decorate(
modifier_item_bearstbow,
modifier_item_bearstbow,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_bearstbow"}
)
____exports.modifier_item_bearstbow = modifier_item_bearstbow
return ____exports
@@ -0,0 +1,260 @@
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
local PARTICLE_BLADEMAIL = "particles/econ/items/spectre/spectre_arcana/spectre_arcana_blademail.vpcf"
____exports.item_blademail_2 = __TS__Class()
local item_blademail_2 = ____exports.item_blademail_2
item_blademail_2.name = "item_blademail_2"
item_blademail_2.____file_path = "scripts/vscripts/items/default_items/item_blademail_2.lua"
__TS__ClassExtends(item_blademail_2, BaseItem)
function item_blademail_2.prototype.Precache(self, context)
PrecacheResource("particle", PARTICLE_BLADEMAIL, context)
end
function item_blademail_2.prototype.GetIntrinsicModifierName(self)
return "modifier_item_blademail_2"
end
function item_blademail_2.prototype.GetAOERadius(self)
return self:GetSpecialValueFor("radius")
end
function item_blademail_2.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not caster then
return
end
local duration = self:GetSpecialValueFor("active_duration")
caster:AddNewModifier(caster, self, ____exports.modifier_item_blademail_2_active.name, {duration = duration})
EmitSoundOn("DOTA_Item.BladeMail.Activate", caster)
end
item_blademail_2 = __TS__Decorate(
item_blademail_2,
item_blademail_2,
{registerAbility(nil)},
{kind = "class", name = "item_blademail_2"}
)
____exports.item_blademail_2 = item_blademail_2
--- Носитель: отражение части входящего урона; аура на союзников и врагов в радиусе.
____exports.modifier_item_blademail_2 = __TS__Class()
local modifier_item_blademail_2 = ____exports.modifier_item_blademail_2
modifier_item_blademail_2.name = "modifier_item_blademail_2"
modifier_item_blademail_2.____file_path = "scripts/vscripts/items/default_items/item_blademail_2.lua"
__TS__ClassExtends(modifier_item_blademail_2, BaseModifier)
function modifier_item_blademail_2.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_blademail_2.prototype.IsHidden(self)
return true
end
function modifier_item_blademail_2.prototype.IsPurgable(self)
return false
end
function modifier_item_blademail_2.prototype.IsAura(self)
return true
end
function modifier_item_blademail_2.prototype.GetModifierAura(self)
return "modifier_item_blademail_2_aura"
end
function modifier_item_blademail_2.prototype.GetAuraRadius(self)
return self:GetAbility():GetSpecialValueFor("radius")
end
function modifier_item_blademail_2.prototype.GetAuraDuration(self)
return 0.5
end
function modifier_item_blademail_2.prototype.GetAuraSearchTeam(self)
return DOTA_UNIT_TARGET_TEAM_BOTH
end
function modifier_item_blademail_2.prototype.GetAuraSearchType(self)
return DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_BASIC
end
function modifier_item_blademail_2.prototype.GetAuraSearchFlags(self)
return DOTA_UNIT_TARGET_FLAG_NONE
end
function modifier_item_blademail_2.prototype.DeclareFunctions(self)
return {MODIFIER_EVENT_ON_TAKEDAMAGE, MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS, MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT}
end
function modifier_item_blademail_2.prototype.GetModifierPhysicalArmorBonus(self)
return self:GetAbility():GetSpecialValueFor("bonus_armor")
end
function modifier_item_blademail_2.prototype.GetModifierAttackSpeedBonus_Constant(self)
return self:GetAbility():GetSpecialValueFor("attack_speed")
end
function modifier_item_blademail_2.prototype.OnTakeDamage(self, event)
if not IsServer() then
return
end
local parent = self:GetParent()
local ability = self:GetAbility()
if not ability or event.unit ~= parent then
return
end
if event.damage <= 0 then
return
end
if bit.band(event.damage_flags, DOTA_DAMAGE_FLAG_HPLOSS) == DOTA_DAMAGE_FLAG_HPLOSS then
return
end
if bit.band(event.damage_flags, DOTA_DAMAGE_FLAG_REFLECTION) == DOTA_DAMAGE_FLAG_REFLECTION then
return
end
local attacker = event.attacker
if not attacker or attacker:IsNull() or not attacker:IsAlive() then
return
end
if attacker == parent then
return
end
if attacker:GetTeamNumber() == parent:GetTeamNumber() then
return
end
if attacker:IsBuilding() or attacker:IsOther() then
return
end
local isActive = parent:HasModifier(____exports.modifier_item_blademail_2_active.name)
local reflectPct = ability:GetSpecialValueFor("reflect_pct") * 0.01
if isActive then
reflectPct = ability:GetSpecialValueFor("active_reflect_pct") * 0.01
parent:HealWithParams(
event.damage,
ability,
false,
false,
parent,
false
)
SendOverheadEventMessage(
nil,
OVERHEAD_ALERT_HEAL,
parent,
event.damage,
nil
)
end
if reflectPct <= 0 then
return
end
local reflectDamage = event.damage * reflectPct
if reflectDamage <= 0 then
return
end
ApplyDamage({
victim = attacker,
attacker = parent,
damage = reflectDamage,
damage_type = event.damage_type,
ability = ability,
damage_flags = DOTA_DAMAGE_FLAG_REFLECTION + DOTA_DAMAGE_FLAG_NO_SPELL_AMPLIFICATION
})
end
modifier_item_blademail_2 = __TS__Decorate(
modifier_item_blademail_2,
modifier_item_blademail_2,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_blademail_2"}
)
____exports.modifier_item_blademail_2 = modifier_item_blademail_2
--- Актив: ванильный визуал и 100% отражения из KV.
____exports.modifier_item_blademail_2_active = __TS__Class()
local modifier_item_blademail_2_active = ____exports.modifier_item_blademail_2_active
modifier_item_blademail_2_active.name = "modifier_item_blademail_2_active"
modifier_item_blademail_2_active.____file_path = "scripts/vscripts/items/default_items/item_blademail_2.lua"
__TS__ClassExtends(modifier_item_blademail_2_active, BaseModifier)
function modifier_item_blademail_2_active.prototype.RemoveOnDeath(self)
return true
end
function modifier_item_blademail_2_active.prototype.IsHidden(self)
return false
end
function modifier_item_blademail_2_active.prototype.IsDebuff(self)
return false
end
function modifier_item_blademail_2_active.prototype.IsPurgable(self)
return true
end
function modifier_item_blademail_2_active.prototype.GetEffectName(self)
return PARTICLE_BLADEMAIL
end
function modifier_item_blademail_2_active.prototype.GetEffectAttachType(self)
return PATTACH_ABSORIGIN_FOLLOW
end
function modifier_item_blademail_2_active.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_MIN_HEALTH}
end
function modifier_item_blademail_2_active.prototype.GetMinHealth(self)
return 1
end
function modifier_item_blademail_2_active.prototype.GetTexture(self)
return "../items/default_items/blademail_2"
end
modifier_item_blademail_2_active = __TS__Decorate(
modifier_item_blademail_2_active,
modifier_item_blademail_2_active,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_blademail_2_active"}
)
____exports.modifier_item_blademail_2_active = modifier_item_blademail_2_active
--- Аура: союзникам +броня и +скорость атаки, врагам столько же со знаком минус.
____exports.modifier_item_blademail_2_aura = __TS__Class()
local modifier_item_blademail_2_aura = ____exports.modifier_item_blademail_2_aura
modifier_item_blademail_2_aura.name = "modifier_item_blademail_2_aura"
modifier_item_blademail_2_aura.____file_path = "scripts/vscripts/items/default_items/item_blademail_2.lua"
__TS__ClassExtends(modifier_item_blademail_2_aura, BaseModifier)
function modifier_item_blademail_2_aura.prototype.RemoveOnDeath(self)
return true
end
function modifier_item_blademail_2_aura.prototype.IsHidden(self)
return false
end
function modifier_item_blademail_2_aura.prototype.IsPurgable(self)
return false
end
function modifier_item_blademail_2_aura.prototype.IsDebuff(self)
local caster = self:GetCaster()
if not caster then
return true
end
return self:GetParent():GetTeamNumber() ~= caster:GetTeamNumber()
end
function modifier_item_blademail_2_aura.prototype.IsBuff(self)
return not self:IsDebuff()
end
function modifier_item_blademail_2_aura.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS, MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT}
end
function modifier_item_blademail_2_aura.prototype.GetModifierPhysicalArmorBonus(self)
local ability = self:GetAbility()
local caster = self:GetCaster()
if not ability or not caster then
return 0
end
local v = ability:GetSpecialValueFor("aura_armor")
return self:GetParent():GetTeamNumber() == caster:GetTeamNumber() and v or -v
end
function modifier_item_blademail_2_aura.prototype.GetModifierAttackSpeedBonus_Constant(self)
local ability = self:GetAbility()
local caster = self:GetCaster()
if not ability or not caster then
return 0
end
local v = ability:GetSpecialValueFor("aura_attack_speed")
return self:GetParent():GetTeamNumber() == caster:GetTeamNumber() and v or -v
end
function modifier_item_blademail_2_aura.prototype.GetTexture(self)
return "../items/default_items/blademail_2"
end
modifier_item_blademail_2_aura = __TS__Decorate(
modifier_item_blademail_2_aura,
modifier_item_blademail_2_aura,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_blademail_2_aura"}
)
____exports.modifier_item_blademail_2_aura = modifier_item_blademail_2_aura
return ____exports
@@ -0,0 +1,272 @@
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 ____modifier_general_fired = require("abilities.modifiers.modifier_general_fired")
local modifier_general_fired = ____modifier_general_fired.modifier_general_fired
local ____modifier_stats_multiplier = require("modifiers.modifier_stats_multiplier")
local removeStatsMultiplierSource = ____modifier_stats_multiplier.removeStatsMultiplierSource
local setStatsMultiplierSource = ____modifier_stats_multiplier.setStatsMultiplierSource
local BLAZING_RADIANCE_SOURCE_PREFIX = "item_blazing_radiance_custom"
local RADIANCE_PARTICLE = "particles/items2_fx/radiance_owner.vpcf"
local function getOwnerHealthRegenPerSecond(self, unit)
local u = unit
if u.GetHealthRegen ~= nil and type(u.GetHealthRegen) == "function" then
return math.max(
0,
u:GetHealthRegen()
)
end
return math.max(
0,
unit:GetBaseHealthRegen()
)
end
____exports.item_blazing_radiance_custom = __TS__Class()
local item_blazing_radiance_custom = ____exports.item_blazing_radiance_custom
item_blazing_radiance_custom.name = "item_blazing_radiance_custom"
item_blazing_radiance_custom.____file_path = "scripts/vscripts/items/default_items/item_blazing_radiance_custom.lua"
__TS__ClassExtends(item_blazing_radiance_custom, BaseItem)
function item_blazing_radiance_custom.prototype.Precache(self, context)
PrecacheResource("particle", RADIANCE_PARTICLE, context)
end
function item_blazing_radiance_custom.prototype.GetIntrinsicModifierName(self)
return ____exports.modifier_item_blazing_radiance_custom.name
end
function item_blazing_radiance_custom.prototype.GetAOERadius(self)
return self:GetSpecialValueFor("radius")
end
item_blazing_radiance_custom = __TS__Decorate(
item_blazing_radiance_custom,
item_blazing_radiance_custom,
{registerAbility(nil)},
{kind = "class", name = "item_blazing_radiance_custom"}
)
____exports.item_blazing_radiance_custom = item_blazing_radiance_custom
____exports.modifier_item_blazing_radiance_custom = __TS__Class()
local modifier_item_blazing_radiance_custom = ____exports.modifier_item_blazing_radiance_custom
modifier_item_blazing_radiance_custom.name = "modifier_item_blazing_radiance_custom"
modifier_item_blazing_radiance_custom.____file_path = "scripts/vscripts/items/default_items/item_blazing_radiance_custom.lua"
__TS__ClassExtends(modifier_item_blazing_radiance_custom, BaseModifier)
function modifier_item_blazing_radiance_custom.prototype.____constructor(self, ...)
BaseModifier.prototype.____constructor(self, ...)
self.statsSourceId = ""
end
function modifier_item_blazing_radiance_custom.prototype.IsHidden(self)
return true
end
function modifier_item_blazing_radiance_custom.prototype.IsPurgable(self)
return false
end
function modifier_item_blazing_radiance_custom.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_blazing_radiance_custom.prototype.GetAttributes(self)
return MODIFIER_ATTRIBUTE_MULTIPLE
end
function modifier_item_blazing_radiance_custom.prototype.IsAura(self)
return true
end
function modifier_item_blazing_radiance_custom.prototype.GetModifierAura(self)
return ____exports.modifier_item_blazing_radiance_custom_enemy_aura.name
end
function modifier_item_blazing_radiance_custom.prototype.GetAuraRadius(self)
return self:GetAbility():GetSpecialValueFor("radius")
end
function modifier_item_blazing_radiance_custom.prototype.GetAuraDuration(self)
return 1
end
function modifier_item_blazing_radiance_custom.prototype.GetAuraSearchTeam(self)
return DOTA_UNIT_TARGET_TEAM_ENEMY
end
function modifier_item_blazing_radiance_custom.prototype.GetAuraSearchType(self)
return DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_BASIC
end
function modifier_item_blazing_radiance_custom.prototype.GetAuraSearchFlags(self)
return DOTA_UNIT_TARGET_FLAG_NONE
end
function modifier_item_blazing_radiance_custom.prototype.DeclareFunctions(self)
return {
MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE,
MODIFIER_PROPERTY_EVASION_CONSTANT,
MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT,
MODIFIER_PROPERTY_MAGICAL_RESISTANCE_BONUS,
MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS,
MODIFIER_PROPERTY_HEALTH_REGEN_CONSTANT,
MODIFIER_PROPERTY_MANA_REGEN_CONSTANT,
MODIFIER_PROPERTY_STATS_STRENGTH_BONUS,
MODIFIER_PROPERTY_STATS_AGILITY_BONUS,
MODIFIER_PROPERTY_STATS_INTELLECT_BONUS
}
end
function modifier_item_blazing_radiance_custom.prototype.GetModifierBonusStats_Strength(self)
return self:GetAbility():GetSpecialValueFor("bonus_all_stats")
end
function modifier_item_blazing_radiance_custom.prototype.GetModifierBonusStats_Agility(self)
return self:GetAbility():GetSpecialValueFor("bonus_all_stats")
end
function modifier_item_blazing_radiance_custom.prototype.GetModifierBonusStats_Intellect(self)
return self:GetAbility():GetSpecialValueFor("bonus_all_stats")
end
function modifier_item_blazing_radiance_custom.prototype.GetModifierPreAttack_BonusDamage(self)
return self:GetAbility():GetSpecialValueFor("bonus_damage")
end
function modifier_item_blazing_radiance_custom.prototype.GetModifierEvasion_Constant(self)
return self:GetAbility():GetSpecialValueFor("evasion")
end
function modifier_item_blazing_radiance_custom.prototype.GetModifierAttackSpeedBonus_Constant(self)
return self:GetAbility():GetSpecialValueFor("bonus_attack_speed")
end
function modifier_item_blazing_radiance_custom.prototype.GetModifierMagicalResistanceBonus(self)
return self:GetAbility():GetSpecialValueFor("bonus_magic_resistance")
end
function modifier_item_blazing_radiance_custom.prototype.GetModifierPhysicalArmorBonus(self)
return self:GetAbility():GetSpecialValueFor("bonus_physical_armor")
end
function modifier_item_blazing_radiance_custom.prototype.GetModifierConstantHealthRegen(self)
return self:GetAbility():GetSpecialValueFor("bonus_health_regen")
end
function modifier_item_blazing_radiance_custom.prototype.GetModifierConstantManaRegen(self)
return self:GetAbility():GetSpecialValueFor("bonus_mana_regen")
end
function modifier_item_blazing_radiance_custom.prototype.OnCreated(self)
if not IsServer() then
return
end
local ability = self:GetAbility()
self:StartIntervalThink(ability:GetSpecialValueFor("tick_interval"))
self.particleId = ParticleManager:CreateParticle(
RADIANCE_PARTICLE,
PATTACH_ABSORIGIN_FOLLOW,
self:GetParent()
)
ParticleManager:SetParticleShouldCheckFoW(self.particleId, false)
local hero = self:GetParent()
if hero and hero:IsRealHero() then
self.statsSourceId = (BLAZING_RADIANCE_SOURCE_PREFIX .. "_") .. tostring(hero:entindex())
setStatsMultiplierSource(
nil,
hero,
self.statsSourceId,
function()
if not hero or not IsValidEntity(hero) or not hero:IsRealHero() then
return 0
end
return ability and ability:GetSpecialValueFor("all_stats_pct") or 0
end,
"all_stats_pct"
)
end
end
function modifier_item_blazing_radiance_custom.prototype.OnDestroy(self)
if not IsServer() then
return
end
if self.particleId ~= nil then
ParticleManager:DestroyParticle(self.particleId, false)
ParticleManager:ReleaseParticleIndex(self.particleId)
self.particleId = nil
end
if self.statsSourceId ~= "" then
local hero = self:GetParent()
if hero and IsValidEntity(hero) then
removeStatsMultiplierSource(nil, hero, self.statsSourceId)
end
self.statsSourceId = ""
end
end
function modifier_item_blazing_radiance_custom.prototype.OnIntervalThink(self)
if not IsServer() then
return
end
if not self:GetParent():IsAlive() then
return
end
local ____opt_4 = self:GetCaster()
if ____opt_4 and ____opt_4:IsIllusion() then
return
end
local ability = self:GetAbility()
local owner = self:GetParent()
local radius = ability:GetSpecialValueFor("radius")
local tickInterval = ability:GetSpecialValueFor("tick_interval")
local healthRegen = getOwnerHealthRegenPerSecond(nil, owner)
local damage = (ability:GetSpecialValueFor("damage") + owner:GetMaxHealth() * (ability:GetSpecialValueFor("health_damage_pct") / 100) + healthRegen * ability:GetSpecialValueFor("health_regen_damage") + owner:GetMaxMana() * (ability:GetSpecialValueFor("mana_damage_pct") / 100)) * tickInterval
local enemies = FindUnitsInRadius(
owner:GetTeamNumber(),
owner:GetAbsOrigin(),
nil,
radius,
DOTA_UNIT_TARGET_TEAM_ENEMY,
DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_BASIC,
DOTA_UNIT_TARGET_FLAG_NONE,
FIND_ANY_ORDER,
false
)
local stacksPerTick = ability:GetSpecialValueFor("fire_stack")
for ____, enemy in ipairs(enemies) do
local burnModifier = enemy:AddNewModifier(owner, ability, modifier_general_fired.name, {})
if burnModifier then
do
local i = 0
while i < stacksPerTick do
burnModifier:IncrementStackCount()
i = i + 1
end
end
end
ApplyDamage({
victim = enemy,
attacker = owner,
damage = damage,
damage_type = DAMAGE_TYPE_MAGICAL,
ability = ability,
damage_flags = DOTA_DAMAGE_FLAG_NO_SPELL_AMPLIFICATION
})
end
end
modifier_item_blazing_radiance_custom = __TS__Decorate(
modifier_item_blazing_radiance_custom,
modifier_item_blazing_radiance_custom,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_blazing_radiance_custom"}
)
____exports.modifier_item_blazing_radiance_custom = modifier_item_blazing_radiance_custom
--- Дебафф ауры: подавление магии врагов (Blazing Shroud).
____exports.modifier_item_blazing_radiance_custom_enemy_aura = __TS__Class()
local modifier_item_blazing_radiance_custom_enemy_aura = ____exports.modifier_item_blazing_radiance_custom_enemy_aura
modifier_item_blazing_radiance_custom_enemy_aura.name = "modifier_item_blazing_radiance_custom_enemy_aura"
modifier_item_blazing_radiance_custom_enemy_aura.____file_path = "scripts/vscripts/items/default_items/item_blazing_radiance_custom.lua"
__TS__ClassExtends(modifier_item_blazing_radiance_custom_enemy_aura, BaseModifier)
function modifier_item_blazing_radiance_custom_enemy_aura.prototype.IsHidden(self)
return true
end
function modifier_item_blazing_radiance_custom_enemy_aura.prototype.IsDebuff(self)
return true
end
function modifier_item_blazing_radiance_custom_enemy_aura.prototype.IsPurgable(self)
return false
end
function modifier_item_blazing_radiance_custom_enemy_aura.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_MAGICAL_RESISTANCE_BONUS, MODIFIER_PROPERTY_SPELL_AMPLIFY_PERCENTAGE}
end
function modifier_item_blazing_radiance_custom_enemy_aura.prototype.GetModifierMagicalResistanceBonus(self)
return -self:GetAbility():GetSpecialValueFor("aura_magic_resistance_reduction")
end
function modifier_item_blazing_radiance_custom_enemy_aura.prototype.GetModifierSpellAmplify_Percentage(self)
return -self:GetAbility():GetSpecialValueFor("aura_spell_amp_reduction")
end
modifier_item_blazing_radiance_custom_enemy_aura = __TS__Decorate(
modifier_item_blazing_radiance_custom_enemy_aura,
modifier_item_blazing_radiance_custom_enemy_aura,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_blazing_radiance_custom_enemy_aura"}
)
____exports.modifier_item_blazing_radiance_custom_enemy_aura = modifier_item_blazing_radiance_custom_enemy_aura
return ____exports
@@ -0,0 +1,207 @@
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
@@ -0,0 +1,266 @@
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local __TS__StringIncludes = ____lualib.__TS__StringIncludes
local __TS__ArrayForEach = ____lualib.__TS__ArrayForEach
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 ____clean_harbor_flag_markers = require("quests.clean_harbor_flag_markers")
local hideCleanHarborFlagPlacementMarkers = ____clean_harbor_flag_markers.hideCleanHarborFlagPlacementMarkers
local isNearCleanHarborFlagPlacement = ____clean_harbor_flag_markers.isNearCleanHarborFlagPlacement
local ____SpawnManager = require("SpawnManager")
local SpawnManager = ____SpawnManager.SpawnManager
local ____QuestSystem = require("quests.QuestSystem")
local QuestSystem = ____QuestSystem.QuestSystem
____exports.item_clean_harbor = __TS__Class()
local item_clean_harbor = ____exports.item_clean_harbor
item_clean_harbor.name = "item_clean_harbor"
item_clean_harbor.____file_path = "scripts/vscripts/items/default_items/item_clean_harbor.lua"
__TS__ClassExtends(item_clean_harbor, BaseItem)
function item_clean_harbor.prototype.canPlaceFlagHere(self, caster)
return isNearCleanHarborFlagPlacement(
nil,
caster:GetAbsOrigin()
)
end
function item_clean_harbor.prototype.CastFilterResult(self)
if IsServer() then
local caster = self:GetCaster()
if not self:canPlaceFlagHere(caster) then
return UF_FAIL_CUSTOM
end
return UF_SUCCESS
end
return UF_SUCCESS
end
function item_clean_harbor.prototype.GetCustomCastError(self)
if IsServer() then
local caster = self:GetCaster()
if not self:canPlaceFlagHere(caster) then
return "#dota_hud_error_not_in_zone"
end
end
return ""
end
function item_clean_harbor.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
if not self:canPlaceFlagHere(caster) then
self:EndCooldown()
return
end
hideCleanHarborFlagPlacementMarkers(nil)
local duration = 60
CreateModifierThinker(
caster,
self,
____exports.modifier_clean_harbor_flag.name,
{duration = duration},
caster:GetAbsOrigin(),
caster:GetTeamNumber(),
false
)
self:RemoveSelf()
end
item_clean_harbor = __TS__Decorate(
item_clean_harbor,
item_clean_harbor,
{registerAbility(nil)},
{kind = "class", name = "item_clean_harbor"}
)
____exports.item_clean_harbor = item_clean_harbor
____exports.modifier_clean_harbor_flag = __TS__Class()
local modifier_clean_harbor_flag = ____exports.modifier_clean_harbor_flag
modifier_clean_harbor_flag.name = "modifier_clean_harbor_flag"
modifier_clean_harbor_flag.____file_path = "scripts/vscripts/items/default_items/item_clean_harbor.lua"
__TS__ClassExtends(modifier_clean_harbor_flag, BaseModifier)
function modifier_clean_harbor_flag.prototype.____constructor(self, ...)
BaseModifier.prototype.____constructor(self, ...)
self.lastHeroInRangeTime = 0
self.lastBuffTime = 0
end
function modifier_clean_harbor_flag.prototype.IsHidden(self)
return true
end
function modifier_clean_harbor_flag.prototype.IsPurgable(self)
return false
end
function modifier_clean_harbor_flag.prototype.OnCreated(self)
if not IsServer() then
return
end
local parent = self:GetParent()
local pos = parent:GetAbsOrigin()
self.flagEntity = SpawnEntityFromTableSynchronous("prop_dynamic", {model = "models/props_gameplay/roshans_banner.vmdl", targetname = "clean_harbor_flag", origin = pos})
if self.flagParticleId ~= nil then
ParticleManager:DestroyParticle(self.flagParticleId, false)
ParticleManager:ReleaseParticleIndex(self.flagParticleId)
end
self.flagParticleId = ParticleManager:CreateParticle("particles/bloodbath_circle.vpcf", PATTACH_WORLDORIGIN, nil)
ParticleManager:SetParticleControl(self.flagParticleId, 0, pos)
ParticleManager:SetParticleControl(
self.flagParticleId,
1,
Vector(350, 0, 0)
)
self.lastHeroInRangeTime = GameRules:GetGameTime()
self.lastBuffTime = self.lastHeroInRangeTime
self:StartIntervalThink(0.25)
end
function modifier_clean_harbor_flag.prototype.OnIntervalThink(self)
if not IsServer() then
return
end
local parent = self:GetParent()
if not parent or parent:IsNull() then
return
end
local pos = parent:GetAbsOrigin()
local heroes = FindUnitsInRadius(
parent:GetTeamNumber(),
pos,
nil,
350,
DOTA_UNIT_TARGET_TEAM_FRIENDLY,
DOTA_UNIT_TARGET_HERO,
DOTA_UNIT_TARGET_FLAG_NOT_ILLUSIONS,
FIND_ANY_ORDER,
false
)
local now = GameRules:GetGameTime()
if #heroes > 0 then
self.lastHeroInRangeTime = now
local targetHero = heroes[1]
local spawnManager = SpawnManager:getInstance()
local skeletonZoneIds = spawnManager:GetZoneIdsByPrefixes({"zone_skeletons_", "zone_skeletons2_"})
local shouldBuff = now - self.lastBuffTime >= 1
__TS__ArrayForEach(
skeletonZoneIds,
function(____, zoneId)
local units = spawnManager:GetSpawnedUnits(zoneId)
__TS__ArrayForEach(
units,
function(____, unit)
if unit and IsValidEntity(unit) and unit.IsAlive and unit:IsAlive() then
local creep = unit
creep:MoveToTargetToAttack(targetHero)
if shouldBuff then
local name
do
local function ____catch()
name = ""
end
local ____try = pcall(function()
name = creep:GetUnitName()
end)
if not ____try then
____catch()
end
end
if __TS__StringIncludes(name, "skeleton") then
local anyCreep = creep
if anyCreep._cleanHarborBaseMin == nil then
anyCreep._cleanHarborBaseMin = creep:GetBaseDamageMin()
anyCreep._cleanHarborBaseMax = creep:GetBaseDamageMax()
anyCreep._cleanHarborBuffStacks = 0
end
anyCreep._cleanHarborBuffStacks = (anyCreep._cleanHarborBuffStacks or 0) + 1
local stacks = anyCreep._cleanHarborBuffStacks
local mult = 1 + 0.02 * stacks
local newMin = math.floor(anyCreep._cleanHarborBaseMin * mult)
local newMax = math.floor(anyCreep._cleanHarborBaseMax * mult)
creep:SetBaseDamageMin(newMin)
creep:SetBaseDamageMax(newMax)
end
end
end
end
)
end
)
if shouldBuff then
self.lastBuffTime = now
end
else
if now - self.lastHeroInRangeTime >= 1 then
CustomGameEventManager:Send_ServerToAllClients("CreateIngameErrorMessage", {reason = 80, message = "#clean_harbor_no_hero_near_flag"})
end
if now - self.lastHeroInRangeTime >= 5 then
local questSystem = QuestSystem:getInstance()
questSystem:failQuest("kunkka_quest_clean_harbor")
self:Destroy()
return
end
end
local enemies = FindUnitsInRadius(
DOTA_TEAM_NEUTRALS,
pos,
nil,
400,
DOTA_UNIT_TARGET_TEAM_ENEMY,
DOTA_UNIT_TARGET_BASIC,
DOTA_UNIT_TARGET_FLAG_NONE,
FIND_ANY_ORDER,
false
)
if #enemies > 0 then
local questSystem = QuestSystem:getInstance()
questSystem:failQuest("kunkka_quest_clean_harbor")
self:Destroy()
end
end
function modifier_clean_harbor_flag.prototype.OnDestroy(self)
if not IsServer() then
return
end
local parent = self:GetParent()
if not parent or parent:IsNull() then
return
end
if self.flagParticleId ~= nil then
ParticleManager:DestroyParticle(self.flagParticleId, false)
ParticleManager:ReleaseParticleIndex(self.flagParticleId)
self.flagParticleId = nil
end
if self.flagEntity and IsValidEntity(self.flagEntity) then
UTIL_Remove(self.flagEntity)
self.flagEntity = nil
end
if self:GetRemainingTime() <= 0 then
local spawnManager = SpawnManager:getInstance()
spawnManager:RemoveSpawnZonesByType("skeletons")
spawnManager:RemoveSpawnZonesByType("skeletons2")
local skeletonZoneIds = spawnManager:GetZoneIdsByPrefixes({"zone_skeletons_", "zone_skeletons2_"})
__TS__ArrayForEach(
skeletonZoneIds,
function(____, zoneId)
local units = spawnManager:GetSpawnedUnits(zoneId)
__TS__ArrayForEach(
units,
function(____, unit)
if unit and IsValidEntity(unit) and unit.IsAlive and unit:IsAlive() then
unit:ForceKill(false)
end
end
)
end
)
local questSystem = QuestSystem:getInstance()
questSystem:addQuestProgress("kunkka_quest_clean_harbor", "clean_harbor", 1)
end
end
modifier_clean_harbor_flag = __TS__Decorate(
modifier_clean_harbor_flag,
modifier_clean_harbor_flag,
{registerModifier(nil)},
{kind = "class", name = "modifier_clean_harbor_flag"}
)
____exports.modifier_clean_harbor_flag = modifier_clean_harbor_flag
return ____exports
@@ -0,0 +1,643 @@
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 ____modifier_stats_multiplier = require("modifiers.modifier_stats_multiplier")
local removeStatsMultiplierSource = ____modifier_stats_multiplier.removeStatsMultiplierSource
local setStatsMultiplierSource = ____modifier_stats_multiplier.setStatsMultiplierSource
local ____luck = require("utils.luck")
local rollLuckChance = ____luck.rollLuckChance
local ____incoming_damage_reduction_combine = require("utils.incoming_damage_reduction_combine")
local removeIncomingDamageReductionSource = ____incoming_damage_reduction_combine.removeIncomingDamageReductionSource
local setIncomingDamageReductionSource = ____incoming_damage_reduction_combine.setIncomingDamageReductionSource
local CRIMSON_SHIVAS_SOURCE_PREFIX = "item_crimson_shivas_custom"
local CRIMSON_SHIVAS_ALLY_AURA_INCOMING_SOURCE = "modifier_item_crimson_shivas_custom_ally_aura_buff"
local CRIMSON_SHIVAS_GUARD_BUFF_INCOMING_SOURCE = "modifier_item_crimson_shivas_custom_guard_buff"
local SHIVAS_BLAST_PARTICLE = "particles/items2_fx/shivas_guard_active.vpcf"
local SHIVAS_IMPACT_PARTICLE = "particles/items2_fx/shivas_guard_impact.vpcf"
local SHIVAS_SLOW_PARTICLE = "particles/generic_gameplay/generic_slowed_cold.vpcf"
local GUARD_BUFF_PARTICLE = "particles/units/heroes/hero_grimstroke/grimstroke_ink_swell_buff.vpcf"
local MELEE_STRENGTH_BLOCK_PCT = 50
____exports.item_crimson_shivas_custom = __TS__Class()
local item_crimson_shivas_custom = ____exports.item_crimson_shivas_custom
item_crimson_shivas_custom.name = "item_crimson_shivas_custom"
item_crimson_shivas_custom.____file_path = "scripts/vscripts/items/default_items/item_crimson_shivas_custom.lua"
__TS__ClassExtends(item_crimson_shivas_custom, BaseItem)
function item_crimson_shivas_custom.prototype.Precache(self, context)
PrecacheResource("particle", SHIVAS_BLAST_PARTICLE, context)
PrecacheResource("particle", SHIVAS_IMPACT_PARTICLE, context)
PrecacheResource("particle", SHIVAS_SLOW_PARTICLE, context)
PrecacheResource("particle", GUARD_BUFF_PARTICLE, context)
PrecacheResource("soundfile", "soundevents/game_sounds_items.vsndevts", context)
end
function item_crimson_shivas_custom.prototype.GetIntrinsicModifierName(self)
return ____exports.modifier_item_crimson_shivas_custom.name
end
function item_crimson_shivas_custom.prototype.GetAOERadius(self)
return self:GetSpecialValueFor("guard_radius")
end
function item_crimson_shivas_custom.prototype.GetCastRange(self)
local blastRadius = self:GetSpecialValueFor("blast_radius")
if IsServer() then
return blastRadius
end
local ____opt_0 = self:GetCaster()
local bonus = ____opt_0 and ____opt_0:GetCastRangeBonus() or 0
return blastRadius - bonus
end
function item_crimson_shivas_custom.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
local blastRadius = self:GetSpecialValueFor("blast_radius")
local blastSpeed = self:GetSpecialValueFor("blast_speed")
local guardRadius = self:GetSpecialValueFor("guard_radius")
local guardDuration = self:GetSpecialValueFor("guard_duration")
caster:EmitSound("DOTA_Item.ShivasGuard.Activate")
caster:AddNewModifier(caster, self, ____exports.modifier_item_crimson_shivas_custom_blast_thinker.name, {duration = blastRadius / blastSpeed})
local allies = FindUnitsInRadius(
caster:GetTeamNumber(),
caster:GetAbsOrigin(),
nil,
guardRadius,
DOTA_UNIT_TARGET_TEAM_FRIENDLY,
DOTA_UNIT_TARGET_HERO,
DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES,
FIND_CLOSEST,
false
)
for ____, ally in ipairs(allies) do
ally:AddNewModifier(caster, self, ____exports.modifier_item_crimson_shivas_custom_guard_buff.name, {duration = guardDuration})
ally:EmitSound("Hero_LegionCommander.Overwhelming.Cast")
end
end
item_crimson_shivas_custom = __TS__Decorate(
item_crimson_shivas_custom,
item_crimson_shivas_custom,
{registerAbility(nil)},
{kind = "class", name = "item_crimson_shivas_custom"}
)
____exports.item_crimson_shivas_custom = item_crimson_shivas_custom
--- Пассив владельца: статы, блок, аура замедления атаки врагам.
____exports.modifier_item_crimson_shivas_custom = __TS__Class()
local modifier_item_crimson_shivas_custom = ____exports.modifier_item_crimson_shivas_custom
modifier_item_crimson_shivas_custom.name = "modifier_item_crimson_shivas_custom"
modifier_item_crimson_shivas_custom.____file_path = "scripts/vscripts/items/default_items/item_crimson_shivas_custom.lua"
__TS__ClassExtends(modifier_item_crimson_shivas_custom, BaseModifier)
function modifier_item_crimson_shivas_custom.prototype.____constructor(self, ...)
BaseModifier.prototype.____constructor(self, ...)
self.statsSourceId = ""
end
function modifier_item_crimson_shivas_custom.prototype.IsHidden(self)
return true
end
function modifier_item_crimson_shivas_custom.prototype.IsPurgable(self)
return false
end
function modifier_item_crimson_shivas_custom.prototype.GetAttributes(self)
return MODIFIER_ATTRIBUTE_MULTIPLE
end
function modifier_item_crimson_shivas_custom.prototype.DeclareFunctions(self)
return {
MODIFIER_PROPERTY_STATS_STRENGTH_BONUS,
MODIFIER_PROPERTY_STATS_AGILITY_BONUS,
MODIFIER_PROPERTY_STATS_INTELLECT_BONUS,
MODIFIER_PROPERTY_HEALTH_BONUS,
MODIFIER_PROPERTY_MANA_BONUS,
MODIFIER_PROPERTY_HEALTH_REGEN_CONSTANT,
MODIFIER_PROPERTY_MANA_REGEN_CONSTANT,
MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS,
MODIFIER_PROPERTY_PHYSICAL_CONSTANT_BLOCK
}
end
function modifier_item_crimson_shivas_custom.prototype.IsAura(self)
return true
end
function modifier_item_crimson_shivas_custom.prototype.GetModifierAura(self)
return ____exports.modifier_item_crimson_shivas_custom_enemy_aura.name
end
function modifier_item_crimson_shivas_custom.prototype.GetAuraRadius(self)
return self:GetAbility():GetSpecialValueFor("aura_radius")
end
function modifier_item_crimson_shivas_custom.prototype.GetAuraDuration(self)
return 1
end
function modifier_item_crimson_shivas_custom.prototype.GetAuraSearchTeam(self)
return DOTA_UNIT_TARGET_TEAM_ENEMY
end
function modifier_item_crimson_shivas_custom.prototype.GetAuraSearchType(self)
return DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_BASIC
end
function modifier_item_crimson_shivas_custom.prototype.GetAuraSearchFlags(self)
return DOTA_UNIT_TARGET_FLAG_NONE
end
function modifier_item_crimson_shivas_custom.prototype.GetModifierBonusStats_Strength(self)
local ability = self:GetAbility()
return ability:GetSpecialValueFor("bonus_stats")
end
function modifier_item_crimson_shivas_custom.prototype.GetModifierBonusStats_Agility(self)
local ability = self:GetAbility()
return ability:GetSpecialValueFor("bonus_stats")
end
function modifier_item_crimson_shivas_custom.prototype.GetModifierBonusStats_Intellect(self)
local ability = self:GetAbility()
return ability:GetSpecialValueFor("bonus_stats")
end
function modifier_item_crimson_shivas_custom.prototype.GetModifierHealthBonus(self)
return self:GetAbility():GetSpecialValueFor("bonus_health")
end
function modifier_item_crimson_shivas_custom.prototype.GetModifierManaBonus(self)
return self:GetAbility():GetSpecialValueFor("bonus_mana")
end
function modifier_item_crimson_shivas_custom.prototype.GetModifierConstantHealthRegen(self)
return self:GetAbility():GetSpecialValueFor("bonus_hp_regen")
end
function modifier_item_crimson_shivas_custom.prototype.GetModifierConstantManaRegen(self)
return self:GetAbility():GetSpecialValueFor("bonus_mana_regen")
end
function modifier_item_crimson_shivas_custom.prototype.GetModifierPhysicalArmorBonus(self)
return self:GetAbility():GetSpecialValueFor("bonus_armor")
end
function modifier_item_crimson_shivas_custom.prototype.GetModifierPhysical_ConstantBlock(self)
if not IsServer() then
return 0
end
local ability = self:GetAbility()
if not ability then
return 0
end
local chancePct = ability:GetSpecialValueFor("damage_block_chance")
local parent = self:GetParent()
local ____parent_IsRealHero_result_2
if parent:IsRealHero() then
____parent_IsRealHero_result_2 = rollLuckChance(nil, parent, chancePct / 100)
else
____parent_IsRealHero_result_2 = RollPercentage(chancePct)
end
local blocked = ____parent_IsRealHero_result_2
if not blocked then
return 0
end
local blockAmount = ability:GetSpecialValueFor("damage_block")
local baseBlock = parent:IsRangedAttacker() and blockAmount * 0.5 or blockAmount
if not parent:IsRealHero() or parent:IsRangedAttacker() then
return baseBlock
end
return baseBlock + parent:GetStrength() * (MELEE_STRENGTH_BLOCK_PCT / 100)
end
function modifier_item_crimson_shivas_custom.prototype.OnCreated(self)
if not IsServer() then
return
end
local ability = self:GetAbility()
if not ability then
return
end
self:GetParent():AddNewModifier(
self:GetParent(),
ability,
____exports.modifier_item_crimson_shivas_custom_ally_aura.name,
{}
)
local hero = self:GetParent()
if hero and hero:IsRealHero() then
self.statsSourceId = (CRIMSON_SHIVAS_SOURCE_PREFIX .. "_") .. tostring(hero:entindex())
setStatsMultiplierSource(
nil,
hero,
self.statsSourceId,
function()
if not hero or not IsValidEntity(hero) or not hero:IsRealHero() then
return 0
end
return ability:GetSpecialValueFor("all_stats_pct")
end,
"all_stats_pct"
)
end
end
function modifier_item_crimson_shivas_custom.prototype.OnDestroy(self)
if not IsServer() then
return
end
self:GetParent():RemoveModifierByName(____exports.modifier_item_crimson_shivas_custom_ally_aura.name)
if self.statsSourceId ~= "" then
local hero = self:GetParent()
if hero and IsValidEntity(hero) then
removeStatsMultiplierSource(nil, hero, self.statsSourceId)
end
self.statsSourceId = ""
end
end
modifier_item_crimson_shivas_custom = __TS__Decorate(
modifier_item_crimson_shivas_custom,
modifier_item_crimson_shivas_custom,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_crimson_shivas_custom"}
)
____exports.modifier_item_crimson_shivas_custom = modifier_item_crimson_shivas_custom
--- Пассивная аура на союзников вокруг владельца.
____exports.modifier_item_crimson_shivas_custom_ally_aura = __TS__Class()
local modifier_item_crimson_shivas_custom_ally_aura = ____exports.modifier_item_crimson_shivas_custom_ally_aura
modifier_item_crimson_shivas_custom_ally_aura.name = "modifier_item_crimson_shivas_custom_ally_aura"
modifier_item_crimson_shivas_custom_ally_aura.____file_path = "scripts/vscripts/items/default_items/item_crimson_shivas_custom.lua"
__TS__ClassExtends(modifier_item_crimson_shivas_custom_ally_aura, BaseModifier)
function modifier_item_crimson_shivas_custom_ally_aura.prototype.IsHidden(self)
return true
end
function modifier_item_crimson_shivas_custom_ally_aura.prototype.IsPurgable(self)
return false
end
function modifier_item_crimson_shivas_custom_ally_aura.prototype.IsAura(self)
return true
end
function modifier_item_crimson_shivas_custom_ally_aura.prototype.GetModifierAura(self)
return ____exports.modifier_item_crimson_shivas_custom_ally_aura_buff.name
end
function modifier_item_crimson_shivas_custom_ally_aura.prototype.GetAuraRadius(self)
return self:GetAbility():GetSpecialValueFor("aura_radius")
end
function modifier_item_crimson_shivas_custom_ally_aura.prototype.GetAuraDuration(self)
return 1
end
function modifier_item_crimson_shivas_custom_ally_aura.prototype.GetAuraSearchTeam(self)
return DOTA_UNIT_TARGET_TEAM_FRIENDLY
end
function modifier_item_crimson_shivas_custom_ally_aura.prototype.GetAuraSearchType(self)
return DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_BASIC
end
function modifier_item_crimson_shivas_custom_ally_aura.prototype.GetAuraSearchFlags(self)
return DOTA_UNIT_TARGET_FLAG_NONE
end
modifier_item_crimson_shivas_custom_ally_aura = __TS__Decorate(
modifier_item_crimson_shivas_custom_ally_aura,
modifier_item_crimson_shivas_custom_ally_aura,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_crimson_shivas_custom_ally_aura"}
)
____exports.modifier_item_crimson_shivas_custom_ally_aura = modifier_item_crimson_shivas_custom_ally_aura
--- Аура Шивы: снижение скорости атаки врагам.
____exports.modifier_item_crimson_shivas_custom_enemy_aura = __TS__Class()
local modifier_item_crimson_shivas_custom_enemy_aura = ____exports.modifier_item_crimson_shivas_custom_enemy_aura
modifier_item_crimson_shivas_custom_enemy_aura.name = "modifier_item_crimson_shivas_custom_enemy_aura"
modifier_item_crimson_shivas_custom_enemy_aura.____file_path = "scripts/vscripts/items/default_items/item_crimson_shivas_custom.lua"
__TS__ClassExtends(modifier_item_crimson_shivas_custom_enemy_aura, BaseModifier)
function modifier_item_crimson_shivas_custom_enemy_aura.prototype.IsDebuff(self)
return true
end
function modifier_item_crimson_shivas_custom_enemy_aura.prototype.IsHidden(self)
return false
end
function modifier_item_crimson_shivas_custom_enemy_aura.prototype.IsPurgable(self)
return false
end
function modifier_item_crimson_shivas_custom_enemy_aura.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT, MODIFIER_PROPERTY_INCOMING_DAMAGE_PERCENTAGE}
end
function modifier_item_crimson_shivas_custom_enemy_aura.prototype.GetModifierAttackSpeedBonus_Constant(self)
return -self:GetAbility():GetSpecialValueFor("aura_as_reduction")
end
function modifier_item_crimson_shivas_custom_enemy_aura.prototype.GetModifierIncomingDamage_Percentage(self)
return self:GetAbility():GetSpecialValueFor("aura_enemy_incoming_amp")
end
function modifier_item_crimson_shivas_custom_enemy_aura.prototype.GetTexture(self)
return "item_shivas_guard"
end
modifier_item_crimson_shivas_custom_enemy_aura = __TS__Decorate(
modifier_item_crimson_shivas_custom_enemy_aura,
modifier_item_crimson_shivas_custom_enemy_aura,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_crimson_shivas_custom_enemy_aura"}
)
____exports.modifier_item_crimson_shivas_custom_enemy_aura = modifier_item_crimson_shivas_custom_enemy_aura
--- Аура на союзников: снижение входящего урона.
____exports.modifier_item_crimson_shivas_custom_ally_aura_buff = __TS__Class()
local modifier_item_crimson_shivas_custom_ally_aura_buff = ____exports.modifier_item_crimson_shivas_custom_ally_aura_buff
modifier_item_crimson_shivas_custom_ally_aura_buff.name = "modifier_item_crimson_shivas_custom_ally_aura_buff"
modifier_item_crimson_shivas_custom_ally_aura_buff.____file_path = "scripts/vscripts/items/default_items/item_crimson_shivas_custom.lua"
__TS__ClassExtends(modifier_item_crimson_shivas_custom_ally_aura_buff, BaseModifier)
function modifier_item_crimson_shivas_custom_ally_aura_buff.prototype.IsHidden(self)
return false
end
function modifier_item_crimson_shivas_custom_ally_aura_buff.prototype.IsPurgable(self)
return false
end
function modifier_item_crimson_shivas_custom_ally_aura_buff.prototype.OnCreated(self)
if not IsServer() then
return
end
setIncomingDamageReductionSource(
nil,
self:GetParent(),
CRIMSON_SHIVAS_ALLY_AURA_INCOMING_SOURCE,
function()
local ability = self:GetAbility()
if not ability then
return 0
end
return math.max(
0,
ability:GetSpecialValueFor("aura_ally_incoming_reduction")
)
end
)
end
function modifier_item_crimson_shivas_custom_ally_aura_buff.prototype.OnDestroy(self)
if not IsServer() then
return
end
removeIncomingDamageReductionSource(
nil,
self:GetParent(),
CRIMSON_SHIVAS_ALLY_AURA_INCOMING_SOURCE
)
end
function modifier_item_crimson_shivas_custom_ally_aura_buff.prototype.GetTexture(self)
return "item_crimson_guard"
end
modifier_item_crimson_shivas_custom_ally_aura_buff = __TS__Decorate(
modifier_item_crimson_shivas_custom_ally_aura_buff,
modifier_item_crimson_shivas_custom_ally_aura_buff,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_crimson_shivas_custom_ally_aura_buff"}
)
____exports.modifier_item_crimson_shivas_custom_ally_aura_buff = modifier_item_crimson_shivas_custom_ally_aura_buff
--- Расходящаяся волна Шивы.
____exports.modifier_item_crimson_shivas_custom_blast_thinker = __TS__Class()
local modifier_item_crimson_shivas_custom_blast_thinker = ____exports.modifier_item_crimson_shivas_custom_blast_thinker
modifier_item_crimson_shivas_custom_blast_thinker.name = "modifier_item_crimson_shivas_custom_blast_thinker"
modifier_item_crimson_shivas_custom_blast_thinker.____file_path = "scripts/vscripts/items/default_items/item_crimson_shivas_custom.lua"
__TS__ClassExtends(modifier_item_crimson_shivas_custom_blast_thinker, BaseModifier)
function modifier_item_crimson_shivas_custom_blast_thinker.prototype.____constructor(self, ...)
BaseModifier.prototype.____constructor(self, ...)
self.hitted = {}
end
function modifier_item_crimson_shivas_custom_blast_thinker.prototype.IsHidden(self)
return true
end
function modifier_item_crimson_shivas_custom_blast_thinker.prototype.IsPurgable(self)
return false
end
function modifier_item_crimson_shivas_custom_blast_thinker.prototype.GetAttributes(self)
return MODIFIER_ATTRIBUTE_MULTIPLE
end
function modifier_item_crimson_shivas_custom_blast_thinker.prototype.OnCreated(self)
if not IsServer() then
return
end
local ability = self:GetAbility()
self.hitted = {}
self:StartIntervalThink(FrameTime())
local particle = ParticleManager:CreateParticle(
SHIVAS_BLAST_PARTICLE,
PATTACH_ABSORIGIN_FOLLOW,
self:GetParent()
)
ParticleManager:SetParticleControl(
particle,
1,
Vector(
ability:GetSpecialValueFor("blast_radius"),
self:GetDuration() * 1.33,
ability:GetSpecialValueFor("blast_speed")
)
)
self:AddParticle(
particle,
false,
false,
15,
false,
false
)
end
function modifier_item_crimson_shivas_custom_blast_thinker.prototype.OnIntervalThink(self)
local ability = self:GetAbility()
local caster = self:GetCaster()
if not ability or not caster then
return
end
local radiusIncrease = ability:GetSpecialValueFor("blast_speed") / (1 / FrameTime()) * 100
self:SetStackCount(self:GetStackCount() + radiusIncrease)
local radius = self:GetStackCount() / 100
AddFOWViewer(
caster:GetTeamNumber(),
self:GetParent():GetAbsOrigin(),
radius,
FrameTime(),
false
)
local enemies = FindUnitsInRadius(
caster:GetTeamNumber(),
self:GetParent():GetAbsOrigin(),
nil,
radius,
DOTA_UNIT_TARGET_TEAM_ENEMY,
DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_BASIC,
DOTA_UNIT_TARGET_FLAG_NONE,
FIND_ANY_ORDER,
false
)
local blastDamage = ability:GetSpecialValueFor("blast_damage")
local slowDuration = ability:GetSpecialValueFor("slow_duration")
for ____, enemy in ipairs(enemies) do
do
local entIndex = enemy:entindex()
if self.hitted[entIndex] then
goto __continue77
end
self.hitted[entIndex] = true
local impact = ParticleManager:CreateParticle(SHIVAS_IMPACT_PARTICLE, PATTACH_ABSORIGIN_FOLLOW, enemy)
ParticleManager:SetParticleControl(
impact,
1,
self:GetParent():GetAbsOrigin()
)
ParticleManager:ReleaseParticleIndex(impact)
ApplyDamage({
victim = enemy,
attacker = caster,
damage = blastDamage,
damage_type = DAMAGE_TYPE_MAGICAL,
ability = ability
})
local duration = slowDuration * (1 - enemy:GetStatusResistance())
enemy:AddNewModifier(caster, ability, ____exports.modifier_item_crimson_shivas_custom_blast_debuff.name, {duration = duration})
end
::__continue77::
end
end
function modifier_item_crimson_shivas_custom_blast_thinker.prototype.OnDestroy(self)
if not IsServer() then
return
end
local ability = self:GetAbility()
local caster = self:GetCaster()
if ability and caster then
local radius = self:GetStackCount() / 100
AddFOWViewer(
caster:GetTeamNumber(),
self:GetParent():GetAbsOrigin(),
radius,
ability:GetSpecialValueFor("slow_duration"),
false
)
end
self.hitted = {}
end
modifier_item_crimson_shivas_custom_blast_thinker = __TS__Decorate(
modifier_item_crimson_shivas_custom_blast_thinker,
modifier_item_crimson_shivas_custom_blast_thinker,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_crimson_shivas_custom_blast_thinker"}
)
____exports.modifier_item_crimson_shivas_custom_blast_thinker = modifier_item_crimson_shivas_custom_blast_thinker
--- Замедление от волны Шивы.
____exports.modifier_item_crimson_shivas_custom_blast_debuff = __TS__Class()
local modifier_item_crimson_shivas_custom_blast_debuff = ____exports.modifier_item_crimson_shivas_custom_blast_debuff
modifier_item_crimson_shivas_custom_blast_debuff.name = "modifier_item_crimson_shivas_custom_blast_debuff"
modifier_item_crimson_shivas_custom_blast_debuff.____file_path = "scripts/vscripts/items/default_items/item_crimson_shivas_custom.lua"
__TS__ClassExtends(modifier_item_crimson_shivas_custom_blast_debuff, BaseModifier)
function modifier_item_crimson_shivas_custom_blast_debuff.prototype.IsDebuff(self)
return true
end
function modifier_item_crimson_shivas_custom_blast_debuff.prototype.IsHidden(self)
return false
end
function modifier_item_crimson_shivas_custom_blast_debuff.prototype.IsPurgable(self)
return true
end
function modifier_item_crimson_shivas_custom_blast_debuff.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE, MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT, MODIFIER_PROPERTY_INCOMING_DAMAGE_PERCENTAGE}
end
function modifier_item_crimson_shivas_custom_blast_debuff.prototype.GetModifierMoveSpeedBonus_Percentage(self)
return self:GetAbility():GetSpecialValueFor("slow_move_pct")
end
function modifier_item_crimson_shivas_custom_blast_debuff.prototype.GetModifierAttackSpeedBonus_Constant(self)
return self:GetAbility():GetSpecialValueFor("active_as_reduction")
end
function modifier_item_crimson_shivas_custom_blast_debuff.prototype.GetModifierIncomingDamage_Percentage(self)
return self:GetAbility():GetSpecialValueFor("aura_enemy_incoming_amp")
end
function modifier_item_crimson_shivas_custom_blast_debuff.prototype.GetEffectName(self)
return SHIVAS_SLOW_PARTICLE
end
function modifier_item_crimson_shivas_custom_blast_debuff.prototype.GetEffectAttachType(self)
return PATTACH_ABSORIGIN_FOLLOW
end
function modifier_item_crimson_shivas_custom_blast_debuff.prototype.GetTexture(self)
return "item_shivas_guard"
end
modifier_item_crimson_shivas_custom_blast_debuff = __TS__Decorate(
modifier_item_crimson_shivas_custom_blast_debuff,
modifier_item_crimson_shivas_custom_blast_debuff,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_crimson_shivas_custom_blast_debuff"}
)
____exports.modifier_item_crimson_shivas_custom_blast_debuff = modifier_item_crimson_shivas_custom_blast_debuff
--- Актив Crimson Guard: усиление союзников.
____exports.modifier_item_crimson_shivas_custom_guard_buff = __TS__Class()
local modifier_item_crimson_shivas_custom_guard_buff = ____exports.modifier_item_crimson_shivas_custom_guard_buff
modifier_item_crimson_shivas_custom_guard_buff.name = "modifier_item_crimson_shivas_custom_guard_buff"
modifier_item_crimson_shivas_custom_guard_buff.____file_path = "scripts/vscripts/items/default_items/item_crimson_shivas_custom.lua"
__TS__ClassExtends(modifier_item_crimson_shivas_custom_guard_buff, BaseModifier)
function modifier_item_crimson_shivas_custom_guard_buff.prototype.IsHidden(self)
return false
end
function modifier_item_crimson_shivas_custom_guard_buff.prototype.IsPurgable(self)
return true
end
function modifier_item_crimson_shivas_custom_guard_buff.prototype.OnCreated(self)
if not IsServer() then
return
end
local parent = self:GetParent()
self.buffParticle = ParticleManager:CreateParticle(GUARD_BUFF_PARTICLE, PATTACH_ABSORIGIN, parent)
if parent:ScriptLookupAttachment("attach_hitloc") == 0 then
ParticleManager:SetParticleControl(
self.buffParticle,
1,
parent:GetAbsOrigin():__add(Vector(0, 0, 120))
)
else
ParticleManager:SetParticleControlEnt(
self.buffParticle,
1,
parent,
PATTACH_POINT_FOLLOW,
"attach_hitloc",
Vector(0, 0, 0),
true
)
end
setIncomingDamageReductionSource(
nil,
parent,
CRIMSON_SHIVAS_GUARD_BUFF_INCOMING_SOURCE,
function()
local ability = self:GetAbility()
if not ability then
return 0
end
return math.max(
0,
ability:GetSpecialValueFor("aura_ally_incoming_reduction")
)
end
)
end
function modifier_item_crimson_shivas_custom_guard_buff.prototype.OnDestroy(self)
if not IsServer() then
return
end
removeIncomingDamageReductionSource(
nil,
self:GetParent(),
CRIMSON_SHIVAS_GUARD_BUFF_INCOMING_SOURCE
)
if self.buffParticle ~= nil then
ParticleManager:DestroyParticle(self.buffParticle, false)
ParticleManager:ReleaseParticleIndex(self.buffParticle)
self.buffParticle = nil
end
end
function modifier_item_crimson_shivas_custom_guard_buff.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS, MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT, MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE, MODIFIER_PROPERTY_PHYSICAL_CONSTANT_BLOCK}
end
function modifier_item_crimson_shivas_custom_guard_buff.prototype.GetModifierPhysicalArmorBonus(self)
return self:GetAbility():GetSpecialValueFor("bonus_armor_active")
end
function modifier_item_crimson_shivas_custom_guard_buff.prototype.GetModifierAttackSpeedBonus_Constant(self)
return self:GetAbility():GetSpecialValueFor("bonus_attack_speed_active")
end
function modifier_item_crimson_shivas_custom_guard_buff.prototype.GetModifierMoveSpeedBonus_Percentage(self)
return self:GetAbility():GetSpecialValueFor("bonus_movespeed_active")
end
function modifier_item_crimson_shivas_custom_guard_buff.prototype.GetModifierPhysical_ConstantBlock(self)
local ability = self:GetAbility()
local caster = self:GetCaster()
if not ability or not caster then
return 0
end
local baseBlock = ability:GetSpecialValueFor("damage_block_active")
local strBonus = caster:GetStrength() * (ability:GetSpecialValueFor("block_strength_pct") / 100)
return baseBlock + strBonus
end
function modifier_item_crimson_shivas_custom_guard_buff.prototype.GetTexture(self)
return "item_crimson_guard"
end
modifier_item_crimson_shivas_custom_guard_buff = __TS__Decorate(
modifier_item_crimson_shivas_custom_guard_buff,
modifier_item_crimson_shivas_custom_guard_buff,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_crimson_shivas_custom_guard_buff"}
)
____exports.modifier_item_crimson_shivas_custom_guard_buff = modifier_item_crimson_shivas_custom_guard_buff
return ____exports
@@ -0,0 +1,92 @@
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
____exports.item_crystalys = __TS__Class()
local item_crystalys = ____exports.item_crystalys
item_crystalys.name = "item_crystalys"
item_crystalys.____file_path = "scripts/vscripts/items/default_items/item_crystalys.lua"
__TS__ClassExtends(item_crystalys, BaseItem)
function item_crystalys.prototype.GetIntrinsicModifierName(self)
return "modifier_crystalys"
end
item_crystalys = __TS__Decorate(
item_crystalys,
item_crystalys,
{registerAbility(nil)},
{kind = "class", name = "item_crystalys"}
)
____exports.item_crystalys = item_crystalys
____exports.modifier_crystalys = __TS__Class()
local modifier_crystalys = ____exports.modifier_crystalys
modifier_crystalys.name = "modifier_crystalys"
modifier_crystalys.____file_path = "scripts/vscripts/items/default_items/item_crystalys.lua"
__TS__ClassExtends(modifier_crystalys, BaseModifier)
function modifier_crystalys.prototype.IsHidden(self)
return true
end
function modifier_crystalys.prototype.IsDebuff(self)
return false
end
function modifier_crystalys.prototype.IsPurgable(self)
return false
end
function modifier_crystalys.prototype.GetAttributes(self)
return MODIFIER_ATTRIBUTE_MULTIPLE
end
function modifier_crystalys.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE}
end
function modifier_crystalys.prototype.GetModifierPreAttack_BonusDamage(self)
return self:GetAbility():GetSpecialValueFor("bonus_damage")
end
function modifier_crystalys.prototype.OnCreated(self)
if not IsServer() then
return
end
local stackingCritMod = self:GetParent():FindModifierByName("modifier_stacking_crit")
if stackingCritMod then
local ability = self:GetAbility()
local ____self_5 = stackingCritMod
local ____self_5_AddCustomCrit_6 = ____self_5.AddCustomCrit
local ____opt_0 = self:GetAbility()
local ____temp_4 = ____opt_0 and ____opt_0:GetSpecialValueFor("crit_chance") or 0
local ____opt_2 = self:GetAbility()
____self_5_AddCustomCrit_6(
____self_5,
____temp_4,
____opt_2 and ____opt_2:GetSpecialValueFor("crit_mult") or 0,
"item_crystalys",
ability
)
end
end
function modifier_crystalys.prototype.OnDestroy(self)
if IsClient() then
return
end
local parent = self:GetParent()
if not parent or not IsValidEntity(parent) then
return
end
local stackingCritModifier = parent:FindModifierByName("modifier_stacking_crit")
if not stackingCritModifier then
return
end
local ability = self:GetAbility()
stackingCritModifier:RemoveCrit("item_crystalys", ability)
end
modifier_crystalys = __TS__Decorate(
modifier_crystalys,
modifier_crystalys,
{registerModifier(nil)},
{kind = "class", name = "modifier_crystalys"}
)
____exports.modifier_crystalys = modifier_crystalys
return ____exports
@@ -0,0 +1,92 @@
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
____exports.item_dark_crystalys = __TS__Class()
local item_dark_crystalys = ____exports.item_dark_crystalys
item_dark_crystalys.name = "item_dark_crystalys"
item_dark_crystalys.____file_path = "scripts/vscripts/items/default_items/item_dark_crystalys.lua"
__TS__ClassExtends(item_dark_crystalys, BaseItem)
function item_dark_crystalys.prototype.GetIntrinsicModifierName(self)
return "modifier_dark_crystalys"
end
item_dark_crystalys = __TS__Decorate(
item_dark_crystalys,
item_dark_crystalys,
{registerAbility(nil)},
{kind = "class", name = "item_dark_crystalys"}
)
____exports.item_dark_crystalys = item_dark_crystalys
____exports.modifier_dark_crystalys = __TS__Class()
local modifier_dark_crystalys = ____exports.modifier_dark_crystalys
modifier_dark_crystalys.name = "modifier_dark_crystalys"
modifier_dark_crystalys.____file_path = "scripts/vscripts/items/default_items/item_dark_crystalys.lua"
__TS__ClassExtends(modifier_dark_crystalys, BaseModifier)
function modifier_dark_crystalys.prototype.IsHidden(self)
return true
end
function modifier_dark_crystalys.prototype.IsDebuff(self)
return false
end
function modifier_dark_crystalys.prototype.IsPurgable(self)
return false
end
function modifier_dark_crystalys.prototype.GetAttributes(self)
return MODIFIER_ATTRIBUTE_MULTIPLE
end
function modifier_dark_crystalys.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE}
end
function modifier_dark_crystalys.prototype.GetModifierPreAttack_BonusDamage(self)
return self:GetAbility():GetSpecialValueFor("bonus_damage")
end
function modifier_dark_crystalys.prototype.OnCreated(self)
if not IsServer() then
return
end
local stackingCritMod = self:GetParent():FindModifierByName("modifier_stacking_crit")
if stackingCritMod then
local ability = self:GetAbility()
local ____self_5 = stackingCritMod
local ____self_5_AddCustomCrit_6 = ____self_5.AddCustomCrit
local ____opt_0 = self:GetAbility()
local ____temp_4 = ____opt_0 and ____opt_0:GetSpecialValueFor("crit_chance") or 0
local ____opt_2 = self:GetAbility()
____self_5_AddCustomCrit_6(
____self_5,
____temp_4,
____opt_2 and ____opt_2:GetSpecialValueFor("crit_mult") or 0,
"item_dark_crystalys",
ability
)
end
end
function modifier_dark_crystalys.prototype.OnDestroy(self)
if IsClient() then
return
end
local parent = self:GetParent()
if not parent or not IsValidEntity(parent) then
return
end
local stackingCritModifier = parent:FindModifierByName("modifier_stacking_crit")
if not stackingCritModifier then
return
end
local ability = self:GetAbility()
stackingCritModifier:RemoveCrit("item_dark_crystalys", ability)
end
modifier_dark_crystalys = __TS__Decorate(
modifier_dark_crystalys,
modifier_dark_crystalys,
{registerModifier(nil)},
{kind = "class", name = "modifier_dark_crystalys"}
)
____exports.modifier_dark_crystalys = modifier_dark_crystalys
return ____exports
@@ -0,0 +1,299 @@
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local __TS__StringStartsWith = ____lualib.__TS__StringStartsWith
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 ____incoming_damage_reduction_combine = require("utils.incoming_damage_reduction_combine")
local removeIncomingDamageReductionSource = ____incoming_damage_reduction_combine.removeIncomingDamageReductionSource
local setIncomingDamageReductionSource = ____incoming_damage_reduction_combine.setIncomingDamageReductionSource
local DEMON_SLAYER_OWNER_INCOMING_SOURCE = "modifier_item_demon_slayer"
--- Demon Slayer: пассивы Zombie Slayer + статы/эффект Mage Slayer (маг. сопр., регены, DoT + штраф spell amp на цели),
-- плюс снижение входящего и бонус ко всему исходящему урону у носителя.
____exports.item_demon_slayer = __TS__Class()
local item_demon_slayer = ____exports.item_demon_slayer
item_demon_slayer.name = "item_demon_slayer"
item_demon_slayer.____file_path = "scripts/vscripts/items/default_items/item_demon_slayer.lua"
__TS__ClassExtends(item_demon_slayer, BaseItem)
function item_demon_slayer.prototype.Precache(self, context)
PrecacheResource("particle", "particles/demon_slayer_slash.vpcf", context)
PrecacheResource("particle", "particles/items2_fx/mage_slayer_debuff.vpcf", context)
PrecacheResource("particle", "particles/units/heroes/hero_dark_willow/dark_willow_wisp_spell_debuff.vpcf", context)
end
function item_demon_slayer.prototype.GetIntrinsicModifierName(self)
return "modifier_item_demon_slayer"
end
item_demon_slayer = __TS__Decorate(
item_demon_slayer,
item_demon_slayer,
{registerAbility(nil)},
{kind = "class", name = "item_demon_slayer"}
)
____exports.item_demon_slayer = item_demon_slayer
____exports.modifier_item_demon_slayer = __TS__Class()
local modifier_item_demon_slayer = ____exports.modifier_item_demon_slayer
modifier_item_demon_slayer.name = "modifier_item_demon_slayer"
modifier_item_demon_slayer.____file_path = "scripts/vscripts/items/default_items/item_demon_slayer.lua"
__TS__ClassExtends(modifier_item_demon_slayer, BaseModifier)
function modifier_item_demon_slayer.prototype.IsHidden(self)
return true
end
function modifier_item_demon_slayer.prototype.IsPurgable(self)
return false
end
function modifier_item_demon_slayer.prototype.DeclareFunctions(self)
return {
MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE,
MODIFIER_PROPERTY_STATS_AGILITY_BONUS,
MODIFIER_PROPERTY_MANA_REGEN_CONSTANT,
MODIFIER_PROPERTY_HEALTH_BONUS,
MODIFIER_PROPERTY_HEALTH_REGEN_CONSTANT,
MODIFIER_PROPERTY_MAGICAL_RESISTANCE_BONUS,
MODIFIER_EVENT_ON_ATTACK_LANDED,
MODIFIER_PROPERTY_DAMAGEOUTGOING_PERCENTAGE
}
end
function modifier_item_demon_slayer.prototype.OnCreated(self)
if not IsServer() then
return
end
setIncomingDamageReductionSource(
nil,
self:GetParent(),
DEMON_SLAYER_OWNER_INCOMING_SOURCE,
function()
local ability = self:GetAbility()
if not ability then
return 0
end
return math.max(
0,
math.abs(ability:GetSpecialValueFor("incoming_damage_reduction"))
)
end
)
end
function modifier_item_demon_slayer.prototype.OnDestroy(self)
if not IsServer() then
return
end
removeIncomingDamageReductionSource(
nil,
self:GetParent(),
DEMON_SLAYER_OWNER_INCOMING_SOURCE
)
end
function modifier_item_demon_slayer.prototype.GetModifierHealthBonus(self)
return self:GetAbility():GetSpecialValueFor("bonus_health")
end
function modifier_item_demon_slayer.prototype.GetModifierConstantManaRegen(self)
return self:GetAbility():GetSpecialValueFor("bonus_mana_regen")
end
function modifier_item_demon_slayer.prototype.GetModifierConstantHealthRegen(self)
return self:GetAbility():GetSpecialValueFor("bonus_health_regen")
end
function modifier_item_demon_slayer.prototype.GetModifierMagicalResistanceBonus(self)
return self:GetAbility():GetSpecialValueFor("bonus_magic_resistance")
end
function modifier_item_demon_slayer.prototype.GetModifierPreAttack_BonusDamage(self)
return self:GetAbility():GetSpecialValueFor("bonus_damage")
end
function modifier_item_demon_slayer.prototype.GetModifierBonusStats_Agility(self)
return self:GetAbility():GetSpecialValueFor("bonus_agility")
end
function modifier_item_demon_slayer.prototype.GetModifierDamageOutgoing_Percentage(self)
return self:GetAbility():GetSpecialValueFor("outgoing_damage_bonus")
end
function modifier_item_demon_slayer.prototype.OnAttackLanded(self, event)
if not IsServer() then
return
end
if event.attacker ~= self:GetParent() then
return
end
if not event.target or event.target:IsBuilding() or event.target:IsOther() then
return
end
if event.target ~= nil then
local ability = self:GetAbility()
local durCorrosion = ability and ability:GetSpecialValueFor("debuff_duration") or 4
local durMage = ability and ability:GetSpecialValueFor("duration") or 3
event.target:AddNewModifier(
self:GetParent(),
ability,
"modifier_item_demon_slayer_debuff_2",
{duration = durCorrosion}
)
event.target:AddNewModifier(
self:GetParent(),
ability,
"modifier_item_demon_slayer_mage",
{duration = durMage}
)
local ____this_5
____this_5 = event.target
local ____opt_4 = ____this_5.GetUnitName
local targetName = ____opt_4 and ____opt_4(____this_5) or ""
if __TS__StringStartsWith(targetName, "npc_wave") then
ParticleManager:CreateParticle("particles/demon_slayer_slash.vpcf", PATTACH_ABSORIGIN_FOLLOW, event.target)
event.target:AddNewModifier(
self:GetParent(),
ability,
"modifier_item_demon_slayer_debuff",
{duration = durCorrosion}
)
return
end
end
end
modifier_item_demon_slayer = __TS__Decorate(
modifier_item_demon_slayer,
modifier_item_demon_slayer,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_demon_slayer"}
)
____exports.modifier_item_demon_slayer = modifier_item_demon_slayer
--- Доп. урон по нежити волн (как Zombie Slayer).
____exports.modifier_item_demon_slayer_debuff = __TS__Class()
local modifier_item_demon_slayer_debuff = ____exports.modifier_item_demon_slayer_debuff
modifier_item_demon_slayer_debuff.name = "modifier_item_demon_slayer_debuff"
modifier_item_demon_slayer_debuff.____file_path = "scripts/vscripts/items/default_items/item_demon_slayer.lua"
__TS__ClassExtends(modifier_item_demon_slayer_debuff, BaseModifier)
function modifier_item_demon_slayer_debuff.prototype.IsDebuff(self)
return true
end
function modifier_item_demon_slayer_debuff.prototype.IsPurgable(self)
return true
end
function modifier_item_demon_slayer_debuff.prototype.IsHidden(self)
return true
end
function modifier_item_demon_slayer_debuff.prototype.GetEffectName(self)
return "particles/items2_fx/mage_slayer_debuff.vpcf"
end
function modifier_item_demon_slayer_debuff.prototype.GetEffectAttachType(self)
return PATTACH_ABSORIGIN_FOLLOW
end
function modifier_item_demon_slayer_debuff.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_INCOMING_DAMAGE_PERCENTAGE}
end
function modifier_item_demon_slayer_debuff.prototype.GetModifierIncomingDamage_Percentage(self, event)
return self:GetAbility():GetSpecialValueFor("incress_damage")
end
modifier_item_demon_slayer_debuff = __TS__Decorate(
modifier_item_demon_slayer_debuff,
modifier_item_demon_slayer_debuff,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_demon_slayer_debuff"}
)
____exports.modifier_item_demon_slayer_debuff = modifier_item_demon_slayer_debuff
--- Коррозия (броня / хил / скорость), без дублирования штрафа spell amp — его даёт Mage Slayer-дебафф.
____exports.modifier_item_demon_slayer_debuff_2 = __TS__Class()
local modifier_item_demon_slayer_debuff_2 = ____exports.modifier_item_demon_slayer_debuff_2
modifier_item_demon_slayer_debuff_2.name = "modifier_item_demon_slayer_debuff_2"
modifier_item_demon_slayer_debuff_2.____file_path = "scripts/vscripts/items/default_items/item_demon_slayer.lua"
__TS__ClassExtends(modifier_item_demon_slayer_debuff_2, BaseModifier)
function modifier_item_demon_slayer_debuff_2.prototype.IsDebuff(self)
return true
end
function modifier_item_demon_slayer_debuff_2.prototype.IsPurgable(self)
return true
end
function modifier_item_demon_slayer_debuff_2.prototype.IsHidden(self)
return true
end
function modifier_item_demon_slayer_debuff_2.prototype.GetEffectName(self)
return "particles/units/heroes/hero_dark_willow/dark_willow_wisp_spell_debuff.vpcf"
end
function modifier_item_demon_slayer_debuff_2.prototype.GetEffectAttachType(self)
return PATTACH_OVERHEAD_FOLLOW
end
function modifier_item_demon_slayer_debuff_2.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS, MODIFIER_PROPERTY_HEALTH_REGEN_PERCENTAGE, MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE}
end
function modifier_item_demon_slayer_debuff_2.prototype.GetModifierMoveSpeedBonus_Percentage(self)
return self:GetAbility():GetSpecialValueFor("movespeed_reduction")
end
function modifier_item_demon_slayer_debuff_2.prototype.GetModifierHealthRegenPercentage(self)
return 1 + (self:GetAbility():GetSpecialValueFor("health_reduction") - 100) * 0.01
end
function modifier_item_demon_slayer_debuff_2.prototype.GetModifierPhysicalArmorBonus(self, event)
return self:GetAbility():GetSpecialValueFor("armor_reduction")
end
modifier_item_demon_slayer_debuff_2 = __TS__Decorate(
modifier_item_demon_slayer_debuff_2,
modifier_item_demon_slayer_debuff_2,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_demon_slayer_debuff_2"}
)
____exports.modifier_item_demon_slayer_debuff_2 = modifier_item_demon_slayer_debuff_2
--- Эффект как у Mage Slayer: spell amp и магический DoT раз в секунду.
____exports.modifier_item_demon_slayer_mage = __TS__Class()
local modifier_item_demon_slayer_mage = ____exports.modifier_item_demon_slayer_mage
modifier_item_demon_slayer_mage.name = "modifier_item_demon_slayer_mage"
modifier_item_demon_slayer_mage.____file_path = "scripts/vscripts/items/default_items/item_demon_slayer.lua"
__TS__ClassExtends(modifier_item_demon_slayer_mage, BaseModifier)
function modifier_item_demon_slayer_mage.prototype.IsDebuff(self)
return true
end
function modifier_item_demon_slayer_mage.prototype.IsPurgable(self)
return true
end
function modifier_item_demon_slayer_mage.prototype.IsHidden(self)
return true
end
function modifier_item_demon_slayer_mage.prototype.GetEffectName(self)
return "particles/items2_fx/mage_slayer_debuff.vpcf"
end
function modifier_item_demon_slayer_mage.prototype.GetEffectAttachType(self)
return PATTACH_ABSORIGIN_FOLLOW
end
function modifier_item_demon_slayer_mage.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_SPELL_AMPLIFY_PERCENTAGE}
end
function modifier_item_demon_slayer_mage.prototype.GetModifierSpellAmplify_Percentage(self)
return -math.abs(self:GetAbility():GetSpecialValueFor("spell_amp_debuff"))
end
function modifier_item_demon_slayer_mage.prototype.OnCreated(self)
if not IsServer() then
return
end
self:PulseDps()
self:StartIntervalThink(1)
end
function modifier_item_demon_slayer_mage.prototype.OnIntervalThink(self)
if not IsServer() then
return
end
self:PulseDps()
end
function modifier_item_demon_slayer_mage.prototype.PulseDps(self)
local parent = self:GetParent()
local ability = self:GetAbility()
local caster = self:GetCaster()
if not ability or not caster or not (parent and parent:IsAlive()) then
return
end
local d = ability:GetSpecialValueFor("dps")
ApplyDamage({
victim = parent,
attacker = caster,
damage = d,
damage_type = DAMAGE_TYPE_MAGICAL,
ability = ability,
damage_flags = DOTA_DAMAGE_FLAG_NO_SPELL_AMPLIFICATION
})
end
modifier_item_demon_slayer_mage = __TS__Decorate(
modifier_item_demon_slayer_mage,
modifier_item_demon_slayer_mage,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_demon_slayer_mage"}
)
____exports.modifier_item_demon_slayer_mage = modifier_item_demon_slayer_mage
return ____exports
@@ -0,0 +1,148 @@
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_demonic_bow = __TS__Class()
local item_demonic_bow = ____exports.item_demonic_bow
item_demonic_bow.name = "item_demonic_bow"
item_demonic_bow.____file_path = "scripts/vscripts/items/default_items/item_demonic_bow.lua"
__TS__ClassExtends(item_demonic_bow, BaseItem)
function item_demonic_bow.prototype.GetIntrinsicModifierName(self)
return "modifier_item_demonic_bow"
end
item_demonic_bow = __TS__Decorate(
item_demonic_bow,
item_demonic_bow,
{registerAbility(nil)},
{kind = "class", name = "item_demonic_bow"}
)
____exports.item_demonic_bow = item_demonic_bow
____exports.modifier_item_demonic_bow = __TS__Class()
local modifier_item_demonic_bow = ____exports.modifier_item_demonic_bow
modifier_item_demonic_bow.name = "modifier_item_demonic_bow"
modifier_item_demonic_bow.____file_path = "scripts/vscripts/items/default_items/item_demonic_bow.lua"
__TS__ClassExtends(modifier_item_demonic_bow, BaseModifier)
function modifier_item_demonic_bow.prototype.IsHidden(self)
return true
end
function modifier_item_demonic_bow.prototype.IsDebuff(self)
return false
end
function modifier_item_demonic_bow.prototype.IsPurgable(self)
return false
end
function modifier_item_demonic_bow.prototype.OnCreated(self)
if not IsServer() then
return
end
end
function modifier_item_demonic_bow.prototype.CheckState(self)
return {[MODIFIER_STATE_CANNOT_MISS] = true}
end
function modifier_item_demonic_bow.prototype.DeclareFunctions(self)
return {
MODIFIER_EVENT_ON_ATTACK,
MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT,
MODIFIER_PROPERTY_ATTACK_RANGE_BONUS,
MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE,
MODIFIER_PROPERTY_STATS_AGILITY_BONUS,
MODIFIER_PROPERTY_STATS_STRENGTH_BONUS,
MODIFIER_PROPERTY_STATS_INTELLECT_BONUS,
MODIFIER_PROPERTY_HEALTH_BONUS,
MODIFIER_PROPERTY_PROCATTACK_BONUS_DAMAGE_MAGICAL
}
end
function modifier_item_demonic_bow.prototype.GetModifierProcAttack_BonusDamage_Magical(self, event)
if self:GetParent():IsIllusion() or not self:GetParent():IsRangedAttacker() then
return 0
end
return self:GetAbility():GetSpecialValueFor("proc_damage_magical")
end
function modifier_item_demonic_bow.prototype.GetModifierAttackSpeedBonus_Constant(self)
return self:GetAbility():GetSpecialValueFor("attack_speed")
end
function modifier_item_demonic_bow.prototype.GetModifierAttackRangeBonus(self)
if not self:GetParent():IsRangedAttacker() then
return 0
end
return self:GetAbility():GetSpecialValueFor("attack_range")
end
function modifier_item_demonic_bow.prototype.GetModifierBonusStats_Strength(self)
return self:GetAbility():GetSpecialValueFor("strength")
end
function modifier_item_demonic_bow.prototype.GetModifierBonusStats_Agility(self)
return self:GetAbility():GetSpecialValueFor("agility")
end
function modifier_item_demonic_bow.prototype.GetModifierBonusStats_Intellect(self)
return self:GetAbility():GetSpecialValueFor("intellect")
end
function modifier_item_demonic_bow.prototype.GetModifierHealthBonus(self)
return self:GetAbility():GetSpecialValueFor("health")
end
function modifier_item_demonic_bow.prototype.OnAttack(self, event)
if not IsServer() then
return
end
local attacker = event.attacker
local target = event.target
if not attacker or not target then
return
end
if not attacker:IsRealHero() then
return
end
if attacker ~= self:GetParent() then
return
end
if not attacker:IsRangedAttacker() then
return
end
if event.no_attack_cooldown then
return
end
local radius = self:GetParent():GetAttackRangeBuffer() + self:GetParent():GetBaseAttackRange()
local units = FindUnitsInRadius(
attacker:GetTeamNumber(),
attacker:GetAbsOrigin(),
nil,
radius,
DOTA_UNIT_TARGET_TEAM_ENEMY,
DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_BASIC + DOTA_UNIT_TARGET_BUILDING,
DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES + DOTA_UNIT_TARGET_FLAG_FOW_VISIBLE,
FIND_CLOSEST,
false
)
local attackCount = 0
for ____, unit in ipairs(units) do
if unit and not unit:IsNull() and unit ~= target and unit:IsAlive() then
attacker:PerformAttack(
unit,
true,
true,
true,
false,
true,
false,
false
)
attackCount = attackCount + 1
end
if attackCount >= self:GetAbility():GetSpecialValueFor("attack_count") then
break
end
end
end
modifier_item_demonic_bow = __TS__Decorate(
modifier_item_demonic_bow,
modifier_item_demonic_bow,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_demonic_bow"}
)
____exports.modifier_item_demonic_bow = modifier_item_demonic_bow
return ____exports
@@ -0,0 +1,414 @@
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 ____luck = require("utils.luck")
local rollLuckChance = ____luck.rollLuckChance
local DESOLATOR_PROJECTILE = "particles/items_fx/desolator_projectile.vpcf"
--- Кастомный Desolator (порт zombie_invasion): урон, HP, заряды с убийств, коррупция брони, снаряд.
____exports.item_desolator_custom = __TS__Class()
local item_desolator_custom = ____exports.item_desolator_custom
item_desolator_custom.name = "item_desolator_custom"
item_desolator_custom.____file_path = "scripts/vscripts/items/default_items/item_desolator_custom.lua"
__TS__ClassExtends(item_desolator_custom, BaseItem)
function item_desolator_custom.prototype.Precache(self, context)
PrecacheResource("particle", DESOLATOR_PROJECTILE, context)
PrecacheResource("particle", "particles/units/heroes/hero_spectre/spectre_desolate_debuff.vpcf", context)
end
function item_desolator_custom.prototype.GetIntrinsicModifierName(self)
return ____exports.modifier_item_desolator_custom.name
end
item_desolator_custom = __TS__Decorate(
item_desolator_custom,
item_desolator_custom,
{registerAbility(nil)},
{kind = "class", name = "item_desolator_custom"}
)
____exports.item_desolator_custom = item_desolator_custom
____exports.modifier_item_desolator_custom = __TS__Class()
local modifier_item_desolator_custom = ____exports.modifier_item_desolator_custom
modifier_item_desolator_custom.name = "modifier_item_desolator_custom"
modifier_item_desolator_custom.____file_path = "scripts/vscripts/items/default_items/item_desolator_custom.lua"
__TS__ClassExtends(modifier_item_desolator_custom, BaseModifier)
function modifier_item_desolator_custom.prototype.IsHidden(self)
return true
end
function modifier_item_desolator_custom.prototype.IsPurgable(self)
return false
end
function modifier_item_desolator_custom.prototype.GetAttributes(self)
return MODIFIER_ATTRIBUTE_MULTIPLE
end
function modifier_item_desolator_custom.prototype.GetPriority(self)
return MODIFIER_PRIORITY_ULTRA
end
function modifier_item_desolator_custom.prototype.DeclareFunctions(self)
return {
MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE,
MODIFIER_PROPERTY_EXTRA_HEALTH_BONUS,
MODIFIER_EVENT_ON_ATTACK_LANDED,
MODIFIER_EVENT_ON_DEATH,
MODIFIER_PROPERTY_PROJECTILE_NAME
}
end
function modifier_item_desolator_custom.prototype.GetModifierProjectileName(self)
return DESOLATOR_PROJECTILE
end
function modifier_item_desolator_custom.prototype.GetModifierPreAttack_BonusDamage(self)
local ability = self:GetAbility()
if not ability then
return 0
end
return ability:GetSpecialValueFor("bonus_damage") + ability:GetCurrentCharges()
end
function modifier_item_desolator_custom.prototype.GetModifierExtraHealthBonus(self)
local ability = self:GetAbility()
if not ability then
return 0
end
return ability:GetSpecialValueFor("bonus_health") + ability:GetCurrentCharges()
end
function modifier_item_desolator_custom.prototype.OnAttackLanded(self, event)
if not IsServer() then
return
end
local parent = self:GetParent()
if event.attacker ~= parent or not event.target then
return
end
local ability = self:GetAbility()
if not ability then
return
end
local duration = ability:GetSpecialValueFor("corruption_duration")
event.target:AddNewModifier(parent, ability, ____exports.modifier_item_desolator_custom_debuff.name, {duration = duration})
end
function modifier_item_desolator_custom.prototype.OnDeath(self, event)
if not IsServer() then
return
end
local parent = self:GetParent()
local ability = self:GetAbility()
if not ability or not (parent and parent:IsAlive()) then
return
end
if event.attacker ~= parent then
return
end
local victim = event.unit
if not victim or victim == parent or not IsValidEntity(victim) then
return
end
if not victim:HasModifier(____exports.modifier_item_desolator_custom_debuff.name) then
return
end
local chancePct = ability:GetSpecialValueFor("chance_to_stack")
if chancePct <= 0 then
return
end
local ____parent_IsRealHero_result_2
if parent:IsRealHero() then
____parent_IsRealHero_result_2 = rollLuckChance(nil, parent, chancePct / 100)
else
____parent_IsRealHero_result_2 = RollPercentage(chancePct)
end
local stacked = ____parent_IsRealHero_result_2
if not stacked then
return
end
local maxCap = ability:GetSpecialValueFor("max_damage")
local perKill = ability:GetSpecialValueFor("bonus_damage_per_kill")
local next = math.min(
ability:GetCurrentCharges() + perKill,
maxCap
)
ability:SetCurrentCharges(next)
if parent:IsRealHero() then
parent:CalculateStatBonus(true)
end
end
function modifier_item_desolator_custom.prototype.GetTexture(self)
return "item_desolator"
end
modifier_item_desolator_custom = __TS__Decorate(
modifier_item_desolator_custom,
modifier_item_desolator_custom,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_desolator_custom"}
)
____exports.modifier_item_desolator_custom = modifier_item_desolator_custom
____exports.modifier_item_desolator_custom_debuff = __TS__Class()
local modifier_item_desolator_custom_debuff = ____exports.modifier_item_desolator_custom_debuff
modifier_item_desolator_custom_debuff.name = "modifier_item_desolator_custom_debuff"
modifier_item_desolator_custom_debuff.____file_path = "scripts/vscripts/items/default_items/item_desolator_custom.lua"
__TS__ClassExtends(modifier_item_desolator_custom_debuff, BaseModifier)
function modifier_item_desolator_custom_debuff.prototype.____constructor(self, ...)
BaseModifier.prototype.____constructor(self, ...)
self.armorDebuff = 0
end
function modifier_item_desolator_custom_debuff.prototype.IsHidden(self)
return false
end
function modifier_item_desolator_custom_debuff.prototype.IsDebuff(self)
return true
end
function modifier_item_desolator_custom_debuff.prototype.IsPurgable(self)
return true
end
function modifier_item_desolator_custom_debuff.prototype.OnCreated(self)
self:RefreshVals()
end
function modifier_item_desolator_custom_debuff.prototype.OnRefresh(self)
self:RefreshVals()
end
function modifier_item_desolator_custom_debuff.prototype.RefreshVals(self)
local ability = self:GetAbility()
self.armorDebuff = ability and ability:GetSpecialValueFor("corruption_armor") or 0
end
function modifier_item_desolator_custom_debuff.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS, MODIFIER_PROPERTY_HEALTH_REGEN_PERCENTAGE, MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE}
end
function modifier_item_desolator_custom_debuff.prototype.GetModifierPhysicalArmorBonus(self)
return self.armorDebuff
end
function modifier_item_desolator_custom_debuff.prototype.GetModifierMoveSpeedBonus_Percentage(self)
local ability = self:GetAbility()
return ability and ability:GetSpecialValueFor("corruption_movespeed_slow") or 0
end
function modifier_item_desolator_custom_debuff.prototype.GetModifierHealthRegenPercentage(self)
local ability = self:GetAbility()
if not ability then
return 1
end
local v = ability:GetSpecialValueFor("corruption_heal_reduction")
return 1 + (v - 100) * 0.01
end
function modifier_item_desolator_custom_debuff.prototype.GetEffectName(self)
return "particles/units/heroes/hero_spectre/spectre_desolate_debuff.vpcf"
end
function modifier_item_desolator_custom_debuff.prototype.GetEffectAttachType(self)
return PATTACH_ABSORIGIN_FOLLOW
end
function modifier_item_desolator_custom_debuff.prototype.GetTexture(self)
return "item_desolator"
end
modifier_item_desolator_custom_debuff = __TS__Decorate(
modifier_item_desolator_custom_debuff,
modifier_item_desolator_custom_debuff,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_desolator_custom_debuff"}
)
____exports.modifier_item_desolator_custom_debuff = modifier_item_desolator_custom_debuff
____exports.item_desolator_custom_2 = __TS__Class()
local item_desolator_custom_2 = ____exports.item_desolator_custom_2
item_desolator_custom_2.name = "item_desolator_custom_2"
item_desolator_custom_2.____file_path = "scripts/vscripts/items/default_items/item_desolator_custom.lua"
__TS__ClassExtends(item_desolator_custom_2, BaseItem)
function item_desolator_custom_2.prototype.Precache(self, context)
PrecacheResource("particle", DESOLATOR_PROJECTILE, context)
PrecacheResource("particle", "particles/units/heroes/hero_spectre/spectre_desolate_debuff.vpcf", context)
end
function item_desolator_custom_2.prototype.GetIntrinsicModifierName(self)
return ____exports.modifier_item_desolator_custom_2.name
end
item_desolator_custom_2 = __TS__Decorate(
item_desolator_custom_2,
item_desolator_custom_2,
{registerAbility(nil)},
{kind = "class", name = "item_desolator_custom_2"}
)
____exports.item_desolator_custom_2 = item_desolator_custom_2
____exports.modifier_item_desolator_custom_2 = __TS__Class()
local modifier_item_desolator_custom_2 = ____exports.modifier_item_desolator_custom_2
modifier_item_desolator_custom_2.name = "modifier_item_desolator_custom_2"
modifier_item_desolator_custom_2.____file_path = "scripts/vscripts/items/default_items/item_desolator_custom.lua"
__TS__ClassExtends(modifier_item_desolator_custom_2, BaseModifier)
function modifier_item_desolator_custom_2.prototype.IsHidden(self)
return true
end
function modifier_item_desolator_custom_2.prototype.IsPurgable(self)
return false
end
function modifier_item_desolator_custom_2.prototype.GetAttributes(self)
return MODIFIER_ATTRIBUTE_MULTIPLE
end
function modifier_item_desolator_custom_2.prototype.GetPriority(self)
return MODIFIER_PRIORITY_ULTRA
end
function modifier_item_desolator_custom_2.prototype.DeclareFunctions(self)
return {
MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE,
MODIFIER_PROPERTY_EXTRA_HEALTH_BONUS,
MODIFIER_EVENT_ON_ATTACK_LANDED,
MODIFIER_EVENT_ON_DEATH,
MODIFIER_PROPERTY_PROJECTILE_NAME
}
end
function modifier_item_desolator_custom_2.prototype.GetModifierProjectileName(self)
return DESOLATOR_PROJECTILE
end
function modifier_item_desolator_custom_2.prototype.GetModifierPreAttack_BonusDamage(self)
local ability = self:GetAbility()
if not ability then
return 0
end
return ability:GetSpecialValueFor("bonus_damage") + ability:GetCurrentCharges()
end
function modifier_item_desolator_custom_2.prototype.GetModifierExtraHealthBonus(self)
local ability = self:GetAbility()
if not ability then
return 0
end
return ability:GetSpecialValueFor("bonus_health") + ability:GetCurrentCharges()
end
function modifier_item_desolator_custom_2.prototype.OnAttackLanded(self, event)
if not IsServer() then
return
end
local parent = self:GetParent()
if event.attacker ~= parent or not event.target then
return
end
local ability = self:GetAbility()
if not ability then
return
end
local duration = ability:GetSpecialValueFor("corruption_duration")
local perStack = ability:GetSpecialValueFor("corruption_armor_per_stack")
local cap = ability:GetSpecialValueFor("corruption_armor_cap")
local maxStacks = math.max(
1,
math.ceil(cap / math.max(1, perStack))
)
local target = event.target
local existing = target:FindModifierByName(____exports.modifier_item_desolator_custom_2_debuff.name)
if existing then
if existing:GetStackCount() < maxStacks then
existing:IncrementStackCount()
end
existing:SetDuration(duration, true)
else
local m = target:AddNewModifier(parent, ability, ____exports.modifier_item_desolator_custom_2_debuff.name, {duration = duration})
if m ~= nil then
m:SetStackCount(1)
end
end
end
function modifier_item_desolator_custom_2.prototype.OnDeath(self, event)
if not IsServer() then
return
end
local parent = self:GetParent()
local ability = self:GetAbility()
if not ability or not (parent and parent:IsAlive()) then
return
end
if event.attacker ~= parent then
return
end
local victim = event.unit
if not victim or victim == parent or not IsValidEntity(victim) then
return
end
if not victim:HasModifier(____exports.modifier_item_desolator_custom_2_debuff.name) then
return
end
local chancePct = ability:GetSpecialValueFor("chance_to_stack")
if chancePct <= 0 then
return
end
local ____parent_IsRealHero_result_7
if parent:IsRealHero() then
____parent_IsRealHero_result_7 = rollLuckChance(nil, parent, chancePct / 100)
else
____parent_IsRealHero_result_7 = RollPercentage(chancePct)
end
local stacked = ____parent_IsRealHero_result_7
if not stacked then
return
end
local maxCap = ability:GetSpecialValueFor("max_damage")
local perKill = ability:GetSpecialValueFor("bonus_damage_per_kill")
local next = math.min(
ability:GetCurrentCharges() + perKill,
maxCap
)
ability:SetCurrentCharges(next)
if parent:IsRealHero() then
parent:CalculateStatBonus(true)
end
end
function modifier_item_desolator_custom_2.prototype.GetTexture(self)
return "item_desolator_2"
end
modifier_item_desolator_custom_2 = __TS__Decorate(
modifier_item_desolator_custom_2,
modifier_item_desolator_custom_2,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_desolator_custom_2"}
)
____exports.modifier_item_desolator_custom_2 = modifier_item_desolator_custom_2
____exports.modifier_item_desolator_custom_2_debuff = __TS__Class()
local modifier_item_desolator_custom_2_debuff = ____exports.modifier_item_desolator_custom_2_debuff
modifier_item_desolator_custom_2_debuff.name = "modifier_item_desolator_custom_2_debuff"
modifier_item_desolator_custom_2_debuff.____file_path = "scripts/vscripts/items/default_items/item_desolator_custom.lua"
__TS__ClassExtends(modifier_item_desolator_custom_2_debuff, BaseModifier)
function modifier_item_desolator_custom_2_debuff.prototype.IsHidden(self)
return false
end
function modifier_item_desolator_custom_2_debuff.prototype.IsDebuff(self)
return true
end
function modifier_item_desolator_custom_2_debuff.prototype.IsPurgable(self)
return true
end
function modifier_item_desolator_custom_2_debuff.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS, MODIFIER_PROPERTY_HEALTH_REGEN_PERCENTAGE, MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE}
end
function modifier_item_desolator_custom_2_debuff.prototype.GetModifierPhysicalArmorBonus(self)
local ability = self:GetAbility()
if not ability then
return 0
end
local perStack = ability:GetSpecialValueFor("corruption_armor_per_stack")
local cap = ability:GetSpecialValueFor("corruption_armor_cap")
return -math.min(
self:GetStackCount() * perStack,
cap
)
end
function modifier_item_desolator_custom_2_debuff.prototype.GetModifierMoveSpeedBonus_Percentage(self)
local ability = self:GetAbility()
return ability and ability:GetSpecialValueFor("corruption_movespeed_slow") or 0
end
function modifier_item_desolator_custom_2_debuff.prototype.GetModifierHealthRegenPercentage(self)
local ability = self:GetAbility()
if not ability then
return 1
end
local v = ability:GetSpecialValueFor("corruption_heal_reduction")
return 1 + (v - 100) * 0.01
end
function modifier_item_desolator_custom_2_debuff.prototype.GetEffectName(self)
return "particles/units/heroes/hero_spectre/spectre_desolate_debuff.vpcf"
end
function modifier_item_desolator_custom_2_debuff.prototype.GetEffectAttachType(self)
return PATTACH_ABSORIGIN_FOLLOW
end
function modifier_item_desolator_custom_2_debuff.prototype.GetTexture(self)
return "item_desolator_2"
end
modifier_item_desolator_custom_2_debuff = __TS__Decorate(
modifier_item_desolator_custom_2_debuff,
modifier_item_desolator_custom_2_debuff,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_desolator_custom_2_debuff"}
)
____exports.modifier_item_desolator_custom_2_debuff = modifier_item_desolator_custom_2_debuff
return ____exports
@@ -0,0 +1,76 @@
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
____exports.item_divine_rapier_custom = __TS__Class()
local item_divine_rapier_custom = ____exports.item_divine_rapier_custom
item_divine_rapier_custom.name = "item_divine_rapier_custom"
item_divine_rapier_custom.____file_path = "scripts/vscripts/items/default_items/item_divine_rapier_custom.lua"
__TS__ClassExtends(item_divine_rapier_custom, BaseItem)
function item_divine_rapier_custom.prototype.GetIntrinsicModifierName(self)
return "modifier_divine_rapier_custom"
end
item_divine_rapier_custom = __TS__Decorate(
item_divine_rapier_custom,
item_divine_rapier_custom,
{registerAbility(nil)},
{kind = "class", name = "item_divine_rapier_custom"}
)
____exports.item_divine_rapier_custom = item_divine_rapier_custom
____exports.modifier_divine_rapier_custom = __TS__Class()
local modifier_divine_rapier_custom = ____exports.modifier_divine_rapier_custom
modifier_divine_rapier_custom.name = "modifier_divine_rapier_custom"
modifier_divine_rapier_custom.____file_path = "scripts/vscripts/items/default_items/item_divine_rapier_custom.lua"
__TS__ClassExtends(modifier_divine_rapier_custom, BaseModifier)
function modifier_divine_rapier_custom.prototype.IsHidden(self)
return true
end
function modifier_divine_rapier_custom.prototype.IsDebuff(self)
return false
end
function modifier_divine_rapier_custom.prototype.IsPurgable(self)
return false
end
function modifier_divine_rapier_custom.prototype.GetAttributes(self)
return MODIFIER_ATTRIBUTE_MULTIPLE
end
function modifier_divine_rapier_custom.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE, MODIFIER_PROPERTY_PROCATTACK_BONUS_DAMAGE_PURE, MODIFIER_EVENT_ON_ATTACK_LANDED}
end
function modifier_divine_rapier_custom.prototype.OnAttackLanded(self, event)
if self:GetParent() == event.attacker then
local damage = self:GetAbility():GetSpecialValueFor("proc_damage") / 100 * self:GetParent():GetAverageTrueAttackDamage(event.target)
SendOverheadEventMessage(
nil,
OVERHEAD_ALERT_DAMAGE,
event.target,
damage,
nil
)
local particle = ParticleManager:CreateParticle("models/heroes/phantom_assassin_persona/debut/particles/pa_debutdash/pa_debutdash_fragments.vpcf", PATTACH_CUSTOMORIGIN, nil)
ParticleManager:SetParticleControl(
particle,
0,
event.target:GetAbsOrigin()
)
ParticleManager:ReleaseParticleIndex(particle)
ApplyDamage({victim = event.target, attacker = event.attacker, damage = damage, damage_type = DAMAGE_TYPE_PURE})
end
end
function modifier_divine_rapier_custom.prototype.GetModifierPreAttack_BonusDamage(self)
return self:GetAbility():GetSpecialValueFor("bonus_damage")
end
modifier_divine_rapier_custom = __TS__Decorate(
modifier_divine_rapier_custom,
modifier_divine_rapier_custom,
{registerModifier(nil)},
{kind = "class", name = "modifier_divine_rapier_custom"}
)
____exports.modifier_divine_rapier_custom = modifier_divine_rapier_custom
return ____exports
@@ -0,0 +1,324 @@
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__Decorate = ____lualib.__TS__Decorate
local __TS__ArrayPush = ____lualib.__TS__ArrayPush
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 ETHEREAL_BLADE_PARTICLE = "particles/items_fx/ethereal_blade.vpcf"
local ETHEREAL_STATUS_PARTICLE = "particles/status_fx/status_effect_ghost.vpcf"
____exports.item_ethereal_blade_custom = __TS__Class()
local item_ethereal_blade_custom = ____exports.item_ethereal_blade_custom
item_ethereal_blade_custom.name = "item_ethereal_blade_custom"
item_ethereal_blade_custom.____file_path = "scripts/vscripts/items/default_items/item_ethereal_blade_custom.lua"
__TS__ClassExtends(item_ethereal_blade_custom, BaseItem)
function item_ethereal_blade_custom.prototype.Precache(self, context)
PrecacheResource("particle", ETHEREAL_BLADE_PARTICLE, context)
PrecacheResource("particle", ETHEREAL_STATUS_PARTICLE, context)
PrecacheResource("soundfile", "soundevents/game_sounds_items.vsndevts", context)
end
function item_ethereal_blade_custom.prototype.GetIntrinsicModifierName(self)
return ____exports.modifier_item_ethereal_blade_custom.name
end
function item_ethereal_blade_custom.prototype.GetAOERadius(self)
return self:GetSpecialValueFor("splash_radius")
end
function item_ethereal_blade_custom.prototype.GetCastRange(self)
local range = self:GetSpecialValueFor("abilitycastrange")
if IsServer() then
return range
end
local ____opt_0 = self:GetCaster()
local bonus = ____opt_0 and ____opt_0:GetCastRangeBonus() or 0
return range - bonus
end
function item_ethereal_blade_custom.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
local target = self:GetCursorTarget()
if not target then
return
end
local splashRadius = self:GetSpecialValueFor("splash_radius")
local projectileSpeed = self:GetSpecialValueFor("projectile_speed")
local sourceLoc = caster:GetAbsOrigin()
caster:EmitSound("DOTA_Item.EtherealBlade.Activate")
local isAlly = target:GetTeamNumber() == caster:GetTeamNumber()
local units = {}
if isAlly then
units = {target}
else
units = FindUnitsInRadius(
caster:GetTeamNumber(),
target:GetAbsOrigin(),
nil,
splashRadius,
DOTA_UNIT_TARGET_TEAM_ENEMY,
DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_BASIC,
DOTA_UNIT_TARGET_FLAG_NONE,
FIND_ANY_ORDER,
false
)
if #units == 0 then
units = {target}
end
end
for ____, enemy in ipairs(units) do
ProjectileManager:CreateTrackingProjectile({
Target = enemy,
Source = caster,
Ability = self,
EffectName = ETHEREAL_BLADE_PARTICLE,
iMoveSpeed = projectileSpeed,
vSourceLoc = sourceLoc,
bDodgeable = true,
bProvidesVision = false
})
end
end
function item_ethereal_blade_custom.prototype.OnProjectileHit(self, target)
if not IsServer() or not target then
return
end
local caster = self:GetCaster()
if target:IsMagicImmune() then
return
end
if target:TriggerSpellAbsorb(self) then
return
end
target:EmitSound("DOTA_Item.EtherealBlade.Target")
local durationEnemy = self:GetSpecialValueFor("duration")
local durationAlly = self:GetSpecialValueFor("duration_ally")
local isAlly = target:GetTeamNumber() == caster:GetTeamNumber()
if isAlly then
target:AddNewModifier(caster, self, ____exports.modifier_item_ethereal_blade_custom_ethereal.name, {duration = durationAlly, is_ally = 1})
target:AddNewModifier(caster, self, ____exports.modifier_item_ethereal_blade_custom_ally_haste.name, {duration = durationAlly})
return
end
local resistDuration = durationEnemy * (1 - target:GetStatusResistance())
target:AddNewModifier(caster, self, ____exports.modifier_item_ethereal_blade_custom_ethereal.name, {duration = resistDuration, is_ally = 0})
local hero = caster
local statMult = self:GetSpecialValueFor("blast_stat_multiplier")
local baseDamage = self:GetSpecialValueFor("blast_damage_base")
local damage = (hero:IsHero() and hero:GetPrimaryStatValue() or 0) * statMult + baseDamage
ApplyDamage({
victim = target,
attacker = caster,
damage = damage,
damage_type = DAMAGE_TYPE_MAGICAL,
ability = self
})
end
item_ethereal_blade_custom = __TS__Decorate(
item_ethereal_blade_custom,
item_ethereal_blade_custom,
{registerAbility(nil)},
{kind = "class", name = "item_ethereal_blade_custom"}
)
____exports.item_ethereal_blade_custom = item_ethereal_blade_custom
____exports.modifier_item_ethereal_blade_custom = __TS__Class()
local modifier_item_ethereal_blade_custom = ____exports.modifier_item_ethereal_blade_custom
modifier_item_ethereal_blade_custom.name = "modifier_item_ethereal_blade_custom"
modifier_item_ethereal_blade_custom.____file_path = "scripts/vscripts/items/default_items/item_ethereal_blade_custom.lua"
__TS__ClassExtends(modifier_item_ethereal_blade_custom, BaseModifier)
function modifier_item_ethereal_blade_custom.prototype.IsHidden(self)
return true
end
function modifier_item_ethereal_blade_custom.prototype.IsPurgable(self)
return false
end
function modifier_item_ethereal_blade_custom.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_ethereal_blade_custom.prototype.GetAttributes(self)
return MODIFIER_ATTRIBUTE_MULTIPLE
end
function modifier_item_ethereal_blade_custom.prototype.DeclareFunctions(self)
return {
MODIFIER_PROPERTY_STATS_STRENGTH_BONUS,
MODIFIER_PROPERTY_STATS_AGILITY_BONUS,
MODIFIER_PROPERTY_STATS_INTELLECT_BONUS,
MODIFIER_PROPERTY_STATUS_RESISTANCE_STACKING,
MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT,
MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE,
MODIFIER_PROPERTY_HP_REGEN_AMPLIFY_PERCENTAGE,
MODIFIER_PROPERTY_MP_REGEN_AMPLIFY_PERCENTAGE,
MODIFIER_PROPERTY_SPELL_AMPLIFY_PERCENTAGE,
MODIFIER_PROPERTY_PROCATTACK_BONUS_DAMAGE_MAGICAL
}
end
function modifier_item_ethereal_blade_custom.prototype.getValue(self, name)
local ____opt_2 = self:GetAbility()
return ____opt_2 and ____opt_2:GetSpecialValueFor(name) or 0
end
function modifier_item_ethereal_blade_custom.prototype.GetModifierBonusStats_Strength(self)
return self:getValue("bonus_strength")
end
function modifier_item_ethereal_blade_custom.prototype.GetModifierBonusStats_Agility(self)
return self:getValue("bonus_agility")
end
function modifier_item_ethereal_blade_custom.prototype.GetModifierBonusStats_Intellect(self)
return self:getValue("bonus_intellect")
end
function modifier_item_ethereal_blade_custom.prototype.GetModifierStatusResistanceStacking(self)
return self:getValue("status_resistance")
end
function modifier_item_ethereal_blade_custom.prototype.GetModifierAttackSpeedBonus_Constant(self)
return self:getValue("bonus_attack_speed")
end
function modifier_item_ethereal_blade_custom.prototype.GetModifierMoveSpeedBonus_Percentage(self)
return self:getValue("movement_speed_percent_bonus")
end
function modifier_item_ethereal_blade_custom.prototype.GetModifierHPRegenAmplify_Percentage(self)
return self:getValue("hp_regen_amp")
end
function modifier_item_ethereal_blade_custom.prototype.GetModifierMPRegenAmplify_Percentage(self)
return self:getValue("mana_regen_multiplier")
end
function modifier_item_ethereal_blade_custom.prototype.GetModifierSpellAmplify_Percentage(self)
return self:getValue("spell_amp")
end
function modifier_item_ethereal_blade_custom.prototype.GetModifierProcAttack_BonusDamage_Magical(self)
return self:getValue("magic_damage_attack")
end
modifier_item_ethereal_blade_custom = __TS__Decorate(
modifier_item_ethereal_blade_custom,
modifier_item_ethereal_blade_custom,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_ethereal_blade_custom"}
)
____exports.modifier_item_ethereal_blade_custom = modifier_item_ethereal_blade_custom
____exports.modifier_item_ethereal_blade_custom_ethereal = __TS__Class()
local modifier_item_ethereal_blade_custom_ethereal = ____exports.modifier_item_ethereal_blade_custom_ethereal
modifier_item_ethereal_blade_custom_ethereal.name = "modifier_item_ethereal_blade_custom_ethereal"
modifier_item_ethereal_blade_custom_ethereal.____file_path = "scripts/vscripts/items/default_items/item_ethereal_blade_custom.lua"
__TS__ClassExtends(modifier_item_ethereal_blade_custom_ethereal, BaseModifier)
function modifier_item_ethereal_blade_custom_ethereal.prototype.____constructor(self, ...)
BaseModifier.prototype.____constructor(self, ...)
self.blastMovementSlow = 0
self.etherealDamageBonus = 0
self.turnRateReduction = 0
self.isAlly = false
end
function modifier_item_ethereal_blade_custom_ethereal.prototype.IsHidden(self)
return false
end
function modifier_item_ethereal_blade_custom_ethereal.prototype.IsDebuff(self)
return not self.isAlly
end
function modifier_item_ethereal_blade_custom_ethereal.prototype.IsPurgable(self)
return true
end
function modifier_item_ethereal_blade_custom_ethereal.prototype.GetStatusEffectName(self)
return ETHEREAL_STATUS_PARTICLE
end
function modifier_item_ethereal_blade_custom_ethereal.prototype.StatusEffectPriority(self)
return MODIFIER_PRIORITY_NORMAL
end
function modifier_item_ethereal_blade_custom_ethereal.prototype.OnCreated(self, params)
local ability = self:GetAbility()
if not ability then
self:Destroy()
return
end
self.isAlly = (params.is_ally or 0) == 1
self.blastMovementSlow = ability:GetSpecialValueFor("blast_movement_slow")
self.etherealDamageBonus = ability:GetSpecialValueFor("ethereal_damage_bonus")
self.turnRateReduction = ability:GetSpecialValueFor("turn_rate_reduction")
end
function modifier_item_ethereal_blade_custom_ethereal.prototype.CheckState(self)
return {[MODIFIER_STATE_ATTACK_IMMUNE] = true, [MODIFIER_STATE_DISARMED] = true}
end
function modifier_item_ethereal_blade_custom_ethereal.prototype.DeclareFunctions(self)
local funcs = {MODIFIER_PROPERTY_MAGICAL_RESISTANCE_DECREPIFY_UNIQUE, MODIFIER_PROPERTY_ABSOLUTE_NO_DAMAGE_PHYSICAL}
if self.isAlly then
funcs[#funcs + 1] = MODIFIER_PROPERTY_IGNORE_CAST_ANGLE
else
__TS__ArrayPush(funcs, MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE, MODIFIER_PROPERTY_TURN_RATE_PERCENTAGE)
end
return funcs
end
function modifier_item_ethereal_blade_custom_ethereal.prototype.GetModifierMoveSpeedBonus_Percentage(self)
if self.isAlly then
return 0
end
return self.blastMovementSlow
end
function modifier_item_ethereal_blade_custom_ethereal.prototype.GetModifierMagicalResistanceDecrepifyUnique(self)
return self.etherealDamageBonus
end
function modifier_item_ethereal_blade_custom_ethereal.prototype.GetAbsoluteNoDamagePhysical(self)
return 1
end
function modifier_item_ethereal_blade_custom_ethereal.prototype.GetModifierTurnRate_Percentage(self)
return self.turnRateReduction
end
function modifier_item_ethereal_blade_custom_ethereal.prototype.GetModifierIgnoreCastAngle(self)
return self.isAlly and 1 or 0
end
function modifier_item_ethereal_blade_custom_ethereal.prototype.GetTexture(self)
return "item_ethereal_blade"
end
modifier_item_ethereal_blade_custom_ethereal = __TS__Decorate(
modifier_item_ethereal_blade_custom_ethereal,
modifier_item_ethereal_blade_custom_ethereal,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_ethereal_blade_custom_ethereal"}
)
____exports.modifier_item_ethereal_blade_custom_ethereal = modifier_item_ethereal_blade_custom_ethereal
--- Ускорение при касте по союзнику (движение и атака).
____exports.modifier_item_ethereal_blade_custom_ally_haste = __TS__Class()
local modifier_item_ethereal_blade_custom_ally_haste = ____exports.modifier_item_ethereal_blade_custom_ally_haste
modifier_item_ethereal_blade_custom_ally_haste.name = "modifier_item_ethereal_blade_custom_ally_haste"
modifier_item_ethereal_blade_custom_ally_haste.____file_path = "scripts/vscripts/items/default_items/item_ethereal_blade_custom.lua"
__TS__ClassExtends(modifier_item_ethereal_blade_custom_ally_haste, BaseModifier)
function modifier_item_ethereal_blade_custom_ally_haste.prototype.____constructor(self, ...)
BaseModifier.prototype.____constructor(self, ...)
self.bonusMoveSpeedPct = 0
self.bonusAttackSpeedPct = 0
end
function modifier_item_ethereal_blade_custom_ally_haste.prototype.IsHidden(self)
return false
end
function modifier_item_ethereal_blade_custom_ally_haste.prototype.IsDebuff(self)
return false
end
function modifier_item_ethereal_blade_custom_ally_haste.prototype.IsPurgable(self)
return true
end
function modifier_item_ethereal_blade_custom_ally_haste.prototype.OnCreated(self)
local ability = self:GetAbility()
if not ability then
self:Destroy()
return
end
self.bonusMoveSpeedPct = ability:GetSpecialValueFor("ally_bonus_movespeed")
self.bonusAttackSpeedPct = ability:GetSpecialValueFor("ally_bonus_attack_speed")
end
function modifier_item_ethereal_blade_custom_ally_haste.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE, MODIFIER_PROPERTY_ATTACKSPEED_PERCENTAGE}
end
function modifier_item_ethereal_blade_custom_ally_haste.prototype.GetModifierMoveSpeedBonus_Percentage(self)
return self.bonusMoveSpeedPct
end
function modifier_item_ethereal_blade_custom_ally_haste.prototype.GetModifierAttackSpeedPercentage(self)
return self.bonusAttackSpeedPct
end
function modifier_item_ethereal_blade_custom_ally_haste.prototype.GetTexture(self)
return "item_ethereal_blade"
end
modifier_item_ethereal_blade_custom_ally_haste = __TS__Decorate(
modifier_item_ethereal_blade_custom_ally_haste,
modifier_item_ethereal_blade_custom_ally_haste,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_ethereal_blade_custom_ally_haste"}
)
____exports.modifier_item_ethereal_blade_custom_ally_haste = modifier_item_ethereal_blade_custom_ally_haste
return ____exports
@@ -0,0 +1,184 @@
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
local ____modifier_general_fired = require("abilities.modifiers.modifier_general_fired")
local modifier_general_fired = ____modifier_general_fired.modifier_general_fired
____exports.item_fire_cape = __TS__Class()
local item_fire_cape = ____exports.item_fire_cape
item_fire_cape.name = "item_fire_cape"
item_fire_cape.____file_path = "scripts/vscripts/items/default_items/item_fire_cape.lua"
__TS__ClassExtends(item_fire_cape, BaseItem)
function item_fire_cape.prototype.GetIntrinsicModifierName(self)
return "modifier_item_fire_cape"
end
function item_fire_cape.prototype.GetAOERadius(self)
return self:GetSpecialValueFor("radius")
end
item_fire_cape = __TS__Decorate(
item_fire_cape,
item_fire_cape,
{registerAbility(nil)},
{kind = "class", name = "item_fire_cape"}
)
____exports.item_fire_cape = item_fire_cape
____exports.modifier_item_fire_cape = __TS__Class()
local modifier_item_fire_cape = ____exports.modifier_item_fire_cape
modifier_item_fire_cape.name = "modifier_item_fire_cape"
modifier_item_fire_cape.____file_path = "scripts/vscripts/items/default_items/item_fire_cape.lua"
__TS__ClassExtends(modifier_item_fire_cape, BaseModifier)
function modifier_item_fire_cape.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_fire_cape.prototype.IsHidden(self)
return true
end
function modifier_item_fire_cape.prototype.IsPurgable(self)
return false
end
function modifier_item_fire_cape.prototype.GetAuraRadius(self)
return self:GetAbility():GetSpecialValueFor("radius")
end
function modifier_item_fire_cape.prototype.GetAuraSearchTeam(self)
return DOTA_UNIT_TARGET_TEAM_ENEMY
end
function modifier_item_fire_cape.prototype.GetAuraSearchType(self)
return DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_BASIC
end
function modifier_item_fire_cape.prototype.GetModifierAura(self)
return "modifier_item_fire_cape_aura"
end
function modifier_item_fire_cape.prototype.IsAura(self)
return true
end
function modifier_item_fire_cape.prototype.OnCreated(self, params)
self:StartIntervalThink(1)
end
function modifier_item_fire_cape.prototype.GetTexture(self)
return "default_items/fire_cape"
end
function modifier_item_fire_cape.prototype.DeclareFunctions(self)
return {
MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT,
MODIFIER_PROPERTY_MAGICAL_RESISTANCE_BONUS,
MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS,
MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE,
MODIFIER_PROPERTY_MANA_REGEN_CONSTANT,
MODIFIER_PROPERTY_HEALTH_REGEN_CONSTANT
}
end
function modifier_item_fire_cape.prototype.GetModifierPreAttack_BonusDamage(self)
return self:GetAbility():GetSpecialValueFor("bonus_damage")
end
function modifier_item_fire_cape.prototype.GetModifierConstantManaRegen(self)
return self:GetAbility():GetSpecialValueFor("bonus_mana_regen")
end
function modifier_item_fire_cape.prototype.GetModifierMagicalResistanceBonus(self, event)
return self:GetAbility():GetSpecialValueFor("bonus_magic_resistance")
end
function modifier_item_fire_cape.prototype.GetModifierConstantHealthRegen(self)
return self:GetAbility():GetSpecialValueFor("bonus_health_regen")
end
function modifier_item_fire_cape.prototype.GetModifierPhysicalArmorBonus(self, event)
return self:GetAbility():GetSpecialValueFor("bonus_physical_armor")
end
function modifier_item_fire_cape.prototype.GetModifierAttackSpeedBonus_Constant(self)
return self:GetAbility():GetSpecialValueFor("bonus_attack_speed")
end
function modifier_item_fire_cape.prototype.OnIntervalThink(self)
if not IsServer() then
return
end
if not self:GetParent():IsAlive() then
return
end
local ____opt_0 = self:GetCaster()
if ____opt_0 and ____opt_0:IsIllusion() then
return
end
local caster = self:GetCaster()
local radius = self:GetAbility():GetSpecialValueFor("radius")
local damage = self:GetAbility():GetSpecialValueFor("damage")
local enemies = FindUnitsInRadius(
caster:GetTeamNumber(),
caster:GetAbsOrigin(),
nil,
radius,
DOTA_UNIT_TARGET_TEAM_ENEMY,
bit.bor(DOTA_UNIT_TARGET_HERO, DOTA_UNIT_TARGET_BASIC),
DOTA_UNIT_TARGET_FLAG_NONE,
FIND_ANY_ORDER,
false
)
for ____, enemy in ipairs(enemies) do
local damage_table = {
victim = enemy,
attacker = caster,
damage = damage + self:GetParent():GetMaxMana() * (self:GetAbility():GetSpecialValueFor("mana_damage_pct") / 100),
damage_type = DAMAGE_TYPE_MAGICAL,
ability = self:GetAbility(),
damage_flags = DOTA_DAMAGE_FLAG_NONE
}
local modifier = enemy:AddNewModifier(
self:GetCaster(),
self:GetAbility(),
modifier_general_fired.name,
{}
)
if modifier then
local stacksPerLevel = self:GetAbility():GetSpecialValueFor("fire_stack")
do
local i = 0
while i < stacksPerLevel do
modifier:IncrementStackCount()
i = i + 1
end
end
end
ApplyDamage(damage_table)
end
end
modifier_item_fire_cape = __TS__Decorate(
modifier_item_fire_cape,
modifier_item_fire_cape,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_fire_cape"}
)
____exports.modifier_item_fire_cape = modifier_item_fire_cape
____exports.modifier_item_fire_cape_aura = __TS__Class()
local modifier_item_fire_cape_aura = ____exports.modifier_item_fire_cape_aura
modifier_item_fire_cape_aura.name = "modifier_item_fire_cape_aura"
modifier_item_fire_cape_aura.____file_path = "scripts/vscripts/items/default_items/item_fire_cape.lua"
__TS__ClassExtends(modifier_item_fire_cape_aura, BaseModifier)
function modifier_item_fire_cape_aura.prototype.RemoveOnDeath(self)
return true
end
function modifier_item_fire_cape_aura.prototype.IsHidden(self)
return true
end
function modifier_item_fire_cape_aura.prototype.IsPurgable(self)
return false
end
function modifier_item_fire_cape_aura.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_MAGICAL_RESISTANCE_BONUS, MODIFIER_PROPERTY_SPELL_AMPLIFY_PERCENTAGE}
end
function modifier_item_fire_cape_aura.prototype.GetModifierMagicalResistanceBonus(self)
return -self:GetAbility():GetSpecialValueFor("bonus_magic_resistance")
end
function modifier_item_fire_cape_aura.prototype.GetModifierSpellAmplify_Percentage(self)
return -self:GetAbility():GetSpecialValueFor("bonus_spell_amp")
end
modifier_item_fire_cape_aura = __TS__Decorate(
modifier_item_fire_cape_aura,
modifier_item_fire_cape_aura,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_fire_cape_aura"}
)
____exports.modifier_item_fire_cape_aura = modifier_item_fire_cape_aura
return ____exports
@@ -0,0 +1,615 @@
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__ArrayIncludes = ____lualib.__TS__ArrayIncludes
local __TS__Decorate = ____lualib.__TS__Decorate
local ____exports = {}
local ____fish_basic = require("abilities.fish_basic")
local modifier_fish_basic = ____fish_basic.modifier_fish_basic
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
--- Цепь из клиента Dota 2 (кастомный .vpcf без файла в content/particles не появится в игре)
local PARTICLE_MEATHOOK = "particles/units/heroes/hero_pudge/pudge_meathook.vpcf"
--- Юнит рыбы (npc_units_custom) — при успешном вываживании удаляется, дроп летит к герою
local BOMB_UNIT_NAMES = {"npc_bomb"}
local FISH_UNIT_NAMES = {"npc_fish_1", "npc_fish_2"}
local FISH_CATCH_ITEM_DEFAULT = "item_meat"
--- У Пуджа есть attach_weapon_chain_rt; у большинства героев — attach_attack1
local function getMeathookAttachName(self, unit)
local candidates = {"attach_attack1", "attach_attack2"}
for ____, name in ipairs(candidates) do
if unit:ScriptLookupAttachment(name) >= 0 then
return name
end
end
return "attach_hitloc"
end
____exports.item_fishing_rod = __TS__Class()
local item_fishing_rod = ____exports.item_fishing_rod
item_fishing_rod.name = "item_fishing_rod"
item_fishing_rod.____file_path = "scripts/vscripts/items/default_items/item_fishing_rod.lua"
__TS__ClassExtends(item_fishing_rod, BaseItem)
function item_fishing_rod.prototype.____constructor(self, ...)
BaseItem.prototype.____constructor(self, ...)
self.vHookOffset = Vector(0, 0, 96)
self.bRetracting = false
self.vTargetPosition = Vector(0, 0, 0)
self.vStartPosition = Vector(0, 0, 0)
end
function item_fishing_rod.prototype.GetAbilityDamageType(self)
return DAMAGE_TYPE_PHYSICAL
end
function item_fishing_rod.prototype.GetAbilityDamage(self)
return self:GetSpecialValueFor("Damage")
end
function item_fishing_rod.prototype.Precache(self, context)
PrecacheResource("particle", PARTICLE_MEATHOOK, context)
PrecacheResource("particle", "particles/units/heroes/hero_pudge/pudge_meathook_impact.vpcf", context)
end
function item_fishing_rod.prototype.GetCastRange(self, location, target)
return self:GetSpecialValueFor("hook_distance")
end
function item_fishing_rod.prototype.OnAbilityPhaseStart(self)
self:GetCaster():StartGesture(ACT_DOTA_ATTACK)
return true
end
function item_fishing_rod.prototype.OnAbilityPhaseInterrupted(self)
self:GetCaster():RemoveGesture(ACT_DOTA_ATTACK)
return true
end
function item_fishing_rod.prototype.clearHookedVictimPull(self)
if self.hookedVictimEntIndex == nil then
return
end
local ent = EntIndexToHScript(self.hookedVictimEntIndex)
self.hookedVictimEntIndex = nil
if ent and IsValidEntity(ent) and ent:IsBaseNPC() then
ent:RemoveModifierByName(____exports.modifier_item_fishing_rod_hook_pull.name)
end
end
function item_fishing_rod.prototype.releaseCasterMovementLock(self, caster)
caster:RemoveModifierByName(____exports.modifier_item_fishing_rod_caster_root.name)
end
function item_fishing_rod.prototype.getFishCatchItemName(self)
local raw = self:GetAbilityKeyValues()
local ____opt_result_4
if raw ~= nil then
____opt_result_4 = raw.AbilityValues
end
local ____opt_result_5
if ____opt_result_4 ~= nil then
____opt_result_5 = ____opt_result_4.fish_catch_item
end
local ____opt_result_5_9 = ____opt_result_5
if ____opt_result_5_9 == nil then
local ____opt_result_8
if raw ~= nil then
____opt_result_8 = raw.fish_catch_item
end
____opt_result_5_9 = ____opt_result_8
end
local name = ____opt_result_5_9
if type(name) == "string" and #name > 0 then
return name
end
return FISH_CATCH_ITEM_DEFAULT
end
function item_fishing_rod.prototype.trySpawnFishCatchReward(self, caster, caughtEntIndex)
if caughtEntIndex == nil then
return
end
local ent = EntIndexToHScript(caughtEntIndex)
if not ent or not IsValidEntity(ent) or not ent:IsBaseNPC() then
return
end
local unit = ent
local parent = self:GetCaster()
if not caster then
return
end
if __TS__ArrayIncludes(
BOMB_UNIT_NAMES,
unit:GetUnitName()
) and unit:IsAlive() then
local debuffs = {{name = "modifier_bad_cast_debuff", minDuration = 10, maxDuration = 20}, {name = "modifier_blind_debuff", minDuration = 1, maxDuration = 3.5}, {name = "modifier_stunned", minDuration = 1.5, maxDuration = 3.5}}
ApplyDamage({
victim = parent,
attacker = caster,
damage = self:GetCaster():GetMaxHealth() * 0.25,
damage_type = DAMAGE_TYPE_PURE,
ability = self
})
local randomDebuff = debuffs[RandomInt(0, #debuffs - 1) + 1]
local duration = RandomFloat(randomDebuff.minDuration, randomDebuff.maxDuration)
caster:AddNewModifier(caster, self, randomDebuff.name, {duration = duration})
EmitSoundOn("Hero_TemplarAssassin.Trap.Explode", parent)
unit:RemoveModifierByName(modifier_fish_basic.name)
unit:Kill(self, caster)
UTIL_Remove(unit)
return
end
if not __TS__ArrayIncludes(
FISH_UNIT_NAMES,
unit:GetUnitName()
) or not unit:IsAlive() then
return
end
local fromPos = unit:GetAbsOrigin()
unit:RemoveModifierByName(modifier_fish_basic.name)
unit:Kill(self, caster)
UTIL_Remove(unit)
local itemName = self:getFishCatchItemName()
local launchH = self:GetSpecialValueFor("fish_loot_launch_height")
local launchDist = self:GetSpecialValueFor("fish_loot_launch_distance")
local launchDur = self:GetSpecialValueFor("fish_loot_launch_duration")
if launchH <= 0 then
launchH = 100
end
if launchDist <= 0 then
launchDist = 150
end
if launchDur <= 0 then
launchDur = 0.5
end
local item = CreateItem(itemName, nil, nil)
if not item then
return
end
CreateItemOnPositionForLaunch(fromPos, item)
item:LaunchLootInitialHeight(
false,
launchH,
launchDist,
launchDur,
caster:GetAbsOrigin()
)
end
function item_fishing_rod.prototype.OnSpellStart(self)
local caster = self:GetCaster()
self:clearHookedVictimPull()
if not caster:IsInstance(CDOTA_BaseNPC_Hero) then
return
end
local hero = caster
self:releaseCasterMovementLock(hero)
local hookSpeed = self:GetSpecialValueFor("hook_speed")
local hookDistance = self:GetCastRange(
caster:GetOrigin(),
nil
)
local hookWidth = self:GetSpecialValueFor("hook_width")
local attachName = getMeathookAttachName(nil, caster)
local ____opt_10 = caster.clothes
local hook = ____opt_10 and ____opt_10.weapon
if not not hook then
hook:AddEffects(EF_NODRAW)
end
local casterPoint = caster:GetOrigin()
self.vStartPosition = casterPoint
local vDirection = (casterPoint == self:GetCursorPosition() and self:GetCursorPosition() + Vector(1, 1, 0) or self:GetCursorPosition()) - casterPoint
vDirection.z = 0
if caster:HasModifier(____exports.modifier_bad_cast_debuff.name) then
local angle = RandomFloat(0, 2 * math.pi)
local randomDir = Vector(
math.cos(angle),
math.sin(angle),
0
)
vDirection = randomDir * vDirection:Length2D()
end
vDirection = vDirection:Normalized() * hookDistance
self.vTargetPosition = casterPoint + vDirection
local vHookTarget = self.vTargetPosition + Vector(0, 0, 96)
local vKillswitch = Vector(hookDistance / hookSpeed * 2, 0, 0)
EmitSoundOn("Hero_Pudge.AttackHookExtend", caster)
self.nChainParticleFXIndex = ParticleManager:CreateParticle(PARTICLE_MEATHOOK, PATTACH_CUSTOMORIGIN, caster)
ParticleManager:SetParticleAlwaysSimulate(self.nChainParticleFXIndex)
ParticleManager:SetParticleControlEnt(
self.nChainParticleFXIndex,
0,
caster,
PATTACH_POINT_FOLLOW,
attachName,
casterPoint + self.vHookOffset,
true
)
ParticleManager:SetParticleControl(self.nChainParticleFXIndex, 1, vHookTarget)
ParticleManager:SetParticleControl(
self.nChainParticleFXIndex,
2,
Vector(hookSpeed, hookDistance, hookWidth)
)
ParticleManager:SetParticleControl(self.nChainParticleFXIndex, 3, vKillswitch)
ParticleManager:SetParticleControl(
self.nChainParticleFXIndex,
4,
Vector(1, 0, 0)
)
ParticleManager:SetParticleControl(
self.nChainParticleFXIndex,
5,
Vector(0, 0, 0)
)
if hook then
ParticleManager:SetParticleControlEnt(
self.nChainParticleFXIndex,
7,
hook,
PATTACH_CUSTOMORIGIN,
nil,
hook:GetOrigin(),
true
)
end
ProjectileManager:CreateLinearProjectile({
Ability = self,
vSpawnOrigin = casterPoint,
vVelocity = vDirection:Normalized() * hookSpeed,
fDistance = hookDistance,
fStartRadius = hookWidth,
fEndRadius = hookWidth,
Source = caster,
iUnitTargetTeam = DOTA_UNIT_TARGET_TEAM_ENEMY,
iUnitTargetType = bit.bor(DOTA_UNIT_TARGET_HERO, DOTA_UNIT_TARGET_BASIC),
iUnitTargetFlags = DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES
})
self.bRetracting = false
____exports.modifier_item_fishing_rod_caster_root:apply(hero, hero, self, {})
self:SetActivated(false)
end
function item_fishing_rod.prototype.OnProjectileHit(self, target, location)
local caster = self:GetCaster()
local attachName = getMeathookAttachName(nil, caster)
if target == caster then
return false
end
if self.bRetracting == false then
if target then
local isFish = __TS__ArrayIncludes(
FISH_UNIT_NAMES,
target:GetUnitName()
)
EmitSoundOn("Hero_Pudge.AttackHookImpact", target)
if not isFish then
local damage = self:GetAbilityDamage() + self:GetCaster():GetAverageTrueAttackDamage(caster)
ApplyDamage({
victim = target,
attacker = caster,
damage = damage,
damage_type = self:GetAbilityDamageType(),
ability = self
})
end
local nFXIndex = ParticleManager:CreateParticle("particles/econ/items/pudge/pudge_ti6_immortal/pudge_meathook_impact_ti6.vpcf", PATTACH_CUSTOMORIGIN, target)
ParticleManager:SetParticleControlEnt(
nFXIndex,
0,
target,
PATTACH_POINT_FOLLOW,
"attach_hitloc",
caster:GetOrigin(),
true
)
AddFOWViewer(
caster:GetTeamNumber(),
target:GetOrigin(),
self:GetSpecialValueFor("vision_radius"),
self:GetSpecialValueFor("vision_duration"),
false
)
target:InterruptChannel()
self.hookedVictimEntIndex = target:entindex()
____exports.modifier_item_fishing_rod_hook_pull:apply(target, caster, self, {})
if not isFish then
____exports.modifier_item_fishing_rod_debuff:apply(
target,
caster,
self,
{duration = self:GetSpecialValueFor("duration")}
)
end
end
local flPad = caster:GetPaddedCollisionRadius()
local vHookPos = self.vTargetPosition
if target then
vHookPos = target:GetOrigin()
flPad = flPad + target:GetPaddedCollisionRadius()
end
local vVelocity = self.vStartPosition - vHookPos
vVelocity.z = 0
local flDistance = vVelocity:Length2D() - flPad
vVelocity = vVelocity:Normalized() * self:GetSpecialValueFor("hook_speed")
ProjectileManager:CreateLinearProjectile({
Ability = self,
vSpawnOrigin = vHookPos,
vVelocity = vVelocity,
fDistance = flDistance,
Source = caster
})
if target then
ParticleManager:SetParticleControlEnt(
self.nChainParticleFXIndex,
1,
caster,
PATTACH_POINT_FOLLOW,
attachName,
target:GetOrigin() + self.vHookOffset,
true
)
else
ParticleManager:SetParticleControlEnt(
self.nChainParticleFXIndex,
1,
caster,
PATTACH_POINT_FOLLOW,
attachName,
caster:GetOrigin() + self.vHookOffset,
true
)
end
StopSoundOn("Hero_Pudge.AttackHookExtend", caster)
EmitSoundOn("Hero_Pudge.AttackHookRetract", caster)
if caster:IsAlive() then
caster:FadeGesture(ACT_DOTA_ATTACK)
caster:StartGesture(ACT_DOTA_ATTACK)
end
local casterAny = caster
local ____opt_12 = casterAny.SetRageTimeIncrease
if ____opt_12 ~= nil then
____opt_12(casterAny)
end
self.bRetracting = true
else
local caughtEntIndex = self.hookedVictimEntIndex
self:clearHookedVictimPull()
self:releaseCasterMovementLock(caster)
self:trySpawnFishCatchReward(caster, caughtEntIndex)
local ____opt_14 = caster.clothes
local w = ____opt_14 and ____opt_14.weapon
if not not w then
w:RemoveEffects(EF_NODRAW)
end
ParticleManager:DestroyParticle(self.nChainParticleFXIndex, true)
self:SetActivated(true)
EmitSoundOn("Hero_Pudge.AttackHookRetractStop", caster)
end
return true
end
item_fishing_rod = __TS__Decorate(
item_fishing_rod,
item_fishing_rod,
{registerAbility(nil)},
{kind = "class", name = "item_fishing_rod"}
)
____exports.item_fishing_rod = item_fishing_rod
--- Кастер стоит на месте, пока крюк не вернётся (откат цепи завершён)
____exports.modifier_item_fishing_rod_caster_root = __TS__Class()
local modifier_item_fishing_rod_caster_root = ____exports.modifier_item_fishing_rod_caster_root
modifier_item_fishing_rod_caster_root.name = "modifier_item_fishing_rod_caster_root"
modifier_item_fishing_rod_caster_root.____file_path = "scripts/vscripts/items/default_items/item_fishing_rod.lua"
__TS__ClassExtends(modifier_item_fishing_rod_caster_root, BaseModifier)
function modifier_item_fishing_rod_caster_root.prototype.IsHidden(self)
return true
end
function modifier_item_fishing_rod_caster_root.prototype.IsDebuff(self)
return false
end
function modifier_item_fishing_rod_caster_root.prototype.IsPurgable(self)
return false
end
function modifier_item_fishing_rod_caster_root.prototype.RemoveOnDeath(self)
return true
end
function modifier_item_fishing_rod_caster_root.prototype.CheckState(self)
return {[MODIFIER_STATE_ROOTED] = true, [MODIFIER_STATE_SILENCED] = true}
end
modifier_item_fishing_rod_caster_root = __TS__Decorate(
modifier_item_fishing_rod_caster_root,
modifier_item_fishing_rod_caster_root,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_fishing_rod_caster_root"}
)
____exports.modifier_item_fishing_rod_caster_root = modifier_item_fishing_rod_caster_root
--- Притягивание к кастеру на скорости hook_speed (синхронно с откатом цепи)
____exports.modifier_item_fishing_rod_hook_pull = __TS__Class()
local modifier_item_fishing_rod_hook_pull = ____exports.modifier_item_fishing_rod_hook_pull
modifier_item_fishing_rod_hook_pull.name = "modifier_item_fishing_rod_hook_pull"
modifier_item_fishing_rod_hook_pull.____file_path = "scripts/vscripts/items/default_items/item_fishing_rod.lua"
__TS__ClassExtends(modifier_item_fishing_rod_hook_pull, BaseModifier)
function modifier_item_fishing_rod_hook_pull.prototype.____constructor(self, ...)
BaseModifier.prototype.____constructor(self, ...)
self.thinkInterval = 0.03
end
function modifier_item_fishing_rod_hook_pull.prototype.IsHidden(self)
return true
end
function modifier_item_fishing_rod_hook_pull.prototype.IsDebuff(self)
return true
end
function modifier_item_fishing_rod_hook_pull.prototype.IsPurgable(self)
return false
end
function modifier_item_fishing_rod_hook_pull.prototype.CheckState(self)
return {[MODIFIER_STATE_STUNNED] = true}
end
function modifier_item_fishing_rod_hook_pull.prototype.OnCreated(self)
if not IsServer() then
return
end
self:StartIntervalThink(self.thinkInterval)
end
function modifier_item_fishing_rod_hook_pull.prototype.OnIntervalThink(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
local parent = self:GetParent()
if not caster or not caster:IsAlive() or not parent or not parent:IsAlive() then
self:Destroy()
return
end
local ability = self:GetAbility()
local speed = ability and ability:GetSpecialValueFor("hook_speed") or 1600
local step = speed * self.thinkInterval
local pos = parent:GetAbsOrigin()
local casterPos = caster:GetAbsOrigin()
local flatDelta = Vector(casterPos.x - pos.x, casterPos.y - pos.y, 0)
local dist2d = flatDelta:Length2D()
local stopDist = caster:GetPaddedCollisionRadius() + parent:GetPaddedCollisionRadius() + 32
if dist2d <= stopDist then
FindClearSpaceForUnit(
parent,
caster:GetAbsOrigin(),
true
)
self:Destroy()
return
end
local dir = flatDelta:Normalized()
local move = math.min(step, dist2d)
local newPos = Vector(pos.x + dir.x * move, pos.y + dir.y * move, pos.z)
parent:SetAbsOrigin(GetGroundPosition(newPos, nil))
end
function modifier_item_fishing_rod_hook_pull.prototype.OnDestroy(self)
if not IsServer() then
return
end
local parent = self:GetParent()
if parent and IsValidEntity(parent) and parent:IsAlive() then
FindClearSpaceForUnit(
parent,
parent:GetAbsOrigin(),
true
)
end
end
modifier_item_fishing_rod_hook_pull = __TS__Decorate(
modifier_item_fishing_rod_hook_pull,
modifier_item_fishing_rod_hook_pull,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_fishing_rod_hook_pull"}
)
____exports.modifier_item_fishing_rod_hook_pull = modifier_item_fishing_rod_hook_pull
____exports.modifier_item_fishing_rod_debuff = __TS__Class()
local modifier_item_fishing_rod_debuff = ____exports.modifier_item_fishing_rod_debuff
modifier_item_fishing_rod_debuff.name = "modifier_item_fishing_rod_debuff"
modifier_item_fishing_rod_debuff.____file_path = "scripts/vscripts/items/default_items/item_fishing_rod.lua"
__TS__ClassExtends(modifier_item_fishing_rod_debuff, BaseModifier)
function modifier_item_fishing_rod_debuff.prototype.____constructor(self, ...)
BaseModifier.prototype.____constructor(self, ...)
self.slow_movespeed = 0
self.damage_per_tick = 0
end
function modifier_item_fishing_rod_debuff.prototype.IsHidden(self)
return true
end
function modifier_item_fishing_rod_debuff.prototype.GetEffectName(self)
return "particles/units/heroes/hero_bloodseeker/bloodseeker_rupture.vpcf"
end
function modifier_item_fishing_rod_debuff.prototype.OnCreated(self, params)
local ability = self:GetAbility()
self.slow_movespeed = ability:GetSpecialValueFor("slow_movespeed")
self.damage_per_tick = ability:GetSpecialValueFor("damage_per_tick")
self:StartIntervalThink(ability:GetSpecialValueFor("tick"))
end
function modifier_item_fishing_rod_debuff.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE}
end
function modifier_item_fishing_rod_debuff.prototype.OnIntervalThink(self)
if IsClient() then
return
end
local ability = self:GetAbility()
ApplyDamage({
victim = self:GetParent(),
attacker = self:GetCaster(),
damage_type = ability:GetAbilityDamageType(),
damage = self.damage_per_tick,
ability = ability
})
end
function modifier_item_fishing_rod_debuff.prototype.GetModifierMoveSpeedBonus_Percentage(self)
return self.slow_movespeed
end
modifier_item_fishing_rod_debuff = __TS__Decorate(
modifier_item_fishing_rod_debuff,
modifier_item_fishing_rod_debuff,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_fishing_rod_debuff"}
)
____exports.modifier_item_fishing_rod_debuff = modifier_item_fishing_rod_debuff
____exports.modifier_blind_debuff = __TS__Class()
local modifier_blind_debuff = ____exports.modifier_blind_debuff
modifier_blind_debuff.name = "modifier_blind_debuff"
modifier_blind_debuff.____file_path = "scripts/vscripts/items/default_items/item_fishing_rod.lua"
__TS__ClassExtends(modifier_blind_debuff, BaseModifier)
function modifier_blind_debuff.prototype.IsHidden(self)
return false
end
function modifier_blind_debuff.prototype.IsDebuff(self)
return true
end
function modifier_blind_debuff.prototype.IsPurgable(self)
return true
end
function modifier_blind_debuff.prototype.OnCreated(self, params)
local particle = ParticleManager:CreateParticleForPlayer(
"particles/fish_screen_effect.vpcf",
PATTACH_ABSORIGIN_FOLLOW,
self:GetCaster(),
self:GetCaster():GetPlayerOwner()
)
self.particleId = particle
end
function modifier_blind_debuff.prototype.OnRefresh(self, params)
if self.particleId then
ParticleManager:DestroyParticle(self.particleId, false)
end
self:OnCreated(params)
end
function modifier_blind_debuff.prototype.OnDestroy(self)
if IsClient() then
return
end
if self.particleId then
ParticleManager:DestroyParticle(self.particleId, false)
end
end
function modifier_blind_debuff.prototype.GetTexture(self)
return "templar_assassin_trap"
end
modifier_blind_debuff = __TS__Decorate(
modifier_blind_debuff,
modifier_blind_debuff,
{registerModifier(nil)},
{kind = "class", name = "modifier_blind_debuff"}
)
____exports.modifier_blind_debuff = modifier_blind_debuff
____exports.modifier_bad_cast_debuff = __TS__Class()
local modifier_bad_cast_debuff = ____exports.modifier_bad_cast_debuff
modifier_bad_cast_debuff.name = "modifier_bad_cast_debuff"
modifier_bad_cast_debuff.____file_path = "scripts/vscripts/items/default_items/item_fishing_rod.lua"
__TS__ClassExtends(modifier_bad_cast_debuff, BaseModifier)
function modifier_bad_cast_debuff.prototype.IsHidden(self)
return false
end
function modifier_bad_cast_debuff.prototype.IsDebuff(self)
return true
end
function modifier_bad_cast_debuff.prototype.IsPurgable(self)
return true
end
function modifier_bad_cast_debuff.prototype.GetTexture(self)
return "templar_assassin_trap"
end
modifier_bad_cast_debuff = __TS__Decorate(
modifier_bad_cast_debuff,
modifier_bad_cast_debuff,
{registerModifier(nil)},
{kind = "class", name = "modifier_bad_cast_debuff"}
)
____exports.modifier_bad_cast_debuff = modifier_bad_cast_debuff
return ____exports
@@ -0,0 +1,59 @@
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
____exports.item_ice_spine = __TS__Class()
local item_ice_spine = ____exports.item_ice_spine
item_ice_spine.name = "item_ice_spine"
item_ice_spine.____file_path = "scripts/vscripts/items/default_items/item_ice_spine.lua"
__TS__ClassExtends(item_ice_spine, BaseItem)
function item_ice_spine.prototype.GetIntrinsicModifierName(self)
return "modifier_ice_spine"
end
item_ice_spine = __TS__Decorate(
item_ice_spine,
item_ice_spine,
{registerAbility(nil)},
{kind = "class", name = "item_ice_spine"}
)
____exports.item_ice_spine = item_ice_spine
____exports.modifier_ice_spine = __TS__Class()
local modifier_ice_spine = ____exports.modifier_ice_spine
modifier_ice_spine.name = "modifier_ice_spine"
modifier_ice_spine.____file_path = "scripts/vscripts/items/default_items/item_ice_spine.lua"
__TS__ClassExtends(modifier_ice_spine, BaseModifier)
function modifier_ice_spine.prototype.IsHidden(self)
return true
end
function modifier_ice_spine.prototype.IsPurgable(self)
return false
end
function modifier_ice_spine.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_SPELL_AMPLIFY_PERCENTAGE, MODIFIER_PROPERTY_INCOMING_DAMAGE_PERCENTAGE, MODIFIER_PROPERTY_HEAL_AMPLIFY_PERCENTAGE_SOURCE, MODIFIER_PROPERTY_MOVESPEED_BONUS_CONSTANT}
end
function modifier_ice_spine.prototype.GetModifierSpellAmplify_Percentage(self, event)
return self:GetAbility():GetSpecialValueFor("spell_amplify")
end
function modifier_ice_spine.prototype.GetModifierHealAmplify_PercentageSource(self)
return self:GetAbility():GetSpecialValueFor("heal_amplify")
end
function modifier_ice_spine.prototype.GetModifierMoveSpeedBonus_Constant(self)
return self:GetAbility():GetSpecialValueFor("movespeed_const")
end
function modifier_ice_spine.prototype.GetModifierIncomingDamage_Percentage(self, event)
return self:GetAbility():GetSpecialValueFor("incoming_dmg_pct")
end
modifier_ice_spine = __TS__Decorate(
modifier_ice_spine,
modifier_ice_spine,
{registerModifier(nil)},
{kind = "class", name = "modifier_ice_spine"}
)
____exports.modifier_ice_spine = modifier_ice_spine
return ____exports
@@ -0,0 +1,70 @@
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 BaseAbility = ____dota_ts_adapter.BaseAbility
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_lifesteal_custom = __TS__Class()
local item_lifesteal_custom = ____exports.item_lifesteal_custom
item_lifesteal_custom.name = "item_lifesteal_custom"
item_lifesteal_custom.____file_path = "scripts/vscripts/items/default_items/item_lifesteal_custom.lua"
__TS__ClassExtends(item_lifesteal_custom, BaseAbility)
function item_lifesteal_custom.prototype.GetIntrinsicModifierName(self)
return "modifier_item_lifesteal_custom"
end
item_lifesteal_custom = __TS__Decorate(
item_lifesteal_custom,
item_lifesteal_custom,
{registerAbility(nil)},
{kind = "class", name = "item_lifesteal_custom"}
)
____exports.item_lifesteal_custom = item_lifesteal_custom
____exports.modifier_item_lifesteal_custom = __TS__Class()
local modifier_item_lifesteal_custom = ____exports.modifier_item_lifesteal_custom
modifier_item_lifesteal_custom.name = "modifier_item_lifesteal_custom"
modifier_item_lifesteal_custom.____file_path = "scripts/vscripts/items/default_items/item_lifesteal_custom.lua"
__TS__ClassExtends(modifier_item_lifesteal_custom, BaseModifier)
function modifier_item_lifesteal_custom.prototype.IsHidden(self)
return true
end
function modifier_item_lifesteal_custom.prototype.IsPurgable(self)
return false
end
function modifier_item_lifesteal_custom.prototype.GetAttributes(self)
return MODIFIER_ATTRIBUTE_MULTIPLE
end
function modifier_item_lifesteal_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_lifesteal_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_lifesteal_custom = __TS__Decorate(
modifier_item_lifesteal_custom,
modifier_item_lifesteal_custom,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_lifesteal_custom"}
)
____exports.modifier_item_lifesteal_custom = modifier_item_lifesteal_custom
return ____exports
@@ -0,0 +1,223 @@
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
____exports.item_magic_rapier = __TS__Class()
local item_magic_rapier = ____exports.item_magic_rapier
item_magic_rapier.name = "item_magic_rapier"
item_magic_rapier.____file_path = "scripts/vscripts/items/default_items/item_magic_rapier.lua"
__TS__ClassExtends(item_magic_rapier, BaseItem)
function item_magic_rapier.prototype.GetIntrinsicModifierName(self)
return "modifier_magic_rapier"
end
item_magic_rapier = __TS__Decorate(
item_magic_rapier,
item_magic_rapier,
{registerAbility(nil)},
{kind = "class", name = "item_magic_rapier"}
)
____exports.item_magic_rapier = item_magic_rapier
____exports.modifier_magic_rapier = __TS__Class()
local modifier_magic_rapier = ____exports.modifier_magic_rapier
modifier_magic_rapier.name = "modifier_magic_rapier"
modifier_magic_rapier.____file_path = "scripts/vscripts/items/default_items/item_magic_rapier.lua"
__TS__ClassExtends(modifier_magic_rapier, BaseModifier)
function modifier_magic_rapier.prototype.____constructor(self, ...)
BaseModifier.prototype.____constructor(self, ...)
self.Lock = false
end
function modifier_magic_rapier.prototype.IsHidden(self)
return true
end
function modifier_magic_rapier.prototype.IsDebuff(self)
return false
end
function modifier_magic_rapier.prototype.IsPurgable(self)
return false
end
function modifier_magic_rapier.prototype.DeclareFunctions(self)
return {
MODIFIER_PROPERTY_SPELL_AMPLIFY_PERCENTAGE,
MODIFIER_PROPERTY_STATS_INTELLECT_BONUS,
MODIFIER_PROPERTY_STATS_STRENGTH_BONUS,
MODIFIER_PROPERTY_STATS_AGILITY_BONUS,
MODIFIER_PROPERTY_MANA_REGEN_CONSTANT,
MODIFIER_PROPERTY_MANA_BONUS,
MODIFIER_PROPERTY_FORCE_MAX_MANA,
MODIFIER_EVENT_ON_TAKEDAMAGE
}
end
function modifier_magic_rapier.prototype.GetModifierBonusStats_Intellect(self)
return self:GetAbility():GetSpecialValueFor("bonus_intellect")
end
function modifier_magic_rapier.prototype.GetModifierSpellAmplify_Percentage(self, event)
return self:GetAbility():GetSpecialValueFor("bonus_spell_amplify")
end
function modifier_magic_rapier.prototype.GetModifierBonusStats_Strength(self)
return self:GetAbility():GetSpecialValueFor("bonus_strength")
end
function modifier_magic_rapier.prototype.GetModifierBonusStats_Agility(self)
return self:GetAbility():GetSpecialValueFor("bonus_agility")
end
function modifier_magic_rapier.prototype.GetModifierConstantManaRegen(self)
return self:GetAbility():GetSpecialValueFor("bonus_mana_regen")
end
function modifier_magic_rapier.prototype.GetModifierManaBonus(self)
if not IsServer() then
return 0
end
if self.Lock then
return 0
end
self.Lock = true
local mana = self:GetParent():GetMaxMana()
self.Lock = false
local bonus = self:GetAbility():GetSpecialValueFor("bonus_mana_pct") * mana / 100
return bonus
end
function modifier_magic_rapier.prototype.OnTakeDamage(self, event)
if not IsServer() then
return
end
local caster = self:GetParent()
local rapierAbility = self:GetAbility()
if not caster:IsRealHero() or not rapierAbility then
return
end
local target = event.unit
if not target then
return
end
if target:GetTeamNumber() == caster:GetTeamNumber() then
return
end
if event.attacker ~= caster then
return
end
if not event.inflictor then
return
end
if event.inflictor == rapierAbility then
return
end
if event.damage <= 0 then
return
end
if event.damage <= 300 then
return
end
local bonusDamage = caster:GetMana() * (rapierAbility:GetSpecialValueFor("damage_per_cast_hand") / 100) + rapierAbility:GetSpecialValueFor("damage_per_cast")
local spellAmpFrac = math.max(
0,
caster:GetSpellAmplification(false)
)
local damageToApply = bonusDamage / math.max(0.000001, 1 + spellAmpFrac)
SendOverheadEventMessage(
nil,
OVERHEAD_ALERT_BONUS_SPELL_DAMAGE,
target,
math.floor(bonusDamage),
nil
)
rapierAbility:UseResources(true, false, false, true)
ApplyDamage({
victim = target,
attacker = caster,
damage = damageToApply,
damage_type = DAMAGE_TYPE_MAGICAL,
damage_flags = DOTA_DAMAGE_FLAG_NO_SPELL_AMPLIFICATION,
ability = nil
})
target:AddNewModifier(
caster,
rapierAbility,
"modifier_magic_rapier_debuff",
{duration = rapierAbility:GetSpecialValueFor("slow_duration")}
)
local particle = ParticleManager:CreateParticle("particles/items_fx/phylactery_target.vpcf", PATTACH_ABSORIGIN_FOLLOW, target)
ParticleManager:SetParticleControlEnt(
particle,
0,
target,
PATTACH_POINT_FOLLOW,
"attach_hitloc",
target:GetAbsOrigin(),
true
)
ParticleManager:ReleaseParticleIndex(particle)
local particle_2 = ParticleManager:CreateParticle("particles/items_fx/phylactery.vpcf", PATTACH_ABSORIGIN_FOLLOW, caster)
ParticleManager:SetParticleControlEnt(
particle_2,
0,
caster,
PATTACH_POINT_FOLLOW,
"attach_hitloc",
caster:GetAbsOrigin(),
true
)
ParticleManager:SetParticleControlEnt(
particle_2,
1,
target,
PATTACH_POINT_FOLLOW,
"attach_hitloc",
target:GetAbsOrigin(),
true
)
ParticleManager:ReleaseParticleIndex(particle_2)
target:EmitSound("Item.Phylactery.Target")
end
modifier_magic_rapier = __TS__Decorate(
modifier_magic_rapier,
modifier_magic_rapier,
{registerModifier(nil)},
{kind = "class", name = "modifier_magic_rapier"}
)
____exports.modifier_magic_rapier = modifier_magic_rapier
____exports.modifier_magic_rapier_debuff = __TS__Class()
local modifier_magic_rapier_debuff = ____exports.modifier_magic_rapier_debuff
modifier_magic_rapier_debuff.name = "modifier_magic_rapier_debuff"
modifier_magic_rapier_debuff.____file_path = "scripts/vscripts/items/default_items/item_magic_rapier.lua"
__TS__ClassExtends(modifier_magic_rapier_debuff, BaseModifier)
function modifier_magic_rapier_debuff.prototype.IsHidden(self)
return false
end
function modifier_magic_rapier_debuff.prototype.IsDebuff(self)
return true
end
function modifier_magic_rapier_debuff.prototype.IsPurgable(self)
return true
end
function modifier_magic_rapier_debuff.prototype.GetAttributes(self)
return MODIFIER_ATTRIBUTE_MULTIPLE
end
function modifier_magic_rapier_debuff.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE, MODIFIER_PROPERTY_MAGICAL_RESISTANCE_BONUS}
end
function modifier_magic_rapier_debuff.prototype.CheckState(self)
local state = {[MODIFIER_STATE_PASSIVES_DISABLED] = true}
return state
end
function modifier_magic_rapier_debuff.prototype.GetModifierMoveSpeedBonus_Percentage(self)
return -self:GetAbility():GetSpecialValueFor("slow_pct")
end
function modifier_magic_rapier_debuff.prototype.GetModifierMagicalResistanceBonus(self, event)
return self:GetAbility():GetSpecialValueFor("magical_resist_reduction")
end
function modifier_magic_rapier_debuff.prototype.GetTexture(self)
return "default_items/magicpier"
end
modifier_magic_rapier_debuff = __TS__Decorate(
modifier_magic_rapier_debuff,
modifier_magic_rapier_debuff,
{registerModifier(nil)},
{kind = "class", name = "modifier_magic_rapier_debuff"}
)
____exports.modifier_magic_rapier_debuff = modifier_magic_rapier_debuff
return ____exports
@@ -0,0 +1,93 @@
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
____exports.item_magic_stone = __TS__Class()
local item_magic_stone = ____exports.item_magic_stone
item_magic_stone.name = "item_magic_stone"
item_magic_stone.____file_path = "scripts/vscripts/items/default_items/item_magic_stone.lua"
__TS__ClassExtends(item_magic_stone, BaseItem)
function item_magic_stone.prototype.GetIntrinsicModifierName(self)
return "modifier_magic_stone"
end
item_magic_stone = __TS__Decorate(
item_magic_stone,
item_magic_stone,
{registerAbility(nil)},
{kind = "class", name = "item_magic_stone"}
)
____exports.item_magic_stone = item_magic_stone
____exports.modifier_magic_stone = __TS__Class()
local modifier_magic_stone = ____exports.modifier_magic_stone
modifier_magic_stone.name = "modifier_magic_stone"
modifier_magic_stone.____file_path = "scripts/vscripts/items/default_items/item_magic_stone.lua"
__TS__ClassExtends(modifier_magic_stone, BaseModifier)
function modifier_magic_stone.prototype.____constructor(self, ...)
BaseModifier.prototype.____constructor(self, ...)
self.Lock = false
end
function modifier_magic_stone.prototype.IsHidden(self)
return true
end
function modifier_magic_stone.prototype.IsDebuff(self)
return false
end
function modifier_magic_stone.prototype.IsPurgable(self)
return false
end
function modifier_magic_stone.prototype.GetAttributes(self)
return MODIFIER_ATTRIBUTE_MULTIPLE
end
function modifier_magic_stone.prototype.DeclareFunctions(self)
return {
MODIFIER_PROPERTY_SPELL_AMPLIFY_PERCENTAGE,
MODIFIER_PROPERTY_STATS_INTELLECT_BONUS,
MODIFIER_PROPERTY_STATS_STRENGTH_BONUS,
MODIFIER_PROPERTY_STATS_AGILITY_BONUS,
MODIFIER_PROPERTY_MANA_REGEN_CONSTANT,
MODIFIER_PROPERTY_MANA_BONUS,
MODIFIER_PROPERTY_FORCE_MAX_MANA
}
end
function modifier_magic_stone.prototype.GetModifierBonusStats_Intellect(self)
return self:GetAbility():GetSpecialValueFor("bonus_intellect")
end
function modifier_magic_stone.prototype.GetModifierSpellAmplify_Percentage(self, event)
return self:GetAbility():GetSpecialValueFor("bonus_spell_amplify")
end
function modifier_magic_stone.prototype.GetModifierBonusStats_Strength(self)
return self:GetAbility():GetSpecialValueFor("bonus_strength")
end
function modifier_magic_stone.prototype.GetModifierBonusStats_Agility(self)
return self:GetAbility():GetSpecialValueFor("bonus_agility")
end
function modifier_magic_stone.prototype.GetModifierConstantManaRegen(self)
return self:GetAbility():GetSpecialValueFor("bonus_mana_regen")
end
function modifier_magic_stone.prototype.GetModifierManaBonus(self)
if not IsServer() then
return 0
end
if self.Lock then
return 0
end
self.Lock = true
local mana = self:GetParent():GetMaxMana()
self.Lock = false
local bonus = self:GetAbility():GetSpecialValueFor("bonus_mana_pct") * mana / 100
return bonus
end
modifier_magic_stone = __TS__Decorate(
modifier_magic_stone,
modifier_magic_stone,
{registerModifier(nil)},
{kind = "class", name = "modifier_magic_stone"}
)
____exports.modifier_magic_stone = modifier_magic_stone
return ____exports
@@ -0,0 +1,148 @@
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 ____ability_stacking_spell_crit = require("abilities.modifiers.ability_stacking_spell_crit")
local modifier_stacking_spell_crit = ____ability_stacking_spell_crit.modifier_stacking_spell_crit
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 addMagicalVampirism = ____vampirism.addMagicalVampirism
local reduceMagicalVampirism = ____vampirism.reduceMagicalVampirism
____exports.item_magical_crit = __TS__Class()
local item_magical_crit = ____exports.item_magical_crit
item_magical_crit.name = "item_magical_crit"
item_magical_crit.____file_path = "scripts/vscripts/items/default_items/item_magical_crit.lua"
__TS__ClassExtends(item_magical_crit, BaseItem)
function item_magical_crit.prototype.GetIntrinsicModifierName(self)
return "modifier_item_magical_crit"
end
item_magical_crit = __TS__Decorate(
item_magical_crit,
item_magical_crit,
{registerAbility(nil)},
{kind = "class", name = "item_magical_crit"}
)
____exports.item_magical_crit = item_magical_crit
____exports.modifier_item_magical_crit = __TS__Class()
local modifier_item_magical_crit = ____exports.modifier_item_magical_crit
modifier_item_magical_crit.name = "modifier_item_magical_crit"
modifier_item_magical_crit.____file_path = "scripts/vscripts/items/default_items/item_magical_crit.lua"
__TS__ClassExtends(modifier_item_magical_crit, BaseModifier)
function modifier_item_magical_crit.prototype.____constructor(self, ...)
BaseModifier.prototype.____constructor(self, ...)
self.manaLock = false
end
function modifier_item_magical_crit.prototype.IsHidden(self)
return true
end
function modifier_item_magical_crit.prototype.IsDebuff(self)
return false
end
function modifier_item_magical_crit.prototype.IsPurgable(self)
return false
end
function modifier_item_magical_crit.prototype.GetAttributes(self)
return MODIFIER_ATTRIBUTE_MULTIPLE
end
function modifier_item_magical_crit.prototype.DeclareFunctions(self)
return {
MODIFIER_PROPERTY_SPELL_AMPLIFY_PERCENTAGE,
MODIFIER_PROPERTY_STATS_INTELLECT_BONUS,
MODIFIER_PROPERTY_STATS_STRENGTH_BONUS,
MODIFIER_PROPERTY_STATS_AGILITY_BONUS,
MODIFIER_PROPERTY_MANA_REGEN_CONSTANT,
MODIFIER_PROPERTY_MANA_BONUS,
MODIFIER_PROPERTY_FORCE_MAX_MANA
}
end
function modifier_item_magical_crit.prototype.getValue(self, name)
local ____opt_0 = self:GetAbility()
return ____opt_0 and ____opt_0:GetSpecialValueFor(name) or 0
end
function modifier_item_magical_crit.prototype.GetModifierSpellAmplify_Percentage(self)
return self:getValue("bonus_spell_amplify")
end
function modifier_item_magical_crit.prototype.GetModifierBonusStats_Intellect(self)
return self:getValue("bonus_intellect")
end
function modifier_item_magical_crit.prototype.GetModifierBonusStats_Strength(self)
return self:getValue("bonus_strength")
end
function modifier_item_magical_crit.prototype.GetModifierBonusStats_Agility(self)
return self:getValue("bonus_agility")
end
function modifier_item_magical_crit.prototype.GetModifierConstantManaRegen(self)
return self:getValue("bonus_mana_regen")
end
function modifier_item_magical_crit.prototype.GetModifierManaBonus(self)
if not IsServer() then
return 0
end
if self.manaLock then
return 0
end
local parent = self:GetParent()
if not parent:IsHero() then
return 0
end
self.manaLock = true
local maxMana = parent:GetMaxMana()
self.manaLock = false
return self:getValue("bonus_mana_pct") * maxMana / 100
end
function modifier_item_magical_crit.prototype.OnCreated(self)
if not IsServer() then
return
end
local parent = self:GetParent()
local ability = self:GetAbility()
if not ability then
return
end
local vamp = self:getValue("magical_vampirism")
if vamp > 0 and parent:IsRealHero() then
addMagicalVampirism(nil, parent, vamp)
end
local stackingSpellCrit = modifier_stacking_spell_crit:GetForUnit(parent)
if stackingSpellCrit then
stackingSpellCrit:AddCustomCrit(
self:getValue("spell_crit_chance"),
self:getValue("spell_crit_mult"),
"item_magical_crit",
ability
)
end
end
function modifier_item_magical_crit.prototype.OnDestroy(self)
if IsClient() then
return
end
local parent = self:GetParent()
if not parent or not IsValidEntity(parent) then
return
end
local ability = self:GetAbility()
if ability and parent:IsRealHero() then
local vamp = ability:GetSpecialValueFor("magical_vampirism")
if vamp > 0 then
reduceMagicalVampirism(nil, parent, vamp)
end
end
local stackingSpellCrit = modifier_stacking_spell_crit:GetForUnit(parent)
if stackingSpellCrit and ability then
stackingSpellCrit:RemoveCrit("item_magical_crit", ability)
end
end
modifier_item_magical_crit = __TS__Decorate(
modifier_item_magical_crit,
modifier_item_magical_crit,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_magical_crit"}
)
____exports.modifier_item_magical_crit = modifier_item_magical_crit
return ____exports
@@ -0,0 +1,223 @@
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
____exports.item_magical_divine_rapier = __TS__Class()
local item_magical_divine_rapier = ____exports.item_magical_divine_rapier
item_magical_divine_rapier.name = "item_magical_divine_rapier"
item_magical_divine_rapier.____file_path = "scripts/vscripts/items/default_items/item_magical_divine_rapier.lua"
__TS__ClassExtends(item_magical_divine_rapier, BaseItem)
function item_magical_divine_rapier.prototype.GetIntrinsicModifierName(self)
return "modifier_magical_divine_rapier"
end
item_magical_divine_rapier = __TS__Decorate(
item_magical_divine_rapier,
item_magical_divine_rapier,
{registerAbility(nil)},
{kind = "class", name = "item_magical_divine_rapier"}
)
____exports.item_magical_divine_rapier = item_magical_divine_rapier
____exports.modifier_magical_divine_rapier = __TS__Class()
local modifier_magical_divine_rapier = ____exports.modifier_magical_divine_rapier
modifier_magical_divine_rapier.name = "modifier_magical_divine_rapier"
modifier_magical_divine_rapier.____file_path = "scripts/vscripts/items/default_items/item_magical_divine_rapier.lua"
__TS__ClassExtends(modifier_magical_divine_rapier, BaseModifier)
function modifier_magical_divine_rapier.prototype.____constructor(self, ...)
BaseModifier.prototype.____constructor(self, ...)
self.Lock = false
end
function modifier_magical_divine_rapier.prototype.IsHidden(self)
return true
end
function modifier_magical_divine_rapier.prototype.IsDebuff(self)
return false
end
function modifier_magical_divine_rapier.prototype.IsPurgable(self)
return false
end
function modifier_magical_divine_rapier.prototype.DeclareFunctions(self)
return {
MODIFIER_PROPERTY_SPELL_AMPLIFY_PERCENTAGE,
MODIFIER_PROPERTY_STATS_INTELLECT_BONUS,
MODIFIER_PROPERTY_STATS_STRENGTH_BONUS,
MODIFIER_PROPERTY_STATS_AGILITY_BONUS,
MODIFIER_PROPERTY_MANA_REGEN_CONSTANT,
MODIFIER_PROPERTY_MANA_BONUS,
MODIFIER_PROPERTY_FORCE_MAX_MANA,
MODIFIER_EVENT_ON_TAKEDAMAGE
}
end
function modifier_magical_divine_rapier.prototype.GetModifierBonusStats_Intellect(self)
return self:GetAbility():GetSpecialValueFor("bonus_intellect")
end
function modifier_magical_divine_rapier.prototype.GetModifierSpellAmplify_Percentage(self, event)
return self:GetAbility():GetSpecialValueFor("bonus_spell_amplify")
end
function modifier_magical_divine_rapier.prototype.GetModifierBonusStats_Strength(self)
return self:GetAbility():GetSpecialValueFor("bonus_strength")
end
function modifier_magical_divine_rapier.prototype.GetModifierBonusStats_Agility(self)
return self:GetAbility():GetSpecialValueFor("bonus_agility")
end
function modifier_magical_divine_rapier.prototype.GetModifierConstantManaRegen(self)
return self:GetAbility():GetSpecialValueFor("bonus_mana_regen")
end
function modifier_magical_divine_rapier.prototype.GetModifierManaBonus(self)
if not IsServer() then
return 0
end
if self.Lock then
return 0
end
self.Lock = true
local mana = self:GetParent():GetMaxMana()
self.Lock = false
local bonus = self:GetAbility():GetSpecialValueFor("bonus_mana_pct") * mana / 100
return bonus
end
function modifier_magical_divine_rapier.prototype.OnTakeDamage(self, event)
if not IsServer() then
return
end
local caster = self:GetParent()
local rapierAbility = self:GetAbility()
if not caster:IsRealHero() or not rapierAbility then
return
end
local target = event.unit
if not target then
return
end
if target:GetTeamNumber() == caster:GetTeamNumber() then
return
end
if event.attacker ~= caster then
return
end
if not event.inflictor then
return
end
if event.inflictor == rapierAbility then
return
end
if event.damage <= 0 then
return
end
if event.damage <= 300 then
return
end
local bonusDamage = caster:GetMana() * (rapierAbility:GetSpecialValueFor("damage_per_cast_hand") / 100) + rapierAbility:GetSpecialValueFor("damage_per_cast")
local spellAmpFrac = math.max(
0,
caster:GetSpellAmplification(false)
)
local damageToApply = bonusDamage / math.max(0.000001, 1 + spellAmpFrac)
SendOverheadEventMessage(
nil,
OVERHEAD_ALERT_BONUS_SPELL_DAMAGE,
target,
math.floor(bonusDamage),
nil
)
rapierAbility:UseResources(true, false, false, true)
ApplyDamage({
victim = target,
attacker = caster,
damage = damageToApply,
damage_type = DAMAGE_TYPE_MAGICAL,
damage_flags = DOTA_DAMAGE_FLAG_NO_SPELL_AMPLIFICATION,
ability = nil
})
target:AddNewModifier(
caster,
rapierAbility,
"modifier_magic_rapier_debuff",
{duration = rapierAbility:GetSpecialValueFor("slow_duration")}
)
local particle = ParticleManager:CreateParticle("particles/items_fx/phylactery_target.vpcf", PATTACH_ABSORIGIN_FOLLOW, target)
ParticleManager:SetParticleControlEnt(
particle,
0,
target,
PATTACH_POINT_FOLLOW,
"attach_hitloc",
target:GetAbsOrigin(),
true
)
ParticleManager:ReleaseParticleIndex(particle)
local particle_2 = ParticleManager:CreateParticle("particles/items_fx/phylactery.vpcf", PATTACH_ABSORIGIN_FOLLOW, caster)
ParticleManager:SetParticleControlEnt(
particle_2,
0,
caster,
PATTACH_POINT_FOLLOW,
"attach_hitloc",
caster:GetAbsOrigin(),
true
)
ParticleManager:SetParticleControlEnt(
particle_2,
1,
target,
PATTACH_POINT_FOLLOW,
"attach_hitloc",
target:GetAbsOrigin(),
true
)
ParticleManager:ReleaseParticleIndex(particle_2)
target:EmitSound("Item.Phylactery.Target")
end
modifier_magical_divine_rapier = __TS__Decorate(
modifier_magical_divine_rapier,
modifier_magical_divine_rapier,
{registerModifier(nil)},
{kind = "class", name = "modifier_magical_divine_rapier"}
)
____exports.modifier_magical_divine_rapier = modifier_magical_divine_rapier
____exports.modifier_magic_rapier_debuff = __TS__Class()
local modifier_magic_rapier_debuff = ____exports.modifier_magic_rapier_debuff
modifier_magic_rapier_debuff.name = "modifier_magic_rapier_debuff"
modifier_magic_rapier_debuff.____file_path = "scripts/vscripts/items/default_items/item_magical_divine_rapier.lua"
__TS__ClassExtends(modifier_magic_rapier_debuff, BaseModifier)
function modifier_magic_rapier_debuff.prototype.IsHidden(self)
return false
end
function modifier_magic_rapier_debuff.prototype.IsDebuff(self)
return true
end
function modifier_magic_rapier_debuff.prototype.IsPurgable(self)
return true
end
function modifier_magic_rapier_debuff.prototype.GetAttributes(self)
return MODIFIER_ATTRIBUTE_MULTIPLE
end
function modifier_magic_rapier_debuff.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE, MODIFIER_PROPERTY_MAGICAL_RESISTANCE_BONUS}
end
function modifier_magic_rapier_debuff.prototype.CheckState(self)
local state = {[MODIFIER_STATE_PASSIVES_DISABLED] = true}
return state
end
function modifier_magic_rapier_debuff.prototype.GetModifierMoveSpeedBonus_Percentage(self)
return -self:GetAbility():GetSpecialValueFor("slow_pct")
end
function modifier_magic_rapier_debuff.prototype.GetModifierMagicalResistanceBonus(self, event)
return self:GetAbility():GetSpecialValueFor("magical_resist_reduction")
end
function modifier_magic_rapier_debuff.prototype.GetTexture(self)
return "default_items/magicpier"
end
modifier_magic_rapier_debuff = __TS__Decorate(
modifier_magic_rapier_debuff,
modifier_magic_rapier_debuff,
{registerModifier(nil)},
{kind = "class", name = "modifier_magic_rapier_debuff"}
)
____exports.modifier_magic_rapier_debuff = modifier_magic_rapier_debuff
return ____exports
@@ -0,0 +1,61 @@
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_magical_quiver = __TS__Class()
local item_magical_quiver = ____exports.item_magical_quiver
item_magical_quiver.name = "item_magical_quiver"
item_magical_quiver.____file_path = "scripts/vscripts/items/default_items/item_magical_quiver.lua"
__TS__ClassExtends(item_magical_quiver, BaseItem)
function item_magical_quiver.prototype.GetIntrinsicModifierName(self)
return "modifier_item_magical_quiver"
end
item_magical_quiver = __TS__Decorate(
item_magical_quiver,
item_magical_quiver,
{registerAbility(nil)},
{kind = "class", name = "item_magical_quiver"}
)
____exports.item_magical_quiver = item_magical_quiver
____exports.modifier_item_magical_quiver = __TS__Class()
local modifier_item_magical_quiver = ____exports.modifier_item_magical_quiver
modifier_item_magical_quiver.name = "modifier_item_magical_quiver"
modifier_item_magical_quiver.____file_path = "scripts/vscripts/items/default_items/item_magical_quiver.lua"
__TS__ClassExtends(modifier_item_magical_quiver, BaseModifier)
function modifier_item_magical_quiver.prototype.IsHidden(self)
return true
end
function modifier_item_magical_quiver.prototype.IsDebuff(self)
return false
end
function modifier_item_magical_quiver.prototype.IsPurgable(self)
return false
end
function modifier_item_magical_quiver.prototype.OnCreated(self)
if not IsServer() then
return
end
end
function modifier_item_magical_quiver.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_PROCATTACK_BONUS_DAMAGE_MAGICAL}
end
function modifier_item_magical_quiver.prototype.GetModifierProcAttack_BonusDamage_Magical(self, event)
if self:GetParent():IsIllusion() or not self:GetParent():IsRangedAttacker() then
return 0
end
return self:GetAbility():GetSpecialValueFor("proc_damage_magical")
end
modifier_item_magical_quiver = __TS__Decorate(
modifier_item_magical_quiver,
modifier_item_magical_quiver,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_magical_quiver"}
)
____exports.modifier_item_magical_quiver = modifier_item_magical_quiver
return ____exports
@@ -0,0 +1,135 @@
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 BaseAbility = ____dota_ts_adapter.BaseAbility
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_mask_of_madness_custom = __TS__Class()
local item_mask_of_madness_custom = ____exports.item_mask_of_madness_custom
item_mask_of_madness_custom.name = "item_mask_of_madness_custom"
item_mask_of_madness_custom.____file_path = "scripts/vscripts/items/default_items/item_mask_of_madness_custom.lua"
__TS__ClassExtends(item_mask_of_madness_custom, BaseAbility)
function item_mask_of_madness_custom.prototype.GetIntrinsicModifierName(self)
return "modifier_item_mask_of_madness_custom"
end
function item_mask_of_madness_custom.prototype.OnSpellStart(self)
self:GetCaster():AddNewModifier(
self:GetCaster(),
self,
"modifier_item_mask_of_madness_custom_buff",
{duration = self:GetSpecialValueFor("duration")}
)
end
item_mask_of_madness_custom = __TS__Decorate(
item_mask_of_madness_custom,
item_mask_of_madness_custom,
{registerAbility(nil)},
{kind = "class", name = "item_mask_of_madness_custom"}
)
____exports.item_mask_of_madness_custom = item_mask_of_madness_custom
____exports.modifier_item_mask_of_madness_custom = __TS__Class()
local modifier_item_mask_of_madness_custom = ____exports.modifier_item_mask_of_madness_custom
modifier_item_mask_of_madness_custom.name = "modifier_item_mask_of_madness_custom"
modifier_item_mask_of_madness_custom.____file_path = "scripts/vscripts/items/default_items/item_mask_of_madness_custom.lua"
__TS__ClassExtends(modifier_item_mask_of_madness_custom, BaseModifier)
function modifier_item_mask_of_madness_custom.prototype.IsHidden(self)
return true
end
function modifier_item_mask_of_madness_custom.prototype.IsPurgable(self)
return false
end
function modifier_item_mask_of_madness_custom.prototype.GetAttributes(self)
return MODIFIER_ATTRIBUTE_MULTIPLE
end
function modifier_item_mask_of_madness_custom.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE}
end
function modifier_item_mask_of_madness_custom.prototype.GetModifierPreAttack_BonusDamage(self)
return self:GetAbility():GetSpecialValueFor("bonus_damage")
end
function modifier_item_mask_of_madness_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_mask_of_madness_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_mask_of_madness_custom = __TS__Decorate(
modifier_item_mask_of_madness_custom,
modifier_item_mask_of_madness_custom,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_mask_of_madness_custom"}
)
____exports.modifier_item_mask_of_madness_custom = modifier_item_mask_of_madness_custom
____exports.modifier_item_mask_of_madness_custom_buff = __TS__Class()
local modifier_item_mask_of_madness_custom_buff = ____exports.modifier_item_mask_of_madness_custom_buff
modifier_item_mask_of_madness_custom_buff.name = "modifier_item_mask_of_madness_custom_buff"
modifier_item_mask_of_madness_custom_buff.____file_path = "scripts/vscripts/items/default_items/item_mask_of_madness_custom.lua"
__TS__ClassExtends(modifier_item_mask_of_madness_custom_buff, BaseModifier)
function modifier_item_mask_of_madness_custom_buff.prototype.____constructor(self, ...)
BaseModifier.prototype.____constructor(self, ...)
self.bonus_damage = 0
self.bonus_attackspeed_active = 0
self.armor_reduction_active = 0
self.move_speed_active = 0
self.duration = 0
end
function modifier_item_mask_of_madness_custom_buff.prototype.IsHidden(self)
return false
end
function modifier_item_mask_of_madness_custom_buff.prototype.IsPurgable(self)
return true
end
function modifier_item_mask_of_madness_custom_buff.prototype.OnCreated(self)
self.bonus_damage = self:GetAbility():GetSpecialValueFor("bonus_damage")
self.bonus_attackspeed_active = self:GetAbility():GetSpecialValueFor("bonus_attackspeed_active")
self.armor_reduction_active = self:GetAbility():GetSpecialValueFor("armor_reduction_active")
self.move_speed_active = self:GetAbility():GetSpecialValueFor("move_speed_active")
self.duration = self:GetAbility():GetSpecialValueFor("duration")
end
function modifier_item_mask_of_madness_custom_buff.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE, MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT, MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS, MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE}
end
function modifier_item_mask_of_madness_custom_buff.prototype.CheckState(self)
return {[MODIFIER_STATE_SILENCED] = true}
end
function modifier_item_mask_of_madness_custom_buff.prototype.GetModifierPreAttack_BonusDamage(self)
return self.bonus_damage
end
function modifier_item_mask_of_madness_custom_buff.prototype.GetModifierAttackSpeedBonus_Constant(self)
return self.bonus_attackspeed_active
end
function modifier_item_mask_of_madness_custom_buff.prototype.GetModifierPhysicalArmorBonus(self)
return self.armor_reduction_active
end
function modifier_item_mask_of_madness_custom_buff.prototype.GetModifierMoveSpeedBonus_Percentage(self)
return self.move_speed_active
end
modifier_item_mask_of_madness_custom_buff = __TS__Decorate(
modifier_item_mask_of_madness_custom_buff,
modifier_item_mask_of_madness_custom_buff,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_mask_of_madness_custom_buff"}
)
____exports.modifier_item_mask_of_madness_custom_buff = modifier_item_mask_of_madness_custom_buff
return ____exports
@@ -0,0 +1,122 @@
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
____exports.item_mega_fury = __TS__Class()
local item_mega_fury = ____exports.item_mega_fury
item_mega_fury.name = "item_mega_fury"
item_mega_fury.____file_path = "scripts/vscripts/items/default_items/item_mega_fury.lua"
__TS__ClassExtends(item_mega_fury, BaseItem)
function item_mega_fury.prototype.GetIntrinsicModifierName(self)
return "modifier_mega_fury"
end
function item_mega_fury.prototype.GetAOERadius(self)
return self:GetSpecialValueFor("tree")
end
function item_mega_fury.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
local point = self:GetCursorPosition()
local trees = GridNav:GetAllTreesAroundPoint(
point,
self:GetSpecialValueFor("tree"),
true
)
if trees and #trees > 0 then
self:CutTree(caster, point)
end
end
function item_mega_fury.prototype.CutTree(self, caster, position)
GridNav:DestroyTreesAroundPoint(
position,
self:GetSpecialValueFor("tree"),
true
)
end
item_mega_fury = __TS__Decorate(
item_mega_fury,
item_mega_fury,
{registerAbility(nil)},
{kind = "class", name = "item_mega_fury"}
)
____exports.item_mega_fury = item_mega_fury
____exports.modifier_mega_fury = __TS__Class()
local modifier_mega_fury = ____exports.modifier_mega_fury
modifier_mega_fury.name = "modifier_mega_fury"
modifier_mega_fury.____file_path = "scripts/vscripts/items/default_items/item_mega_fury.lua"
__TS__ClassExtends(modifier_mega_fury, BaseModifier)
function modifier_mega_fury.prototype.IsHidden(self)
return true
end
function modifier_mega_fury.prototype.IsDebuff(self)
return false
end
function modifier_mega_fury.prototype.IsPurgable(self)
return false
end
function modifier_mega_fury.prototype.CheckState(self)
return {[MODIFIER_STATE_CANNOT_MISS] = true}
end
function modifier_mega_fury.prototype.GetAttributes(self)
return MODIFIER_ATTRIBUTE_MULTIPLE
end
function modifier_mega_fury.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE, MODIFIER_EVENT_ON_ATTACK_LANDED, MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT, MODIFIER_PROPERTY_ATTACK_RANGE_BONUS}
end
function modifier_mega_fury.prototype.OnAttackLanded(self, event)
if not IsServer() then
return
end
if self:GetParent():IsRangedAttacker() then
return
end
local parent = event.attacker
if parent ~= self:GetParent() then
return
end
local ability = self:GetAbility()
if not ability then
return
end
local target = event.target
local attackDamage = parent:GetAverageTrueAttackDamage(target)
local cleaveDamage = attackDamage * (self:GetAbility():GetSpecialValueFor("cleave_damage") / 100)
DoCleaveAttack(
parent,
target,
ability,
cleaveDamage,
self:GetAbility():GetSpecialValueFor("cleave_starting_width"),
self:GetAbility():GetSpecialValueFor("cleave_ending_width"),
self:GetAbility():GetSpecialValueFor("cleave_distance"),
"particles/items_fx/battlefury_cleave.vpcf"
)
end
function modifier_mega_fury.prototype.GetModifierPreAttack_BonusDamage(self)
return self:GetAbility():GetSpecialValueFor("bonus_damage")
end
function modifier_mega_fury.prototype.GetModifierAttackSpeedBonus_Constant(self)
return self:GetAbility():GetSpecialValueFor("attack_speed")
end
function modifier_mega_fury.prototype.GetModifierAttackRangeBonus(self)
if self:GetParent():IsRangedAttacker() then
return 0
end
return self:GetAbility():GetSpecialValueFor("attack_range")
end
modifier_mega_fury = __TS__Decorate(
modifier_mega_fury,
modifier_mega_fury,
{registerModifier(nil)},
{kind = "class", name = "modifier_mega_fury"}
)
____exports.modifier_mega_fury = modifier_mega_fury
return ____exports
@@ -0,0 +1,137 @@
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_mega_treads = __TS__Class()
local item_mega_treads = ____exports.item_mega_treads
item_mega_treads.name = "item_mega_treads"
item_mega_treads.____file_path = "scripts/vscripts/items/default_items/item_mega_treads.lua"
__TS__ClassExtends(item_mega_treads, BaseItem)
function item_mega_treads.prototype.OnSpellStart(self)
local caster = self:GetCaster()
local modifier = caster:FindModifierByName("modifier_item_mega_treads")
if not modifier then
return
end
modifier:SetStackCount((modifier:GetStackCount() + 1) % 3)
end
function item_mega_treads.prototype.GetAbilityTextureName(self)
local iconItem = {strength = "default_items/item_mega_treads_0", agility = "default_items/item_mega_treads_1", intellect = "default_items/item_mega_treads_2"}
return iconItem[self.activeStat] or "default_items/item_mega_treads_0"
end
function item_mega_treads.prototype.GetIntrinsicModifierName(self)
return "modifier_item_mega_treads"
end
item_mega_treads = __TS__Decorate(
item_mega_treads,
item_mega_treads,
{registerAbility(nil)},
{kind = "class", name = "item_mega_treads"}
)
____exports.item_mega_treads = item_mega_treads
____exports.modifier_item_mega_treads = __TS__Class()
local modifier_item_mega_treads = ____exports.modifier_item_mega_treads
modifier_item_mega_treads.name = "modifier_item_mega_treads"
modifier_item_mega_treads.____file_path = "scripts/vscripts/items/default_items/item_mega_treads.lua"
__TS__ClassExtends(modifier_item_mega_treads, BaseModifier)
function modifier_item_mega_treads.prototype.____constructor(self, ...)
BaseModifier.prototype.____constructor(self, ...)
self.ability = self:GetAbility()
self.bonusActiveStat = 0
self.bonusMovementSpeed = 0
self.bonusOtherStat = 0
self.bonusAttackSpeed = 0
self.bonusMagicalResistance = 0
self.bonusAgilityBaseDamagePct = 0
self.bonusIntellectSpellAmp = 0
end
function modifier_item_mega_treads.prototype.IsHidden(self)
return true
end
function modifier_item_mega_treads.prototype.IsPurgable(self)
return false
end
function modifier_item_mega_treads.prototype.IsPurgeException(self)
return false
end
function modifier_item_mega_treads.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_mega_treads.prototype.GetAttributes(self)
return MODIFIER_ATTRIBUTE_MULTIPLE
end
function modifier_item_mega_treads.prototype.OnStackCountChanged(self, oldCount)
local stackCount = self:GetStackCount()
local stats = {[0] = "strength", [1] = "intellect", [2] = "agility"}
self.activeStat = stats[stackCount] or "agility"
self.ability.activeStat = stats[stackCount] or "agility"
if IsServer() then
local parent = self:GetParent()
parent:CalculateStatBonus(true)
self.ability:SetSecondaryCharges(stackCount)
end
end
function modifier_item_mega_treads.prototype.OnCreated(self)
self.bonusActiveStat = self.ability:GetSpecialValueFor("bonus_stat")
self.bonusOtherStat = self.ability:GetSpecialValueFor("bonus_other_stat")
self.bonusMovementSpeed = self.ability:GetSpecialValueFor("bonus_movement_speed")
self.bonusAttackSpeed = self.ability:GetSpecialValueFor("bonus_attackspeed")
self.bonusMagicalResistance = self.ability:GetSpecialValueFor("bonus_magical_resistance")
self.bonusIntellectSpellAmp = self.ability:GetSpecialValueFor("spell_amplify")
local stats = {[0] = "strength", [1] = "intellect", [2] = "agility"}
if IsClient() then
return
end
Timers:CreateTimer(
0.03,
function()
self:SetStackCount(self.ability:GetSecondaryCharges())
end
)
end
function modifier_item_mega_treads.prototype.DeclareFunctions(self)
return {
MODIFIER_PROPERTY_STATS_STRENGTH_BONUS,
MODIFIER_PROPERTY_STATS_AGILITY_BONUS,
MODIFIER_PROPERTY_STATS_INTELLECT_BONUS,
MODIFIER_PROPERTY_MOVESPEED_BONUS_UNIQUE,
MODIFIER_PROPERTY_MAGICAL_RESISTANCE_BONUS,
MODIFIER_PROPERTY_SPELL_AMPLIFY_PERCENTAGE,
MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT
}
end
function modifier_item_mega_treads.prototype.GetModifierMoveSpeedBonus_Special_Boots(self)
return self.bonusMovementSpeed
end
function modifier_item_mega_treads.prototype.GetModifierSpellAmplify_Percentage(self)
return self.activeStat == "intellect" and self.bonusIntellectSpellAmp or 0
end
function modifier_item_mega_treads.prototype.GetModifierMagicalResistanceBonus(self)
return self.activeStat == "strength" and self.bonusMagicalResistance or 0
end
function modifier_item_mega_treads.prototype.GetModifierAttackSpeedBonus_Constant(self)
return self.activeStat == "agility" and self.bonusAttackSpeed or 0
end
function modifier_item_mega_treads.prototype.GetModifierBonusStats_Strength(self)
return self.activeStat == "strength" and self.bonusActiveStat or self.bonusOtherStat
end
function modifier_item_mega_treads.prototype.GetModifierBonusStats_Agility(self)
return self.activeStat == "agility" and self.bonusActiveStat or self.bonusOtherStat
end
function modifier_item_mega_treads.prototype.GetModifierBonusStats_Intellect(self)
return self.activeStat == "intellect" and self.bonusActiveStat or self.bonusOtherStat
end
modifier_item_mega_treads = __TS__Decorate(
modifier_item_mega_treads,
modifier_item_mega_treads,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_mega_treads"}
)
____exports.modifier_item_mega_treads = modifier_item_mega_treads
return ____exports
@@ -0,0 +1,110 @@
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
____exports.item_mini_bfury = __TS__Class()
local item_mini_bfury = ____exports.item_mini_bfury
item_mini_bfury.name = "item_mini_bfury"
item_mini_bfury.____file_path = "scripts/vscripts/items/default_items/item_mini_bfury.lua"
__TS__ClassExtends(item_mini_bfury, BaseItem)
function item_mini_bfury.prototype.GetIntrinsicModifierName(self)
return "modifier_mini_bfury"
end
function item_mini_bfury.prototype.GetAOERadius(self)
return self:GetSpecialValueFor("tree")
end
function item_mini_bfury.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
local point = self:GetCursorPosition()
local trees = GridNav:GetAllTreesAroundPoint(
point,
self:GetSpecialValueFor("tree"),
true
)
if trees and #trees > 0 then
self:CutTree(caster, point)
end
end
function item_mini_bfury.prototype.CutTree(self, caster, position)
GridNav:DestroyTreesAroundPoint(
position,
self:GetSpecialValueFor("tree"),
true
)
end
item_mini_bfury = __TS__Decorate(
item_mini_bfury,
item_mini_bfury,
{registerAbility(nil)},
{kind = "class", name = "item_mini_bfury"}
)
____exports.item_mini_bfury = item_mini_bfury
____exports.modifier_mini_bfury = __TS__Class()
local modifier_mini_bfury = ____exports.modifier_mini_bfury
modifier_mini_bfury.name = "modifier_mini_bfury"
modifier_mini_bfury.____file_path = "scripts/vscripts/items/default_items/item_mini_bfury.lua"
__TS__ClassExtends(modifier_mini_bfury, BaseModifier)
function modifier_mini_bfury.prototype.IsHidden(self)
return true
end
function modifier_mini_bfury.prototype.IsDebuff(self)
return false
end
function modifier_mini_bfury.prototype.IsPurgable(self)
return false
end
function modifier_mini_bfury.prototype.GetAttributes(self)
return MODIFIER_ATTRIBUTE_MULTIPLE
end
function modifier_mini_bfury.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE, MODIFIER_EVENT_ON_ATTACK_LANDED}
end
function modifier_mini_bfury.prototype.OnAttackLanded(self, event)
if not IsServer() then
return
end
if self:GetParent():IsRangedAttacker() then
return
end
local parent = event.attacker
if parent ~= self:GetParent() then
return
end
local ability = self:GetAbility()
if not ability then
return
end
local target = event.target
local attackDamage = parent:GetAverageTrueAttackDamage(target)
local cleaveDamage = attackDamage * (self:GetAbility():GetSpecialValueFor("cleave_damage") / 100)
DoCleaveAttack(
parent,
target,
ability,
cleaveDamage,
self:GetAbility():GetSpecialValueFor("cleave_starting_width"),
self:GetAbility():GetSpecialValueFor("cleave_ending_width"),
self:GetAbility():GetSpecialValueFor("cleave_distance"),
"particles/items_fx/battlefury_cleave.vpcf"
)
end
function modifier_mini_bfury.prototype.GetModifierPreAttack_BonusDamage(self)
return self:GetAbility():GetSpecialValueFor("bonus_damage")
end
modifier_mini_bfury = __TS__Decorate(
modifier_mini_bfury,
modifier_mini_bfury,
{registerModifier(nil)},
{kind = "class", name = "modifier_mini_bfury"}
)
____exports.modifier_mini_bfury = modifier_mini_bfury
return ____exports
@@ -0,0 +1,337 @@
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 ____incoming_damage_reduction_combine = require("utils.incoming_damage_reduction_combine")
local removeIncomingDamageReductionSource = ____incoming_damage_reduction_combine.removeIncomingDamageReductionSource
local setIncomingDamageReductionSource = ____incoming_damage_reduction_combine.setIncomingDamageReductionSource
local MJOLNIR_ACTIVE_INCOMING_SOURCE = "modifier_item_mjolnir_active"
____exports.item_mjolnir_custom = __TS__Class()
local item_mjolnir_custom = ____exports.item_mjolnir_custom
item_mjolnir_custom.name = "item_mjolnir_custom"
item_mjolnir_custom.____file_path = "scripts/vscripts/items/default_items/item_mjolnir_custom.lua"
__TS__ClassExtends(item_mjolnir_custom, BaseItem)
function item_mjolnir_custom.prototype.GetIntrinsicModifierName(self)
return "modifier_item_mjolnir_custom"
end
function item_mjolnir_custom.prototype.OnSpellStart(self)
local target = self:GetCursorTarget()
if not target then
return
end
target:EmitSound("DOTA_Item.Mjollnir.Activate")
target:AddNewModifier(
self:GetCaster(),
self,
"modifier_item_mjolnir_active",
{duration = self:GetSpecialValueFor("duration")}
)
end
item_mjolnir_custom = __TS__Decorate(
item_mjolnir_custom,
item_mjolnir_custom,
{registerAbility(nil)},
{kind = "class", name = "item_mjolnir_custom"}
)
____exports.item_mjolnir_custom = item_mjolnir_custom
____exports.modifier_item_mjolnir_active = __TS__Class()
local modifier_item_mjolnir_active = ____exports.modifier_item_mjolnir_active
modifier_item_mjolnir_active.name = "modifier_item_mjolnir_active"
modifier_item_mjolnir_active.____file_path = "scripts/vscripts/items/default_items/item_mjolnir_custom.lua"
__TS__ClassExtends(modifier_item_mjolnir_active, BaseModifier)
function modifier_item_mjolnir_active.prototype.GetEffectName(self)
return "particles/econ/events/ti6/mjollnir_shield_ti6.vpcf"
end
function modifier_item_mjolnir_active.prototype.GetEffectAttachType(self)
return PATTACH_ABSORIGIN_FOLLOW
end
function modifier_item_mjolnir_active.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_DAMAGEOUTGOING_PERCENTAGE}
end
function modifier_item_mjolnir_active.prototype.OnCreated(self)
if not IsServer() then
return
end
setIncomingDamageReductionSource(
nil,
self:GetParent(),
MJOLNIR_ACTIVE_INCOMING_SOURCE,
function()
local ability = self:GetAbility()
if not ability then
return 0
end
return math.max(
0,
ability:GetSpecialValueFor("incoming_pct")
)
end
)
end
function modifier_item_mjolnir_active.prototype.OnDestroy(self)
if not IsServer() then
return
end
removeIncomingDamageReductionSource(
nil,
self:GetParent(),
MJOLNIR_ACTIVE_INCOMING_SOURCE
)
end
function modifier_item_mjolnir_active.prototype.GetModifierDamageOutgoing_Percentage(self, event)
return self:GetAbility():GetSpecialValueFor("outgoing_pct")
end
function modifier_item_mjolnir_active.prototype.GetTexture(self)
return "item_mjollnir"
end
modifier_item_mjolnir_active = __TS__Decorate(
modifier_item_mjolnir_active,
modifier_item_mjolnir_active,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_mjolnir_active"}
)
____exports.modifier_item_mjolnir_active = modifier_item_mjolnir_active
____exports.modifier_item_mjolnir_custom = __TS__Class()
local modifier_item_mjolnir_custom = ____exports.modifier_item_mjolnir_custom
modifier_item_mjolnir_custom.name = "modifier_item_mjolnir_custom"
modifier_item_mjolnir_custom.____file_path = "scripts/vscripts/items/default_items/item_mjolnir_custom.lua"
__TS__ClassExtends(modifier_item_mjolnir_custom, BaseModifier)
function modifier_item_mjolnir_custom.prototype.____constructor(self, ...)
BaseModifier.prototype.____constructor(self, ...)
self.bonus_damage = 0
self.bonus_attack_speed = 0
self.chain_chance = 0
self.chain_cooldown = 0
self.bChainCooldown = false
end
function modifier_item_mjolnir_custom.prototype.IsHidden(self)
return true
end
function modifier_item_mjolnir_custom.prototype.IsPurgable(self)
return false
end
function modifier_item_mjolnir_custom.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_mjolnir_custom.prototype.GetAttributes(self)
return MODIFIER_ATTRIBUTE_MULTIPLE
end
function modifier_item_mjolnir_custom.prototype.OnCreated(self, params)
if IsServer() then
if not self:GetAbility() then
self:Destroy()
return
end
end
local ability = self:GetAbility()
if ability then
self.bonus_damage = ability:GetSpecialValueFor("bonus_damage")
self.bonus_attack_speed = ability:GetSpecialValueFor("bonus_attack_speed")
self.chain_chance = ability:GetSpecialValueFor("chain_chance")
self.chain_cooldown = ability:GetSpecialValueFor("chain_cooldown")
else
self.bonus_damage = 0
self.bonus_attack_speed = 0
self.chain_chance = 0
self.chain_cooldown = 0
end
self.bChainCooldown = false
end
function modifier_item_mjolnir_custom.prototype.OnIntervalThink(self)
self.bChainCooldown = false
self:StartIntervalThink(-1)
end
function modifier_item_mjolnir_custom.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE, MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT, MODIFIER_EVENT_ON_ATTACK_LANDED, MODIFIER_EVENT_ON_ORDER}
end
function modifier_item_mjolnir_custom.prototype.GetModifierPreAttack_BonusDamage(self)
return self.bonus_damage
end
function modifier_item_mjolnir_custom.prototype.GetModifierAttackSpeedBonus_Constant(self)
return self.bonus_attack_speed
end
function modifier_item_mjolnir_custom.prototype.OnAttackLanded(self, event)
if IsServer() and event.attacker == self:GetParent() and self:GetParent():IsAlive() and not self.bChainCooldown and not self:GetParent():IsIllusion() and not event.target:IsMagicImmune() and not event.target:IsBuilding() and not event.target:IsOther() and self:GetParent():GetTeamNumber() ~= event.target:GetTeamNumber() and RollPseudoRandomPercentage(
self.chain_chance,
4,
self:GetParent()
) then
self:GetParent():EmitSound("Item.Maelstrom.Chain_Lightning")
self:GetParent():AddNewModifier(
self:GetCaster(),
self:GetAbility(),
"modifier_chain_lightning",
{starting_unit_entindex = event.target:entindex()}
)
self.bChainCooldown = true
self:StartIntervalThink(self.chain_cooldown)
end
end
modifier_item_mjolnir_custom = __TS__Decorate(
modifier_item_mjolnir_custom,
modifier_item_mjolnir_custom,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_mjolnir_custom"}
)
____exports.modifier_item_mjolnir_custom = modifier_item_mjolnir_custom
____exports.modifier_chain_lightning = __TS__Class()
local modifier_chain_lightning = ____exports.modifier_chain_lightning
modifier_chain_lightning.name = "modifier_chain_lightning"
modifier_chain_lightning.____file_path = "scripts/vscripts/items/default_items/item_mjolnir_custom.lua"
__TS__ClassExtends(modifier_chain_lightning, BaseModifier)
function modifier_chain_lightning.prototype.____constructor(self, ...)
BaseModifier.prototype.____constructor(self, ...)
self.bonus_damage = 0
self.chain_damage = 0
self.chain_damage_self = 0
self.chain_strikes = 0
self.chain_radius = 0
self.chain_delay = 0
self.units_affected = {}
self.unit_counter = 0
self.zapped = false
end
function modifier_chain_lightning.prototype.IsHidden(self)
return true
end
function modifier_chain_lightning.prototype.IsDebuff(self)
return false
end
function modifier_chain_lightning.prototype.IsPurgable(self)
return false
end
function modifier_chain_lightning.prototype.RemoveOnDeath(self)
return false
end
function modifier_chain_lightning.prototype.GetAttributes(self)
return MODIFIER_ATTRIBUTE_MULTIPLE
end
function modifier_chain_lightning.prototype.OnCreated(self, params)
if IsServer() then
if not self:GetAbility() then
self:Destroy()
return
end
end
if not IsServer() then
return
end
local ability = self:GetAbility()
if ability then
self.bonus_damage = ability:GetSpecialValueFor("bonus_damage")
self.chain_damage = ability:GetSpecialValueFor("chain_damage")
self.chain_damage_self = ability:GetSpecialValueFor("chain_damage_self")
self.chain_strikes = ability:GetSpecialValueFor("chain_strikes")
self.chain_radius = ability:GetSpecialValueFor("chain_radius")
self.chain_delay = ability:GetSpecialValueFor("chain_delay")
end
self.starting_unit_entindex = params.starting_unit_entindex
if self.starting_unit_entindex then
local unit = EntIndexToHScript(self.starting_unit_entindex)
if unit and unit:IsBaseNPC() then
self.current_unit = unit
else
self:Destroy()
return
end
else
self:Destroy()
return
end
self.units_affected = {}
self.unit_counter = 0
self:OnIntervalThink()
self:StartIntervalThink(self.chain_delay)
end
function modifier_chain_lightning.prototype.OnIntervalThink(self)
self.zapped = false
local caster = self:GetCaster()
if not self.current_unit or not caster then
return
end
local enemies = FindUnitsInRadius(
caster:GetTeamNumber(),
self.current_unit:GetAbsOrigin(),
nil,
self.chain_radius,
DOTA_UNIT_TARGET_TEAM_ENEMY,
DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_BASIC,
DOTA_UNIT_TARGET_FLAG_FOW_VISIBLE + DOTA_UNIT_TARGET_FLAG_NO_INVIS,
FIND_CLOSEST,
false
)
for ____, enemy in ipairs(enemies) do
if not self.units_affected[enemy:entindex()] then
enemy:EmitSound("Item.Maelstrom.Chain_Lightning.Jump")
local zap_particle = ParticleManager:CreateParticle("particles/items_fx/chain_lightning.vpcf", PATTACH_ABSORIGIN_FOLLOW, self.current_unit)
if self.unit_counter == 0 then
ParticleManager:SetParticleControlEnt(
zap_particle,
0,
self:GetParent(),
PATTACH_POINT_FOLLOW,
"attach_hitloc",
self:GetParent():GetAbsOrigin(),
true
)
else
ParticleManager:SetParticleControlEnt(
zap_particle,
0,
self.current_unit,
PATTACH_POINT_FOLLOW,
"attach_hitloc",
self.current_unit:GetAbsOrigin(),
true
)
end
ParticleManager:SetParticleControlEnt(
zap_particle,
1,
enemy,
PATTACH_POINT_FOLLOW,
"attach_hitloc",
enemy:GetAbsOrigin(),
true
)
ParticleManager:SetParticleControl(
zap_particle,
2,
Vector(1, 1, 1)
)
ParticleManager:ReleaseParticleIndex(zap_particle)
self.unit_counter = self.unit_counter + 1
self.current_unit = enemy
self.units_affected[self.current_unit:entindex()] = true
self.zapped = true
local damage = caster:GetAverageTrueAttackDamage(caster) * (self.chain_damage_self / 100) + self.chain_damage
ApplyDamage({
victim = enemy,
damage = damage,
damage_type = DAMAGE_TYPE_MAGICAL,
damage_flags = DOTA_DAMAGE_FLAG_NONE,
attacker = caster,
ability = self:GetAbility()
})
break
end
end
if self.unit_counter >= self.chain_strikes and self.chain_strikes > 0 or not self.zapped then
self:StartIntervalThink(-1)
self:Destroy()
end
end
modifier_chain_lightning = __TS__Decorate(
modifier_chain_lightning,
modifier_chain_lightning,
{registerModifier(nil)},
{kind = "class", name = "modifier_chain_lightning"}
)
____exports.modifier_chain_lightning = modifier_chain_lightning
return ____exports
@@ -0,0 +1,107 @@
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
local ____modifier_general_fired = require("abilities.modifiers.modifier_general_fired")
local modifier_general_fired = ____modifier_general_fired.modifier_general_fired
____exports.item_orb_of_fire = __TS__Class()
local item_orb_of_fire = ____exports.item_orb_of_fire
item_orb_of_fire.name = "item_orb_of_fire"
item_orb_of_fire.____file_path = "scripts/vscripts/items/default_items/item_orb_of_fire copy.lua"
__TS__ClassExtends(item_orb_of_fire, BaseItem)
function item_orb_of_fire.prototype.GetIntrinsicModifierName(self)
return "modifier_item_orb_of_fire"
end
function item_orb_of_fire.prototype.GetAOERadius(self)
return self:GetSpecialValueFor("radius")
end
item_orb_of_fire = __TS__Decorate(
item_orb_of_fire,
item_orb_of_fire,
{registerAbility(nil)},
{kind = "class", name = "item_orb_of_fire"}
)
____exports.item_orb_of_fire = item_orb_of_fire
____exports.modifier_item_orb_of_fire = __TS__Class()
local modifier_item_orb_of_fire = ____exports.modifier_item_orb_of_fire
modifier_item_orb_of_fire.name = "modifier_item_orb_of_fire"
modifier_item_orb_of_fire.____file_path = "scripts/vscripts/items/default_items/item_orb_of_fire copy.lua"
__TS__ClassExtends(modifier_item_orb_of_fire, BaseModifier)
function modifier_item_orb_of_fire.prototype.IsHidden(self)
return true
end
function modifier_item_orb_of_fire.prototype.IsDebuff(self)
return false
end
function modifier_item_orb_of_fire.prototype.IsPurgable(self)
return false
end
function modifier_item_orb_of_fire.prototype.OnCreated(self, params)
self:StartIntervalThink(3)
end
function modifier_item_orb_of_fire.prototype.GetTexture(self)
return "default_items/orb_of_fire"
end
function modifier_item_orb_of_fire.prototype.OnIntervalThink(self)
if not IsServer() then
return
end
if not self:GetParent():IsAlive() then
return
end
local caster = self:GetCaster()
local radius = self:GetAbility():GetSpecialValueFor("radius")
local damage = self:GetAbility():GetSpecialValueFor("damage")
local enemies = FindUnitsInRadius(
caster:GetTeamNumber(),
caster:GetAbsOrigin(),
nil,
radius,
DOTA_UNIT_TARGET_TEAM_ENEMY,
bit.bor(DOTA_UNIT_TARGET_HERO, DOTA_UNIT_TARGET_BASIC),
DOTA_UNIT_TARGET_FLAG_NONE,
FIND_ANY_ORDER,
false
)
for ____, enemy in ipairs(enemies) do
local damage_table = {
victim = enemy,
attacker = caster,
damage = damage,
damage_type = DAMAGE_TYPE_MAGICAL,
ability = self:GetAbility(),
damage_flags = DOTA_DAMAGE_FLAG_NO_SPELL_AMPLIFICATION
}
local modifier = enemy:AddNewModifier(
self:GetCaster(),
self:GetAbility(),
modifier_general_fired.name,
{}
)
if modifier then
local stacksPerLevel = self:GetAbility():GetSpecialValueFor("fire_stack")
do
local i = 0
while i < stacksPerLevel do
modifier:IncrementStackCount()
i = i + 1
end
end
end
ApplyDamage(damage_table)
end
end
modifier_item_orb_of_fire = __TS__Decorate(
modifier_item_orb_of_fire,
modifier_item_orb_of_fire,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_orb_of_fire"}
)
____exports.modifier_item_orb_of_fire = modifier_item_orb_of_fire
return ____exports
@@ -0,0 +1,107 @@
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
local ____modifier_general_fired = require("abilities.modifiers.modifier_general_fired")
local modifier_general_fired = ____modifier_general_fired.modifier_general_fired
____exports.item_orb_of_fire = __TS__Class()
local item_orb_of_fire = ____exports.item_orb_of_fire
item_orb_of_fire.name = "item_orb_of_fire"
item_orb_of_fire.____file_path = "scripts/vscripts/items/default_items/item_orb_of_fire.lua"
__TS__ClassExtends(item_orb_of_fire, BaseItem)
function item_orb_of_fire.prototype.GetIntrinsicModifierName(self)
return "modifier_item_orb_of_fire"
end
function item_orb_of_fire.prototype.GetAOERadius(self)
return self:GetSpecialValueFor("radius")
end
item_orb_of_fire = __TS__Decorate(
item_orb_of_fire,
item_orb_of_fire,
{registerAbility(nil)},
{kind = "class", name = "item_orb_of_fire"}
)
____exports.item_orb_of_fire = item_orb_of_fire
____exports.modifier_item_orb_of_fire = __TS__Class()
local modifier_item_orb_of_fire = ____exports.modifier_item_orb_of_fire
modifier_item_orb_of_fire.name = "modifier_item_orb_of_fire"
modifier_item_orb_of_fire.____file_path = "scripts/vscripts/items/default_items/item_orb_of_fire.lua"
__TS__ClassExtends(modifier_item_orb_of_fire, BaseModifier)
function modifier_item_orb_of_fire.prototype.IsHidden(self)
return true
end
function modifier_item_orb_of_fire.prototype.IsDebuff(self)
return false
end
function modifier_item_orb_of_fire.prototype.IsPurgable(self)
return false
end
function modifier_item_orb_of_fire.prototype.OnCreated(self, params)
self:StartIntervalThink(3)
end
function modifier_item_orb_of_fire.prototype.GetTexture(self)
return "default_items/orb_of_fire"
end
function modifier_item_orb_of_fire.prototype.OnIntervalThink(self)
if not IsServer() then
return
end
if not self:GetParent():IsAlive() then
return
end
local caster = self:GetCaster()
local radius = self:GetAbility():GetSpecialValueFor("radius")
local damage = self:GetAbility():GetSpecialValueFor("damage")
local enemies = FindUnitsInRadius(
caster:GetTeamNumber(),
caster:GetAbsOrigin(),
nil,
radius,
DOTA_UNIT_TARGET_TEAM_ENEMY,
bit.bor(DOTA_UNIT_TARGET_HERO, DOTA_UNIT_TARGET_BASIC),
DOTA_UNIT_TARGET_FLAG_NONE,
FIND_ANY_ORDER,
false
)
for ____, enemy in ipairs(enemies) do
local damage_table = {
victim = enemy,
attacker = caster,
damage = damage,
damage_type = DAMAGE_TYPE_MAGICAL,
ability = self:GetAbility(),
damage_flags = DOTA_DAMAGE_FLAG_NO_SPELL_AMPLIFICATION
}
local modifier = enemy:AddNewModifier(
self:GetCaster(),
self:GetAbility(),
modifier_general_fired.name,
{}
)
if modifier then
local stacksPerLevel = self:GetAbility():GetSpecialValueFor("fire_stack")
do
local i = 0
while i < stacksPerLevel do
modifier:IncrementStackCount()
i = i + 1
end
end
end
ApplyDamage(damage_table)
end
end
modifier_item_orb_of_fire = __TS__Decorate(
modifier_item_orb_of_fire,
modifier_item_orb_of_fire,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_orb_of_fire"}
)
____exports.modifier_item_orb_of_fire = modifier_item_orb_of_fire
return ____exports
@@ -0,0 +1,75 @@
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 ____luck = require("utils.luck")
local rollLuckChance = ____luck.rollLuckChance
--- Бедный щит: броня и шанс заблокировать физический урон от атак; шанс для героев с Luck.
____exports.item_poor_shield = __TS__Class()
local item_poor_shield = ____exports.item_poor_shield
item_poor_shield.name = "item_poor_shield"
item_poor_shield.____file_path = "scripts/vscripts/items/default_items/item_poor_shield.lua"
__TS__ClassExtends(item_poor_shield, BaseItem)
function item_poor_shield.prototype.GetIntrinsicModifierName(self)
return ____exports.modifier_item_poor_shield.name
end
item_poor_shield = __TS__Decorate(
item_poor_shield,
item_poor_shield,
{registerAbility(nil)},
{kind = "class", name = "item_poor_shield"}
)
____exports.item_poor_shield = item_poor_shield
____exports.modifier_item_poor_shield = __TS__Class()
local modifier_item_poor_shield = ____exports.modifier_item_poor_shield
modifier_item_poor_shield.name = "modifier_item_poor_shield"
modifier_item_poor_shield.____file_path = "scripts/vscripts/items/default_items/item_poor_shield.lua"
__TS__ClassExtends(modifier_item_poor_shield, BaseModifier)
function modifier_item_poor_shield.prototype.IsHidden(self)
return true
end
function modifier_item_poor_shield.prototype.IsPurgable(self)
return false
end
function modifier_item_poor_shield.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_PHYSICAL_CONSTANT_BLOCK, MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS}
end
function modifier_item_poor_shield.prototype.GetModifierPhysicalArmorBonus(self)
return self:GetAbility():GetSpecialValueFor("bonus_physical_armor")
end
function modifier_item_poor_shield.prototype.GetModifierPhysical_ConstantBlock(self)
if not IsServer() then
return 0
end
local ability = self:GetAbility()
if not ability then
return 0
end
local chancePct = ability:GetSpecialValueFor("damage_block_chance")
local parent = self:GetParent()
local ____parent_IsRealHero_result_0
if parent:IsRealHero() then
____parent_IsRealHero_result_0 = rollLuckChance(nil, parent, chancePct / 100)
else
____parent_IsRealHero_result_0 = RollPercentage(chancePct)
end
local blocked = ____parent_IsRealHero_result_0
if blocked then
return self:GetCaster():IsRangedAttacker() and ability:GetSpecialValueFor("damage_block") * 0.5 or ability:GetSpecialValueFor("damage_block")
end
return 0
end
modifier_item_poor_shield = __TS__Decorate(
modifier_item_poor_shield,
modifier_item_poor_shield,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_poor_shield"}
)
____exports.modifier_item_poor_shield = modifier_item_poor_shield
return ____exports
@@ -0,0 +1,155 @@
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
local ____modifier_general_fired = require("abilities.modifiers.modifier_general_fired")
local modifier_general_fired = ____modifier_general_fired.modifier_general_fired
local RADIANCE_PARTICLE = "particles/items2_fx/radiance_owner.vpcf"
--- Суммарный регген HP/сек владельца (с предметами и баффами).
local function getOwnerHealthRegenPerSecond(self, unit)
local u = unit
if u.GetHealthRegen ~= nil and type(u.GetHealthRegen) == "function" then
return math.max(
0,
u:GetHealthRegen()
)
end
return math.max(
0,
unit:GetBaseHealthRegen()
)
end
____exports.item_radiance_custom = __TS__Class()
local item_radiance_custom = ____exports.item_radiance_custom
item_radiance_custom.name = "item_radiance_custom"
item_radiance_custom.____file_path = "scripts/vscripts/items/default_items/item_radiance_custom.lua"
__TS__ClassExtends(item_radiance_custom, BaseItem)
function item_radiance_custom.prototype.Precache(self, context)
PrecacheResource("particle", RADIANCE_PARTICLE, context)
end
function item_radiance_custom.prototype.GetIntrinsicModifierName(self)
return ____exports.modifier_item_radiance_custom.name
end
function item_radiance_custom.prototype.GetAOERadius(self)
return self:GetSpecialValueFor("radius")
end
item_radiance_custom = __TS__Decorate(
item_radiance_custom,
item_radiance_custom,
{registerAbility(nil)},
{kind = "class", name = "item_radiance_custom"}
)
____exports.item_radiance_custom = item_radiance_custom
____exports.modifier_item_radiance_custom = __TS__Class()
local modifier_item_radiance_custom = ____exports.modifier_item_radiance_custom
modifier_item_radiance_custom.name = "modifier_item_radiance_custom"
modifier_item_radiance_custom.____file_path = "scripts/vscripts/items/default_items/item_radiance_custom.lua"
__TS__ClassExtends(modifier_item_radiance_custom, BaseModifier)
function modifier_item_radiance_custom.prototype.IsHidden(self)
return true
end
function modifier_item_radiance_custom.prototype.IsDebuff(self)
return false
end
function modifier_item_radiance_custom.prototype.IsPurgable(self)
return false
end
function modifier_item_radiance_custom.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_radiance_custom.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE, MODIFIER_PROPERTY_EVASION_CONSTANT}
end
function modifier_item_radiance_custom.prototype.GetModifierPreAttack_BonusDamage(self)
return self:GetAbility():GetSpecialValueFor("bonus_damage")
end
function modifier_item_radiance_custom.prototype.GetModifierEvasion_Constant(self)
return self:GetAbility():GetSpecialValueFor("evasion")
end
function modifier_item_radiance_custom.prototype.OnCreated(self)
if not IsServer() then
return
end
local tickInterval = self:GetAbility():GetSpecialValueFor("tick_interval")
self:StartIntervalThink(tickInterval)
self.particleId = ParticleManager:CreateParticle(
RADIANCE_PARTICLE,
PATTACH_ABSORIGIN_FOLLOW,
self:GetParent()
)
ParticleManager:SetParticleShouldCheckFoW(self.particleId, false)
end
function modifier_item_radiance_custom.prototype.OnDestroy(self)
if not IsServer() then
return
end
if self.particleId ~= nil then
ParticleManager:DestroyParticle(self.particleId, false)
ParticleManager:ReleaseParticleIndex(self.particleId)
self.particleId = nil
end
end
function modifier_item_radiance_custom.prototype.OnIntervalThink(self)
if not IsServer() then
return
end
if not self:GetParent():IsAlive() then
return
end
local ____opt_0 = self:GetCaster()
if ____opt_0 and ____opt_0:IsIllusion() then
return
end
local ability = self:GetAbility()
local caster = self:GetCaster()
local radius = ability:GetSpecialValueFor("radius")
local tickInterval = ability:GetSpecialValueFor("tick_interval")
local healthRegen = getOwnerHealthRegenPerSecond(nil, caster)
local damage = (ability:GetSpecialValueFor("damage") + caster:GetMaxHealth() * (ability:GetSpecialValueFor("health_damage_pct") / 100) + healthRegen * ability:GetSpecialValueFor("health_regen_damage")) * tickInterval
local enemies = FindUnitsInRadius(
caster:GetTeamNumber(),
caster:GetAbsOrigin(),
nil,
radius,
DOTA_UNIT_TARGET_TEAM_ENEMY,
bit.bor(DOTA_UNIT_TARGET_HERO, DOTA_UNIT_TARGET_BASIC),
DOTA_UNIT_TARGET_FLAG_NONE,
FIND_ANY_ORDER,
false
)
local stacksPerTick = ability:GetSpecialValueFor("fire_stack")
for ____, enemy in ipairs(enemies) do
local burnModifier = enemy:AddNewModifier(caster, ability, modifier_general_fired.name, {})
if burnModifier then
do
local i = 0
while i < stacksPerTick do
burnModifier:IncrementStackCount()
i = i + 1
end
end
end
ApplyDamage({
victim = enemy,
attacker = caster,
damage = damage,
damage_type = DAMAGE_TYPE_MAGICAL,
ability = ability,
damage_flags = DOTA_DAMAGE_FLAG_NO_SPELL_AMPLIFICATION
})
end
end
modifier_item_radiance_custom = __TS__Decorate(
modifier_item_radiance_custom,
modifier_item_radiance_custom,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_radiance_custom"}
)
____exports.modifier_item_radiance_custom = modifier_item_radiance_custom
return ____exports
@@ -0,0 +1,76 @@
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
____exports.item_rapier_custom = __TS__Class()
local item_rapier_custom = ____exports.item_rapier_custom
item_rapier_custom.name = "item_rapier_custom"
item_rapier_custom.____file_path = "scripts/vscripts/items/default_items/item_rapier_custom.lua"
__TS__ClassExtends(item_rapier_custom, BaseItem)
function item_rapier_custom.prototype.GetIntrinsicModifierName(self)
return "modifier_rapier_custom"
end
item_rapier_custom = __TS__Decorate(
item_rapier_custom,
item_rapier_custom,
{registerAbility(nil)},
{kind = "class", name = "item_rapier_custom"}
)
____exports.item_rapier_custom = item_rapier_custom
____exports.modifier_rapier_custom = __TS__Class()
local modifier_rapier_custom = ____exports.modifier_rapier_custom
modifier_rapier_custom.name = "modifier_rapier_custom"
modifier_rapier_custom.____file_path = "scripts/vscripts/items/default_items/item_rapier_custom.lua"
__TS__ClassExtends(modifier_rapier_custom, BaseModifier)
function modifier_rapier_custom.prototype.IsHidden(self)
return true
end
function modifier_rapier_custom.prototype.IsDebuff(self)
return false
end
function modifier_rapier_custom.prototype.IsPurgable(self)
return false
end
function modifier_rapier_custom.prototype.GetAttributes(self)
return MODIFIER_ATTRIBUTE_MULTIPLE
end
function modifier_rapier_custom.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE, MODIFIER_PROPERTY_PROCATTACK_BONUS_DAMAGE_PURE, MODIFIER_EVENT_ON_ATTACK_LANDED}
end
function modifier_rapier_custom.prototype.OnAttackLanded(self, event)
if self:GetParent() == event.attacker then
local damage = self:GetAbility():GetSpecialValueFor("proc_damage") / 100 * self:GetParent():GetAverageTrueAttackDamage(event.target)
SendOverheadEventMessage(
nil,
OVERHEAD_ALERT_DAMAGE,
event.target,
damage,
nil
)
local particle = ParticleManager:CreateParticle("models/heroes/phantom_assassin_persona/debut/particles/pa_debutdash/pa_debutdash_fragments.vpcf", PATTACH_CUSTOMORIGIN, nil)
ParticleManager:SetParticleControl(
particle,
0,
event.target:GetAbsOrigin()
)
ParticleManager:ReleaseParticleIndex(particle)
ApplyDamage({victim = event.target, attacker = event.attacker, damage = damage, damage_type = DAMAGE_TYPE_PURE})
end
end
function modifier_rapier_custom.prototype.GetModifierPreAttack_BonusDamage(self)
return self:GetAbility():GetSpecialValueFor("bonus_damage")
end
modifier_rapier_custom = __TS__Decorate(
modifier_rapier_custom,
modifier_rapier_custom,
{registerModifier(nil)},
{kind = "class", name = "modifier_rapier_custom"}
)
____exports.modifier_rapier_custom = modifier_rapier_custom
return ____exports
@@ -0,0 +1,159 @@
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
@@ -0,0 +1,158 @@
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 ____modifier_stats_multiplier = require("modifiers.modifier_stats_multiplier")
local removeStatsMultiplierSource = ____modifier_stats_multiplier.removeStatsMultiplierSource
local setStatsMultiplierSource = ____modifier_stats_multiplier.setStatsMultiplierSource
local SKADI_CUSTOM_SOURCE_PREFIX = "item_skadi_custom"
____exports.item_skadi_custom = __TS__Class()
local item_skadi_custom = ____exports.item_skadi_custom
item_skadi_custom.name = "item_skadi_custom"
item_skadi_custom.____file_path = "scripts/vscripts/items/default_items/item_skadi_custom.lua"
__TS__ClassExtends(item_skadi_custom, BaseItem)
function item_skadi_custom.prototype.GetIntrinsicModifierName(self)
return "modifier_item_skadi_custom"
end
item_skadi_custom = __TS__Decorate(
item_skadi_custom,
item_skadi_custom,
{registerAbility(nil)},
{kind = "class", name = "item_skadi_custom"}
)
____exports.item_skadi_custom = item_skadi_custom
____exports.modifier_item_skadi_custom = __TS__Class()
local modifier_item_skadi_custom = ____exports.modifier_item_skadi_custom
modifier_item_skadi_custom.name = "modifier_item_skadi_custom"
modifier_item_skadi_custom.____file_path = "scripts/vscripts/items/default_items/item_skadi_custom.lua"
__TS__ClassExtends(modifier_item_skadi_custom, BaseModifier)
function modifier_item_skadi_custom.prototype.____constructor(self, ...)
BaseModifier.prototype.____constructor(self, ...)
self.statsSourceId = ""
end
function modifier_item_skadi_custom.prototype.IsHidden(self)
return true
end
function modifier_item_skadi_custom.prototype.IsPurgable(self)
return false
end
function modifier_item_skadi_custom.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_skadi_custom.prototype.GetAttributes(self)
return MODIFIER_ATTRIBUTE_MULTIPLE
end
function modifier_item_skadi_custom.prototype.OnCreated(self)
local hero = self:GetParent()
if not (hero and hero:IsRealHero()) then
return
end
self.statsSourceId = (SKADI_CUSTOM_SOURCE_PREFIX .. "_") .. tostring(hero:entindex())
local ability = self:GetAbility()
setStatsMultiplierSource(
nil,
hero,
self.statsSourceId,
function()
if not hero or not IsValidEntity(hero) or not hero:IsRealHero() then
return 0
end
return ability and ability:GetSpecialValueFor("all_stats_pct") or 0
end,
"all_stats_pct"
)
end
function modifier_item_skadi_custom.prototype.OnDestroy(self)
if self.statsSourceId == "" then
return
end
local hero = self:GetParent()
if hero and IsValidEntity(hero) then
removeStatsMultiplierSource(nil, hero, self.statsSourceId)
end
self.statsSourceId = ""
end
function modifier_item_skadi_custom.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_STATS_STRENGTH_BONUS, MODIFIER_PROPERTY_STATS_AGILITY_BONUS, MODIFIER_PROPERTY_STATS_INTELLECT_BONUS}
end
function modifier_item_skadi_custom.prototype.GetModifierBonusStats_Strength(self)
return self:GetAbility():GetSpecialValueFor("bonus_all_stats")
end
function modifier_item_skadi_custom.prototype.GetModifierBonusStats_Agility(self)
return self:GetAbility():GetSpecialValueFor("bonus_all_stats")
end
function modifier_item_skadi_custom.prototype.GetModifierBonusStats_Intellect(self)
return self:GetAbility():GetSpecialValueFor("bonus_all_stats")
end
function modifier_item_skadi_custom.prototype.OnAttackLanded(self, event)
if event.attacker ~= self:GetParent() then
return
end
if not event.target or event.target:IsBuilding() or event.target:IsOther() then
return
end
if event.target ~= nil then
local ____self_8 = event.target
local ____self_8_AddNewModifier_9 = ____self_8.AddNewModifier
local ____temp_6 = self:GetParent()
local ____temp_7 = self:GetAbility()
local ____opt_4 = self:GetAbility()
____self_8_AddNewModifier_9(
____self_8,
____temp_6,
____temp_7,
"modifier_item_skadi_custom_debuff",
{duration = ____opt_4 and ____opt_4:GetSpecialValueFor("debuff_duration")}
)
end
end
modifier_item_skadi_custom = __TS__Decorate(
modifier_item_skadi_custom,
modifier_item_skadi_custom,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_skadi_custom"}
)
____exports.modifier_item_skadi_custom = modifier_item_skadi_custom
____exports.modifier_item_skadi_custom_debuff = __TS__Class()
local modifier_item_skadi_custom_debuff = ____exports.modifier_item_skadi_custom_debuff
modifier_item_skadi_custom_debuff.name = "modifier_item_skadi_custom_debuff"
modifier_item_skadi_custom_debuff.____file_path = "scripts/vscripts/items/default_items/item_skadi_custom.lua"
__TS__ClassExtends(modifier_item_skadi_custom_debuff, BaseModifier)
function modifier_item_skadi_custom_debuff.prototype.IsDebuff(self)
return true
end
function modifier_item_skadi_custom_debuff.prototype.IsPurgable(self)
return true
end
function modifier_item_skadi_custom_debuff.prototype.IsHidden(self)
return true
end
function modifier_item_skadi_custom_debuff.prototype.GetModifierProjectileName(self)
return "particles/items2_fx/skadi_projectile.vpcf"
end
function modifier_item_skadi_custom_debuff.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS, MODIFIER_PROPERTY_HEALTH_REGEN_PERCENTAGE, MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE}
end
function modifier_item_skadi_custom_debuff.prototype.GetModifierMoveSpeedBonus_Percentage(self)
return self:GetAbility():GetSpecialValueFor("movespeed_reduction")
end
function modifier_item_skadi_custom_debuff.prototype.GetModifierHealthRegenPercentage(self)
return 1 + (self:GetAbility():GetSpecialValueFor("health_reduction") - 100) * 0.01
end
function modifier_item_skadi_custom_debuff.prototype.GetModifierPhysicalArmorBonus(self, event)
return self:GetAbility():GetSpecialValueFor("armor_reduction")
end
modifier_item_skadi_custom_debuff = __TS__Decorate(
modifier_item_skadi_custom_debuff,
modifier_item_skadi_custom_debuff,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_skadi_custom_debuff"}
)
____exports.modifier_item_skadi_custom_debuff = modifier_item_skadi_custom_debuff
return ____exports
@@ -0,0 +1,196 @@
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
____exports.item_soul_devourer_staff = __TS__Class()
local item_soul_devourer_staff = ____exports.item_soul_devourer_staff
item_soul_devourer_staff.name = "item_soul_devourer_staff"
item_soul_devourer_staff.____file_path = "scripts/vscripts/items/default_items/item_soul_devourer_staff.lua"
__TS__ClassExtends(item_soul_devourer_staff, BaseItem)
function item_soul_devourer_staff.prototype.GetIntrinsicModifierName(self)
return "modifier_soul_devourer_staff"
end
item_soul_devourer_staff = __TS__Decorate(
item_soul_devourer_staff,
item_soul_devourer_staff,
{registerAbility(nil)},
{kind = "class", name = "item_soul_devourer_staff"}
)
____exports.item_soul_devourer_staff = item_soul_devourer_staff
____exports.modifier_soul_devourer_staff = __TS__Class()
local modifier_soul_devourer_staff = ____exports.modifier_soul_devourer_staff
modifier_soul_devourer_staff.name = "modifier_soul_devourer_staff"
modifier_soul_devourer_staff.____file_path = "scripts/vscripts/items/default_items/item_soul_devourer_staff.lua"
__TS__ClassExtends(modifier_soul_devourer_staff, BaseModifier)
function modifier_soul_devourer_staff.prototype.IsHidden(self)
return true
end
function modifier_soul_devourer_staff.prototype.IsDebuff(self)
return false
end
function modifier_soul_devourer_staff.prototype.IsPurgable(self)
return false
end
function modifier_soul_devourer_staff.prototype.RemoveOnDeath(self)
return false
end
function modifier_soul_devourer_staff.prototype.DeclareFunctions(self)
return {
MODIFIER_PROPERTY_STATS_INTELLECT_BONUS,
MODIFIER_PROPERTY_CAST_RANGE_BONUS,
MODIFIER_PROPERTY_MANA_REGEN_CONSTANT,
MODIFIER_PROPERTY_MANACOST_PERCENTAGE_STACKING,
MODIFIER_EVENT_ON_DEATH,
MODIFIER_PROPERTY_MANA_BONUS
}
end
function modifier_soul_devourer_staff.prototype.OnDeath(self, event)
if event.attacker ~= self:GetCaster() then
return
end
local mana = self:GetCaster():GetMaxMana() * self:GetAbility():GetSpecialValueFor("kill_mana")
self:GetCaster():GiveMana(mana)
SendOverheadEventMessage(
nil,
OVERHEAD_ALERT_MANA_ADD,
self:GetCaster(),
mana,
self:GetCaster():GetPlayerOwner()
)
local caster = self:GetCaster()
local ability = self:GetAbility()
if not ability then
return
end
local blessing = caster:FindModifierByName("modifier_soul_devourer_staff_buff")
if not blessing then
blessing = caster:AddNewModifier(
self:GetParent(),
ability,
"modifier_soul_devourer_staff_buff",
{}
)
end
if blessing ~= nil then
blessing:IncrementStackCount()
end
end
function modifier_soul_devourer_staff.prototype.GetModifierPercentageManacostStacking(self)
return self:GetAbility():GetSpecialValueFor("bonus_manacost_reduction")
end
function modifier_soul_devourer_staff.prototype.GetModifierBonusStats_Intellect(self)
return self:GetAbility():GetSpecialValueFor("bonus_intellect")
end
function modifier_soul_devourer_staff.prototype.GetModifierCastRangeBonus(self, event)
return self:GetAbility():GetSpecialValueFor("bonus_cast_range")
end
function modifier_soul_devourer_staff.prototype.GetModifierConstantManaRegen(self)
return self:GetAbility():GetSpecialValueFor("bonus_mana_regen")
end
function modifier_soul_devourer_staff.prototype.GetModifierManaBonus(self)
return self:GetAbility():GetSpecialValueFor("bonus_mana_special")
end
modifier_soul_devourer_staff = __TS__Decorate(
modifier_soul_devourer_staff,
modifier_soul_devourer_staff,
{registerModifier(nil)},
{kind = "class", name = "modifier_soul_devourer_staff"}
)
____exports.modifier_soul_devourer_staff = modifier_soul_devourer_staff
____exports.modifier_soul_devourer_staff_buff = __TS__Class()
local modifier_soul_devourer_staff_buff = ____exports.modifier_soul_devourer_staff_buff
modifier_soul_devourer_staff_buff.name = "modifier_soul_devourer_staff_buff"
modifier_soul_devourer_staff_buff.____file_path = "scripts/vscripts/items/default_items/item_soul_devourer_staff.lua"
__TS__ClassExtends(modifier_soul_devourer_staff_buff, BaseModifier)
function modifier_soul_devourer_staff_buff.prototype.IsHidden(self)
if self:GetCaster():HasModifier("modifier_soul_devourer_staff") then
return false
end
return true
end
function modifier_soul_devourer_staff_buff.prototype.IsDebuff(self)
return false
end
function modifier_soul_devourer_staff_buff.prototype.IsPurgable(self)
return false
end
function modifier_soul_devourer_staff_buff.prototype.RemoveOnDeath(self)
return false
end
function modifier_soul_devourer_staff_buff.prototype.GetTexture(self)
return "default_items/soul_devourer_staff"
end
function modifier_soul_devourer_staff_buff.prototype.refreshStackGrowthHudDuration(self, ability)
local interval = ability:GetSpecialValueFor("stack_growth_interval") > 0 and ability:GetSpecialValueFor("stack_growth_interval") or 60
local baseDur = ability:GetSpecialValueFor("stack_growth_duration")
if baseDur <= 0 then
baseDur = interval + 0.5
elseif baseDur <= interval then
baseDur = interval + 0.5
end
self:SetDuration(baseDur + 0.2, true)
end
function modifier_soul_devourer_staff_buff.prototype.OnCreated(self)
if not IsServer() then
return
end
local ability = self:GetAbility()
if not ability then
return
end
local interval = ability:GetSpecialValueFor("stack_growth_interval") > 0 and ability:GetSpecialValueFor("stack_growth_interval") or 60
self:StartIntervalThink(interval)
self:refreshStackGrowthHudDuration(ability)
end
function modifier_soul_devourer_staff_buff.prototype.OnIntervalThink(self)
if not IsServer() then
return
end
local parent = self:GetParent()
if not parent or not parent:IsAlive() then
return
end
local caster = self:GetCaster()
local ability = self:GetAbility()
if not caster or not ability then
return
end
if not caster:HasModifier("modifier_soul_devourer_staff") then
return
end
local stacks = self:GetStackCount()
if stacks <= 0 then
return
end
local pct = ability:GetSpecialValueFor("stack_growth_percent")
local growthPct = pct > 0 and pct or 20
local mult = 1 + growthPct / 100
local newStacks = math.ceil(stacks * mult)
if newStacks > stacks then
self:SetStackCount(newStacks)
end
self:refreshStackGrowthHudDuration(ability)
end
function modifier_soul_devourer_staff_buff.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_MANA_BONUS}
end
function modifier_soul_devourer_staff_buff.prototype.GetModifierManaBonus(self)
if self:GetCaster():HasModifier("modifier_soul_devourer_staff") then
return self:GetAbility():GetSpecialValueFor("bonus_mana") * self:GetStackCount()
end
return 0
end
modifier_soul_devourer_staff_buff = __TS__Decorate(
modifier_soul_devourer_staff_buff,
modifier_soul_devourer_staff_buff,
{registerModifier(nil)},
{kind = "class", name = "modifier_soul_devourer_staff_buff"}
)
____exports.modifier_soul_devourer_staff_buff = modifier_soul_devourer_staff_buff
return ____exports
@@ -0,0 +1,166 @@
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
____exports.item_storm = __TS__Class()
local item_storm = ____exports.item_storm
item_storm.name = "item_storm"
item_storm.____file_path = "scripts/vscripts/items/default_items/item_storm.lua"
__TS__ClassExtends(item_storm, BaseItem)
function item_storm.prototype.GetIntrinsicModifierName(self)
return "modifier_storm"
end
item_storm = __TS__Decorate(
item_storm,
item_storm,
{registerAbility(nil)},
{kind = "class", name = "item_storm"}
)
____exports.item_storm = item_storm
____exports.modifier_storm = __TS__Class()
local modifier_storm = ____exports.modifier_storm
modifier_storm.name = "modifier_storm"
modifier_storm.____file_path = "scripts/vscripts/items/default_items/item_storm.lua"
__TS__ClassExtends(modifier_storm, BaseModifier)
function modifier_storm.prototype.IsHidden(self)
return true
end
function modifier_storm.prototype.IsDebuff(self)
return false
end
function modifier_storm.prototype.IsPurgable(self)
return false
end
function modifier_storm.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE, MODIFIER_EVENT_ON_ATTACK_LANDED}
end
function modifier_storm.prototype.GetModifierPreAttack_BonusDamage(self)
return self:GetAbility():GetSpecialValueFor("bonus_damage")
end
function modifier_storm.prototype.OnAttackLanded(self, event)
if event.attacker ~= self:GetParent() then
return
end
if RandomInt(1, 100) > self:GetAbility():GetSpecialValueFor("chance") then
return
end
local ____opt_0 = self:GetAbility()
if (____opt_0 and ____opt_0:IsCooldownReady()) == false then
return
end
self:GetAbility():GetSpecialValueFor("bolt_damage")
event.target:AddNewModifier(
self:GetParent(),
self:GetAbility(),
"modifier_storm_dps",
{
duration = 0.26,
attacker_entindex = self:GetCaster():entindex()
}
)
self:GetAbility():StartCooldown(self:GetAbility():GetSpecialValueFor("ability_cooldown"))
end
modifier_storm = __TS__Decorate(
modifier_storm,
modifier_storm,
{registerModifier(nil)},
{kind = "class", name = "modifier_storm"}
)
____exports.modifier_storm = modifier_storm
____exports.modifier_storm_dps = __TS__Class()
local modifier_storm_dps = ____exports.modifier_storm_dps
modifier_storm_dps.name = "modifier_storm_dps"
modifier_storm_dps.____file_path = "scripts/vscripts/items/default_items/item_storm.lua"
__TS__ClassExtends(modifier_storm_dps, BaseModifier)
function modifier_storm_dps.prototype.IsHidden(self)
return false
end
function modifier_storm_dps.prototype.IsDebuff(self)
return true
end
function modifier_storm_dps.prototype.IsPurgable(self)
return true
end
function modifier_storm_dps.prototype.OnCreated(self, params)
self:SetStackCount(3)
self:StartIntervalThink(0.25)
end
function modifier_storm_dps.prototype.OnIntervalThink(self)
if self:GetStackCount() == 0 then
return
end
self:SetDuration(0.26, true)
self:SetStackCount(self:GetStackCount() - 1)
local victim = self:GetParent()
local attacker = self:GetCaster()
local particle = ParticleManager:CreateParticle("particles/items_fx/chain_lightning.vpcf", PATTACH_ABSORIGIN_FOLLOW, victim)
if attacker then
ParticleManager:SetParticleControlEnt(
particle,
0,
attacker,
PATTACH_POINT_FOLLOW,
"attach_hitloc",
attacker:GetAbsOrigin(),
true
)
else
ParticleManager:SetParticleControl(
particle,
0,
victim:GetAbsOrigin()
)
end
ParticleManager:SetParticleControlEnt(
particle,
1,
victim,
PATTACH_POINT_FOLLOW,
"attach_hitloc",
victim:GetAbsOrigin(),
true
)
ParticleManager:SetParticleControl(
particle,
2,
Vector(1, 1, 1)
)
ParticleManager:ReleaseParticleIndex(particle)
local ability = self:GetAbility()
if IsClient() then
return
end
if ability ~= nil and victim ~= nil and attacker ~= nil then
ApplyDamage({
victim = victim,
attacker = attacker,
damage = ability:GetSpecialValueFor("bolt_damage"),
damage_type = DAMAGE_TYPE_MAGICAL,
damage_flags = DOTA_DAMAGE_FLAG_NONE,
ability = ability
})
end
self:GetParent():AddNewModifier(
self:GetParent(),
self:GetAbility(),
"modifier_stunned",
{duration = self:GetAbility():GetSpecialValueFor("stun")}
)
end
function modifier_storm_dps.prototype.GetTexture(self)
return "default_items/storm"
end
modifier_storm_dps = __TS__Decorate(
modifier_storm_dps,
modifier_storm_dps,
{registerModifier(nil)},
{kind = "class", name = "modifier_storm_dps"}
)
____exports.modifier_storm_dps = modifier_storm_dps
return ____exports
@@ -0,0 +1,211 @@
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local __TS__ArrayMap = ____lualib.__TS__ArrayMap
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 registerModifier = ____dota_ts_adapter.registerModifier
local ____WaveManager = require("WaveManager")
local WaveManager = ____WaveManager.WaveManager
local ____dota_ts_adapter = require("lib.dota_ts_adapter")
local registerAbility = ____dota_ts_adapter.registerAbility
local ____crystal_currency = require("crystal_currency")
local CrystalCurrency = ____crystal_currency.CrystalCurrency
local ____dps_tracker = require("abilities.modifiers.dps_tracker")
local dps_tracker = ____dps_tracker.dps_tracker
____exports.item_test = __TS__Class()
local item_test = ____exports.item_test
item_test.name = "item_test"
item_test.____file_path = "scripts/vscripts/items/default_items/item_test.lua"
__TS__ClassExtends(item_test, BaseItem)
function item_test.prototype.OnSpellStart(self)
if not IsServer() then
return
end
local caster = self:GetCaster()
local winnerTeam = caster:GetTeamNumber()
local readyCheckStarted = WaveManager:getInstance():StartCutsceneReadyCheck("camera_start_ending")
if not readyCheckStarted then
local mgr = GameRules.CutsceneManager
if mgr and not mgr:isCutsceneActive() then
mgr:startScene("camera_start_ending", {force = true})
GameRules:SendCustomMessage("<font color='#f6d28b'>[item_test] Фолбэк: катсцена запущена напрямую</font>", 0, 0)
else
GameRules:SendCustomMessage("<font color='#ff7070'>[item_test] Не удалось запустить катсцену</font>", 0, 0)
end
else
GameRules:SendCustomMessage("<font color='#8be39f'>[item_test] Открыт ready-check катсцены</font>", 0, 0)
end
self:GetCaster():AddAbility(dps_tracker.name)
self:GetCaster():AddNewModifier(
self:GetCaster(),
self,
"modifier_effects_effect",
{}
)
local cursorTarget = self:GetCursorTarget()
print("[item_test] Cursor target: " .. (cursorTarget and cursorTarget:GetName() or "none"))
local owner = self:GetCaster()
local modifiers = owner:FindAllModifiers()
local modifierNames = __TS__ArrayMap(
modifiers,
function(____, mod) return mod:GetName() end
)
print("[item_test] Modifiers on owner: " .. table.concat(modifierNames, ", "))
CrystalCurrency:getInstance():addCrystals(
self:GetCaster():GetPlayerID(),
100
)
addLuck(
nil,
self:GetCaster(),
10
)
addCritMult(
nil,
self:GetCaster(),
30
)
if self:GetCaster():HasModifier("modifier_test_inf") then
self:GetCaster():RemoveModifierByName("modifier_test_inf")
else
self:GetCaster():AddNewModifier(
self:GetCaster(),
self,
"modifier_test_inf",
{}
)
end
end
item_test = __TS__Decorate(
item_test,
item_test,
{registerAbility(nil)},
{kind = "class", name = "item_test"}
)
____exports.item_test = item_test
____exports.modifier_test = __TS__Class()
local modifier_test = ____exports.modifier_test
modifier_test.name = "modifier_test"
modifier_test.____file_path = "scripts/vscripts/items/default_items/item_test.lua"
__TS__ClassExtends(modifier_test, BaseModifier)
function modifier_test.prototype.IsHidden(self)
return true
end
function modifier_test.prototype.IsDebuff(self)
return false
end
function modifier_test.prototype.IsPurgable(self)
return false
end
function modifier_test.prototype.GetAttributes(self)
return MODIFIER_ATTRIBUTE_MULTIPLE
end
function modifier_test.prototype.OnCreated(self)
if not IsServer() then
return
end
local stackingCritMod = self:GetParent():FindModifierByName("modifier_stacking_crit")
if stackingCritMod then
local ability = self:GetAbility()
stackingCritMod:AddCustomCrit(0, 500, "item_test", ability)
end
end
function modifier_test.prototype.OnDestroy(self)
if IsClient() then
return
end
local parent = self:GetParent()
if not parent or not IsValidEntity(parent) then
return
end
local stackingCritModifier = parent:FindModifierByName("modifier_stacking_crit")
if not stackingCritModifier then
return
end
local ability = self:GetAbility()
stackingCritModifier:RemoveCrit("item_test", ability)
end
function modifier_test.prototype.GetStatusEffectName(self)
return "particles/status_fx/status_effect_abaddon_borrowed_time.vpcf"
end
function modifier_test.prototype.GetEffectName(self)
return "particles/units/heroes/hero_abaddon/abaddon_borrowed_time.vpcf"
end
function modifier_test.prototype.StatusEffectPriority(self)
return 10
end
modifier_test = __TS__Decorate(
modifier_test,
modifier_test,
{registerModifier(nil)},
{kind = "class", name = "modifier_test"}
)
____exports.modifier_test = modifier_test
____exports.modifier_test_inf = __TS__Class()
local modifier_test_inf = ____exports.modifier_test_inf
modifier_test_inf.name = "modifier_test_inf"
modifier_test_inf.____file_path = "scripts/vscripts/items/default_items/item_test.lua"
__TS__ClassExtends(modifier_test_inf, BaseModifier)
function modifier_test_inf.prototype.____constructor(self, ...)
BaseModifier.prototype.____constructor(self, ...)
self.bonusStrength = 1000000
self.bonusAgility = 1000000
self.bonusIntelligence = 1000000
end
function modifier_test_inf.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_STATS_STRENGTH_BONUS, MODIFIER_PROPERTY_STATS_AGILITY_BONUS, MODIFIER_PROPERTY_STATS_INTELLECT_BONUS}
end
function modifier_test_inf.prototype.GetModifierBonusStats_Strength(self)
return self.bonusStrength
end
function modifier_test_inf.prototype.GetModifierBonusStats_Agility(self)
return self.bonusAgility
end
function modifier_test_inf.prototype.GetModifierBonusStats_Intellect(self)
return self.bonusIntelligence
end
modifier_test_inf = __TS__Decorate(
modifier_test_inf,
modifier_test_inf,
{registerModifier(nil)},
{kind = "class", name = "modifier_test_inf"}
)
____exports.modifier_test_inf = modifier_test_inf
____exports.modifier_test_agi = __TS__Class()
local modifier_test_agi = ____exports.modifier_test_agi
modifier_test_agi.name = "modifier_test_agi"
modifier_test_agi.____file_path = "scripts/vscripts/items/default_items/item_test.lua"
__TS__ClassExtends(modifier_test_agi, BaseModifier)
function modifier_test_agi.prototype.____constructor(self, ...)
BaseModifier.prototype.____constructor(self, ...)
self.AgiPct = 1000
self.Lock = false
end
function modifier_test_agi.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_STATS_AGILITY_BONUS}
end
function modifier_test_agi.prototype.GetModifierBonusStats_Agility(self)
if not IsServer() then
return 0
end
if self.Lock then
return 0
end
self.Lock = true
local agi = self:GetParent():GetAgility()
self.Lock = false
local bonus = self.AgiPct * agi / 100
return bonus
end
modifier_test_agi = __TS__Decorate(
modifier_test_agi,
modifier_test_agi,
{registerModifier(nil)},
{kind = "class", name = "modifier_test_agi"}
)
____exports.modifier_test_agi = modifier_test_agi
return ____exports
@@ -0,0 +1,106 @@
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 ____modifier_stats_multiplier = require("modifiers.modifier_stats_multiplier")
local removeStatsMultiplierSource = ____modifier_stats_multiplier.removeStatsMultiplierSource
local setStatsMultiplierSource = ____modifier_stats_multiplier.setStatsMultiplierSource
local ULTIMATE_CROWN_SOURCE_PREFIX = "item_ultimate_crown"
____exports.item_ultimate_crown = __TS__Class()
local item_ultimate_crown = ____exports.item_ultimate_crown
item_ultimate_crown.name = "item_ultimate_crown"
item_ultimate_crown.____file_path = "scripts/vscripts/items/default_items/item_ultimate_crown.lua"
__TS__ClassExtends(item_ultimate_crown, BaseItem)
function item_ultimate_crown.prototype.GetIntrinsicModifierName(self)
return ____exports.modifier_item_ultimate_crown.name
end
item_ultimate_crown = __TS__Decorate(
item_ultimate_crown,
item_ultimate_crown,
{registerAbility(nil)},
{kind = "class", name = "item_ultimate_crown"}
)
____exports.item_ultimate_crown = item_ultimate_crown
____exports.modifier_item_ultimate_crown = __TS__Class()
local modifier_item_ultimate_crown = ____exports.modifier_item_ultimate_crown
modifier_item_ultimate_crown.name = "modifier_item_ultimate_crown"
modifier_item_ultimate_crown.____file_path = "scripts/vscripts/items/default_items/item_ultimate_crown.lua"
__TS__ClassExtends(modifier_item_ultimate_crown, BaseModifier)
function modifier_item_ultimate_crown.prototype.____constructor(self, ...)
BaseModifier.prototype.____constructor(self, ...)
self.statsSourceId = ""
end
function modifier_item_ultimate_crown.prototype.IsHidden(self)
return true
end
function modifier_item_ultimate_crown.prototype.IsPurgable(self)
return false
end
function modifier_item_ultimate_crown.prototype.RemoveOnDeath(self)
return false
end
function modifier_item_ultimate_crown.prototype.GetAttributes(self)
return MODIFIER_ATTRIBUTE_MULTIPLE
end
function modifier_item_ultimate_crown.prototype.OnCreated(self)
if not IsServer() then
return
end
local hero = self:GetParent()
if not (hero and hero:IsRealHero()) then
return
end
self.statsSourceId = (ULTIMATE_CROWN_SOURCE_PREFIX .. "_") .. tostring(hero:entindex())
local ability = self:GetAbility()
setStatsMultiplierSource(
nil,
hero,
self.statsSourceId,
function()
if not hero or not IsValidEntity(hero) or not hero:IsRealHero() then
return 0
end
return ability and ability:GetSpecialValueFor("all_stats_pct") or 0
end,
"all_stats_pct"
)
end
function modifier_item_ultimate_crown.prototype.OnDestroy(self)
if not IsServer() then
return
end
if self.statsSourceId == "" then
return
end
local hero = self:GetParent()
if hero and IsValidEntity(hero) then
removeStatsMultiplierSource(nil, hero, self.statsSourceId)
end
self.statsSourceId = ""
end
function modifier_item_ultimate_crown.prototype.DeclareFunctions(self)
return {MODIFIER_PROPERTY_STATS_STRENGTH_BONUS, MODIFIER_PROPERTY_STATS_AGILITY_BONUS, MODIFIER_PROPERTY_STATS_INTELLECT_BONUS}
end
function modifier_item_ultimate_crown.prototype.GetModifierBonusStats_Strength(self)
return self:GetAbility():GetSpecialValueFor("bonus_all_stats")
end
function modifier_item_ultimate_crown.prototype.GetModifierBonusStats_Agility(self)
return self:GetAbility():GetSpecialValueFor("bonus_all_stats")
end
function modifier_item_ultimate_crown.prototype.GetModifierBonusStats_Intellect(self)
return self:GetAbility():GetSpecialValueFor("bonus_all_stats")
end
modifier_item_ultimate_crown = __TS__Decorate(
modifier_item_ultimate_crown,
modifier_item_ultimate_crown,
{registerModifier(nil)},
{kind = "class", name = "modifier_item_ultimate_crown"}
)
____exports.modifier_item_ultimate_crown = modifier_item_ultimate_crown
return ____exports

Some files were not shown because too many files have changed in this diff Show More