Example #1
0
        private static void OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
        {
            if (!args.IsDash)
            {
                return;
            }

            var hero = sender as AIHeroClient;

            if (hero != null && hero.IsValid)
            {
                var key      = DashDictionary.Keys.FirstOrDefault(o => o.NetworkId == sender.NetworkId) ?? sender;
                var dashArgs = new DashEventArgs
                {
                    StartPos  = sender.ServerPosition,
                    EndPos    = args.Path.Last(),
                    Speed     = args.Speed,
                    StartTick = Core.GameTickCount - Game.Ping
                };
                dashArgs.EndTick  = dashArgs.StartTick + (int)(1000 * args.Path.Last().Distance(sender) / 2500);
                dashArgs.Duration = dashArgs.EndTick - dashArgs.StartTick;

                DashDictionary.Remove(key);
                DashDictionary.Add(key, dashArgs);

                if (OnDash != null)
                {
                    OnDash(sender, dashArgs);
                }
            }
        }
Example #2
0
        private static void OnNewPath(NewPathEventArgs args)
        {
            if (!args.IsDash)
            {
                Storage.Remove(args.SourceId);
                return;
            }

            if (args.Source is IHero hero)
            {
                var startPos  = hero.Position;
                var endPos    = args.Path.Last();
                var startTime = Game.Time;
                var endTime   = startTime + startPos.Distance(endPos) / args.Speed;

                var dash = new DashEventArgs(args.SourceId, args.Path, args.Speed, startPos, endPos, startTime, endTime);

                Storage[args.SourceId] = dash;
                OnDash?.SafeInvoke(dash);
            }
        }
Example #3
0
 private void OnDash(Obj_AI_Base sender, DashEventArgs args)
 {
     if (sender.IsMe)
     {
         InitTime = 0;
         Target = Vector3.Zero;
     }
 }