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/Veggies"

From ATITD5
Jump to navigationJump to search
(Created page with "<pre> //Veggie Macro // //This macro will plant Cabbage, Carrots, Garlic, Leeks, and Onions. This was my private //macro in Tale 3 mainly due to no other macro growing cabbage ...")
 
 
Line 32: Line 32:
  
 
Constants
 
Constants
 +
  dave = 0
 
   Loops = 0
 
   Loops = 0
 
   Water = 5
 
   Water = 5
   Num = 4
+
   X1 = 0
 +
  Y1 = 0
 +
  NumX = 4
 +
  NumY = 0
 
   NewX = 0
 
   NewX = 0
 
   NewY = 0
 
   NewY = 0
Line 51: Line 55:
 
   ResetY = 392
 
   ResetY = 392
 
   //Cabbage
 
   //Cabbage
   CabSX = 32
+
   CabSX = 50
   CabSY = 58
+
   CabSY = 66
 
   CabTopAdd = 4
 
   CabTopAdd = 4
 
   CabBXSM = 41
 
   CabBXSM = 41
Line 112: Line 116:
 
   GarD = 0
 
   GarD = 0
 
   //Leeks
 
   //Leeks
   LeekSX = 39
+
   LeekSX = 49
   LeekSY = 35
+
   LeekSY = 48
 
   LeekBXSM = 41
 
   LeekBXSM = 41
 
   LeekCXSM = 57
 
   LeekCXSM = 57
Line 140: Line 144:
 
   LeekDY = 0
 
   LeekDY = 0
 
   //Carrots
 
   //Carrots
   CarSX = 25
+
   CarSX = 12
   CarSY = 42
+
   CarSY = 38
 
   CarAYSM = 1
 
   CarAYSM = 1
 
   CarBXSM = 41
 
   CarBXSM = 41
   CarCXSM = 45
+
   CarCXSM = 48
   CarCYSM = 62
+
   CarCYSM = 74
   CarDXSM = 13
+
   CarDXSM = 23
   CarDYSM = 57
+
   CarDYSM = 58
 
   CarAXadj = 3
 
   CarAXadj = 3
 
   CarAYadj = 5
 
   CarAYadj = 5
 
   CarBXadj = 3
 
   CarBXadj = 3
 
   CarBYadj = 5
 
   CarBYadj = 5
   CarCXadj = 6
+
   CarCXadj = 5
   CarCYadj = 6
+
   CarCYadj = 10
   CarDXadj = 5
+
   CarDXadj = 10
   CarDYadj = 2
+
   CarDYadj = 4
 
   CarA = 0
 
   CarA = 0
 
   CarB = 0
 
   CarB = 0
Line 169: Line 173:
 
   CarDY = 0
 
   CarDY = 0
 
   //Onions
 
   //Onions
   Ox = 495
+
   Ox = 0
   Oy = 380
+
   Oy = 0
 
   OStep = 41
 
   OStep = 41
 +
  ODWX = 169
 +
  ODWY = 0
 
   ODragX = 4
 
   ODragX = 4
 
   ODragY = 90
 
   ODragY = 90
 +
  ODragYAdd = 60
 +
  OSetWinX = 20
 
   OWX = 50
 
   OWX = 50
 
   OWY = 120
 
   OWY = 120
 +
  OCal = 0
 +
  OJ5 = 0
 +
  OJ10 = 0
 +
  OJ15 = 0
 +
  OJ20 = 0
 +
  OPRow = 0
 +
  OFPX = 0
 +
  OFPY = 0
 
   MoveLeft = 35, 96
 
   MoveLeft = 35, 96
 
   MoveRight = 82, 96
 
   MoveRight = 82, 96
Line 202: Line 218:
 
   WDelay = 0
 
   WDelay = 0
 
   MDelay = 100
 
   MDelay = 100
 +
  M2Delay = 200
 
   SDelay = 500
 
   SDelay = 500
 +
  OSx = 35
 +
  OSy = 10
 
   FO = 0
 
   FO = 0
 
   FPX = 0
 
   FPX = 0
 
   FPY = 0
 
   FPY = 0
 
   Close = 0
 
   Close = 0
   OPinX = 170
+
   OPinX = 172
   OPinY = 88
+
   OPinY = 31
 
   PinX = 170
 
   PinX = 170
 
   PinY = 28
 
   PinY = 28
 
   Sow = 50, 40
 
   Sow = 50, 40
 
   Res = 0
 
   Res = 0
 +
  Aquaduct = 0
 
End
 
End
  
Line 227: Line 247:
 
   148=2,0|148=2,2|148=2,4|148=2,6|148=2,8
 
   148=2,0|148=2,2|148=2,4|148=2,6|148=2,8
 
End
 
End
 +
 +
SetConst WaterX = {MouseX}
 +
SetConst WaterY = {MouseY}
  
 
Form Veggie, Settings
 
Form Veggie, Settings
Line 232: Line 255:
 
   ed2=Editbox:Batch:1
 
   ed2=Editbox:Batch:1
 
   ed3=Checkbox:Right Action Buttons?:False
 
   ed3=Checkbox:Right Action Buttons?:False
 +
  ed5=Checkbox:Aquaduct?:False
 +
  ed6=Checkbox:Venery?:False
 +
  ed7=Editbox:Mouse Delay:100
 
   ed4=Combobox:Resolution:1024x768, 1280x1024, 1360x768, 1920x1080
 
   ed4=Combobox:Resolution:1024x768, 1280x1024, 1360x768, 1920x1080
 
end
 
end
Line 245: Line 271:
 
   End
 
   End
 
   Set Res = Veggie[ed4]
 
   Set Res = Veggie[ed4]
 +
  if Veggie[ed5] = True
 +
    SetConst Aquaduct = 1
 +
  End
 
else
 
else
 
   stop
 
   stop
Line 283: Line 312:
  
 
Call Resolution
 
Call Resolution
call Findbutton
+
if Veggie[ed6] = True
call water
+
  Call Venery
 +
End
 +
 
 +
if $Aquaduct = 0
 +
  call Findbutton
 +
  call water
 +
else
 +
  Call Aqua
 +
End
 +
 
 
Call Veggie[ed1]
 
Call Veggie[ed1]
  
Line 329: Line 367:
 
     Compute LeekDX = $LeekAX + $LeekDXSM
 
     Compute LeekDX = $LeekAX + $LeekDXSM
 
     Compute LeekDY = $LeekAY + $LeekDYSM
 
     Compute LeekDY = $LeekAY + $LeekDYSM
    Timestamp $TopX, $TopY
 
   
 
 
     Call Build
 
     Call Build
 
      
 
      
Line 350: Line 386:
 
     Call MoveDown
 
     Call MoveDown
 
     Call Build
 
     Call Build
 
+
   
 
     While $LeekA < 5 or $LeekB < 5 or $LeekC < 5 or $LeekD < 5
 
     While $LeekA < 5 or $LeekB < 5 or $LeekC < 5 or $LeekD < 5
 
       If $LeekA < 5
 
       If $LeekA < 5
Line 376: Line 412:
 
       End
 
       End
 
       Delay 1000
 
       Delay 1000
 +
     
 
     End
 
     End
      
+
     If {loopno} <> $Loops
 +
      if $Aquaduct = 0
 +
        Call Water
 +
      else
 +
        Call Aqua
 +
      End
 +
    End
 +
    SetConst LeekAX = 0
 +
    SetConst LeekAY = 0
 
     SetConst LeekA = 0
 
     SetConst LeekA = 0
 
     SetConst LeekB = 0
 
     SetConst LeekB = 0
 
     SetConst LeekC = 0
 
     SetConst LeekC = 0
 
     SetConst LeekD = 0
 
     SetConst LeekD = 0
    SetConst Size = 0
 
    Call Water
 
 
   End
 
   End
 
End
 
End
Line 393: Line 436:
 
     Call MoveRight
 
     Call MoveRight
 
     Call MoveUP
 
     Call MoveUP
 
+
   
 
     Compute GarAX = $CenterX + $GarSX
 
     Compute GarAX = $CenterX + $GarSX
 
     Compute GarAY = $CenterY - $GarSY
 
     Compute GarAY = $CenterY - $GarSY
Line 432: Line 475:
 
     Compute GarDX = $TopX + $GarDXSM
 
     Compute GarDX = $TopX + $GarDXSM
 
     Compute GarDY = $TopY + $GarDYSM
 
     Compute GarDY = $TopY + $GarDYSM
    Timestamp $TopX, $TopY
 
   
 
 
     Call Build
 
     Call Build
 
      
 
      
Line 453: Line 494:
 
     Call MoveDown
 
     Call MoveDown
 
     Call Build
 
     Call Build
 
+
   
 
     While $GarA < 5 or $GarB < 5 or $GarC < 5 or $GarD < 5
 
     While $GarA < 5 or $GarB < 5 or $GarC < 5 or $GarD < 5
 
       If $GarA < 5
 
       If $GarA < 5
Line 480: Line 521:
 
     End
 
     End
 
      
 
      
     Call Water
+
     If {loopno} <> $Loops
 +
      if $Aquaduct = 0
 +
        Call Water
 +
      else
 +
        Call Aqua
 +
      End
 +
    End
 
     Delay 5000
 
     Delay 5000
 
     SetConst GarAX = 0
 
     SetConst GarAX = 0
