ummm you could shorten your code by almost half. I dont think you really understand cases (it kinda reminds me of my first powerchopper).
Instead of doing the case tree of
willow: same code with color change
normal: same code with color change
oak: same as above;
have a variable called tree color and a variable uptext then do:
SCAR Code:
Function ChopTree: Boolean;
var TreeColor: Integer; UpText: String;
begin
case LowerCase(Players[CurrentPlayer].Strings[0]) of
'normal':
begin
TreeColor := 1234567;
UpText := 'ree';
end;
'oak':
begin
TreeColor := 9876654321;
UpText := 'ak';
end;
'willow':
begin
TreeColor := 1234598876;
UpText := 'illow';
end;
// Now do the chopping procedure but instead of the static numbers input your Variables so like
FindColorsSpiralTolerance(x, y, tpa, TreeColor {Get it?}, msx1, msy1, msx2, msy2);
if tpa > 0 then
begin
TpaShitdownhere;
if IsUpText(UpText) then
Mousethatshit;
end;
end;
I hope you kinda understood that, im kinda in a hurry sorry, pm me if you want more help/ want me to elaborate.