Esempio n. 1
0
        private void OnInt32PropertyChange(Entity sender, Int32PropertyChangeEventArgs args)
        {
            if (args.NewValue <= 0 || args.NewValue > 1 || args.NewValue == args.OldValue ||
                args.PropertyName != "m_iLevel")
            {
                return;
            }

            var ability = sender as Ability;

            if (ability == null || !ability.IsValid || ability.Id < AbilityId.antimage_mana_break)
            {
                return;
            }

            var owner = ability.Owner as Hero;

            if (owner == null || !owner.IsValid || owner.IsIllusion || owner.Team != enemyTeam ||
                owner.HeroId == HeroId.npc_dota_hero_rubick)
            {
                return;
            }

            if (abilities.Contains(ability.Id))
            {
                AddPingAbility(ability);
            }
        }
Esempio n. 2
0
        private void OnVibrationCheck(Entity sender, Int32PropertyChangeEventArgs args)
        {
            if (sender != this.owner)
            {
                return;
            }

            if (args.PropertyName == "m_iRecentDamage")
            {
                if (args.NewValue > 0)
                {
                    if (!this.damageVibration)
                    {
                        this.StartVibration(1.0f);
                        this.damageVibration = true;
                    }
                }
                else
                {
                    this.StopVibration();
                    this.damageVibration = false;
                }
            }

            if (args.PropertyName == "m_iHealth")
            {
                if (args.NewValue <= 0)
                {
                    this.StartVibration(1.0f);
                }
            }

            // Log.Debug($"{args.PropertyName}: {args.OldValue} => {args.NewValue}");
        }
Esempio n. 3
0
        private void OnNetworkActivity(Entity sender, Int32PropertyChangeEventArgs args)
        {
            if (sender != Me)
            {
                return;
            }

            if (!args.PropertyName.Equals("m_networkactivity", StringComparison.InvariantCultureIgnoreCase))
            {
                return;
            }
            var order = args.NewValue;

            if (order == 1503 || order == 1504)
            {
                _config.Main.AbilitiesInCombo.Exort.UseAbility();
                _config.Main.AbilitiesInCombo.Exort.UseAbility();
                _config.Main.AbilitiesInCombo.Exort.UseAbility();
            }
            else
            {
                _config.Main.AbilitiesInCombo.Wex.UseAbility();
                _config.Main.AbilitiesInCombo.Wex.UseAbility();
                _config.Main.AbilitiesInCombo.Wex.UseAbility();
            }

            Console.WriteLine(args.NewValue);
        }
Esempio n. 4
0
        private void OnNetworkActivity(Entity sender, Int32PropertyChangeEventArgs args)
        {
            if (sender != this.Owner)
            {
                return;
            }

            if (!args.PropertyName.Equals("m_networkactivity", StringComparison.InvariantCultureIgnoreCase))
            {
                return;
            }

            var newNetworkActivity = (NetworkActivity)args.NewValue;

            switch (newNetworkActivity)
            {
            case NetworkActivity.Attack:
            case NetworkActivity.Attack2:
            case NetworkActivity.AttackEvent:
                if (this.EchoSabre?.IsValid == true && Math.Abs(this.EchoSabre.Item.Cooldown) < 0.15)
                {
                    return;
                }

                this.LastAttackTime = Game.RawGameTime - this.PingTime;
                break;
            }
        }
