It looks to me like every stable minimap color has a fixed relationship to every other stable color.
So, if you can reliably autocolor ANY stable color on the minimap, you should be able to calculate any other color there with perfect accuracy.
Let me post my latest FindRockColor as an example…
function FindRockColor: Integer;
var
GC, a, l, TestColor: integer;
var
P:array of Tpoint;
begin
GC := 6444639;
Flag;
FindColorsSpiralTolerance(MMCX,MMCY, P, GC, MMX1,MMY1,MMX2,MMY2, 50);
l:=GetArrayLength(P);
for a:= 0 to l-1 do
begin
TestColor := GetColor(P[a].x,P[a].y);
if (GetColor(P[a].x-1,P[a].y)=TestColor-789772) then
begin
Result := TestColor;
WriteLn('Rock Color = ' + IntToStr(TestColor));
Exit;
end;
end;
WriteLn('Could not find Rock Color!');
Result := 0;
end;
There are two colors right next to each other in every rock I've seen. One is light gray, the other is darker. The values for those two numbers are always 789772 units apart. This is very specific, and unique for rocks as far as I can tell.
So, if you pick a color and the color next to it is different by 789772, it's a rock. I think you can do the same thing with the new trees, or any other minimap item. Just find a stable relationship, and autocoloring should be very simple and highly accurate. Even if every tree looks slightly different, as long as they are composed of similar colors in somewhat similar distribution, you should be able to do it. Trees are pretty plentiful, and you only need to have it work on 1 tree on the screen to pick the right color, so the odds are pretty good I think.