Пример #1
0
        public void AddModifier(Modifier modifier, Unit9 modifierOwner)
        {
            if (modifier.IsDebuff)
            {
                if (!modifierOwner.IsAlly())
                {
                    return;
                }

                var obstacle = new ModifierAllyObstacle(this, modifier, modifierOwner)
                {
                    Disables = new AbilityId[0]
                };

                this.Pathfinder.AddObstacle(obstacle);
            }
            else
            {
                if (modifierOwner.IsAlly())
                {
                    return;
                }

                var obstacle = new ModifierEnemyObstacle(this, modifier, modifierOwner, 800)
                {
                    Counters = new AbilityId[0]
                };

                this.Pathfinder.AddObstacle(obstacle);
            }
        }
Пример #2
0
        private void OnUnitRemoved(Unit9 entity)
        {
            try
            {
                if (!entity.IsControllable || !entity.IsAlly(this.owner.Team) || !entity.IsUnit)
                {
                    return;
                }

                var unit = this.controllableUnits.Find(x => x.Handle == entity.Handle);
                if (unit == null)
                {
                    return;
                }

                if (unit is IDisposable disposable)
                {
                    disposable.Dispose();
                }

                this.controllableUnits.Remove(unit);
                this.issuedActionTimings.Remove(entity.Handle);
            }
            catch (Exception e)
            {
                Logger.Error(e);
            }
        }
Пример #3
0
        public override bool CanHit(Unit9 target)
        {
            if (target.IsMagicImmune && ((target.IsEnemy(this.Owner) && !this.CanHitSpellImmuneEnemy) ||
                                         (target.IsAlly(this.Owner) && !this.CanHitSpellImmuneAlly)))
            {
                return(false);
            }

            if (this.Owner.Distance(target) > this.CastRange)
            {
                return(false);
            }

            var grabTarget = EntityManager9.Units
                             .Where(
                x => x.IsUnit && x.IsAlive && x.IsVisible && !x.IsMagicImmune && !x.IsInvulnerable && !x.Equals(this.Owner) &&
                x.Distance(this.Owner) < this.RadiusData.GetValue(this.Level))
                             .OrderBy(x => x.Distance(this.Owner))
                             .FirstOrDefault();

            if (grabTarget == null)
            {
                return(false);
            }

            if (grabTarget.IsHero && !grabTarget.IsIllusion && grabTarget.IsAlly(this.Owner))
            {
                return(false);
            }

            return(true);
        }
Пример #4
0
 // Token: 0x06000979 RID: 2425 RVA: 0x000232CC File Offset: 0x000214CC
 private float GetOrbDamage(Unit9 unit)
 {
     if (unit.IsBuilding || unit.IsAlly(base.Owner))
     {
         return(0f);
     }
     return(base.Owner.TotalIntelligence * this.DamageData.GetValue(this.Level) / 100f);
 }
 // Token: 0x06000B35 RID: 2869 RVA: 0x0000A1A4 File Offset: 0x000083A4
 private float GetOrbDamage(Unit9 unit)
 {
     if (unit.IsBuilding || unit.IsAlly(base.Owner))
     {
         return(0f);
     }
     return(this.DamageData.GetValue(this.Level));
 }
Пример #6
0
 // Token: 0x06000F55 RID: 3925 RVA: 0x00028194 File Offset: 0x00026394
 private float GetOrbDamage(Unit9 unit)
 {
     if (unit.IsBuilding || unit.IsAlly(base.Owner))
     {
         return(0f);
     }
     return(this.DamageData.GetValue(this.Level) / 100f * Math.Min(base.Owner.Distance(unit), this.damageCapRange.GetValue(this.Level)));
 }
Пример #7
0
        private float GetOrbDamage(Unit9 unit)
        {
            if (unit.IsAlly(this.Owner))
            {
                return(0);
            }

            return(this.DamageData.GetValue(this.Level));
        }
