The Wiki for Tale 6 is in read-only mode and is available for archival and reference purposes only. Please visit the current Tale 11 Wiki in the meantime.

If you have any issues with this Wiki, please post in #wiki-editing on Discord or contact Brad in-game.

Difference between revisions of "User:Teti"

From ATITD6
Jump to navigationJump to search
 
(18 intermediate revisions by the same user not shown)
Line 1: Line 1:
 +
[[User:Teti/AT ]]
 +
 
[[User:Teti/Hookah]]
 
[[User:Teti/Hookah]]
  
Line 6: Line 8:
  
 
[[User:Teti/Beer]]
 
[[User:Teti/Beer]]
 +
 +
[[User:Teti/Paint]]
  
 
=Macros=
 
=Macros=
  
 
[[File:VineyardMacro.zip]]
 
[[File:VineyardMacro.zip]]
 +
=Chem Data RAW=
 +
 +
Royal Palm 0,00 0,00 -2,00 0,00 -1,00 0,00 0,00 -3,00
 +
Hokkaido 0,00 0,00 -2,00 3,00 -3,00 -1,00 0,00 1,00
 +
Stout Palm 0,00 0,00 0,00 -1,00 -3,00 -2,00 0,00 0,00
 +
Tapacae Miralis 1,00 0,00 0,00 -2,00 3,00 -1,00 0,00 2,00
 +
Towering Palm 1,00 -2,00 0,00 2,00 3,00 0,00 -1,00 0,00
 +
Savaka -1,00 1,00 0,00 0,00 0,00 -3,00 0,00 2,00
 +
Spindle Tree 0,00 3,00 1,00 -3,00 2,00 0,00 -2,00 -1,00
 +
Umbrella Palm 0,00 -1,00 3,00 0,00 0,00 2,00 -3,00 -2,00
 +
Red Maple 2,00 -2,00 -1,00 0,00 0,00 -3,00 0,00 0,00
 +
Kaeshra 0,00 0,00 0,00 0,00 2,00 -1,00 3,00 -2,00
 +
Mini Palmetto -2,00 0,00 -3,00 2,00 1,00 -1,00 0,00 0,00
 +
Oil Palm -3,00 1,00 -2,00 0,00 0,00 0,00 0,00 -1,00
 +
Trilobellia 0,00 1,00 0,00 3,00 0,00 0,00 0,00 -1,00
 +
Passam 0,00 -1,00 0,00 -2,00 1,00 0,00 0,00 0,00
 +
Pratyeka Tree 0,00 0,00 0,00 -2,00 -3,00 2,00 0,00 -1,00
 +
Razor Palm 1,00 0,00 0,00 -2,32 3,00 0,00 0,00 -1,00
 +
Oleaceae -2,00 0,00 0,00 0,00 -1,00 -3,00 3,00 0,00
 +
Ranyahn 3,00 -2,00 -1,00 0,00 -3,00 0,00 0,00 2,00
 +
Tiny Oil Palm 0,00 0,00 -1,00 -2,00 0,00 0,00 1,00 3,00
 +
Orrorin -2,00 0,00 0,00 -1,37 0,00 -2,41 0,00 0,00
 +
Monkey Palm 0,00 -2,00 2,00 -3,00 0,00 3,00 -1,00 0,00
 +
Miniature Fern Palm 2,00 0,00 0,00 -0,18 -2,00 -1,00 -3,00 3,00
 +
Hawthorn 0,00 3,00 -2,00 -3,00 2,00 0,00 0,00 -1,00
 +
Giant Cricklewood 0,00 1,00 0,00 -0,39 -0,37 -2,00 0,00 -1,00
 +
Fern Palm -3,00 -2,00 3,00 0,00 -1,00 0,00 0,00 1,00
 +
Elephantia 0,00 -2,00 0,00 0,39 -3,00 0,00 -1,00 2,00
 +
Cricklewood -3,00 3,00 0,00 -1,44 2,00 0,12 0,00 -2,00
 +
Coconut Palm 0,00 -1,87 -1,00 1,00 2,48 2,00 0,00 0,00
 +
Chakkanut Tree 0,00 0,00 1,00 -2,26 0,00 1,41 0,00 -1,00
 +
Cerulean Blue 0,00 3,00 0,00 1,00 -2,00 -2,44 0,00 -1,00
 +
Phoenix Palm 3,00 -1,00 0,00 -2,96 -2,00 0,00 1,00 0,00
 +
