Exemplo n.º 1
0
        private void UnitOnModifierRemoved(Unit sender, ModifierChangedEventArgs args)
        {
            var modifier = args.Modifier;

            if (!sender.IsValid || ((Unit)sender) != this.Owner || args.Modifier.Name != "modifier_void_spirit_dissimilate_phase")
            {
                return;
            }

            PortalLocations.Clear();
        }
Exemplo n.º 2
0
        private async void EntityOnParticleEffectAdded(Entity sender, ParticleEffectAddedEventArgs args)
        {
            await Task.Delay(1);

            var particle = args.ParticleEffect;

            if (!this.IsValid(sender, particle, args.Name))
            {
                return;
            }

            if (particle.Name == "particles/units/heroes/hero_void_spirit/dissimilate/void_spirit_dissimilate.vpcf")
            {
                var portal = args.ParticleEffect.GetControlPoint(0);
                PortalLocations.Add(portal);
            }
        }
Exemplo n.º 3
0
        private async Task OnUpdate(CancellationToken token)
        {
            if (Game.IsPaused || !this.Owner.IsAlive || !PortalLocations.Any())
            {
                await Task.Delay(250, token);

                return;
            }

            if (Ensage.SDK.Extensions.UnitExtensions.HasModifier(this.Owner, "modifier_void_spirit_dissimilate_phase"))
            {
                if (UnitExtensions.FindModifier(this.Owner, "modifier_void_spirit_dissimilate_phase").RemainingTime >= 0.2f && this.VoidSpirit.RandomlyJump)
                {
                    foreach (var portalLocation in PortalLocations.ToList())
                    {
                        this.Owner.Move(portalLocation);
                        await Task.Delay(50, token);

                        if (UnitExtensions.FindModifier(this.Owner, "modifier_void_spirit_dissimilate_phase")
                            .RemainingTime <= 0.2f)
                        {
                            break;
                        }
                    }
                }
                else if (this.CurrentTarget != null)
                {
                    var closestPortal = this.PortalLocations
                                        .OrderBy(x => VectorExtensions.Distance2D(x, this.CurrentTarget)).FirstOrDefault();
                    if (this.Owner.Move(closestPortal))
                    {
                        await Task.Delay(50, token);
                    }
                }
                else
                {
                    var closestToMouse = this.PortalLocations.OrderBy(x => x.Distance2D(Game.MousePosition))
                                         .FirstOrDefault();
                    if (this.Owner.Move(closestToMouse))
                    {
                        await Task.Delay(50, token);
                    }
                }
            }
        }