The Wiki for Tale 5 is in read-only mode and is available for archival and reference purposes only. Please visit the current Tale 11 Wiki in the meantime.

If you have any issues with this Wiki, please post in #wiki-editing on Discord or contact Brad in-game.

User:Anka/Macros/Kettles

From ATITD5
Jump to navigationJump to search
// Kettles by Anka  -  Created with AC Tool 5.3.2 in Tale 2
// Updated for Tale 5
//
// This macro runs several kettles as long as you can fit them all on screen.
// Be should the top and bottom row has enough screen space so the window can
// open without hitting the edges of the screen.  This would throw the positions
// off and crash the macro.
//
// The macro has a menu with some options..
// Task - Stoke or Fertilizer
// Kettles across and Down is simply your grid.  It has to be complete rows and columns.
//   You can't have 3 kettles on first row and 4 on next.
// Guilded Kettles - This is for spacing, check if guilded.
// Venery - For spacing again for those on Venery test.
// Need Setup - This macro sets up all of your windows for you.  If you already made a
//              a batch and just need to reload, this option will bypass setup if unchecked.
// Kettles Full? - This is for if you want to fill the kettles before starting.  I do this
//                 since I normally run 20 to 25 kettles at once and don't want to carry
//                 that much water.  Check if you have prefilled the kettles.
// Resolution - Currently just 1920x1080 and 1024x768 my original resolution in Tale 2.
//              Chat me if you want a certain resolution and I can add it.
//
// Chat me if something is not working, I may have missed something during the rewrite.
//
// Fill kettles if needed.
// Cartographer view
// Put your mouse pointer over the top left kettle (Then dont touch the mouse)
// Alt tab to ACTool and press F2 to start the macro.
// Make sure your chat and inventory windows are not
// in front of any kettles.  A Settings box will appear.  Set it to what
// you need and click ok.
//
// Wood required is 522 for 18 kettles.  29 per Kettle.

Constants
  Col = 6
  Row = 2
  StartX = 0
  StartY = 0
  varY = 0
  R1X = 1
  RY = 27
  SetX = 0
  SetY = 0
  X1 = 70
  Y1 = 242
  Y2 = 60
  Y3 = 74
  AddX = 106
  AddY = 260
  AddDY = 260
  Step = 105
  PinX = 151
  PinY = 110
  CornerY = 20
  NewX = 45
  NewY = 0
  MX = 510
  MY = 440
  MDelay = 200
  Num = 1
  Done = 0
  Max = 512, 423
  OK = 580, 410
  Button = 0
  Guild = 0
  Temp = 0
  Setup = 0
  Wood = 0
  TextX = 102
  TextY = 172
  Pass = 0
  LoopCount = 0
  Jump = 10
  Jump1 = 0
  JTrack = 1
  Kettles = 0
End

//Guild with Venery 102,200
Object Wood0   // Test at coords 102,188
  0=0,0|0=2,2|0=2,3|0=2,4|
  0=2,5|
End Object

Object Wood1   // Test at coords 102, 188
  0=1,0|0=0,1|0=1,1|0=1,2|0=1,3|
  0=1,4|0=1,5|0=1,6|0=0,7|0=1,7|0=2,7|
End Object

Object Done  //4x8 92, 151
  234=0,0|231=0,2|58=0,4|176=0,8
  234=2,0|230=2,2|236=2,4|231=2,6
End

SetConst StartX = {mousex}
SetConst StartY = {mousey}
Compute NewX = $StartX
Compute NewY = $StartY

Form Potash, Settings
  ed1=Combobox:Task:Grain Fertilizer, Stoke
  ed2=Editbox:Kettles Across:6
  ed3=Editbox:Kettles Down:2
  ed4=Checkbox:Guilded Kettles?:True
  ed8=Checkbox:Venery?:False
  ed5=Checkbox:Need Setup?:True
  ed7=Checkbox:Kettles Full?:False
  ed6=Combobox:Resolution:1024x768, 1920x1080
end

FormLoad Potash, Potash.frm

if ShowForm Potash
  If Potash[ed4] = True
    Call Guild
  End
  if Potash[ed8] = True
    Call Venery
  End
  If Potash[ed5] = True
    Set Setup = 1
  Else
    Set Setup = 0
  End
  Set Col = Potash[ed2]
  Set Row = Potash[ed3]
  Compute Jump1 = $Jump + 1
else
  Stop
end

FormSave Potash, Potash.frm

KeyDown @{Tab} 200
Delay 2000

Call Resolution

If $Setup = 1
  Call Setup
End

If Potash[ed1] = Grain Fertilizer
  Call Grain
else
  Call Run
End

Procedure Setup
  Loop $Row
    Loop $Col
      MousePos $NewX, $NewY
      Compute varY = $NewY
      Delay $MDelay
      Rightclick  //Clicks on Kettle
      Compute NewY = {mousey} - $PinY
      Compute NewX = {mousex} + $PinX
      MousePos $NewX, $NewY
      Delay $MDelay
      Rightclick //Pins
      Compute NewX = $NewX - $PinX + 1
      Compute NewY = $NewY - $CornerY + 1
      MousePos $NewX, $NewY  //Move to corner of window
      Delay $MDelay
      if $Kettles = $Jump
        Set R1X = 1
        Compute RY = $RY + $AddDY
        Set Kettles = 0
      Else
        If $Kettles <> 0
          Compute R1X = $R1X + $AddX
        End
      End
      Dragto $R1X, $RY
      Compute NewX = $StartX + $Num * $Step
      Compute Num = $Num + 1
      Compute NewY = $varY
      Compute Kettles = $Kettles + 1
      //Compute R1X = $R1X + $AddX
    end
    
    Compute Num = 1
    //Compute R1X = 1
    Compute NewX = $StartX
    //Compute RY = $RY + $AddDY
    Compute NewY = $NewY + $Step
  End
  SetConst NewX = 45