Line 525: Line 572:
 
       End
 
       End
 
     End
 
     End
    Timestamp $TopX, $TopY
 
   
 
 
     Compute CabAX = $TopX
 
     Compute CabAX = $TopX
 
     Compute CabAY = $TopY
 
     Compute CabAY = $TopY
Line 569: Line 614:
 
       If $CabC < 5
 
       If $CabC < 5
 
         MousePos $CabCX, $CabCY
 
         MousePos $CabCX, $CabCY
 +
        Timestamp $CabCX, $CabCY
 
         Delay $MDelay
 
         Delay $MDelay
 
         Call CheckC
 
         Call CheckC
Line 579: Line 625:
 
     End
 
     End
 
     If {loopno} <> $Loops
 
     If {loopno} <> $Loops
       Call Water
+
       if $Aquaduct = 0
 +
        Call Water
 +
      else
 +
        Call Aqua
 +
      End
 
     End
 
     End
 
     Delay 5000
 
     Delay 5000
Line 748: Line 798:
 
     Compute CarDX = $TopX + $CarDXSM
 
     Compute CarDX = $TopX + $CarDXSM
 
     Compute CarDY = $TopY + $CarDYSM
 
     Compute CarDY = $TopY + $CarDYSM
    TimeStamp $CarAX, $CarAY
 
 
     Call Build
 
     Call Build
 
      
 
      
Line 797: Line 846:
 
      
 
      
 
     If {loopno} <> $Loops
 
     If {loopno} <> $Loops
       Call Water
+
       if $Aquaduct = 0
 +
        Call Water
 +
      else
 +
        Call Aqua
 +
      End
 
     End
 
     End
 
      
 
      
Line 811: Line 864:
 
End
 
End
  
//Onions
+
Procedure Onions      //----------------Onions----------------//
Procedure Onions
 
 
   Loop $Loops
 
   Loop $Loops
 
     Call Plant
 
     Call Plant
 
+
    SetConst OFPX = $FPX
 +
    SetConst OFPY = $FPY
 
     SetConst Onion = 1
 
     SetConst Onion = 1
 
+
   
 
     Loop $Plants  //Find and Pin Plants
 
     Loop $Plants  //Find and Pin Plants
       Mousepos $Ox, $Oy
+
       Delay $M2Delay
       Delay 200
+
      Case
 +
      When {LoopNo} < 6
 +
        Compute FPX = $OFPX - ($OStep * ( {LoopNo} - 1 ))
 +
      When {LoopNo} < 11
 +
        Compute FPX = $OFPX - $OStep * ( {LoopNo} - 6 )
 +
        Compute FPY = $OFPY + $OStep
 +
      When {LoopNo} < 16
 +
        Compute FPX = $OFPX - $OStep * ( {LoopNo} - 11 )
 +
        Compute FPY = $OFPY + $OStep * 2
 +
      When {LoopNo} < 21
 +
        Compute FPX = $OFPX - $OStep * ( {LoopNo} - 16 )
 +
        Compute FPY = $OFPY + $OStep * 3
 +
      When {LoopNo} < 26
 +
        Compute FPX = $OFPX - $OStep * ( {LoopNo} - 21 )
 +
        Compute FPY = $OFPY + $OStep * 4
 +
       End
 
       Call CheckOnions
 
       Call CheckOnions
      Compute FPX = $FPX - $OStep
 
 
     End
 
     End
 
     SetConst Onion = 1
 
     SetConst Onion = 1
Line 836: Line 903:
 
         End
 
         End
 
          
 
          
         Compute NewY = $OWY - 20
+
         Compute NewY = $OWY - $OSetWinX
 
         MousePos $OWX, $NewY
 
         MousePos $OWX, $NewY
         Delay 200
+
         Delay $M2Delay
 
         Rightclick
 
         Rightclick
         Delay 300
+
         Delay $M2Delay
 
         Mousepos $OWX, $OWY
 
         Mousepos $OWX, $OWY
         Delay 200
+
         Delay $M2Delay
         Rightclick
+
         Rightclick //waters
 
         If $Close = 4
 
         If $Close = 4
 
           SetConst varOriginalMouseX = {MouseX}
 
           SetConst varOriginalMouseX = {MouseX}
Line 856: Line 923:
 
           Delay 200
 
           Delay 200
 
         End
 
         End
         Compute OWY = {MouseY} + 60
+
         Compute OWY = {MouseY} + $ODragYAdd  //60
 
         If $Onion = 1
 
         If $Onion = 1
 
           Delay $P1Delay  //Plant 1 time
 
           Delay $P1Delay  //Plant 1 time
Line 875: Line 942:
 
      
 
      
 
     //Reposition
 
     //Reposition
 
+
   
 
     Mousepos $ResetX, $ResetY
 
     Mousepos $ResetX, $ResetY
 
     Leftclick
 
     Leftclick
Line 882: Line 949:
 
     Compute ODragX = 4
 
     Compute ODragX = 4
 
     Compute ODragY = 90
 
     Compute ODragY = 90
     Compute Ox = 495
+
     SetConst Close = 0
     Compute Oy = 380
+
    //Compute Ox = 495
 +
     //Compute Oy = 380
 +
    Call Resolution
 +
    If Veggie[ed6] = True
 +
      Call Venery
 +
    End
 +
    If {loopno} <> $Loops
 +
      if $Aquaduct = 0
 +
        Call Water
 +
      else
 +
        Call Aqua
 +
      End
 +
    End
 
     Compute OWX = 50
 
     Compute OWX = 50
 
     Compute OWY = 120
 
     Compute OWY = 120
Line 892: Line 971:
 
   Loop $Plants  //Number of plants
 
   Loop $Plants  //Number of plants
 
     Call Sow
 
     Call Sow
     Compute Num = $Onion * 2 - 1
+
    Case
 +
    When $Onion < 6
 +
      SetConst OPRow = 0
 +
    When $Onion < 11
 +
      SetConst OPRow = 1
 +
    When $Onion < 16
 +
      SetConst OPRow = 2
 +
    When $Onion < 21
 +
      SetConst OPRow = 3
 +
    When $Onion < 26
 +
      SetConst OPRow = 4
 +
    End
 +
   
 +
     Compute NumY = $OPRow * 2
 +
    MousePos 59, 120
 +
    Delay $MDelay
 +
    If $NumY > 0
 +
      Loop $NumY
 +
        Rightclick
 +
      End
 +
    End
 +
   
 
     MousePos 37, 97
 
     MousePos 37, 97
 
     Delay $MDelay
 
     Delay $MDelay
     Loop $Num
+
    Case
 +
    When $Onion < 6
 +
      Compute NumX = $Onion * 2
 +
    When $Onion < 11
 +
      Compute NumX = $Onion * 2 - 10
 +
    When $Onion < 16
 +
      Compute NumX = $Onion * 2  - 20
 +
    When $Onion < 21
 +
      Compute NumX = $Onion * 2 - 30
 +
    When $Onion < 26
 +
      Compute NumX = $Onion * 2 - 40
 +
    End
 +
   
 +
     Loop $NumX
 
       Rightclick
 
       Rightclick
 
     End
 
     End
 +
   
 
     // New Routine to find onions before plant
 
     // New Routine to find onions before plant
 
     If {loopno} = 1
 
     If {loopno} = 1
 +
      Compute Ox = $CenterX - $OSx
 +
      Compute Oy = $CenterY - $OSy
 
       Mousepos $Ox, $Oy
 
       Mousepos $Ox, $Oy
 
       Delay $MDelay
 
       Delay $MDelay
Line 907: Line 1,023:
 
           SetConst FPY = {MouseY}
 
           SetConst FPY = {MouseY}
 
           SetConst TopX = {MouseX}
 
           SetConst TopX = {MouseX}
           SetConst TopY = {MouseY}
+
           Compute TopY = {MouseY} + 2
 +
          //SetConst TopY = {MouseY}
 
           Keys {Esc}
 
           Keys {Esc}
 
           Delay $MDelay
 
           Delay $MDelay
Line 914: Line 1,031:
 
           Call FindRight
 
           Call FindRight
 
           Set Done = 0
 
           Set Done = 0
 +
          Compute OCal = $RightX - $LeftX
 
           Compute Result = $RightX - ($RightX - $LeftX)/2
 
           Compute Result = $RightX - ($RightX - $LeftX)/2
 
           Formatnumber FPX = $Result, ###
 
           Formatnumber FPX = $Result, ###
 +
          Case
 +
          When $Ocal < 5
 +
            //Do Nothing
 +
          When $Ocal < 11
 +
            Compute FPX = $FPX + 2
 +
            //Bell
 +
          When $Ocal > 20
 +
            Compute FPX = $RightX - 7
 +
            //Bell
 +
            //Delay 500
 +
            //Bell
 +
          End
 
           Break
 
           Break
 
         Else
 
         Else
Line 931: Line 1,061:
  
 
Procedure CheckOnions
 
Procedure CheckOnions
   MousePos $FPX, $FPY
+
   //Check here to see if window is actually there
  Delay 200
+
  While $Done = 0
  Rightclick
+
    MousePos $FPX, $FPY
  Compute NewX = {mousex} + 172
+
    Delay $SDelay
  Compute NewY = {mousey} - 23
+
    Rightclick
  MousePos $NewX, $NewY
+
    Delay 100
  Delay 200
+
    IsObject Plant at {mousex}, {mousey}
   Leftclick
+
      Break
   Compute NewX = {mousex} - 169
