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.
User:Anka/Macros/Veggies
From ATITD5
Jump to navigationJump to search//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