Broadleaf Palm 0,00 2,00 0,00 -1,52 -2,21 -2,00 0,00 3,00
 +
Bottle Tree 0,00 0,00 -2,00 2,86 -1,00 -3,00 1,00 0,00
 +
Bloodbark -1,94 1,00 0,00 0,10 -1,00 2,00 -3,00 0,42
 +
Beetlenut -2,00 0,47 -3,00 -0,14 0,00 1,00 -1,00 -0,45
 +
Ash Palm 0,00 -0,85 -0,46 2,94 -1,00 -2,00 -3,00 1,00
 +
Arconis -0,09 -3,00 -0,54 -0,49 2,00 0,00 0,00 1,00
 +
Anaxi 0,45 -3,00 -1,00 -1,40 3,00 0,00 -2,00 0,00
 +
Chicory -0,35 -1,00 0,00 0,61 -1,54 2,00 1,00 0,00
 +
Feather Tree -2,91 3,00 -1,00 0,99 1,61 2,00 -2,52 0,00
 +
Folded Birch -0,53 0,00 -1,00 -2,26 0,39 -2,47 0,39 0,00
 +
Windriver Palm -1,28 0,00 3,00 -1,42 -3,00 -1,24 0,00 1,00
 +
Spiked Fishtree -0,80 3,00 0,00 -0,32 -1,07 0,70 -1,25 2,00
 +
Locust Palm -0,20 0,00 -3,00 -1,02 0,55 1,30 -2,40 0,00
  
=Barley with fert=
+
==Chem helper==
 
 
 
 
-- Edit these first 2 to adjust how much is planted in a pass
 
-- May need to adjust walk_time in Barley_common.inc if you move too slowly to keep up
 
-- grids tested: 2x2, 3x3, 5x5, 6x6 (probably need 3+ dex and 600ms walk time)
 
grid_w = 5;
 
grid_h = 5;
 
watered = {};
 
 
 
loadfile("luaScripts/Flax_common.inc")();
 
loadfile("luaScripts/screen_reader_common.inc")();
 
loadfile("luaScripts/ui_utils.inc")();
 
  
function promptBarleyNumbers(is_plant)
+
{"Royal Palm","76","6 Fish, 4 Mineral","6","0","0","-2","0","-1","0","0","-3"},
scale = 1.0;
+
{"Hokkaido","2","8 Rock, 2 Wood","6","0","0","-2","3","-3","-1","0","1"},
+
{"Stout Palm","79","9 Fish, 1 Mineral","6","0","0","0","-1","-3","-2","0","0"},
local z = 0;
+
{"Tapacae Miralis","30","4 Vegetable, 6 Wood","6","1","0","0","-2","3","-1","0","2"},
local is_done = nil;
+
{"Towering Palm","67","7 Mineral, 3 Vegetable","6","1","-2","0","2","3","0","-1","0"},
local value = nil;
+
{"Savaka","78","8 Fish, 2 Mineral","6","-1","1","0","0","0","-3","0","2"},
-- Edit box and text display
+
{"Spindle Tree","17","3 Wood, 7 Worm","6","0","3","1","-3","2","0","-2","-1"},
while not is_done do
+
{"Umbrella Palm","45","5 Mineral, 5 Worm","6","0","-1","3","0","0","2","-3","-2"},
-- Put these everywhere to make sure we don't lock up with no easy way to escape!
+
{"Red Maple","2","8 Rock, 2 Wood","6","2","-2","-1","0","0","-3","0","0"},
checkBreak("disallow pause");
+
{"Kaeshra","0","10 Rock","6","0","0","0","0","2","-1","3","-2"},
+
{"Mini Palmetto","46","6 Grain, 4 Mineral","6","-2","0","-3","2","1","-1","0","0"},
lsPrint(10, 10, z, scale, scale, 0xFFFFFFff, "Choose passes and grid size");
+
{"Oil Palm","69","9 Mineral, 1 Vegetable","6","-3","1","-2","0","0","0","0","-1"},
+
{"Trilobellia","0","10 Rock","6","0","1","0","3","0","0","0","-1"},
-- lsEditBox needs a key to uniquely name this edit box
+
{"Passam","54","2 Grain, 8 Vegetable","6","0","-1","0","-2","1","0","0","0"},
--  let's just use the prompt!
+
{"Pratyeka Tree","34","4 Vegetable, 2 Wood, 4 Worm","6","0","0","0","-2","-3","2","0","-1"},
-- lsEditBox returns two different things (a state and a value)
+
{"Razor Palm","61","9 Vegetable, 1 Mineral","6","1","0","0","-2","3","0","0","-1"},
local y = 40;
+
{"Oleaceae","9","1 Rock, 9 Wood","6","-2","0","0","0","-1","-3","3","0"},
lsPrint(5, y, z, scale, scale, 0xFFFFFFff, "Passes:");
+
{"Ranyahn","16","4 Wood, 6 Worm","6","3","-2","-1","0","-3","0","0","2"},
is_done, num_loops = lsEditBox("passes",
+
{"Tiny Oil Palm","34","9 Grain, 1 Mineral","6","0","0","-1","-2","0","0","1","3"},
100, y, z, 50, 30, scale, scale,
+
{"Orrorin","40","5 Vegetable, 5 Worm","6","-2","0","0","-1","0","-3","0","0"},
0x000000ff, 5);
+
{"Monkey Palm","27","7 Grain, 3 Worm","6","0","-2","2","-3","0","3","-1","0"},
if not tonumber(num_loops) then
+
{"Miniature Fern Palm","50","8 Vegetable, 2 Wood","6","2","0","0","0","-2","-1","-3","3"},
is_done = nil;
+
{"Hawthorn","44","6 Vegetable, 4 Worm","6","0","3","-2","-3","2","0","0","-1"},
lsPrint(10, y+18, z+10, 0.7, 0.7, 0xFF2020ff, "MUST BE A NUMBER");
+
{"Giant Cricklewood","29","9 Grain, 1 Worm","6","0","1","0","0","0","-2","0","-1"},
num_loops = 1;
+
{"Fern Palm","62","2 Mineral, 8 Vegetable","6","-3","-2","3","0","-1","0","0","1"},
end
+
{"Elephantia","46","6 Grain, 4 Mineral","6","0","-2","0","0","-3","0","-1","2"},
y = y + 32;
+
{"Cricklewood","54","2 Grain, 8 Vegetable","6","-3","3","0","-1","2","0","0","-2"},
 