+
    Else
 +
      dec $FPX
 +
    End
 +
   End
 +
   Compute NewX = {mousex} + $OPinX
 +
  Compute NewY = {mousey} - $OPinY  //23
 
   MousePos $NewX, $NewY
 
   MousePos $NewX, $NewY
 +
  Delay $SDelay //$M2Delay
 +
  Rightclick  //Pin
 +
  Compute NewX = {mousex} - $ODWX  //169
 +
  MousePos $NewX, $NewY  //left edge of window before drag
 
   if $Onion > 8
 
   if $Onion > 8
 
     Dragto $ODragX, $ODragY
 
     Dragto $ODragX, $ODragY
     Compute ODragY = $ODragY + 60
+
     Compute ODragY = $ODragY + $ODragYAdd
 
   End
 
   End
 
   if $Onion = 5 or $Onion = 6 or $Onion = 7 or $Onion = 8
 
   if $Onion = 5 or $Onion = 6 or $Onion = 7 or $Onion = 8
 
     Dragto $ODragX, $ODragY
 
     Dragto $ODragX, $ODragY
     Compute ODragY = $ODragY + 60
+
     Compute ODragY = $ODragY + $ODragYAdd
 
   End
 
   End
 
   If $Onion = 2 or $Onion = 3 or $Onion = 4
 
   If $Onion = 2 or $Onion = 3 or $Onion = 4
 
     Dragto $ODragX, $ODragY
 
     Dragto $ODragX, $ODragY
     Compute ODragY = $ODragY + 60
+
     Compute ODragY = $ODragY + $ODragYAdd
 
   End
 
   End
 
   if $Onion = 1
 
   if $Onion = 1
 
     Dragto $ODragX, $ODragY
 
     Dragto $ODragX, $ODragY
     Compute ODragY = $ODragY + 60
+
     Compute ODragY = $ODragY + $ODragYAdd
 
   End
 
   End
 
   Compute Onion = $Onion + 1
 
   Compute Onion = $Onion + 1
Line 1,014: Line 1,153:
 
   Rightclick
 
   Rightclick
 
   Delay 3000
 
   Delay 3000
 +
End
 +
 +
Procedure Aqua
 +
  Delay 2000
 +
  Compute NewY = $WaterY - 40
 +
  MousePos $WaterX, $NewY
 +
  Delay $M2Delay
 +
  Rightclick
 +
  Delay $M2Delay
 +
  MousePos $WaterX, $WaterY
 +
  Delay $M2Delay
 +
  Rightclick
 +
  Delay $M2Delay
 
End
 
End
  
Line 1,106: Line 1,258:
 
   Delay $MDelay
 
   Delay $MDelay
 
   RightClick
 
   RightClick
 +
End
 +
 +
Function CheckforLostFocus
 +
  if {activewindow} contains eGenesis
 +
    Compute Result = 0
 +
    Exit
 +
  Else
 +
    Stop
 +
  End
 
End
 
End
  
Line 1,126: Line 1,287:
 
     SetConst CabCXadj = 16
 
     SetConst CabCXadj = 16
 
     SetConst CabCYadj = 23
 
     SetConst CabCYadj = 23
     SetConst CabDXadj = 27
+
     SetConst CabDXadj = 26
 
     SetConst CabDYadj = 10
 
     SetConst CabDYadj = 10
 
     //Carrots
 
     //Carrots
Line 1,134: Line 1,295:
 
     SetConst CarBXSM = 77
 
     SetConst CarBXSM = 77
 
     SetConst CarCXSM = 88
 
     SetConst CarCXSM = 88
     SetConst CarCYSM = 115
+
     SetConst CarCYSM = 137  //115
     SetConst CarDXSM = 25
+
     SetConst CarDXSM = 41  //25
     SetConst CarDYSM = 105
+
     SetConst CarDYSM = 110  //105
 
     SetConst CarAXadj = 8
 
     SetConst CarAXadj = 8
 
     SetConst CarAYadj = 10
 
     SetConst CarAYadj = 10
 
     SetConst CarBXadj = 8
 
     SetConst CarBXadj = 8
 
     SetConst CarBYadj = 10
 
     SetConst CarBYadj = 10
     SetConst CarCXadj = 8
+
     SetConst CarCXadj = 10  //8
     SetConst CarCYadj = 10
+
     SetConst CarCYadj = 21  //10
     SetConst CarDXadj = 8
+
     SetConst CarDXadj = 20  //8
     SetConst CarDYadj = 5
+
     SetConst CarDYadj = 6  //5
 
     //Garlic
 
     //Garlic
 
     SetConst GarSX = 55
 
     SetConst GarSX = 55
Line 1,151: Line 1,312:
 
     SetConst GarBXSM = 79
 
     SetConst GarBXSM = 79
 
     SetConst GarCXSM = 67
 
     SetConst GarCXSM = 67
     SetConst GarCYSM = 141
+
     SetConst GarCYSM = 139
 
     SetConst GarDXSM = 11
 
     SetConst GarDXSM = 11
     SetConst GarDYSM = 143
+
     SetConst GarDYSM = 139
 
     SetConst GarAXadj = 8
 
     SetConst GarAXadj = 8
 
     SetConst GarAYadj = 13
 
     SetConst GarAYadj = 13
Line 1,166: Line 1,327:
 
     SetConst LeekSY = 69
 
     SetConst LeekSY = 69
 
     SetConst LeekBXSM = 78
 
     SetConst LeekBXSM = 78
     SetConst LeekCXSM = 109
+
     SetConst LeekCXSM = 108
     SetConst LeekCYSM = 150
+
     SetConst LeekCYSM = 158
 
     SetConst LeekDXSM = 9
 
     SetConst LeekDXSM = 9
 
     SetConst LeekDYSM = 135
 
     SetConst LeekDYSM = 135
     SetConst LeekAXadj = 3
+
     SetConst LeekAXadj = 8 //3
     SetConst LeekAYadj = 26
+
     SetConst LeekAYadj = 20
 
     SetConst LeekBXadj = 3
 
     SetConst LeekBXadj = 3
 
     SetConst LeekBYadj = 26
 
     SetConst LeekBYadj = 26
Line 1,179: Line 1,340:
 
     SetConst LeekDYadj = 11
 
     SetConst LeekDYadj = 11
 
     //Onions
 
     //Onions
     SetConst Ox = 920
+
     SetConst OSx = 78
     SetConst Oy = 511
+
     SetConst OSy = 29
 
     SetConst ResetX = 1135
 
     SetConst ResetX = 1135
 
     SetConst ResetY = 556
 
     SetConst ResetY = 556
     SetConst OStep = 77
+
     SetConst OStep = 76
 +
    SetConst OPinX = 172
 +
    SetConst OPinY = 30
 +
    SetConst ODragYAdd = 60
 +
   
 
   When $Res = 1280x1024
 
   When $Res = 1280x1024
 
     //Cabbage
 
     //Cabbage
     SetConst CabSX = 50
+
     SetConst CabSX = 53
     SetConst CabSY = 74
+
     SetConst CabSY = 80
 
     SetConst CabBXSM = 51
 
     SetConst CabBXSM = 51
 
     SetConst CabBYSM = 1
 
     SetConst CabBYSM = 1
     SetConst CabCXSM = 78
+
     SetConst CabCXSM = 77
 
     SetConst CabCYSM = 123
 
     SetConst CabCYSM = 123
 
     SetConst CabDXSM = 37
 
     SetConst CabDXSM = 37
Line 1,203: Line 1,368:
 
     SetConst CabDYadj = 6
 
     SetConst CabDYadj = 6
 
     //Carrots
 
     //Carrots
     SetConst CarSX = 11
+
     SetConst CarSX = 13
     SetConst CarSY = 37
+
     SetConst CarSY = 58
 
     SetConst CarAYSM = 1
 
     SetConst CarAYSM = 1
 
     SetConst CarBXSM = 52
 
     SetConst CarBXSM = 52
 
     SetConst CarCXSM = 58
 
     SetConst CarCXSM = 58
     SetConst CarCYSM = 77
+
     SetConst CarCYSM = 93
     SetConst CarDXSM = 16
+
     SetConst CarDXSM = 30
     SetConst CarDYSM = 69
+
     SetConst CarDYSM = 72
 
     SetConst CarAXadj = 4
 
     SetConst CarAXadj = 4
 
     SetConst CarAYadj = 8
 
     SetConst CarAYadj = 8
Line 1,216: Line 1,381:
 
     SetConst CarBYadj = 8
 
     SetConst CarBYadj = 8
 
     SetConst CarCXadj = 7
 
     SetConst CarCXadj = 7
     SetConst CarCYadj = 8
+
     SetConst CarCYadj = 13
     SetConst CarDXadj = 5
+
     SetConst CarDXadj = 13
 
     SetConst CarDYadj = 4
 
     SetConst CarDYadj = 4
 
     //Onions
 
     //Onions
     SetConst Ox = 618
+
     //SetConst Ox = 618
     SetConst Oy = 487
+
     //SetConst Oy = 487
 +
    SetConst OSx = 44
 +
    SetConst OSy = 24
 
     SetConst ResetX = 707
 
     SetConst ResetX = 707
 
     SetConst ResetY = 531
 
     SetConst ResetY = 531
 
     SetConst OStep = 52
 
     SetConst OStep = 52
 +
    SetConst OPinX = 172
 +
    SetConst OPinY = 31
 +
    SetConst ODragYadd = 60
 
     //Garlic
 
     //Garlic
 
     SetConst GarSX = 36
 
     SetConst GarSX = 36
