Example #1
0
        public override void AddDrawableAbility(
            List <IDrawableAbility> drawableAbilities,
            ParticleEffect particle,
            Team allyTeam,
            INotificator notificator)
        {
            if (particle.GetControlPoint(1) == new Vector3(-1))
            {
                return;
            }

            var owner = this.SearchOwner || !(particle.Owner is Unit)
                            ? EntityManager9.Abilities.FirstOrDefault(x => x.Id == this.AbilityId && x.Owner.Team != allyTeam)?.Owner
                            : EntityManager9.GetUnit(particle.Owner.Handle);

            if (owner?.IsVisible != false)
            {
                return;
            }

            string ownerName;

            if (owner.IsHero)
            {
                ownerName = owner.Name;
            }
            else
            {
                ownerName = owner.Owner?.Name;

                if (ownerName == null)
                {
                    return;
                }
            }

            var drawableAbility = new DrawableAbility
            {
                AbilityTexture     = this.AbilityId + "_rounded",
                HeroTexture        = ownerName + "_rounded",
                MinimapHeroTexture = ownerName + "_icon",
                ShowUntil          = Game.RawGameTime + this.TimeToShow,
                Position           = (this.RawParticlePosition ? particle.Position : particle.GetControlPoint(this.ControlPoint)).SetZ(350)
            };

            owner.ChangeBasePosition(drawableAbility.Position);

            if (this.Replace)
            {
                var exist = drawableAbilities.LastOrDefault(
                    x => x.AbilityTexture == drawableAbility.AbilityTexture && x.HeroTexture == drawableAbility.HeroTexture);

                if (exist != null)
                {
                    drawableAbilities.Remove(exist);
                }
            }

            drawableAbilities.Add(drawableAbility);
        }
        // Token: 0x06000287 RID: 647 RVA: 0x00015764 File Offset: 0x00013964
        public virtual void AddDrawableAbility(List <IDrawableAbility> drawableAbilities, Ability9 ability, Unit unit, INotificator notificator)
        {
            if (this.IgnoreUnitAbility)
            {
                return;
            }
            Unit9 owner = ability.Owner;

            if (owner.IsVisible)
            {
                return;
            }
            string          name = owner.Name;
            DrawableAbility item = new DrawableAbility
            {
                AbilityTexture     = ability.Name + "_rounded",
                HeroTexture        = name + "_rounded",
                MinimapHeroTexture = name + "_icon",
                Position           = unit.Position,
                ShowUntil          = Game.RawGameTime + this.TimeToShow
            };

            drawableAbilities.Add(item);
            if (this.ShowNotification && notificator != null)
            {
                notificator.PushNotification(new AbilityNotification(name, ability.Name));
            }
        }
