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 ____CardSystem = require("cards.CardSystem") local CardBase = ____CardSystem.CardBase local RegisterCard = ____CardSystem.RegisterCard local ____CardBaseModifier = require("cards.CardBaseModifier") local CardBaseModifier = ____CardBaseModifier.CardBaseModifier local ____dota_ts_adapter = require("lib.dota_ts_adapter") local registerModifier = ____dota_ts_adapter.registerModifier local ____card_value_resolver = require("cards.card_value_resolver") local getCardValueByLevel = ____card_value_resolver.getCardValueByLevel local CARD_ID = 26 local INVIS_MODIFIER_NAME = "modifier_card_26_invisibility" local function getCard26Value(self, hero, key, fallback) return getCardValueByLevel( nil, CARD_ID, hero, key, fallback ) end ____exports.card_26 = __TS__Class() local card_26 = ____exports.card_26 card_26.name = "card_26" card_26.____file_path = "scripts/vscripts/cards/examples/card_26.lua" __TS__ClassExtends(card_26, CardBase) function card_26.prototype.GetModifierName(self) return "modifier_card_26" end card_26 = __TS__Decorate(card_26, card_26, {RegisterCard}, {kind = "class", name = "card_26"}) ____exports.card_26 = card_26 --- Основной модификатор карты: проверка порога по событию урона, КД, снятие спасения когда отхилились. ____exports.modifier_card_26 = __TS__Class() local modifier_card_26 = ____exports.modifier_card_26 modifier_card_26.name = "modifier_card_26" modifier_card_26.____file_path = "scripts/vscripts/cards/examples/card_26.lua" __TS__ClassExtends(modifier_card_26, CardBaseModifier) function modifier_card_26.prototype.____constructor(self, ...) CardBaseModifier.prototype.____constructor(self, ...) self.cooldownEndTime = 0 end function modifier_card_26.prototype.OnCustomCreated(self, params) if not IsServer() then return end end function modifier_card_26.prototype.OnCustomRefresh(self, params) if not IsServer() then return end end function modifier_card_26.prototype.DeclareFunctions(self) return {MODIFIER_EVENT_ON_TAKEDAMAGE, MODIFIER_PROPERTY_TOOLTIP} end function modifier_card_26.prototype.OnTakeDamage(self, event) if not IsServer() then return end local parent = self:GetParent() if not parent or not IsValidEntity(parent) or not parent:IsAlive() then return end if event.unit ~= parent then return end if not parent:IsRealHero() then return end local now = GameRules:GetGameTime() if now < self.cooldownEndTime then return end if parent:HasModifier(INVIS_MODIFIER_NAME) then return end local triggerHealth = getCard26Value(nil, parent, "trigger_health_threshold", 100) if parent:GetHealth() >= triggerHealth then return end parent:AddNewModifier( parent, getModifierSourceAbility(nil, parent), INVIS_MODIFIER_NAME, {duration = getCard26Value(nil, parent, "invisibility_duration", 10) * self:getCardCopies()} ) end modifier_card_26 = __TS__Decorate( modifier_card_26, modifier_card_26, {registerModifier(nil)}, {kind = "class", name = "modifier_card_26"} ) ____exports.modifier_card_26 = modifier_card_26 --- Режим спасения: инвиз + реген к макс. HP + min 1 HP (всё в одном месте). ____exports.modifier_card_26_invisibility = __TS__Class() local modifier_card_26_invisibility = ____exports.modifier_card_26_invisibility modifier_card_26_invisibility.name = "modifier_card_26_invisibility" modifier_card_26_invisibility.____file_path = "scripts/vscripts/cards/examples/card_26.lua" __TS__ClassExtends(modifier_card_26_invisibility, CardBaseModifier) function modifier_card_26_invisibility.prototype.getCardCopiesFromOwner(self) local owner = self:GetCaster() if not owner or not IsValidEntity(owner) then return 1 end local cardMod = owner:FindModifierByName("modifier_card_26") return math.max( 1, math.floor(cardMod and cardMod:GetStackCount() or 0) ) end function modifier_card_26_invisibility.prototype.GetModifierInvisibilityLevel(self) return 2 end function modifier_card_26_invisibility.prototype.GetEffectName(self) return "particles/units/heroes/hero_phantom_assassin/phantom_assassin_blur_start.vpcf" end function modifier_card_26_invisibility.prototype.GetEffectAttachType(self) return PATTACH_OVERHEAD_FOLLOW end function modifier_card_26_invisibility.prototype.GetStatusEffectName(self) return "particles/status_fx/status_effect_phantom_assassin_blur.vpcf" end function modifier_card_26_invisibility.prototype.StatusEffectPriority(self) return MODIFIER_PRIORITY_SUPER_ULTRA end function modifier_card_26_invisibility.prototype.DeclareFunctions(self) return {MODIFIER_PROPERTY_MIN_HEALTH, MODIFIER_PROPERTY_HEALTH_REGEN_CONSTANT, MODIFIER_PROPERTY_INVISIBILITY_LEVEL, MODIFIER_PROPERTY_TOOLTIP} end function modifier_card_26_invisibility.prototype.GetMinHealth(self) return 1 end function modifier_card_26_invisibility.prototype.GetModifierConstantHealthRegen(self) local hero = self:GetParent() if not hero or not IsValidEntity(hero) then return 0 end local healPctPerSecond = getCard26Value(nil, hero, "heal_pct_per_second", 10) * self:getCardCopiesFromOwner() return hero:GetMaxHealth() * (healPctPerSecond / 100) end function modifier_card_26_invisibility.prototype.CheckState(self) return {[MODIFIER_STATE_INVISIBLE] = true, [MODIFIER_STATE_NO_UNIT_COLLISION] = true} end modifier_card_26_invisibility = __TS__Decorate( modifier_card_26_invisibility, modifier_card_26_invisibility, {registerModifier(nil)}, {kind = "class", name = "modifier_card_26_invisibility"} ) ____exports.modifier_card_26_invisibility = modifier_card_26_invisibility return ____exports