Line 1,243: Line 1,413:
 
     SetConst GarDYadj = 10
 
     SetConst GarDYadj = 10
 
     //Leeks
 
     //Leeks
     SetConst LeekSX = 43
+
     SetConst LeekSX = 50
 
     SetConst LeekSY = 60
 
     SetConst LeekSY = 60
 
     SetConst LeekBXSM = 52
 
     SetConst LeekBXSM = 52
Line 1,258: Line 1,428:
 
     SetConst LeekDXadj = 8
 
     SetConst LeekDXadj = 8
 
     SetConst LeekDYadj = 7
 
     SetConst LeekDYadj = 7
 +
   
 
   When $Res = 1360x768
 
   When $Res = 1360x768
 
     //Cabbage
 
     //Cabbage
     SetConst CabSX = 44
+
     SetConst CabSX = 51
     SetConst CabSY = 68
+
     SetConst CabSY = 81
 
     SetConst CabBXSM = 53
 
     SetConst CabBXSM = 53
 
     SetConst CabBYSM = 1
 
     SetConst CabBYSM = 1
Line 1,277: Line 1,448:
 
     SetConst CabDYadj = 8
 
     SetConst CabDYadj = 8
 
     //Carrots
 
     //Carrots
     SetConst CarSX = 13
+
     SetConst CarSX = 14
     SetConst CarSY = 46
+
     SetConst CarSY = 61
 
     SetConst CarAYSM = 1
 
     SetConst CarAYSM = 1
 
     SetConst CarBXSM = 56
 
     SetConst CarBXSM = 56
     SetConst CarCXSM = 62
+
     SetConst CarCXSM = 63
     SetConst CarCYSM = 82
+
     SetConst CarCYSM = 95
     SetConst CarDXSM = 18
+
     SetConst CarDXSM = 31
     SetConst CarDYSM = 73
+
     SetConst CarDYSM = 77
 
     SetConst CarAXadj = 4
 
     SetConst CarAXadj = 4
 
     SetConst CarAYadj = 8
 
     SetConst CarAYadj = 8
Line 1,290: Line 1,461:
 
     SetConst CarBYadj = 8
 
     SetConst CarBYadj = 8
 
     SetConst CarCXadj = 7
 
     SetConst CarCXadj = 7
     SetConst CarCYadj = 8
+
     SetConst CarCYadj = 17
     SetConst CarDXadj = 6
+
     SetConst CarDXadj = 13
     SetConst CarDYadj = 4
+
     SetConst CarDYadj = 3
 
     //Onions
 
     //Onions
     SetConst Ox = 657
+
     SetConst OSx = 62
     SetConst Oy = 386
+
     SetConst OSy = 19
 
     SetConst ResetX = 805
 
     SetConst ResetX = 805
 
     SetConst ResetY = 402
 
     SetConst ResetY = 402
 
     SetConst OStep = 55
 
     SetConst OStep = 55
 +
    SetConst OPinX = 178
 +
    SetConst OPinY = 30
 +
    SetConst ODragYAdd = 60
 
     //Garlic
 
     //Garlic
 
     SetConst GarSX = 34
 
     SetConst GarSX = 34
     SetConst GarSY = 58
+
     SetConst GarSY = 50
 
     SetConst GarAYSM = 1
 
     SetConst GarAYSM = 1
 
     SetConst GarBXSM = 57
 
     SetConst GarBXSM = 57
Line 1,329: Line 1,503:
 
     SetConst LeekBYadj = 16
 
     SetConst LeekBYadj = 16
 
     SetConst LeekCXadj = 7
 
     SetConst LeekCXadj = 7
     SetConst LeekCYadj =12
+
     SetConst LeekCYadj = 13
 
     SetConst LeekDXadj = 10
 
     SetConst LeekDXadj = 10
 
     SetConst LeekDYadj = 9
 
     SetConst LeekDYadj = 9
 
   End
 
   End
 +
End
 +
 +
Procedure Venery
 +
  Compute ODragYAdd = $ODragYAdd + 16
 +
 
 
End
 
End
 
Bell
 
Bell
 
</pre>
 
</pre>

Latest revision as of 20:57, 4 April 2011

//Veggie Macro
//
//This macro will plant Cabbage, Carrots, Garlic, Leeks,  and Onions.  This was my private
//macro in Tale 3 mainly due to no other macro growing cabbage at the time. Supply and demand :)
//
//The basic flow and code is the same but I've made some improvements in this rewrite.  This
//macro no longer relies on color.  Color was different with each type of video card which
//caused many problems for some.  Due to the large rewrite, I have not been able to test this
//macro fully.  You may still find problems.  Pass them on to me please.
//
//The BIGGEST ISSUE with veggies is that initial plant location changes each time you move.
//If you find that the macro is missing the plants, take a step in a direction to change
//the initial plant location and try again.  You may have to do this a few times until you
//find the right spot.  This is the part of the macro that I have not fully tested.  You can
//also try a different resolution as mouse locations are different in each resolution.
//
//SETUP
//Resolution 1024 x 768, 1280 x 1024, 1360 x 768 or 1920 x 1080
//Cartographer camera zoomed all the way in
//Face East if you have a problem with macro hitting your hands.
//Have at least 5 seeds and 20 jugs, more for onions if planting over 4
//Be close enough to water to see your water icon
//Regular sized action icons
//Pin your plant window in the top left corner
//
//When growing leeks, make sure the mouse is hitting the top right leaf.  If this does not
//happen, all other plants will be off.  Follow the steps above about initial plant location
//to fix this.

//  Enjoy :)     Written with ACTool 4.6.2 by Anka   :Updated with 5.4.0

Constants
  dave = 0
  Loops = 0
  Water = 5
  X1 = 0
  Y1 = 0
  NumX = 4
  NumY = 0
  NewX = 0
  NewY = 0
  TopX = 0
  TopY = 0
  RightX = 0
  RightY = 0
  LeftX = 0
  LeftY = 0
  TempX = 0
  TempY = 0
  Done = 0
  varOriginalMouseX = 0
  varOriginalMouseY = 0
  ResetX = 607
  ResetY = 392
  //Cabbage
  CabSX = 50
  CabSY = 66
  CabTopAdd = 4
  CabBXSM = 41
  CabBYSM = 1
  CabCXSM = 57
  CabCYSM = 104
  CabDXSM = 29
  CabDYSM = 86
  CabAXadj = 6
  CabAYadj = 15
  CabBXadj = 6
  CabBYadj = 15
  CabCXadj = 6
  CabCYadj = 13
  CabDXadj = 15
  CabDYadj = 5
  CabX = 0
  CabY = 0
  CabBX = 474
  CabBY = 330
  CabCX = 470
  CabCY = 424
  CabDX = 557
  CabDY = 407
  CabAX = 544
  CabAY = 326
  CabA = 0
  CabB = 0
  CabC = 0
  CabD = 0
  //Garlic
  GarSX = 46
  GarSY = 58
  GarAYSM = 3
  GarBXSM = 41
  GarCXSM = 39
  GarCYSM = 69
  GarDXSM = 9
  GarDYSM = 70
  GarAXadj = 1
  GarAYadj = 8
  GarBXadj = 1
  GarBYadj = 8
  GarCXadj = 1
  GarCYadj = 10
  GarDXadj = 1
  GarDYadj = 10
  GarAX = 548
  GarAY = 335
  GarBX = 0
  GarBY = 0
  GarCX = 0
  GarCY = 0
  GarDX = 0
  GarDY = 0
  GarA = 0
  GarB = 0
  GarC = 0
  GarD = 0
  //Leeks
  LeekSX = 49
  LeekSY = 48
  LeekBXSM = 41
  LeekCXSM = 57
  LeekCYSM = 80
  LeekDXSM = 6
  LeekDYSM = 74
  LeekAXadj = 3
  LeekAYadj = 13
  LeekBXadj = 3
  LeekBYadj = 13
  LeekCXadj = 6
  LeekCYadj = 11
  LeekDXadj = 7
  LeekDYadj = 5
  LeekA = 0
  LeekB = 0
  LeekC = 0
  LeekD = 0
  LeekAX = 0
  LeekAY = 0
  LeekBX = 0
  LeekBY = 0
  LeekCX = 0
  LeekCY = 0
  LeekDX = 0
  LeekDY = 0
  //Carrots
  CarSX = 12
  CarSY = 38
  CarAYSM = 1
  CarBXSM = 41
  CarCXSM = 48
  CarCYSM = 74
  CarDXSM = 23
  CarDYSM = 58
  CarAXadj = 3
  CarAYadj = 5
  CarBXadj = 3
  CarBYadj = 5
  CarCXadj = 5
  CarCYadj = 10
  CarDXadj = 10
  CarDYadj = 4
  CarA = 0
  CarB = 0
  CarC = 0
  CarD = 0
  CarAX = 523
  CarAY = 348
  CarBX = 0
  CarBY = 0
  CarCX = 0
  CarCY = 0
  CarDX = 0
  CarDY = 0
  //Onions
  Ox = 0
  Oy = 0
  OStep = 41
  ODWX = 169
  ODWY = 0
  ODragX = 4
  ODragY = 90
  ODragYAdd = 60
  OSetWinX = 20
  OWX = 50
  OWY = 120
  OCal = 0
  OJ5 = 0
  OJ10 = 0
  OJ15 = 0
  OJ20 = 0
  OPRow = 0
  OFPX = 0
  OFPY = 0
  MoveLeft = 35, 96
  MoveRight = 82, 96
  MoveUP = 59, 74
  MoveDown = 59, 120
  Build = 30, 155
  Size = 0
  Onion = 1
  WaterX = 0
  WaterY = 0
  CenterX = 0
  CenterY = 0
  Direction = 0  // 0 = Icons on left, 1 = Icons on right
  Count = 0
  Button = 0
  Red = 31
  Green = 209
  Blue = 211
  SubX = 31
  Color = 200
  //New Constants, clean later
  //Onions
  Plants = 0
  P1Delay = 0
  MoveDelay = 0
  WDelay = 0
  MDelay = 100
  M2Delay = 200
  SDelay = 500
  OSx = 35
  OSy = 10
  FO = 0
  FPX = 0
  FPY = 0
  Close = 0
  OPinX = 172
  OPinY = 31
  PinX = 170
  PinY = 28
  Sow = 50, 40
  Res = 0
  Aquaduct = 0
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 Plant //1920x1080
  148=2,0|148=2,2|148=2,4|148=2,6|148=2,8
