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.

Difference between revisions of "User:Cegaiel/Macros/Potash/Code"

From A Tale in the Desert
Jump to navigationJump to search
Line 2: Line 2:
  
 
<pre>
 
<pre>
;Make Potash with 6 kettles (MAY work with other stoked kettle projects, just change coordinates of Click Potash button)
+
0;Make Potash/Acid/Salt with 6 kettles
;Requires (1, 2, 3, 4, 5 runs):
 
;168, 336, 504, 672, 840 Wood
 
;150 Water
 
;30, 60, 90, 120, 150 Ash
 
  
;Pin 6 kettle menus from left to right
+
;Pin 6 kettle menus from left to right, starting at upper left corner
  
 
;Ctrl+Alt+W to start script
 
;Ctrl+Alt+W to start script
Line 24: Line 20:
 
^p::Pause
 
^p::Pause
 
^!w::
 
^!w::
 +
 +
;Date: May 19, 2010
 +
;Author: Cegaiel
  
  
Line 34: Line 33:
 
Exit
 
Exit
 
}
 
}
 +
  
  
Line 42: Line 42:
 
;You may remove this entire routine, if you wish.
 
;You may remove this entire routine, if you wish.
  
if (Xmax = 1032) && (Ymax = 746)
+
if !(Xmax = 1032) && (Ymax = 746)
 
