185 lines
7.2 KiB
Lua
185 lines
7.2 KiB
Lua
local ____lualib = require("lualib_bundle")
|
|
local __TS__Class = ____lualib.__TS__Class
|
|
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
local __TS__Decorate = ____lualib.__TS__Decorate
|
|
local ____exports = {}
|
|
local ____dota_ts_adapter = require("lib.dota_ts_adapter")
|
|
local BaseItem = ____dota_ts_adapter.BaseItem
|
|
local registerAbility = ____dota_ts_adapter.registerAbility
|
|
local registerModifier = ____dota_ts_adapter.registerModifier
|
|
local BaseModifier = ____dota_ts_adapter.BaseModifier
|
|
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
|