End

SetConst WaterX = {MouseX}
SetConst WaterY = {MouseY}

Form Veggie, Settings
  ed1=Combobox:Veggie:Cabbage, Carrots, Garlic, Leeks, Onions
  ed2=Editbox:Batch:1
  ed3=Checkbox:Right Action Buttons?:False
  ed5=Checkbox:Aquaduct?:False
  ed6=Checkbox:Venery?:False
  ed7=Editbox:Mouse Delay:100
  ed4=Combobox:Resolution:1024x768, 1280x1024, 1360x768, 1920x1080
end

FormLoad Veggie, Veggie.frm

if ShowForm Veggie
  Set Loops = Veggie[ed2]
  If Veggie[ed3] = False
    SetConst Direction = 0
  Else
    SetConst Direction = 1
  End
  Set Res = Veggie[ed4]
  if Veggie[ed5] = True
    SetConst Aquaduct = 1
  End
else
  stop
end

FormSave Veggie, Veggie.frm
//
Case
When Veggie[ed1] = Onions
  Form Onions, Onions
    ed1=Editbox:Batch:1
    ed2=Combobox:# of Plants:1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
    ed3=Editbox:Plant 1 wait time:1300
    ed4=Editbox:Move wait time:900
    ed5=Editbox:Time between Waterings:800
  end
  
  FormLoad Onions, Onions.frm
  
  if ShowForm Onions
    Set Loops = Onions[ed1]
    Set Plants = Onions[ed2]
    Set P1Delay = Onions[ed3]
    Set MoveDelay = Onions[ed4]
    Set WDelay = Onions[ed5]
  Else
    stop
  end
  
  FormSave Onions, Onions.frm
End

KeyDown @{Tab} 200
Delay 2000

Compute CenterX = {Screenwidth} / 2
Compute CenterY = {ScreenHeight} / 2

Call Resolution
if Veggie[ed6] = True
  Call Venery
End

if $Aquaduct = 0
  call Findbutton
  call water
else
  Call Aqua
End

Call Veggie[ed1]

Procedure Leeks             //---------------Leeks----------------//
  Loop $Loops
    //A
    Call Sow
    Call MoveRight
    Call MoveUP
    Delay $MDelay
    Compute LeekAX = $CenterX + $LeekSX
    Compute LeekAY = $CenterY - $LeekSY
    While $Size = 0
      MousePos $LeekAX, $LeekAY
      Delay $MDelay
      RightClick
      Delay $MDelay
      IsObject Plant at {MouseX}, {MouseY}
        Set TopX = {mousex}
        Keys {ESC}
        Delay $MDelay
        Compute TopY = {mousey} + 2
        MousePos $TopX, $TopY
        Delay $MDelay
        Call FindLeft
        Set Done = 0
        Call FindRight
        Set Done = 0
        Compute Result = $RightX - ($RightX - $LeftX)/2
        Formatnumber TopX = $Result, ###
        Call FindTop
        Set Size = 1
      Else
        Compute LeekAY = $LeekAY + 1
        Compute LeekAX = $LeekAX - 1
      End
    End
    Set LeekAX = $TopX
    Set LeekAY = $TopY
    Compute LeekBX = $LeekAX - $LeekBXSM
    Compute LeekBY = $LeekAY + 1
    Compute LeekCX = $LeekAX - $LeekCXSM
    Compute LeekCY = $LeekAY + $LeekCYSM
    Compute LeekDX = $LeekAX + $LeekDXSM
    Compute LeekDY = $LeekAY + $LeekDYSM
    Call Build
    
    //B
    Call Sow
    Call MoveLeft
    Call MoveUP
    Call Build
    
    //C
    Call Sow
    Call MoveLeft
    Call MoveDown
    Call Build
    
    //D
    Call Sow
    Call MoveRight
    Call MoveDown
    Call Build
    
    While $LeekA < 5 or $LeekB < 5 or $LeekC < 5 or $LeekD < 5
      If $LeekA < 5
        MousePos $LeekAX, $LeekAY
        Delay $MDelay
        Call CheckA
      End
      Delay 50
      If $LeekB < 5
        MousePos $LeekBX, $LeekBY
        Delay $MDelay
        Call CheckB
      End
      Delay 50
      If $LeekC < 5
        MousePos $LeekCX, $LeekCY
        Delay $MDelay
        Call CheckC
      End
      Delay 50
      If $LeekD < 5
        MousePos $LeekDX, $LeekDY
        Delay $MDelay
        Call CheckD
      End
      Delay 1000
      
    End
    If {loopno} <> $Loops
      if $Aquaduct = 0
        Call Water
      else
        Call Aqua
      End
    End
    SetConst LeekAX = 0
    SetConst LeekAY = 0
    SetConst LeekA = 0
    SetConst LeekB = 0
    SetConst LeekC = 0
    SetConst LeekD = 0
  End
End

Procedure Garlic          //--------------Garlic-----------------//
  Loop $Loops
    //A
    Call Sow
    Call MoveRight
    Call MoveUP
    
    Compute GarAX = $CenterX + $GarSX
    Compute GarAY = $CenterY - $GarSY
    While $Size = 0
      MousePos $GarAX, $GarAY
      Delay $MDelay
      Rightclick
      Delay $MDelay
      IsObject Plant at {MouseX}, {MouseY}
        Set TopX = {mousex}
        Keys {ESC}
        Delay $MDelay
        Compute TopY = {mousey} + 2
        MousePos $TopX, $TopY
        Delay $MDelay
        Call FindLeft
        Set Done = 0
        Call FindRight
        Set Done = 0
        Compute Result = $RightX - ($RightX - $LeftX)/2
        Formatnumber TopX = $Result, ###
        Call FindTop
        Set Size = 1
      Else
        Compute GarAX = $GarAX - 1
        Compute GarAY = $GarAY + 1
      End
    End
    Compute GarAX = $TopX
    Compute GarAY = $TopY
    MousePos $GarAX, $GarAY
    Delay $MDelay
    Compute GarAY = $TopY + $GarAYSM
    Compute GarBX = $TopX - $GarBXSM
    Compute GarBY = $GarAY
    Compute GarCX = $TopX - $GarCXSM
    Compute GarCY = $TopY + $GarCYSM
    Compute GarDX = $TopX + $GarDXSM
    Compute GarDY = $TopY + $GarDYSM
    Call Build
    
    //B
    Call Sow
    Call MoveLeft
    Call MoveUp
    Call Build
    
    //C
    Call Sow
    Call MoveLeft
    Call MoveDown
    Call Build
    
    //D
    Call Sow
    Call MoveRight
    Call MoveDown
    Call Build
    
    While $GarA < 5 or $GarB < 5 or $GarC < 5 or $GarD < 5
      If $GarA < 5
        MousePos $GarAX, $GarAY
        Delay $MDelay
        Call CheckA
      End
      Delay 150
      If $GarB < 5
        MousePos $GarBX, $GarBY
        Delay $MDelay
        Call CheckB
      End
      Delay 150
      If $GarC < 5
        MousePos $GarCX, $GarCY
        Delay $MDelay
        Call CheckC
      End
      Delay 150
      If $GarD < 5
        MousePos $GarDX, $GarDY
        Delay $MDelay
        Call CheckD
      End
    End
    
    If {loopno} <> $Loops
      if $Aquaduct = 0
        Call Water
      else
        Call Aqua
      End
    End
    Delay 5000
    SetConst GarAX = 0
    SetConst GarAY = 0
    SetConst GarA = 0
    SetConst GarB = 0
    SetConst GarC = 0
    SetConst GarD = 0
  End
End