Example #3
0
        // Token: 0x06000316 RID: 790 RVA: 0x0001B808 File Offset: 0x00019A08
        public override void AddDrawableAbility(List <IDrawableAbility> drawableAbilities, ParticleEffect particle, Team allyTeam, INotificator notificator)
        {
            Unit9 unit = EntityManager9.GetUnit(particle.Owner.Handle);

            if (unit == null || unit.IsVisible)
            {
                return;
            }
            Vector3 v = base.RawParticlePosition ? particle.Position : particle.GetControlPoint(base.ControlPoint);

            if (v.Distance2D(unit.BaseUnit.Position, false) < 50f)
            {
                return;
            }
            string          name            = unit.Name;
            DrawableAbility drawableAbility = new DrawableAbility
            {
                AbilityTexture     = base.AbilityId + "_rounded",
                HeroTexture        = name + "_rounded",
                MinimapHeroTexture = name + "_icon",
                ShowUntil          = Game.RawGameTime + base.TimeToShow,
                Position           = v.SetZ(new float?((float)350))
            };

            if (base.Replace)
            {
                IDrawableAbility drawableAbility2 = drawableAbilities.LastOrDefault((IDrawableAbility x) => x.AbilityTexture == drawableAbility.AbilityTexture && x.HeroTexture == drawableAbility.HeroTexture);
                if (drawableAbility2 != null)
                {
                    drawableAbilities.Remove(drawableAbility2);
                }
            }
            drawableAbilities.Add(drawableAbility);
        }
        // Token: 0x060002ED RID: 749 RVA: 0x0001AF90 File Offset: 0x00019190
        public override void AddDrawableAbility(List <IDrawableAbility> drawableAbilities, ParticleEffect particle, Team allyTeam, INotificator notificator)
        {
            if (particle.GetControlPoint(1u) == new Vector3(-1f))
            {
                return;
            }
            Unit9 unit;

            if (!base.SearchOwner && particle.Owner is Unit)
            {
                unit = EntityManager9.GetUnit(particle.Owner.Handle);
            }
            else
            {
                Ability9 ability = EntityManager9.Abilities.FirstOrDefault((Ability9 x) => x.Id == this.AbilityId && x.Owner.Team != allyTeam);
                unit = ((ability != null) ? ability.Owner : null);
            }
            Unit9 unit2 = unit;

            if (unit2 == null || unit2.IsVisible)
            {
                return;
            }
            string text;

            if (unit2.IsHero)
            {
                text = unit2.Name;
            }
            else
            {
                Unit9 owner = unit2.Owner;
                text = ((owner != null) ? owner.Name : null);
                if (text == null)
                {
                    return;
                }
            }
            DrawableAbility drawableAbility = new DrawableAbility
            {
                AbilityTexture     = base.AbilityId + "_rounded",
                HeroTexture        = text + "_rounded",
                MinimapHeroTexture = text + "_icon",
                ShowUntil          = Game.RawGameTime + base.TimeToShow,
                Position           = (base.RawParticlePosition ? particle.Position : particle.GetControlPoint(base.ControlPoint)).SetZ(new float?((float)350))
            };

            if (base.Replace)
            {
                IDrawableAbility drawableAbility2 = drawableAbilities.LastOrDefault((IDrawableAbility x) => x.AbilityTexture == drawableAbility.AbilityTexture && x.HeroTexture == drawableAbility.HeroTexture);
                if (drawableAbility2 != null)
                {
                    drawableAbilities.Remove(drawableAbility2);
                }
            }
            drawableAbilities.Add(drawableAbility);
        }
        // Token: 0x060002F2 RID: 754 RVA: 0x0001B110 File Offset: 0x00019310
        public override void AddDrawableAbility(List <IDrawableAbility> drawableAbilities, ParticleEffect particle, Team allyTeam, INotificator notificator)
        {
            Vector3 position = (base.RawParticlePosition ? particle.Position : particle.GetControlPoint(base.ControlPoint)).SetZ(new float?((float)350));

            if (EntityManager9.AllyUnits.Any((Unit9 x) => x.IsAlive && x.Distance(position) < 400f))
            {
                return;
            }
            Ability9 ability = EntityManager9.Abilities.FirstOrDefault((Ability9 x) => (x.Id == this.AbilityId || x.Id == AbilityId.item_mjollnir) && x.Owner.Team != allyTeam && x.Owner.CanUseAbilities);
            Unit9    unit    = (ability != null) ? ability.Owner : null;

            if (unit == null || unit.IsVisible)
            {
                return;
            }
            string text;

            if (unit.IsHero)
            {
                text = unit.Name;
            }
            else
            {
                Unit9 owner = unit.Owner;
                text = ((owner != null) ? owner.Name : null);
                if (text == null)
                {
                    return;
                }
            }
            DrawableAbility drawableAbility = new DrawableAbility
            {
                AbilityTexture     = base.AbilityId + "_rounded",
                HeroTexture        = text + "_rounded",
                MinimapHeroTexture = text + "_icon",
                ShowUntil          = Game.RawGameTime + base.TimeToShow,
                Position           = position
            };

            if (base.Replace)
            {
                IDrawableAbility drawableAbility2 = drawableAbilities.LastOrDefault((IDrawableAbility x) => x.AbilityTexture == drawableAbility.AbilityTexture && x.HeroTexture == drawableAbility.HeroTexture);
                if (drawableAbility2 != null)
                {
                    drawableAbilities.Remove(drawableAbility2);
                }
            }
            drawableAbilities.Add(drawableAbility);
        }
        // Token: 0x0600030D RID: 781 RVA: 0x0001B590 File Offset: 0x00019790
        public override void AddDrawableAbility(List <IDrawableAbility> drawableAbilities, ParticleEffect particle, Team allyTeam, INotificator notificator)
        {
            if (particle.Name.Contains("dash"))
            {
                drawableAbilities.RemoveAll((IDrawableAbility x) => x is DrawableFireRemnantAbility);
                return;
            }
            Unit9 unit = EntityManager9.GetUnit(particle.Owner.Owner.Handle);

            if (unit == null)
            {
                return;
            }
            Vector3 startPosition = particle.GetControlPoint(this.StartControlPoint);

            if (!unit.IsVisible)
            {
                DrawableAbility item = new DrawableAbility
                {
                    AbilityTexture     = base.AbilityId + "_rounded",
                    HeroTexture        = unit.Name + "_rounded",
                    MinimapHeroTexture = unit.Name + "_icon",
                    ShowUntil          = Game.RawGameTime + base.TimeToShow,
                    Position           = startPosition.SetZ(new float?((float)350))
                };
                drawableAbilities.Add(item);
            }
            DrawableFireRemnantAbility[] remnants = drawableAbilities.OfType <DrawableFireRemnantAbility>().ToArray <DrawableFireRemnantAbility>();
            Unit unit2 = ObjectManager.GetEntitiesFast <Unit>().Concat(ObjectManager.GetDormantEntities <Unit>()).FirstOrDefault((Unit x) => x.IsAlive && x.Name == "npc_dota_ember_spirit_remnant" && x.Distance2D(startPosition) < 1500f && remnants.All((DrawableFireRemnantAbility z) => z.Unit != x));

            if (unit2 == null)
            {
                return;
            }
            DrawableFireRemnantAbility item2 = new DrawableFireRemnantAbility
            {
                AbilityTexture     = base.AbilityId + "_rounded",
                HeroTexture        = unit.Name + "_rounded",
                MinimapHeroTexture = unit.Name + "_icon",
                Position           = particle.GetControlPoint(base.ControlPoint).SetZ(new float?((float)350)),
                Duration           = base.Duration,
                ShowUntil          = Game.RawGameTime + base.Duration,
                ShowHeroUntil      = Game.RawGameTime + base.TimeToShow,
                Owner = unit.BaseEntity,
                Unit  = unit2
            };

            drawableAbilities.Add(item2);
        }
        // Token: 0x06000322 RID: 802 RVA: 0x0001BBC4 File Offset: 0x00019DC4
        public override void AddDrawableAbility(List <IDrawableAbility> drawableAbilities, ParticleEffect particle, Team allyTeam, INotificator notificator)
        {
            Unit9 unit;

            if (!base.SearchOwner && particle.Owner is Unit)
            {
                unit = EntityManager9.GetUnit(particle.Owner.Handle);
            }
            else
            {
                Ability9 ability = EntityManager9.Abilities.FirstOrDefault((Ability9 x) => x.Id == this.AbilityId && x.Owner.Team != allyTeam);
                unit = ((ability != null) ? ability.Owner : null);
            }
            Unit9 unit2 = unit;

            if (unit2 == null || unit2.IsVisible)
            {
                return;
            }
            if (Game.RawGameTime - unit2.LastVisibleTime >= 1f)
            {
                DrawableAbility item = new DrawableAbility
                {
                    AbilityTexture     = base.AbilityId + "_rounded",
                    HeroTexture        = unit2.Name + "_rounded",
                    MinimapHeroTexture = unit2.Name + "_icon",
                    ShowUntil          = Game.RawGameTime + base.TimeToShow,
                    Position           = particle.GetControlPoint(base.ControlPoint)
                };
                drawableAbilities.Add(item);
                return;
            }
            Ability9 ability2 = unit2.Abilities.FirstOrDefault((Ability9 x) => x.Id == this.AbilityId);

            if (ability2 == null)
            {
                return;
            }
            DrawableAbility item2 = new DrawableAbility
            {
                AbilityTexture     = base.AbilityId + "_rounded",
                HeroTexture        = unit2.Name + "_rounded",
                MinimapHeroTexture = unit2.Name + "_icon",
                ShowUntil          = Game.RawGameTime + base.TimeToShow,
                Position           = unit2.InFront(ability2.Range, 0f, true)
            };

            drawableAbilities.Add(item2);
        }
