public bool Find(Mobile from, int[] itemIDs)
{
Map map = from.Map;
if (map == null)
return false;
IPooledEnumerable eable = map.GetItemsInRange(from.Location, 2);
foreach (Item item in eable)
{
if ((item.Z + 16) > from.Z && (from.Z + 16) > item.Z && Find(item.ItemID, itemIDs))
{
eable.Free();
return true;
}
}
eable.Free();
for (int x = -2; x <= 2; ++x)
{
for (int y = -2; y <= 2; ++y)
{
int vx = from.X + x;
int vy = from.Y + y;
StaticTile[] tiles = map.Tiles.GetStaticTiles(vx, vy, true);
for (int i = 0; i < tiles.Length; ++i)
{
int z = tiles[i].Z;
int id = tiles[i].ID;
if ((z + 16) > from.Z && (from.Z + 16) > z && Find(id, itemIDs))
return true;
}
}
}
return false;
}