Пример #8
0
        private float GetOrbDamage(Unit9 unit)
        {
            if (unit.IsBuilding || unit.IsAlly(this.Owner))
            {
                return(0);
            }

            return((this.Owner.Mana * this.DamageData.GetValue(this.Level)) / 100);
        }
Пример #9
0
        // Token: 0x06000E58 RID: 3672 RVA: 0x00027464 File Offset: 0x00025664
        public override Damage GetRawDamage(Unit9 unit, float?remainingHealth = null)
        {
            Damage damage = new Damage();

            if (!unit.IsBuilding && !unit.IsAlly(base.Owner) && !base.Owner.IsIllusion)
            {
                damage[this.DamageType] = unit.Health * this.DamageData.GetValue(this.Level) / 100f;
            }
            return(damage);
        }
Пример #10
0
        // Token: 0x060006B7 RID: 1719 RVA: 0x000218F0 File Offset: 0x0001FAF0
        public override Damage GetRawDamage(Unit9 unit, float?remainingHealth = null)
        {
            Damage damage = new Damage();

            if (unit.IsCreep && base.IsActive && !unit.IsAlly(base.Owner) && !base.Owner.IsIllusion)
            {
                damage[this.DamageType] = (base.Owner.IsRanged ? this.rangedDamageData.GetValue(this.Level) : this.DamageData.GetValue(this.Level));
            }
            return(damage);
        }
Пример #11
0
        // Token: 0x06000DFB RID: 3579 RVA: 0x0002714C File Offset: 0x0002534C
        Damage IHasPassiveDamageIncrease.GetRawDamage(Unit9 unit, float?remainingHealth)
        {
            Damage damage = new Damage();

            if (!unit.IsBuilding && !unit.IsAlly(base.Owner) && !base.Owner.IsIllusion)
            {
                damage[this.DamageType] = (unit.IsHero ? this.heroDamageData.GetValue(this.Level) : this.creepDamageData.GetValue(this.Level));
            }
            return(damage);
        }
        // Token: 0x06000CE8 RID: 3304 RVA: 0x00025E68 File Offset: 0x00024068
        Damage IHasPassiveDamageIncrease.GetRawDamage(Unit9 unit, float?remainingHealth)
        {
            Damage damage = new Damage();

            if (!unit.IsBuilding && !unit.IsAlly(base.Owner) && !base.Owner.IsIllusion && unit.GetAngle(base.Owner, false) > 2f)
            {
                damage[this.DamageType] = this.DamageData.GetValue(this.Level) * base.Owner.TotalAgility;
            }
            return(damage);
        }
Пример #13
0
        // Token: 0x06000C76 RID: 3190 RVA: 0x000258D8 File Offset: 0x00023AD8
        public override Damage GetRawDamage(Unit9 unit, float?remainingHealth = null)
        {
            Damage damage = new Damage();

            if (!unit.IsBuilding && !unit.IsAlly(base.Owner) && !EntityManager9.Units.Any((Unit9 x) => x.IsUnit && !x.Equals(unit) && !x.IsInvulnerable && x.IsAlive && x.IsVisible && x.IsAlly(unit) && x.Distance(unit) < this.radiusData.GetValue(this.Level)))
            {
                damage[this.DamageType] = this.DamageData.GetValue(this.Level);
            }
            return(damage);
        }
Пример #14
0
        public override Damage GetRawDamage(Unit9 unit, float?remainingHealth = null)
        {
            var damage = new Damage();

            if (!unit.IsAlly(this.Owner))
            {
                damage[this.DamageType] = this.DamageData.GetValue(this.Level);
            }

            return(damage);
        }
Пример #15
0
        Damage IHasPassiveDamageIncrease.GetRawDamage(Unit9 unit, float?remainingHealth)
        {
            var damage = new Damage();

            if (!unit.IsBuilding && !unit.IsAlly(this.Owner))
            {
                damage[this.DamageType] = this.buffDamageData.GetValue(this.Level);
            }

            return(damage);
        }
