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:Mindl Bastet

From A Tale in the Desert
Jump to navigationJump to search

Kinsman Life of Bastet

Student of Architecture

Macros:

//Charcoal Hearth  - Mindl/Bastet
//         Anka's CC macro modified to work at 1680x1050.  Need to have game in window 
//				 mode and not maximized....expand the window some but not all the way to the
//				 edge of the screen or when it click to active the window it will shrink back
//				 to 800x600 for some reason.  Works with 8 hearths confirmed so far.  Working
//				 testing 12.  Added vent controls and improved the snuff procedure.  Much more
//				 efficient I believe now.
//
// 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.
//				 Set Regulators?:  Check this box to have the macro set all hearths to 0
//         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 3500 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.
//
//				 Still in testing so no promises it will work for you.  Also haven't modified
//				 the Mouse Test yet to check vent and oxygen settings.  If all the macro does
//				 is add wood until full then it is not seeing the colors of the bars either
//				 A) because the Y screen coordinate for the bars is not correct for you screen
//				 or B) AC tool can see you screen.  This usually only happens when the game is
//				 fullscreen mode.

Dataset Status
  	1 = Integer
  	2 = Integer
  	3 = Integer
  	4 = Integer
  	5 = Integer
  	6 = Integer
  	7 = Integer
  	8 = Integer
  	9 = Integer
  	10 = Integer
  	11 = Integer
  	12 = Integer
End
  
  Dataset Snuffed
  	1 = Integer
  	2 = Integer
  	3 = Integer
  	4 = Integer
  	5 = Integer
  	6 = Integer
  	7 = Integer
  	8 = Integer
  	9 = Integer
  	10 = Integer
  	11 = Integer
  	12 = Integer
End

Constants
  //User Definable variables
  Hearths = 4
  HeatX = 170
  OxyMinX = 90
  OxyMaxX = 155
  WoodX = 117
  WaterX = 83
  DangerX = 160
  DangerX1 = 180
  OpenX1 = 138
  OpenX2 = 164
  OpenX3 = 190
  RGBBlue = 220
  RGBGreen = 240
  Guild = 1


  // Y Coordinates - Don't change unless you are having a problem.
  RegY = 95      // Y coord for Regulator button
  BeginY = 263   // Y coord for Begin Button
  HeatY = 177    // Y coord for Heat Bar
  OxyY = 187		 // Y coord for Oxygen Bar	
  WoodY = 199    // Y coord for Wood Bar
  WaterY = 212   // Y coord for Water Bar
  DangerY = 223  // Y coord for Danger Bar
  StatusY = 235  // Y coord for Status Bar
  WoodBY = 271   // Y coord for Wood and Water buttons
  OxyBY = 270    // Y coord for Vent Buttons
  //End User variables

  Hrow = 0
  Hrow1 = 0
  AddX = 212
  Add2X = 30
  Add1Y = 30
  Add2Y = 0
  Add3Y = 267
  RegX = 47
  BeginX = 111
  NewX = 0
  New2X = 0
  New2Y = 0
  New3X = 0
  New3Y = 0
  NewY = 0
  NewX1 = 0
  NewX2 = 0
  NewX3 = 0
  Heat = 0
  OxyMax = 0
  OxyMin = 0
  Wood = 0
  Water = 0
  Danger = 0
  Status = 0
  StatusX = 167
  WoodBX = 35
  WaterBX = 85
  Num = 0
  Jump = 5
  JumpM = 0
  Jumped = 0
  Used = 0
  MDelay = 200
  SDelay = 100
  S1Delay = 100
  Count = 0
  CountM = 0
  MouseX = 0
  MouseY = 0
  CheckDelay = 0
  Setup = 0
  SetX = 10
  SetY = 40
  SetAddX = 212
  SetAddY = 266
  SetLoop = 0
  Mouse = 1
  OrigX = 0
  OrigY = 0
  Closed = 0
  Open = 0
  FirstFire = 0
  Danger1 = 0
  Finished = 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
  ed17=Checkbox:"Set Regulators?":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):89
  ed5=Editbox:High Oxy           (75-188):170
  ed6=Editbox:Wood                (75-188):112
  ed7=Editbox:Water                (75-188):83
  ed8=Editbox:RGBGreen:240
  ed9=Editbox:RGBBlue:220
  ed12=Editbox:Check Bars Interval  (miliseconds):3500
  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 OxyMinX = ccHearth[ed4]
  SetConst OxyMaxX = 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 51, 44 //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 