Example #8
0
        public override void AddDrawableAbility(
            List <IDrawableAbility> drawableAbilities,
            ParticleEffect particle,
            Team allyTeam,
            INotificator notificator)
        {
            var owner = EntityManager9.GetUnit(particle.Owner.Handle);

            if (owner?.IsVisible != false)
            {
                return;
            }

            var position = this.RawParticlePosition ? particle.Position : particle.GetControlPoint(this.ControlPoint);

            if (position.IsZero || position.Distance2D(owner.BaseUnit.Position) < 50)
            {
                return;
            }

            var ownerName = owner.Name;

            var drawableAbility = new DrawableAbility
            {
                AbilityTexture     = this.AbilityId + "_rounded",
                HeroTexture        = ownerName + "_rounded",
                MinimapHeroTexture = ownerName + "_icon",
                ShowUntil          = Game.RawGameTime + this.TimeToShow,
                Position           = position.SetZ(350)
            };

            owner.ChangeBasePosition(drawableAbility.Position);

            if (this.Replace)
            {
                var exist = drawableAbilities.LastOrDefault(
                    x => x.AbilityTexture == drawableAbility.AbilityTexture && x.HeroTexture == drawableAbility.HeroTexture);

                if (exist != null)
                {
                    drawableAbilities.Remove(exist);
                }
            }

            drawableAbilities.Add(drawableAbility);
        }
        // Token: 0x060002F8 RID: 760 RVA: 0x0001B2C0 File Offset: 0x000194C0
        public override void AddDrawableAbility(List <IDrawableAbility> drawableAbilities, ParticleEffect particle, Team allyTeam, INotificator notificator)
        {
            Vector3 position = base.RawParticlePosition ? particle.Position : particle.GetControlPoint(base.ControlPoint);

            if (position.IsZero)
            {
                Logger.Error("ParticleZero", particle.Name);
                return;
            }
            Ability9 ability = (from x in EntityManager9.Abilities
                                where x.Id == this.AbilityId && x.Owner.CanUseAbilities
                                orderby x.Owner.Position.Distance2D(position, false)
                                select x).FirstOrDefault <Ability9>();
            Unit9 unit = (ability != null) ? ability.Owner : null;

            if (unit == null || unit.IsVisible || unit.Team == allyTeam)
            {
                return;
            }
            string          name            = unit.Name;
            DrawableAbility drawableAbility = new DrawableAbility
            {
                AbilityTexture     = base.AbilityId + "_rounded",
                HeroTexture        = name + "_rounded",
                MinimapHeroTexture = name + "_icon",
                ShowUntil          = Game.RawGameTime + base.TimeToShow,
                Position           = position.SetZ(new float?((float)350))
            };

            if (base.Replace)
            {
                IDrawableAbility drawableAbility2 = drawableAbilities.LastOrDefault((IDrawableAbility x) => x.AbilityTexture == drawableAbility.AbilityTexture && x.HeroTexture == drawableAbility.HeroTexture);
                if (drawableAbility2 != null)
                {
                    drawableAbilities.Remove(drawableAbility2);
                }
            }
            drawableAbilities.Add(drawableAbility);
            if (base.ShowNotification && notificator != null)
            {
                notificator.PushNotification(new AbilityNotification(name, base.AbilityId.ToString()));
            }
        }
