Exemplo n.º 1
0
        private void OnUpdate()
        {
            foreach (var tower in EntityManager.GetEntities <Tower>())
            {
                if (!tower.IsEnemy(LocalHero))
                {
                    continue;
                }

                var id       = $"TowerHelper_{tower.Handle}";
                var position = tower.Position;
                if (LocalHero.Distance2D(position) < 1100)
                {
                    ParticleManager.CreateOrUpdateParticle(
                        id,
                        @"particles\ui_mouseactions\range_finder_tower_aoe_ring.vpcf",
                        tower,
                        ParticleAttachment.AbsOrigin,
                        new ControlPoint(2, position),
                        new ControlPoint(3, tower.AttackRange(LocalHero), 0, 0),
                        new ControlPoint(4, 255, 0, 0));
                }
                else
                {
                    ParticleManager.RemoveParticle(id);
                }
            }
        }
Exemplo n.º 2
0
        private void OnDraw()
        {
            Color Choosed   = Colours[ColorSwitcher.Value];
            var   localHero = EntityManager.LocalHero;

            if (localHero.Name != "npc_dota_hero_nevermore")
            {
                return;
            }
            var razes = new[] { 200, 450, 700 };

            for (int i = 0; i < 3; i++)
            {
                var inFront = InFront(localHero, razes[i]);

                ParticleManager.CreateOrUpdateParticle(
                    $"DrawRaze_{i}",
                    "materials/ensage_ui/particles/alert_range.vpcf",
                    localHero,
                    ParticleAttachment.AbsOrigin,
                    new ControlPoint(0, inFront),
                    new ControlPoint(1, Choosed),
                    new ControlPoint(2, 250, 255, 7));
            }
        }
Exemplo n.º 3
0
 protected void DrawRange(string id, Vector3 position, float radius, Color color, int alpha)
 {
     ParticleManager.CreateOrUpdateParticle(
         $"DrawRange_{id}",
         @"materials\ensage_ui\particles\alert_range.vpcf",
         ParticleAttachment.AbsOrigin,
         new ControlPoint(0, position),
         new ControlPoint(1, color),
         new ControlPoint(2, radius, 255, alpha));
 }
Exemplo n.º 4
0
 protected void DrawLine(string id, Vector3 startPosition, Vector3 endPosition, int size, int alpha, Color color)
 {
     ParticleManager.CreateOrUpdateParticle(
         $"DrawLine_{id}",
         @"materials\ensage_ui\particles\rectangle.vpcf",
         ParticleAttachment.AbsOrigin,
         new ControlPoint(1, startPosition),
         new ControlPoint(2, endPosition),
         new ControlPoint(3, size, alpha, 0),
         new ControlPoint(4, color));
 }
Exemplo n.º 5
0
        private void ParticleAdd(Entity entity)
        {
            if (entity == null)
            {
                return;
            }

            ParticleManager.CreateOrUpdateParticle(
                $"TrueSightVision_{entity.Handle}",
                "particles/items2_fx/ward_true_sight.vpcf",
                entity,
                ParticleAttachment.AbsOriginFollow);
        }
Exemplo n.º 6
0
        public void Effect(Unit target)
        {
            if (target == null)
            {
                Remove();
                return;
            }

            ParticleManager.CreateOrUpdateParticle(
                "Divine.TargetEffects",
                "materials/ensage_ui/particles/target_d.vpcf",
                Owner,
                ParticleAttachment.AbsOriginFollow,
                ParticleRestartType.None,
                new ControlPoint(5, Color),
                new ControlPoint(6, 255, 255, 255),
                new ControlPoint(2, Owner.Position),
                new ControlPoint(7, target.Position));
        }
Exemplo n.º 7
0
        private void HandleEffect(Unit unit, bool visible)
        {
            if (!AddEffectType /*&& Owner.Animation.Name != "idle"*/)
            {
                AddEffectType = true;
            }

            if (visible && unit.IsAlive /*&& unit.Position.IsOnScreen()*/)
            {
                ParticleManager.CreateOrUpdateParticle(
                    $"VisibleByEnemyPlus.{unit.Handle}",
                    Config.Effects[Config.EffectTypeItem],
                    unit,
                    ParticleAttachment.AbsOriginFollow,
                    new ControlPoint(1, Red, Green, Blue),
                    new ControlPoint(2, Alpha));
            }
            else if (AddEffectType)
            {
                ParticleManager.RemoveParticle($"VisibleByEnemyPlus.{unit.Handle}");
            }
        }
