The Wiki for Tale 5 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:Anka/Macros/Flax4"

From ATITD5
Jump to navigationJump to search
(Created page with "<pre> //Anka's Flax Macro v.4.0 //This macro will plant beds for seeds. After Seeds are //done, it will plant 20 beds of flax and either keep the flax //in inventory, store fla...")
 
Line 1: Line 1:
 
<pre>
 
<pre>
//Anka's Flax Macro v.4.0
+
//Anka's Flax Macro v.4.0.1
  
 
//This macro will plant beds for seeds.  After Seeds are
 
//This macro will plant beds for seeds.  After Seeds are
Line 13: Line 13:
 
//first.
 
//first.
 
//
 
//
//Setup
+
//Setup
 
//1. Resolution 1920x1080. Have not tested with others.
 
//1. Resolution 1920x1080. Have not tested with others.
 
//2. Have 21 seeds and jugs with at least 1 jug empty.(If water is needed)
 
//2. Have 21 seeds and jugs with at least 1 jug empty.(If water is needed)
Line 92: Line 92:
 
   RipX = 0
 
   RipX = 0
 
   RipY = 0
 
   RipY = 0
 +
  SkillsX = 0
 +
  SKillsY = 0
 +
  SkillsB = 0
 
   WeedX = 1364  //741
 
   WeedX = 1364  //741
 
   WeedY = 215  //85
 
   WeedY = 215  //85
Line 130: Line 133:
 
   Dump = 0
 
   Dump = 0
 
   Rot = 0
 
   Rot = 0
   MDelay = 200
+
  RotX = 0
 +
  RotY = 0
 +
  RotB = 0
 +
  FRot = 0
 +
   MDelay = 190
 
   Water = 0
 
   Water = 0
 
   ResetX = 850
 
   ResetX = 850
Line 206: Line 213:
 
End
 
End
  
Object Skills //615, 640
+
Object Skills
   116=0,0|114=0,2|232=0,4|231=0,6
+
   234=0,0|233=0,4|227=0,6|112=0,8
   227=2,0|226=2,2|233=2,4|227=2,6
+
   231=2,2|227=2,6
   56=4,0|223=4,2|226=4,4|219=4,6
+
  234=4,2|234=4,6
   230=6,0|169=6,2|231=6,4|222=6,6
+
   113=6,0|234=6,2|234=6,4|235=6,8
   230=8,0|228=8,2|231=8,4|222=8,6
+
   228=10,0|234=10,2|172=10,4|171=10,6|231=10,8
  232=10,4|227=10,6
+
   230=12,0|57=12,2|235=12,4|230=12,6|57=12,8
 
End
 
End
  
Object Rot
+
 
   220=0,0|220=0,2|223=0,4|108=0,6
+
Object Skills2
   228=2,0|227=2,2|223=2,4|222=2,6
+
   148=2,0|148=2,2|148=2,4|148=2,6|148=2,8
   220=4,0|215=4,2|218=4,4|218=4,6
+
  227=4,0|234=4,2|231=4,4|230=4,6|228=4,8
   222=6,0|219=6,2|223=6,4|222=6,6
+
  229=6,0|230=6,2|232=6,4|235=6,6|233=6,8
   222=8,0|224=8,2|225=8,4|225=8,6
+
  225=8,0|229=8,2|225=8,4|223=8,6|222=8,8
   229=10,0|228=10,2|226=10,4|228=10,6
+
  234=10,0|233=10,4|227=10,6|112=10,8
 +
  231=12,2|227=12,6
 +
  234=14,2|234=14,6
 +
  113=16,0|234=16,2|234=16,4|235=16,8
 +
  228=20,0|234=20,2|172=20,4|171=20,6|231=20,8
 +
  230=22,0|57=22,2|235=22,4|230=22,6|57=22,8
 +
End
 +
 
 +
 
 +
Object Rot  //625, 651
 +
   148=2,0|148=2,2|148=2,4|148=2,6|148=2,8
 +
   237=4,0|236=4,2|237=4,4|236=4,6|233=4,8
 +
   238=6,0|235=6,2|231=6,4|233=6,6|227=6,8
 +
   229=8,0|229=8,2|228=8,4|226=8,6|227=8,8
 +
  231=12,2|230=12,4|230=12,6|235=12,8
 +
   56=14,0|223=14,2|55=14,4|55=14,6|226=14,8
 +
  219=16,0|223=16,2|220=16,4|222=16,6|56=16,8
 +
  223=18,0|223=18,2|227=18,8
 +
  224=20,0|223=20,4|224=20,6
 +
  213=22,0|53=22,2|211=22,4|214=22,6|53=22,8
 
End
 
End
  
Line 232: Line 258:
 
   224=10,0|217=10,2|222=10,4|229=10,6|232=10,8|248=10,10
 
   224=10,0|217=10,2|222=10,4|229=10,6|232=10,8|248=10,10
 
End
 
End
 +
 +
Object Corner //600, 462
 +
  154=0,2
 +
  148=2,2|148=2,4
 +
  148=4,2|237=4,4
 +
End
 +
 +
  
 
SetConst DumpX = {MouseX}
 
SetConst DumpX = {MouseX}
Line 426: Line 460:
 
   Delay $MDelay
 
   Delay $MDelay
 
   Keys {ESC}
 
   Keys {ESC}
  Timestamp {mousex}, {mousey}
 
 
   Delay $MDelay
 
   Delay $MDelay
    
+
   If $SkillsB = 0
  IsObject Skills at 615, 527
+
    SetConst FRot = 0
     MousePos 615, 527
+
    Set ButtonX = {MouseX}
  end
+
    Set ButtonY = {MouseY}
  IsObject Skills at 615, 543
+
     While $FRot = 0
     MousePos 615, 543
+
      MousePos $ButtonX, $ButtonY
  end
+
      IsObject Corner at {mousex}, {mousey}
  IsObject Skills at 615, 560
+
        Set FRot = 1
    MousePos 615, 560
+
      Else
  end
+
        Compute ButtonY = $ButtonY - 1
  IsObject Skills at 615, 576
+
      End
    MousePos 615, 576
+
     End
  end
