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