Example #10
0
        public virtual void AddDrawableAbility(
            List <IDrawableAbility> drawableAbilities,
            Ability9 ability,
            Unit unit,
            INotificator notificator)
        {
            if (this.IgnoreUnitAbility)
            {
                return;
            }

            var owner = ability.Owner;

            if (owner.IsVisible)
            {
                return;
            }

            var ownerName = owner.Name;

            var drawableAbility = new DrawableAbility
            {
                AbilityTexture     = ability.Name + "_rounded",
                HeroTexture        = ownerName + "_rounded",
                MinimapHeroTexture = ownerName + "_icon",
                Position           = unit.Position,
                ShowUntil          = Game.RawGameTime + this.TimeToShow,
            };

            if (ability.Id != AbilityId.zuus_cloud)
            {
                owner.ChangeBasePosition(drawableAbility.Position);
            }

            drawableAbilities.Add(drawableAbility);

            if (this.ShowNotification)
            {
                notificator?.PushNotification(new AbilityNotification(ownerName, ability.Name));
            }
        }
Example #11
0
        public override void AddDrawableAbility(
            List <IDrawableAbility> drawableAbilities,
            ParticleEffect particle,
            Team allyTeam,
            INotificator notificator)
        {
            var position = this.RawParticlePosition ? particle.Position : particle.GetControlPoint(this.ControlPoint);

            if (position.IsZero)
            {
                Logger.Error("ParticleZero", particle.Name);
                return;
            }

            var owners = EntityManager9.Abilities.Where(x => x.Id == this.AbilityId)
                         .Select(x => x.Owner)
                         .Where(x => x.CanUseAbilities && x.IsAlive)
                         .ToList();

            if (owners.Any(x => x.IsVisible && x.Distance(position) <= this.RangeCheck))
            {
                return;
            }

            var owner = owners.Find(x => x.Team != allyTeam && !x.IsVisible);

            if (owner == null)
            {
                return;
            }

            var ownerName = owner.Name;

            var drawableAbility = new DrawableAbility
            {
                AbilityTexture     = this.AbilityId + "_rounded",
                HeroTexture        = ownerName + "_rounded",
                MinimapHeroTexture = ownerName + "_icon",
                ShowUntil          = Game.RawGameTime + this.TimeToShow,
                Position           = position.SetZ(350)
            };

            owner.ChangeBasePosition(drawableAbility.Position);

            if (this.Replace)
            {
                var exist = drawableAbilities.LastOrDefault(
                    x => x.AbilityTexture == drawableAbility.AbilityTexture && x.HeroTexture == drawableAbility.HeroTexture);

                if (exist != null)
                {
                    drawableAbilities.Remove(exist);
                }
            }

            drawableAbilities.Add(drawableAbility);

            if (this.ShowNotification)
            {
                notificator?.PushNotification(new AbilityNotification(ownerName, this.AbilityId.ToString()));
            }
        }