+
    SetConst FRot = 0
  IsObject Skills at 615, 592
+
    While $FRot = 0
    MousePos 615, 592
+
      MousePos $ButtonX, $ButtonY
  end
+
      IsObject Skills2 at {mousex}, {mousey}
  IsObject Skills at 615, 608
+
        SetConst ButtonX = {Mousex}
    MousePos 615, 608
+
        SetConst ButtonY = {MouseY}
  end
+
        Compute ButtonX = $ButtonX + 25
  IsObject Skills at 615, 624
+
        Compute ButtonY = $ButtonY +5
    MousePos 615, 624
+
        MousePos $ButtonX, $ButtonY
  end
+
        SetConst SkillsX = $ButtonX
  IsObject Skills at 615, 640
+
        SetConst SkillsY = $ButtonY
     MousePos 615, 640
+
        SetConst SkillsB = 1
   end
+
        Delay $Mdelay
  IsObject Skills at 615, 656
+
        Rightclick
     MousePos 615, 656
+
        Delay $MDelay
  end
+
        Set FRot = 1
  IsObject Skills at 615, 673
+
      Else
     MousePos 615, 673
+
        Compute ButtonY = $ButtonY + 1
 +
      End
 +
     End
 +
   Else
 +
     MousePos $SkillsX, $SkillsY
 +
    Delay $MDelay
 +
    Rightclick
 +
     Delay $MDelay
 
   End
 
   End
 
    
 
    
   Delay $MDelay
+
   if $RotB = 0
  Rightclick
+
    SetConst FRot = 0
  Delay $MDelay
+
    Set ButtonX = {MouseX}
 
+
    Set ButtonY = {MouseY}
  IsObject Rot at 638, 608
+
    While $FRot = 0
     MousePos 638, 608
+
      MousePos $ButtonX, $ButtonY
  end
+
      IsObject Corner at {mousex}, {mousey}
  IsObject Rot at 638, 624
+
        Set FRot = 1
    MousePos 638, 624
+
      Else
  end
+
        Compute ButtonY = $ButtonY - 1
  IsObject Rot at 638, 640
+
      End
     MousePos 638, 640
+
    End
   end
+
    SetConst FRot = 0
  IsObject Rot at 638, 656
+
     While $FRot = 0
     MousePos 638, 656
+
      MousePos $ButtonX, $ButtonY
  end
+
      IsObject Rot at {mousex}, {mousey}
  IsObject Rot at 638, 673
+
        SetConst ButtonX = {Mousex}
     MousePos 638, 673
+
        SetConst ButtonY = {MouseY}
 +
        Compute ButtonX = $ButtonX + 25
 +
        Compute ButtonY = $ButtonY +5
 +
        MousePos $ButtonX, $ButtonY
 +
        SetConst RotX = $ButtonX
 +
        SetConst RotY = $ButtonY
 +
        SetConst RotB = 1
 +
        Delay $Mdelay
 +
        Rightclick
 +
        Delay $MDelay
 +
        Set FRot = 1
 +
      Else
 +
        Compute ButtonY = $ButtonY + 1
 +
      End
 +
     End
 +
   Else
 +
    stop
 +
     MousePos $RotX, $RotY
 +
    Delay $MDelay
 +
    Rightclick
 +
     Delay $MDelay
 
   End
 
   End
 
 
  Delay $MDelay
 
  Rightclick
 
  Delay $MDelay
 
 
   MousePos 961, 594
 
   MousePos 961, 594
 
   Delay $MDelay
 
   Delay $MDelay
Line 494: Line 550:
  
 
Procedure Dump
 
Procedure Dump
  MousePos $DumpX, $DumpY
+
MousePos $DumpX, $DumpY
  Delay $MDelay
+
Delay $MDelay
  Leftclick
+
Leftclick
  Delay 200
+
Delay 200
  Compute NewX = $DumpX + 10
+
Compute NewX = $DumpX + 10
  MousePos $NewX, $DumpY
+
MousePos $NewX, $DumpY
  Delay $MDelay
+
Delay $MDelay
  Rightclick
+
Rightclick
  Delay 200
+
Delay 200
  MousePos 960, 594
+
MousePos 960, 594
  Delay $MDelay
+
Delay $MDelay
  Rightclick
+
Rightclick
  Delay $MDelay
+
Delay $MDelay
 
end
 
end
  
 
Procedure MoveLeft
 
Procedure MoveLeft
  MousePos $LeftX, $LeftY
+
MousePos $LeftX, $LeftY
  Delay 350
+
Delay 350
  LeftClick
+
LeftClick
  Delay 350
+
Delay 350
  Call Plant
+
Call Plant
 
End
 
End
  
 
Procedure MoveRight
 
Procedure MoveRight
  MousePos $RightX, $RightY
+
MousePos $RightX, $RightY
  Delay 350
+
Delay 350
  LeftClick
+
LeftClick
  Delay 350
+
Delay 350
  Call Plant
+
Call Plant
 
End
 
End
  
 
Procedure Plant
 
Procedure Plant
  MousePos $XPlant, $YPlant
+
MousePos $XPlant, $YPlant
  Delay 350
+
Delay 350
  LeftClick
+
LeftClick
  Delay 350
+
Delay 350
 
End
 
End
  
 
Procedure Group
 
Procedure Group
  Call Plant
+
Call Plant
  loop 4
+
loop 4
    Call MoveLeft
+
  Call MoveLeft
  end
+
end
 
+
 
  Call MoveDown
+
Call MoveDown
 
+
 
  loop 4
+
loop 4
    Call MoveRight
+
  Call MoveRight
  end
+
end
 
End
 
End
  
 
Procedure MoveDown
 
Procedure MoveDown
  MousePos 960, 781 //572, 600 //512, 540
+
MousePos 960, 781 //572, 600 //512, 540
  Delay 350
+
Delay 350
  LeftClick
+
LeftClick
  Delay 350
+
Delay 350
  Call Plant
+
Call Plant
 
End
 
End
  
 
Procedure Weed
 
Procedure Weed
  SetConst Picked = 0
+
SetConst Picked = 0
  While $Picked = 0
+
While $Picked = 0
    MousePos $WeedX, $WeedY
