private Entity FindQuest()
{
Entity ret = null;
try
{
float bestScore = 0;
foreach (var i in Owner.Quests.Values
.OrderBy(quest => MathsUtils.DistSqr(quest.X, quest.Y, X, Y)))
{
if (i.ObjectDesc == null || !i.ObjectDesc.Quest) continue;
Tuple<int, int, int> x;
if (!QuestDat.TryGetValue(i.ObjectDesc.ObjectId, out x)) continue;
if ((Level >= x.Item2 && Level <= x.Item3))
{
var score = (20 - Math.Abs((i.ObjectDesc.Level ?? 0) - Level))*x.Item1 -
//priority * level diff
Dist(this, i)/100; //minus 1 for every 100 tile distance
if (score > bestScore)
{
bestScore = score;
ret = i;
}
}
}
}
catch
{
}
return ret;
}