Esempio n. 5
0
 private void EntityOnOnInt32PropertyChange(Entity sender, Int32PropertyChangeEventArgs args)
 {
     if (args.PropertyName == "m_iTaggedAsVisibleByTeam")
     {
         var me = Shrines.Find(x => x.Unit.Equals(sender));
         if (me != null)
         {
             var newValue  = args.NewValue;
             var oldValue  = args.OldValue;
             var isVisible = newValue == 14;
             if (newValue != oldValue)
             {
                 bool visible;
                 if (!_underVision.TryGetValue(me, out visible))
                 {
                     _underVision.Add(me, isVisible);
                 }
                 else
                 {
                     _underVision[me] = isVisible;
                 }
             }
         }
     }
 }
        /// <summary>
        ///     The entity_ on int 32 property change.
        /// </summary>
        /// <param name="sender">
        ///     The sender.
        /// </param>
        /// <param name="args">
        ///     The args.
        /// </param>
        private void Entity_OnInt32PropertyChange(Entity sender, Int32PropertyChangeEventArgs args)
        {
            if (!sender.Equals(this.Unit) || args.PropertyName != "m_NetworkActivity")
            {
                return;
            }

            if (this.Unit == null || !this.Unit.IsValid)
            {
                Entity.OnInt32PropertyChange -= this.Entity_OnInt32PropertyChange;
                return;
            }

            if (!Game.IsInGame || Game.IsPaused)
            {
                return;
            }

            var newValue = (NetworkActivity)args.NewValue;
            var oldValue = (NetworkActivity)args.OldValue;

            if (newValue == this.lastUnitActivity || newValue == oldValue)
            {
                return;
            }

            var canCancel    = this.CanCancelAttack();
            var wasAttacking = false;

            if (!this.IsAttackOnCoolDown() || canCancel)
            {
                wasAttacking          = this.isAttacking;
                this.lastUnitActivity = newValue;
                this.isAttacking      = newValue == NetworkActivity.Attack || newValue == NetworkActivity.Crit ||
                                        newValue == NetworkActivity.Attack2 || newValue == NetworkActivity.AttackEvent ||
                                        newValue == NetworkActivity.AttackEventBash ||
                                        newValue == NetworkActivity.EarthshakerTotemAttack;
            }

            if (wasAttacking && canCancel && !this.isAttacking &&
                (oldValue == NetworkActivity.Attack || oldValue == NetworkActivity.Crit ||
                 oldValue == NetworkActivity.Attack2 || oldValue == NetworkActivity.AttackEvent ||
                 oldValue == NetworkActivity.AttackEventBash || oldValue == NetworkActivity.EarthshakerTotemAttack))
            {
                this.AttackEnd();
            }

            if (!this.isAttacking || (!this.isAttacking && !canCancel))
            {
                return;
            }

            this.LastUnitAttackStart = Game.RawGameTime;
            this.NextUnitAttackEnd   =
                (float)(this.LastUnitAttackStart * 1000 + UnitDatabase.GetAttackRate(this.Unit) * 1000);
            this.NextUnitAttackRelease =
                (float)(this.LastUnitAttackStart * 1000 + UnitDatabase.GetAttackPoint(this.Unit) * 1000);
            this.AttackOrderSent = false;
            this.AttackStart();
        }
Esempio n. 7
0
 public void OnInt32PropertyChange(Entity entity, Int32PropertyChangeEventArgs args)
 {
     if (args.PropertyName == "m_iHealth" && args.NewValue <= 0)
     {
         OnRemoveUnit(entity as Unit);
     }
 }
Esempio n. 8
0
        private void OnInt32PropertyChange(Entity sender, Int32PropertyChangeEventArgs args)
        {
            if (sender.Handle != manager.MyHero.Handle || args.NewValue <= 0 || args.NewValue == args.OldValue ||
                args.PropertyName != "m_iHealth" || sleeper.Sleeping)
            {
                return;
            }

            var hp           = args.NewValue;
            var hpPercentage = hp / manager.MyHero.MaximumHealth * 100;

            if (hp > menu.HpThreshold && hpPercentage > menu.HpThresholdPct)
            {
                return;
            }

            var distance = menu.EnemyDistance;

            if (distance <= 0 || !EntityManager <Hero> .Entities.Any(
                    x => x.IsValid && x.IsVisible && x.Team == manager.MyHero.EnemyTeam && !x.IsIllusion && x.IsAlive &&
                    x.Distance2D(manager.MyHero.Position) <= distance))
            {
                BuyItems();
            }
        }