Example #12
0
        public override void AddDrawableAbility(
            List <IDrawableAbility> drawableAbilities,
            Particle particle,
            Team allyTeam,
            INotificator notificator)
        {
            var position = particle.GetControlPoint(this.ControlPoint);
            var blinks   = EntityManager9.Abilities.Where(
                x => (x.Id == this.AbilityId || x.Id == AbilityId.item_flicker) && x.Owner.CanUseAbilities && x.Owner.IsAlive)
                           .ToList();

            if (blinks.Count == 0 || blinks.All(x => x.Owner.Team == allyTeam))
            {
                return;
            }

            if (blinks.Any(x => x.Owner.IsVisible && x.Owner.Distance(position) < 1500 && x.TimeSinceCasted < 0.5f))
            {
                return;
            }

            var enemyBlinks = blinks.Where(x => x.Owner.Team != allyTeam && x.RemainingCooldown <= 0).ToList();

            if (enemyBlinks.Count == 0)
            {
                return;
            }

            if (enemyBlinks.Count == 1)
            {
                var owner           = enemyBlinks[0].Owner;
                var drawableAbility = new DrawableAbility
                {
                    AbilityTexture     = this.AbilityId.ToString(),
                    HeroTexture        = owner.Name,
                    MinimapHeroTexture = owner.Name,
                    ShowUntil          = GameManager.RawGameTime + this.TimeToShow,
                    Position           = GameManager.RawGameTime - owner.LastVisibleTime < 0.5f
                                   ? owner.InFront(enemyBlinks[0].Range - 200)
                                   : position.SetZ(350)
                };

                owner.ChangeBasePosition(drawableAbility.Position);
                drawableAbilities.Add(drawableAbility);
            }
            else
            {
                var owner = enemyBlinks.Find(x => x.Owner.Distance(position) < 100 && GameManager.RawGameTime - x.Owner.LastVisibleTime < 0.5f)
                            ?.Owner;

                if (owner != null)
                {
                    var drawableAbility = new DrawableAbility
                    {
                        AbilityTexture     = this.AbilityId.ToString(),
                        HeroTexture        = owner.Name,
                        MinimapHeroTexture = owner.Name,
                        ShowUntil          = GameManager.RawGameTime + this.TimeToShow,
                        Position           = owner.InFront(enemyBlinks[0].Range - 200)
                    };

                    owner.ChangeBasePosition(drawableAbility.Position);
                    drawableAbilities.Add(drawableAbility);
                }
                else
                {
                    var drawableAbility = new SimpleDrawableAbility
                    {
                        AbilityTexture = this.AbilityId.ToString(),
                        ShowUntil      = GameManager.RawGameTime + this.TimeToShow,
                        Position       = (this.RawParticlePosition ? particle.Position : particle.GetControlPoint(this.ControlPoint)).SetZ(350)
                    };

                    drawableAbilities.Add(drawableAbility);
                }
            }
        }