+
  MousePos $WeedX, $WeedY
    Delay 100
+
  Delay 100
    Rightclick
+
  Rightclick
    Delay $MDelay
+
  Delay $MDelay
    Case
+
  Case
    When $Flax = $Weed
+
  When $Flax = $Weed
      IsObject Harvest at $ObjX, $ObjY
+
    IsObject Harvest at $ObjX, $ObjY
        Compute TempX = $WeedX + 20
+
      Compute TempX = $WeedX + 20
        Compute TempY = $WeedY - 7
+
      Compute TempY = $WeedY - 7
        MousePos $TempX, $TempY
+
      MousePos $TempX, $TempY
        Delay 200
+
      Delay 200
        Rightclick
+
      Rightclick
        Delay 100
+
      Delay 100
        SetConst Picked = 1
+
      SetConst Picked = 1
        Break
+
       Break
       End
 
    Else
 
     
 
      IsObject WeedF at $ObjX, $ObjY
 
        Compute TempX = $WeedX + 20
 
        Compute TempY = $WeedY - 7
 
        MousePos $TempX, $TempY
 
        Delay 200
 
        Rightclick
 
        Delay 100
 
        SetConst Picked = 1
 
        Break
 
      End
 
 
     End
 
     End
 +
  Else
 
      
 
      
     Compute TempX = $WeedX - 2
+
     IsObject WeedF at $ObjX, $ObjY
    MousePos $TempX, $WeedY
+
      Compute TempX = $WeedX + 20
    Delay $MDelay
+
      Compute TempY = $WeedY - 7
     Rightclick
+
      MousePos $TempX, $TempY
 +
      Delay 200
 +
      Rightclick
 +
      Delay 100
 +
      SetConst Picked = 1
 +
      Break
 +
     End
 
   End
 
   End
 +
 
 +
  Compute TempX = $WeedX - 2
 +
  MousePos $TempX, $WeedY
 +
  Delay $MDelay
 +
  Rightclick
 +
End
 
End
 
End
  
 
Procedure WeedLeft
 
Procedure WeedLeft
 +
Call Weed
 +
Loop 4
 +
  compute WeedX = $WeedX - $Mod1
 +
  Compute ObjX = $ObjX - $Mod1
 
   Call Weed
 
   Call Weed
  Loop 4
+
End
    compute WeedX = $WeedX - $Mod1
 
    Compute ObjX = $ObjX - $Mod1
 
    Call Weed
 
  End
 
 
End
 
End
  
 
Procedure WeedRight
 
Procedure WeedRight
 +
Call Weed
 +
loop 4
 +
  compute WeedX = $WeedX + $Mod1
 +
  Compute ObjX = $ObjX + $Mod1
 
   Call Weed
 
   Call Weed
  loop 4
+
end
    compute WeedX = $WeedX + $Mod1
 
    Compute ObjX = $ObjX + $Mod1
 
    Call Weed
 
  end
 
 
End
 
End
  
 
Procedure PickSeeds
 
Procedure PickSeeds
  Loop $PickX
+
Loop $PickX
 +
  MousePos $NewX, $LeftY
 +
  Delay $MDelay
 +
  SetConst Picked = 0
 +
  While $Picked = 0
 
     MousePos $NewX, $LeftY
 
     MousePos $NewX, $LeftY
 
     Delay $MDelay
 
     Delay $MDelay
     SetConst Picked = 0
+
     Rightclick
     While $Picked = 0
+
     Delay $MDelay
      MousePos $NewX, $LeftY
+
    Case
      Delay $MDelay
+
    When $Direction = 0
      Rightclick
+
      IsObject SmallH at $Res1920x1080X, $Res1920x1080Y
      Delay $MDelay
+
        Compute TempX = $NewX + 15  //1920x1080
      Case
+
        Compute TempY = $LeftY - 10 //1920x1080
      When $Direction = 0
+
        MousePos $TempX, $TempY
        IsObject SmallH at $Res1920x1080X, $Res1920x1080Y
+
       
          Compute TempX = $NewX + 15  //1920x1080
+
        Delay 100
          Compute TempY = $LeftY - 10 //1920x1080
+
        rightclick
          MousePos $TempX, $TempY
+
        Inc Picked
         
+
        Delay 1800
          Delay 100
+
        If $Rip = $Pick
          rightclick
+
          Compute TempX = $NewX + 210
          Inc Picked
 
          Delay 1800
 
          If $Rip = $Pick
 
            Compute TempX = $NewX + 210
 
            MousePos $TempX, $LeftY
 
            Delay $MDelay
 
            Rightclick
 
            Delay $MDelay
 
            Compute RipX = $TempX + 17
 
            Compute RipY = $LeftY + 22
 
            Mousepos $RipX, $RipY
 
            Delay $MDelay
 
            Rightclick  //Opens Util menu
 
            Delay $MDelay
 
            Compute RipX = $RipX + 15
 
            Compute RipY = $RipY - 25
 
            MousePos $RipX, $RipY
 
            Delay $MDelay
 
            Rightclick //Rips
 
            Delay $MDelay
 
          End
 
          Continue
 
        Else
 
          Compute TempX = $NewX - 2
 
 
           MousePos $TempX, $LeftY
 
           MousePos $TempX, $LeftY
 
           Delay $MDelay
 
           Delay $MDelay
 
           Rightclick
 
           Rightclick
 +
          Delay $MDelay
 +
          Compute RipX = $TempX + 17
 +
          Compute RipY = $LeftY + 22
 +
          Mousepos $RipX, $RipY
 +
          Delay $MDelay
 +
          Rightclick  //Opens Util menu
 +
          Delay $MDelay
 +
          Compute RipX = $RipX + 15
 +
          Compute RipY = $RipY - 25
 +
          MousePos $RipX, $RipY
 +
          Delay $MDelay
 +
          Rightclick //Rips
 +
          Delay $MDelay
 
         End
 
         End
          
+
         Continue
       When $Direction = 1
+
      Else
        Compute TextX = $NewX + 10
+
        Compute TempX = $NewX - 2
        //        Compute TextY = $LeftY - 22
+
        MousePos $TempX, $LeftY
        IsObject FlaxH1920x1080 at $TextX, $Res1920x1080Y
