Just some little things for results of functions, works the same but people always do the 'this code is shorter and does the same thing'...
SCAR Code:
Function CountUpColor(Color:string; Q1, U1, Q2, U2, Count1, Count2:Integer):Boolean;
var ColStats:TIntegerArray;
Begin
SetArrayLength(ColStats,2);
Case Uppercase(Color) Of
'Y': ColStats:=[1105118, 36];
'B': ColStats:=[13882894, 30];
End;
Result := InRange(CountColorTolerance(ColStats[0], Q1, U1, Q2, U2, ColStats[1]), Count1, Count2);
End;
Function OreInLast:Boolean;
Begin
{If ( GetColor(703, 458) And GetColor(702, 441) = 131072 ) Or
( GetColor(696, 436) And GetColor(708, 456) = 131072 ) Then}
Result := InvFull;
End;
Function GemThere(x1,y1,x2,y2:Integer):Boolean;
var x,y:Integer;
Begin
Result := FindDTM(Gemdtm,x,y,x1,y1,x2,y2);
End;
all of these just had if then statements to get result.
if this then
Result := true;
just little stupid things. 
for 'good/correct' coding practices, you are suppose to also put 'Result := False' at the beginning of every boolean function.