Beispiel #1
0
        /// <summary>
        ///     Process Spell Cast subscribed event function.
        /// </summary>
        /// <param name="sender"><see cref="Obj_AI_Base" /> sender</param>
        /// <param name="args">Processed Spell Cast Data</param>
        private static void OnObjAiBaseProcessSpellCast(ProcessSpellCastEventArgs args)
        {
            var sender = args.Source;

            if (!sender.IsValidTarget(false) || /* !AutoAttack.IsAutoAttack(args.SData.Name) ||*/ !sender.IsAlly())
            {
                return;
            }

            if (!(sender is IMinion) && !(sender is ITurret))
            {
                return;
            }

            var target = args.Target as IMinion;

            if (target == null)
            {
                return;
            }

            ActiveAttacks.Remove(sender.Id);
            ActiveAttacks.Add(
                sender.Id,
                new PredictedDamage(
                    sender,
                    target,
                    (int)((Game.Time * 1000) - (Game.Ping / 2)),
                    sender.AttackCastDelay * 1000,
                    (sender.AttackDelay * 1000) - (sender is ITurret ? 70 : 0),
                    sender.CombatType == GameObjectCombatType.Melee ? int.MaxValue : (int)args.SpellData.MissileSpeed,
                    sender.GetAutoAttackDamage(target)));
        }
Beispiel #2
0
 private void ProcessSpellCast(ProcessSpellCastEventArgs args)
 {
     if (this.Unit.Compare(args.Source) && Orbwalking.IsAutoAttack(args.SpellData.Name))
     {
         ProcessAfterAttack((IAttackable)args.Target);
     }
 }
Beispiel #3
0
        /// <summary>
        ///     Obj_AI_Base on DoCast subscribed event function.
        /// </summary>
        /// <param name="sender">
        ///     <see cref="Obj_AI_Base" /> sender
        /// </param>
        /// <param name="args">
        ///     <see cref="GameObjectProcessSpellCastEventArgs" /> event data
        /// </param>
        private static void OnObjAiBaseDoCast(ProcessSpellCastEventArgs args)
        {
            var sender = args.Source;

            if (sender.IsValid && sender.CombatType == GameObjectCombatType.Melee)
            {
                var casterNetworkId = sender.Id;
                if (ActiveAttacks.ContainsKey(casterNetworkId))
                {
                    ActiveAttacks[casterNetworkId].Processed = true;
                }
            }
        }
Beispiel #4
0
        private void DoCast(ProcessSpellCastEventArgs args)
        {
            if (!this.Unit.Compare(args.Source))
            {
                return;
            }

            var name = args.SpellData.Name;

            if (Orbwalking.IsAutoAttackReset(name))
            {
                this.attackT = 0f;
            }
            else if (Orbwalking.IsAutoAttack(name))
            {
                this.attackT = Game.Time - GetPingOffset();
            }
        }