Example #13
0
        public override void AddDrawableAbility(
            List <IDrawableAbility> drawableAbilities,
            Particle particle,
            Team allyTeam,
            INotificator notificator)
        {
            if (particle.Name.Contains("dash"))
            {
                drawableAbilities.RemoveAll(x => x is DrawableFireRemnantAbility);
            }
            else
            {
                var owner = EntityManager9.GetUnit(particle.Owner.Owner.Handle);
                if (owner == null)
                {
                    return;
                }

                var startPosition = particle.GetControlPoint(this.StartControlPoint);

                if (!owner.IsVisible)
                {
                    var drawableAbilityStart = new DrawableAbility
                    {
                        AbilityTexture     = this.AbilityId.ToString(),
                        HeroTexture        = owner.Name,
                        MinimapHeroTexture = owner.Name,
                        ShowUntil          = GameManager.RawGameTime + this.TimeToShow,
                        Position           = startPosition.SetZ(350)
                    };

                    owner.ChangeBasePosition(drawableAbilityStart.Position);
                    drawableAbilities.Add(drawableAbilityStart);
                }

                var remnants = drawableAbilities.OfType <DrawableFireRemnantAbility>().ToArray();
                var unit     = EntityManager.GetEntities <Unit>()
                               .FirstOrDefault(
                    x => x.IsAlive && x.Name == "npc_dota_ember_spirit_remnant" && x.Distance2D(startPosition) < 1500 &&
                    remnants.All(z => z.Unit != x));

                if (unit == null)
                {
                    return;
                }

                var drawableAbility = new DrawableFireRemnantAbility
                {
                    AbilityTexture     = this.AbilityId.ToString(),
                    HeroTexture        = owner.Name,
                    MinimapHeroTexture = owner.Name,
                    Position           = particle.GetControlPoint(this.ControlPoint).SetZ(350),
                    Duration           = this.Duration,
                    ShowUntil          = GameManager.RawGameTime + this.Duration,
                    ShowHeroUntil      = GameManager.RawGameTime + this.TimeToShow,
                    Owner = owner.BaseEntity,
                    Unit  = unit
                };

                drawableAbilities.Add(drawableAbility);
            }
        }
Example #14
0
        public virtual void AddDrawableAbility(
            List <IDrawableAbility> drawableAbilities,
            ParticleEffect particle,
            Team allyTeam,
            INotificator notificator)
        {
            var owner = this.SearchOwner || !(particle.Owner is Unit)
                            ? EntityManager9.Abilities.FirstOrDefault(
                x => x.Id == this.AbilityId && x.Owner.Team != allyTeam && x.Owner.CanUseAbilities)
                        ?.Owner
                            : EntityManager9.GetUnit(particle.Owner.Handle);

            if (owner?.IsVisible != false)
            {
                return;
            }

            string ownerName;

            if (owner.IsHero)
            {
                if (owner.Name == nameof(HeroId.npc_dota_hero_rubick) &&
                    (this.AbilityId != AbilityId.rubick_fade_bolt || this.AbilityId != AbilityId.rubick_telekinesis))
                {
                    return;
                }

                ownerName = owner.Name;
            }
            else
            {
                ownerName = owner.Owner?.Name;

                if (ownerName == null)
                {
                    return;
                }
            }

            var position = this.RawParticlePosition ? particle.Position : particle.GetControlPoint(this.ControlPoint);

            if (position.IsZero || (owner.IsHero && owner.Distance(position) < 50))
            {
                return;
            }

            var drawableAbility = new DrawableAbility
            {
                AbilityTexture     = this.AbilityId + "_rounded",
                HeroTexture        = ownerName + "_rounded",
                MinimapHeroTexture = ownerName + "_icon",
                ShowUntil          = Game.RawGameTime + this.TimeToShow,
                Position           = position.SetZ(350)
            };

            owner.ChangeBasePosition(drawableAbility.Position);

            if (this.Replace)
            {
                var exist = drawableAbilities.LastOrDefault(
                    x => x.AbilityTexture == drawableAbility.AbilityTexture && x.HeroTexture == drawableAbility.HeroTexture);

                if (exist != null)
                {
                    drawableAbilities.Remove(exist);
                }
            }

            drawableAbilities.Add(drawableAbility);

            if (this.ShowNotification)
            {
                notificator?.PushNotification(new AbilityNotification(ownerName, this.AbilityId.ToString()));
            }
        }
