The Wiki for Tale 4 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:TamBlack/Macros

From A Tale in the Desert
Jump to navigationJump to search

Icon gather

//General purpose slate and clay collector.  Works best without water jugs
//or a fishing pole.  To begin, hover your mouse over the icon
//you wish to collect in ATITD (i.e. be over a patch of clay or a piece of
//slate and have this program active.  Press F2, and the macro will start.
Constants
Red = 0
Green = 0
Blue = 0
XPos = 0
YPos = 0
CurrKey = 0
End
SetConst XPos = {MouseX}
SetConst YPos = {MouseY}
LoadRGB $XPos, $YPos
SetConst Red = {RGBRed}
SetConst Blue = {RGBBlue}
SetConst Green = {RGBGreen}
SetConst CurrKey = {GlobalKeys}



loop 10000


GetRed  $XPos, $YPos = $Red
	GetGreen  $XPos, $YPos = $Green
		GetBlue  $XPos, $YPos = $Blue
	
			MousePos $XPos, $YPos
			Delay 5
  		LeftClick 
		End
	End
End
	
Delay 100
End

Charcoal Heart

//Charcoal Hearth
//   
//  TamBlack:
//   - Make sure TAKE is NOT an option!! Only use SETUP option ONCE!!
//   - To test the y position, start with 1 heart/oven and press begin. Then run the macro
//     with 1 oven and only checked boxes for Guilded + Need setup + Mouse check. The cursor
//     will then go over all the important locations so you can see if the y is lined up correctly.
//
//   I've made some improvements to the Hearth macro.  Depending on your resolution,
//   the macro will run up to 12 guilded hearths.  I've tested it in 1280x960
//   resolution without any need to change values.  It may work in other resolutions
//   also but I have not been able to test it.  If you are using personal hearths,
//   it will run up to 10 in 1280x960.  Maximum number in 1024x768 is 8.
//
// Setup:  I've added a setup routine to the macro.  Pin the windows on top of each
//         other in the top left corner.  I suggest at least 200 wood per hearth
//         and about 15 water per hearth to be safe.  All hearths are slightly
//         different but I suggest that you put your fastest burning hearths first
//         in line.  You can tweak the settings in the built in menu.
//
//         Hearths: Total number of hearths you are running.
//         Hearths Across: How many Hearths on the top row of windows.  Make sure
//                         you set this each time even if you are running 1 hearth.
//                         Variables in the macro are set off of this number.
//         Guilded?: Check this box if you are using guilded hearths.
//         Need Setup?: Check this box if you need the macro to position your
//                      windows that are stacked in top left corner.  This is
//                      usefull if you run another round on the hearths and your
//                      windows are set up already.  Check if needed or not.
//         Stealth Mouse: Check this if you don't want to see the mouse move around
//                        on the hearth windows.  When checked, it will save your
//                        mouse position, move to the spot it needs, perform its
//                        action then return the pointer to where it started.  Alows
//                        you to change chat windows are dig in chest while the
//                        macro is running :)
//         Heat: Threshold for Heat bar, increase or decrease as needed. If heat
//               reaches this lvl, water will be added.
//         Wood: Wood threshold, adds wood up to this point.
//         Water: Alowable water level, not much play here. If the water lvl is above
//                this lvl, water will not be added. Prevents drowning the hearth.
//         RGBGreen: Used to detect completion bar. If the macro adds a bunch of water
//                   before the macro is done then moves to the next hearth, increase
//                   this number. Or lower it if it doesnt see green.
//         RGBBlue: Works just like RGBGreen but for blue bars.  If the macro keeps
//                  adding wood till the hearth is full, it's not seeing blue.  If
//                  this happens, lower this number.  Other problem may be that the
//                  mouse pointer is not lining up over the bar correctly.  Run the
//                  Mouse Test.
//         Check Bars Interval: This is the pause time between bar checks.  The
//                              default value of 4000 works well for 1-8 hearths
//                              but you may need to decrease this number if you
//                              are running more than 8.
//         Mouse Test: This is to test if the mouse pointer is lining up correctly
//                     with your windows.  Run 1 hearth manually and start the macro
//                     with this option checked.  You don't need to worry about any
//                     other option.  It will move over the Heat, Wood, Water, Danger,
//                     and Status bar then over the Wood and Water buttons 10 times
//                     before it stops.  If these positions are off a bit, you can
//                     change the Y coordinates below in the constants section.
//
//         The macro doesn't watch Oxygen.  I was going to add a vent option but this
//         macro runs very well and never fails for me.  If your oxygen is getting too
//         high, try adding more wood.  But, by adding more wood, you add more heat
//         which may require you adding more water.  A small amount of water in the
//         presence of heat evaporates producing more Oxygen. :)  Find the balance
//         you want.
//
//  ENJOY! :)  Come visit me in LE :) 780, 6956  I have a large bar with tasting
//             tables and hookahs.
//  Anka
//
Constants
  //User Definable variables
  Hearths = 4
  HeatX = 165
  WoodX = 107
  WaterX = 76
  DangerX = 164
  RGBBlue = 220
  RGBGreen = 240
  Guild = 1

  // Y Coordinates - Don't change unless you are having a problem.
  // TamBlack: Oven value = -15 // heart value = -5 //original value
  RegY = 54//69//74      // Y coord for Regulator button
  BeginY = 225//240//245   // Y coord for Begin Button
  HeatY = 136//151//156    // Y coord for Heat Bar
  WoodY = 160//175//180    // Y coord for Wood Bar
  WaterY = 172//187//192   // Y coord for Water Bar
  DangerY = 184//199//204  // Y coord for Danger Bar
  StatusY = 196//211//216  // Y coord for Status Bar
  WoodBY = 230//245//250   // Y coord for Wood and Water buttons
  //End User variables
  
  Hrow = 0
  Hrow1 = 0
  AddX = 226
  Add2X = 15
  Add1Y = 65
  Add2Y = 17
  Add3Y = 250
  RegX = 47
  BeginX = 111
  NewX = 0
  New2X = 0
  New2Y = 0
  NewY = 0
  Heat = 0
  Wood = 0
  Water = 0
  Danger = 0
  Status = 0
  OxyY = 168
  StatusX = 167
  WoodBX = 35
  WaterBX = 85
  Num = 0
  Jump = 5
  JumpM = 0
  Jumped = 0
  Used = 0
  MDelay = 250
  SDelay = 200
  S1Delay = 100
  Count = 0
  CountM = 0
  MouseX = 0
  MouseY = 0
  CheckDelay = 0
  Setup = 0
  SetX = 10
  SetY = 40
  SetAddX = 227
  SetAddY = 250
  SetLoop = 0
  Mouse = 1
  OrigX = 0
  OrigY = 0