Procedure Cabbage   //-----------------CABBAGE------------------//
  Loop $Loops
    //A
    Call Sow
    Call MoveRight
    Call MoveUP
    
    Compute CabAX = $CenterX + $CabSX
    Compute CabAY = $CenterY - $CabSY
    While $Size = 0
      MousePos $CabAX, $CabAY
      Delay $Mdelay
      RightClick
      Delay $MDelay
      IsObject Plant at {MouseX}, {MouseY}
        Set TopX = {mousex}
        Keys {ESC}
        Delay $MDelay
        Compute TopY = {mousey} + $CabTopAdd
        MousePos $TopX, $TopY
        Delay $MDelay
        Call FindLeft
        Set Done = 0
        Call FindRight
        Set Done = 0
        Compute Result = $RightX - ($RightX - $LeftX)/2
        Formatnumber TopX = $Result, ###
        Call FindTop
        Set Size = 1
      Else
        Compute CabAX = $CabAX - 1
        Compute CabAY = $CabAY + 1
      End
    End
    Compute CabAX = $TopX
    Compute CabAY = $TopY
    Compute CabBX = $CabAX - $CabBXSM
    Compute CabBY = $CabAY + $CabBYSM
    Compute CabCX = $CabAX - $CabCXSM
    Compute CabCY = $CabAY + $CabCYSM
    Compute CabDX = $CabAX + $CabDXSM
    Compute CabDY = $CabAY + $CabDYSM
    
    Call Build
    
    //B
    Call Sow
    Call MoveLeft
    Call MoveUP
    Call Build
    
    //C
    Call Sow
    Call MoveLeft
    Call MoveDown
    Call Build
    
    //D
    Call Sow
    Call MoveRight
    Call MoveDown
    Call Build
    
    While $CabA < 5 or $CabB < 5 or $CabC < 5 or $CabD < 5
      If $CabA < 5
        MousePos $CabAX, $CabAY
        Delay $MDelay
        Call CheckA
      End
      If $CabB < 5
        MousePos $CabBX, $CabBY
        Delay $MDelay
        Call CheckB
      End
      If $CabC < 5
        MousePos $CabCX, $CabCY
        Timestamp $CabCX, $CabCY
        Delay $MDelay
        Call CheckC
      End
      If $CabD < 5
        MousePos $CabDX, $CabDY
        Delay $MDelay
        Call CheckD
      End
    End
    If {loopno} <> $Loops
      if $Aquaduct = 0
        Call Water
      else
        Call Aqua
      End
    End
    Delay 5000
    SetConst CabAX = 0
    SetConst CabAY = 0
    SetConst CabA = 0
    SetConst CabB = 0
    SetConst CabC = 0
    SetConst CabD = 0
  End
End

Procedure CheckA
  setconst varOriginalMouseX = {mousex}
  setconst varOriginalMouseY = {mousey}
  RightClick
  Delay 500
  IsObject Plant at {MouseX}, {MouseY}
    Compute NewX = {mousex} + 25
    Compute NewY = {mousey} + 7
    MousePos $NewX, $NewY
    Delay $MDelay
    Rightclick
    Compute CabA = $CabA + 1
    Compute GarA = $GarA + 1
    Compute LeekA = $LeekA + 1
    Compute CarA = $CarA + 1
    Compute CabAX = $varOriginalMouseX + $CabAXadj
    Compute GarAX = $varOriginalMouseX - $GarAXadj
    Compute LeekAX = $varOriginalMouseX + $LeekAXadj
    Compute CabAY = $varOriginalMouseY - $CabAYadj
    Compute GarAY = $varOriginalMouseY - $GarAYadj
    Compute LeekAY = $varOriginalMouseY - $LeekAYadj
    Compute CarAX = $varOriginalMouseX - $CarAXadj
    Compute CarAY = $varOriginalMouseY - $CarAYadj
  End
End

Procedure CheckB
  setconst varOriginalMouseX = {mousex}
  setconst varOriginalMouseY = {mousey}
  RightClick
  Delay 500
  IsObject Plant at {MouseX}, {MouseY}
    Compute NewX = {mousex} + 25
    Compute NewY = {mousey} + 7
    MousePos $NewX, $NewY
    Delay 250
    Rightclick
    Compute CabB = $CabB + 1
    Compute GarB = $GarB + 1
    Compute LeekB = $LeekB + 1
    Compute CarB = $CarB + 1
    Compute CabBX = $varOriginalMouseX - $CabBXadj
    Compute GarBX = $varOriginalMouseX - $GarBXadj
    Compute LeekBX = $varOriginalMouseX + $LeekBXadj
    Compute CabBY = $varOriginalMouseY - $CabBYadj
    Compute GarBY = $varOriginalMouseY - $GarBYadj
    Compute LeekBY = $varOriginalMouseY - $LeekBYadj
    Compute CarBX = $varOriginalMouseX - $CarBXadj
    Compute CarBY = $varOriginalMouseY - $CarBYadj
  End
End

Procedure CheckC
  setconst varOriginalMouseX = {mousex}
  setconst varOriginalMouseY = {mousey}
  RightClick
  Delay 500
  IsObject Plant at {mousex}, {MouseY}
    Compute NewX = {mousex} + 25
    Compute NewY = {mousey} + 7
    MousePos $NewX, $NewY
    Delay 250
    Rightclick
    Compute CabC = $CabC + 1
    Compute GarC = $GarC + 1
    Compute LeekC = $LeekC + 1
    Compute CarC = $CarC + 1
    Compute CabCX = $varOriginalMouseX - $CabCXadj
    Compute GarCX = $varOriginalMouseX - $GarCXadj
    Compute LeekCX = $varOriginalMouseX - $LeekCXadj
    Compute CabCY = $varOriginalMouseY + $CabCYadj
    Compute GarCY = $varOriginalMouseY + $GarCYadj
    Compute LeekCY = $varOriginalMouseY + $LeekCYadj
    Compute CarCX = $varOriginalMouseX - $CarCXadj
    Compute CarCY = $varOriginalMouseY + $CarCYadj
  End
End

Procedure CheckD
  setconst varOriginalMouseX = {mousex}
  setconst varOriginalMouseY = {mousey}
  RightClick
  Delay 500
  IsObject Plant at {MouseX}, {MouseY}
    Compute NewX = {mousex} + 25
    Compute NewY = {mousey} + 7
    MousePos $NewX, $NewY
    Delay 250
    Rightclick
    Compute CabD = $CabD + 1
    Compute GarD = $GarD + 1
    Compute LeekD = $LeekD + 1
    Compute CarD = $CarD + 1
    Compute CabDX = $varOriginalMouseX + $CabDXadj
    Compute GarDX = $varOriginalMouseX - $GarDXadj
    Compute LeekDX = $varOriginalMouseX + $LeekDXadj
    Compute CabDY = $varOriginalMouseY + $CabDYadj
    Compute GarDY = $varOriginalMouseY + $GarDYadj
    Compute LeekDY = $varOriginalMouseY + $LeekDYadj
    Compute CarDX = $varOriginalMouseX + $CarDXadj
    Compute CarDY = $varOriginalMouseY + $CarDYadj
  End
End

Procedure Carrots   //----------------Carrots----------------//
  Loop $Loops
    //A
    Call Sow
    Call MoveRight
    Call MoveUP
    
    Compute CarAX = $CenterX + $CarSX
    Compute CarAY = $CenterY - $CarSY
    While $Size = 0
      MousePos $CarAX, $CarAY
      Delay $MDelay
      RightClick
      Delay $MDelay
      IsObject Plant at {MouseX}, {MouseY}
        Set TopX = {mousex}
        Compute TopY = {mousey} + 1
        Keys {Esc}
        Delay $MDelay
        MousePos $TopX, $TopY
        Delay $MDelay
        Call FindLeft
        Set Done = 0
        Call FindRight
        Compute Result = $RightX - ($RightX - $LeftX)/2
        Formatnumber TopX = $Result, ###
        MousePos $TopX, $TopY
        Delay $MDelay
        Set Done = 0
        Call FindTop
        Set Done = 0
        Call FindRight
        Set Done = 0
        Call FindLeft
        Compute Result = $RightX - ($RightX - $LeftX)/2
        Formatnumber TopX = $Result, ###
        Set Done = 0
        Call FindTop
        Set Size = 1
      Else
        Compute CarAY = $CarAY + 1
      End
    End
    
    //Set all Variables
    Compute CarAX = $TopX
    Compute CarAY = $TopY + $CarAYSM
    Compute CarBX = $TopX - $CarBXSM
    Compute CarBY = $CarAY
    Compute CarCX = $TopX - $CarCXSM
    Compute CarCY = $TopY + $CarCYSM
    Compute CarDX = $TopX + $CarDXSM
    Compute CarDY = $TopY + $CarDYSM
    Call Build
    
    //B
    Call Sow
    Call MoveLeft
    Call MoveUP
    Call Build
    
    //C
    Call Sow
    Call MoveLeft
    Call MoveDown
    Call Build
    
    //D
    Call Sow
    Call MoveRight
    Call MoveDown
    Call Build
    
    While $CarA < 5 or $CarB < 5 or $CarC < 5 or $CarD < 5
      If $CarA < 5
        MousePos $CarAX, $CarAY
        Delay $MDelay
        Call CheckA
      End
      Delay 50
      If $CarB < 5
        MousePos $CarBX, $CarBY
        Delay $MDelay
        Call CheckB
      End
      Delay 50
      If $CarC < 5
        MousePos $CarCX, $CarCY
        Delay $MDelay
        Call CheckC
      End
      Delay 50
      If $CarD < 5
        MousePos $CarDX, $CarDY
        Delay $MDelay
        Call CheckD
      End
      Delay 2000
    End
    
    If {loopno} <> $Loops
      if $Aquaduct = 0
        Call Water
      else
        Call Aqua
      End
    End
    
    Delay 5000
    SetConst CarAX = 0
    SetConst CarAY = 0
    SetConst CarA = 0
    SetConst CarB = 0
    SetConst CarC = 0
    SetConst CarD = 0
  End
  
End