Пример #16
0
        public override Damage GetRawDamage(Unit9 unit, float?remainingHealth = null)
        {
            var damage = new Damage();

            if (unit.IsCreep && this.IsUsable && !unit.IsAlly(this.Owner) && !this.Owner.IsIllusion)
            {
                damage[this.DamageType] =
                    this.Owner.IsRanged ? this.rangedDamageData.GetValue(this.Level) : this.DamageData.GetValue(this.Level);
            }

            return(damage);
        }
Пример #17
0
        public override Damage GetRawDamage(Unit9 unit, float?remainingHealth = null)
        {
            var damage = new Damage();

            if (!unit.IsBuilding && !unit.IsAlly(this.Owner) && this.CanBeCasted())
            {
                var crit = this.DamageData.GetValue(this.Level) / 100;
                var simpleAutoAttackDamage = unit.BaseUnit.MinimumDamage + unit.BaseUnit.BonusDamage;
                damage[this.DamageType] = simpleAutoAttackDamage * crit;
            }

            return(damage);
        }
        // Token: 0x060007CF RID: 1999 RVA: 0x00021E04 File Offset: 0x00020004
        public override Damage GetRawDamage(Unit9 unit, float?remainingHealth = null)
        {
            if (!base.IsActive || unit.IsMagicImmune || unit.IsAlly(base.Owner))
            {
                return(new Damage());
            }
            float      value      = this.DamageData.GetValue(this.Level);
            Damage     damage     = new Damage();
            DamageType damageType = this.DamageType;

            damage[damageType] = (float)((int)(Math.Min(value, unit.Mana) * this.burnMultiplierData.GetValue(this.Level)));
            return(damage);
        }
 // Token: 0x06000756 RID: 1878 RVA: 0x0002269C File Offset: 0x0002089C
 private void OnUnitAdded(Unit9 entity)
 {
     try
     {
         if (entity.IsControllable && entity.IsAlly(base.Owner) && !(entity.Name != "npc_dota_juggernaut_healing_ward"))
         {
             this.ward = entity;
         }
     }
     catch (Exception ex)
     {
         Logger.Error(ex, null);
     }
 }
Пример #20
0
        public override Damage GetRawDamage(Unit9 unit, float?remainingHealth = null)
        {
            if (!this.IsUsable || unit.IsMagicImmune || unit.IsAlly(this.Owner))
            {
                return(new Damage());
            }

            var manaDamage = this.DamageData.GetValue(this.Level);

            return(new Damage
            {
                [this.DamageType] = (int)(Math.Min(manaDamage, unit.Mana) * this.burnMultiplierData.GetValue(this.Level))
            });
        }
Пример #21
0
        public override bool CanHit(Unit9 target)
        {
            if (target.IsMagicImmune && ((target.IsEnemy(this.Owner) && !this.CanHitSpellImmuneEnemy) ||
                                         (target.IsAlly(this.Owner) && !this.CanHitSpellImmuneAlly)))
            {
                return(false);
            }

            if (this.Owner.Distance(target) > this.CastRange)
            {
                return(false);
            }

            return(true);
        }
Пример #22
0
        private void OnUnitRemoved(Unit9 entity)
        {
            try
            {
                if (!entity.IsAlly(this.Owner) || entity.Name != "npc_dota_techies_remote_mine")
                {
                    return;
                }

                this.RemoveBomb(entity);
            }
            catch (Exception e)
            {
                Logger.Error(e);
            }
        }
Пример #23
0
        private void OnUnitAdded(Unit9 entity)
        {
            try
            {
                if (!entity.IsControllable || !entity.IsAlly(this.Owner) || entity.Name != "npc_dota_juggernaut_healing_ward")
                {
                    return;
                }

                this.ward = entity;
            }
            catch (Exception e)
            {
                Logger.Error(e);
            }
        }
Пример #24
0
        private void OnUnitRemoved(Unit9 unit)
        {
            try
            {
                if (!unit.IsUnit || !unit.IsAlly(this.owner.Team))
                {
                    return;
                }

                this.allyUnits.Remove(unit);
            }
            catch (Exception e)
            {
                Logger.Error(e);
            }
        }