End

Form ccHearth, Settings
  ed1=Combobox:Hearths:1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
  ed13=Editbox:Hearths Across:4
  ed2=CheckBox:Guilded?:True
  ed14=Checkbox:Need Setup?:True
  ed15=Checkbox:Stealth Mouse:False
  ed3=Editbox:Heat                  (75-188):165
  //ed10=Editbox:HeatMin            (75-188):116
  //ed11=Editbox:HeatMax           (75-188):184
  //ed4=Editbox:Low Oxy            (75-188):82
  //ed5=Editbox:High Oxy           (75-188):134
  ed6=Editbox:Wood                (75-188):107
  ed7=Editbox:Water                (75-188):76
  ed8=Editbox:RGBGreen:240
  ed9=Editbox:RGBBlue:220
  ed12=Editbox:Check Bars Interval  (miliseconds):4000
  ed16=Checkbox:Mouse Check:False
end

FormLoad ccHearth, ccHearth.frm

if ShowForm ccHearth
  SetConst Hearths = ccHearth[ed1]
  If ccHearth[ed2] = True
    SetConst Guild = 1
  Else
    SetConst Guild = 0
  End
  SetConst HeatX = ccHearth[ed3]
  //SetConst Oxy1X = ccHearth[ed4]
  //SetConst Oxy2X = ccHearth[ed5]
  SetConst WoodX = ccHearth[ed6]
  SetConst WaterX = ccHearth[ed7]
  SetConst RGBGreen = ccHearth[ed8]
  SetConst RGBBlue = ccHearth[ed9]
  //SetConst HeatMin = ccHearth[ed10]
  //SetConst HeatMax = ccHearth[ed11]
  SetConst CheckDelay = ccHearth[ed12]
  Set HRow = ccHearth[ed13]
  Compute SetLoop = $Hearths - 1
  Compute HRow1 = $Hrow + 1
  If ccHearth[ed15] = True
    Set Mouse = 0
  End
