wei_blink = class({})
wei_reverse_blink = class({})
LinkLuaModifier( "modifier_wei_blink_aghanim", "lua_abilities/wei_blink", LUA_MODIFIER_MOTION_NONE )
modifier_wei_blink_aghanim = class({})
function modifier_wei_blink_aghanim:IsHidden()
return false
end
function modifier_wei_blink_aghanim:IsPurgable()
return false
end
function modifier_wei_blink_aghanim:OnCreated()
local caster = self:GetCaster()
local ability = self:GetAbility()
caster:AddAbility("wei_reverse_blink"):SetLevel(1)
caster:SwapAbilities("wei_reverse_blink", "wei_blink", true, true)
ability:SetHidden(true)
end
function modifier_wei_blink_aghanim:OnDestroy()
local caster = self:GetCaster()
local ability = self:GetAbility()
caster:SwapAbilities("wei_reverse_blink", "wei_blink", true, true)
caster:RemoveAbility("wei_reverse_blink")
ability:SetHidden(false)
end
function wei_blink:OnAbilityPhaseStart()
self.caster_point = self:GetCaster():GetAbsOrigin()
end
function wei_blink:OnSpellStart()
local caster = self:GetCaster()
local point = self:GetCursorPosition()
local origin = caster:GetOrigin()
local min_range = self:GetSpecialValueFor("min_blink_range")
local max_range = self:GetSpecialValueFor("AbilityCastRange")
local duration = self:GetSpecialValueFor("duration_return")
local direction = (point - origin)
if direction:Length2D() > max_range then
direction = direction:Normalized() * max_range
end
if direction:Length2D() < min_range then
direction = direction:Normalized() * min_range
end
FindClearSpaceForUnit( caster, origin + direction, true )
ProjectileManager:ProjectileDodge(caster)
if caster:HasScepter() then
caster:AddNewModifier(caster, self, "modifier_wei_blink_aghanim", { duration = duration })
end
self:PlayEffects( origin, direction )
end
function wei_reverse_blink:OnAbilityPhaseStart()
self.caster_point = self:GetCaster():GetAbsOrigin()
local caster = self:GetCaster()
local blink = caster:FindAbilityByName("wei_blink")
caster:FaceTowards(blink.caster_point)
end
function wei_reverse_blink:OnSpellStart()
local caster = self:GetCaster()
local blink = caster:FindAbilityByName("wei_blink")
local modif = caster:FindModifierByName("modifier_wei_blink_aghanim")
local sound_cast_b = "Hero_Antimage.Blink_in.Persona"
local life_illusion = blink:GetSpecialValueFor("life_illusion")
local outgoing_damage = blink:GetSpecialValueFor("outgoing_damage")
local incoming_damage = blink:GetSpecialValueFor("incoming_damage")
local damage = 100
local damage_out = damage-outgoing_damage
local damage_in = incoming_damage-damage
self.point = blink.caster_point
local illusion = CreateIllusions(
caster,
caster,
{
outgoing_damage = -damage_out,
incoming_damage = damage_in,
duration = life_illusion,
}, -- hModiiferKeys
1, -- nNumIllusions
50, -- nPadding
false, -- bScramblePosition
true -- bFindClearSpace
)
FindClearSpaceForUnit( illusion, self.caster_point, true )
FindClearSpaceForUnit( caster, self.point, true )
ProjectileManager:ProjectileDodge(caster)
EmitSoundOnLocationWithCaster( self:GetCaster():GetOrigin(), sound_cast_b, self:GetCaster() )
modif:Destroy()
self:PlayEffects()
end
function wei_reverse_blink:PlayEffects()
local particle_cast_a = "particles/econ/events/spring_2021/blink_dagger_spring_2021_start_lvl2.vpcf"
local sound_cast_a = "Hero_Antimage.Blink_out"
local particle_cast_b = "particles/econ/events/spring_2021/blink_dagger_spring_2021_end.vpcf"
local sound_cast_b = "Hero_Antimage.Blink_in.Persona"
local effect_cast_a = ParticleManager:CreateParticle( particle_cast_a, PATTACH_WORLDORIGIN, nil)
ParticleManager:SetParticleControl( effect_cast_a, 0, self.caster_point )
ParticleManager:ReleaseParticleIndex( effect_cast_a )
local effect_cast_b = ParticleManager:CreateParticle( particle_cast_b, PATTACH_WORLDORIGIN, nil)
ParticleManager:SetParticleControl( effect_cast_b, 0, self.point )
ParticleManager:ReleaseParticleIndex( effect_cast_b )
end
function wei_blink:PlayEffects( origin, direction )
local particle_cast_a = "particles/econ/events/spring_2021/blink_dagger_spring_2021_start_lvl2.vpcf"
local sound_cast_a = "Hero_Antimage.Blink_out"
local particle_cast_b = "particles/econ/events/spring_2021/blink_dagger_spring_2021_end.vpcf"
local sound_cast_b = "Hero_Antimage.Blink_in.Persona"
local effect_cast_a = ParticleManager:CreateParticle( particle_cast_a, PATTACH_WORLDORIGIN, nil)
ParticleManager:SetParticleControl( effect_cast_a, 0, self.caster_point )
ParticleManager:ReleaseParticleIndex( effect_cast_a )
local effect_cast_b = ParticleManager:CreateParticle( particle_cast_b, PATTACH_ABSORIGIN, self:GetCaster() )
ParticleManager:SetParticleControl( effect_cast_b, 0, self:GetCaster():GetOrigin() )
ParticleManager:SetParticleControlForward( effect_cast_b, 0, direction:Normalized() )
ParticleManager:ReleaseParticleIndex( effect_cast_b )
EmitSoundOnLocationWithCaster( self:GetCaster():GetOrigin(), sound_cast_b, self:GetCaster() )
end