Procedure Onions       //----------------Onions----------------//
  Loop $Loops
    Call Plant
    SetConst OFPX = $FPX
    SetConst OFPY = $FPY
    SetConst Onion = 1
    
    Loop $Plants  //Find and Pin Plants
      Delay $M2Delay
      Case
      When {LoopNo} < 6
        Compute FPX = $OFPX - ($OStep * ( {LoopNo} - 1 ))
      When {LoopNo} < 11
        Compute FPX = $OFPX - $OStep * ( {LoopNo} - 6 )
        Compute FPY = $OFPY + $OStep
      When {LoopNo} < 16
        Compute FPX = $OFPX - $OStep * ( {LoopNo} - 11 )
        Compute FPY = $OFPY + $OStep * 2
      When {LoopNo} < 21
        Compute FPX = $OFPX - $OStep * ( {LoopNo} - 16 )
        Compute FPY = $OFPY + $OStep * 3
      When {LoopNo} < 26
        Compute FPX = $OFPX - $OStep * ( {LoopNo} - 21 )
        Compute FPY = $OFPY + $OStep * 4
      End
      Call CheckOnions
    End
    SetConst Onion = 1
    Loop 5   //Watering
      Loop $Plants  // Number of plants
        If $Onion = 5
          Compute OWX = {mousex} + 168
          SetConst OWY = 120
        End
        If $Onion = 9
          Compute OWX = {mousex} + 168
          SetConst OWY = 120
        End
        
        Compute NewY = $OWY - $OSetWinX
        MousePos $OWX, $NewY
        Delay $M2Delay
        Rightclick
        Delay $M2Delay
        Mousepos $OWX, $OWY
        Delay $M2Delay
        Rightclick  //waters
        If $Close = 4
          SetConst varOriginalMouseX = {MouseX}
          SetConst varOriginalMouseY = {MouseY}
          Compute NewX = $OWX + 122
          Compute NewY = $OWY - 30
          MousePos $NewX, $NewY
          Delay 200
          Rightclick
          Delay 200
          MousePos $varOriginalMouseX, $varOriginalMouseY
          Delay 200
        End
        Compute OWY = {MouseY} + $ODragYAdd  //60
        If $Onion = 1
          Delay $P1Delay  //Plant 1 time
        Else
          Delay $MoveDelay  //Move Time
        End
        Compute Onion = $Onion + 1
      End
      
      If $Close <> 4
        Delay $WDelay  //Pause between waterings
      End
      Inc $Close
      SetConst Onion = 1
      Compute OWX = 50
      Compute OWY = 120
    End
    
    //Reposition
    
    Mousepos $ResetX, $ResetY
    Leftclick
    Delay 1000
    Compute Onion = 1
    Compute ODragX = 4
    Compute ODragY = 90
    SetConst Close = 0
    //Compute Ox = 495
    //Compute Oy = 380
    Call Resolution
    If Veggie[ed6] = True
      Call Venery
    End
    If {loopno} <> $Loops
      if $Aquaduct = 0
        Call Water
      else
        Call Aqua
      End
    End
    Compute OWX = 50
    Compute OWY = 120
  End
End

Procedure Plant  //For Onions
  Loop $Plants  //Number of plants
    Call Sow
    Case
    When $Onion < 6
      SetConst OPRow = 0
    When $Onion < 11
      SetConst OPRow = 1
    When $Onion < 16
      SetConst OPRow = 2
    When $Onion < 21
      SetConst OPRow = 3
    When $Onion < 26
      SetConst OPRow = 4
    End
    
    Compute NumY = $OPRow * 2
    MousePos 59, 120
    Delay $MDelay
    If $NumY > 0
      Loop $NumY
        Rightclick
      End
    End
    
    MousePos 37, 97
    Delay $MDelay
    Case
    When $Onion < 6
      Compute NumX = $Onion * 2
    When $Onion < 11
      Compute NumX = $Onion * 2 - 10
    When $Onion < 16
      Compute NumX = $Onion * 2  - 20
    When $Onion < 21
      Compute NumX = $Onion * 2 - 30
    When $Onion < 26
      Compute NumX = $Onion * 2 - 40
    End
    
    Loop $NumX
      Rightclick
    End
    
    // New Routine to find onions before plant
    If {loopno} = 1
      Compute Ox = $CenterX - $OSx
      Compute Oy = $CenterY - $OSy
      Mousepos $Ox, $Oy
      Delay $MDelay
      Loop 40
        RightClick
        IsObject Plant at {MouseX}, {MouseY}
          SetConst FPY = {MouseY}
          SetConst TopX = {MouseX}
          Compute TopY = {MouseY} + 2
          //SetConst TopY = {MouseY}
          Keys {Esc}
          Delay $MDelay
          Call FindLeft
          Set Done = 0
          Call FindRight
          Set Done = 0
          Compute OCal = $RightX - $LeftX
          Compute Result = $RightX - ($RightX - $LeftX)/2
          Formatnumber FPX = $Result, ###
          Case
          When $Ocal < 5
            //Do Nothing
          When $Ocal < 11
            Compute FPX = $FPX + 2
            //Bell
          When $Ocal > 20
            Compute FPX = $RightX - 7
            //Bell
            //Delay 500
            //Bell
          End
          Break
        Else
          Compute Oy = $Oy + 1
          MousePos $OX, $Oy
          Delay $MDelay
        End
      End
    End
    Compute Onion = $Onion + 1
    
    Call Build
  End
End

Procedure CheckOnions
  //Check here to see if window is actually there
  While $Done = 0
    MousePos $FPX, $FPY
    Delay $SDelay
    Rightclick
    Delay 100
    IsObject Plant at {mousex}, {mousey}
      Break
    Else
      dec $FPX
    End
  End
  Compute NewX = {mousex} + $OPinX
  Compute NewY = {mousey} - $OPinY   //23
  MousePos $NewX, $NewY
  Delay $SDelay //$M2Delay
  Rightclick  //Pin
  Compute NewX = {mousex} - $ODWX  //169
  MousePos $NewX, $NewY  //left edge of window before drag
  if $Onion > 8
    Dragto $ODragX, $ODragY
    Compute ODragY = $ODragY + $ODragYAdd
  End
  if $Onion = 5 or $Onion = 6 or $Onion = 7 or $Onion = 8
    Dragto $ODragX, $ODragY
    Compute ODragY = $ODragY + $ODragYAdd
  End
  If $Onion = 2 or $Onion = 3 or $Onion = 4
    Dragto $ODragX, $ODragY
    Compute ODragY = $ODragY + $ODragYAdd
  End
  if $Onion = 1
    Dragto $ODragX, $ODragY
    Compute ODragY = $ODragY + $ODragYAdd
  End
  Compute Onion = $Onion + 1
  If $Onion = 5
    SetConst ODragY = 90
    Compute ODragX = $ODragX + 168
  End
  If $Onion = 9
    SetConst ODragY = 90
    Compute ODragX = $ODragX + 168
  END
End

Procedure FindButton  //Run Once Find Button and Set X,Y Coords
  Compute CenterX = {ScreenWidth} / 2
  Compute CenterY = {ScreenHeight} / 2
  SetConst NewX = $CenterX
  SetConst NewY = 98
  MousePos $NewX, $NewY
  Case
  When $Direction = 0 //Move Left
    SetConst Count = 50
    While $NewX > $Count
      MousePos $NewX, $NewY
      IsObject Water at {mousex}, {mousey}
        SetConst WaterX = {mousex}
        SetConst WaterY = {mousey}
        Break
      Else
        Compute NewX = $NewX - 1
      End
    End
  When $Direction = 1 //Move Right
    Compute Count = {ScreenWidth} - 50
    While $NewX < $Count
      MousePos $NewX, $NewY
      IsObject Water at {mousex}, {mousey}
        SetConst WaterX = {mousex}
        SetConst WaterY = {mousey}
        Break
      Else
        Compute NewX = $NewX + 1
      End
    End
  End
End

Procedure Water
  MousePos $WaterX, $WaterY
  Delay $MDelay
  Rightclick
  Delay $MDelay
  Compute NewX = {screenwidth} / 2
  Compute NewY = {screenheight} / 2
  Compute NewY = $NewY + 35
  MousePos $NewX, $NewY
  Delay $MDelay
  Rightclick
  Delay 3000
End

Procedure Aqua
  Delay 2000
  Compute NewY = $WaterY - 40
  MousePos $WaterX, $NewY
  Delay $M2Delay
  Rightclick
  Delay $M2Delay
  MousePos $WaterX, $WaterY
  Delay $M2Delay
  Rightclick
  Delay $M2Delay
End

Procedure FindLeft
  While $Done = 0
    Compute TopX = $TopX - 1
    MousePos $TopX, $TopY
    Delay $MDelay
    Rightclick
    Delay $MDelay
    IsObject Plant at {MouseX}, {MouseY}
      Set LeftX = {mousex}
      Keys {Esc}
      Delay $MDelay
    Else
      Compute TopX = $TopX + 1
      Compute LeftX = $TopX
      inc Done
    End
  End
End

Procedure FindRight
  While $Done = 0
    Compute TopX = $TopX + 1
    MousePos $TopX, $TopY
    Delay $MDelay
    Rightclick
    Delay $MDelay
    IsObject Plant at {MouseX}, {MouseY}
      Set RightX = {MouseX}
      Keys {Esc}
      Delay $MDelay
    Else
      Compute TopX = $TopX - 2
      MousePos $TopX, $TopY
      inc Done
    End
  End
End