else
  Stop
end

FormSave ccHearth, ccHearth.frm

MousePos 100, 20  //Activates eGenesis window.. Don't run ACTool maximized.
Delay $MDelay
LeftClick
Delay 2000

If $Guild = 1
  Call Guild
End
if ccHearth[ed16] = True
  Call HearthTest
End
If ccHearth[ed14] = True
  Call Setup
End

Call SetReg
SetConst NewX = $BeginX
SetConst NewY = $BeginY
SetConst Count = 1
Loop $Hearths
  If $Count = $HRow1 //$Jump
    SetConst NewX = $BeginX
    Compute NewY = $BeginY + $Add3Y
  End
  MousePos $NewX, $NewY
  Delay $MDelay
  Rightclick
  Delay $MDelay
  Compute NewX = $NewX + $AddX
  Compute Count = $Count + 1
End
SetConst NewX = $BeginX  //Dont remember why this is here :)
Call Main

Procedure Setup
  Set NewX = $SetX
  Set NewY = $SetY
  Loop $SetLoop
    Mousepos $SetX, $SetY
    if {loopno} = $HRow
      Set NewX = $SetX
      Compute NewY = $SetY + $SetAddY
    else
      Compute NewX = $NewX + $SetAddX
    End
    Dragto $NewX, $NewY
  End
End

Procedure Main
  SetConst CountM = 1
  SetConst Status = 0
  Compute JumpM = $HRow1 - 1 //$Jump - 1
  Loop $Hearths
    If $CountM = $HRow1 //$Jump
      // may have to use New Newx and newy variables in Main
      SetConst NewX = $StatusX
      Compute NewY = $StatusY + $Add3Y
      SetConst New2X = $WaterBX
      Compute New2Y = $WoodBY + $Add3Y
    End
    
    While $Status = 0
      Call CheckBars
      If $Status = 1
        Call Snuff
        //code to advance to next hearth
        Compute Used = $Used + 1
        If $Used = $JumpM
          Compute HeatX = $HeatX - (($Used - 1) * $AddX)
          Compute HeatY = $HeatY + $Add3Y
          Compute WoodX = $WoodX - (($Used - 1) * $AddX)
          Compute WoodY = $WoodY + $Add3Y
          Compute WaterX = $WaterX - (($Used - 1) * $AddX)
          Compute WaterY = $WaterY + $Add3Y
          Compute DangerX = $DangerX - (($Used - 1) * $AddX)
          Compute DangerY = $DangerY + $Add3Y
          Compute StatusX = $StatusX - (($Used - 1) * $AddX)
          Compute StatusY = $StatusY + $Add3Y
          //Compute WaterBX = $WaterBX - (($Used -1) * $AddX)
          //Compute WoodBX = $WoodBX - (($Used - 1 ) * $AddX)
          //Compute WoodBY = $WoodBY + $Add3Y
          SetConst Jumped = 1
          Continue
        Else
          Compute HeatX = $HeatX + $AddX
          Compute WoodX = $WoodX + $AddX
          Compute WaterX = $WaterX + $AddX
          Compute DangerX = $DangerX + $AddX
          Compute StatusX = $StatusX + $AddX
          //Compute WaterBX = $WaterBX + $AddX
          //Compute WoodBX = $WoodBX + $AddX
        End
        Continue
      End
      If $Heat = 0 and $Danger = 0 and $Wood = 0
        Call Wood
      Else
        If $Heat = 1 or $Danger = 1
          If $Water = 0
            Call Water
          End
        End
      End
      
      Delay $CheckDelay
    End
    Compute CountM = $CountM + 1
    SetConst Status = 0
  End
End