if ccHearth[ed17] = True
	Call SetReg
end

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

loop $Hearths
	dsedit Status
		setconst Status[{loopno}] = 0
	dspost status
	dsedit Snuffed
		setconst Snuffed[{loopno}] = 0
	dspost Snuffed
end

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
  SetConst FirstFire = 1
  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 $Finished < $Hearths
    
      	Call CheckBars
    
    if Status[1] = 1 or Status[2] = 1 or Status[3] = 1 or Status[4] = 1 or Status[5] = 1 or Status[6] = 1 or Status[7] = 1 or Status[8] = 1 or Status[9] = 1 or Status[10] = 1 or Status[11] = 1 or Status[12] = 1
    
    	Call Snuff
		
		End
      
  	if $FirstFire = 1
      	Call Wood
    End
      
    If $Heat = 0 and $Danger = 0 and $Wood = 0
      
    	Call Wood
      
    Else
        
    	If $Heat = 1 or $Danger = 1
          
    		If $Water = 0 or $Danger1 = 1
            
        	Call Water
                        
      	End	
    	End
    End
     
    Call Vent
 
 		Delay $CheckDelay
   End 
 	Compute CountM = $CountM + 1
  End
End

Procedure CheckBars
  
  SetConst NewX = $StatusX
  SetConst NewY = $StatusY
  
  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 $OxyMinX, $OxyY
    Delay $S1Delay
  end 
  LoadRGB $OxyMinX , $OxyY
  if {RGBBlue} < $RGBBlue
  	SetConst OxyMin = 1
  Else
  	SetConst OxyMin = 0
  End 
  If $Mouse = 1
    MousePos $OxyMaxX, $OxyY
    Delay $S1Delay
  end 
  LoadRGB $OxyMaxX , $OxyY
  if {RGBBlue} > $RGBBlue
  	SetConst OxyMax = 1
  Else
  	SetConst OxyMax = 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 $DangerX1, $DangerY
    Delay $S1Delay
  End
  LoadRGB $DangerX1, $DangerY
  if {RGBBlue} > $RGBBlue
    SetConst Danger1 = 1
  Else
    SetConst Danger1 = 0
  End
  
  Loop $Hearths
  	
  	IF {loopno} = $HRow1 //$Jump
      	SetConst NewX = $StatusX
      	Compute NewY = $StatusY + $Add3Y
    End
    
    If {loopno} > $Used
      If $Mouse = 0
        Set OrigX = {mousex}
        Set OrigY = {mousey}
      End
      
  		If $Mouse = 1
    		MousePos $NewX, $NewY
  		End
  		
  		LoadRGB $NewX, $NewY
  		if {RGBGreen} > $RGBGreen
    		DSEdit Status
    		SetConst Status[{loopno}] = 1
    		DSPost Status
    	End
  		
  		Compute NewX = $NewX + $AddX
  	
  	end
	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
      
      if Snuffed[{loopno}] = 0
      MousePos $NewX, $NewY
      Delay $SDelay
      Rightclick
      Delay $SDelay
      end
      
      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
  Setconst New3X = $OpenX3
  SetConst New3Y = $OxyBY
  
  Compute Num = $Used + 1
  
  Loop $Hearths
    
    IF {loopno} = $Hrow1 //$Jump
      SetConst New2X = $WaterBX
      Compute New2Y = $WoodBY + $Add3Y
    	SetConst New3X = $OpenX3
    	Compute New3Y = $OxyBy + $Add3Y
    End
      
      if Status[{loopno}] = 1
      	if Snuffed[{loopno}] = 0
      		If $Mouse = 0
        		Set OrigX = {mousex}
        		Set OrigY = {mousey}
      		End
      		MousePos $New2X, $New2Y
      		Loop 4
        		Rightclick
      		End
      		MousePos $New3X, $New3Y
      		Rightclick
      		If $Mouse = 0
        		Mousepos $OrigX, $OrigY
      		End
      		DSedit Snuffed
      		setconst Snuffed[{loopno}] = 1
      		DSpost Snuffed
      		compute Finished = $Finished + 1
      	End
      End      	
      
    Compute New2X = $New2X + $AddX
  	Compute New3X = $New3X + $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
    	
    	if Snuffed[{loopno}] = 0 
    	
    		MousePos $NewX, $NewY
    		Delay $SDelay
    		Rightclick
    		if $FirstFire = 1
    			Delay $S1Delay
    			Rightclick
    		End
    		Delay $SDelay
			end    
    	If $Mouse = 0
    		MousePos $OrigX, $OrigY
    	End
    
    End
    
  	Compute NewX = $NewX + $AddX
  
  End
  
  SetConst NewX = $WoodBX
  
  if $FirstFire = 1
  	SetConst FirstFire = 0
  end