Example #15
0
        public override void AddDrawableAbility(
            List <IDrawableAbility> drawableAbilities,
            ParticleEffect particle,
            Team allyTeam,
            INotificator notificator)
        {
            var position = (this.RawParticlePosition ? particle.Position : particle.GetControlPoint(this.ControlPoint)).SetZ(350);
            var owners   = EntityManager9.Abilities.Where(x => x.Id == this.AbilityId || x.Id == AbilityId.item_mjollnir)
                           .Select(x => x.Owner)
                           .Where(x => x.CanUseAbilities && x.IsAlive)
                           .ToList();

            if (owners.Any(x => x.IsVisible && x.Distance(position) <= x.GetAttackRange() + 400))
            {
                return;
            }

            var owner = owners.Find(x => x.Team != allyTeam && !x.IsVisible);

            if (owner == null)
            {
                return;
            }

            string ownerName;

            if (owner.IsHero)
            {
                ownerName = owner.Name;
            }
            else
            {
                ownerName = owner.Owner?.Name;

                if (ownerName == null)
                {
                    return;
                }
            }

            var drawableAbility = new DrawableAbility
            {
                AbilityTexture     = this.AbilityId + "_rounded",
                HeroTexture        = ownerName + "_rounded",
                MinimapHeroTexture = ownerName + "_icon",
                ShowUntil          = Game.RawGameTime + this.TimeToShow,
                Position           = position
            };

            owner.ChangeBasePosition(drawableAbility.Position);

            if (this.Replace)
            {
                var exist = drawableAbilities.LastOrDefault(
                    x => x.AbilityTexture == drawableAbility.AbilityTexture && x.HeroTexture == drawableAbility.HeroTexture);

                if (exist != null)
                {
                    drawableAbilities.Remove(exist);
                }
            }

            drawableAbilities.Add(drawableAbility);
        }
        // Token: 0x06000288 RID: 648 RVA: 0x00015814 File Offset: 0x00013A14
        public virtual void AddDrawableAbility(List <IDrawableAbility> drawableAbilities, ParticleEffect particle, Team allyTeam, INotificator notificator)
        {
            Unit9 unit;

            if (!this.SearchOwner && particle.Owner is Unit)
            {
                unit = EntityManager9.GetUnit(particle.Owner.Handle);
            }
            else
            {
                Ability9 ability = EntityManager9.Abilities.FirstOrDefault((Ability9 x) => x.Id == this.AbilityId && x.Owner.Team != allyTeam && x.Owner.CanUseAbilities);
                unit = ((ability != null) ? ability.Owner : null);
            }
            Unit9 unit2 = unit;

            if (unit2 == null || unit2.IsVisible)
            {
                return;
            }
            string text;

            if (unit2.IsHero)
            {
                text = unit2.Name;
            }
            else
            {
                Unit9 owner = unit2.Owner;
                text = ((owner != null) ? owner.Name : null);
                if (text == null)
                {
                    return;
                }
            }
            Vector3 v = this.RawParticlePosition ? particle.Position : particle.GetControlPoint(this.ControlPoint);

            if (v.IsZero)
            {
                Logger.Error("ParticleZero", particle.Name);
                return;
            }
            DrawableAbility drawableAbility = new DrawableAbility
            {
                AbilityTexture     = this.AbilityId + "_rounded",
                HeroTexture        = text + "_rounded",
                MinimapHeroTexture = text + "_icon",
                ShowUntil          = Game.RawGameTime + this.TimeToShow,
                Position           = v.SetZ(new float?((float)350))
            };

            if (this.Replace)
            {
                IDrawableAbility drawableAbility2 = drawableAbilities.LastOrDefault((IDrawableAbility x) => x.AbilityTexture == drawableAbility.AbilityTexture && x.HeroTexture == drawableAbility.HeroTexture);
                if (drawableAbility2 != null)
                {
                    drawableAbilities.Remove(drawableAbility2);
                }
            }
            drawableAbilities.Add(drawableAbility);
            if (this.ShowNotification && notificator != null)
            {
                notificator.PushNotification(new AbilityNotification(text, this.AbilityId.ToString()));
            }
        }