Esempio n. 9
0
        private void OnNetworkActivity(Entity sender, Int32PropertyChangeEventArgs args)
        {
            if (sender != this.Owner)
            {
                return;
            }

            if (!args.PropertyName.Equals("m_networkactivity", StringComparison.InvariantCultureIgnoreCase))
            {
                return;
            }

            var newNetworkActivity = (NetworkActivity)args.NewValue;

            if (this.attackActivities.Contains(newNetworkActivity))
            {
                if (this.EchoSabre?.IsValid == true && Math.Abs(this.EchoSabre.Item.Cooldown) < 0.15)
                {
                    return;
                }

                this.LastAttackTime = Game.RawGameTime - this.PingTime;
            }
            else if (this.attackCancelActivities.Contains(newNetworkActivity))
            {
                if (!this.CanMove(Game.RawGameTime + 0.05f))
                {
                    this.LastAttackTime = 0;
                }
            }
        }
Esempio n. 10
0
        private void OnInt32PropertyChange(Entity sender, Int32PropertyChangeEventArgs args)
        {
            if (sender.Handle != manager.MyHero.Handle || args.NewValue <= 0 || args.NewValue == args.OldValue ||
                args.PropertyName != "m_iHealth")
            {
                return;
            }

            if (!manager.MyHero.CanUseItems() || !usableAbility.CanBeCasted() || manager.MyHero.HasModifier(ModifierUtils.IceBlastDebuff))
            {
                return;
            }

            if (menu.EnemySearchRange > 0 && !EntityManager <Hero> .Entities.Any(
                    x => x.IsValid && x.IsVisible && x.IsAlive && !x.IsIllusion && x.Team != manager.MyHero.Team &&
                    x.Distance2D(manager.MyHero.Position) <= menu.EnemySearchRange))
            {
                return;
            }

            var hp           = args.NewValue;
            var hpPercentage = (hp / manager.MyHero.MaximumHealth) * 100;

            if (hp <= menu.HealthThreshold || hpPercentage <= menu.HealthThresholdPct)
            {
                usableAbility.Use();
            }
        }
Esempio n. 11
0
        private void OnInt32PropertyChange(Entity sender, Int32PropertyChangeEventArgs args)
        {
            if (args.NewValue == args.OldValue || args.PropertyName != "m_iStoredRuneType")
            {
                return;
            }

            var bottle = sender as Bottle;

            if (bottle == null || !bottle.IsValid)
            {
                return;
            }

            var owner = bottle.Owner as Hero;

            if (owner == null || !owner.IsValid || owner.Team != enemyTeam)
            {
                return;
            }

            if (IsRunePingEnabledFor((RuneType)args.NewValue))
            {
                AddPingItem(bottle);
            }
        }
 /// <summary>
 ///     The entity_ on int 32 property change.
 /// </summary>
 /// <param name="sender">
 ///     The sender.
 /// </param>
 /// <param name="args">
 ///     The args.
 /// </param>
 public void Entity_OnInt32PropertyChange(Entity sender, Int32PropertyChangeEventArgs args)
 {
     // if (sender.Handle == this.Unit.UnitHandle && args.PropertyName == GlobalVariables.PropertyHealth)
     // {
     // this.Unit.Health.Current = args.NewValue;
     // }
 }
Esempio n. 13
0
        private void OnInt32PropertyChanged(Entity sender, Int32PropertyChangeEventArgs args)
        {
            if (args.OldValue.Equals(args.NewValue))
            {
                return;
            }

            var menu = mainMenu.OnChangeMenu.Int32;

            if (!menu.Enabled || menu.HeroesOnly && !(sender is Hero) ||
                menu.IgnoreUseless && Data.IgnoredInt32.Contains(args.PropertyName))
            {
                return;
            }

            const Color       Color = Color.Cyan;
            const Logger.Type Type  = Logger.Type.Int32;

            logger.Write("Int32 property changed", Type, Color, true);
            logger.Write("Sender name: " + sender.Name, Type, Color);
            logger.Write("Sender classID: " + sender.ClassId, Type, Color);
            logger.Write("Property name: " + args.PropertyName, Type, Color);
            logger.Write("Property values: " + args.OldValue + " => " + args.NewValue, Type, Color);
            logger.EmptyLine();
        }