+
{"Coconut Palm","10","10 Wood","6","0","-2","-1","1","3","2","0","0"},
lsPrint(5, y, z, scale, scale, 0xFFFFFFff, "Grid size:");
+
{"Chakkanut Tree","57","9 Vegetable, 1 Grain","6","0","0","1","-2","0","2","0","-1"},
is_done, grid_w = lsEditBox("grid",
+
{"Cerulean Blue","34","9 Grain, 1 Mineral","6","0","3","0","1","-2","-3","0","-1"},
100, y, z, 50, 30, scale, scale,
+
{"Phoenix Palm","8","2 Rock 8 Wood","6","3","-1","0","-3","-2","0","1","0"},
0x000000ff, grid_w);
+
  {"Broadleaf Palm","30","10 Grain","6","0","2","0","-1","-3","-2","0","3"},
if not tonumber(grid_w) then
+
{"Bottle Tree","50","5 Grain, 5 Mineral","6","0","0","-2","3","-1","-3","1","0"},
is_done = nil;
+
{"Bloodbark","24","6 Worm, 4 Grain","6","-2","1","0","0","-1","2","-3","0"},
lsPrint(10, y+18, z+10, 0.7, 0.7, 0xFF2020ff, "MUST BE A NUMBER");
+
{"Beetlenut","70","10 Mineral","6","-2","0","-3","0","0","1","-1","0"},
grid_w = 1;
+
{"Ash Palm","45","5 Grain, 5 Vegetable","6","0","0","0","3","-1","-2","-3","1"},
grid_h = 1;
+
{"Arconis","34","9 Grain, 1 Mineral","6","0","-3","-1","0","2","0","0","1"},
end
+
{"Anaxi","22","2 Grain, 8 Worm","6","0","-3","-1","0","3","0","-2","0"},
grid_w = tonumber(grid_w);
+
{"Chicory","37","2 Mineral, 3 Vegetable, 5 Wood","6","0","-1","0","0","-2","2","1","0"},
grid_h = grid_w;
+
{"Feather Tree","73","3 Fish, 7 Mineral","6","-3","3","-1","0","1","2","-2","0"},
y = y + 32;
+
{"Folded Birch","82?","6Gray, 4 Mineral","6","0","0","-1","-3","1","-2","0","0"},
 
