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); }