Пример #25
0
        // Token: 0x06000BF7 RID: 3063 RVA: 0x0002533C File Offset: 0x0002353C
        public override bool CanHit(Unit9 target)
        {
            if (target.IsMagicImmune && ((target.IsEnemy(base.Owner) && !this.CanHitSpellImmuneEnemy) || (target.IsAlly(base.Owner) && !this.CanHitSpellImmuneAlly)))
            {
                return(false);
            }
            if (base.Owner.Distance(target) > this.CastRange)
            {
                return(false);
            }
            Unit9 unit = (from x in EntityManager9.Units
                          where x.IsUnit && x.IsAlive && x.IsVisible && !x.IsMagicImmune && !x.IsInvulnerable && !x.Equals(base.Owner) && x.Distance(base.Owner) < this.RadiusData.GetValue(this.Level)
                          orderby x.Distance(base.Owner)
                          select x).FirstOrDefault <Unit9>();

            return(!(unit == null) && (!unit.IsHero || unit.IsIllusion || !unit.IsAlly(base.Owner)));
        }
Пример #26
0
        public override bool CanHit(Unit9 target)
        {
            if (target.IsMagicImmune && ((target.IsEnemy(this.Owner) && !this.CanHitSpellImmuneEnemy) ||
                                         (target.IsAlly(this.Owner) && !this.CanHitSpellImmuneAlly)))
            {
                return(false);
            }

            var predictionInput = this.GetPredictionInput(target);
            var output          = this.GetPredictionOutput(predictionInput);

            if (output.HitChance <= HitChance.Impossible)
            {
                return(false);
            }

            return(true);
        }
 // Token: 0x06000078 RID: 120 RVA: 0x00009458 File Offset: 0x00007658
 private void OnUnitAdded(Unit9 unit)
 {
     try
     {
         if (this.TargetLocked && !unit.IsAlly(this.Owner) && !(unit.Name != "npc_dota_phoenix_sun"))
         {
             Unit9 target = this.Target;
             if (((target != null) ? target.Name : null) == "npc_dota_hero_phoenix")
             {
                 this.Target = unit;
             }
         }
     }
     catch (Exception ex)
     {
         Logger.Error(ex, null);
     }
 }
 // Token: 0x06000079 RID: 121 RVA: 0x000094D4 File Offset: 0x000076D4
 private void OnUnitRemoved(Unit9 unit)
 {
     try
     {
         if (this.TargetLocked && !unit.IsAlly(this.Owner) && !(unit.Name != "npc_dota_phoenix_sun"))
         {
             Unit9 target = this.Target;
             if (target != null && target.Equals(unit))
             {
                 this.Target = EntityManager9.Heroes.FirstOrDefault((Hero9 x) => x.Id == HeroId.npc_dota_hero_phoenix);
             }
         }
     }
     catch (Exception ex)
     {
         Logger.Error(ex, null);
     }
 }
Пример #29
0
        private void OnUnitAdded(Unit9 unit)
        {
            try
            {
                if (!this.TargetLocked || unit.IsAlly(this.Owner.Team) || unit.Name != "npc_dota_phoenix_sun")
                {
                    return;
                }

                if (this.Target?.Name == nameof(HeroId.npc_dota_hero_phoenix))
                {
                    this.Target = unit;
                }
            }
            catch (Exception e)
            {
                Logger.Error(e);
            }
        }
Пример #30
0
        private void OnUnitRemoved(Unit9 unit)
        {
            try
            {
                if (!this.TargetLocked || unit.IsAlly(this.Owner.Team) || unit.Name != "npc_dota_phoenix_sun")
                {
                    return;
                }

                if (this.Target?.Equals(unit) == true)
                {
                    this.Target = EntityManager9.Heroes.FirstOrDefault(x => x.Id == HeroId.npc_dota_hero_phoenix);
                }
            }
            catch (Exception e)
            {
                Logger.Error(e);
            }
        }