+
{"Windriver Palm","49","1 Grain, 7 Vegetable, 2 Worm","6","-1","0","3","0","-3","-2","0","1"},
if lsButtonText(170, y-32, z, 100, 0xFFFFFFff, "OK") then
 
is_done = 1;
 
end
 
 
 
if is_plant then
 
lsPrintWrapped(10, y, z+10, lsScreenX - 20, 0.7, 0.7, 0xD0D0D0ff, "This will plant and harvest a " .. grid_w .. "x" .. grid_w .. " grid of Barley " .. num_loops .. " times, requiring " .. (grid_w * grid_w) .. " raw barley and ".. (grid_w * grid_w * num_loops * 4) .. "water in jugs, doing " .. (grid_w*grid_w*num_loops) .. " harvests.");
 
else
 
lsPrintWrapped(10, y, z+10, lsScreenX - 20, 0.7, 0.7, 0xD0D0D0ff, "This will plant a " .. grid_w .. "x" .. grid_w .. " grid of Flax " .. num_loops .. " times, requiring " .. (grid_w * grid_w) .. " seeds, yielding " .. (grid_w * grid_w * num_loops) .. " seeds.");
 
end
 
 
 
if is_done and (not num_loops or not grid_w) then
 
error 'Canceled';
 
end
 
 
if lsButtonText(lsScreenX - 110, lsScreenY - 30, z, 100, 0xFFFFFFff, "End script") then
 
error "Clicked End Script button";
 
end
 
 
 
lsDoFrame();
 
lsSleep(10); -- Sleep just so we don't eat up all the CPU for no reason
 
end
 
end
 
 
 
 
 
function doit()
 
  promptBarleyNumbers(1);
 
  askForWindow("Make sure the plant barley window is pinned and you are in F8F8 cam zoomed in.  You may need to F12 at low resolutions or hide your chat window (if it starts planting and fails to move downward, it probably clicked on your chat window).  Will plant grid NE of current location.  'Plant all crops where you stand' must be ON.  'Right click pins/unpins a menu' must be ON.");
 
  lsSleep(1000);
 
  delay_time = 2000;
 
  local x = 1;
 
  local y = 1;
 
  initGlobals();
 
  -- Find the plant barley button
 
  srReadScreen();
 
  local imgBarley = "barley.png";
 
  local xyPlantBarley = srFindImage(imgBarley);
 
  if not xyPlantBarley then
 
    error 'Could not find plant window';
 
  end
 
  xyPlantBarley[0] = xyPlantBarley[0] + 5;
 
 
 
 
 
 
 
 
 
  for loop_count=1, num_loops do
 
  local start_time = lsGetTimer();
 
    harvested = 0;
 
-- Init watered array to 0
 
for y=grid_h, 1, -1 do
 
      for x=grid_w, 1, -1 do
 
        watered[x+((y-1)*grid_w)] = 1;
 
      end
 
    end
 
  -- Local variables
 
  local xyCenter = getCenterPos();
 
  local xyBarleyMenu = {};
 
  xyBarleyMenu[0] = xyCenter[0] - 43;
 
  xyBarleyMenu[1] = xyCenter[1] + 0;
 
  local dxi=1;
 
  local dt_max=grid_w;
 
  local dt=grid_w;
 
  local dx={1, 0, -1, 0};
 
  local dy={0, -1, 0, 1};
 
  local num_at_this_length = 3;
 
  local x_pos = 0;
 
  local y_pos = 0;
 
    for y=1, grid_h do
 
      for x=1, grid_w do
 
        lsPrintln('doing ' .. x .. ',' .. y .. ' of ' .. grid_w .. ',' .. grid_h);
 
        statusScreen("Planting " .. x .. ", " .. y);
 
       
 
