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:Bellamoon

From A Tale in the Desert
Revision as of 15:44, 16 January 2009 by Bellamoon (talk | contribs) (New page: *My macros: // This line is necessary to select the proper window SetActiveWindow Asheron's Call //Charcoal Hearth // // I've made some improvements to the Hearth macro. Depending on y...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search
  • My macros:

// This line is necessary to select the proper window SetActiveWindow Asheron's Call

//Charcoal Hearth // // 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 = 165
 RGBBlue = 220
 RGBGreen = 240
 Guild = 1
 
 // Y Coordinates - Don't change unless you are having a problem.
 RegY = 74      // Y coord for Regulator button
 BeginY = 245   // Y coord for Begin Button
 HeatY = 156    // Y coord for Heat Bar
 WoodY = 180    // Y coord for Wood Bar
 WaterY = 192   // Y coord for Water Bar
 DangerY = 204  // Y coord for Danger Bar
 StatusY = 216  // Y coord for Status Bar
 WoodBY = 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:True
 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
   Rightclick
   Compute NewX = $NewX + $Add2X
   If $Count > $HRow
     Compute NewY = $RegY + $Add2Y
   else
     Compute NewY = $RegY + $Add1Y
   end
   MousePos $NewX, $NewY
   Delay $MDelay
   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 10
   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
 end
 Stop

End //Written with ACTool 5.3.0 by Anka Bell Asterisk ________________________________________ Constants

 Loops = 25   //Number of rounds you want to plant
 Water = 5
 P1Delay = 0
 MoveDelay = 0
 WDelay = 0
 Num = 4
 NewX = 0
 NewY = 0
 varOriginalMouseX = 0
 varOriginalMouseY = 0
 Ox = 476
 Oy = 380
 ODragX = 4
 ODragY = 90
 OWX = 50
 OWY = 120
 Onion = 1
 WaterX = 0
 WaterY = 0
 Plants = 0

End

Set WaterX = {MouseX} Set WaterY = {MouseY}

Form Onions, Settings

 ed1=Editbox:Batch:1
 ed2=Combobox:# of Plants:1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12

ed3=Editbox:Plant 1 wait time:1300 ed4=Editbox:Move wait time:900 ed5=Editbox:Time between Waterings:800 end

FormLoad Onions, Onions.frm

if ShowForm Onions

 Set Loops = Onions[ed1]
 Set Plants = Onions[ed2]
 Set P1Delay = Onions[ed3]
 Set MoveDelay = Onions[ed4]
 Set WDelay = Onions[ed5]

Else

 stop

end

FormSave Onions, Onions.frm

//Activate ATITD Window MousePos 100, 10 Delay 250 Leftclick Delay 2000

Call Onion

Procedure Onion

 Loop $Loops
   Loop $Plants  //Number of plants
     MousePos 50, 40
     Delay 400
     Rightclick
     
     Compute Num = $Onion * 2 - 1
     MousePos 37, 101
     Delay 400
     Loop $Num
       Rightclick
     End
     
     Compute Onion = $Onion + 1
     
     MousePos 32, 162
     Delay 400
     Rightclick
   End
   
   SetConst Onion = 1
   Loop $Plants  //Find and Pin Plants
     Mousepos $Ox, $Oy
     Delay 200
     Call CheckOnions
     Compute Ox = $Ox - 38
   End
   
   SetConst Onion = 1
   Loop 5
     Loop $Plants  // Number of plants
       If $Onion = 5
         Compute OWX = {mousex} + 168
         SetConst OWY = 120
       End
       If $Onion = 9
         Compute OWX = {mousex} + 168
         SetConst OWY = 120
       End
       
       Compute NewY = $OWY - 20
       MousePos $OWX, $NewY
       Delay 200
       Rightclick
       Delay 300
       Mousepos $OWX, $OWY
       Delay 200
       Rightclick
       Compute OWY = {MouseY} + 60
       If $Onion = 1
         Delay 1300  //Plant 1 time
       Else
         Delay 900  //Move Time
       End
       Compute Onion = $Onion + 1
     End
     Delay $WDelay  //Pause between waterings
     SetConst Onion = 1
     Compute OWX = 50
     Compute OWY = 120
   End
   
   Compute NewX = 489
   Compute NewY = 270
   Loop 3
     Loop 4
       MousePos $NewX, $NewY
       Delay 250
       Rightclick
       Compute NewY = $NewY - 60
     End
     Compute NewX = $NewX - 168
     Compute NewY = 270
   End
   Mousepos 930, 385
   Leftclick
   Delay 3000

// Mousepos 473, 397 // Delay 250 // Leftclick // Delay 2000 // MousePos $WaterX, $WaterY // Delay 250 // Leftclick // MousePos 512,423 // Delay 250 // Leftclick // Delay 5000

   Compute Onion = 1
   Compute ODragX = 4
   Compute ODragY = 90
   Compute Ox = 476
   Compute Oy = 380
   Compute OWX = 50
   Compute OWY = 120
 End

End


Procedure CheckOnions

 setconst varOriginalMouseX = {mousex}
 setconst varOriginalMouseY = {mousey}
 Compute NewY = $varOriginalMouseY
 Loop 15
   RightClick
   Delay 400
   LoadRGB {MouseX}, {MouseY}
   if {RGBBlue} > 220
     Compute NewX = {mousex} + 148
     Compute NewY = {mousey} - 23
     MousePos $NewX, $NewY
     Delay 200
     Leftclick
     Compute NewX = {mousex} - 145
     MousePos $NewX, $NewY
     
     if $Onion > 8
       Dragto $ODragX, $ODragY
       Compute ODragY = $ODragY + 60
     End
     if $Onion = 5 or $Onion = 6 or $Onion = 7 or $Onion = 8
       Dragto $ODragX, $ODragY
       Compute ODragY = $ODragY + 60
     End
     If $Onion = 2 or $Onion = 3 or $Onion = 4
       Dragto $ODragX, $ODragY
       Compute ODragY = $ODragY + 60
     End
     if $Onion = 1
       Dragto $ODragX, $ODragY
       Compute ODragY = $ODragY + 60
     End
     Compute Onion = $Onion + 1
     If $Onion = 5
       SetConst ODragY = 90
       Compute ODragX = $ODragX + 168
     End
     If $Onion = 9
       SetConst ODragY = 90
       Compute ODragX = $ODragX + 168
     END
     Break
   Else
     Compute Oy = $Oy + 1
     MousePos $varOriginalMouseX, $Oy
     Delay 200
   End
 End

End ________________________________________ // This line is necessary to select the proper window SetActiveWindow Asheron's Call

// Multi Tool // // This macro does Digs, Mining , Limestone, Dirt, Loom, Hackling Rake. // This macro also does not work on timers and will watch your End, Str and Per // timers. It will do the next action as soon as the timers have expired. // Resolution 1024x768. If you have problems with the macro detecting colors, run // ColorTest. // //INSTRUCTIONS // // I use small action icons in Utility>Interface>Action icons appear in // smaller size. Have not tried with large icons. // ColorTest - Run this if you are having problems with the macro detecting colors. // Once the macro starts, it will ring a bell. You have 5 seconds // to place your mouse pointer over the spot you want to color test. // A bell will ring again when the macro is done. Look in the test // log to retrieve your RGB values for that color. You can use // these values for the Dirt and Limestone proceedures if needed. // // Dig - Pin the "Dig Deeper" window where ever you want it. // Put the mouse pointer over the "Dig Deeper" button. // Alt tab to ACTool(Don't move the mouse) and press F2 // It will then dig whenever the END timer expires. // // Dirt - This one is a bit more automated. // Have a shovel in inventory and stand over dirt. // Start the macro. // This one will find the dirt icon on it's own and dig whenever // the timer is ready. // // Firepit - This one will run 1 firepit. The firepit has to have a certain // orientation so I'll be posting a screenshot on my user page. The // initial pointer position is crucial also. Pin the firepit window to // the top left corner. Place the pointer in the position expained on // my user page. Don't move the mouse and alt tab to ACTool. Press Start // or F2 to start the macro. It will switch to the ATITD client and after // a few seconds will ring a bell. All that is happened so far is that the // mouse position has been stored and the macro is paused. At this point, // put everything you want in your fire, have an iron poker in your // inventory. This is run on a guilded firepit, if you need one for a // personal firepit, chat me and I'll add that feature. Once the fire // starts, Alt tab to ACTool once again and press the resume button // (Next to start button). I'm not claiming this to be 100% but once you // get the pointer in the right spot, it hasn't failed any test so far. // // Hackling Rake - Have rotten flax on hand // Make sure rake is on step 1 // Pin Rake window to top left corner. // Put mouse pointer over step 1 option. // Alt tab to windows (Don't touch mouse) Press F2 // This also will watch the end timer and act when ready. // // Hookah - Simple macro that will smoke the hookah for you. Put the window any place // you want it. Place pointer over the smoke option. It will keep trying to // smoke even when the hookah is empty. I'll add in a safeguard soon. // // Limestone - Simply start this macro. // It will gather limestone when the timer is ready. // // Loom - Load the loom // Pin Loom window to top left corner. // Put the mouse pointer over the item you want to create. // Alt tab to windows (Dont touch mouse) Press F2 // This will work the loom when the End timer is gone. // // Mine - Pin 18 crystals and put the windows stacked on top of each other // in the top left corner. Make sure the mine is empty (no Take // option). If you end up stopping the macro and want to restart // without going through the setup section, uncheck Mine Setup // when able. It will position the windows and randomly pull from a // window whenever the PerStr timers are gone. X Coord Work is there // if your mouse pointer is missing the work button. If the mouse is too // far to the right, decrease the number. // // Anka

Include Objects.mac

Constants

 Rounds = 0
 YWork = 163 //95  //75
 XWork = 89
 XOrig = 0
 YOrig = 0
 AddX = 249  //100
 AddY = 63 //95 //63
 MouseX = 0
 MouseY = 0
 FireX = 23
 FireY = 93
 Fire1 = 423,644
 Fire2 = 0
 Fire3 = 0
 Fire4 = 0
 Fire5 = 0
 Fire1X = 88
 Fire1Y = 32
 Fire2X = 74
 Fire2Y = 58
 Fire3X = 90
 Fire3Y = 65
 Fire4X = 107
 Fire4Y = 58
 Fire5X = 105
 Fire5Y = 44
 Red = 0
 Green = 0
 Blue = 0
 ButtonX = 1010
 ButtonY = 32
 SubX = 31
 Button = 0
 
 Num = 0
 First = 0
 WinX = 3
 WinY = 29 //625   //593
 DragX = 3
 DragY = 115  //49 //29
 NewX = 0
 NewY = 0
 Minval = 1
 Maxval = 18
 RanX = 0
 RanY = 0
 Setup = 0
 Guild = 0
 Done = 0
 SDelay = 100
 MDelay = 250

End

SetConst MouseX = {MouseX} SetConst MouseY = {MouseY}

Form MultiTool, Choose your Job

 ed1=EditBox:Rounds:1
 ed2=Combobox:Which Job?:Dig,Dirt,FirePit,Hackling,Hookah,Limestone,Loom,Mine,ColorTest
 ed3=Checkbox:Guilded Mine:False
 ed4=Checkbox:Mine Setup:True
 ed5=Checkbox:StokeBell:True
 ed6=Checkbox:Mine Repaired:False
 ed7=EditBox:X Coord Work:240

end

FormLoad MultiTool, MultiTool.frm

if ShowForm MultiTool

 Set Rounds = MultiTool[ed1]
 Set XWork = MultiTool[ed7]
 If MultiTool[ed4] = True
   setConst Setup = 0
 else
   setConst Setup = 1
 End

else

 Stop

end FormSave MultiTool, MultiTool.frm

MousePos 100, 20 Delay 250 LeftClick MousePos 25, 60 Delay 5000

Loop $Rounds

 Call MultiTool[ed2]
 Call Checkforlostfocus

End

Procedure FirePit

 If $Setup = 0
   Bell Asterisk
   Pause
   SetConst Setup = 1
 End
 
 MousePos 100, 20
 Delay 250
 LeftClick
 Delay 1000
 
 MousePos 15, 45
 Delay 100
 Rightclick
 SetConst Done = 0
 
 If $Button = 0
   Compute NewX = $MouseX + $Fire1X
   Compute NewY = $MouseY + $Fire1Y
   SetConst Fire1 = $NewX,$NewY
   Compute NewX = $MouseX + $Fire2X
   Compute NewY = $MouseY + $Fire2Y
   SetConst Fire2 = $NewX,$NewY
   Compute NewX = $MouseX + $Fire3X
   Compute NewY = $MouseY + $Fire3Y
   SetConst Fire3 = $NewX,$NewY
   Compute NewX = $MouseX + $Fire4X
   Compute NewY = $MouseY + $Fire4Y
   SetConst Fire4 = $NewX,$NewY
   Compute NewX = $MouseX + $Fire5X
   Compute NewY = $MouseY + $Fire5Y
   SetConst Fire5 = $NewX,$NewY
   Inc Button
 End
 
 While $Done = 0
   Mousepos $Fire1
   Delay 100
   LoadRGB {mousex},{mousey}
   IF {RGBGreen} = 255
     MousePos $Fire2
     Delay 100
     LoadRGB {mousex},{mousey}
     IF {RGBGreen} = 255
       MousePos $Fire3
       Delay 100
       LoadRGB {mousex},{mousey}
       IF {RGBGreen} = 255
         MousePos $Fire4
         Delay 100
         LoadRGB {mousex},{mousey}
         IF {RGBGreen} = 255
           MousePos $Fire5
           Delay 100
           LoadRGB {mousex},{mousey}
           IF {RGBGreen} = 255
             //Stoke
             MousePos 37, 93
             Delay 200
             Rightclick
             If MultiTool[ed5] = True
               bell asterisk
             End
             Delay 26000
             MousePos 28, 61
             Delay 200
             Rightclick
             SetConst Done = 1
           End
         End
       End
     End
   End
 End

End

Procedure Dig

 SetConst Button = 0
 While $Button = 0
   IsObject Endur at 973, 79
     Delay 500
   Else
     SetConst XOrig = {mousex}
     SetConst YOrig = {mousey}
     MousePos $MouseX, $MouseY
     Delay 200
     Rightclick
     Delay 500
   End
 End
 SetConst Button = 1

End

Procedure Hookah

 SetConst Button = 0
 While $Button = 0
   IsObject Con at 975, 79
     Delay 500
   Else
     SetConst XOrig = {mousex}
     SetConst YOrig = {mousey}
     MousePos $MouseX, $MouseY
     Delay 200
     Rightclick
   End
 End
 SetConst Button = 1

End

Procedure Hackling

 Loop Num = 1 to 4
   SetConst Button = 0
   While $Button = 0
     IsObject Endur at 973, 79
       Delay 500
     Else
       SetConst XOrig = {mousex}
       SetConst YOrig = {mousey}
       MousePos 5, 32
       Delay 200
       Rightclick
       Delay 200
       If $Num < 2 or $Num > 3
         MousePos $MouseX, $MouseY
         Delay 250
         Rightclick
         Delay 200
       Else
         Compute MouseY = $MouseY + 15
         MousePos $MouseX, $MouseY
         Delay 250
         Rightclick
         Delay 200
         Compute MouseY = $MouseY - 15
       End
       Mousepos $XOrig, $YOrig
       SetConst Button = 1
     End
   End
 End

End

Procedure Loom

 SetConst Button = 0
 While $Button = 0
   IsObject Endur at 973, 79
     Delay 500
   Else
     SetConst XOrig = {mousex}
     SetConst YOrig = {mousey}
     MousePos $MouseX, $MouseY
     Delay 250
     Rightclick
     Delay 200
     Mousepos $XOrig, $YOrig
     SetConst Button = 1
   End
 End

End

Procedure Mine

 If $Guild = 0
   If MultiTool[ed3] = True
     Call GuildMine
   End
   if MultiTool[ed6] = true
     Call Guildmine
   End
 End
 If $Setup = 0
   Call Minesetup
 End
 
 SetConst Button = 0
 While $Button = 0
   IsObject PerStr at 924, 80
     Delay 500
   Else
     SetConst Num = $Random
     Timestamp $Num
     Case
     When $Num > 15 //12
       Compute NewY = $YWork + $AddY * 5 //2
       Compute NewX = $AddX * ($Num - 16) + $XWork
     When $Num > 12
       Compute NewY = $YWork + $AddY * 4
       Compute NewX = $AddX * ($Num - 13) + $XWork
     When $Num > 9
       Compute NewY = $YWork + $AddY * 3
       Compute NewX = $AddX * ($Num - 10) + $XWork
     When $Num > 6
       Compute NewY = $YWork + $AddY * 2
       Compute NewX = $AddX * ($Num - 7) + $XWork
     When $Num > 3
       Compute NewY = $YWork + $AddY
       Compute NewX = $AddX * ($Num - 4) + $XWork
     Else
       Compute NewX = $AddX * ($Num - 1) + $XWork
       Compute NewY = $YWork
     End
     MousePos $NewX, $NewY
     Timestamp $NewX, $NewY
     Delay 250
     Rightclick
     Delay 2250
     SetConst Button = 1
   End
 End

End

Procedure Limestone

 If $Button = 0
   SetConst Red = 113
   SetConst Green = 146
   SetConst Blue = 100
   Call FindButton
 End
 SetConst Button = 1
 While $Button = 1
   IsObject Endur at 973, 79
     Delay 200
   Else
     SetConst XOrig = {mousex}
     SetConst YOrig = {mousey}
     MousePos $ButtonX, $ButtonY
     Delay 150
     Rightclick
     Delay 100
     Mousepos $XOrig, $YOrig
     Delay 1000
     SetConst Button = 2
   End
 End

End

Procedure Dirt

 If $Button = 0
   SetConst Red = 91 //104
   SetConst Green = 138 //149
   SetConst Blue = 184 //192
   Call FindButton
 End
 SetConst Button = 1
 While $Button = 1
   IsObject Endur at 973, 79
     Delay 500
   Else
     SetConst XOrig = {mousex}
     SetConst YOrig = {mousey}
     MousePos $ButtonX, $ButtonY
     Delay 250
     Rightclick
     Delay 200
     Mousepos $XOrig, $YOrig
     Delay 10000
     SetConst Button = 2
   End
 End

End

Procedure Pull

 SetConst XOrig = {MouseX}
 SetConst YOrig = {MouseY}
 MousePos $RanX, $RanY
 Delay 200
 Rightclick
 Delay 100
 Compute RanX = $RanX + 14
 Compute RanY = $RanY - 3
 MousePos $RanX, $RanY
 Delay 250
 Rightclick
 Delay 100
 MousePos $XOrig, $YOrig
 Delay 100

End

Procedure FindButton

 MousePos $ButtonX, $ButtonY
 Delay 200
 LoadRGB {mousex}, {mousey}
 While {rgbred} <> $Red and {rgbgreen} <> $Green and {rgbblue} <> $Blue
   Compute ButtonX = $ButtonX - $SubX
   MousePos $ButtonX, $ButtonY
   Delay 200
   LoadRGB {mousex}, {mousey}
 End
 SetConst ButtonX = {mousex}
 SetConst ButtonY = {mousey}
 SetConst Button = 1

End

Procedure MineSetup

 Loop 6
   Loop 3
     MousePos $WinX, $WinY
     Delay $MDelay
     Dragto $DragX, $DragY
     Compute DragX = $DragX + $AddX
     Call Checkforlostfocus
   End
   SetConst DragX = 3
   Compute DragY = $DragY + $AddY
 End
 SetConst Setup = 1

End

Procedure Generate

 Compute Minval = $MouseX - 49
 Compute Maxval = $MouseX + 50
 SetConst RanX = $Random
 Compute Minval = $MouseY - 57
 Compute Maxval = $MouseY + 83
 SetConst RanY = $Random

End

Procedure GuildMine

 //Compute WinY = $WinY - 16
 Compute AddY = $AddY + 16
 Compute YWork = $YWork + 16
 //Compute DragY = $DragY + 16
 Set Guild = 1

End

Procedure ColorTest

 Bell Asterisk
 Delay 5000
 LoadRGB {mousex},{mousey}
 Timestamp RGB - {rgbred}, {rgbgreen}, {rgbblue}

End

Procedure CheckforLostFocus

 if {activewindow} contains eGenesis
   Exit
 Else
   Stop
 End

End

Function Random

 Compute Result = int(($Maxval - $Minval + 1) * rnd(1)) + $Minval

End Bell Asterisk //Written with ACTool 5.3.0 by Anka _____________________________________ Limestone

// This line is necessary to select the proper window SetActiveWindow Asheron's Call

delay 10000 // 10 second delay MousePos 116, 103 // Change this to the location of the limestone icon

loop 10000 // Run this x times

loop 3 delay 1000 leftclick end

delay 42500

end