Esempio n. 14
0
        private void Entity_OnInt32PropertyChange(Entity sender, Int32PropertyChangeEventArgs args)
        {
            if (args.NewValue.Equals(args.OldValue) || args.PropertyName == "m_flStartSequenceCycle" ||
                args.PropertyName == "m_iFoWFrameNumber" || args.PropertyName == "m_iNetTimeOfDay")
            {
                return;
            }

            if (sender is Creep)
            {
                return;
            }

            // Console.WriteLine(args.PropertyName + " " + args.NewValue);
            var propertyName = args.PropertyName;

            switch (propertyName)
            {
            default:

                // foreach (var keyValuePair in this.AbilityUnitManager.Value.Units)
                // {
                // keyValuePair.Value.DataReceiver.Entity_OnInt32PropertyChange(sender, args);
                // }
                return;

            case GlobalVariables.PropertyHealth:
                this.AbilityUnitManager.Value.Units.FirstOrDefault(x => x.Value.UnitHandle.Equals(sender.Handle))
                .Value?.DataReceiver.HealthChange(args.NewValue);
                return;
            }
        }
Esempio n. 15
0
        private void OnNetworkActivity(Entity sender, Int32PropertyChangeEventArgs args)
        {
            if (this.Crit.Ability.Level <= 0)
            {
                return;
            }

            if (sender != this.Owner)
            {
                return;
            }

            if (args.PropertyName != "m_NetworkActivity")
            {
                return;
            }

            var newNetworkActivity = (NetworkActivity)args.NewValue;

            switch (newNetworkActivity)
            {
            case NetworkActivity.Attack:
            case NetworkActivity.Attack2:
                // TODO: check for allies, buildings and wards target
                this.CurrentCritChance = Math.Min(1.0f, this.CurrentCritChance + this.CritPrd);
                break;

            case NetworkActivity.Crit:
                // Pseudo-random_distribution
                this.CurrentCritChance = this.CritPrd;
                break;
            }
        }
Esempio n. 16
0
        private void EntityOnInt32PropertyChange(Entity sender, Int32PropertyChangeEventArgs args)
        {
            if (args.PropertyName == "m_iCurrentXP")
            {
                enemies.FirstOrDefault(x => x.Handle == sender.Handle)?.SetExperience(args.OldValue, args.NewValue);
                return;
            }

            if (!menu.Enabled || args.NewValue > 0 || args.OldValue <= 0 || args.PropertyName != "m_iHealth")
            {
                return;
            }

            var creep = sender as Creep;

            if (creep == null || !creep.IsValid || creep.Team != heroTeam)
            {
                return;
            }

            var exp = creep.GetGrantedExperience();

            if (exp <= 0 || deadCreeps.ContainsKey(creep))
            {
                return;
            }

            //delay check to prevent incorrect information
            //when multiple creeps die at the same time
            deadCreeps.Add(creep, exp);
            sleeper.Sleep(150, deadCreeps);
        }