-- Plant
 
        lsPrintln('planting ' .. xyPlantBarley[0] .. ',' .. xyPlantBarley[1]);
 
        setWaitSpot(xyBarleyMenu[0], xyBarleyMenu[1]);
 
        srClickMouseNoMove(xyPlantBarley[0], xyPlantBarley[1], 0);
 
        srSetMousePos(xyBarleyMenu[0], xyBarleyMenu[1]);
 
        waitForChange();
 
       
 
        -- Bring up menu
 
        lsPrintln('menu ' .. xyBarleyMenu[0] .. ',' .. xyBarleyMenu[1]);
 
        setWaitSpot(xyBarleyMenu[0]+5, xyBarleyMenu[1]);
 
        srClickMouse(xyBarleyMenu[0], xyBarleyMenu[1], 0);
 
        waitForChange();
 
 
 
        -- Check for window size
 
        window_w = 214;
 
        window_h = 218;
 
 
 
        -- Pin
 
        lsPrintln('pin ' .. (xyBarleyMenu[0]+5) .. ',' .. xyBarleyMenu[1]);
 
        srClickMouseNoMove(xyBarleyMenu[0]+5, xyBarleyMenu[1]+0, 1);
 
 
 
        -- Move window
 
        local pp = pinnedPos(x, y);
 
        lsPrintln('move ' .. (xyBarleyMenu[0]+5) .. ',' .. xyBarleyMenu[1] .. ' to ' .. pp[0] .. ',' .. pp[1]);
 
        drag(xyBarleyMenu[0] + 5, xyBarleyMenu[1], pp[0], pp[1], 0);
 
 
-- Add 2 water now
 
srReadScreen();
 
local barleyAddButton = srFindImageInRange("BarleyAdd.png", pp[0], pp[1], 200, 100);
 
local barleyWater = srFindImageInRange("barleyWater.png", pp[0], pp[1] - 50, 220, 150);
 
        srClickMouseNoMove(barleyAddButton[0]+8, barleyWater[1]);
 
srClickMouseNoMove(barleyAddButton[0]+8, barleyWater[1]);
 
srClickMouseNoMove(barleyAddButton[0]+8, barleyWater[1]+20);
 
srClickMouseNoMove(barleyAddButton[0]+8, barleyWater[1]+20);
 
        watered[x+((y-1)*grid_w)] = watered[x+((y-1)*grid_w)] + 2;
 
 
 
        -- move to next position
 
        if not ((x == grid_w) and (y == grid_h)) then
 
          lsPrintln('walking dx=' .. dx[dxi] .. ' dy=' .. dy[dxi]);
 
          x_pos = x_pos + dx[dxi];
 
          y_pos = y_pos + dy[dxi];
 
          srClickMouseNoMove(xyCenter[0] + walk_px_x*dx[dxi], xyCenter[1] + walk_px_y*dy[dxi], 0);
 
          lsSleep(walk_time);
 
          dt = dt - 1;
 
          if dt == 1 then
 
            dxi = dxi + 1;
 
            num_at_this_length = num_at_this_length - 1;
 
            if num_at_this_length == 0 then
 
              dt_max = dt_max - 1;
 
              num_at_this_length = 2;
 
            end
 
            if dxi == 5 then
 
              dxi = 1;
 
            end
 
            dt = dt_max;
 
          else
 
            lsPrintln('skipping walking, on last leg');
 
          end
 
        end
 
        checkBreak();
 
      end
 
end
 
 
 
    statusScreen("Refocusing windows...");
 
    -- Bring windows to front
 
    for y=grid_h, 1, -1 do
 
      for x=grid_w, 1, -1 do
 
        local rp = refreshPosUp(x, y);
 
        srClickMouseNoMove(rp[0], rp[1], 0);
 
        lsSleep(refocus_click_time);
 
      end
 
    end
 
    lsSleep(refocus_time); -- Wait for last window to bring to the foreground before clicking again
 
 
 
      -- Barley has been planted, pinned and refocused
 
   
 
      while 1 do
 
        for y=1, grid_h do
 
          for x=1, grid_w do
 
            local pp = pinnedPos(x, y);
 
            local rp = refreshPosDown(x, y);
 
            srClickMouse(rp[0],rp[1]);
 
            lsSleep(200);
 
            srReadScreen();
 
            local leftBar = srFindImageInRange("barleyBarLeft.png", pp[0], pp[1] - 50, 120, 100);
 
            if leftBar then
 
              leftBar[0] = leftBar[0] + 4;
 
            end
 
            local rightBar = srFindImageInRange("barleyBarRight.png", pp[0], pp[1] - 50, 220, 200);
 
            if rightBar then
 
              rightBar[0] = rightBar[0] + 1;
 
    end
 
            if not rightBar then
 
              error 'Could not find rightbar';
 
            end
 
            local barleyWater = srFindImageInRange("barleyWater.png", pp[0], pp[1] - 50, 220, 150);
 
            if not barleyWater then error 'Could not find water button'; end
 
            local barleyAddButton = srFindImageInRange("BarleyAdd.png", pp[0], pp[1], 200, 100);
 
            if not barleyAddButton then error 'Could not find add button'; end
 
            while 1 do
 
              if leftBar then
 
                waterBlue = 0;
 
                if rightBar then
 
                  if barleyWater then
 
                    srReadScreen();
 
                    for i=leftBar[0],rightBar[0] do
 
                      pxval = srReadPixelFromBuffer(i, barleyWater[1]);
 
                      b = (math.floor(pxval/256) % 256);
 
                      if b > 220 then
 
                        waterBlue = waterBlue + 1;
 
                      end
 
                    end
 
                  waterBlue = (waterBlue/(rightBar[0]-leftBar[0])*100);
 
                  end
 
                end
 
              end
 
            checkBreak();
 
 
            if watered[x+((y-1)*grid_w)] < 6 then
 
  statusScreen("Watering " .. x .. "," .. y .. "step " .. watered[x+((y-1)*grid_w)] .. ".");
 
              if waterBlue < 80 then
 
    if watered[x+((y-1)*grid_w)] == 0 then
 