Procedure CheckBars
  If $Mouse = 1
    MousePos $HeatX, $HeatY
    Delay $SDelay
  end
  LoadRGB $HeatX, $HeatY
  if {RGBBlue} > $RGBBlue
    SetConst Heat = 1
  Else
    SetConst Heat = 0
  End
  If $Mouse = 1
    MousePos $WoodX, $WoodY
    Delay $S1Delay
  end
  LoadRGB $WoodX, $WoodY
  if {RGBBlue} > $RGBBlue
    SetConst Wood = 1
  Else
    SetConst Wood = 0
  End
  If $Mouse = 1
    MousePos $WaterX, $WaterY
    Delay $S1Delay
  End
  LoadRGB $WaterX, $WaterY
  if {RGBBlue} > $RGBBlue
    SetConst Water = 1
  Else
    SetConst Water = 0
  End
  If $Mouse = 1
    MousePos $DangerX, $DangerY
    Delay $S1Delay
  End
  LoadRGB $DangerX, $DangerY
  if {RGBBlue} > $RGBBlue
    SetConst Danger = 1
  Else
    SetConst Danger = 0
  End
  If $Mouse = 1
    MousePos $StatusX, $StatusY
  End
  LoadRGB $StatusX, $StatusY
  if {RGBGreen} > $RGBGreen
    SetConst Status = 1
  Else
    SetConst Status = 0
  End
End

Procedure Water
  SetConst NewX = $WaterBX
  SetConst NewY = $WoodBY
  Loop $Hearths
    IF {loopno} = $HRow1 //$Jump
      SetConst NewX = $WaterBX
      Compute NewY = $WoodBY + $Add3Y
    End
    If {loopno} > $Used
      If $Mouse = 0
        Set OrigX = {mousex}
        Set OrigY = {mousey}
      End
      MousePos $NewX, $NewY
      Delay $SDelay
      Rightclick
      Delay $SDelay
      If $Mouse = 0
        Mousepos $OrigX, $OrigY
      End
    End
    Compute NewX = $NewX + $AddX
  End
  SetConst NewX = $WaterBX
End

Procedure Snuff
  SetConst New2X = $WaterBX
  SetConst New2Y = $WoodBY
  Compute Num = $Used + 1
  Loop $Hearths
    IF {loopno} = $Hrow1 //$Jump
      SetConst New2X = $WaterBX
      Compute New2Y = $WoodBY + $Add3Y
    End
    If {loopno} = $Num
      If $Mouse = 0
        Set OrigX = {mousex}
        Set OrigY = {mousey}
      End
      MousePos $New2X, $New2Y
      Loop 8
        Rightclick
      End
      If $Mouse = 0
        Mousepos $OrigX, $OrigY
      End
    End
    Compute New2X = $New2X + $AddX
  End
End

Procedure Wood
  SetConst NewX = $WoodBX
  SetConst NewY = $WoodBY
  Loop $Hearths
    IF {loopno} = $HRow1 //$Jump
      SetConst NewX = $WoodBX
      Compute NewY = $WoodBY + $Add3Y
    End
    If {loopno} > $Used
      If $Mouse = 0
        Set OrigX = {mousex}
        Set OrigY = {mousey}
      End
      MousePos $NewX, $NewY
      Delay $SDelay
      Rightclick
      Delay $SDelay
      If $Mouse = 0
        MousePos $OrigX, $OrigY
      End
    End
    Compute NewX = $NewX + $AddX
  End
  SetConst NewX = $WoodBX
End

Procedure SetReg
  SetConst NewX = $RegX
  SetConst Count = 1
  Loop $Hearths
    If $Count = $HRow1
      SetConst NewX = $RegX
      Compute RegY = $RegY + $Add3Y
    End
    MousePos $NewX, $RegY
    Delay $MDelay
// TamBlack: turn off the regulator setup
//   Rightclick
    Compute NewX = $NewX + $Add2X
    If $Count > $HRow
      Compute NewY = $RegY + $Add2Y
    else
      Compute NewY = $RegY + $Add1Y
    end
    MousePos $NewX, $NewY
    Delay $MDelay
// TamBlack: turn off the regulator setup
//    Rightclick
    Delay $MDelay
    Compute NewX = $NewX + $AddX
    Compute Count = $Count + 1
  End
  SetConst NewX = $RegX
  SetConst Count = 1
End