Example #17
0
        // Token: 0x0600031A RID: 794 RVA: 0x0001B924 File Offset: 0x00019B24
        public override void AddDrawableAbility(List <IDrawableAbility> drawableAbilities, ParticleEffect particle, Team allyTeam, INotificator notificator)
        {
            Vector3         position = particle.GetControlPoint(base.ControlPoint);
            List <Ability9> list     = (from x in EntityManager9.Abilities
                                        where x.Id == this.AbilityId && x.Owner.CanUseAbilities && x.Owner.IsAlive
                                        select x).ToList <Ability9>();

            if (list.Count == 0 || list.All((Ability9 x) => x.Owner.Team == allyTeam))
            {
                return;
            }
            if (list.Any((Ability9 x) => x.Owner.IsVisible && x.Owner.Distance(position) < 1500f && x.TimeSinceCasted < 0.5f))
            {
                return;
            }
            List <Ability9> list2 = (from x in list
                                     where x.Owner.Team != allyTeam && !x.Owner.IsVisible && x.RemainingCooldown <= 0f
                                     select x).ToList <Ability9>();

            if (list2.Count == 0)
            {
                return;
            }
            if (list2.Count == 1)
            {
                Unit9           owner = list2[0].Owner;
                DrawableAbility item  = new DrawableAbility
                {
                    AbilityTexture     = base.AbilityId + "_rounded",
                    HeroTexture        = owner.Name + "_rounded",
                    MinimapHeroTexture = owner.Name + "_icon",
                    ShowUntil          = Game.RawGameTime + base.TimeToShow,
                    Position           = ((Game.RawGameTime - owner.LastVisibleTime < 0.5f) ? owner.InFront(list2[0].Range - 200f, 0f, true) : position.SetZ(new float?((float)350)))
                };
                drawableAbilities.Add(item);
                return;
            }
            Ability9 ability = list2.Find((Ability9 x) => x.Owner.Distance(position) < 100f && Game.RawGameTime - x.Owner.LastVisibleTime < 0.5f);
            Unit9    unit    = (ability != null) ? ability.Owner : null;

            if (unit != null)
            {
                DrawableAbility item2 = new DrawableAbility
                {
                    AbilityTexture     = base.AbilityId + "_rounded",
                    HeroTexture        = unit.Name + "_rounded",
                    MinimapHeroTexture = unit.Name + "_icon",
                    ShowUntil          = Game.RawGameTime + base.TimeToShow,
                    Position           = unit.InFront(list2[0].Range - 200f, 0f, true)
                };
                drawableAbilities.Add(item2);
                return;
            }
            SimpleDrawableAbility item3 = new SimpleDrawableAbility
            {
                AbilityTexture = base.AbilityId + "_rounded",
                ShowUntil      = Game.RawGameTime + base.TimeToShow,
                Position       = (base.RawParticlePosition ? particle.Position : particle.GetControlPoint(base.ControlPoint)).SetZ(new float?((float)350))
            };

            drawableAbilities.Add(item3);
        }
Example #18
0
        public override void AddDrawableAbility(
            List <IDrawableAbility> drawableAbilities,
            Particle particle,
            Team allyTeam,
            INotificator notificator)
        {
            var particleOwner    = particle.Owner;
            var particlePosition = particle.GetControlPoint(this.ControlPoint);

            UpdateManager.BeginInvoke(
                () =>
            {
                try
                {
                    var owner = this.SearchOwner || !(particleOwner is Unit)
                                            ? EntityManager9.Abilities
                                .FirstOrDefault(x => x.Id == this.AbilityId && x.Owner.Team != allyTeam)
                                ?.Owner
                                            : EntityManager9.GetUnit(particleOwner.Handle);

                    if (owner?.IsVisible != false)
                    {
                        return;
                    }

                    if (GameManager.RawGameTime - owner.LastVisibleTime < 1)
                    {
                        var ability = owner.Abilities.FirstOrDefault(x => x.Id == this.AbilityId);
                        if (ability == null)
                        {
                            return;
                        }

                        var drawableAbility = new DrawableAbility
                        {
                            AbilityTexture     = this.AbilityId.ToString(),
                            HeroTexture        = owner.Name,
                            MinimapHeroTexture = owner.Name,
                            ShowUntil          = GameManager.RawGameTime + this.TimeToShow,
                            Position           = owner.InFront(ability.Range)
                        };

                        owner.ChangeBasePosition(drawableAbility.Position);
                        drawableAbilities.Add(drawableAbility);
                    }
                    else
                    {
                        var drawableAbility = new DrawableAbility
                        {
                            AbilityTexture     = this.AbilityId.ToString(),
                            HeroTexture        = owner.Name,
                            MinimapHeroTexture = owner.Name,
                            ShowUntil          = GameManager.RawGameTime + this.TimeToShow,
                            Position           = particlePosition
                        };

                        owner.ChangeBasePosition(drawableAbility.Position);
                        drawableAbilities.Add(drawableAbility);
                    }
                }
                catch (Exception e)
                {
                    Logger.Error(e);
                }
            });
        }