end
 
                srClickMouseNoMove(barleyAddButton[0]+8, barleyWater[1]);
 
                srClickMouseNoMove(barleyAddButton[0]+8, barleyWater[1]+20);
 
                watered[x+((y-1)*grid_w)] = watered[x+((y-1)*grid_w)] + 1;
 
                lsSleep(100);
 
                break;
 
              end
 
            else
 
  statusScreen("Harvesting " .. x .. "," .. y .. ".");
 
              if waterBlue < 90 then
 
    srClickMouseNoMove(pp[0]+90, pp[1]+90);
 
                lsSleep(100);
 
                srClickMouseNoMove(pp[0]+180, pp[1]-25);
 
if watered[x+((y-1)*grid_w)] == 6 then
 
harvested = 1;
 
end
 
                break;
 
              end
 
            end
 
          end
 
        end
 
   
 
      end
 
  if harvested == 0 then
 
        statusScreen("Refocusing windows...");
 
        -- Bring windows to front
 
        for y=grid_h, 1, -1 do
 
          for x=grid_w, 1, -1 do
 
            local rp = refreshPosUp(x, y);
 
            srClickMouseNoMove(rp[0], rp[1], 0);
 
            lsSleep(refocus_click_time);
 
          end
 
        end
 
lsSleep(refocus_time); -- Wait for last window to bring to the foreground before clicking again
 
  else
 
  for x=1, x_pos do
 
  srClickMouseNoMove(xyCenter[0] + walk_px_x*-1, xyCenter[1], 0);
 
      lsSleep(walk_time);
 
end
 
for x=1, -y_pos do
 
  srClickMouseNoMove(xyCenter[0], xyCenter[1] + walk_px_y, 0);
 
  lsSleep(walk_time);
 
end
 
    break;
 
  end
 
end
 
local end_time = lsGetTimer();
 
statusScreen("Time taken: " .. (end_time-start_time)/1000);
 
 
  end
 
end
 

Latest revision as of 23:21, 10 April 2012

User:Teti/AT

User:Teti/Hookah

User:Teti/AlexasGarlicSpot

User:Teti/Wine

User:Teti/Beer

User:Teti/Paint

Macros

File:VineyardMacro.zip

Chem Data RAW