+
        Delay $MDelay
          Compute TempX = $NewX + 15
+
        Rightclick
          Compute TempY = $LeftY -10
+
      End
          MousePos $TempX, $TempY
+
        
          Delay 100
+
    When $Direction = 1
          rightclick
+
      Compute TextX = $NewX + 10
          Inc Picked
+
      //        Compute TextY = $LeftY - 22
          Delay 1800
+
      IsObject FlaxH1920x1080 at $TextX, $Res1920x1080Y
          If $Rip = $Pick
+
        Compute TempX = $NewX + 15
            Compute TempX = $NewX - 190
+
        Compute TempY = $LeftY -10
            MousePos $TempX, $LeftY
+
        MousePos $TempX, $TempY
            Delay $MDelay
+
        Delay 100
            Rightclick
+
        rightclick
            Delay $MDelay
+
        Inc Picked
            Compute RipX = $TempX + 17
+
        Delay 1800
            Compute RipY = $LeftY + 22
+
        If $Rip = $Pick
            Mousepos $RipX, $RipY
+
          Compute TempX = $NewX - 190
            Delay $MDelay
 
            Rightclick //Opens Util menu
 
            Delay $MDelay
 
            Compute RipX = $RipX + 15
 
            Compute RipY = $RipY - 25
 
            MousePos $RipX, $RipY
 
            Delay $MDelay
 
            Rightclick //Rips
 
            Delay $MDelay
 
          End
 
          Continue
 
        Else
 
          SetConst TempX = $NewX
 
          SetConst TempY = $LeftY
 
          Compute TempX = $NewX - 2
 
 
           MousePos $TempX, $LeftY
 
           MousePos $TempX, $LeftY
 
           Delay $MDelay
 
           Delay $MDelay
 
           Rightclick
 
           Rightclick
 +
          Delay $MDelay
 +
          Compute RipX = $TempX + 17
 +
          Compute RipY = $LeftY + 22
 +
          Mousepos $RipX, $RipY
 +
          Delay $MDelay
 +
          Rightclick //Opens Util menu
 +
          Delay $MDelay
 +
          Compute RipX = $RipX + 15
 +
          Compute RipY = $RipY - 25
 +
          MousePos $RipX, $RipY
 +
          Delay $MDelay
 +
          Rightclick //Rips
 +
          Delay $MDelay
 
         End
 
         End
 +
        Continue
 +
      Else
 +
        SetConst TempX = $NewX
 +
        SetConst TempY = $LeftY
 +
        Compute TempX = $NewX - 2
 +
        MousePos $TempX, $LeftY
 +
        Delay $MDelay
 +
        Rightclick
 
       End
 
       End
 
     End
 
     End
 
   End
 
   End
 +
End
 
End
 
End
  
 
Procedure SideStep
 
Procedure SideStep
  MousePos $SS1X, $SS1Y
+
MousePos $SS1X, $SS1Y
  Delay $MDelay
+
Delay $MDelay
  Leftclick
+
Leftclick
  Delay 2250
+
Delay 2250
  MousePos $SS2X, $SS2Y
+
MousePos $SS2X, $SS2Y
  Delay $MDelay
+
Delay $MDelay
  Leftclick
+
Leftclick
  Delay 850
+
Delay 850
 
End
 
End
  
 
Procedure Coords
 
Procedure Coords
  Bell Asterisk
+
Bell Asterisk
  Delay 10000
+
Delay 10000
  //Loadrgb {mousey}, {mousey}
+
//Loadrgb {mousey}, {mousey}
  //keys {rgbred},{rgbgreen},{rgbblue}
+
//keys {rgbred},{rgbgreen},{rgbblue}
  Keys {mousex}, {mousey}
+
Keys {mousex}, {mousey}
 
End
 
End
  
 
Procedure FindButton
 
Procedure FindButton
 +
MousePos $ButtonX, $ButtonY
 +
Delay $MDelay
 +
While $count > 295
 
   MousePos $ButtonX, $ButtonY
 
   MousePos $ButtonX, $ButtonY
   Delay $MDelay
+
   IsObject Water at {mousex}, {mousey}
  While $count > 295
+
    Set ButtonX = {mousex}
    MousePos $ButtonX, $ButtonY
+
    Set ButtonY = {mousey}
    IsObject Water at {mousex}, {mousey}
+
    Bell
      Set ButtonX = {mousex}
+
    Set Count = 294
      Set ButtonY = {mousey}
+
  Else
      Bell
+
    Compute ButtonX = $ButtonX - 1
      Set Count = 294
+
    dec count
    Else
 
      Compute ButtonX = $ButtonX - 1
 
      dec count
 
    End
 
 
   End
 
   End
 +
End
 
End
 
End
  
 
Procedure Water
 
Procedure Water
  MousePos $ButtonX, $ButtonY
+
MousePos $ButtonX, $ButtonY
  Delay 200
+
Delay 200
  Rightclick
+
Rightclick
  Delay $MDelay
+
Delay $MDelay
  MousePos 961, 594
+
MousePos 961, 594
  Delay $MDelay
+
Delay $MDelay
  Rightclick
+
Rightclick
  Delay 3000
+
Delay 3000
 
End
 
End
  
 
Procedure Zoom
 
Procedure Zoom
  MousePos 100, 20
+
MousePos 100, 20
  Delay 1000
+
Delay 1000
  MousePos 600, 600
+
MousePos 600, 600
  Delay $MDelay
+
Delay $MDelay
 
End
 
End
  
 
Procedure UnZoom
 
Procedure UnZoom
  Mousepos 989, 1079
+
Mousepos 989, 1079
  Delay 900
+
Delay 900
  Mousepos 600, 600
+
Mousepos 600, 600
  Delay $MDelay
+
Delay $MDelay
 
End
 
End
 
Bell Exclamation
 
Bell Exclamation
 
//Written with ACTool 5.4.0 by Anka
 
//Written with ACTool 5.4.0 by Anka
 
</pre>
 
</pre>

Revision as of 00:56, 28 October 2010

//Anka's Flax Macro v.4.0.1

