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.

Copper macroOE

From A Tale in the Desert
Jump to navigationJump to search

Note: This is based primarily off of Coyan's scripts (Copper for color picking, Iron for OE support). I've tested it and it works fine for up to OE3. - Quin

Other Mining Macros can be found here: Mosaic Macros


// This is what I suggest for setting up for this macro
// First align your view so you can see all 7 crystals clearly
// second use Alt-L to lock your camera angle
// Third before starting this, I suggest you have your mouse sitting over
//  the first crystal.
// You will have 3 seconds between the recording of each crystal's location
// place your mouse over the darkest part of each crystal in turn
// Once it has identified the 7 crystals, it will run the mine
Constructs
  MouseX=List // this is an array of mouse X coords for gem sample points
  MouseY=List // this is an array of mouse X coords for gem sample points
  OEOffset=List
END
Constants
  OELevel = 3  // change this to your Ore Extraction level
  totalpulls = 500 // How many times do you want it to pull the mine
  loopcnt = 1 
  Mousecnt = 1
  MouseXN = 0
  MouseYN = 0
  ColorN = 0
  ColorS = 0
  Minval = 0
  Maxval = 255
  CONSTVAL = 0
  Tmpval = 0
  OElistcnt = 0
	OELvlset = 1

End

Compute CONSTVAL = 100/255 // constant being set for saturation calculation

// First part that requires a detailed explanation
// this loop will pause for 3 seconds then grab the current mouse location
// its purpose is to identify the 7 sampling locations for the crystals
// when it grabs the sampling spot, it will then echo a . to the chat window
// make sure you are in your main chat tab.
Loop 7
  Delay 3000
  Listadd MouseX, {MouseX}
  Listadd MouseY, {MouseY}
  SayPaste .
END

ListClear OEOffset

loop $totalpulls
  Compute loopcnt = 1
  loop 7
    mousepos MouseX[$loopcnt], MouseY[$loopcnt]
    LoadRGB MouseX[$loopcnt], MouseY[$loopcnt]
    Call CALCSATCOLOR
    IF $ColorN > $ColorS
	Compute ColorS = $ColorN
	Compute Mousecnt = $loopcnt
    END
    Compute loopcnt = $loopcnt + 1
    Delay 100
  END	
	
	CALL OreExtractionstore
		
	ListCount OEOffset, $OElistcnt
	IF $OELevel >= $OElistcnt
		Compute OELvlset = OEOffset[1] // work the current crystal until we are at our OE Level
	ELSE
		Compute OELvlset = OEOffset[$OELevel]
	END
	// Saypaste $OELevel $OElistcnt $OELvlset
	

  mousepos MouseX[$OELvlset], MouseY[$OELvlset]
  Delay 200 
  leftclick
  Compute MouseXN = MouseX[$OELvlset] + 15 // adjust this if you need to for the menu click
  Compute MouseYN = MouseY[$OELvlset] - 10 // adjust this if you need to for the menu click
  Mousepos $MouseXN, $MouseYN
  Delay 200
  Leftclick
	
  Compute ColorS = 0 //resets the color satuation for each sampling
  Delay 4200 // Delay to manage the str/perc timer on mining, adjust as needed
	
END

Procedure CALCSATCOLOR // This procedure calculates the saturation of the crystal
  Compute Minval = 0
  Compute Maxval = 255
  IF {RGBRed} > {RGBGreen}
	Compute Minval = {RGBGreen}
	Compute Maxval = {RGBRed}
  Else
	Compute Maxval = {RGBGreen}
	Compute Minval = {RGBRed}
  END
  IF {RGBBlue} < $Minval
	Compute Minval = {RGBBlue}
  ELSE
	IF {RGBBlue} > $Maxval
		Compute Maxval = {RGBBlue}
	END
  END
  Compute Tmpval = $Maxval - $Minval
  Compute Tmpval = $Tmpval / $Maxval
  Compute ColorN = $Tmpval * $CONSTVAL
END

Procedure OreExtractionstore
	ListCount OEOffset, $OElistcnt
	IF $OElistcnt = 0
		Listadd OEOffset, $Mousecnt
	ELSE
		IF $OElistcnt = 1
			Listadd OEOffset, OEOffset[1]
		END
		IF $OElistcnt = 2
			Listadd OEOffset, OEOffset[2]
			Compute OEOffset[2] = OEOffset[1]
		END
		IF $OElistcnt = 3
			Listadd OEOffset, OEOffset[3]
			Compute OEOffset[3] = OEOffset[2]
			Compute OEOffset[2] = OEOffset[1]
		END
		IF $OElistcnt = 4
			Listadd OEOffset, OEOffset[4]
			Compute OEOffset[4] = OEOffset[3]
			Compute OEOffset[3] = OEOffset[2]
			Compute OEOffset[2] = OEOffset[1]
		END
		IF $OElistcnt = 5
			Listadd OEOffset, OEOffset[5]
			Compute OEOffset[5] = OEOffset[4]
			Compute OEOffset[4] = OEOffset[3]
			Compute OEOffset[3] = OEOffset[2]
			Compute OEOffset[2] = OEOffset[1]
		END
		IF $OElistcnt = 6
			Listadd OEOffset, OEOffset[6]
			Compute OEOffset[6] = OEOffset[5]
			Compute OEOffset[5] = OEOffset[4]
			Compute OEOffset[4] = OEOffset[3]
			Compute OEOffset[3] = OEOffset[2]
			Compute OEOffset[2] = OEOffset[1]
		END
		IF $OElistcnt = 7
			Compute OEOffset[7] = OEOffset[6]
			Compute OEOffset[6] = OEOffset[5]
			Compute OEOffset[5] = OEOffset[4]
			Compute OEOffset[4] = OEOffset[3]
			Compute OEOffset[3] = OEOffset[2]
			Compute OEOffset[2] = OEOffset[1]
		END

		Compute OEOffset[1] = $Mousecnt
	END

END