Royal Palm 0,00 0,00 -2,00 0,00 -1,00 0,00 0,00 -3,00 Hokkaido 0,00 0,00 -2,00 3,00 -3,00 -1,00 0,00 1,00 Stout Palm 0,00 0,00 0,00 -1,00 -3,00 -2,00 0,00 0,00 Tapacae Miralis 1,00 0,00 0,00 -2,00 3,00 -1,00 0,00 2,00 Towering Palm 1,00 -2,00 0,00 2,00 3,00 0,00 -1,00 0,00 Savaka -1,00 1,00 0,00 0,00 0,00 -3,00 0,00 2,00 Spindle Tree 0,00 3,00 1,00 -3,00 2,00 0,00 -2,00 -1,00 Umbrella Palm 0,00 -1,00 3,00 0,00 0,00 2,00 -3,00 -2,00 Red Maple 2,00 -2,00 -1,00 0,00 0,00 -3,00 0,00 0,00 Kaeshra 0,00 0,00 0,00 0,00 2,00 -1,00 3,00 -2,00 Mini Palmetto -2,00 0,00 -3,00 2,00 1,00 -1,00 0,00 0,00 Oil Palm -3,00 1,00 -2,00 0,00 0,00 0,00 0,00 -1,00 Trilobellia 0,00 1,00 0,00 3,00 0,00 0,00 0,00 -1,00 Passam 0,00 -1,00 0,00 -2,00 1,00 0,00 0,00 0,00 Pratyeka Tree 0,00 0,00 0,00 -2,00 -3,00 2,00 0,00 -1,00 Razor Palm 1,00 0,00 0,00 -2,32 3,00 0,00 0,00 -1,00 Oleaceae -2,00 0,00 0,00 0,00 -1,00 -3,00 3,00 0,00 Ranyahn 3,00 -2,00 -1,00 0,00 -3,00 0,00 0,00 2,00 Tiny Oil Palm 0,00 0,00 -1,00 -2,00 0,00 0,00 1,00 3,00 Orrorin -2,00 0,00 0,00 -1,37 0,00 -2,41 0,00 0,00 Monkey Palm 0,00 -2,00 2,00 -3,00 0,00 3,00 -1,00 0,00 Miniature Fern Palm 2,00 0,00 0,00 -0,18 -2,00 -1,00 -3,00 3,00 Hawthorn 0,00 3,00 -2,00 -3,00 2,00 0,00 0,00 -1,00 Giant Cricklewood 0,00 1,00 0,00 -0,39 -0,37 -2,00 0,00 -1,00 Fern Palm -3,00 -2,00 3,00 0,00 -1,00 0,00 0,00 1,00 Elephantia 0,00 -2,00 0,00 0,39 -3,00 0,00 -1,00 2,00 Cricklewood -3,00 3,00 0,00 -1,44 2,00 0,12 0,00 -2,00 Coconut Palm 0,00 -1,87 -1,00 1,00 2,48 2,00 0,00 0,00 Chakkanut Tree 0,00 0,00 1,00 -2,26 0,00 1,41 0,00 -1,00 Cerulean Blue 0,00 3,00 0,00 1,00 -2,00 -2,44 0,00 -1,00 Phoenix Palm 3,00 -1,00 0,00 -2,96 -2,00 0,00 1,00 0,00 Broadleaf Palm 0,00 2,00 0,00 -1,52 -2,21 -2,00 0,00 3,00 Bottle Tree 0,00 0,00 -2,00 2,86 -1,00 -3,00 1,00 0,00 Bloodbark -1,94 1,00 0,00 0,10 -1,00 2,00 -3,00 0,42 Beetlenut -2,00 0,47 -3,00 -0,14 0,00 1,00 -1,00 -0,45 Ash Palm 0,00 -0,85 -0,46 2,94 -1,00 -2,00 -3,00 1,00 Arconis -0,09 -3,00 -0,54 -0,49 2,00 0,00 0,00 1,00 Anaxi 0,45 -3,00 -1,00 -1,40 3,00 0,00 -2,00 0,00 Chicory -0,35 -1,00 0,00 0,61 -1,54 2,00 1,00 0,00 Feather Tree -2,91 3,00 -1,00 0,99 1,61 2,00 -2,52 0,00 Folded Birch -0,53 0,00 -1,00 -2,26 0,39 -2,47 0,39 0,00 Windriver Palm -1,28 0,00 3,00 -1,42 -3,00 -1,24 0,00 1,00 Spiked Fishtree -0,80 3,00 0,00 -0,32 -1,07 0,70 -1,25 2,00 Locust Palm -0,20 0,00 -3,00 -1,02 0,55 1,30 -2,40 0,00

Chem helper