Esempio n. 17
0
        public static void OnChange(Entity sender, Int32PropertyChangeEventArgs args)
        {
            var hero = sender as Hero;

            if (hero == null)
            {
                return;
            }
            if (hero.Team != Members.MyHero.Team || hero.IsIllusion())
            {
                return;
            }
            if (args.PropertyName != "m_iTaggedAsVisibleByTeam")
            {
                return;
            }
            DelayAction.Add(50, () =>
            {
                var visible = args.NewValue == 0x1E;
                var player  = hero.Player;
                RectangleStruct st;
                if (!RectDictionary.TryGetValue(player, out st))
                {
                    var newRect =
                        new Rectangle(
                            new Vector2((float)HudInfoNew.GetTopPanelSizeX(hero), (float)HUDInfo.GetTopPanelSizeY(hero)),
                            Clr)
                    {
                        Position = HudInfoNew.GetTopPanelPosition(hero)
                    };
                    st = new RectangleStruct(newRect, eventArgs => newRect.Render());
                    RectDictionary.Add(player, st);
                    //Log.Info($"Init new player {player.Name}({hero.GetRealName()})");
                }
                var rect = st.Rect;
                var draw = st.Draw;
                if (visible)
                {
                    if (IsEnable)
                    {
                        if (!rect.IsInitialized)
                        {
                            rect.Initialize();
                            rect.Color          = Clr; //new ColorBGRA(0,155,255,10);
                            Drawing.OnEndScene += draw;
                        }
                    }
                }
                else
                {
                    if (rect.IsInitialized)
                    {
                        rect.Dispose();
                        Drawing.OnEndScene -= draw;
                    }
                }
            });
        }
        // Token: 0x060003BA RID: 954 RVA: 0x0001D300 File Offset: 0x0001B500
        private void OnInt32PropertyChange(Entity sender, Int32PropertyChangeEventArgs args)
        {
            int newValue = args.NewValue;

            if (newValue == args.OldValue)
            {
                return;
            }
            try
            {
                Unit9 unitFast = EntityManager9.GetUnitFast(sender.Handle);
                if (!(unitFast == null))
                {
                    string propertyName = args.PropertyName;
                    if (!(propertyName == "m_iHealth"))
                    {
                        if (propertyName == "m_NetworkActivity")
                        {
                            if (unitFast.IsValid)
                            {
                                if (this.attackActivities.Contains(newValue))
                                {
                                    this.AttackStarted(unitFast);
                                }
                                else
                                {
                                    this.AttackStopped(unitFast);
                                }
                            }
                        }
                    }
                    else if (newValue > 0)
                    {
                        UnitMonitor.HealthEventHandler unitHealthChange = this.UnitHealthChange;
                        if (unitHealthChange != null)
                        {
                            unitHealthChange(unitFast, (float)newValue);
                        }
                    }
                    else
                    {
                        unitFast.DeathTime = Game.RawGameTime;
                        this.AttackStopped(unitFast);
                        this.attackSleeper.Remove(unitFast.Handle);
                        UnitMonitor.EventHandler unitDied = this.UnitDied;
                        if (unitDied != null)
                        {
                            unitDied(unitFast);
                        }
                    }
                }
            }
            catch (Exception exception)
            {
                Logger.Error(exception, sender, null);
            }
        }
Esempio n. 19
0
 private void TowerOnOnFloatPropertyChange(Entity entity, Int32PropertyChangeEventArgs args)
 {
     if (args.NewValue == 0 && args.PropertyName.Equals("m_iHealth") && entity is Tower &&
         entity.Team != Config.Main.Context.Value.Owner.Team && entity.Name.Contains("tower1"))
     {
         Time = 0;
         Log.Debug($"{entity.ClassId} -> {args.PropertyName} from {args.OldValue} to {args.NewValue}");
     }
 }
Esempio n. 20
0
        private void OnInt32PropertyChange(Entity entity, Int32PropertyChangeEventArgs args)
        {
            if (args.NewValue > 0 || args.NewValue == args.OldValue || args.PropertyName != "m_iHealth")
            {
                return;
            }

            OnUnitRemoved(null, entity as Unit);
        }
Esempio n. 21
0
        private void OnInt32PropertyChange(Entity sender, Int32PropertyChangeEventArgs args)
        {
            var newValue = args.NewValue;

            if (newValue == args.OldValue)
            {
                return;
            }

            try
            {
                var unit = EntityManager9.GetUnitFast(sender.Handle);
                if (unit == null)
                {
                    return;
                }

                switch (args.PropertyName)
                {
                case "m_iHealth":
                {
                    if (newValue > 0)
                    {
                        this.UnitHealthChange?.Invoke(unit, newValue);
                        break;
                    }

                    unit.DeathTime = Game.RawGameTime;

                    this.AttackStopped(unit);
                    this.attackSleeper.Remove(unit.Handle);

                    this.UnitDied?.Invoke(unit);
                    break;
                }

                case "m_NetworkActivity":
                {
                    if (this.attackActivities.Contains(newValue))
                    {
                        this.AttackStarted(unit);
                    }
                    else
                    {
                        this.AttackStopped(unit);
                    }

                    break;
                }
                }
            }
            catch (Exception e)
            {
                Logger.Error(e, sender);
            }
        }
Esempio n. 22
0
        private async void OnInt32PropertyChange(Entity sender, Int32PropertyChangeEventArgs args)
        {
            if (sender.Handle != this.owner.HeroHandle || args.OldValue == args.NewValue || args.PropertyName != "m_iAbilityPoints")
            {
                return;
            }

            await Task.Delay(100);

            this.LearnAbility(args.NewValue);
        }
