コード例 #1
0
 private static void Game_OnTick(System.EventArgs args)
 {
     foreach (var unit in TrackedUnits.Where(u => u.Unit.IsChampion()))
     {
         if (unit != null && unit.Unit.IsValid && unit.Unit.IsHPBarRendered)
         {
             unit.LastVisibleTick = Core.GameTickCount;
         }
     }
 }
コード例 #2
0
        public static void Init()
        {
            foreach (var h in EntityManager.Heroes.AllHeroes)
            {
                TrackedUnits.Add(new UnitTrack(h));
            }

            Obj_AI_Base.OnBasicAttack      += Obj_AI_Base_OnBasicAttack;
            Obj_AI_Base.OnProcessSpellCast += Obj_AI_Base_OnBasicAttack;
            Game.OnTick           += Game_OnTick;
            Obj_AI_Base.OnNewPath += Obj_AI_Base_OnNewPath;
        }
コード例 #3
0
        public static bool IsAFK(this AIHeroClient target)
        {
            var unit = TrackedUnits.FirstOrDefault(s => s.Unit.IdEquals(target));

            if (unit?.Unit == null)
            {
                return(false);
            }

            if (unit.Unit.IsEnemy)
            {
                return(Core.GameTickCount - unit.LastVisibleTick > 180000f); // not visible for more than 3 minutes
            }
            return(Core.GameTickCount - unit.LastCommandTick > 5000f);       // Last command more than 5 seconds
        }
コード例 #4
0
        private static void Obj_AI_Base_OnBasicAttack(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (sender == null || args.Target == null)
            {
                return;
            }

            var unit = TrackedUnits.FirstOrDefault(s => s.Unit.IdEquals(sender));

            if (unit == null)
            {
                TrackedUnits.Add(new UnitTrack(sender));
                return;
            }

            unit.Target          = args.Target;
            unit.LastCommandTick = Core.GameTickCount;
            unit.AttackStartTick = Core.GameTickCount;
        }
コード例 #5
0
        private static void Obj_AI_Base_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
        {
            if (sender == null)
            {
                return;
            }

            var unit = TrackedUnits.FirstOrDefault(s => s.Unit.IdEquals(sender));

            if (unit == null)
            {
                TrackedUnits.Add(new UnitTrack(sender));
                return;
            }

            var validPath = args.Path.LastOrDefault().Distance(sender) > 75 + sender.BoundingRadius;

            if (validPath)
            {
                unit.LastCommandTick = Core.GameTickCount;
            }
        }
コード例 #6
0
 public static UnitTrack TrackedUnit(this Obj_AI_Base unit)
 {
     return(TrackedUnits.FirstOrDefault(u => u.Unit.IdEquals(unit)));
 }
コード例 #7
0
ファイル: BattleMovement.cs プロジェクト: NaraS91/myTRPG
 public void UntrackEnemyRange(Unit enemy)
 {
     TrackedUnits.Remove(enemy);
 }
コード例 #8
0
ファイル: BattleMovement.cs プロジェクト: NaraS91/myTRPG
 //returns newly tracked tiles
 public void TrackEnemyRange(Unit enemy)
 {
     TrackedUnits.Add(enemy);
 }