{"Royal Palm","76","6 Fish, 4 Mineral","6","0","0","-2","0","-1","0","0","-3"},
{"Hokkaido","2","8 Rock, 2 Wood","6","0","0","-2","3","-3","-1","0","1"},
{"Stout Palm","79","9 Fish, 1 Mineral","6","0","0","0","-1","-3","-2","0","0"},
{"Tapacae Miralis","30","4 Vegetable, 6 Wood","6","1","0","0","-2","3","-1","0","2"},
{"Towering Palm","67","7 Mineral, 3 Vegetable","6","1","-2","0","2","3","0","-1","0"},
{"Savaka","78","8 Fish, 2 Mineral","6","-1","1","0","0","0","-3","0","2"},
{"Spindle Tree","17","3 Wood, 7 Worm","6","0","3","1","-3","2","0","-2","-1"},
{"Umbrella Palm","45","5 Mineral, 5 Worm","6","0","-1","3","0","0","2","-3","-2"},
{"Red Maple","2","8 Rock, 2 Wood","6","2","-2","-1","0","0","-3","0","0"},
{"Kaeshra","0","10 Rock","6","0","0","0","0","2","-1","3","-2"},
{"Mini Palmetto","46","6 Grain, 4 Mineral","6","-2","0","-3","2","1","-1","0","0"},
{"Oil Palm","69","9 Mineral, 1 Vegetable","6","-3","1","-2","0","0","0","0","-1"},
{"Trilobellia","0","10 Rock","6","0","1","0","3","0","0","0","-1"},
{"Passam","54","2 Grain, 8 Vegetable","6","0","-1","0","-2","1","0","0","0"},
{"Pratyeka Tree","34","4 Vegetable, 2 Wood, 4 Worm","6","0","0","0","-2","-3","2","0","-1"},
{"Razor Palm","61","9 Vegetable, 1 Mineral","6","1","0","0","-2","3","0","0","-1"},
{"Oleaceae","9","1 Rock, 9 Wood","6","-2","0","0","0","-1","-3","3","0"},
{"Ranyahn","16","4 Wood, 6 Worm","6","3","-2","-1","0","-3","0","0","2"},
{"Tiny Oil Palm","34","9 Grain, 1 Mineral","6","0","0","-1","-2","0","0","1","3"},
{"Orrorin","40","5 Vegetable, 5 Worm","6","-2","0","0","-1","0","-3","0","0"},
{"Monkey Palm","27","7 Grain, 3 Worm","6","0","-2","2","-3","0","3","-1","0"},
{"Miniature Fern Palm","50","8 Vegetable, 2 Wood","6","2","0","0","0","-2","-1","-3","3"},
{"Hawthorn","44","6 Vegetable, 4 Worm","6","0","3","-2","-3","2","0","0","-1"},
{"Giant Cricklewood","29","9 Grain, 1 Worm","6","0","1","0","0","0","-2","0","-1"},
{"Fern Palm","62","2 Mineral, 8 Vegetable","6","-3","-2","3","0","-1","0","0","1"},
{"Elephantia","46","6 Grain, 4 Mineral","6","0","-2","0","0","-3","0","-1","2"},
{"Cricklewood","54","2 Grain, 8 Vegetable","6","-3","3","0","-1","2","0","0","-2"},
{"Coconut Palm","10","10 Wood","6","0","-2","-1","1","3","2","0","0"},
{"Chakkanut Tree","57","9 Vegetable, 1 Grain","6","0","0","1","-2","0","2","0","-1"},
{"Cerulean Blue","34","9 Grain, 1 Mineral","6","0","3","0","1","-2","-3","0","-1"},
{"Phoenix Palm","8","2 Rock 8 Wood","6","3","-1","0","-3","-2","0","1","0"},
{"Broadleaf Palm","30","10 Grain","6","0","2","0","-1","-3","-2","0","3"},
{"Bottle Tree","50","5 Grain, 5 Mineral","6","0","0","-2","3","-1","-3","1","0"},
{"Bloodbark","24","6 Worm, 4 Grain","6","-2","1","0","0","-1","2","-3","0"},
{"Beetlenut","70","10 Mineral","6","-2","0","-3","0","0","1","-1","0"},
{"Ash Palm","45","5 Grain, 5 Vegetable","6","0","0","0","3","-1","-2","-3","1"},
{"Arconis","34","9 Grain, 1 Mineral","6","0","-3","-1","0","2","0","0","1"},
{"Anaxi","22","2 Grain, 8 Worm","6","0","-3","-1","0","3","0","-2","0"},
{"Chicory","37","2 Mineral, 3 Vegetable, 5 Wood","6","0","-1","0","0","-2","2","1","0"},
{"Feather Tree","73","3 Fish, 7 Mineral","6","-3","3","-1","0","1","2","-2","0"},
{"Folded Birch","82?","6Gray, 4 Mineral","6","0","0","-1","-3","1","-2","0","0"},
{"Windriver Palm","49","1 Grain, 7 Vegetable, 2 Worm","6","-1","0","3","0","-3","-2","0","1"},