示例#1
0
        private Actor CurrentTarget()
        {
            uint   id   = 0;
            ushort hate = 0;
            Actor  tmp  = null;

            uint[] ids = new uint[mob.Hate.Keys.Count];
            mob.Hate.Keys.CopyTo(ids, 0);
            for (uint i = 0; i < mob.Hate.Keys.Count; i++)
            {
                if (hate < mob.Hate[ids[i]])
                {
                    hate = mob.Hate[ids[i]];
                    id   = ids[i];
                    tmp  = mob.Map.GetActor(id);
                    if (tmp == null)
                    {
                        mob.Hate.Remove(id);
                        id     = 0;
                        hate   = 0;
                        active = false;
                        i      = 0;
                    }
                    else
                    {
                        active = true;
                    }
                }
            }
            if (id != 0)
            {
                tmp = mob.Map.GetActor(id);
                if (tmp != null)
                {
                    if (tmp.stance == Global.STANCE.DIE)
                    {
                        mob.Hate.Remove(tmp.id);
                        id     = 0;
                        active = false;
                    }
                }
            }
            if (id == 0)
            {
                active = false;
                return(null);
            }
            if (dest != null)
            {
                if (dest.id != id)
                {
                    if (attacktask.Activated() == true)
                    {
                        attacktask.Deactivate();
                    }
                }
            }
            return(tmp);
        }