//This macro will plant beds for seeds.  After Seeds are
//done, it will plant 20 beds of flax and either keep the flax
//in inventory, store flax into a chest, or throw flax in the water to rot.
//
//I have not played since Tale 3 and have switched monitors since then.
//This and future macros will be tailored for 1920x1080 resolution but I
//will eventually add built in resolutions for all macros.  This addition
//may take a while since I'm trying to get everything running again.  Chat me
//in game with your prefered resolution and I'll do the most popular resolutions
//first.
//
//Setup
//1. Resolution 1920x1080. Have not tested with others.
//2. Have 21 seeds and jugs with at least 1 jug empty.(If water is needed)
//3. Make sure you see the water action button in your starting location.
//3. This telling, I'm using regular sized action buttons.
//3. Pin open your planting window and drag it to the upper left corner.
//4. Make sure your ATITD window is maximized.
//4. Enter Cartagropher View and zoom all the way in.

//If you are using Win95, do not use autohide on windows taskbar.  It throws the numbers
// off.  Win& does not seem to have this problem.
//If you want to store the flax in a chest.  Click on the chest, pick stash then pin that
//window to the top half of the right side. Place your pointer on the edge of that
//window to the left of "Flax".  When stashing, the macro will click on this
//window to update it then, click on flax to dump it into the chest.  Have 1
//flax in inventory to do this.  Once you have the pointer on the edge of the
//window, alt tab to ACTool without moving the mouse and press F2 to start.
//You can move the mouse once the menu comes up.  If you are not using the dump
//feature, you can simply alt tab and press start or F2.
//If using new seeds, you can use the Dump option to store rotten flax in the same
//way.  You just can't store flax and rotten flax.  You can Rot flax and store
//rotten flax if you like.
//
//I wrote this macro being on the "West" side of water with lots of room to the West.
//It should work with water to your north also.
//
//This macro doesn't run on timers.  It uses Objects for this Tale.  1 issue that might
//come up is that the macro may run slow on older computers.  Chat me in game if you
//have problems and I can try to cut it down a bit.  It's working perfectly for me.
//
//Menu Settings
//"Job"          = Seeds, Flax or Both.  Both will grow seeds than plant enough rounds
//                 of flax to leave you with the original 21 seeds.
//"Seed Plants"  = Number of beds you want to plant for harvesting seeds.  This must
//                 be an even number.
//"Batch"        = Number of times you want to run the macro on current settings.
//"Pick Rounds"  = The number of times you want to harvest seeds from each bed.
//"Weed #"       = the number of times you need to weed flax before harvest.  This number
//                 should be set to 3 for Nile Green or 2 for most of the newer varieties.
//                 It counts the "Harvest Seeds" phase as a round.
//"Seeds / Pick" = How many seeds you get from each bed when you harvest seeds.
//"Resolution"   = This is for a future addon.
//
//
//Let me know if you have any problems.  It's good to be back and nice to see that some
//of my old macro's are still being used today. :)
//
//Finally cleaned the instructions this Tale :)  Ignore the comments in code like the one below.
//It's from the original build.  It's all set by the menu now.
//
//Enjoy!  Anka


constants
  SeedX = 2  //Set this to how many plantings - 1 per row for seeds
  Seeds = 0
  Rounds = 2
  Button = 0
  ButtonX = 475
  ButtonY = 98 //32
  Count = 475
  CenterX = 510
  CenterY = 383
  DumpX = 0
  DumpY = 0
  SubX = 20
  PickX = 0
  TempX = 0
  TempY = 0
  Left2X = 620  //119
  LeftX = 750
  LeftY = 561  //395
  RightX = 1146
  RightY = 561 //395
  Right2X = 1320
  TextX = 0
  TextY = 0
  RipX = 0
  RipY = 0
  SkillsX = 0
  SKillsY = 0
  SkillsB = 0
  WeedX = 1364  //741
  WeedY = 215  //85
  LSide1X = 415
  LSide2X = 910 //403
  LSide1Y = 780  //548
  LSide2Y = 561  //395
  RSide1X = 1415 //1011
  RSide2X = 996  //650
  RSide1Y = 331  //225
  RSide2Y = 561  //395
  RSide3X = 1230
  RSide3Y = 354
  ObjX = 1375
  ObjY = 202
  SS1X = 0
  SS2X = 0
  SS1Y = 0
  SS2Y = 0
  Mod1 = 205
  Mod2 = 291
  Mod3 = 226
  NewX = 0
  NewY = 0
  FlaxSet = 0
  XPlant = 60
  YPlant = 40  //45
  LeftStep = 756, 561  // 256, 395
  RightStep2 = 1563, 250
  Picked = 0
  Direction = 0
  Pick = 3
  Rip = 0
  Flax = 1
  Reset = 825, 113
  Weed = 0
  Job = 0
  Dump = 0
  Rot = 0
  RotX = 0
  RotY = 0
  RotB = 0
  FRot = 0
  MDelay = 190
  Water = 0
  ResetX = 850
  Res1920x1080X = 630 //686  //178
  Res1920x1080Y = 548  //548
end

Object FlaxH1920x1080old //178, 557
  228=0,10
  235=2,0|232=2,2|234=2,6|227=2,8|227=2,10
  234=4,0|230=4,2|235=4,6|225=4,8|223=4,10
  217=6,10
  222=8,0|216=8,2|219=8,4|168=8,8|222=8,10
  223=10,0|217=10,4|214=10,6|224=10,10
  220=12,0|216=12,4|214=12,6|154=12,8|214=12,10
  228=14,0|223=14,2|225=14,4|224=14,6|206=14,8|212=14,10
  217=16,0|154=16,2|207=16,4|210=16,6|210=16,8|216=16,10
  224=18,0|227=18,4|229=18,6|224=18,8|229=18,10
  220=20,0|166=20,4|227=20,6|220=20,8|220=20,10
End