End

Procedure Vent
	SetConst NewX1 = $OpenX1
	SetConst NewX2 = $OpenX2
	SetConst NewX3 = $OpenX3
	Setconst NewY = $OxyBY
	
	if $Open = 1
		Compute Open = $Open + 1
	end
	
	if $Closed = 1
		Compute Closed = $Closed + 1
	end
	
	if $OxyMin = 1 and $Open = 0
	
		Loop $Hearths
    
    	IF {loopno} = $HRow1 //$Jump
      	SetConst NewX1 = $OpenX1
      	SetConst NewX2 = $OpenX2
				SetConst NewX3 = $OpenX3      
      	Compute NewY = $OxyBY + $Add3Y
    	End
    
    	If {loopno} > $Used
      	If $Mouse = 0
        	Set OrigX = {mousex}
        	Set OrigY = {mousey}
      	End
        
        if Snuffed[{loopno}] = 0	 	    
    		MousePos $NewX3, $NewY
    		Delay $SDelay
    		Rightclick
    		Delay $SDelay
    		end
    		
    		If $Mouse = 0
    			MousePos $OrigX, $OrigY
    		End
    	
    		SetConst Open = 1
    		SetConst Closed = 0
    
    	end
    Compute NewX3 = $NewX3 + $AddX
   	end 
	end    	
   
 if $OxyMax = 1 and $Closed = 0
    Loop $Hearths
    
    	IF {loopno} = $HRow1 //$Jump
      	SetConst NewX1 = $OpenX1
      	SetConst NewX2 = $OpenX2
				SetConst NewX3 = $OpenX3      
      	Compute NewY = $OxyBY + $Add3Y
    	End
    
    	If {loopno} > $Used
      	If $Mouse = 0
        	Set OrigX = {mousex}
        	Set OrigY = {mousey}
      	End
    		
    		if Snuffed[{loopno}] = 0
    		MousePos $NewX1, $NewY
    		Delay $SDelay
    		Rightclick
    		Delay $SDelay
    		end
    		
    		If $Mouse = 0
    			MousePos $OrigX, $OrigY
    		End    
    	
    		SetConst Closed = 1
    		SetConst Open = 0
    	
    	End
    Compute NewX1 = $NewX1 + $AddX
    end
 end
    	
 if $OxyMax = 0 and $Open = 2 
 	Loop $Hearths
    
    	IF {loopno} = $HRow1 //$Jump
      	SetConst NewX1 = $OpenX1
      	SetConst NewX2 = $OpenX2
				SetConst NewX3 = $OpenX3      
      	Compute NewY = $OxyBY + $Add3Y
    	End
    
    	If {loopno} > $Used
      	If $Mouse = 0
        	Set OrigX = {mousex}
        	Set OrigY = {mousey}
      	End
      	
      	if Snuffed[{loopno}] = 0 	    
    		MousePos $NewX2, $NewY
    		Delay $SDelay
    		Rightclick
    		Delay $SDelay
    		end
    		
    		If $Mouse = 0
    			MousePos $OrigX, $OrigY
    		End
    	end
    Compute NewX2 = $NewX2 + $AddX
  end

	SetConst Open = 0
	
end
    	
if $OxyMin = 0 and $Closed = 2 
	Loop $Hearths
    
    	IF {loopno} = $HRow1 //$Jump
      	SetConst NewX1 = $OpenX1
      	SetConst NewX2 = $OpenX2
				SetConst NewX3 = $OpenX3      
      	Compute NewY = $OxyBY + $Add3Y
    	End
    
    	If {loopno} > $Used
      	If $Mouse = 0
        	Set OrigX = {mousex}
        	Set OrigY = {mousey}
      	End
      	
      	if Snuffed[{loopno}] = 0    	    
    		MousePos $NewX2, $NewY
    		Delay $SDelay
    		Rightclick
    		Delay $SDelay
    		end
    		
    		If $Mouse = 0
    			MousePos $OrigX, $OrigY
    		End
    
    	end
    	Compute NewX2 = $NewX2 + $AddX
	End
	
	SetConst Closed = 0
		
end

	SetConst NewX1 = $OpenX1
	SetConst NewX2 = $OpenX2
	SetConst NewX3 = $OpenX3

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

Bell Asterisk