Procedure Guild
  Compute BeginX = $BeginX - 7
  Compute BeginY = $BeginY + 16
  Compute RegY = $RegY + 16
  Compute RegX = $RegX - 14
  Compute AddX = $AddX - 15
  Compute Add3Y = $Add3Y + 16
  Compute Add1Y = $Add1Y - 16
  Compute WoodBY = $WoodBY + 16
  Compute HeatX = $HeatX - 4
  Compute HeatY = $HeatY + 16
  Compute WoodX = $WoodX - 1
  Compute WoodY = $WoodY + 16
  Compute WaterY = $WaterY + 16
  Compute DangerX = $DangerX - 4
  Compute DangerY = $DangerY + 16
  Compute StatusX = $StatusX - 5
  Compute StatusY = $StatusY + 16
  Set SetAddX = 212
  Set SetAddY = 266
End

Procedure HearthTest
  Loop 1
    MousePos $HeatX, $HeatY
    Delay 2000
    
    MousePos $WoodX, $WoodY
    Delay 2000
    
    MousePos $WaterX, $WaterY
    Delay 2000
    
    MousePos $DangerX, $DangerY
    Delay 2000
    
    MousePos $StatusX, $StatusY
    Delay 2000
    
    MousePos $WoodBX, $WoodBY
    Delay 2000
    
    MousePos $WaterBX, $WoodBY
    Delay 2000

MousePos 104, 251
    MousePos $BeginX, $BeginY
    Delay 2000
  end
  Stop
End
//Written with ACTool 5.3.0 by Anka
Bell Asterisk


Plant flax and harvest seeds

//This Macro will plant several rows of flax in order to harvest seeds from them
//
//You will need to use double F8 view. Zoom all the way in, then 7 mousewheel clicks out
//(your avatar will be a little smaller than the size of the thumb in the Gather Grass icon
//For this to work you need to **minimize chat***
//Open the Plant menu and pin it to the top or bottom of the screen
//When the macro starts, you will need to quickly mouse-over the Plant Flax Seed instruction
//As the macro runs, your avatar should stay in the middle of the flax beds, but he will stray
//It is up to you to move him back to the middle (or close) when this happens
//It is my belief this is caused by server lag and therefore cannot be avoided
//I use screen resolution 1280x1024 on a wide-screen monitor

//MousePos 638,508 //My Head
delay 3000
Constructs
  MouseX=List // this is an array of mouse X coords 
  MouseY=List // this is an array of mouse Y coords 
END

Constants
  RowLen=7 //actually does n+1 -- Recommend 7 or fewer if Seedcycles is 3
  ColLen=2 //actually does n*2 -- Recommend 2 or fewer if Seedcycles is 3
  ActualCols=0	//program sets this
  ActualRows=0  //not used
  XHomeDist=0 //Not necessary because it plants even numbers of rows
  YHomeDist=0 //sets later
  SeedCycles=3 //harvest how many times (n+1) -- for best results use 3 or less
  InitialDelay=50000 //Time until the flax goes to seed and can be harvested
  NextDelay=0 //Program sets this - the time between subsequent harvest cycles
  LoopVal = 1 //do not modify
  
END

Compute ActualCols = $ColLen * 2
Compute YHomeDist = (($ActualCols-1) * 375)
Compute InitialDelay = $InitialDelay - (475 * ($RowLen + 1) * ($ColLen * 2)) + 475
Compute NextDelay = 66000 - ($ColLen * 2) * ($RowLen + 1) * 1950
Compute NextDelay = MAX ($NextDelay, 0)
//Acquire Location of Plant:Flax Seed
Listadd MouseX, {MouseX}
Listadd MouseY, {MouseY}

Call Plant $RowLen, $ColLen
Delay $InitialDelay

loop $SeedCycles
  Call HarvestAllSeeds $RowLen, $ColLen, 0 //This cycle harvests only
  Delay $NextDelay
end

//This cycle harvests then rips out the flax bed.
//If you like picking a lot of seeds up off the ground, remove the next line.
Call HarvestAllSeeds $RowLen, $ColLen, 1