Exemplo n.º 8
0
        private async void Infest(Unit unit, Modifier modifier, bool isHero)
        {
            if (EntityManager.GetEntities <Hero>().Any(x => x.IsAlly(LocalHero) && !x.IsIllusion && x.HeroId == HeroId.npc_dota_hero_life_stealer))
            {
                return;
            }

            var effectName = "particles/units/heroes/hero_life_stealer/life_stealer_infested_unit.vpcf";

            if (isHero)
            {
                effectName = "materials/ensage_ui/particles/life_stealer_infested_unit.vpcf";
            }

            ParticleManager.CreateOrUpdateParticle($"LifeStealerInfest_{unit.Handle}", effectName, EntityManager.GetEntityByHandle(unit.Handle), ParticleAttachment.OverheadFollow);

            while (modifier.IsValid)
            {
                await Task.Delay(150);
            }

            ParticleManager.RemoveParticle($"LifeStealerInfest_{unit.Handle}");
        }
Exemplo n.º 9
0
        protected override void Execute()
        {
            var arcaneBolt = Abilities.ArcaneBolt;

            if (RadiusMenu.ArcaneBoltItem || FarmMenu.FarmHotkeyItem && arcaneBolt.Level > 0)
            {
                ParticleManager.RangeParticle(
                    "ArcaneBolt",
                    Owner,
                    arcaneBolt.CastRange,
                    arcaneBolt.IsReady ? (FarmMenu.FarmHotkeyItem ? Color.Yellow : Color.Aqua) : Color.Gray);
            }
            else
            {
                ParticleManager.RemoveParticle("ArcaneBolt");
            }

            var concussiveShot = Abilities.ConcussiveShot;

            if (RadiusMenu.ConcussiveShotItem && concussiveShot.Level > 0)
            {
                ParticleManager.RangeParticle(
                    "ConcussiveShot",
                    Owner,
                    concussiveShot.Radius,
                    concussiveShot.IsReady ? Color.Aqua : Color.Gray);
            }
            else
            {
                ParticleManager.RemoveParticle("ConcussiveShot");
            }

            var ancientSeal = Abilities.AncientSeal;

            if (RadiusMenu.AncientSealItem && ancientSeal.Level > 0)
            {
                ParticleManager.RangeParticle(
                    "AncientSeal",
                    Owner,
                    ancientSeal.CastRange,
                    ancientSeal.IsReady ? Color.Aqua : Color.Gray);
            }
            else
            {
                ParticleManager.RemoveParticle("AncientSeal");
            }

            var mysticFlare = Abilities.MysticFlare;

            if (RadiusMenu.MysticFlareItem && mysticFlare.Level > 0)
            {
                ParticleManager.RangeParticle(
                    "MysticFlare",
                    Owner,
                    mysticFlare.CastRange,
                    mysticFlare.IsReady ? Color.Aqua : Color.Gray);
            }
            else
            {
                ParticleManager.RemoveParticle("MysticFlare");
            }

            var blink = Abilities.Blink;

            if (RadiusMenu.BlinkDaggerItem && blink != null)
            {
                var color = Color.Red;
                if (!blink.IsReady)
                {
                    color = Color.Gray;
                }
                else if (Owner.Distance2D(GameManager.MousePosition) > BlinkDaggerMenu.BlinkActivationItem.Value)
                {
                    color = Color.Aqua;
                }

                ParticleManager.RangeParticle(
                    "Blink",
                    Owner,
                    blink.CastRange,
                    color);
            }
            else
            {
                ParticleManager.RemoveParticle("Blink");
            }

            if (FarmMenu.FarmHotkeyItem)
            {
                ParticleManager.RangeParticle(
                    "Farm",
                    Owner,
                    Owner.AttackRange(Owner),
                    Color.Yellow);
            }
            else
            {
                ParticleManager.RemoveParticle("Farm");
            }

            var targetHit = concussiveShot.TargetHit;

            if (RadiusMenu.TargetHitConcussiveShotItem && targetHit != null && concussiveShot.Cooldown <= 1 && concussiveShot.Level > 0)
            {
                var position = targetHit.Position + new Vector3(0, 200, targetHit.HealthBarOffset);

                ParticleManager.CreateOrUpdateParticle(
                    "TargetHitConcussiveShot",
                    @"particles\units\heroes\hero_skywrath_mage\skywrath_mage_concussive_shot.vpcf",
                    targetHit,
                    ParticleAttachment.AbsOrigin,
                    new ControlPoint(0, position),
                    new ControlPoint(1, position),
                    new ControlPoint(2, 1000));
            }
            else
            {
                ParticleManager.RemoveParticle("TargetHitConcussiveShot");
            }
        }