{
 
{
nothing = 0
 
} else {
 
 
Msgbox, You are not in 1024x768 resolution`n`nExiting...
 
Msgbox, You are not in 1024x768 resolution`n`nExiting...
 
EXIT
 
EXIT
Line 55: Line 53:
 
Gui, +AlwaysOnTop +ToolWindow
 
Gui, +AlwaysOnTop +ToolWindow
 
Gui, Add, Text,, Type of Kettles?
 
Gui, Add, Text,, Type of Kettles?
Gui, Add, DropDownList, vKettle Choose1, Private|Public
+
Gui, Add, DropDownList, vKettle Choose2, Private|Public
Gui, Add, Button, Default gStart, GO
+
Gui, Add, Text,, What are we making?
 +
Gui, Add, DropDownList, vMake Choose2, Acid|Potash|Salt
 +
Gui, Add, Text,, How many runs?
 +
Gui, Add, Edit, vRuns wp number, 1
 +
Gui, Add, Button, Default gStart, BEGIN
 
Gui, Show
 
Gui, Show
 
return
 
return
Line 62: Line 64:
  
 
Start:
 
Start:
seconds = 5
 
  
 
Gui, Submit
 
Gui, Submit
 
Gui, Destroy
 
Gui, Destroy
Msgbox, Ingredients needed to run 6 kettles:`n`n168 Wood`n150 Water`n30 Ash`n`nMake sure you have that in your inventory!`n`nKettle Type: %Kettle%`n`nClick OK to continue...
+
 
Gui, +AlwaysOnTop +ToolWindow
+
Counter = 0
Gui, Font, bold
+
Wood := (168 * runs)
Gui, Add, Text, vMineCycleText, %seconds% seconds before the script will begin ...
+
Water := (150 * runs)
Gui, Font, norm
+
Salt := (6 * runs)
Gui, Show
+
Ash := (30 * runs)
GuiControl, Text, MineCycleText, %seconds% seconds before the script will begin ...
+
 
 +
if (Make == "Acid") {
 +
OutputTotal := (3 * 6 * runs)
 +
Msgbox, Ingredients needed to run 6 kettles (%runs% runs):`n`n%wood% Wood minimum (a few extra just in case)`n%water% Sulphurous Water`n%salt% Salt`n`nMake sure you have that in your inventory!`n`nYield: 3 Acid per kettle`nTotal: %OutputTotal% Acid (%runs% runs)`n`nKettle Type: %Kettle%`n`nClick OK to continue...
 +
 
 +
 
 +
;Position of the Acid button
 +
PotashX1 = 125
 +
PotashX2 = 295
 +
PotashX3 = 465
 +
PotashX4 = 635
 +
PotashX5 = 805
 +
PotashX6 = 975
 +
 
 +
PotashY = 265
 +
 
 +
} else if (Make == "Potash") {
 +
OutputTotal := (5 * 6 * runs)
 +
Msgbox, Ingredients needed to run 6 kettles (%runs% runs):`n`n%wood% Wood minimum (a few extra just in case)`n%water% Water`n%ash% Ash`n`nMake sure you have that in your inventory!`n`nYield: 5 Potash per kettle`nTotal: %OutputTotal% Potash (%runs% runs)`n`nKettle Type: %Kettle%`n`nClick OK to continue...
 +
 
 +
 
 +
;Position of the Potash button
 +
PotashX1 = 45
 +
PotashX2 = 220
 +
PotashX3 = 385
 +
PotashX4 = 555
 +
PotashX5 = 725
 +
PotashX6 = 890
 +
 
 +
PotashY = 170
 +
 
 +
} else if (Make == "Salt") {
 +
OutputTotal := (3 * 6 * runs)
 +
Msgbox, Ingredients needed to run 6 kettles (%runs% runs):`n`n%wood% Wood minimum (a few extra just in case)`n%water% Coconut Water`n`nMake sure you have that in your inventory!`n`nYield: 3 Salt per kettle`nTotal: %OutputTotal% Salt (%runs% runs)`n`nKettle Type: %Kettle%`n`nClick OK to continue...
 +
 
 +
 
 +
;Position of the Salt button
 +
PotashX1 = 125
 +
PotashX2 = 295
 +
PotashX3 = 465
 +
PotashX4 = 635
 +
PotashX5 = 805
 +
PotashX6 = 975
 +
 
 +
PotashY = 240
 +
}
 +
 
 +
 
 +
 
 +
;This is where the Stoke Max option appears on the menu
 +
StokeMaxX1 = 70
 +
StokeMaxX2 = 250
 +
StokeMaxX3 = 420
 +
StokeMaxX4 = 590
 +
StokeMaxX5 = 750
 +
StokeMaxX6 = 910
 +
 
 +
StokeMaxY = 75
 +
 
 +
 
 +
;Max button, this is after the pot is ignited and asks for Quantity, we hit the Max button instead of typing a number
 +
MaxButtonX = 515
 +
MaxButtonY = 420
 +
 
 +
 
 +
;The Begin, Ignite and Take button appear in the same place, so these apply to all three.
 +
BeginIgniteTakeX1 = 45
 +
BeginIgniteTakeX2 = 220
 +
BeginIgniteTakeX3 = 390
 +
BeginIgniteTakeX4 = 555
 +
BeginIgniteTakeX5 = 725
 +
BeginIgniteTakeX6 = 895
 +
 
 +
BeginIgniteTakeY = 240
 +
 
 +
 
 +
 
 +
;NOTE: PotashY, StokeMaxY and BeginIgniteTakeY is set to Y position in Private kettle setting.
 +
;If this is a public kettle AND you are trying to change numbers for another resolution, then note:
 +
;The coords are adjusted for public below, take that into consideration.
 +
;If you dont have any of your own kettles and will change numbers for a different resolution, then
 +
;Just plug in all the numbers above (center of buttons) and launch the script and choose "Private" kettle, even though it is "Public"
 +
 
 +
if (Kettle == "Public")
 +
{
 +
;If the kettle is public then it lowers 15 coords at 1024x768 (will vary with other resolutions)
 +
PotashY := PotashY + 15
 +
BeginIgniteTakeY := BeginIgniteTakeY + 15
 +
StokeMaxY := StokeMaxY + 15
 +
}
 +
 
 +
;Make sure the RefreshY line stays after the 'if (Kettle == "Public")' line
 +
;This is the Y button of when it clicks the top of the menu to refresh the menu
 +
 
 +
 
 +
RefreshY := (StokeMaxY - 25)
 +
  
  
  
  
 +
Gui, +AlwaysOnTop +ToolWindow
 +
Gui, Font, normal
 +
Gui, Add, Text, vMineCycleText, Preparing to start script, please stand by ...`n`n`n`n`n`n`n`n`n
 +
Gui, Show
  
  
Loop, %seconds%
+
delay = 6
 +
Loop, %delay%
 
{
 
{
GuiControl, Text, MineCycleText, %seconds% seconds before the script will begin ...
+
GuiControl, Text, MineCycleText, %delay% seconds before the script will begin ...`n`nMove this out of way!
seconds --
+
delay --
 
Sleep 1000
 
Sleep 1000
 
}
 
}
Line 92: Line 194:
  
 
WinActivate, eGenesis Client
 
WinActivate, eGenesis Client
 +
Sleep 500
 +
  
;Click Potash Button
 
  
PotashY = 165
+
Loop, %Runs%
if (Kettle == "Public")
+
{
PotashY := PotashY + 15
+
counter ++
 +
stoke = 0
 +
waterlevel = -
 +
countdown = 0
 +
seconds = 0
 +
minutes = 0
 +
seconds_eta = 30
 +
minutes_eta = 15
 +
cseconds = 0
 +
cminutes = 0
 +
sSeconds = 0
 +
sMinutes = 0
 +
 +
;Click Potash/Acid/Salt Button
 +
 
 +
GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Clicking "%make%" buttons...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s
  
  
GuiControl, Text, MineCycleText, Clicking Potash, Pot 1
+
Click, %PotashX1%, %PotashY% ;Pot 1
Click, 45, %PotashY% ;Pot 1
 
 
sleep 200
 
sleep 200
GuiControl, Text, MineCycleText, Click Potash, Pot 2
+
Click, %PotashX2%, %PotashY% ;Pot 2
Click, 220, %PotashY% ;Pot 2
 
 
sleep 200
 
sleep 200
GuiControl, Text, MineCycleText, Click Potash, Pot 3
+
Click, %PotashX3%, %PotashY% ;Pot 3
Click, 385, %PotashY% ;Pot 3
 
 
sleep 200
 
sleep 200
GuiControl, Text, MineCycleText, Click Potash, Pot 4
+
Click, %PotashX4%, %PotashY% ;Pot 4
Click, 555, %PotashY% ;Pot 4
 
 
sleep 200
 
sleep 200
GuiControl, Text, MineCycleText, Click Potash, Pot 5
+
Click, %PotashX5%, %PotashY% ;Pot 5
Click, 725, %PotashY% ;Pot 5
 
 
sleep 200
 
sleep 200
GuiControl, Text, MineCycleText, Click Potash, Pot 6
+
Click, %PotashX6%, %PotashY% ;Pot 6
Click, 890, %PotashY% ;Pot 6
 
 
sleep 200
 
sleep 200
  
Line 122: Line 234:
 
;Click Begin button
 
;Click Begin button
  
BeginIgniteY = 240
+
GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Clicking "Begin" buttons...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s
if (Kettle == "Public")
 
BeginIgniteY := BeginIgniteY + 15
 
  
  
GuiControl, Text, MineCycleText, Click Begin, Pot 1
+
Click, %BeginIgniteTakeX1%, %BeginIgniteTakeY% ;Pot 1
Click, 45, %BeginIgniteY% ;Pot 1
 
 
sleep 200
 
sleep 200
GuiControl, Text, MineCycleText, Click Begin, Pot 2
+
Click, %BeginIgniteTakeX2%, %BeginIgniteTakeY% ;Pot 2
Click, 220, %BeginIgniteY% ;Pot 2
 
 
sleep 200
 
sleep 200
GuiControl, Text, MineCycleText, Click Begin, Pot 3
+
Click, %BeginIgniteTakeX3%, %BeginIgniteTakeY% ;Pot 3
Click, 385, %BeginIgniteY% ;Pot 3
 
 
sleep 200
 
sleep 200
GuiControl, Text, MineCycleText, Click Begin, Pot 4
+
Click, %BeginIgniteTakeX4%, %BeginIgniteTakeY% ;Pot 4
Click, 555, %BeginIgniteY% ;Pot 4
 
 
sleep 200
 
sleep 200
GuiControl, Text, MineCycleText, Click Begin, Pot 5
+
Click, %BeginIgniteTakeX5%, %BeginIgniteTakeY% ;Pot 5
Click, 725, %BeginIgniteY% ;Pot 5
 
 
sleep 200
 
sleep 200
GuiControl, Text, MineCycleText, Click Begin, Pot 6
+
Click, %BeginIgniteTakeX6%, %BeginIgniteTakeY% ;Pot 6
Click, 890, %BeginIgniteY% ;Pot 6
 
 
sleep 200
 
sleep 200
  
  
  
 +
;Click Ignite + Max button, then Refresh Menu (to show Stoke Max option)
  
;Click Ignite + Max button, then Refresh Menu (to show Stoke Max option)
+
GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Igniting + Adding Max Wood...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s
  
MaxButtonX = 515
 
MaxButtonY = 420
 
  
 
;Pot 1
 
;Pot 1
GuiControl, Text, MineCycleText, Igniting/Refreshing Pot 1
+
Click, %BeginIgniteTakeX1%, %BeginIgniteTakeY% ;Ignite
Click, 45, %BeginIgniteY% ;Ignite
 
 
sleep 200
 
sleep 200
 
Click, %MaxButtonX%, %MaxButtonY% ;Max button
 
Click, %MaxButtonX%, %MaxButtonY% ;Max button
 
sleep 200
 
sleep 200
Click, 70, 45 ;Click Menu to refresh
+
Click, %StokeMaxX1%, %RefreshY% ;Click Menu to refresh
 
sleep 200
 
sleep 200
  
 
;Pot 2
 
;Pot 2
GuiControl, Text, MineCycleText, Igniting/Refreshing Pot 2
+
Click, %BeginIgniteTakeX2%, %BeginIgniteTakeY% ;Ignite
Click, 220, %BeginIgniteY% ;Ignite
 
 
sleep 200
 
sleep 200
 
Click, %MaxButtonX%, %MaxButtonY% ;Max button
 
Click, %MaxButtonX%, %MaxButtonY% ;Max button
 
sleep 200
 
sleep 200
Click, 245, 45 ;Click Menu to refresh
+
Click, %StokeMaxX2%, %RefreshY% ;Click Menu to refresh
 
sleep 200
 
sleep 200
  
 
;Pot 3
 
;Pot 3
GuiControl, Text, MineCycleText, Igniting/Refreshing Pot 3
+
Click, %BeginIgniteTakeX3%, %BeginIgniteTakeY% ;Ignite
Click, 385, %BeginIgniteY% ;Ignite
 
 
sleep 200
 
sleep 200
 
Click, %MaxButtonX%, %MaxButtonY% ;Max button
 
Click, %MaxButtonX%, %MaxButtonY% ;Max button
 
sleep 200
 
sleep 200
Click, 415, 45 ;Click Menu to refresh
+
Click, %StokeMaxX3%, %RefreshY% ;Click Menu to refresh
 
sleep 200
 
sleep 200
  
 
;Pot 4
 
;Pot 4
GuiControl, Text, MineCycleText, Igniting/Refreshing Pot 4
+
Click, %BeginIgniteTakeX4%, %BeginIgniteTakeY% ;Ignite
Click, 555, %BeginIgniteY% ;Ignite
 
 
sleep 200
 
sleep 200
 
Click, %MaxButtonX%, %MaxButtonY% ;Max button
 
Click, %MaxButtonX%, %MaxButtonY% ;Max button
 
sleep 200
 
sleep 200
Click, 580, 45 ;Click Menu to refresh
+
Click, %StokeMaxX4%, %RefreshY% ;Click Menu to refresh
 
sleep 200
 
sleep 200
  
 
;Pot 5
 
;Pot 5
GuiControl, Text, MineCycleText, Igniting/Refreshing Pot 5
+
Click, %BeginIgniteTakeX5%, %BeginIgniteTakeY% ;Ignite
Click, 725, %BeginIgniteY% ;Ignite
 
 
sleep 200
 
sleep 200
 
Click, %MaxButtonX%, %MaxButtonY% ;Max button
 
Click, %MaxButtonX%, %MaxButtonY% ;Max button
 
sleep 200
 
sleep 200
Click, 750, 45 ;Click Menu to refresh
+
Click, %StokeMaxX5%, %RefreshY% ;Click Menu to refresh
 
sleep 200
 
sleep 200
  
 
;Pot 6
 
;Pot 6
GuiControl, Text, MineCycleText, Igniting/Refreshing Pot 6
+
Click, %BeginIgniteTakeX6%, %BeginIgniteTakeY% ;Ignite
Click, 890, %BeginIgniteY% ;Ignite
 
 
sleep 200
 
sleep 200
 
Click, %MaxButtonX%, %MaxButtonY% ;Max button
 
Click, %MaxButtonX%, %MaxButtonY% ;Max button
 
sleep 200
 
sleep 200
Click, 915, 45 ;Click Menu to refresh
+
Click, %StokeMaxX6%, %RefreshY% ;Click Menu to refresh
 
sleep 200
 
sleep 200
  
  
 +
;This begins the Elapsed and ETA timers
 +
#Persistent
 +
SetTimer, Timer, 1000
  
  
;Stoke 1 countdown
 
  
seconds = 132
+
;Stoke 1 countdown (@ 24 water, first 3 waters dont get burned off after you first start a kettle
Loop, %seconds%
+
 
 +
waterlevel = 24
 +
cminutes = 2
 +
cseconds = 12
 +
;countdown = 132
 +
GoSub, SetCountdown
 +
 
 +
Loop, %countdown%
 
{
 
{
GuiControl, Text, MineCycleText, %seconds% seconds until Stoke 1/5  (24 water)
 
seconds --
 
Sleep 1000
 
  
GetKeyState, state, F2
+
Gosub, StokeTimer
if state = D
+
 
break
+
GetKeyState, state, F2
}
+
if state = D
 +
break
 +
}
 +
 
 +
waterlevel = 19
 +
Gosub, StokeMax
  
Gosub, StokeMax
 
  
  
  
 +
;Stoke 2 (@ 19 water) countdown
  
;Stoke 2 (19 water) countdown
+
cminutes = 2
 +
cseconds = 43
 +
;countdown = 163
 +
GoSub, SetCountdown
  
seconds = 165
+
Loop, %countdown%
Loop, %seconds%
 
 
{
 
{
GuiControl, Text, MineCycleText, %seconds% seconds until Stoke 2/5  (19 water)
 
seconds --
 
Sleep 1000
 
  
GetKeyState, state, F2
+
Gosub, StokeTimer
if state = D
 
{
 
break
 
}
 
  
 +
GetKeyState, state, F2
 +
if state = D
 +
{
 +
break
 +
}
 
}
 
}
  
Gosub, StokeMax
+
waterlevel = 14
 +
Gosub, StokeMax
 +
 
  
  
 +
;Stoke 3 (@ 14 water) countdown
  
;Stoke 3 (14 water) countdown
+
cminutes = 2
 +
cseconds = 43
 +
;countdown = 163
 +
GoSub, SetCountdown
  
seconds = 165
+
Loop, %countdown%
Loop, %seconds%
 
 
{
 
{
GuiControl, Text, MineCycleText, %seconds% seconds until Stoke 3/5  (14 water)
 
seconds --
 
Sleep 1000
 
  
GetKeyState, state, F2
+
Gosub, StokeTimer
if state = D
 
break
 
  
 +
GetKeyState, state, F2
 +
if state = D
 +
{
 +
break
 +
}
 
}
 
}
  
Gosub, StokeMax
+
waterlevel = 9
 +
Gosub, StokeMax
 +
 
  
  
 +
;Stoke 4 (@ 9 water) countdown
  
;Stoke 4 (9 water) countdown
+
cminutes = 2
 +
cseconds = 43
 +
;countdown = 163
 +
GoSub, SetCountdown
  
seconds = 165
+
Loop, %countdown%
Loop, %seconds%
 
 
{
 
{
GuiControl, Text, MineCycleText, %seconds% seconds until Stoke 4/5  (9 water)
 
seconds --
 
Sleep 1000
 
  
GetKeyState, state, F2
+
Gosub, StokeTimer
if state = D
+
 
break
+
GetKeyState, state, F2
 +
if state = D
 +
{
 +
break
 +
}
 
}
 
}
  
 +
waterlevel = 6
 
Gosub, StokeMax
 
Gosub, StokeMax
  
  
;Stoke 5 (6 water) countdown
+
;Stoke 5 (@ 6 water) countdown
 +
 
 +
cminutes = 1
 +
cseconds = 36
 +
;countdown = 96
 +
GoSub, SetCountdown
  
seconds = 96
+
Loop, %countdown%
Loop, %seconds%
 
 
{
 
{
GuiControl, Text, MineCycleText, %seconds% seconds until Stoke 5/5  (6 water)
+
 
seconds --
+
Gosub, StokeTimer
Sleep 1000
+
 
GetKeyState, state, F2
+
GetKeyState, state, F2
if state = D
+
if state = D
break
+
{
 +
break
 +
}
 
}
 
}
  
 +
waterlevel = N/A
 
Gosub, StokeMax
 
Gosub, StokeMax
  
  
 
;Countdown until complete
 
;Countdown until complete
seconds = 176
+
cminutes = 3
Loop, %seconds%
+
cseconds = 6
 +
;countdown = 186
 +
GoSub, SetCountdown
 +
 
 +
Loop, %countdown%
 
{
 
{
GuiControl, Text, MineCycleText, %seconds% seconds until Kettles complete...
+
 
seconds --
+
Gosub, StokeTimer
Sleep 1000
 
 
}
 
}
 +
 +
 +
cminutes = 0
 +
cseconds = 0
 +
} ; End Runs Loop
 +
 +
  
  
Line 316: Line 453:
 
WinActivate, eGenesis Client
 
WinActivate, eGenesis Client
  
GuiControl, Text, MineCycleText, Taking, Pot 1
+
GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nFinish: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Taking items from kettle...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s
Click, 45, %BeginIgniteY1% ;Pot 1
+
 
 +
Click, %BeginIgniteTakeX1%, %BeginIgniteTakeY% ;Pot 1
 
Sleep 200
 
Sleep 200
GuiControl, Text, MineCycleText, Taking, Pot 2
+
Click, %BeginIgniteTakeX2%, %BeginIgniteTakeY% ;Pot 2
Click, 220, %BeginIgniteY1% ;Pot 2
 
 
Sleep 200
 
Sleep 200
GuiControl, Text, MineCycleText, Click Begin, Pot 3
+
Click, %BeginIgniteTakeX3%, %BeginIgniteTakeY% ;Pot 3
Click, 385, %BeginIgniteY1% ;Pot 3
 
 
Sleep 200
 
Sleep 200
GuiControl, Text, MineCycleText, Click Begin, Pot 4
+
Click, %BeginIgniteTakeX4%, %BeginIgniteTakeY% ;Pot 4
Click, 555, %BeginIgniteY1% ;Pot 4
 
 
Sleep 200
 
Sleep 200
GuiControl, Text, MineCycleText, Click Begin, Pot 5
+
Click, %BeginIgniteTakeX5%, %BeginIgniteTakeY% ;Pot 5
Click, 725, %BeginIgniteY1% ;Pot 5
 
Sleep 200
 
GuiControl, Text, MineCycleText, Click Begin, Pot 6
 
Click, 890, %BeginIgniteY1% ;Pot 6
 
 
Sleep 200
 
Sleep 200
 +
Click, %BeginIgniteTakeX6%, %BeginIgniteTakeY% ;Pot 6
  
  
 
+
;ALL DONE!
Gui, Destroy
+
GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nFinish: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: All Done! Reload: Ctrl+R`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s
Gui, Add, Text,, Done!.
+
return
Gui, Show
 
return
 
  
  
Line 349: Line 479:
 
WinActivate, eGenesis Client
 
WinActivate, eGenesis Client
  
StokeMaxY = 75
 
if (Kettle == "Public")
 
StokeMaxY := StokeMaxY + 15
 
  
 +
;Click Stoke Max
 +
 +
stoke ++
 +
 +
GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: STOKING!`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s
  
;Click Stoke Max
 
 
MouseGetPos, OldMX, OldMY
 
MouseGetPos, OldMX, OldMY
GuiControl, Text, MineCycleText, Stoking, Pot 1
+
Click, %StokeMaxX1%, %StokeMaxY% ; Pot 1
Click, 50, %StokeMaxY% ; Pot 1
 
 
sleep 200
 
sleep 200
GuiControl, Text, MineCycleText, Stoking, Pot 2
+
Click, %StokeMaxX2%, %StokeMaxY% ; Pot 2
Click, 250, %StokeMaxY% ; Pot 2
 
 
sleep 200
 
sleep 200
GuiControl, Text, MineCycleText, Stoking, Pot 3
+
Click, %StokeMaxX3%, %StokeMaxY% ; Pot 3
Click, 420, %StokeMaxY% ; Pot 3
 
 
sleep 200
 
sleep 200
GuiControl, Text, MineCycleText, Stoking, Pot 4
+
Click, %StokeMaxX4%, %StokeMaxY% ; Pot 4
Click, 590, %StokeMaxY% ; Pot 4
 
 
sleep 200
 
sleep 200
GuiControl, Text, MineCycleText, Stoking, Pot 5
+
Click, %StokeMaxX5%, %StokeMaxY% ; Pot 5
Click, 750, %StokeMaxY% ; Pot 5
 
 
sleep 200
 
sleep 200
GuiControl, Text, MineCycleText, Stoking, Pot 6
+
Click, %StokeMaxX6%, %StokeMaxY% ; Pot 6
Click, 910, %StokeMaxY% ; Pot 6
 
 
sleep 200
 
sleep 200
 
MouseMove, %OldMX%, %OldMY%, 0
 
MouseMove, %OldMX%, %OldMY%, 0
 
return
 
return
</pre>
+
 
 +
 
 +
Timer:
 +
 
 +
seconds ++
 +
 
 +
if (seconds = 60)
 +
{
 +
seconds := 0
 +
minutes ++
 +
}
 +
 +
if (seconds_eta = 0)
 +
{
 +
seconds_eta := 60
 +
minutes_eta --
 +
}
 +
 +
if (minutes_eta < 0)
 +
minutes_eta := 0
 +
 
 +
seconds_eta --
 +
return
 +
 
 +
 
 +
SetCountdown:
 +
 
 +
countdown := (cminutes * 60 + cseconds)
 +
sSeconds := cseconds
 +
sMinutes := cminutes
 +
return
 +
 
 +
 
 +
StokeTimer:
 +
if (stoke = 5)
 +
{
 +
GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nFinish: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Waiting on kettle to finish...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s
 +
 
 +
} else {
 +
 
 +
GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Waiting to stoke...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s
 +
}
 +
 
 +
countdown --
 +
if (sSeconds = 0)
 +
{
 +
sSeconds := 60
 +
sMinutes --
 +
}
 +
 +
if (sMinutes < 0)
 +
sMinutes := 0
 +
 
 +
sSeconds --
 +
Sleep 1000
 +
return</pre>
  
  
Line 392: Line 572:
  
 
<pre>
 
<pre>
;Make Potash, Acid, Salt, Sulfur with 12 kettles (MAY work with other stoked kettle projects, just change coordinates of Click Potash button)
+
;Make Potash/Acid/Salt with 12 kettles
;Requires (per run):
 
;336 Wood
 
;300 Water
 
;60 Ash
 
  
;Pin 2 rows of 6 kettle menus, from left to right
+
;Pin 12 kettle menus from left to right, starting at upper left corner
  
 
;Ctrl+Alt+W to start script
 
;Ctrl+Alt+W to start script
Line 410: Line 586:
 
;When it hits zero wood, its still a full 32 seconds before the kettle goes out
 
;When it hits zero wood, its still a full 32 seconds before the kettle goes out
 
;Likewise with stoking. It does not matter if you stoke the instant it hits zero wood or 29 seconds later, it wont speed anything up.
 
;Likewise with stoking. It does not matter if you stoke the instant it hits zero wood or 29 seconds later, it wont speed anything up.
 
; Date: 4/28/2010
 
  
 
^r::reload
 
^r::reload
 
^p::Pause
 
^p::Pause
 
^!w::
 
^!w::
 +
 +
;Date: May 19, 2010
 +
;Author: Cegaiel
  
  
Line 426: Line 603:
 
Exit
 
Exit
 
}
 
}
 +
  
  
Line 434: Line 612:
 
;You may remove this entire routine, if you wish.
 
;You may remove this entire routine, if you wish.
  
if (Xmax = 1032) && (Ymax = 746)
+
if !(Xmax = 1032) && (Ymax = 746)
 
{
 
{
nothing = 0
 
} else {
 
 
Msgbox, You are not in 1024x768 resolution`n`nExiting...
 
Msgbox, You are not in 1024x768 resolution`n`nExiting...
 
EXIT
 
EXIT
Line 448: Line 624:
 
Gui, Add, Text,, Type of Kettles?
 
Gui, Add, Text,, Type of Kettles?
 
Gui, Add, DropDownList, vKettle Choose2, Private|Public
 
Gui, Add, DropDownList, vKettle Choose2, Private|Public
Gui, Add, Text,, What are you making?  
+
Gui, Add, Text,, What are we making?
Gui, Add, DropDownList, vType Choose2, Acid|Potash|Salt|Sulfur
+
Gui, Add, DropDownList, vMake Choose2, Acid|Potash|Salt
Gui, Add, Text,, How Many Runs (1)?  
+
Gui, Add, Text,, How many runs?
Gui, Add, Edit, vTurns wp number
+
Gui, Add, Edit, vRuns wp number, 1
 
+
Gui, Add, Button, Default gStart, BEGIN
Gui, Add, Button, Default gStart, GO
 
 
Gui, Show
 
Gui, Show
 
return
 
return
Line 459: Line 634:
  
 
Start:
 
Start:
seconds = 5
 
  
 
Gui, Submit
 
Gui, Submit
 
Gui, Destroy
 
Gui, Destroy
Msgbox, Ingredients needed to run 12 kettles:`n`n336 Wood`n300 Water`n60 Ash`n`nMake sure you have that in your inventory!`n`nKettle Type: %Kettle%`n`nClick OK to continue...
 
Gui, +AlwaysOnTop +ToolWindow
 
Gui, Font, bold
 
Gui, Add, Text, vMineCycleText, %seconds% seconds before the script will begin ...
 
Gui, Font, norm
 
Gui, Show
 
GuiControl, Text, MineCycleText, %seconds% seconds before the script will begin ...
 
  
 +
Counter = 0
 +
Wood := (336 * runs)
 +
Water := (300 * runs)
 +
Salt := (12 * runs)
 +
Ash := (60 * runs)
 +
 +
if (Make == "Acid") {
 +
OutputTotal := (3 * 12 * runs)
 +
Msgbox, Ingredients needed to run 12 kettles (%runs% runs):`n`n%wood% Wood minimum (a few extra just in case)`n%water% Sulphurous Water`n%salt% Salt`n`nMake sure you have that in your inventory!`n`nYield: 3 Acid per kettle`nTotal: %OutputTotal% Acid (%runs% runs)`n`nKettle Type: %Kettle%`n`nClick OK to continue...
 +
 +
 +
;Position of the Acid button
 +
PotashX1 = 125
 +
PotashX2 = 295
 +
PotashX3 = 465
 +
PotashX4 = 635
 +
PotashX5 = 805
 +
PotashX6 = 975
 +
 +
PotashY = 265
 +
PotashY2 = 525
 +
 +
} else if (Make == "Potash") {
 +
OutputTotal := (5 * 12 * runs)
 +
Msgbox, Ingredients needed to run 12 kettles (%runs% runs):`n`n%wood% Wood minimum (a few extra just in case)`n%water% Water`n%ash% Ash`n`nMake sure you have that in your inventory!`n`nYield: 5 Potash per kettle`nTotal: %OutputTotal% Potash (%runs% runs)`n`nKettle Type: %Kettle%`n`nClick OK to continue...
 +
 +
 +
;Position of the Potash button
 +
PotashX1 = 45
 +
PotashX2 = 220
 +
PotashX3 = 385
 +
PotashX4 = 555
 +
PotashX5 = 725
 +
PotashX6 = 890
  
 +
PotashY = 170
 +
PotashY2 = 428
  
 +
} else if (Make == "Salt") {
 +
OutputTotal := (3 * 12 * runs)
 +
Msgbox, Ingredients needed to run 12 kettles (%runs% runs):`n`n%wood% Wood minimum (a few extra just in case)`n%water% Coconut Water`n`nMake sure you have that in your inventory!`n`nYield: 3 Salt per kettle`nTotal: %OutputTotal% Salt (%runs% runs)`n`nKettle Type: %Kettle%`n`nClick OK to continue...
  
  
 +
;Position of the Salt button
 +
PotashX1 = 125
 +
PotashX2 = 295
 +
PotashX3 = 465
 +
PotashX4 = 635
 +
PotashX5 = 805
 +
PotashX6 = 975
  
Loop, %seconds%
+
PotashY = 240
{
+
PotashY2 = 500
GuiControl, Text, MineCycleText, %seconds% seconds before the script will begin ...
 
seconds --
 
Sleep 1000
 
 
}
 
}
  
SetDefaultMouseSpeed, 0
 
  
  
GuiControl, Text, MineCycleText, Focusing to eGenesis client ...
+
;This is where the Stoke Max option appears on the menu
 +
StokeMaxX1 = 70
 +
StokeMaxX2 = 250
 +
StokeMaxX3 = 420
 +
StokeMaxX4 = 590
 +
StokeMaxX5 = 750
 +
StokeMaxX6 = 910
 +
 
 +
StokeMaxY = 75
 +
StokeMaxY2 = 335
  
WinActivate, eGenesis Client
 
  
;Potash and Sulfur have same X
+
;Max button, this is after the pot is ignited and asks for Quantity, we hit the Max button instead of typing a number
;Salt and Acid have same X
+
MaxButtonX = 515
 +
MaxButtonY = 420
  
  
if (Type == "Potash")
+
;The Begin, Ignite and Take button appear in the same place, so these apply to all three.
{
+
BeginIgniteTakeX1 = 45
TypeX1 := 45
+
BeginIgniteTakeX2 = 220
TypeX2 := 220
+
BeginIgniteTakeX3 = 390
TypeX3 := 385
+
BeginIgniteTakeX4 = 555
TypeX4 := 555
+
BeginIgniteTakeX5 = 725
TypeX5 := 725
+
BeginIgniteTakeX6 = 895
TypeX6 := 890
 
  
TypeY1 := 165
+
BeginIgniteTakeY = 240
TypeY2 := 423
+
BeginIgniteTakeY2 = 500
  
} else if (Type == "Sulfur") {
 
  
TypeX1 := 45
 
TypeX2 := 220
 
TypeX3 := 385
 
TypeX4 := 555
 
TypeX5 := 725
 
TypeX6 := 890
 
  
TypeY1 := 283
+
;NOTE: PotashY, StokeMaxY and BeginIgniteTakeY is set to Y position in Private kettle setting.
TypeY2 := 560
+
;If this is a public kettle AND you are trying to change numbers for another resolution, then note:
 +
;The coords are adjusted for public below, take that into consideration.
 +
;If you dont have any of your own kettles and will change numbers for a different resolution, then
 +
;Just plug in all the numbers above (center of buttons) and launch the script and choose "Private" kettle, even though it is "Public"
  
} else if (Type == "Salt") {
+
if (Kettle == "Public")
 +
{
 +
;If the kettle is public then it lowers 15 coords at 1024x768 (will vary with other resolutions)
 +
PotashY := PotashY + 15
 +
BeginIgniteTakeY := BeginIgniteTakeY + 15
 +
StokeMaxY := StokeMaxY + 15
  
TypeX1 := 126
+
PotashY2 := PotashY2 + 30
TypeX2 := 295
+
BeginIgniteTakeY2 := BeginIgniteTakeY2 + 30
TypeX3 := 465
+
StokeMaxY2 := StokeMaxY2 + 30
TypeX4 := 634
+
}
TypeX5 := 802
 
TypeX6 := 968
 
  
TypeY1 := 258
+
;Make sure the RefreshY line stays after the 'if (Kettle == "Public")' line
TypeY2 := 533
+
;This is the Y button of when it clicks the top of the menu to refresh the menu
  
} else if (Type == "Acid") {
 
  
TypeX1 := 126
+
RefreshY := (StokeMaxY - 25)
TypeX2 := 295
+
RefreshY2 := (StokeMaxY2 - 25)
TypeX3 := 465
 
TypeX4 := 634
 
TypeX5 := 802
 
TypeX6 := 968
 
  
TypeY1 := 283
 
TypeY2 := 558
 
  
}
 
  
  
 +
Gui, +AlwaysOnTop +ToolWindow
 +
Gui, Font, normal
 +
Gui, Add, Text, vMineCycleText, Preparing to start script, please stand by ...`n`n`n`n`n`n`n`n`n
 +
Gui, Show
  
  
if (Kettle == "Public")
+
delay = 6
 +
Loop, %delay%
 
{
 
{
TypeY1 := TypeY1 + 15
+
GuiControl, Text, MineCycleText, %delay% seconds before the script will begin ...`n`nMove this out of way!
TypeY2 := TypeY2 + 30
+
delay --
 +
Sleep 1000
 
}
 
}
  
Loop, %Turns%
+
SetDefaultMouseSpeed, 0
{
+
 
  
 +
GuiControl, Text, MineCycleText, Focusing to eGenesis client ...
  
;Click Type (Potash, Acid, Sulfur, Salt) Button
+
WinActivate, eGenesis Client
 +
Sleep 500
  
GuiControl, Text, MineCycleText, Clicking Potash, Pot 1
 
Click, %TypeX1%, %TypeY1% ;Pot 1
 
Sleep 200
 
GuiControl, Text, MineCycleText, Click Potash, Pot 2
 
Click, %TypeX2%, %TypeY1% ;Pot 2
 
Sleep 200
 
GuiControl, Text, MineCycleText, Click Potash, Pot 3
 
Click, %TypeX3%, %TypeY1% ;Pot 3
 
Sleep 200
 
GuiControl, Text, MineCycleText, Click Potash, Pot 4
 
Click, %TypeX4%, %TypeY1% ;Pot 4
 
Sleep 200
 
GuiControl, Text, MineCycleText, Click Potash, Pot 5
 
Click, %TypeX5%, %TypeY1% ;Pot 5
 
Sleep 200
 
GuiControl, Text, MineCycleText, Click Potash, Pot 6
 
Click, %TypeX6%, %TypeY1% ;Pot 6
 
Sleep 200
 
  
GuiControl, Text, MineCycleText, Clicking Potash, Pot 7
 
Click, %TypeX1%, %TypeY2% ;Pot 7
 
Sleep 200
 
GuiControl, Text, MineCycleText, Click Potash, Pot 8
 
Click, %TypeX2%, %TypeY2% ;Pot 8
 
Sleep 200
 
GuiControl, Text, MineCycleText, Click Potash, Pot 9
 
Click, %TypeX3%, %TypeY2% ;Pot 9
 
Sleep 200
 
GuiControl, Text, MineCycleText, Click Potash, Pot 10
 
Click, %TypeX4%, %TypeY2% ;Pot 10
 
Sleep 200
 
GuiControl, Text, MineCycleText, Click Potash, Pot 11
 
Click, %TypeX5%, %TypeY2% ;Pot 11
 
Sleep 200
 
GuiControl, Text, MineCycleText, Click Potash, Pot 12
 
Click, %TypeX6%, %TypeY2% ;Pot 12
 
Sleep 200
 
  
 +
Loop, %Runs%
 +
{
 +
counter ++
 +
stoke = 0
 +
waterlevel = -
 +
countdown = 0
 +
seconds = 0
 +
minutes = 0
 +
seconds_eta = 30
 +
minutes_eta = 15
 +
cseconds = 0
 +
cminutes = 0
 +
sSeconds = 0
 +
sMinutes = 0
 +
 +
;Click Potash/Acid/Salt Button
  
 +
GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Clicking "%make%" buttons...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s
  
  
 +
Click, %PotashX1%, %PotashY% ;Pot 1
 +
sleep 200
 +
Click, %PotashX2%, %PotashY% ;Pot 2
 +
sleep 200
 +
Click, %PotashX3%, %PotashY% ;Pot 3
 +
sleep 200
 +
Click, %PotashX4%, %PotashY% ;Pot 4
 +
sleep 200
 +
Click, %PotashX5%, %PotashY% ;Pot 5
 +
sleep 200
 +
Click, %PotashX6%, %PotashY% ;Pot 6
 +
sleep 200
  
 +
Click, %PotashX1%, %PotashY2% ;Pot 7
 +
sleep 200
 +
Click, %PotashX2%, %PotashY2% ;Pot 8
 +
sleep 200
 +
Click, %PotashX3%, %PotashY2% ;Pot 9
 +
sleep 200
 +
Click, %PotashX4%, %PotashY2% ;Pot 10
 +
sleep 200
 +
Click, %PotashX5%, %PotashY2% ;Pot 11
 +
sleep 200
 +
Click, %PotashX6%, %PotashY2% ;Pot 12
 +
sleep 200
  
BeginIgniteY1 = 240
 
BeginIgniteY2 = 500
 
if (Kettle == "Public")
 
{
 
BeginIgniteY1 := BeginIgniteY1 + 15
 
BeginIgniteY2 := BeginIgniteY2 + 30
 
}
 
  
 
;Click Begin button
 
;Click Begin button
  
GuiControl, Text, MineCycleText, Click Begin, Pot 1
+
GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Clicking "Begin" buttons...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s
Click, 45, %BeginIgniteY1% ;Pot 1
+
 
Sleep 200
+
 
GuiControl, Text, MineCycleText, Click Begin, Pot 2
+
Click, %BeginIgniteTakeX1%, %BeginIgniteTakeY% ;Pot 1
Click, 220, %BeginIgniteY1% ;Pot 2
+
sleep 200
Sleep 200
+
Click, %BeginIgniteTakeX2%, %BeginIgniteTakeY% ;Pot 2
GuiControl, Text, MineCycleText, Click Begin, Pot 3
+
sleep 200
Click, 385, %BeginIgniteY1% ;Pot 3
+
Click, %BeginIgniteTakeX3%, %BeginIgniteTakeY% ;Pot 3
Sleep 200
+
sleep 200
GuiControl, Text, MineCycleText, Click Begin, Pot 4
+
Click, %BeginIgniteTakeX4%, %BeginIgniteTakeY% ;Pot 4
Click, 555, %BeginIgniteY1% ;Pot 4
+
sleep 200
Sleep 200
+
Click, %BeginIgniteTakeX5%, %BeginIgniteTakeY% ;Pot 5
GuiControl, Text, MineCycleText, Click Begin, Pot 5
+
sleep 200
Click, 725, %BeginIgniteY1% ;Pot 5
+
Click, %BeginIgniteTakeX6%, %BeginIgniteTakeY% ;Pot 6
Sleep 200
+
sleep 200
GuiControl, Text, MineCycleText, Click Begin, Pot 6
 
Click, 890, %BeginIgniteY1% ;Pot 6
 
Sleep 200
 
  
GuiControl, Text, MineCycleText, Click Begin, Pot 7
+
Click, %BeginIgniteTakeX1%, %BeginIgniteTakeY2% ;Pot 7
Click, 45, %BeginIgniteY2% ;Pot 7
+
sleep 200
Sleep 200
+
Click, %BeginIgniteTakeX2%, %BeginIgniteTakeY2% ;Pot 8
GuiControl, Text, MineCycleText, Click Begin, Pot 8
+
sleep 200
Click, 220, %BeginIgniteY2% ;Pot 8
+
Click, %BeginIgniteTakeX3%, %BeginIgniteTakeY2% ;Pot 9
Sleep 200
+
sleep 200
GuiControl, Text, MineCycleText, Click Begin, Pot 9
+
Click, %BeginIgniteTakeX4%, %BeginIgniteTakeY2% ;Pot 10
Click, 385, %BeginIgniteY2% ;Pot 9
+
sleep 200
Sleep 200
+
Click, %BeginIgniteTakeX5%, %BeginIgniteTakeY2% ;Pot 11
GuiControl, Text, MineCycleText, Click Begin, Pot 10
+
sleep 200
Click, 555, %BeginIgniteY2% ;Pot 10
+
Click, %BeginIgniteTakeX6%, %BeginIgniteTakeY2% ;Pot 12
Sleep 200
+
sleep 200
GuiControl, Text, MineCycleText, Click Begin, Pot 11
 
Click, 725, %BeginIgniteY2% ;Pot 11
 
Sleep 200
 
GuiControl, Text, MineCycleText, Click Begin, Pot 12
 
Click, 890, %BeginIgniteY2% ;Pot 12
 
Sleep 200
 
  
  
Line 654: Line 859:
 
;Click Ignite + Max button, then Refresh Menu (to show Stoke Max option)
 
;Click Ignite + Max button, then Refresh Menu (to show Stoke Max option)
  
MaxButtonX = 520
+
GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Igniting + Adding Max Wood...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s
MaxButtonY = 423
+
 
  
 
;Pot 1
 
;Pot 1
GuiControl, Text, MineCycleText, Igniting/Refreshing Pot 1
+
Click, %BeginIgniteTakeX1%, %BeginIgniteTakeY% ;Ignite
Click, 45, %BeginIgniteY1% ;Ignite
+
sleep 200
Sleep 200
 
 
Click, %MaxButtonX%, %MaxButtonY% ;Max button
 
Click, %MaxButtonX%, %MaxButtonY% ;Max button
Sleep 200
+
sleep 200
Click, 70, 45 ;Click Menu to refresh
+
Click, %StokeMaxX1%, %RefreshY% ;Click Menu to refresh
Sleep 200
+
sleep 200
  
 
;Pot 2
 
;Pot 2
GuiControl, Text, MineCycleText, Igniting/Refreshing Pot 2
+
Click, %BeginIgniteTakeX2%, %BeginIgniteTakeY% ;Ignite
Click, 220, %BeginIgniteY1% ;Ignite
+
sleep 200
Sleep 200
 
 
Click, %MaxButtonX%, %MaxButtonY% ;Max button
 
Click, %MaxButtonX%, %MaxButtonY% ;Max button
Sleep 200
+
sleep 200
Click, 245, 45 ;Click Menu to refresh
+
Click, %StokeMaxX2%, %RefreshY% ;Click Menu to refresh
Sleep 200
+
sleep 200
  
 
;Pot 3
 
;Pot 3
GuiControl, Text, MineCycleText, Igniting/Refreshing Pot 3
+
Click, %BeginIgniteTakeX3%, %BeginIgniteTakeY% ;Ignite
Click, 385, %BeginIgniteY1% ;Ignite
+
sleep 200
Sleep 200
 
 
Click, %MaxButtonX%, %MaxButtonY% ;Max button
 
Click, %MaxButtonX%, %MaxButtonY% ;Max button
Sleep 200
+
sleep 200
Click, 415, 45 ;Click Menu to refresh
+
Click, %StokeMaxX3%, %RefreshY% ;Click Menu to refresh
Sleep 200
+
sleep 200
  
 
;Pot 4
 
;Pot 4
GuiControl, Text, MineCycleText, Igniting/Refreshing Pot 4
+
Click, %BeginIgniteTakeX4%, %BeginIgniteTakeY% ;Ignite
Click, 555, %BeginIgniteY1% ;Ignite
+
sleep 200
Sleep 200
 
 
Click, %MaxButtonX%, %MaxButtonY% ;Max button
 
Click, %MaxButtonX%, %MaxButtonY% ;Max button
Sleep 200
+
sleep 200
Click, 580, 45 ;Click Menu to refresh
+
Click, %StokeMaxX4%, %RefreshY% ;Click Menu to refresh
Sleep 200
+
sleep 200
  
 
;Pot 5
 
;Pot 5
GuiControl, Text, MineCycleText, Igniting/Refreshing Pot 5
+
Click, %BeginIgniteTakeX5%, %BeginIgniteTakeY% ;Ignite
Click, 725, %BeginIgniteY1% ;Ignite
+
sleep 200
Sleep 200
 
 
Click, %MaxButtonX%, %MaxButtonY% ;Max button
 
Click, %MaxButtonX%, %MaxButtonY% ;Max button
Sleep 200
+
sleep 200
Click, 750, 45 ;Click Menu to refresh
+
Click, %StokeMaxX5%, %RefreshY% ;Click Menu to refresh
Sleep 200
+
sleep 200
  
 
;Pot 6
 
;Pot 6
GuiControl, Text, MineCycleText, Igniting/Refreshing Pot 6
+
Click, %BeginIgniteTakeX6%, %BeginIgniteTakeY% ;Ignite
Click, 890, %BeginIgniteY1% ;Ignite
+
sleep 200
Sleep 200
 
 
Click, %MaxButtonX%, %MaxButtonY% ;Max button
 
Click, %MaxButtonX%, %MaxButtonY% ;Max button
Sleep 200
+
sleep 200
Click, 915, 45 ;Click Menu to refresh
+
Click, %StokeMaxX6%, %RefreshY% ;Click Menu to refresh
Sleep 200
+
sleep 200
  
  
 
;Pot 7
 
;Pot 7
GuiControl, Text, MineCycleText, Igniting/Refreshing Pot 7
+
Click, %BeginIgniteTakeX1%, %BeginIgniteTakeY2% ;Ignite
Click, 45, %BeginIgniteY2% ;Ignite
+
sleep 200
Sleep 200
 
 
Click, %MaxButtonX%, %MaxButtonY% ;Max button
 
Click, %MaxButtonX%, %MaxButtonY% ;Max button
Sleep 200
+
sleep 200
Click, 70, 305 ;Click Menu to refresh
+
Click, %StokeMaxX1%, %RefreshY2% ;Click Menu to refresh
Sleep 200
+
sleep 200
  
 
;Pot 8
 
;Pot 8
GuiControl, Text, MineCycleText, Igniting/Refreshing Pot 8
+
Click, %BeginIgniteTakeX2%, %BeginIgniteTakeY2% ;Ignite
Click, 220, %BeginIgniteY2% ;Ignite
+
sleep 200
Sleep 200
 
 
Click, %MaxButtonX%, %MaxButtonY% ;Max button
 
Click, %MaxButtonX%, %MaxButtonY% ;Max button
Sleep 200
+
sleep 200
Click, 245, 305 ;Click Menu to refresh
+
Click, %StokeMaxX2%, %RefreshY2% ;Click Menu to refresh
Sleep 200
+
sleep 200
  
 
;Pot 9
 
;Pot 9
GuiControl, Text, MineCycleText, Igniting/Refreshing Pot 9
+
Click, %BeginIgniteTakeX3%, %BeginIgniteTakeY2% ;Ignite
Click, 385, %BeginIgniteY2% ;Ignite
+
sleep 200
Sleep 200
 
 
Click, %MaxButtonX%, %MaxButtonY% ;Max button
 
Click, %MaxButtonX%, %MaxButtonY% ;Max button
Sleep 200
+
sleep 200
Click, 415, 305 ;Click Menu to refresh
+
Click, %StokeMaxX3%, %RefreshY2% ;Click Menu to refresh
Sleep 200
+
sleep 200
  
 
;Pot 10
 
;Pot 10
GuiControl, Text, MineCycleText, Igniting/Refreshing Pot 10
+
Click, %BeginIgniteTakeX4%, %BeginIgniteTakeY2% ;Ignite
Click, 555, %BeginIgniteY2% ;Ignite
+
sleep 200
Sleep 200
 
 
Click, %MaxButtonX%, %MaxButtonY% ;Max button
 
Click, %MaxButtonX%, %MaxButtonY% ;Max button
Sleep 200
+
sleep 200
Click, 580, 305 ;Click Menu to refresh
+
Click, %StokeMaxX4%, %RefreshY2% ;Click Menu to refresh
Sleep 200
+
sleep 200
  
 
;Pot 11
 
;Pot 11
GuiControl, Text, MineCycleText, Igniting/Refreshing Pot 11
+
Click, %BeginIgniteTakeX5%, %BeginIgniteTakeY2% ;Ignite
Click, 725, %BeginIgniteY2% ;Ignite
+
sleep 200
Sleep 200
 
 
Click, %MaxButtonX%, %MaxButtonY% ;Max button
 
Click, %MaxButtonX%, %MaxButtonY% ;Max button
Sleep 200
+
sleep 200
Click, 750, 305 ;Click Menu to refresh
+
Click, %StokeMaxX5%, %RefreshY2% ;Click Menu to refresh
Sleep 200
+
sleep 200
  
 
;Pot 12
 
;Pot 12
GuiControl, Text, MineCycleText, Igniting/Refreshing Pot 12
+
Click, %BeginIgniteTakeX6%, %BeginIgniteTakeY2% ;Ignite
Click, 890, %BeginIgniteY2% ;Ignite
+
sleep 200
Sleep 200
 
 
Click, %MaxButtonX%, %MaxButtonY% ;Max button
 
Click, %MaxButtonX%, %MaxButtonY% ;Max button
Sleep 200
+
sleep 200
Click, 915, 305 ;Click Menu to refresh
+
Click, %StokeMaxX6%, %RefreshY2% ;Click Menu to refresh
Sleep 200
+
sleep 200
 +
 
 +
 
 +
;This begins the Elapsed and ETA timers
 +
#Persistent
 +
SetTimer, Timer, 1000
  
  
  
 +
;Stoke 1 countdown (@ 24 water, first 3 waters dont get burned off after you first start a kettle
  
;Stoke 1 countdown
+
waterlevel = 24
 +
cminutes = 2
 +
cseconds = 12
 +
;countdown = 132
 +
GoSub, SetCountdown
  
seconds = 132
+
Loop, %countdown%
Loop, %seconds%
 
 
{
 
{
GuiControl, Text, MineCycleText, %seconds% seconds until Stoke 1/5  (24 water)
 
seconds --
 
Sleep 1000
 
  
GetKeyState, state, F2
+
Gosub, StokeTimer
if state = D
+
 
break
+
GetKeyState, state, F2
}
+
if state = D
 +
break
 +
}
 +
 
 +
waterlevel = 19
 +
Gosub, StokeMax
  
Gosub, StokeMax
 
  
  
  
 +
;Stoke 2 (@ 19 water) countdown
  
;Stoke 2 (19 water) countdown
+
cminutes = 2
 +
cseconds = 43
 +
;countdown = 163
 +
GoSub, SetCountdown
  
seconds = 163
+
Loop, %countdown%
Loop, %seconds%
 
 
{
 
{
GuiControl, Text, MineCycleText, %seconds% seconds until Stoke 2/5  (19 water)
 
seconds --
 
Sleep 1000
 
  
GetKeyState, state, F2
+
Gosub, StokeTimer
if state = D
 
{
 
break
 
}
 
  
 +
GetKeyState, state, F2
 +
if state = D
 +
{
 +
break
 +
}
 
}
 
}
  
Gosub, StokeMax
+
waterlevel = 14
 +
Gosub, StokeMax
 +
 
  
  
 +
;Stoke 3 (@ 14 water) countdown
  
;Stoke 3 (14 water) countdown
+
cminutes = 2
 +
cseconds = 43
 +
;countdown = 163
 +
GoSub, SetCountdown
  
seconds = 163
+
Loop, %countdown%
Loop, %seconds%
 
 
{
 
{
GuiControl, Text, MineCycleText, %seconds% seconds until Stoke 3/5  (14 water)
 
seconds --
 
Sleep 1000
 
  
GetKeyState, state, F2
+
Gosub, StokeTimer
if state = D
 
break
 
  
 +
GetKeyState, state, F2
 +
if state = D
 +
{
 +
break
 +
}
 
}
 
}
  
Gosub, StokeMax
+
waterlevel = 9
 +
Gosub, StokeMax
 +
 
  
  
 +
;Stoke 4 (@ 9 water) countdown
  
;Stoke 4 (9 water) countdown
+
cminutes = 2
 +
cseconds = 43
 +
;countdown = 163
 +
GoSub, SetCountdown
  
seconds = 163
+
Loop, %countdown%
Loop, %seconds%
 
 
{
 
{
GuiControl, Text, MineCycleText, %seconds% seconds until Stoke 4/5  (9 water)
 
seconds --
 
Sleep 1000
 
  
GetKeyState, state, F2
+
Gosub, StokeTimer
if state = D
+
 
break
+
GetKeyState, state, F2
 +
if state = D
 +
{
 +
break
 +
}
 
}
 
}
  
 +
waterlevel = 6
 
Gosub, StokeMax
 
Gosub, StokeMax
  
  
;Stoke 5 (6 water) countdown
+
;Stoke 5 (@ 6 water) countdown
  
seconds = 96  
+
cminutes = 1
Loop, %seconds%
+
cseconds = 36
 +
;countdown = 96
 +
GoSub, SetCountdown
 +
 
 +
Loop, %countdown%
 
{
 
{
GuiControl, Text, MineCycleText, %seconds% seconds until Stoke 5/5  (6 water)
+
 
seconds --
+
Gosub, StokeTimer
Sleep 1000
+
 
GetKeyState, state, F2
+
GetKeyState, state, F2
if state = D
+
if state = D
break
+
{
 +
break
 +
}
 
}
 
}
  
 +
waterlevel = N/A
 
Gosub, StokeMax
 
Gosub, StokeMax
  
  
 
;Countdown until complete
 
;Countdown until complete
seconds = 176
+
cminutes = 3
Loop, %seconds%
+
cseconds = 6
 +
;countdown = 186
 +
GoSub, SetCountdown
 +
 
 +
Loop, %countdown%
 
{
 
{
GuiControl, Text, MineCycleText, %seconds% seconds until Kettles complete...
+
 
seconds --
+
Gosub, StokeTimer
Sleep 1000
 
 
}
 
}
  
  
Sleep 10000
+
cminutes = 0
 +
cseconds = 0
 +
} ; End Runs Loop
 +
 
 +
 
 +
 
  
 
;Click Take button
 
;Click Take button
 
WinActivate, eGenesis Client
 
WinActivate, eGenesis Client
  
GuiControl, Text, MineCycleText, Taking, Pot 1
+
GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nFinish: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Taking items from kettle...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s
Click, 45, %BeginIgniteY1% ;Pot 1
+
 
 +
Click, %BeginIgniteTakeX1%, %BeginIgniteTakeY% ;Pot 1
 
Sleep 200
 
Sleep 200
GuiControl, Text, MineCycleText, Taking, Pot 2
+
Click, %BeginIgniteTakeX2%, %BeginIgniteTakeY% ;Pot 2
Click, 220, %BeginIgniteY1% ;Pot 2
 
 
Sleep 200
 
Sleep 200
GuiControl, Text, MineCycleText, Click Begin, Pot 3
+
Click, %BeginIgniteTakeX3%, %BeginIgniteTakeY% ;Pot 3
Click, 385, %BeginIgniteY1% ;Pot 3
 
 
Sleep 200
 
Sleep 200
GuiControl, Text, MineCycleText, Click Begin, Pot 4
+
Click, %BeginIgniteTakeX4%, %BeginIgniteTakeY% ;Pot 4
Click, 555, %BeginIgniteY1% ;Pot 4
 
 
Sleep 200
 
Sleep 200
GuiControl, Text, MineCycleText, Click Begin, Pot 5
+
Click, %BeginIgniteTakeX5%, %BeginIgniteTakeY% ;Pot 5
Click, 725, %BeginIgniteY1% ;Pot 5
 
 
Sleep 200
 
Sleep 200
GuiControl, Text, MineCycleText, Click Begin, Pot 6
+
Click, %BeginIgniteTakeX6%, %BeginIgniteTakeY% ;Pot 6
Click, 890, %BeginIgniteY1% ;Pot 6
 
 
Sleep 200
 
Sleep 200
  
GuiControl, Text, MineCycleText, Click Begin, Pot 7
+
Click, %BeginIgniteTakeX1%, %BeginIgniteTakeY2% ;Pot 7
Click, 45, %BeginIgniteY2% ;Pot 7
 
 
Sleep 200
 
Sleep 200
GuiControl, Text, MineCycleText, Click Begin, Pot 8
+
Click, %BeginIgniteTakeX2%, %BeginIgniteTakeY2% ;Pot 8
Click, 220, %BeginIgniteY2% ;Pot 8
 
 
Sleep 200
 
Sleep 200
GuiControl, Text, MineCycleText, Click Begin, Pot 9
+
Click, %BeginIgniteTakeX3%, %BeginIgniteTakeY2% ;Pot 9
Click, 385, %BeginIgniteY2% ;Pot 9
 
 
Sleep 200
 
Sleep 200
GuiControl, Text, MineCycleText, Click Begin, Pot 10
+
Click, %BeginIgniteTakeX4%, %BeginIgniteTakeY2% ;Pot 10
Click, 555, %BeginIgniteY2% ;Pot 10
 
 
Sleep 200
 
Sleep 200
GuiControl, Text, MineCycleText, Click Begin, Pot 11
+
Click, %BeginIgniteTakeX5%, %BeginIgniteTakeY2% ;Pot 11
Click, 725, %BeginIgniteY2% ;Pot 11
 
Sleep 200
 
GuiControl, Text, MineCycleText, Click Begin, Pot 12
 
Click, 890, %BeginIgniteY2% ;Pot 12
 
 
Sleep 200
 
Sleep 200
 +
Click, %BeginIgniteTakeX6%, %BeginIgniteTakeY2% ;Pot 12
 +
 +
 +
;ALL DONE!
 +
GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nFinish: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: All Done!  Reload: Ctrl+R`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s
 +
return
 +
 +
 +
 +
 +
StokeMax:
 +
 +
WinActivate, eGenesis Client
 +
  
 +
;Click Stoke Max
 +
 +
stoke ++
  
 +
GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: STOKING!`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s
  
} ;End Loop Turns
+
MouseGetPos, OldMX, OldMY
  
 +
Click, %StokeMaxX1%, %StokeMaxY% ; Pot 1
 +
sleep 200
 +
Click, %StokeMaxX2%, %StokeMaxY% ; Pot 2
 +
sleep 200
 +
Click, %StokeMaxX3%, %StokeMaxY% ; Pot 3
 +
sleep 200
 +
Click, %StokeMaxX4%, %StokeMaxY% ; Pot 4
 +
sleep 200
 +
Click, %StokeMaxX5%, %StokeMaxY% ; Pot 5
 +
sleep 200
 +
Click, %StokeMaxX6%, %StokeMaxY% ; Pot 6
 +
sleep 200
  
 +
Click, %StokeMaxX1%, %StokeMaxY2% ; Pot 7
 +
sleep 200
 +
Click, %StokeMaxX2%, %StokeMaxY2% ; Pot 8
 +
sleep 200
 +
Click, %StokeMaxX3%, %StokeMaxY2% ; Pot 9
 +
sleep 200
 +
Click, %StokeMaxX4%, %StokeMaxY2% ; Pot 10
 +
sleep 200
 +
Click, %StokeMaxX5%, %StokeMaxY2% ; Pot 11
 +
sleep 200
 +
Click, %StokeMaxX6%, %StokeMaxY2% ; Pot 12
 +
sleep 200
  
Gui, Destroy
+
MouseMove, %OldMX%, %OldMY%, 0
Gui, Add, Text,, %Turns% turns...`n`nAll Done!.
 
Gui, Show
 
 
return
 
return
  
  
 +
Timer:
  
 +
seconds ++
 +
 +
if (seconds = 60)
 +
{
 +
seconds := 0
 +
minutes ++
 +
}
 +
 +
if (seconds_eta = 0)
 +
{
 +
seconds_eta := 60
 +
minutes_eta --
 +
}
 +
 +
if (minutes_eta < 0)
 +
minutes_eta := 0
 +
 +
seconds_eta --
 +
return
  
StokeMax:
 
  
WinActivate, eGenesis Client
+
SetCountdown:
  
StokeMaxY1 = 75
+
countdown := (cminutes * 60 + cseconds)
StokeMaxY2 = 335
+
sSeconds := cseconds
 +
sMinutes := cminutes
 +
return
  
if (Kettle == "Public")
 
{
 
StokeMaxY1 := StokeMaxY1 + 15
 
StokeMaxY2 := StokeMaxY2 + 30
 
}
 
  
;Click Stoke Max
+
StokeTimer:
MouseGetPos, OldMX, OldMY
+
if (stoke = 5)
 +
{
 +
GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nFinish: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Waiting on kettle to finish...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s
  
GuiControl, Text, MineCycleText, Stoking, Pot 1
+
} else {
Click, 50, %StokeMaxY1% ; Pot 1
 
Sleep 200
 
GuiControl, Text, MineCycleText, Stoking, Pot 2
 
Click, 250, %StokeMaxY1% ; Pot 2
 
Sleep 200
 
GuiControl, Text, MineCycleText, Stoking, Pot 3
 
Click, 420, %StokeMaxY1% ; Pot 3
 
Sleep 200
 
GuiControl, Text, MineCycleText, Stoking, Pot 4
 
Click, 590, %StokeMaxY1% ; Pot 4
 
Sleep 200
 
GuiControl, Text, MineCycleText, Stoking, Pot 5
 
Click, 750, %StokeMaxY1% ; Pot 5
 
Sleep 200
 
GuiControl, Text, MineCycleText, Stoking, Pot 6
 
Click, 910, %StokeMaxY1% ; Pot 6
 
Sleep 200
 
  
GuiControl, Text, MineCycleText, Stoking, Pot 7
+
GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Waiting to stoke...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s
Click, 50, %StokeMaxY2% ; Pot 7
+
}
Sleep 200
 
GuiControl, Text, MineCycleText, Stoking, Pot 8
 
Click, 250, %StokeMaxY2% ; Pot 8
 
Sleep 200
 
GuiControl, Text, MineCycleText, Stoking, Pot 9
 
Click, 420, %StokeMaxY2% ; Pot 9
 
Sleep 200
 
GuiControl, Text, MineCycleText, Stoking, Pot 10
 
Click, 590, %StokeMaxY2% ; Pot 10
 
Sleep 200
 
GuiControl, Text, MineCycleText, Stoking, Pot 11
 
Click, 750, %StokeMaxY2% ; Pot 11
 
Sleep 200
 
GuiControl, Text, MineCycleText, Stoking, Pot 12
 
Click, 910, %StokeMaxY2% ; Pot 12
 
Sleep 200
 
  
 +
countdown --
 +
if (sSeconds = 0)
 +
{
 +
sSeconds := 60
 +
sMinutes --
 +
}
 +
 +
if (sMinutes < 0)
 +
sMinutes := 0
  
MouseMove, %OldMX%, %OldMY%, 0
+
sSeconds --
return
+
Sleep 1000
</pre>
+
return</pre>

Revision as of 06:38, 19 May 2010

6 Kettles: (12 Kettles at bottom)

0;Make Potash/Acid/Salt with 6 kettles

;Pin 6 kettle menus from left to right, starting at upper left corner

;Ctrl+Alt+W to start script
;Ctrl+R to reload
;Ctrl+P to pause
;Emergency: Hold F2 button down 2 seconds to Abort current countdown and hit Stoke Max immediately on all pots
;Only the current countdown will abort. It will move on to the next countdown and continue normally.

;Trust the script, only use Emergency F2 when you have more than 32s when the Wood count turns to zero
;As long as there is less than 32s, when the wood hits zero, then dont interupt the script
;When it hits zero wood, its still a full 32 seconds before the kettle goes out
;Likewise with stoking. It does not matter if you stoke the instant it hits zero wood or 29 seconds later, it wont speed anything up.

^r::reload
^p::Pause
^!w::

;Date: May 19, 2010
;Author: Cegaiel



	IfWinExist eGenesis Client
	{
	WinGet, GameWinHandle, ID, eGenesis Client
	} else {
	Msgbox, eGenesis client not running, exiting...
	Exit
	}



	WinGetActiveStats, win_Title, Xmax, Ymax, win_Xpos, win_Ypos

	;======================================================================
	;Check to see if we are in the correct resolution, or else exit script.
	;You may remove this entire routine, if you wish.

	if !(Xmax = 1032) && (Ymax = 746)
	{
	Msgbox, You are not in 1024x768 resolution`n`nExiting...
	EXIT
	}
	;======================================================================



	Gui, +AlwaysOnTop +ToolWindow
	Gui, Add, Text,, Type of Kettles?
	Gui, Add, DropDownList, vKettle Choose2, Private|Public
	Gui, Add, Text,, What are we making?
	Gui, Add, DropDownList, vMake Choose2, Acid|Potash|Salt
	Gui, Add, Text,, How many runs?
	Gui, Add, Edit, vRuns wp number, 1
	Gui, Add, Button, Default gStart, BEGIN
	Gui, Show
	return


	Start:

	Gui, Submit
	Gui, Destroy

	Counter = 0
	Wood := (168 * runs)
	Water := (150 * runs)
	Salt := (6 * runs)
	Ash := (30 * runs)

	if (Make == "Acid") {
	OutputTotal := (3 * 6 * runs)
	Msgbox, Ingredients needed to run 6 kettles (%runs% runs):`n`n%wood% Wood minimum (a few extra just in case)`n%water% Sulphurous Water`n%salt% Salt`n`nMake sure you have that in your inventory!`n`nYield: 3 Acid per kettle`nTotal: %OutputTotal% Acid (%runs% runs)`n`nKettle Type: %Kettle%`n`nClick OK to continue...


	;Position of the Acid button
	PotashX1 = 125
	PotashX2 = 295
	PotashX3 = 465
	PotashX4 = 635
	PotashX5 = 805
	PotashX6 = 975

	PotashY = 265 

	} else if (Make == "Potash") {
	OutputTotal := (5 * 6 * runs)
	Msgbox, Ingredients needed to run 6 kettles (%runs% runs):`n`n%wood% Wood minimum (a few extra just in case)`n%water% Water`n%ash% Ash`n`nMake sure you have that in your inventory!`n`nYield: 5 Potash per kettle`nTotal: %OutputTotal% Potash (%runs% runs)`n`nKettle Type: %Kettle%`n`nClick OK to continue...


	;Position of the Potash button
	PotashX1 = 45
	PotashX2 = 220
	PotashX3 = 385
	PotashX4 = 555
	PotashX5 = 725
	PotashX6 = 890

	PotashY = 170

	} else if (Make == "Salt") {
	OutputTotal := (3 * 6 * runs)
	Msgbox, Ingredients needed to run 6 kettles (%runs% runs):`n`n%wood% Wood minimum (a few extra just in case)`n%water% Coconut Water`n`nMake sure you have that in your inventory!`n`nYield: 3 Salt per kettle`nTotal: %OutputTotal% Salt (%runs% runs)`n`nKettle Type: %Kettle%`n`nClick OK to continue...


	;Position of the Salt button
	PotashX1 = 125
	PotashX2 = 295
	PotashX3 = 465
	PotashX4 = 635
	PotashX5 = 805
	PotashX6 = 975

	PotashY = 240
	}



	;This is where the Stoke Max option appears on the menu
	StokeMaxX1 = 70
	StokeMaxX2 = 250
	StokeMaxX3 = 420
	StokeMaxX4 = 590
	StokeMaxX5 = 750
	StokeMaxX6 = 910

	StokeMaxY = 75


	;Max button, this is after the pot is ignited and asks for Quantity, we hit the Max button instead of typing a number
	MaxButtonX = 515
	MaxButtonY = 420


	;The Begin, Ignite and Take button appear in the same place, so these apply to all three.
	BeginIgniteTakeX1 = 45
	BeginIgniteTakeX2 = 220
	BeginIgniteTakeX3 = 390
	BeginIgniteTakeX4 = 555
	BeginIgniteTakeX5 = 725
	BeginIgniteTakeX6 = 895

	BeginIgniteTakeY = 240



;NOTE: PotashY, StokeMaxY and BeginIgniteTakeY is set to Y position in Private kettle setting.
;If this is a public kettle AND you are trying to change numbers for another resolution, then note:
;The coords are adjusted for public below, take that into consideration.
;If you dont have any of your own kettles and will change numbers for a different resolution, then
;Just plug in all the numbers above (center of buttons) and launch the script and choose "Private" kettle, even though it is "Public"

	if (Kettle == "Public")
	{
	;If the kettle is public then it lowers 15 coords at 1024x768 (will vary with other resolutions)
	PotashY := PotashY + 15
	BeginIgniteTakeY := BeginIgniteTakeY + 15
	StokeMaxY := StokeMaxY + 15
	}

	;Make sure the RefreshY line stays after the 'if (Kettle == "Public")' line
	;This is the Y button of when it clicks the top of the menu to refresh the menu


	RefreshY := (StokeMaxY - 25)
	




	Gui, +AlwaysOnTop +ToolWindow
	Gui, Font, normal
	Gui, Add, Text, vMineCycleText, Preparing to start script, please stand by ...`n`n`n`n`n`n`n`n`n
	Gui, Show


	delay = 6
	Loop, %delay%
	{
	GuiControl, Text, MineCycleText, %delay% seconds before the script will begin ...`n`nMove this out of way!
	delay --
	Sleep 1000
	}

SetDefaultMouseSpeed, 0


	GuiControl, Text, MineCycleText, Focusing to eGenesis client ...

	WinActivate, eGenesis Client
	Sleep 500



		Loop, %Runs%
		{
		counter ++
		stoke = 0
		waterlevel = -
		countdown = 0
		seconds = 0
		minutes = 0
		seconds_eta = 30
		minutes_eta = 15 
		cseconds = 0
		cminutes = 0
		sSeconds = 0
		sMinutes = 0
	
;Click Potash/Acid/Salt Button

GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Clicking "%make%" buttons...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s


	Click, %PotashX1%, %PotashY% ;Pot 1
	sleep 200
	Click, %PotashX2%, %PotashY% ;Pot 2
	sleep 200
	Click, %PotashX3%, %PotashY% ;Pot 3
	sleep 200
	Click, %PotashX4%, %PotashY% ;Pot 4
	sleep 200
	Click, %PotashX5%, %PotashY% ;Pot 5
	sleep 200
	Click, %PotashX6%, %PotashY% ;Pot 6
	sleep 200


;Click Begin button

GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Clicking "Begin" buttons...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s


	Click, %BeginIgniteTakeX1%, %BeginIgniteTakeY% ;Pot 1			
	sleep 200
	Click, %BeginIgniteTakeX2%, %BeginIgniteTakeY% ;Pot 2			
	sleep 200
	Click, %BeginIgniteTakeX3%, %BeginIgniteTakeY% ;Pot 3			
	sleep 200
	Click, %BeginIgniteTakeX4%, %BeginIgniteTakeY% ;Pot 4			
	sleep 200
	Click, %BeginIgniteTakeX5%, %BeginIgniteTakeY% ;Pot 5			
	sleep 200
	Click, %BeginIgniteTakeX6%, %BeginIgniteTakeY% ;Pot 6			
	sleep 200



;Click Ignite + Max button, then Refresh Menu (to show Stoke Max option)

GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Igniting + Adding Max Wood...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s


	;Pot 1
	Click, %BeginIgniteTakeX1%, %BeginIgniteTakeY% ;Ignite			
	sleep 200
	Click, %MaxButtonX%, %MaxButtonY% ;Max button
	sleep 200
	Click, %StokeMaxX1%, %RefreshY% ;Click Menu to refresh	
	sleep 200

	;Pot 2		
	Click, %BeginIgniteTakeX2%, %BeginIgniteTakeY% ;Ignite			
	sleep 200
	Click, %MaxButtonX%, %MaxButtonY% ;Max button
	sleep 200
	Click, %StokeMaxX2%, %RefreshY% ;Click Menu to refresh	
	sleep 200

	;Pot 3
	Click, %BeginIgniteTakeX3%, %BeginIgniteTakeY% ;Ignite			
	sleep 200
	Click, %MaxButtonX%, %MaxButtonY% ;Max button
	sleep 200
	Click, %StokeMaxX3%, %RefreshY% ;Click Menu to refresh	
	sleep 200

	;Pot 4
	Click, %BeginIgniteTakeX4%, %BeginIgniteTakeY% ;Ignite			
	sleep 200
	Click, %MaxButtonX%, %MaxButtonY% ;Max button
	sleep 200
	Click, %StokeMaxX4%, %RefreshY% ;Click Menu to refresh	
	sleep 200

	;Pot 5
	Click, %BeginIgniteTakeX5%, %BeginIgniteTakeY% ;Ignite			
	sleep 200
	Click, %MaxButtonX%, %MaxButtonY% ;Max button
	sleep 200
	Click, %StokeMaxX5%, %RefreshY% ;Click Menu to refresh	
	sleep 200

	;Pot 6
	Click, %BeginIgniteTakeX6%, %BeginIgniteTakeY% ;Ignite			
	sleep 200
	Click, %MaxButtonX%, %MaxButtonY% ;Max button
	sleep 200
	Click, %StokeMaxX6%, %RefreshY% ;Click Menu to refresh	
	sleep 200


	;This begins the Elapsed and ETA timers
	#Persistent 
	SetTimer, Timer, 1000



;Stoke 1 countdown (@ 24 water, first 3 waters dont get burned off after you first start a kettle

	waterlevel = 24
	cminutes = 2
	cseconds = 12
	;countdown = 132
	GoSub, SetCountdown

	Loop, %countdown%
	{

	Gosub, StokeTimer

		GetKeyState, state, F2
		if state = D
		break
		}

	waterlevel = 19
	Gosub, StokeMax




;Stoke 2 (@ 19 water) countdown

	cminutes = 2
	cseconds = 43
	;countdown = 163
	GoSub, SetCountdown

	Loop, %countdown%
	{

	Gosub, StokeTimer

		GetKeyState, state, F2
		if state = D
		{
		break
		}
	}

	waterlevel = 14
	Gosub, StokeMax



;Stoke 3 (@ 14 water) countdown

	cminutes = 2
	cseconds = 43
	;countdown = 163
	GoSub, SetCountdown

	Loop, %countdown%
	{

	Gosub, StokeTimer

		GetKeyState, state, F2
		if state = D
		{
		break
		}
	}

	waterlevel = 9
	Gosub, StokeMax



;Stoke 4 (@ 9 water) countdown

	cminutes = 2
	cseconds = 43
	;countdown = 163
	GoSub, SetCountdown

	Loop, %countdown%
	{

	Gosub, StokeTimer

		GetKeyState, state, F2
		if state = D
		{
		break
		}
	}

waterlevel = 6
Gosub, StokeMax


;Stoke 5 (@ 6 water) countdown

	cminutes = 1
	cseconds = 36
	;countdown = 96
	GoSub, SetCountdown

	Loop, %countdown%
	{

	Gosub, StokeTimer

		GetKeyState, state, F2
		if state = D
		{
		break
		}
	}

waterlevel = N/A
Gosub, StokeMax


;Countdown until complete
	cminutes = 3
	cseconds = 6
	;countdown = 186
	GoSub, SetCountdown

	Loop, %countdown%
	{

	Gosub, StokeTimer
	}


cminutes = 0
cseconds = 0
		} ; End Runs Loop




;Click Take button
	WinActivate, eGenesis Client

GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nFinish: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Taking items from kettle...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s

	Click, %BeginIgniteTakeX1%, %BeginIgniteTakeY% ;Pot 1			
	Sleep 200
	Click, %BeginIgniteTakeX2%, %BeginIgniteTakeY% ;Pot 2			
	Sleep 200
	Click, %BeginIgniteTakeX3%, %BeginIgniteTakeY% ;Pot 3			
	Sleep 200
	Click, %BeginIgniteTakeX4%, %BeginIgniteTakeY% ;Pot 4			
	Sleep 200
	Click, %BeginIgniteTakeX5%, %BeginIgniteTakeY% ;Pot 5			
	Sleep 200
	Click, %BeginIgniteTakeX6%, %BeginIgniteTakeY% ;Pot 6			


;ALL DONE!
GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nFinish: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: All Done!  Reload: Ctrl+R`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s
return




	StokeMax:

	WinActivate, eGenesis Client


	;Click Stoke Max
	
	stoke ++

GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: STOKING!`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s

	MouseGetPos, OldMX, OldMY
	Click, %StokeMaxX1%, %StokeMaxY% ; Pot 1			
	sleep 200
	Click, %StokeMaxX2%, %StokeMaxY% ; Pot 2			
	sleep 200
	Click, %StokeMaxX3%, %StokeMaxY% ; Pot 3			
	sleep 200
	Click, %StokeMaxX4%, %StokeMaxY% ; Pot 4			
	sleep 200
	Click, %StokeMaxX5%, %StokeMaxY% ; Pot 5			
	sleep 200
	Click, %StokeMaxX6%, %StokeMaxY% ; Pot 6			
	sleep 200
	MouseMove, %OldMX%, %OldMY%, 0			
	return


		Timer:

		seconds ++

		if (seconds = 60)
		{
		seconds := 0
		minutes ++
		}
		
		if (seconds_eta = 0)
		{
		seconds_eta := 60
		minutes_eta --
		}
		
		if (minutes_eta < 0)
		minutes_eta := 0

		seconds_eta --
		return


			SetCountdown:

			countdown := (cminutes * 60 + cseconds)
			sSeconds := cseconds
			sMinutes := cminutes
			return


				StokeTimer:
				if (stoke = 5)
				{
GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nFinish: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Waiting on kettle to finish...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s

				} else {

GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Waiting to stoke...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s
				}

				countdown --
				if (sSeconds = 0)
				{
				sSeconds := 60
				sMinutes --
				}
		
				if (sMinutes < 0)
				sMinutes := 0

				sSeconds --
				Sleep 1000
				return







12 Kettles:

;Make Potash/Acid/Salt with 12 kettles

;Pin 12 kettle menus from left to right, starting at upper left corner

;Ctrl+Alt+W to start script
;Ctrl+R to reload
;Ctrl+P to pause
;Emergency: Hold F2 button down 2 seconds to Abort current countdown and hit Stoke Max immediately on all pots
;Only the current countdown will abort. It will move on to the next countdown and continue normally.

;Trust the script, only use Emergency F2 when you have more than 32s when the Wood count turns to zero
;As long as there is less than 32s, when the wood hits zero, then dont interupt the script
;When it hits zero wood, its still a full 32 seconds before the kettle goes out
;Likewise with stoking. It does not matter if you stoke the instant it hits zero wood or 29 seconds later, it wont speed anything up.

^r::reload
^p::Pause
^!w::

;Date: May 19, 2010
;Author: Cegaiel



	IfWinExist eGenesis Client
	{
	WinGet, GameWinHandle, ID, eGenesis Client
	} else {
	Msgbox, eGenesis client not running, exiting...
	Exit
	}



	WinGetActiveStats, win_Title, Xmax, Ymax, win_Xpos, win_Ypos

	;======================================================================
	;Check to see if we are in the correct resolution, or else exit script.
	;You may remove this entire routine, if you wish.

	if !(Xmax = 1032) && (Ymax = 746)
	{
	Msgbox, You are not in 1024x768 resolution`n`nExiting...
	EXIT
	}
	;======================================================================



	Gui, +AlwaysOnTop +ToolWindow
	Gui, Add, Text,, Type of Kettles?
	Gui, Add, DropDownList, vKettle Choose2, Private|Public
	Gui, Add, Text,, What are we making?
	Gui, Add, DropDownList, vMake Choose2, Acid|Potash|Salt
	Gui, Add, Text,, How many runs?
	Gui, Add, Edit, vRuns wp number, 1
	Gui, Add, Button, Default gStart, BEGIN
	Gui, Show
	return


	Start:

	Gui, Submit
	Gui, Destroy

	Counter = 0
	Wood := (336 * runs)
	Water := (300 * runs)
	Salt := (12 * runs)
	Ash := (60 * runs)

	if (Make == "Acid") {
	OutputTotal := (3 * 12 * runs)
	Msgbox, Ingredients needed to run 12 kettles (%runs% runs):`n`n%wood% Wood minimum (a few extra just in case)`n%water% Sulphurous Water`n%salt% Salt`n`nMake sure you have that in your inventory!`n`nYield: 3 Acid per kettle`nTotal: %OutputTotal% Acid (%runs% runs)`n`nKettle Type: %Kettle%`n`nClick OK to continue...


	;Position of the Acid button
	PotashX1 = 125
	PotashX2 = 295
	PotashX3 = 465
	PotashX4 = 635
	PotashX5 = 805
	PotashX6 = 975

	PotashY = 265 
	PotashY2 = 525

	} else if (Make == "Potash") {
	OutputTotal := (5 * 12 * runs)
	Msgbox, Ingredients needed to run 12 kettles (%runs% runs):`n`n%wood% Wood minimum (a few extra just in case)`n%water% Water`n%ash% Ash`n`nMake sure you have that in your inventory!`n`nYield: 5 Potash per kettle`nTotal: %OutputTotal% Potash (%runs% runs)`n`nKettle Type: %Kettle%`n`nClick OK to continue...


	;Position of the Potash button
	PotashX1 = 45
	PotashX2 = 220
	PotashX3 = 385
	PotashX4 = 555
	PotashX5 = 725
	PotashX6 = 890

	PotashY = 170
	PotashY2 = 428

	} else if (Make == "Salt") {
	OutputTotal := (3 * 12 * runs)
	Msgbox, Ingredients needed to run 12 kettles (%runs% runs):`n`n%wood% Wood minimum (a few extra just in case)`n%water% Coconut Water`n`nMake sure you have that in your inventory!`n`nYield: 3 Salt per kettle`nTotal: %OutputTotal% Salt (%runs% runs)`n`nKettle Type: %Kettle%`n`nClick OK to continue...


	;Position of the Salt button
	PotashX1 = 125
	PotashX2 = 295
	PotashX3 = 465
	PotashX4 = 635
	PotashX5 = 805
	PotashX6 = 975

	PotashY = 240
	PotashY2 = 500
	}



	;This is where the Stoke Max option appears on the menu
	StokeMaxX1 = 70
	StokeMaxX2 = 250
	StokeMaxX3 = 420
	StokeMaxX4 = 590
	StokeMaxX5 = 750
	StokeMaxX6 = 910

	StokeMaxY = 75
	StokeMaxY2 = 335


	;Max button, this is after the pot is ignited and asks for Quantity, we hit the Max button instead of typing a number
	MaxButtonX = 515
	MaxButtonY = 420


	;The Begin, Ignite and Take button appear in the same place, so these apply to all three.
	BeginIgniteTakeX1 = 45
	BeginIgniteTakeX2 = 220
	BeginIgniteTakeX3 = 390
	BeginIgniteTakeX4 = 555
	BeginIgniteTakeX5 = 725
	BeginIgniteTakeX6 = 895

	BeginIgniteTakeY = 240
	BeginIgniteTakeY2 = 500



;NOTE: PotashY, StokeMaxY and BeginIgniteTakeY is set to Y position in Private kettle setting.
;If this is a public kettle AND you are trying to change numbers for another resolution, then note:
;The coords are adjusted for public below, take that into consideration.
;If you dont have any of your own kettles and will change numbers for a different resolution, then
;Just plug in all the numbers above (center of buttons) and launch the script and choose "Private" kettle, even though it is "Public"

	if (Kettle == "Public")
	{
	;If the kettle is public then it lowers 15 coords at 1024x768 (will vary with other resolutions)
	PotashY := PotashY + 15
	BeginIgniteTakeY := BeginIgniteTakeY + 15
	StokeMaxY := StokeMaxY + 15

	PotashY2 := PotashY2 + 30
	BeginIgniteTakeY2 := BeginIgniteTakeY2 + 30
	StokeMaxY2 := StokeMaxY2 + 30
	}

	;Make sure the RefreshY line stays after the 'if (Kettle == "Public")' line
	;This is the Y button of when it clicks the top of the menu to refresh the menu


	RefreshY := (StokeMaxY - 25)
	RefreshY2 := (StokeMaxY2 - 25)	




	Gui, +AlwaysOnTop +ToolWindow
	Gui, Font, normal
	Gui, Add, Text, vMineCycleText, Preparing to start script, please stand by ...`n`n`n`n`n`n`n`n`n
	Gui, Show


	delay = 6
	Loop, %delay%
	{
	GuiControl, Text, MineCycleText, %delay% seconds before the script will begin ...`n`nMove this out of way!
	delay --
	Sleep 1000
	}

SetDefaultMouseSpeed, 0


	GuiControl, Text, MineCycleText, Focusing to eGenesis client ...

	WinActivate, eGenesis Client
	Sleep 500



		Loop, %Runs%
		{
		counter ++
		stoke = 0
		waterlevel = -
		countdown = 0
		seconds = 0
		minutes = 0
		seconds_eta = 30
		minutes_eta = 15 
		cseconds = 0
		cminutes = 0
		sSeconds = 0
		sMinutes = 0
	
;Click Potash/Acid/Salt Button

GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Clicking "%make%" buttons...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s


	Click, %PotashX1%, %PotashY% ;Pot 1
	sleep 200
	Click, %PotashX2%, %PotashY% ;Pot 2
	sleep 200
	Click, %PotashX3%, %PotashY% ;Pot 3
	sleep 200
	Click, %PotashX4%, %PotashY% ;Pot 4
	sleep 200
	Click, %PotashX5%, %PotashY% ;Pot 5
	sleep 200
	Click, %PotashX6%, %PotashY% ;Pot 6
	sleep 200

	Click, %PotashX1%, %PotashY2% ;Pot 7
	sleep 200
	Click, %PotashX2%, %PotashY2% ;Pot 8
	sleep 200
	Click, %PotashX3%, %PotashY2% ;Pot 9
	sleep 200
	Click, %PotashX4%, %PotashY2% ;Pot 10
	sleep 200
	Click, %PotashX5%, %PotashY2% ;Pot 11
	sleep 200
	Click, %PotashX6%, %PotashY2% ;Pot 12
	sleep 200


;Click Begin button

GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Clicking "Begin" buttons...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s


	Click, %BeginIgniteTakeX1%, %BeginIgniteTakeY% ;Pot 1			
	sleep 200
	Click, %BeginIgniteTakeX2%, %BeginIgniteTakeY% ;Pot 2			
	sleep 200
	Click, %BeginIgniteTakeX3%, %BeginIgniteTakeY% ;Pot 3			
	sleep 200
	Click, %BeginIgniteTakeX4%, %BeginIgniteTakeY% ;Pot 4			
	sleep 200
	Click, %BeginIgniteTakeX5%, %BeginIgniteTakeY% ;Pot 5			
	sleep 200
	Click, %BeginIgniteTakeX6%, %BeginIgniteTakeY% ;Pot 6			
	sleep 200

	Click, %BeginIgniteTakeX1%, %BeginIgniteTakeY2% ;Pot 7			
	sleep 200
	Click, %BeginIgniteTakeX2%, %BeginIgniteTakeY2% ;Pot 8			
	sleep 200
	Click, %BeginIgniteTakeX3%, %BeginIgniteTakeY2% ;Pot 9			
	sleep 200
	Click, %BeginIgniteTakeX4%, %BeginIgniteTakeY2% ;Pot 10			
	sleep 200
	Click, %BeginIgniteTakeX5%, %BeginIgniteTakeY2% ;Pot 11		
	sleep 200
	Click, %BeginIgniteTakeX6%, %BeginIgniteTakeY2% ;Pot 12		
	sleep 200



;Click Ignite + Max button, then Refresh Menu (to show Stoke Max option)

GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Igniting + Adding Max Wood...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s


	;Pot 1
	Click, %BeginIgniteTakeX1%, %BeginIgniteTakeY% ;Ignite			
	sleep 200
	Click, %MaxButtonX%, %MaxButtonY% ;Max button
	sleep 200
	Click, %StokeMaxX1%, %RefreshY% ;Click Menu to refresh	
	sleep 200

	;Pot 2		
	Click, %BeginIgniteTakeX2%, %BeginIgniteTakeY% ;Ignite			
	sleep 200
	Click, %MaxButtonX%, %MaxButtonY% ;Max button
	sleep 200
	Click, %StokeMaxX2%, %RefreshY% ;Click Menu to refresh	
	sleep 200

	;Pot 3
	Click, %BeginIgniteTakeX3%, %BeginIgniteTakeY% ;Ignite			
	sleep 200
	Click, %MaxButtonX%, %MaxButtonY% ;Max button
	sleep 200
	Click, %StokeMaxX3%, %RefreshY% ;Click Menu to refresh	
	sleep 200

	;Pot 4
	Click, %BeginIgniteTakeX4%, %BeginIgniteTakeY% ;Ignite			
	sleep 200
	Click, %MaxButtonX%, %MaxButtonY% ;Max button
	sleep 200
	Click, %StokeMaxX4%, %RefreshY% ;Click Menu to refresh	
	sleep 200

	;Pot 5
	Click, %BeginIgniteTakeX5%, %BeginIgniteTakeY% ;Ignite			
	sleep 200
	Click, %MaxButtonX%, %MaxButtonY% ;Max button
	sleep 200
	Click, %StokeMaxX5%, %RefreshY% ;Click Menu to refresh	
	sleep 200

	;Pot 6
	Click, %BeginIgniteTakeX6%, %BeginIgniteTakeY% ;Ignite			
	sleep 200
	Click, %MaxButtonX%, %MaxButtonY% ;Max button
	sleep 200
	Click, %StokeMaxX6%, %RefreshY% ;Click Menu to refresh	
	sleep 200


	;Pot 7
	Click, %BeginIgniteTakeX1%, %BeginIgniteTakeY2% ;Ignite			
	sleep 200
	Click, %MaxButtonX%, %MaxButtonY% ;Max button
	sleep 200
	Click, %StokeMaxX1%, %RefreshY2% ;Click Menu to refresh	
	sleep 200

	;Pot 8		
	Click, %BeginIgniteTakeX2%, %BeginIgniteTakeY2% ;Ignite			
	sleep 200
	Click, %MaxButtonX%, %MaxButtonY% ;Max button
	sleep 200
	Click, %StokeMaxX2%, %RefreshY2% ;Click Menu to refresh	
	sleep 200

	;Pot 9
	Click, %BeginIgniteTakeX3%, %BeginIgniteTakeY2% ;Ignite			
	sleep 200
	Click, %MaxButtonX%, %MaxButtonY% ;Max button
	sleep 200
	Click, %StokeMaxX3%, %RefreshY2% ;Click Menu to refresh	
	sleep 200

	;Pot 10
	Click, %BeginIgniteTakeX4%, %BeginIgniteTakeY2% ;Ignite			
	sleep 200
	Click, %MaxButtonX%, %MaxButtonY% ;Max button
	sleep 200
	Click, %StokeMaxX4%, %RefreshY2% ;Click Menu to refresh	
	sleep 200

	;Pot 11
	Click, %BeginIgniteTakeX5%, %BeginIgniteTakeY2% ;Ignite			
	sleep 200
	Click, %MaxButtonX%, %MaxButtonY% ;Max button
	sleep 200
	Click, %StokeMaxX5%, %RefreshY2% ;Click Menu to refresh	
	sleep 200

	;Pot 12
	Click, %BeginIgniteTakeX6%, %BeginIgniteTakeY2% ;Ignite			
	sleep 200
	Click, %MaxButtonX%, %MaxButtonY% ;Max button
	sleep 200
	Click, %StokeMaxX6%, %RefreshY2% ;Click Menu to refresh	
	sleep 200


	;This begins the Elapsed and ETA timers
	#Persistent 
	SetTimer, Timer, 1000



;Stoke 1 countdown (@ 24 water, first 3 waters dont get burned off after you first start a kettle

	waterlevel = 24
	cminutes = 2
	cseconds = 12
	;countdown = 132
	GoSub, SetCountdown

	Loop, %countdown%
	{

	Gosub, StokeTimer

		GetKeyState, state, F2
		if state = D
		break
		}

	waterlevel = 19
	Gosub, StokeMax




;Stoke 2 (@ 19 water) countdown

	cminutes = 2
	cseconds = 43
	;countdown = 163
	GoSub, SetCountdown

	Loop, %countdown%
	{

	Gosub, StokeTimer

		GetKeyState, state, F2
		if state = D
		{
		break
		}
	}

	waterlevel = 14
	Gosub, StokeMax



;Stoke 3 (@ 14 water) countdown

	cminutes = 2
	cseconds = 43
	;countdown = 163
	GoSub, SetCountdown

	Loop, %countdown%
	{

	Gosub, StokeTimer

		GetKeyState, state, F2
		if state = D
		{
		break
		}
	}

	waterlevel = 9
	Gosub, StokeMax



;Stoke 4 (@ 9 water) countdown

	cminutes = 2
	cseconds = 43
	;countdown = 163
	GoSub, SetCountdown

	Loop, %countdown%
	{

	Gosub, StokeTimer

		GetKeyState, state, F2
		if state = D
		{
		break
		}
	}

waterlevel = 6
Gosub, StokeMax


;Stoke 5 (@ 6 water) countdown

	cminutes = 1
	cseconds = 36
	;countdown = 96
	GoSub, SetCountdown

	Loop, %countdown%
	{

	Gosub, StokeTimer

		GetKeyState, state, F2
		if state = D
		{
		break
		}
	}

waterlevel = N/A
Gosub, StokeMax


;Countdown until complete
	cminutes = 3
	cseconds = 6
	;countdown = 186
	GoSub, SetCountdown

	Loop, %countdown%
	{

	Gosub, StokeTimer
	}


cminutes = 0
cseconds = 0
		} ; End Runs Loop




;Click Take button
	WinActivate, eGenesis Client

GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nFinish: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Taking items from kettle...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s

	Click, %BeginIgniteTakeX1%, %BeginIgniteTakeY% ;Pot 1			
	Sleep 200
	Click, %BeginIgniteTakeX2%, %BeginIgniteTakeY% ;Pot 2			
	Sleep 200
	Click, %BeginIgniteTakeX3%, %BeginIgniteTakeY% ;Pot 3			
	Sleep 200
	Click, %BeginIgniteTakeX4%, %BeginIgniteTakeY% ;Pot 4			
	Sleep 200
	Click, %BeginIgniteTakeX5%, %BeginIgniteTakeY% ;Pot 5			
	Sleep 200
	Click, %BeginIgniteTakeX6%, %BeginIgniteTakeY% ;Pot 6			
	Sleep 200

	Click, %BeginIgniteTakeX1%, %BeginIgniteTakeY2% ;Pot 7			
	Sleep 200
	Click, %BeginIgniteTakeX2%, %BeginIgniteTakeY2% ;Pot 8			
	Sleep 200
	Click, %BeginIgniteTakeX3%, %BeginIgniteTakeY2% ;Pot 9			
	Sleep 200
	Click, %BeginIgniteTakeX4%, %BeginIgniteTakeY2% ;Pot 10			
	Sleep 200
	Click, %BeginIgniteTakeX5%, %BeginIgniteTakeY2% ;Pot 11		
	Sleep 200
	Click, %BeginIgniteTakeX6%, %BeginIgniteTakeY2% ;Pot 12		


;ALL DONE!
GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nFinish: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: All Done!  Reload: Ctrl+R`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s
return




	StokeMax:

	WinActivate, eGenesis Client


	;Click Stoke Max
	
	stoke ++

GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: STOKING!`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s

	MouseGetPos, OldMX, OldMY

	Click, %StokeMaxX1%, %StokeMaxY% ; Pot 1			
	sleep 200
	Click, %StokeMaxX2%, %StokeMaxY% ; Pot 2			
	sleep 200
	Click, %StokeMaxX3%, %StokeMaxY% ; Pot 3			
	sleep 200
	Click, %StokeMaxX4%, %StokeMaxY% ; Pot 4			
	sleep 200
	Click, %StokeMaxX5%, %StokeMaxY% ; Pot 5			
	sleep 200
	Click, %StokeMaxX6%, %StokeMaxY% ; Pot 6			
	sleep 200

	Click, %StokeMaxX1%, %StokeMaxY2% ; Pot 7
	sleep 200
	Click, %StokeMaxX2%, %StokeMaxY2% ; Pot 8
	sleep 200
	Click, %StokeMaxX3%, %StokeMaxY2% ; Pot 9
	sleep 200
	Click, %StokeMaxX4%, %StokeMaxY2% ; Pot 10
	sleep 200
	Click, %StokeMaxX5%, %StokeMaxY2% ; Pot 11
	sleep 200
	Click, %StokeMaxX6%, %StokeMaxY2% ; Pot 12
	sleep 200

	MouseMove, %OldMX%, %OldMY%, 0			
	return


		Timer:

		seconds ++

		if (seconds = 60)
		{
		seconds := 0
		minutes ++
		}
		
		if (seconds_eta = 0)
		{
		seconds_eta := 60
		minutes_eta --
		}
		
		if (minutes_eta < 0)
		minutes_eta := 0

		seconds_eta --
		return


			SetCountdown:

			countdown := (cminutes * 60 + cseconds)
			sSeconds := cseconds
			sMinutes := cminutes
			return


				StokeTimer:
				if (stoke = 5)
				{
GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nFinish: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Waiting on kettle to finish...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s

				} else {

GuiControl, Text, MineCycleText, Current stoke: %stoke% of 5`nNext stoke's water level: %waterlevel%`nNext stoke: %cminutes%m %cseconds%s`nRemaining: %sMinutes%m %sSeconds%s`n`nStatus: Waiting to stoke...`n`nRuns: %counter% of %runs%`nElapsed: %minutes%m %seconds%s`nETA this run: %minutes_eta%m %seconds_eta%s
				}

				countdown --
				if (sSeconds = 0)
				{
				sSeconds := 60
				sMinutes --
				}
		
				if (sMinutes < 0)
				sMinutes := 0

				sSeconds --
				Sleep 1000
				return