Object Rip  //405, 563
  235=0,10
  235=2,2|238=2,4|237=2,6|233=2,8|235=2,10
  58=4,0|236=4,2|59=4,4|59=4,6|234=4,8|230=4,10
  232=6,0|237=6,2|236=6,4|237=6,6|57=6,8|233=6,10
  235=8,0|235=8,2|236=8,4|230=8,6|225=8,8|223=8,10
  234=10,0|231=10,2|234=10,4|235=10,6|225=10,8|222=10,10
  230=12,0|114=12,2|231=12,4|230=12,6|55=12,8|225=12,10
  235=14,0|236=14,4|234=14,6|222=14,10
  232=16,0|235=16,2|231=16,8|226=16,10
  240=18,0|239=18,2|239=18,4|239=18,6|233=18,8|226=18,10
  234=20,0|237=20,2|235=20,4|235=20,6|231=20,8|229=20,10
End

Object FlaxH1920x1080  //178,562
  235=2,0|232=2,2|234=2,6
  234=4,0|230=4,2|235=4,6
End

Object WinCheck
  148=2,0|148=2,2|148=2,4|148=2,6
  237=4,0|240=4,2|234=4,4|238=4,6
  240=6,0|242=6,2|230=6,4|237=6,6
End

Object SmallH //686, 548
  235=2,0|232=2,2|234=2,6
  234=4,0|230=4,2|235=4,6
  222=8,0|216=8,2|219=8,4
  223=10,0|217=10,4|214=10,6
  220=12,0|216=12,4|214=12,6
  228=14,0|223=14,2|225=14,4|224=14,6
  217=16,0|154=16,2|207=16,4|210=16,6
  224=18,0|227=18,4|229=18,6
  220=20,0|166=20,4|227=20,6
End

Object WeedF  //1375, 202
  59=0,0|57=0,2|173=0,4|233=0,6
  233=2,0|227=2,2|229=2,4|172=2,6
  170=4,0|54=4,2|109=4,4|222=4,6
  227=6,0|109=6,2|112=6,4|229=6,6
  220=8,0|218=8,2|219=8,4|216=8,6
  54=10,0|53=10,2|165=10,4|219=10,6
End

Object Harvest
  237=0,0|229=0,2|233=0,6
  233=2,0|227=2,2|230=2,6
  227=4,0|219=4,2|222=4,6
  227=6,0|218=6,2|224=6,4|229=6,6
  220=8,0|219=8,4|108=8,6
  218=10,0|220=10,4|219=10,6
End

Object Skills
  234=0,0|233=0,4|227=0,6|112=0,8
  231=2,2|227=2,6
  234=4,2|234=4,6
  113=6,0|234=6,2|234=6,4|235=6,8
  228=10,0|234=10,2|172=10,4|171=10,6|231=10,8
  230=12,0|57=12,2|235=12,4|230=12,6|57=12,8
End


Object Skills2
  148=2,0|148=2,2|148=2,4|148=2,6|148=2,8
  227=4,0|234=4,2|231=4,4|230=4,6|228=4,8
  229=6,0|230=6,2|232=6,4|235=6,6|233=6,8
  225=8,0|229=8,2|225=8,4|223=8,6|222=8,8
  234=10,0|233=10,4|227=10,6|112=10,8
  231=12,2|227=12,6
  234=14,2|234=14,6
  113=16,0|234=16,2|234=16,4|235=16,8
  228=20,0|234=20,2|172=20,4|171=20,6|231=20,8
  230=22,0|57=22,2|235=22,4|230=22,6|57=22,8
End


Object Rot  //625, 651
  148=2,0|148=2,2|148=2,4|148=2,6|148=2,8
  237=4,0|236=4,2|237=4,4|236=4,6|233=4,8
  238=6,0|235=6,2|231=6,4|233=6,6|227=6,8
  229=8,0|229=8,2|228=8,4|226=8,6|227=8,8
  231=12,2|230=12,4|230=12,6|235=12,8
  56=14,0|223=14,2|55=14,4|55=14,6|226=14,8
  219=16,0|223=16,2|220=16,4|222=16,6|56=16,8
  223=18,0|223=18,2|227=18,8
  224=20,0|223=20,4|224=20,6
  213=22,0|53=22,2|211=22,4|214=22,6|53=22,8
End

Object Water
  222=0,0|229=0,2|225=0,4|219=0,6|225=0,8|236=0,10
  206=2,0|191=2,2|220=2,4|223=2,6|224=2,8|250=2,10
  215=4,0|221=4,2|217=4,4|206=4,6|235=4,8|253=4,10
  191=6,0|211=6,2|222=6,4|238=6,6|245=6,8|249=6,10
  217=8,0|233=8,2|214=8,4|213=8,6|230=8,8|250=8,10
  224=10,0|217=10,2|222=10,4|229=10,6|232=10,8|248=10,10
End

Object Corner //600, 462
  154=0,2
  148=2,2|148=2,4
  148=4,2|237=4,4
End



SetConst DumpX = {MouseX}
SetConst DumpY = {MouseY}

Form Flax, Settings
  ed1=Combobox:Job:Seeds, Flax, Both              //Job Type
  ed2=Editbox:Seed Plants   (Even Number):2       //Number of beds you want to plant for seeds
  ed3=Editbox:Batch:1                             //Number of times to run Job
  ed4=Combobox:Pick Rounds:1, 2, 3, 4, 5          //Number of times to harvest seeds before ripping out beds
  ed5=Combobox:Weed #:3, 2                        //Total number to Weed and Water a variety of flax
  ed9=Editbox:Seeds / Pick:1                      //Number of seeds per picking
  ed6=CheckBox:Dump:False                         //Toggle to Dump flax in chest
  ed7=CheckBox:Rot:False                          //Toggle to Rot flax
  ed10=CheckBox:Need Water:True                   //Toggle if flax needs to be watered
  ed8=Editbox:Resolution:1920x1080                //Future Addon
end

FormLoad Flax, Flax.frm

if ShowForm Flax
  Set Seeds = Flax[ed9]
  if Flax[ed10] = True
    Set Water = 1
  Else
    Set Water = 0
  End
  If Flax[ed1] = Seeds
    Set Button = 1
  End
  Compute SeedX = Flax[ed2]/2 - 1
  Set Rounds = Flax[ed3]
  Set Pick = Flax[ed4]
  Set Weed = Flax[ed5]
  
  Case
  When Flax[ed1] = Flax
    Set Pick = 2
  End
else
  stop
end

FormSave Flax, Flax.frm