Procedure FindTop
  While $Done = 0
    Compute TopY = $TopY - 1
    MousePos $TopX, $TopY
    Delay $MDelay
    Rightclick
    Delay $MDelay
    IsObject Plant at {MouseX}, {MouseY}
      Set TopY = {MouseY}
      Keys {Esc}
      Delay $MDelay
    else
      inc Done
      Compute TopY = $TopY + 1
    End
  End
End

Procedure Sow
  MousePos $Sow
  Delay $MDelay
  Rightclick
End

Procedure MoveRight
  MousePos $MoveRight
  Delay $MDelay
  RightClick
End

Procedure MoveUP
  MousePos $MoveUp
  Delay $MDelay
  RightClick
End

Procedure MoveLeft
  MousePos $MoveLeft
  Delay $MDelay
  RightClick
End

Procedure MoveDown
  MousePos $MoveDown
  Delay $MDelay
  RightClick
End

Procedure Build
  MousePos $Build
  Delay $MDelay
  RightClick
End

Function CheckforLostFocus
  if {activewindow} contains eGenesis
    Compute Result = 0
    Exit
  Else
    Stop
  End
End

Procedure Resolution
  Case
  When $Res = 1920x1080
    //Cabbage
    SetConst CabSX = 65
    SetConst CabSY = 116
    SetConst CabBXSM = 77
    SetConst CabBYSM = 1
    SetConst CabCXSM = 117
    SetConst CabCYSM = 181
    SetConst CabDXSM = 56
    SetConst CabDYSM = 162
    SetConst CabAXadj = 12
    SetConst CabAYadj = 23
    SetConst CabBXadj = 14
    SetConst CabBYadj = 24
    SetConst CabCXadj = 16
    SetConst CabCYadj = 23
    SetConst CabDXadj = 26
    SetConst CabDYadj = 10
    //Carrots
    SetConst CarSX = 23
    SetConst CarSY = 78
    SetConst CarAYSM = 1
    SetConst CarBXSM = 77
    SetConst CarCXSM = 88
    SetConst CarCYSM = 137  //115
    SetConst CarDXSM = 41   //25
    SetConst CarDYSM = 110  //105
    SetConst CarAXadj = 8
    SetConst CarAYadj = 10
    SetConst CarBXadj = 8
    SetConst CarBYadj = 10
    SetConst CarCXadj = 10  //8
    SetConst CarCYadj = 21  //10
    SetConst CarDXadj = 20  //8
    SetConst CarDYadj = 6   //5
    //Garlic
    SetConst GarSX = 55
    SetConst GarSY = 69
    SetConst GarAYSM = 2
    SetConst GarBXSM = 79
    SetConst GarCXSM = 67
    SetConst GarCYSM = 139
    SetConst GarDXSM = 11
    SetConst GarDYSM = 139
    SetConst GarAXadj = 8
    SetConst GarAYadj = 13
    SetConst GarBXadj = 8
    SetConst GarBYadj = 13
    SetConst GarCXadj = 6
    SetConst GarCYadj = 15
    SetConst GarDXadj = 3
    SetConst GarDYadj = 18
    //Leeks
    SetConst LeekSX = 63
    SetConst LeekSY = 69
    SetConst LeekBXSM = 78
    SetConst LeekCXSM = 108
    SetConst LeekCYSM = 158
    SetConst LeekDXSM = 9
    SetConst LeekDYSM = 135
    SetConst LeekAXadj = 8 //3
    SetConst LeekAYadj = 20
    SetConst LeekBXadj = 3
    SetConst LeekBYadj = 26
    SetConst LeekCXadj = 11
    SetConst LeekCYadj = 15
    SetConst LeekDXadj = 15
    SetConst LeekDYadj = 11
    //Onions
    SetConst OSx = 78
    SetConst OSy = 29
    SetConst ResetX = 1135
    SetConst ResetY = 556
    SetConst OStep = 76
    SetConst OPinX = 172
    SetConst OPinY = 30
    SetConst ODragYAdd = 60
    
  When $Res = 1280x1024
    //Cabbage
    SetConst CabSX = 53
    SetConst CabSY = 80
    SetConst CabBXSM = 51
    SetConst CabBYSM = 1
    SetConst CabCXSM = 77
    SetConst CabCYSM = 123
    SetConst CabDXSM = 37
    SetConst CabDYSM = 109
    SetConst CabAXadj = 8
    SetConst CabAYadj = 17
    SetConst CabBXadj = 8
    SetConst CabBYadj = 18
    SetConst CabCXadj = 10
    SetConst CabCYadj = 16
    SetConst CabDXadj = 16
    SetConst CabDYadj = 6
    //Carrots
    SetConst CarSX = 13
    SetConst CarSY = 58
    SetConst CarAYSM = 1
    SetConst CarBXSM = 52
    SetConst CarCXSM = 58
    SetConst CarCYSM = 93
    SetConst CarDXSM = 30
    SetConst CarDYSM = 72
    SetConst CarAXadj = 4
    SetConst CarAYadj = 8
    SetConst CarBXadj = 4
    SetConst CarBYadj = 8
    SetConst CarCXadj = 7
    SetConst CarCYadj = 13
    SetConst CarDXadj = 13
    SetConst CarDYadj = 4
    //Onions
    //SetConst Ox = 618
    //SetConst Oy = 487
    SetConst OSx = 44
    SetConst OSy = 24
    SetConst ResetX = 707
    SetConst ResetY = 531
    SetConst OStep = 52
    SetConst OPinX = 172
    SetConst OPinY = 31
    SetConst ODragYadd = 60
    //Garlic
    SetConst GarSX = 36
    SetConst GarSY = 51
    SetConst GarAYSM = 1
    SetConst GarBXSM = 57
    SetConst GarCXSM = 45
    SetConst GarCYSM = 92
    SetConst GarDXSM = 8
    SetConst GarDYSM = 93
    SetConst GarAXadj = 4
    SetConst GarAYadj = 9
    SetConst GarBXadj = 4
    SetConst GarBYadj = 9
    SetConst GarCXadj = 4
    SetConst GarCYadj = 10
    SetConst GarDXadj = 2
    SetConst GarDYadj = 10
    //Leeks
    SetConst LeekSX = 50
    SetConst LeekSY = 60
    SetConst LeekBXSM = 52
    SetConst LeekCXSM = 69
    SetConst LeekCYSM = 104
    SetConst LeekDXSM = 9
    SetConst LeekDYSM = 94
    SetConst LeekAXadj = 4
    SetConst LeekAYadj = 16
    SetConst LeekBXadj = 4
    SetConst LeekBYadj = 16
    SetConst LeekCXadj = 7
    SetConst LeekCYadj = 12
    SetConst LeekDXadj = 8
    SetConst LeekDYadj = 7
    
  When $Res = 1360x768
    //Cabbage
    SetConst CabSX = 51
    SetConst CabSY = 81
    SetConst CabBXSM = 53
    SetConst CabBYSM = 1
    SetConst CabCXSM = 83
    SetConst CabCYSM = 129
    SetConst CabDXSM = 40
    SetConst CabDYSM  = 115
    SetConst CabAXadj = 9
    SetConst CabAYadj = 19
    SetConst CabBXadj = 9
    SetConst CabBYadj = 20
    SetConst CabCXadj = 12
    SetConst CabCYadj = 21
    SetConst CabDXadj = 15
    SetConst CabDYadj = 8
    //Carrots
    SetConst CarSX = 14
    SetConst CarSY = 61
    SetConst CarAYSM = 1
    SetConst CarBXSM = 56
    SetConst CarCXSM = 63
    SetConst CarCYSM = 95
    SetConst CarDXSM = 31
    SetConst CarDYSM = 77
    SetConst CarAXadj = 4
    SetConst CarAYadj = 8
    SetConst CarBXadj = 4
    SetConst CarBYadj = 8
    SetConst CarCXadj = 7
    SetConst CarCYadj = 17
    SetConst CarDXadj = 13
    SetConst CarDYadj = 3
    //Onions
    SetConst OSx = 62
    SetConst OSy = 19
    SetConst ResetX = 805
    SetConst ResetY = 402
    SetConst OStep = 55
    SetConst OPinX = 178
    SetConst OPinY = 30
    SetConst ODragYAdd = 60
    //Garlic
    SetConst GarSX = 34
    SetConst GarSY = 50
    SetConst GarAYSM = 1
    SetConst GarBXSM = 57
    SetConst GarCXSM = 45
    SetConst GarCYSM = 98
    SetConst GarDXSM = 11
    SetConst GarDYSM = 97
    SetConst GarAXadj = 5
    SetConst GarAYadj = 10
    SetConst GarBXadj = 5
    SetConst GarBYadj = 10
    SetConst GarCXadj = 3
    SetConst GarCYadj = 11
    SetConst GarDXadj = 3
    SetConst GarDYadj = 11
    //Leeks
    SetConst LeekSX = 57
    SetConst LeekSY = 64
    SetConst LeekBXSM = 56
    SetConst LeekCXSM = 76
    SetConst LeekCYSM = 109
    SetConst LeekDXSM = 7
    SetConst LeekDYSM = 94
    SetConst LeekAXadj = 4
    SetConst LeekAYadj = 16
    SetConst LeekBXadj = 4
    SetConst LeekBYadj = 16
    SetConst LeekCXadj = 7
    SetConst LeekCYadj = 13
    SetConst LeekDXadj = 10
    SetConst LeekDYadj = 9
  End
End

Procedure Venery
  Compute ODragYAdd = $ODragYAdd + 16
  
End
Bell