Hmm I think this could work:
scar Code:
Function FurnaceBox(TPA : TPointArray): TBox;
Var
Bounds : TBox;
orangeTPA : TPointArray;
Begin
Bounds := GetTPABounds(TPA);
FindColorsTolerance(orangeTPA, FurnaceOrangeColor, Bounds.X1, Bounds.Y1, Bounds.X2, Bounds.Y2);
{HSL check:
For I := 0 To High(orangeTPA) Do
Begin
ColorToHSL(GetColor(orangeTPA[I].X, orangeTPA[I].Y), H, S, L);
If (H >= MinRange) and (H <= MaxRange) Then //can be H, S or L, even RGB
Begin
SetLength(NewTPA, Length(NewTPA) + 1);
newTPA[High(newTPA)] := TPA[I];
End;
End; }
Result := GetTPABounds(orangeTPA);
End;
But that'll work if you do an accurate HSL(or RGB) check that doesn't confuse with other items(dropped things, the kebab symbol maybe?) with a low range(less than 10). FindSymbol('furnace') should work fine too.