MousePos 100, 20
LeftClick
Delay 400

// test

//
Call UnZoom

Compute FlaxSet = $Pick * $Seeds - 1
Loop $Rounds
  If Flax[ed1] = Seeds or Flax[ed1] = Both
    Call Seeds
  End
  Loop $FlaxSet
    If Flax[ed1] = Flax or Flax[ed1] = Both
      Call Flax
    End
    If Flax[ed7] = True
      Call Rot
    End
    Delay 4000
    If Flax[ed6] = True
      Call Dump   //Dumps raw flax into a chest
    End
  End
End

Call Zoom

Procedure Seeds
  MousePos $LeftStep
  Leftclick
  delay 500
  Call Plant
  
  Loop $SeedX
    Call MoveLeft
  End
  
  Call MoveDown
  
  Loop $SeedX
    Call MoveRight
  End
  
  //MousePos 1230, 354 //1600, 180  //900, 220      <<<<<-----------------Fix
  //stop
  SetConst SS1X = $RSide3X
  SetConst SS1Y = $RSide3Y
  SetConst SS2X = $RSide2X
  SetConst SS2Y = $RSide2Y
  Call SideStep
  
  
  Delay $MDelay
  Leftclick
  Delay 4000
  
  Loop $Pick
    Set Rip = {loopno}
    //Check for Seeds Left
    SetConst Direction = 0
    Compute PickX = $SeedX + 1
    SetConst NewX = $Left2X
    Call PickSeeds
    //    //Move to 2nd row
    SetConst SS1X = $LSide1X
    SetConst SS1Y = $LSide1Y
    SetConst SS2X = $LSide2X
    SetConst SS2Y = $LSide2Y
    Call SideStep
    //Check for Seeds Right
    SetConst Direction = 1
    Compute NewX = $Right2X
    Call PickSeeds
    //Move to 1st Row
    SetConst SS1X = $RSide1X
    SetConst SS1Y = $RSide1Y
    SetConst SS2X = $RSide2X
    SetConst SS2Y = $RSide2Y
    Call SideStep
  End
  
  MousePos $ResetX, 570
  Delay $MDelay
  Leftclick
  delay 3000
End

Procedure Flax
  If $Water = 1
    Call FindButton
    Call Water
  End
  MousePos $LeftStep
  Leftclick
  Delay 2000
  Call Group
  
  MousePos 977, 840
  Delay $MDelay
  LeftClick
  Delay 500
  
  Call Group
  
  MousePos 564, 193
  Delay 350
  LeftClick
  Delay 3000
  
  loop $Weed //Change this number to equal how many times you have to weed
    //and or water + 1. for Old egypt and green nile this number is 3
    Set Flax = {loopno}
    Call WeedLeft
    
    compute WeedY = $WeedY + $Mod1
    Compute ObjY = $ObjY + $Mod1
    
    Call WeedRight
    
    compute WeedY = $WeedY + $Mod2
    Compute ObjY = $ObjY + $Mod2
    
    Call WeedLeft
    
    compute WeedY = $WeedY + $Mod3
    Compute ObjY = $ObjY + $Mod3
    
    Call WeedRight
    
    SetConst WeedX = 1364
    SetConst WeedY = 215
    SetConst ObjX = 1375
    SetConst ObjY = 202
    Delay 1000
  end
  
  SetConst ObjX = 1375
  SetConst Flax = 1
  MousePos $RightStep2
  Leftclick
  Delay 3500
End

Procedure Rot
  MousePos 600, 600
  Delay $MDelay
  Keys {ESC}
  Delay $MDelay
  If $SkillsB = 0
    SetConst FRot = 0
    Set ButtonX = {MouseX}
    Set ButtonY = {MouseY}
    While $FRot = 0
      MousePos $ButtonX, $ButtonY
      IsObject Corner at {mousex}, {mousey}
        Set FRot = 1
      Else
        Compute ButtonY = $ButtonY - 1
      End
    End
    SetConst FRot = 0
    While $FRot = 0
      MousePos $ButtonX, $ButtonY
      IsObject Skills2 at {mousex}, {mousey}
        SetConst ButtonX = {Mousex}
        SetConst ButtonY = {MouseY}
        Compute ButtonX = $ButtonX + 25
        Compute ButtonY = $ButtonY +5
        MousePos $ButtonX, $ButtonY
        SetConst SkillsX = $ButtonX
        SetConst SkillsY = $ButtonY
        SetConst SkillsB = 1
        Delay $Mdelay
        Rightclick
        Delay $MDelay
        Set FRot = 1
      Else
        Compute ButtonY = $ButtonY + 1
      End
    End
  Else
    MousePos $SkillsX, $SkillsY
    Delay $MDelay
    Rightclick
    Delay $MDelay
  End
  
  if $RotB = 0
    SetConst FRot = 0
    Set ButtonX = {MouseX}
    Set ButtonY = {MouseY}
    While $FRot = 0
      MousePos $ButtonX, $ButtonY
      IsObject Corner at {mousex}, {mousey}
        Set FRot = 1
      Else
        Compute ButtonY = $ButtonY - 1
      End
    End
    SetConst FRot = 0
    While $FRot = 0
      MousePos $ButtonX, $ButtonY
      IsObject Rot at {mousex}, {mousey}
        SetConst ButtonX = {Mousex}
        SetConst ButtonY = {MouseY}
        Compute ButtonX = $ButtonX + 25
        Compute ButtonY = $ButtonY +5
        MousePos $ButtonX, $ButtonY
        SetConst RotX = $ButtonX
        SetConst RotY = $ButtonY
        SetConst RotB = 1
        Delay $Mdelay
        Rightclick
        Delay $MDelay
        Set FRot = 1
      Else
        Compute ButtonY = $ButtonY + 1
      End
    End
  Else
    stop
    MousePos $RotX, $RotY
    Delay $MDelay
    Rightclick
    Delay $MDelay
  End
  MousePos 961, 594
  Delay $MDelay
  Rightclick
  Delay $MDelay
  MousePos 959, 651
  Delay $MDelay
  Rightclick
  Delay $MDelay
End