Procedure Plant using Across, Down
//This procedure creates a grid of Flax of size (Across +1) x (Down * 2)
//It utilizes global variable MouseX and MouseY holding the location of the plant Flax pin
//It also uses global variable $YHomeDist and $InitialDelay to return to the starting point
	Compute LoopVal = 1
  loop $Down //this one controls how many columns (N+1)(B)
		mousepos {MouseX[1],MouseY[1] 
		LeftClick
		loop $RowLen //this one controls how many in a line (n) (A)
   		KeyDown {RIGHT} 375
   		Delay 100
    	mousepos {MouseX[1],MouseY[1] 
    	LeftClick
  	end

  	KeyDown {DOWN} 375
  	Delay 100
  	mousepos {MouseX[1],MouseY[1] 
  	LeftClick

  //this one controls how many in a line (n+1)
	  loop $Across //this one controls how many in a line (n+1) (A)
  		Keydown {LEFT} 375
  		Delay 100
   		mousepos {MouseX[1],MouseY[1] 
  		LeftClick	
 		end

		if $LoopVal < $Down
	  	KeyDown {DOWN} 375
	 	end
  	Delay 100
  	Compute LoopVal = $LoopVal + 1
	End 
	
	KeyDown {UP} $YHomeDist

END //Planting

Procedure HarvestAllSeeds using Across, Down, Yank
//This procedure harvesta seeds from a grid of Flax of size (Across +1) x (Down * 2)
//If Yank = 1 it will also rip out the plant
		Compute LoopVal = 1
		loop $Down //this one controls how many columns (N+1)(B)
		Call HarvestOneSeed
		if $Yank = 1
	  	Call Ripout
		end

  	loop $Across //this one controls how many in a line (n) (A)
   		KeyDown {RIGHT} 375
    	Delay 100
 			Call HarvestOneSeed
			if $Yank = 1
	  		Call Ripout
			end
		end

  	KeyDown {DOWN} 375
  	Delay 100
		Call HarvestOneSeed
		if $Yank = 1
	  	Call Ripout
		end

	
   //this one controls how many in a line (n+1)
  	loop $Across //this one controls how many in a line (n+1) (A)
  		Keydown {LEFT} 375
  		Delay 100
			Call HarvestOneSeed
			if $Yank = 1
	  		Call Ripout
			end
	 	end

		if $LoopVal < $Down
	  	KeyDown {DOWN} 375
	  end
	  Compute $LoopVal = $LoopVal + 1
  	Delay 100
	end
	KeyDown {UP} $YHomeDist
end


Procedure HarvestOneSeed 
//Clicks on flax bed your are standing in, and selects harvest
//I repeat the mousepos because I find it reduces server/client transmission miscues
//which would cause the pop up menu to stray from where it should be
  mousepos 654, 504 
	Delay 30
  mousepos 654, 504 
	LeftClick
	Delay 60
	mousepos 690, 499
	Delay 60
	mousepos 690, 499
	LeftClick
	Delay 1800
end



Procedure RipOut
//Clicks on flax bed your are standing in, and selects Utility->Rip Out
//Because picking up flax seeds off the ground is annoying.
//I repeat the mousepos because I find it reduces server/client transmission miscues
//which would cause the pop up menu to stray from where it should be  MousePos 654, 504
	Delay 30
  MousePos 654, 504
	LeftClick
	Delay 70
  MousePos 724, 527
  Delay 30
  MousePos 724, 527
	LeftClick
  Delay 70
	MousePos 746, 509
	Delay 30
	MousePos 746, 509
	LeftClick
	Delay 70
end

Harvest Macro TO BE TESTED


// make sure you pin your plant/flax window in the upper left corner of your screen
Constants
  CenterX = 637 // at 1280x1024 this is my center windowed
  CenterY = 527 // at 1280x1024 this is my center windowed
  VariableY = 527 // this doesn't need to be set, it gets set while running
  VariableX = 637 // this doesn't need to be set, it gets set while running
  MenuX = 0
  MenuY = 0
  TopY = 10 //Top of the window for zooming
  TopCY = 40 //Topclickable Y
  TopCX = 40 // Topclickable X
  Gridup = 5 //number of flax top to bottom
  Gridside = 5 //number of flax side to side
  Column = 1 //leave this at 1
  NormDelay = 1000 //the delay between actions
  StartDelay = 3000 //this is the zoom in delay, larger means closer
  DoItAgain = 2 // added so I flax more than once without the F8/F8 reset
    // Set DoItAgain to the number of times you want to run 25, the grid is offset so keep that in mind
END

Procedure START
  Keys {F8}
  Keys {F8}
  MousePos $CenterX,$TopY
  Delay $StartDelay
  MousePos $CenterX,$CenterY
End

Procedure PLANT
  MousePos $TopCX, $TopCY
  LeftClick
END
Procedure CLICKMENU
  Compute MenuX = $VariableX + 10
  Compute MenuY = $VariableY - 5
  MousePos $MenuX, $MenuY
  Delay 250
  LeftClick
END

//This is where the actual macro starts, everything above are procedures
Call START
Delay $NormDelay
Compute Gridup = $Gridup-1
Compute VariableX = $CenterX+53

Loop $DoItAgain
  Loop $Gridside

    If $Column = 1 or $Column = 3 or $Column = 5 or $Column = 7
	Compute VariableY = $CenterY-50
    Else
	Compute VariableY = $CenterY+50
    End

    Call Plant
    Loop $Gridup
	MousePos $CenterX,$VariableY
	LeftClick
	Delay $NormDelay
	Call Plant
    END
    Compute $Column = $Column + 1
    MousePos $VariableX,$CenterY
    LeftClick
    Delay $NormDelay
  END

  Compute VariableX = $CenterX-(($Gridside+1)*50)
  Compute VariableY = $CenterY + (($Gridup-1)*50)-20
  MousePos $VariableX,$VariableY
  LeftClick

  Delay 1500
  RightClick

  Compute VariableX = $CenterX - 85
  Compute VariableY = $CenterY + 140
  MousePos $VariableX,$VariableY

  Delay 11000

  loop 3
    LeftClick
    Call CLICKMENU
    loop 4
	Compute VariableY = $VariableY - 50
	MousePos $VariableX,$VariableY
	Delay 700
	LeftClick
	Call CLICKMENU
    END

    loop 2
	Compute VariableY = $VariableY - 50
	Compute VariableX = $VariableX + 50
	
	loop 5
		Compute VariableY = $VariableY + 50
		MousePos $VariableX,$VariableY
		Delay 700
		LeftClick
		Call CLICKMENU
	END

	Compute VariableY = $VariableY + 50
	Compute VariableX = $VariableX + 50

	loop 5
		Compute VariableY = $VariableY - 50
		MousePos $VariableX,$VariableY
		Delay 700
		LeftClick
		Call CLICKMENU
	END
    END
	
    Compute VariableX = $CenterX - 85
    Compute VariableY = $CenterY + 140
    MousePos $VariableX,$VariableY
    Delay 1500
  END

  Delay 500
  Compute Column = 1
  Compute VariableX = $CenterX+53
END

Wood pane TO BE TESTED

// Pin Windows in 2 rows of 3,
// in top left corner of window
// works best at 1024 x 768 res
// Set line 16, for Number of loops
// usually total wood / 6
Procedure Delay300
  LeftClick
  delay 300
End

Procedure Delay600
  LeftClick
  delay 600
End

Loop 25
MousePos 120, 80
CALL Delay300
MousePos 120, 80
CALL Delay600

MousePos 400, 80
call Delay300
MousePos 400, 80
call Delay600

MousePos 690, 80
call Delay300
MousePos 690, 80
call Delay600

MousePos 120, 190
call Delay300
MousePos 120, 190
call Delay600

MousePos 400, 190
call Delay300
MousePos 400, 190
call Delay600

MousePos 690, 190
call Delay300
MousePos 690, 190
call Delay600

End

Coconut cracker TO BE TESTED

// Pin Crack Coconut Window to bottom left of screen, works best at 1024x768
// Set line 14 for number of loops desired :P
Delay 2500
MousePos 144, 701
LeftClick
MousePos 144, 701
LeftClick
MousePos 144, 701
LeftClick
MousePos 144, 701
LeftClick
MousePos 144, 701
LeftClick
Loop 100
MousePos 144, 701
LeftClick
Delay 10000
End