Exemplo n.º 10
0
 private void AddLinkenShow(Hero hero)
 {
     ParticleManager.CreateOrUpdateParticle($"LinkenShow_{hero.Handle}", "particles/items_fx/immunity_sphere_buff.vpcf", hero, ParticleAttachment.CenterFollow);
 }
Exemplo n.º 11
0
        private async void Charge(Unit unit, Modifier modifier, bool isHero)
        {
            try
            {
                if (unit.Team != LocalHero.Team)
                {
                    return;
                }

                var effectName = "particles/units/heroes/hero_spirit_breaker/spirit_breaker_charge_target.vpcf";
                if (isHero)
                {
                    if (LocalHero.Handle == unit.Handle)
                    {
                        ColorScreen = true;
                    }

                    effectName = "materials/ensage_ui/particles/spirit_breaker_charge_target.vpcf";

                    var position   = unit.Position;
                    var pos        = Pos(position, SpiritBreakerChargeMenu.OnWorldItem);
                    var minimapPos = MinimapPos(position, SpiritBreakerChargeMenu.OnMinimapItem);

                    Verification.InfoVerification(pos, minimapPos, unit.Name, AbilityId.spirit_breaker_charge_of_darkness, 0, SpiritBreakerChargeMenu.SideMessageItem, SpiritBreakerChargeMenu.SoundItem);

                    if (SpiritBreakerChargeMenu.WriteOnChatItem)
                    {
                        DisplayMessage(unit);
                    }
                }

                ParticleManager.CreateOrUpdateParticle($"ChargeUnit", effectName, EntityManager.GetEntityByHandle(unit.Handle), ParticleAttachment.OverheadFollow);

                var spiritBreaker = EntityManager.GetEntities <Hero>().FirstOrDefault(x => !x.IsIllusion && x.HeroId == HeroId.npc_dota_hero_spirit_breaker);
                var speed         = spiritBreaker.GetAbilityById(AbilityId.spirit_breaker_charge_of_darkness).GetAbilitySpecialDataWithTalent(spiritBreaker, "movement_speed");

                var rawGameTime    = GameManager.RawGameTime;
                var firstIsVisible = false;

                do
                {
                    var isVisible = spiritBreaker.IsVisible;
                    if (isVisible)
                    {
                        rawGameTime    = GameManager.RawGameTime;
                        firstIsVisible = true;
                    }

                    if (firstIsVisible)
                    {
                        startChargePosition = spiritBreaker.Position.Extend(unit.Position, (GameManager.RawGameTime - rawGameTime) * speed);
                        endChargePosition   = unit.Position;
                        DrawLine("Charge", startChargePosition, endChargePosition, 150, 185, Color.DarkRed);

                        if (SpiritBreakerChargeMenu.OnMinimapItem)
                        {
                            OnMinimap = true;
                        }

                        if (!isVisible)
                        {
                            DrawRange("Charge", startChargePosition, 100, Color.Red, 180);
                        }
                        else
                        {
                            DrawRangeRemove("Charge");
                        }
                    }

                    await Task.Delay(50);
                }while (modifier.IsValid);

                ColorScreen = false;
                OnMinimap   = false;

                ParticleManager.RemoveParticle("ChargeUnit");
                DrawRangeRemove("Charge");
                DrawLineRemove("Charge");
                startChargePosition = Vector3.Zero;
            }
            catch (Exception e)
            {
                LogManager.Error(e);
            }
        }