private Units GetNormalTarget()
        {
            Units        units = null;
            List <Units> list  = MapManager.Instance.EnumEnemyMapUnits(this.m_Owner.TeamType, TargetTag.HeroAndMonster).ToList <Units>();

            if (list.Count > 0)
            {
                list.Sort(new Comparison <Units>(this.SortFunc));
                foreach (Units current in list)
                {
                    if (HeroMirrorTargetingSystem.IfChooseTarget(this.m_Owner, current, 0f))
                    {
                        if (current.isHero)
                        {
                            return(current);
                        }
                        if (units == null)
                        {
                            units = current;
                        }
                    }
                }
                return(units);
            }
            return(null);
        }
        protected override bool IfNeedChangeTarget()
        {
            this.m_timer.interval = 1f;
            if (this.m_timer.CanUpdate())
            {
                return(true);
            }
            object outputTarget = base.GetOutputTarget(OutputTargetType.OutputAttackTarget);

            if (outputTarget == null)
            {
                return(true);
            }
            Units target = outputTarget as Units;
            bool  flag   = HeroMirrorTargetingSystem.IfChooseTarget(this.m_Owner, target, 0f);

            return(!flag);
        }