Esempio n. 23
0
File: Core.cs Progetto: Mej0/a
        private void Entity_OnInt32PropertyChange(Entity sender, Int32PropertyChangeEventArgs args)
        {
            var ability = sender as Ability;

            // check if Q,W,E has been skilled the first time
            if ((ability != null) && (args.OldValue == -1) && (ability == this.invokedBase)

                /*&& (args.PropertyName == "m_nQuasLevel" || args.PropertyName == "m_nWexLevel" || args.PropertyName == "m_nExortLevel")*/)
            {
                DelayAction.Add(250, this.CheckCombos);
            }
        }
Esempio n. 24
0
        private static void Entity_OnInt32PropertyChange(Entity sender, Int32PropertyChangeEventArgs args)
        {
            var unit = sender as Unit;

            if (unit == null)
            {
                return;
            }

            if (args.PropertyName != "m_iTaggedAsVisibleByTeam")
            {
                return;
            }

            var player = ObjectManager.LocalPlayer;

            if (player == null || player.Team == Team.Observer || sender.Team != player.Team)
            {
                return;
            }

            var visible = args.NewValue == 0x1E;

            // heroes
            if (sender is Hero && Menu.Item("heroes").GetValue <bool>())
            {
                HandleEffect(unit, visible);
            }

            // wards
            else if (IsWard(sender) && Menu.Item("wards").GetValue <bool>())
            {
                HandleEffect(unit, visible);
            }

            // mines
            else if (IsMine(sender) && Menu.Item("mines").GetValue <bool>())
            {
                HandleEffect(unit, visible);
            }

            // units
            else if (Menu.Item("units").GetValue <bool>() && IsUnit(unit))
            {
                HandleEffect(unit, visible);
            }

            // buildings
            else if (sender is Building && Menu.Item("buildings").GetValue <bool>())
            {
                HandleEffect(unit, visible);
            }
        }
Esempio n. 25
0
        private static void Entity_OnInt32PropertyChange(Entity sender, Int32PropertyChangeEventArgs args)
        {
            var hero = sender as Hero;

            if (args.PropertyName == "m_iTaggedAsVisibleByTeam" && hero != null)
            {
                var me = ObjectManager.LocalHero;

                var output =
                    $"{sender.Name}: {args.OldValue} => {args.NewValue} | IsVisibleToEnemies: {!hero.IsVisibleToEnemies} | OwnTeam: {hero.Team == me?.Team} | Me: {hero == me}";
                Console.WriteLine(output);
            }
        }
Esempio n. 26
0
        private void OnInt32PropertyChange(Entity sender, Int32PropertyChangeEventArgs args)
        {
            if (args.NewValue == args.OldValue || args.PropertyName != "m_iParity")
            {
                return;
            }

            if (sender == this.Owner)
            {
                this.items = null;
                UpdateManager.BeginInvoke(this.OnInventoryUpdate);
            }
        }
Esempio n. 27
0
        private void OnInt32PropertyChange(Entity sender, Int32PropertyChangeEventArgs args)
        {
            if (args.OldValue == args.NewValue || args.PropertyName != "m_nCourierState")
            {
                return;
            }

            var courier = sender as Courier;

            if (courier == null || !courier.IsAlive)
            {
                return;
            }

            if (bottleAbuseActive)
            {
                DisableAbuse();
            }

            if (!menu.AutoControl)
            {
                return;
            }

            var newState = (CourierState)args.NewValue;
            var oldState = (CourierState)args.OldValue;

            if (oldState != CourierState.Deliver || newState != CourierState.BackToBase)
            {
                return;
            }

            var purchaser = courier.Inventory.Items.Select(x => x.Purchaser?.Hero)
                            .OrderByDescending(x => x?.Handle == manager.MyHero.Handle)
                            .FirstOrDefault(x => x?.Team == manager.MyHero.Team);

            if (purchaser == null)
            {
                return;
            }

            if (purchaser.Handle == manager.MyHero.Handle)
            {
                courier.DeliverItems();
            }
            else
            {
                courier.Resend(purchaser);
            }
        }