End


Procedure Run
  Set NewX = $X1
  Set NewY = $Y1
  Compute Kettles = $Row * $Col
  Loop $Kettles
    if {loopno} = $Jump1
      SetConst NewX = $X1
      Compute NewY = $NewY + $AddY
      inc JTrack
      Compute Jump1 = ($Jump + 1) * $JTrack
    End
    MousePos $NewX, $NewY
    Delay $MDelay
    Rightclick
    if Potash[ed7] = False
      Delay $MDelay
      Rightclick
    End
    Delay $MDelay
    MousePos $Max
    Delay $MDelay
    Rightclick
    Compute NewX = $NewX + $AddX
  End
  Compute Jump1 = $Jump + 1
  SetConst JTrack = 1
  
  Set NewX = $X1
  Set NewY = $Y2
  Loop $Kettles
    If {loopno} = $Jump1
      SetConst NewX = $X1
      Compute NewY = $NewY + $AddY
      inc JTrack
      Compute Jump1 = ($Jump + 1) * $JTrack
    End
    MousePos $NewX, $NewY
    Delay $MDelay
    Rightclick
    Compute NewX = $NewX + $AddX
  End
  Compute Jump1 = $Jump + 1
  SetConst JTrack = 1
  SetConst NewX = $X1
  
  Delay 2000
  
  //Add Wood
  Loop 5
    SetConst Done = 0
    SetConst NewX = $X1
    SetConst NewY = $Y3
    If {loopno} = 1
      SetConst Wood = Wood1
    Else
      SetConst Wood = Wood0
    End
    While $Done = 0
      IsObject $Wood at $TextX, $TextY
        Delay 7000
        Loop $Kettles
          If {loopno} = $Jump1
            SetConst NewX = $X1
            Compute NewY = $NewY + $AddY
            inc JTrack
            Compute Jump1 = ($Jump + 1) * $JTrack
          End
          MousePos $NewX, $NewY
          Delay $MDelay
          RightClick
          Compute NewX = $NewX + $AddX
        End
        Compute Jump1 = $Jump + 1
        SetConst JTrack = 1        
        inc Done
        Delay $MDelay
      End
    End
  End
End
//Maybe add detection for "done" and unload here

Procedure Grain
  Loop $Row
    Loop $Col
      MousePos $NewX, $NewY
      Compute varY = $NewY
      Delay $MDelay
      Rightclick
      //if here to pin or start
      If $Pass = 0
        Compute NewY = {mousey} - $PinY
        Compute NewX = {mousex} + $PinX
        MousePos $NewX, $NewY
        Delay $MDelay
        Rightclick
        Compute NewX = $NewX - 47
        Compute NewY = $NewY + 155
        MousePos $NewX, $NewY
        Delay $MDelay
        Rightclick
        Compute NewX = $NewX + 47
        Compute NewY = $NewY - 155
        Compute NewX = $NewX - $PinX + 1
        Compute NewY = $NewY - $CornerY + 1
        MousePos $NewX, $NewY
        Delay $MDelay
        Dragto $R1X, $RY
        Mousepos 40, 258
        Delay $MDelay
        Rightclick
        Inc Pass
      Else
        Compute NewX = {mousex} + 111
        Compute NewY = {mousey} + 44
        MousePos $NewX, $NewY
        Delay $MDelay
        Rightclick
        Compute NewX = {mousex} - 67
        Compute NewY = {mousey} + 50
        MousePos $NewX, $NewY
        Delay $MDelay
        Rightclick
        MousePos 423, 117
        Delay $MDelay
        Rightclick
        Delay 200
      End
      Compute NewX = $StartX + $Num * 105
      Compute Num = $Num + 1
      Compute NewY = $varY
      Compute R1X = $R1X + $AddX
    end
    
    Compute Num = 1
    Compute R1X = 1
    Compute NewX = $StartX
    Compute RY = $RY + $AddY
    Compute NewY = $StartY + 105
  End
  
  SetConst NewX = $StartX
  Compute NewY = $StartY
  While $Done = 0
    IsObject Done  at 92, 151  //100, 151
      Delay 4000
      Loop $Row
        Loop $Col
          MousePos $NewX, $NewY
          Compute varY = $NewY
          Delay $MDelay
          Rightclick
          Compute NewX = $NewX + 41
          Compute NewY = $NewY + 94
          MousePos $NewX, $NewY
          Delay $MDelay
          Rightclick
          MousePos 423, 117
          Delay $MDelay
          Rightclick
          Delay 200
          Compute NewX = $StartX + $Num * 105
          Compute Num = $Num + 1
          Compute NewY = $varY
          Compute R1X = $R1X + $AddX
        End
        Compute Num = 1
        Compute R1X = 1
        Compute NewX = $StartX
        Compute RY = $RY + $AddY
        Compute NewY = $StartY + $Step
      End
      Inc Done
    End
  End
  MousePos 150, 45
  Delay $MDelay
  Rightclick
End

Procedure Guild
  Compute TextY = $TextY + 16
  Compute PinY = $PinY + 8
  Compute Y1 = $Y1 + 16
  //Compute AddY = $AddY - 8
  Compute Y3 = $Y3 + 16
End

Procedure Venery
  Compute Y1 = $Y1 + 8
  Compute TextY = $TextY + 12
  Compute Y2 = $Y2 - 4
  Compute Y3 = $Y3 - 2
  //Compute AddY = $AddY - 4
End

Procedure Resolution
  Case
  When Potash[ed6] = 1920x1080
    SetConst Max = 960, 595
    SetConst OK = 1026, 578
    SetConst Step = 200
  End
End
Bell