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:Oni/Hearth

From A Tale in the Desert
Jump to navigationJump to search
  • FULL credit for this goes to ANKA - I did not write this, just edited it slightly.
  • Slightly edited - sped up to make more reliable.
  • 1024x768 goodness :)
//Charcoal Hearth
//
// Setup:  This handles from 1 to 8 charcoal hearths at a time.  Pin the windows
//         in 2 rows of 4 starting in top left corner.  But them up together but
//         Don't overlap them at all.  I suggest at least 200
//         wood per hearth and a normally hold about 150 water jugs.
//         All hearths are slightly different but I suggest that you put your
//         fastest burning hearths first in line.  The current settings are set
//         for guilded hearths but its a bit more efficient atm with personal
//         hearths.  You can tweak the settings below to alter Heat, Wood, Water
//         and danger thresholds.  The macro doesn't watch Oxygen.  If your oxygen
//         is getting too high, lower this by increasing WoodX in constants since
//         adding wood lowers oxygen.
//
//  If you see anything odd, /chat me.
//
//  Known Issues:  You will see it add some wood during the snuff process.  It's
//                 not much wood but I'm looking into it.
//
//  ENJOY! :)  Come acro me in LE :) 780, 6956
//  Anka
//
Constants
  //User Definable variables
  Hearths = 3       //Number of Hearths you are running. 1-8
  HeatX = 168       //Threshold for Heat bar, increase or decrease as needed.
  WoodX = 107      //Wood threshold, adds wood/round up to this point.
  WaterX = 76      //Alowable water level, not much play here.. dont lower more than 2
  DangerX = 164   //Threshold for Danger bar, increase or decrease as needed.
  RGBBlue = 220    //Threshold for detecting the color blue.  Some video cards
  //                   are having problems with this.  I will add a color test soon to
  //                   help.  If you are having problems. Run just 1 hearth and try
  //                   lowering this number by 10 at a time.  It's hard for me to see
  //                   what is going on without using your pc :(
  Guild = 1       // 1 for Guilded or public hearths, 0 for Personal hearths
  //End User variables
  AddX = 226
  Add2X = 15
  Add1Y = 65
  Add2Y = 17
  Add3Y = 250
  RegX = 47
  RegY = 74
  BeginX = 111
  BeginY = 245
  NewX = 0
  New2X = 0
  New2Y = 0
  NewY = 0
  Heat = 0
  Wood = 0
  Water = 0
  Danger = 0
  Status = 0
  HeatY = 156
  OxyY = 168
  WoodY = 180
  
  WaterY = 192
  
  DangerY = 204
  StatusX = 167
  StatusY = 216
  WoodBX = 35
  WoodBY = 250
  WaterBX = 85
  Num = 0
  Jump = 5
  JumpM = 0
  Jumped = 0
  Used = 0
  
  MDelay = 50
  SDelay = 50
  S1Delay = 50
  Count = 0
  CountM = 0
  MouseX = 0
  MouseY = 0
  
End

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

If $Guild = 1
  Call Guild
End

Call SetReg
SetConst NewX = $BeginX
SetConst NewY = $BeginY
SetConst Count = 1
Loop $Hearths
  If $Count = $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 Main
  SetConst CountM = 1
  SetConst Status = 0
  Compute JumpM = $Jump - 1
  Loop $Hearths
    If $CountM = $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 1000
    End
    Compute CountM = $CountM + 1
    SetConst Status = 0
  End
End

Procedure CheckBars
  MousePos $HeatX, $HeatY
  Delay $SDelay
  LoadRGB {MouseX}, {MouseY}
  if {RGBBlue} > $RGBBlue
    SetConst Heat = 1
  Else
    SetConst Heat = 0
  End
  MousePos $WoodX, $WoodY
  Delay $S1Delay
  LoadRGB {mousex}, {mousey}
  if {RGBBlue} > $RGBBlue
    SetConst Wood = 1
  Else
    SetConst Wood = 0
  End
  MousePos $WaterX, $WaterY
  Delay $S1Delay
  LoadRGB {mousex}, {mousey}
  if {RGBBlue} > $RGBBlue
    SetConst Water = 1
  Else
    SetConst Water = 0
  End
  MousePos $DangerX, $DangerY
  Delay $S1Delay
  LoadRGB {MouseX}, {MouseY}
  if {RGBBlue} > $RGBBlue
    SetConst Danger = 1
  Else
    SetConst Danger = 0
  End
  MousePos $StatusX, $StatusY
  LoadRGB {MouseX}, {MouseY}
  if {RGBRed} = 6 and {RGBGreen} = 254 and {RGBBlue} = 5
    SetConst Status = 1
  Else
    SetConst Status = 0
  End
End

Procedure Water
  SetConst NewX = $WaterBX
  SetConst NewY = $WoodBY
  Loop $Hearths
    IF {loopno} = $Jump
      SetConst NewX = $WaterBX
      Compute NewY = $WoodBY + $Add3Y
    End
    If {loopno} > $Used
      MousePos $NewX, $NewY
      Delay $SDelay
      Rightclick
      Delay $SDelay
    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} = $Jump
      SetConst New2X = $WaterBX
      Compute New2Y = $WoodBY + $Add3Y
    End
    If {loopno} = $Num
      MousePos $New2X, $New2Y
      Loop 8
        Rightclick
      End
    End
    Compute New2X = $New2X + $AddX
  End
End

Procedure Wood
  SetConst NewX = $WoodBX
  SetConst NewY = $WoodBY
  Loop $Hearths
    IF {loopno} = $Jump
      SetConst NewX = $WoodBX
      Compute NewY = $WoodBY + $Add3Y
    End
    If {loopno} > $Used
      MousePos $NewX, $NewY
      Delay $SDelay
      Rightclick
      Delay $SDelay
    End
    Compute NewX = $NewX + $AddX
  End
  SetConst NewX = $WoodBX
End

Procedure SetReg
  SetConst NewX = $RegX
  SetConst Count = 1
  Loop $Hearths
    If $Count = 5
      SetConst NewX = $RegX
      Compute RegY = $RegY + $Add3Y
    End
    MousePos $NewX, $RegY
    Delay $MDelay
    Rightclick
    Compute NewX = $NewX + $Add2X
    If $Count > 4
      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
End
//Written with ACTool 5.3.0 by Anka
Bell Asterisk