Esempio n. 28
0
        private void EntityOnOnInt32PropertyChange(Entity sender, Int32PropertyChangeEventArgs args)
        {
            if (args.NewValue == args.OldValue || args.NewValue > 0 || args.PropertyName != "m_iHealth")
            {
                return;
            }

            var creep = sender as Creep;

            if (creep == null || !creep.IsValid)
            {
                return;
            }

            EvadableAbilities.RemoveAll(x => x.OwnerHandle == creep.Handle);
        }
Esempio n. 29
0
        private void OnCourierStateChange(Entity sender, Int32PropertyChangeEventArgs args)
        {
            if (args.OldValue == args.NewValue || args.PropertyName != "m_nCourierState")
            {
                return;
            }

            var courier = sender as Courier;

            if (courier == null || !courier.IsAlive)
            {
                return;
            }

            DisableCourierItemSwap();
        }
Esempio n. 30
0
        private void Int32PropertyChange(Entity sender, Int32PropertyChangeEventArgs args)
        {
            if (args.PropertyName != "m_NetworkActivity")
            {
                return;
            }

            var unit = sender as Unit;

            if (unit == null)
            {
                return;
            }

            this.Add(new AttackObject(unit, (NetworkActivity)args.NewValue));
        }
        /// <summary>
        ///     The entity_ on int 32 property change.
        /// </summary>
        /// <param name="sender">
        ///     The sender.
        /// </param>
        /// <param name="args">
        ///     The args.
        /// </param>
        private void Entity_OnInt32PropertyChange(Entity sender, Int32PropertyChangeEventArgs args)
        {
            if (!sender.Equals(this.Unit) || args.PropertyName != "m_NetworkActivity")
            {
                return;
            }

            if (this.Unit == null || !this.Unit.IsValid)
            {
                Entity.OnInt32PropertyChange -= this.Entity_OnInt32PropertyChange;
                return;
            }

            if (!Game.IsInGame || Game.IsPaused)
            {
                return;
            }

            var newValue = (NetworkActivity)args.NewValue;
            var oldValue = (NetworkActivity)args.OldValue;
            if (newValue == this.lastUnitActivity || newValue == oldValue)
            {
                return;
            }

            var canCancel = this.CanCancelAttack();
            var wasAttacking = false;
            if (!this.IsAttackOnCoolDown() || canCancel)
            {
                wasAttacking = this.isAttacking;
                this.lastUnitActivity = newValue;
                this.isAttacking = newValue == NetworkActivity.Attack || newValue == NetworkActivity.Crit
                                   || newValue == NetworkActivity.Attack2 || newValue == NetworkActivity.AttackEvent
                                   || newValue == NetworkActivity.AttackEventBash
                                   || newValue == NetworkActivity.EarthshakerTotemAttack;
            }

            if (wasAttacking && canCancel && !this.isAttacking
                && (oldValue == NetworkActivity.Attack || oldValue == NetworkActivity.Crit
                    || oldValue == NetworkActivity.Attack2 || oldValue == NetworkActivity.AttackEvent
                    || oldValue == NetworkActivity.AttackEventBash || oldValue == NetworkActivity.EarthshakerTotemAttack))
            {
                this.AttackEnd();
            }

            if (!this.isAttacking || (!this.isAttacking && !canCancel))
            {
                return;
            }

            this.LastUnitAttackStart = Game.RawGameTime;
            this.NextUnitAttackEnd =
                (float)(this.LastUnitAttackStart * 1000 + UnitDatabase.GetAttackRate(this.Unit) * 1000);
            this.NextUnitAttackRelease =
                (float)(this.LastUnitAttackStart * 1000 + UnitDatabase.GetAttackPoint(this.Unit) * 1000);
            this.AttackOrderSent = false;
            this.AttackStart();
        }
Esempio n. 32
0
 private void Entity_OnInt32PropertyChange(Entity sender, Int32PropertyChangeEventArgs args)
 {
     visionControl.OnInt32PropertyChange(sender, args);
 }