Procedure Dump
MousePos $DumpX, $DumpY
Delay $MDelay
Leftclick
Delay 200
Compute NewX = $DumpX + 10
MousePos $NewX, $DumpY
Delay $MDelay
Rightclick
Delay 200
MousePos 960, 594
Delay $MDelay
Rightclick
Delay $MDelay
end

Procedure MoveLeft
MousePos $LeftX, $LeftY
Delay 350
LeftClick
Delay 350
Call Plant
End

Procedure MoveRight
MousePos $RightX, $RightY
Delay 350
LeftClick
Delay 350
Call Plant
End

Procedure Plant
MousePos $XPlant, $YPlant
Delay 350
LeftClick
Delay 350
End

Procedure Group
Call Plant
loop 4
  Call MoveLeft
end

Call MoveDown

loop 4
  Call MoveRight
end
End

Procedure MoveDown
MousePos 960, 781 //572, 600 //512, 540
Delay 350
LeftClick
Delay 350
Call Plant
End

Procedure Weed
SetConst Picked = 0
While $Picked = 0
  MousePos $WeedX, $WeedY
  Delay 100
  Rightclick
  Delay $MDelay
  Case
  When $Flax = $Weed
    IsObject Harvest at $ObjX, $ObjY
      Compute TempX = $WeedX + 20
      Compute TempY = $WeedY - 7
      MousePos $TempX, $TempY
      Delay 200
      Rightclick
      Delay 100
      SetConst Picked = 1
      Break
    End
  Else
    
    IsObject WeedF at $ObjX, $ObjY
      Compute TempX = $WeedX + 20
      Compute TempY = $WeedY - 7
      MousePos $TempX, $TempY
      Delay 200
      Rightclick
      Delay 100
      SetConst Picked = 1
      Break
    End
  End
  
  Compute TempX = $WeedX - 2
  MousePos $TempX, $WeedY
  Delay $MDelay
  Rightclick
End
End

Procedure WeedLeft
Call Weed
Loop 4
  compute WeedX = $WeedX - $Mod1
  Compute ObjX = $ObjX - $Mod1
  Call Weed
End
End

Procedure WeedRight
Call Weed
loop 4
  compute WeedX = $WeedX + $Mod1
  Compute ObjX = $ObjX + $Mod1
  Call Weed
end
End

Procedure PickSeeds
Loop $PickX
  MousePos $NewX, $LeftY
  Delay $MDelay
  SetConst Picked = 0
  While $Picked = 0
    MousePos $NewX, $LeftY
    Delay $MDelay
    Rightclick
    Delay $MDelay
    Case
    When $Direction = 0
      IsObject SmallH at $Res1920x1080X, $Res1920x1080Y
        Compute TempX = $NewX + 15  //1920x1080
        Compute TempY = $LeftY - 10 //1920x1080
        MousePos $TempX, $TempY
        
        Delay 100
        rightclick
        Inc Picked
        Delay 1800
        If $Rip = $Pick
          Compute TempX = $NewX + 210
          MousePos $TempX, $LeftY
          Delay $MDelay
          Rightclick
          Delay $MDelay
          Compute RipX = $TempX + 17
          Compute RipY = $LeftY + 22
          Mousepos $RipX, $RipY
          Delay $MDelay
          Rightclick  //Opens Util menu
          Delay $MDelay
          Compute RipX = $RipX + 15
          Compute RipY = $RipY - 25
          MousePos $RipX, $RipY
          Delay $MDelay
          Rightclick //Rips
          Delay $MDelay
        End
        Continue
      Else
        Compute TempX = $NewX - 2
        MousePos $TempX, $LeftY
        Delay $MDelay
        Rightclick
      End
      
    When $Direction = 1
      Compute TextX = $NewX + 10
      //        Compute TextY = $LeftY - 22
      IsObject FlaxH1920x1080 at $TextX, $Res1920x1080Y
        Compute TempX = $NewX + 15
        Compute TempY = $LeftY -10
        MousePos $TempX, $TempY
        Delay 100
        rightclick
        Inc Picked
        Delay 1800
        If $Rip = $Pick
          Compute TempX = $NewX - 190
          MousePos $TempX, $LeftY
          Delay $MDelay
          Rightclick
          Delay $MDelay
          Compute RipX = $TempX + 17
          Compute RipY = $LeftY + 22
          Mousepos $RipX, $RipY
          Delay $MDelay
          Rightclick //Opens Util menu
          Delay $MDelay
          Compute RipX = $RipX + 15
          Compute RipY = $RipY - 25
          MousePos $RipX, $RipY
          Delay $MDelay
          Rightclick //Rips
          Delay $MDelay
        End
        Continue
      Else
        SetConst TempX = $NewX
        SetConst TempY = $LeftY
        Compute TempX = $NewX - 2
        MousePos $TempX, $LeftY
        Delay $MDelay
        Rightclick
      End
    End
  End
End
End

Procedure SideStep
MousePos $SS1X, $SS1Y
Delay $MDelay
Leftclick
Delay 2250
MousePos $SS2X, $SS2Y
Delay $MDelay
Leftclick
Delay 850
End

Procedure Coords
Bell Asterisk
Delay 10000
//Loadrgb {mousey}, {mousey}
//keys {rgbred},{rgbgreen},{rgbblue}
Keys {mousex}, {mousey}
End

Procedure FindButton
MousePos $ButtonX, $ButtonY
Delay $MDelay
While $count > 295
  MousePos $ButtonX, $ButtonY
  IsObject Water at {mousex}, {mousey}
    Set ButtonX = {mousex}
    Set ButtonY = {mousey}
    Bell
    Set Count = 294
  Else
    Compute ButtonX = $ButtonX - 1
    dec count
  End
End
End

Procedure Water
MousePos $ButtonX, $ButtonY
Delay 200
Rightclick
Delay $MDelay
MousePos 961, 594
Delay $MDelay
Rightclick
Delay 3000
End

Procedure Zoom
MousePos 100, 20
Delay 1000
MousePos 600, 600
Delay $MDelay
End

Procedure UnZoom
Mousepos 989, 1079
Delay 900
Mousepos 600, 600
Delay $MDelay
End
Bell Exclamation
//Written with ACTool 5.4.0 by Anka