///////////////////////////////////////////////////////////////////////////////////////////////////// //--------------------------------------------------------------------------------------------------- // MiningMyule MAcro // Somewhat based on Mining.mac and other Mining Macros such as // Hontu's, as well as NowhereMan's Mining Macro // // It should be started in a safe minefield. // It will not do combat, so it must be monitored. // Put one of each type of ore that you want to collect in your hold. This will ensure that // if your hold fills up with ore, you will still be able to pick up those desired ores. // For optimum mining, use a Lazarus, Cat's Paw and Golden Tooth (or similar). //-------------------------------------------------------------------------------------------------------- //------------------------------------------------------------------------------------------------------// ///////////////////////////////////////////////////////////////////////////////////////////////////// Constants Me=me // player name, for error messages / diagnostics Runs=99999 // Modify this to the number of times you wish to loop through the code CheckCombat=10 // How many loops to make before checking for attacking mobs WarpInitDelay=3000 // Delay after hitting warp to Asteroid MiningDelay=8000 // Delay after starting mining to rip an ore from the asteroid MouseDelay=100 // How long to wait to click anything after moving mouse there OreScanDelay=100 // how long to linger over empty ore cells. NextRoidDelay=1000 // time to wait after selecting next Roid, while in scan for roids function MinEnergy=95 // percent of energy bar to initiate mining EnergyWait=3000 // ms to wait for energy to recharge ToolTipPopUp=300 // time for a tooltip to pop up, varies with opeions->interface setting // 300 corresponds to minimum FindRoidLoopMax=10 // maximum # of roids to look throug before failing FindARoid function. ScanRoids=2 // 2= Left click in target window while scanning through,1=whilewarping there // roids to see what ores are there. mostly for attended use MaxRoidSearch=20 // maximum number of targets to search through for a roid // if MineRoids is set to > 1, we move to them, open them, and then // move on, to encourage fast despawning of unwanted resources. MineRoids=1 // Mine Rock Asteroids? MineHydros=1 // Mine Hydrocarbon roids? MineHulks=2 // Mine Hulks? MineClouds=2 // Mine Gas Clouds MineCrystals=1 // Mine Crystalline ASteroids MinRoidLvl=6 // Mine roids of this level or higher. If zero, ignore roid level MaxRoidLvl=8 // Mine roids of this level or lower. If zero, Ignore Max Roid Level MinOreLvl=7 // Mine lvl 1 roids? MaxOreLvl=8 // Mine ores of this level or lower CheckOreLevel=1 // Check levels of ores before mining (not yet implemented) CheckRoidLevel=1 // Check levels of roids (not yet implemented) Debug=1 // do some mouse movements for debugging DbDelay=2000 // debugging delays // Some screen position constants ShieldBarMinX=655 // ShieldBarMaxX=765 // EnergyBarY=685 // Y position of Energy Bar EnergyBarMinX=250 // Left End of Energy Bar EnergyBarMaxX=430 // Right End of Energy Bar //Below are scratch variables used in functions to store stuff in. //defined here because ACTool insists on it. //and to document, and to in case actool needs them pre defined. OreX=0 OreY=0 Y=0 X=0 DoWait=0=0 GreenPix=0 EnergyOK=0 FoundARoid=0 OrePos=0 Col=0 RoidSearchCount=0 MinedOut=0 MinEnergyBarX=0 PixY=0 Prospecting=0 GetRoidLvl=0 RoidLvl=0 ThereYet=0 Warps=0 LootWindowOpen=0 I=0 // loop/scratch variable J=0 // loop/scratch variable P=0 // loop/scratch variable End // // Main run starts here // SetActiveWindow Earth & Beyond CommandDelay 250 Delay 2000 Keys {HOME} Delay 200 OBJVAR 14 call ComputeStuff // call BuffUp // Procedure to get ready to start mining // Individual Function testing // call WarpToRoid // call SelectARoid // stop call DoMining stop // we're done // derive all computed variables procedure ComputeStuff SetConst GetRoidLvl=0 if $MinRoidLvl>0 SetConst GetRoidLvl=1 end if $MinRoidLvl>0 SetConst GetRoidLvl=1 end end // Mining window is open and $OreX,$OreY stores screen position // of an ore slot that might be occupied with an ore to pull // Check if slot is filled, if so, click on it to grab it, // // if we run out of energy while pulling, wait until refilled to // continue pulling ores. // Then do any post mining procedure. // // Set Value of MinedOut to shoe our status // 1 = pulled ore out of this spot // 0 = didn't pull ore out (yet) // -1 = minging window gone (check for pop-roid/popmob!) // 2 = could not pull ore out (window still open) possibly ore to high a level! // Procedure MineOre SetConst MinedOut=0 if $Debug=1 TimeStamp MineOre: Mining Ore from $OreX, $OreY //Compute X = $OreX+15 //Compute Y = $OreY+15 //MousePos $X, $Y // Note that this is the icon we're checking Delay $MouseDelay end while $MinedOut=0 //IsObject MiningWindow at 990,208 call CheckLootWindow if $LootWindowOpen=0 TimeStamp MineOre: Lost MiningCloseBox SetConst MinedOut=-1 exit // leave this procedure end //MiningCloseBox // Make sure mouse pointer icon is out of the center of the ore cell or it will break the IsObject // test IsObject EmptyOre at $OreX, $OreY // Empty ore in set spot SetConst MinedOut=1 if $Debug=1 TimeStamp MineOre: Empty Ore Cell at $OreX,$OreY // MousePos $OreX,$OreY // comment this out when empty slot scan bores you... // Delay $OreScanDelay end Else // EmptyOre // See if we have the energy to mine, if not, wait till we do call CheckEnergy // See if we have enough energy to mine Compute X=$OreX + 5 Compute Y=$OreY + 5 MousePos $X, $Y // move to the ore... Delay $MouseDelay // And see that it has checked the various slots LeftClick // start mining SetConst Prospecting=1 Compute X=$OreX+25 Compute Y=$OreY+25 MousePos $X,$Y Delay 500 // Look for Green Prospect Activated in status window? IsObject ProspectActivated at 256,85 SetConst Prospecting=2 // we definitely could mine if $Debug=1 TimeStamp MineOre: Noticed "Prospecting activated message" end else IsObject YouText at 257,86 // We either got 'you dont have enough energy' message // which suggests the roid is too high a level ( already waited to recharge) // or we got a 'your hold is full' message. // -- not sure how to handle a 'your tractor beam is still in use' message SetConst Prospecting=-1 SetConst MinedOut=2 if $Debug=1 TimeStamp MineOre: 'You...' Error message in prospect end //debug end // YouText end // isObject ProspectActivated if $Prospecting>0 Delay $MiningDelay // Wait for it to be pulled end // call PostMine // do any post mining functions? End // IsObject EmptyOre end // while $MinedOut=0 End //MineOre Procedure ///////////////////////////////////////////////////////////// // Check if we have enough energy to mine. // if not, just wait for a recharge, or alternatively // if set, activate some recharge device(s) Procedure CheckEnergy SetConst EnergyOK=0 While $EnergyOK=0 // could do this with a object instead but... // can't trust checking just one pixel either, due to // moving 'sparkles' in empty energy bar // SetConst GreenPix=0 Compute MinEnergyBarX = ($MinEnergy * ($EnergyBarMaxX - $EnergyBarMinX))/100 + $EnergyBarMinX Compute PixY = $EnergyBarY +1 IsGreen $MinEnergyBarX, $pixY inc $GreenPix end Compute PixY = $EnergyBarY+2 IsGreen $MinEnergyBarX, $pixY inc $GreenPix end Compute PixY = $EnergyBarY+3 IsGreen $MinEnergyBarX, $pixY inc $GreenPix end if $GreenPix > 2 SetConst EnergyOK=1 else // recharge commands. keys 4 // put your recharge device in slot 4 // if $Debug=1 TimeStamp CheckEnergy: Waiting for recharge to $MinEnergy percent. end Compute Y = $EnergyBarY + 8 // so mouse pos will be below min point. Compute X= $EnergyBarMaxX + 8 MousePos $X, $Y Delay $EnergyWait end end end Procedure PostMine Keys 4 // Put your martyr/chlorosynthesis/energy boost device in slot 4 End // Procedure BuffUp // Initial startup buffs // Keys ` // target self // Delay 500 // wait for game to synchronize // Keys 6 // activate hotkey-- should be buffUp skill // Delay 6000 // wait for it to activate // Keys x // target nearest asteroid end Procedure KillPopMob // //TODO: check if it outclasses us before engaging. might be // better to run!! // // Some nasty is out there, fight it as best we can keys e // target enemy keys [space] // follow it if close keys 3 // fire off shield leech keys f Delay 20000 //it should be dead by now // better procedure: while (critter still alive) keep following // and/or warp to it. // check if critter is still alive, keep following/shooting // check for object (critter health / energy bar in targ screen // end procedure SelectARoid // //Find an astroid target to pull stuff out of. //apply filter for types of roids we want to grab. // SetConst FoundARoid=0 SetConst RoidSearchCount=0 if $Debug>0 TimeStamp SelectARoid starting end // If we have a roid already targeted we might as well mine it! //ISOBJECT MiningNear at 980, 506 // SetConst FoundARoid=1 // if $Debug>0 // TimeStamp SelectARoid: already had a roid selected // end //end // Scan over targets (starting with currently targeted // to see if it meets our mining criteria while $FoundARoid=0 // Check for Tech Level text, which all minables will have IsObject TechText at 862,719 if $Debug=1 TimeStamp SelectARoid -- FoundRoid Tech Level Text end if $GetRoidLvl=1 call FigureOutRoidLevel if $Debug=1 TimeStamp SelectARoid: Roid level is $RoidLvl end if $RoidLvl = 0 TimeStamp FigureOutRoidLevel: Could not determine roid level else if $RoidLvl < $MinRoidLvl continue end if $RoidLvl > $MaxRoidLvl continue end end end if $MineRoids>0 ISOBJECT AsteroidText at 833,552 SetConst FoundARoid=$MineRoids if $Debug=1 TimeStamp SelectARoid: Asteroid end exit // leave this procedure, we found a roid! end end if $MineHydros>0 ISOBJECT HydroRoid at 833,552 SetConst FoundARoid=$MineHydros if $Debug=1 TimeStamp SelectARoid: Hydrocarbon end exit // leave this procedure, we found a roid! end end if $MineClouds>0 ISOBJECT GasCloud at 834,553 SetConst FoundARoid=$MineClouds if $Debug=1 TimeStamp SelectARoid: GasCloud end exit // leave this procedure, we found a roid! end end if $MineCrystals>0 ISOBJECT CrystalRoid at 834,553 SetConst FoundARoid=$MineCrystals if $Debug=1 TimeStamp SelectARoid: Crystalline Asteroid end exit // leave this procedure, we found a roid! end end if $MineHulks>0 ISOBJECT RuinedHulk at 834, 553 SetConst FoundARoid=$MineHulks if $Debug=1 TimeStamp SelectARoid: Hulk end exit // found something to mine, exit this procedure end end if $Debug>0 TimeStamp SelectARoid: Roid not of an interesting type Delay $DbDelay end // should crap out that is not a roid. if $Debug=1 TimeStamp SelectARoid -- Failed to find TechText Delay $DbDelay end // should crap out that is not a roid. if $Debug=1 TimeStamp SelectARoid -- Failed to find TechText Delay $DbDelay end end // IsObject TechText keys d // pick next of selected type (should be a roid!) delay $NextRoidDelay if $ScanRoids = 2 MousePos 980,600 Delay $MouseDelay Leftclick end Delay $NextRoidDelay // time to wait after selecting next Roid inc $RoidSearchCount if $RoidSearchCount > $MaxRoidSearch if $Debug>0 TimeStamp SelectARoid -- exceed roid search count $RoidSearchCount > $MaxRoidSearch end SetConst FoundARoid=-1 // default anyway? we could not find a roid! exit end end // while $FoundARoid=0 end // procedure SelectARoid // We have an astroid targetd // there should be a grey tech level number Procedure FigureOutRoidLevel SetConst RoidLvl=0 // initialize it IsObject RoidTL9 at 947,719 SetConst RoidLvl=9 exit end IsObject RoidTL8 at 947,719 SetConst RoidLvl=8 exit end IsObject RoidTL8 at 947,719 SetConst RoidLvl=8 exit end IsObject RoidTL7 at 947,719 SetConst RoidLvl=7 exit end IsObject RoidTL6 at 947,719 SetConst RoidLvl=6 exit end IsObject RoidTL5 at 947,719 SetConst RoidLvl=5 exit end IsObject RoidTL4 at 947,719 SetConst RoidLvl=4 exit end IsObject RoidTL3 at 947,719 SetConst RoidLvl=3 exit end IsObject RoidTL2 at 947,719 SetConst RoidLvl=2 exit end IsObject RoidTL1 at 947,719 SetConst RoidLvl=1 exit end IsObject RoidTL6 at 947,719 SetConst RoidLvl=6 exit end end Procedure MineARoid if $Debug>0 TimeStamp MineARoid Starting end call SelectARoid if $FoundARoid>0 call WarpToRoid if $FoundARoid > 0 // WarpToRoid might have reset this on the way there, if it disappeared call EmptyRoid end end if $Debug=1 TimeStamp MineARoid Ending end end //////////////////////////////////////// // A roid is targeted, warp to it // and once there open mining window. // (due to hotly contested ore fields, speed of attempt to open window is important!) //////////////////////////////////////// procedure WarpToRoid SetConst ThereYet=15 // Need to change this // initiate warp // let warping run a while. // check for MiningNear // if true, check for speed 0 // if true, click on mining icon // exit // check for MiningFar // check for speed > 0 // (still warping, delay) // no miningFar and No MiningNear means // lost target, crap out of this function // (hit q to stop warp then drop , if warping or speed !=0) // if $Debug>0 TimeStamp WarpToRoid starting end IsObject MiningNear at 960,506 call OpenMiningWindow if $Debug>0 TimeStamp WarpToRoid -- MiningNear detected, done here. end exit // already there, drop out. end if $ScanRoids = 1 // we will show what is in the roid as we warp there if $Debug > 0 TimeStamp WarpToRoid -- left click to see what is in ore end MousePos 980,600 Delay $MouseDelay Leftclick end IsObject MiningFar at 980,506 else Delay 100 // short delay for distance text IsObject DistText at 818,735 else // Hmm we seem to have no target now. Better drop out of this function if $Debug>0 TimeStamp WarpToRoid -- No target Distance, dropping out end SetConst FoundARoid=0 SetConst ThereYet=-1 exit end Delay 1500 // Wait for warp-to icon to show up end SetConst Warps=0 while $ThereYet>0 IsObject SpeedZero at 465,683 ISOBJECT MiningFar at 980, 506 inc Warps if $Warps > 3 exit end Keys q Delay $WarpInitDelay else ISOBJECT MiningNear at 980, 506 call OpenMiningWindow SetConst ThereYet=1 else if $Debug=1 TimeStamp WarpToRoid: Waiting for MingNear/Far Icon end IsObject DistText at 818,735 else // Hmm we seem to have no target now. Better drop out of this function if $Debug>0 TimeStamp WarpToRoid -- lost target, dropping out end SetConst FoundARoid=0 SetConst ThereYet=-1 exit end // IsObject DistText delay 1000 // we dont have miningFar or MiningNear, so maybe need to wait for it to appear end // IsObject MiningNear end // IsOjbec t MiningFar else // not speedZero, we are moving! Delay 1002 end // SpeedZero Dec $ThereYet // So we eventaully give up if we dont get there... end // while $ThereYet>0 if $ThereYet = 0 else isObject SpeedZero at 465,683 else // still warping and didn't get there, beter stop keys q Delay $WarpInitDelay end end end Procedure OpenMiningWindow //IsObject MiningWindow at 990,208 call CheckLootWindow if $LootWindowOpen=0 if $Debug > 0 TimeStamp OpenMiningWindow: Opening end MousePos 987,512 // move mouse to mining icon Delay $MouseDelay // wait for it LeftClick // click on it MousePos 980,600 // move it outa the way Delay 1500 // wait for the window to open end end ////////////////////////////////////////////////////// // We are at a roid, with mining icon indicating // close enough to begin mining ////////////////////////////////////////////////////// procedure EmptyRoid if $Debug=1 TimeStamp EmptyRoid: Starting end SetConst OrePos=8 // we check 8 ore positions, // 1=top-left, 4=bottom-left, 8=bottom-right //click on mining Icon call CheckLootWindow if $LootWindowOpen=0 //IsObject MiningWindow at 990,208 // mining box is already open, dont click again! //else // click on the mining icon to open the window! call OpenMiningWindow end if $FoundARoid > 1 // FoundARoid>1 means we dont really want to mine this thing if $Debug=1 TimeStamp EmptyRoid: Just wanted to touch this Roid. moving on end SetConst OrePos = -1 SetConst FoundARoid=-1 keys d Delay $NextRoidDelay exit end while $OrePos > 0 // We check if mining window is open by looking for the // mining window close icon in upper right corner //IsObject MiningWindow at 990,208 call CheckLootWindow if $LootWindowOpen=1 if $Debug=1 TimeStamp EmptyRoid: MiningWindow still open. Pos $OrePos end // Figure out position OreX,OreY from which ore position // we are looking at. SetConst Col=$OrePos if $OrePos > 4 SetConst OreX = 968 Compute Col=$Col - 4 else SetConst OreX = 906 end Compute OreY = 188 + ( 62 * $Col ) if $Debug=1 TimeStamp EmptyRoid: Calling Mine Ore for $Orex, $OreY end call MineOre if $MinedOut > 0 dec $OrePos // Go to the next ore position if $debug>0 TimeStamp MineOre: MinedOut is $MinedOut, next pos is $OrePos end else TimeStamp MineOre returned MinedOut= $MinedOut on pos $OrePos exit // strange status from MineOre function end else // closeBox if $Debug=1 TimeStamp EmptyRoid: MiningCloseBox gone. end SetConst OrePos=-1 // Will Cause the loop to end end // CloseWindowButton open end //While OrePos > 0 if $Debug > 0 TimeStamp EmptyRoid done. end // Deselect it. keys d Delay $NextRoidDelay end //////////////////////////////////// // // The main activity loop, just mine roids // procedure DoMining if $Debug>0 TimeSTamp DoMining starting end loop $Runs call MineARoid end end Procedure CheckCombat // CheckCombat ISOBJECT NoDamage at 758, 685 else Delay 2000 ISOBJECT NoDamage at 758, 685 else Keys h // Look for a Hostile MOB Delay 1000 Keys f // Fire at the hostile MOB Delay 1000 Keydown {left} 9 sec // Keys ` // Select yourself // Delay 500 // Keys 2 // Buff with Environment shield // Delay 6000 // Keys 5 // Fold space (in case the mob is still alive) // Delay 4000 Keys x End // ISOBJECT NoDamage (2nd) End // ISOBJECT NoDamage (1st) End // Loop Runs // Since simple object checks seem to be difficult for this // I put it in a procedure. // Stores value 1 in LootWindowOpen if it thinks it is open // stores a 0 if not. // We call this LootLootWindow even though we are using it in a // mining context, since the windows are identical Procedure CheckLootWindow SetConst LootWindowOpen=0 // we assumme it is closed.. if $Debug=1 TimeStamp CheckLootWindow start end // Delay 100 // see if a Delay in here helps at all.. IsObject LootWindow at 990,208 //This is the easy test, but it mysteriously fails alot SetConst LootWindowOpen=1 if $Debug=1 TimeStamp CheckLootWindow: foundopen by LootWindow@990 end exit end isObject MiningWindowCloseBox at 983,203 SetConst LootWindowOpen=1 if $Debug=1 TimeStamp CheckLootWindow: foundopen by MiningWindowCloseBox@983 end exit end // This is a bit more extreme, look for the damn object in the Icon by pixel SetConst P=0 // Pixel Count IsWhite 995,212 Inc $P end IsWhite 996,213 Inc $P end IsWhite 988,220 Inc $P end IsWhite 998,210 Inc $P end IsWhite 989,207 Inc $P end IsWhite 1003,205 inc $p end IsWhite 991,217 inc $p end if $Debug>0 TimeStamp CheckLootWindow: White Pixel count $p / 6 end IsBlue 1003,214 Inc $p end IsBlue 1003,213 inc $p end IsBlue 985,215 Inc $P end IsBlue 993,205 Inc $p end if $Debug>0 TimeStamp CheckLootWindow: Grey+blue Pixel count $p / 10 end IsBlack 994,208 Inc $p end IsBlack 1002,216 Inc $p end IsBlack 1002,210 Inc $p end IsBlack 992,206 inc $p end if $p > 7 if $Debug>0 TimeStamp CheckLootWindow -- open via pixel count: $p end SetConst LootWindowOpen=1 else if $Debug>0 TimeStamp CheckLootWindow -- Pixel Count $p inconclusive. end end // OK try this test from Montu's mining MAdness. // hover mouse over the close window, and then look for the tooltip to open // mousepos 995, 213 delay $ToolTipPopUp // wait for tooltip popup isobject miningwindow at 922, 194 SetConst LootWindowOpen=1 if $Debug=1 TimeStamp CheckLootWindow: found open by Montu's method (miningwindow@922) end MousePos 980,600 // *get the mouse out of the way* Delay $MouseDelay exit end if $Debug=1 TimeStamp CheckLootWindow -- no tests match, it must not be open after all end end Object MiningFar 26=0,0|41=0,8|27=0,16 57=4,0|32=4,8|32=4,16 62=8,0|62=8,8|32=8,16 End Object MiningNear 75=0,0|117=0,8|77=0,16 162=4,0|91=4,8|91=4,16 179=8,0|175=8,8|93=8,16 End (* Object EmptyOre 89=0,0|94=0,8|88=0,16 95=8,0|105=8,8|93=8,16 89=16,0|94=16,8|88=16,16 End // Another try at EmptyOre Object EmptyOre // at 902,372 80=0,0|84=0,2|84=0,4|85=0,6|86=0,8|86=0,10 83=2,0|86=2,2|87=2,4|89=2,6|89=2,8|90=2,10 85=4,0|88=4,2|91=4,4|93=4,6|94=4,8|94=4,10 86=6,0|89=6,2|92=6,4|95=6,6|96=6,8|99=6,10 87=8,0|90=8,2|95=8,4|99=8,6|101=8,8|103=8,10 88=10,0|93=10,2|97=10,4|101=10,6|103=10,8|104=10,10 End Object EmptyOre2 // at 901,373 81=0,0|83=0,2|84=0,4|85=0,6|85=0,8|85=0,10 83=2,0|85=2,2|86=2,4|87=2,6|88=2,8|88=2,10 86=4,0|88=4,2|90=4,4|91=4,6|92=4,8|92=4,10 87=6,0|90=6,2|93=6,4|95=6,6|96=6,8|97=6,10 88=8,0|92=8,2|95=8,4|98=8,6|100=8,8|101=8,10 90=10,0|94=10,2|99=10,4|102=10,6|102=10,8|103=10,10 End *) // empty 10x10 blue square for an empty object Object EmptyOre // at 906,376 91=0,0|93=0,2|94=0,4|94=0,6|94=0,8|94=0,10 92=2,0|95=2,2|96=2,4|99=2,6|98=2,8|98=2,10 95=4,0|99=4,2|101=4,4|103=4,6|102=4,8|101=4,10 97=6,0|101=6,2|103=6,4|104=6,6|103=6,8|103=6,10 97=8,0|101=8,2|103=8,4|105=8,6|104=8,8|103=8,10 97=10,0|101=10,2|104=10,4|104=10,6|103=10,8|103=10,10 End // GasCloud is actually looking for 'Gas' // text in target window, text 30x11 Object GasCloud // at 834,553 253=2,2|253=2,8 253=4,6|253=4,10 254=6,10 253=8,6|253=8,8 253=12,8 254=14,4|254=14,10 254=16,4|254=16,10 252=18,10 253=22,4|253=22,10 253=24,8 // black borders 0=6,0|0=7,0|0=0,5|0=0,4 End (* // Object GasCloud // at 834,552 253=2,2|253=2,8 253=4,6|253=4,10 253=6,10 253=8,6|253=8,8 253=12,8 253=14,4|253=14,10 253=16,4|253=16,10 253=18,10 End *) Object RuinedHulk 253=4,6 253=6,2|253=6,4 253=12,10 253=14,10 253=16,4|253=16,6|253=16,8 End Object NoDamage 106=0,2 153=2,0 153=4,0|183=4,4 155=6,0|103=6,2 158=8,0 162=10,0|105=10,2|191=10,4 End // This object from Montu's Mining Macro // Tests for ??? Object miningwindow // Test at coords 922, 194 76=0,0|81=2,0|85=4,0|89=6,0|93=8,0|95=10,0|96=12,0|98=14,0|99=16,0|102=18,0|103=20,0|104=22,0|106=24,0|107=26,0|107=28,0|109=30,0|110=32,0|112=34,0|115=36,0|115=38,0|116=40,0|115=42,0|115=44,0|114=46,0|112=48,0|111=50,0|110=52,0|109=54,0|108=56,0|107=58,0|105=60,0|104=62,0|104=64,0|103=66,0|101=68,0|100=70,0|98=72,0|96=74,0|96=76,0|95=78,0|96=80,0|96=82,0|95=84,0| 75=0,2|79=2,2|85=4,2|89=6,2|92=8,2|95=10,2|97=12,2|99=14,2|100=16,2|101=18,2|102=20,2|103=22,2|104=24,2|106=26,2|106=28,2|108=30,2|108=32,2|110=34,2|111=36,2|111=38,2|112=40,2|112=42,2|111=44,2|110=46,2|109=48,2|108=50,2|107=52,2|106=54,2|105=56,2|104=58,2|103=60,2|102=62,2|102=64,2|101=66,2|99=68,2|99=70,2|98=72,2|98=74,2|98=76,2|97=78,2|97=80,2|98=82,2|96=84,2| 1=0,4|1=2,4|1=4,4|1=6,4|1=8,4|85=10,4|88=12,4|90=14,4|91=16,4|93=18,4|94=20,4|95=22,4|96=24,4|98=26,4|99=28,4|100=30,4|99=32,4|101=34,4|100=36,4|100=38,4|101=40,4|102=42,4|102=44,4|102=46,4|1=48,4|97=50,4|98=52,4|98=54,4|97=56,4|96=58,4|94=60,4|1=62,4|1=64,4|92=66,4|91=68,4|89=70,4|89=72,4|89=74,4|88=76,4|89=78,4|91=80,4|94=82,4|95=84,4| 250=0,6|3=2,6|3=4,6|1=10,6|1=12,6|1=14,6|75=16,6|2=18,6|1=20,6|79=22,6|1=24,6|1=26,6|84=28,6|85=30,6|86=32,6|87=34,6|3=36,6|1=38,6|3=40,6|1=42,6|3=44,6|1=46,6|3=48,6|84=50,6|1=52,6|1=54,6|83=56,6|1=58,6|1=60,6|3=64,6|2=66,6|1=68,6|1=70,6|71=72,6|1=74,6|71=76,6|1=78,6|78=80,6|1=82,6|88=84,6| 72=2,8|67=4,8|250=10,8|3=12,8|3=14,8|250=18,8|3=20,8|3=24,8|3=26,8|3=28,8|90=30,8|93=32,8|95=34,8|1=36,8|250=38,8|3=42,8|246=44,8|254=48,8|8=52,8|3=54,8|246=58,8|3=60,8|3=64,8|246=66,8|3=68,8|3=70,8|3=74,8|3=76,8|250=78,8|8=82,8|95=84,8| 64=2,10|61=4,10|254=10,10|66=12,10|3=18,10|250=24,10|250=26,10|254=28,10|82=30,10|83=32,10|84=34,10|85=36,10|250=38,10|250=40,10|250=42,10|250=44,10|83=46,10|250=48,10|3=52,10|1=54,10|3=56,10|254=58,10|76=60,10|3=64,10|250=66,10|71=68,10|1=70,10|1=74,10|3=76,10|3=78,10|3=80,10|3=82,10|91=84,10| 3=0,12|250=2,12|250=4,12|3=10,12|250=12,12|250=14,12|250=18,12|3=20,12|250=24,12|250=26,12|75=30,12|76=32,12|75=34,12|76=36,12|1=38,12|3=40,12|77=46,12|254=48,12|254=60,12|250=62,12|3=66,12|250=68,12|250=70,12|56=74,12|250=76,12|254=80,12|66=82,12| 64=0,14|62=2,14|59=4,14|59=6,14|59=8,14|62=10,14|63=12,14|63=14,14|68=16,14|68=18,14|70=20,14|74=22,14|74=24,14|76=26,14|78=28,14|81=30,14|82=32,14|84=34,14|83=36,14|82=38,14|82=40,14|82=42,14|82=44,14|83=46,14|81=48,14|81=50,14|80=52,14|78=54,14|77=56,14|76=58,14|74=60,14|73=62,14|72=64,14|69=66,14|68=68,14|65=70,14|64=72,14|63=74,14|59=76,14|59=78,14|61=80,14|66=82,14|69=84,14| End // This object looks for the text "Aster" // idealy in target window 833,552 // beware, There are nav points called // 'Asteroid' too. A follow up check for // grey 'Tech Level' should be done too. // OBJ Mapper does not see black!?!? // hafta add that in by hand... // OR a combined object look for the asteroid // and the Tech Level Object AsteroidText //White text "Asteroid" at 833,552 255=4,8 0=5,2|0=7,2|0=5,3|0=7,3 // black anti alias around the 'A' 255=6,2|255=6,8 255=8,6|255=8,8 255=10,10 255=14,8 255=16,10 255=20,4|255=20,6|255=20,8|255=20,10 255=26,6|255=26,8|255=26,10 255=28,8 255=30,6|255=30,8 End // Look for the text Hydro // in the target window. Object HydroRoid // at 833,552 254=2,2|254=2,4|254=2,6|254=2,8|254=2,10 254=4,6 254=6,6 253=8,2|253=8,4|254=8,6|254=8,8|254=8,10 254=12,6|254=12,14 254=14,10 254=16,6 254=20,8 253=26,2|253=26,4|254=26,6|254=26,8|254=26,10 253=30,6 254=34,8 End // Look for text Crystal // 35x15 at 833,552 Object CrystalRoid // at 833,552 254=2,6|253=2,8 254=4,10 254=6,2 253=8,2 50=10,0 254=12,6 254=18,8|253=18,12 253=20,8 254=26,8 254=28,10 253=32,4|254=32,6|254=32,8|254=32,10 End //HydroRoid // The letters "Tech" in mining window at // 862,719 -- 60x11. // Note Tech is anti-aliased Object TechText // at 862,719 177=4,10 177=8,6|177=8,8 177=10,4|177=10,10 177=12,4|177=12,10 177=14,6 177=20,4|177=20,10 177=24,2|177=24,4|177=24,6|177=24,8|177=24,10 177=26,4 177=28,4 177=40,10 177=42,10 177=46,6|177=46,8 177=48,4|177=48,10 177=50,4|177=50,10 177=52,6 177=56,6 177=58,10 177=60,6 // Look for anti-alias black borders 0=0,0|0=0,1|0=1,0|0=2,0 End ////////////////////////////////////////////// // This object looks for the text cues // that indicate an asteroid // Test at 833,552 // It looks for both white text 'Aster' // as well as grayish text 'Tech' down below // (the roid's tech level) // Object AsteroidTech //test at 833,552 255=4,8 0=5,2|0=7,2|0=5,3|0=7,3 // black anti alias around the 'A' 255=6,2|255=6,8 255=8,6|255=8,8 255=10,10 255=14,8 255=16,10 255=20,4|255=20,6|255=20,8|255=20,10 255=26,6|255=26,8|255=26,10 255=28,8 255=30,6|255=30,8 // "Tech object pasted in and hand edited // adjust 833,852->862,719 remap // which is +29,+57 204=33,67 204=37,65|204=37,65 204=39,61|204=39,67 204=41,61|204=41,67 204=43,63 204=69,61|51=49,65|204=49,67 204=51,59|204=51,61|204=51,63|204=51,65|204=51,67 204=55,61|51=55,67|204=57,61 // Look for anti-alias black borders 0=29,57|0=29,58|0=30,57|0=31,57|0=48,67|0=48,68 End //the NotFormed Icon in the formations section of //group windows Object NotInFormation // test at 931,251 102=0,0|102=0,2|102=0,4|102=0,6|102=0,8|102=0,10|102=0,12|204=0,14|204=0,16|153=0,18|102=0,20|102=0,22|102=0,24|102=0,26|102=0,28 102=2,0|102=2,2|102=2,4|102=2,6|102=2,8|102=2,10|153=2,12|204=2,14|204=2,16|153=2,18|102=2,20|102=2,22|153=2,24|102=2,26|102=2,28 102=4,0|102=4,2|102=4,4|102=4,6|102=4,8|102=4,10|102=4,12|153=4,14|204=4,16|204=4,18|153=4,20|255=4,22|204=4,24|102=4,26|102=4,28 102=6,0|102=6,2|102=6,4|153=6,6|102=6,8|51=6,10|51=6,12|102=6,14|204=6,16|255=6,18|255=6,20|255=6,22|51=6,24|51=6,26|102=6,28 102=8,0|102=8,2|204=8,4|204=8,6|102=8,8|102=8,10|204=8,12|204=8,14|204=8,16|153=8,18|255=8,20|204=8,22|51=8,24|51=8,26|102=8,28 102=10,0|102=10,2|153=10,4|153=10,6|204=10,8|255=10,10|204=10,12|153=10,14|153=10,16|153=10,18|255=10,20|153=10,22|102=10,24|102=10,26|102=10,28 102=12,0|102=12,2|204=12,4|204=12,6|153=12,8|153=12,10|153=12,12|153=12,14|153=12,16|204=12,18|255=12,20|51=12,22|102=12,24|102=12,26|102=12,28 102=14,0|102=14,2|153=14,4|204=14,6|204=14,8|204=14,10|153=14,12|153=14,14|153=14,16|204=14,18|255=14,20|102=14,22|102=14,24|102=14,26|102=14,28 102=16,0|102=16,2|102=16,4|102=16,6|153=16,8|255=16,10|255=16,12|153=16,14|153=16,16|153=16,18|255=16,20|153=16,22|51=16,24|102=16,26|102=16,28 102=18,0|102=18,2|102=18,4|102=18,6|102=18,8|102=18,10|153=18,12|204=18,14|204=18,16|204=18,18|255=18,20|204=18,22|51=18,24|102=18,26|102=18,28 102=20,0|102=20,2|102=20,4|102=20,6|102=20,8|102=20,10|102=20,12|102=20,14|153=20,16|204=20,18|255=20,20|255=20,22|153=20,24|51=20,26|102=20,28 102=22,0|102=22,2|102=22,4|102=22,6|102=22,8|102=22,10|153=22,12|153=22,14|102=22,16|102=22,18|102=22,20|204=22,22|204=22,24|51=22,26|102=22,28 102=24,0|102=24,2|102=24,4|102=24,6|102=24,8|204=24,10|204=24,12|153=24,14|102=24,16|102=24,18|102=24,20|102=24,22|153=24,24|102=24,26|102=24,28 End // Look for text saying cargo hold is full // y pos of 85 assumes it is coming at 4th line from top of // chat window Object HoldIsFull // at 335,85 (70x9) 251=2,4 250=8,4|251=8,6 251=10,8 251=12,8 251=16,2|251=16,4|251=16,6|251=16,8 250=20,8 251=22,8 251=24,2|251=24,4|251=24,6 250=36,4|250=36,8 250=52,8 251=54,8 251=58,2|251=58,4|251=58,6|251=58,8 250=64,8 // Look for anti-alias black borders around the h 0=0,0|0=1,0|0=0,1|0=0,2|0=0,3|0=2,1 End // // Look for the CloseBox on the mining window // Object MiningWindowCloseBox // at 983,203 66=0,2|81=0,4|101=0,6|117=0,8|128=0,10|141=0,12|150=0,14|180=0,16|153=0,18|142=0,20|126=0,22 51=2,2|71=2,6|76=2,8|78=2,10|81=2,12|82=2,14|88=2,16|83=2,18|81=2,20|161=2,22 74=4,2|70=4,4|64=4,6|64=4,8|64=4,10|65=4,12|68=4,14|134=4,16|192=4,18|71=4,20|164=4,22 150=6,4|83=6,6|57=6,12|108=6,14|215=6,16|178=6,18|70=6,20|183=6,22 66=8,4|155=8,6|87=8,8|95=8,12|161=8,14|139=8,16|77=8,18|66=8,20|183=8,22 79=10,2|85=10,6|181=10,8|128=10,10|227=10,12|114=10,14|61=10,16|63=10,18|66=10,20|183=10,22 66=12,2|66=12,4|125=12,8|231=12,10|115=12,12|66=12,14|66=12,16|72=12,18|74=12,20|172=12,22 66=14,2|70=14,6|161=14,8|180=14,10|173=14,12|97=14,14|66=14,16|72=14,18|74=14,20|160=14,22 171=16,6|101=16,8|50=16,10|105=16,12|164=16,14|101=16,16|72=16,18|74=16,20|139=16,22 56=18,2|205=18,4|108=18,6|55=18,10|72=18,14|166=18,16|68=18,18|67=18,20|108=18,22 132=20,2|75=20,4|52=20,8|100=20,10|75=20,12|85=20,16|152=20,18|68=20,22 52=22,0|68=22,2|74=22,8|74=22,10|56=22,12|64=22,18|53=22,20|52=22,22 End // // Smaller 10x10 box should have less trouble recognizing it // // This object gets heavily used and so // need to be careful about how to recognize it. Object LootWindow // at 990,208 160=0,0|67=0,2|52=0,6|94=0,8|227=0,10 87=2,0|160=2,2|90=2,4|94=2,6|162=2,8|114=2,10 85=4,2|221=4,4|171=4,6|127=4,8|67=4,10 67=6,2|231=6,4|205=6,6|103=6,8|66=6,10 58=8,0|209=8,2|94=8,4|121=8,6|173=8,8|83=8,10 162=10,0|100=10,2|103=10,8|167=10,10 End Object MiningCloseBox // at 985,203 74=2,2|70=2,4|64=2,6|64=2,8|64=2,10|65=2,12|68=2,14|134=2,16|192=2,18|71=2,20 150=4,4|83=4,6|57=4,12|108=4,14|215=4,16|178=4,18|70=4,20 66=6,4|155=6,6|87=6,8|95=6,12|161=6,14|139=6,16|77=6,18|66=6,20 79=8,2|85=8,6|181=8,8|128=8,10|227=8,12|114=8,14|61=8,16|63=8,18|66=8,20 66=10,2|66=10,4|125=10,8|231=10,10|115=10,12|66=10,14|66=10,16|72=10,18|74=10,20 66=12,2|70=12,6|161=12,8|180=12,10|173=12,12|97=12,14|66=12,16|72=12,18|74=12,20 171=14,6|101=14,8|50=14,10|105=14,12|164=14,14|101=14,16|72=14,18|74=14,20 56=16,2|205=16,4|108=16,6|55=16,10|72=16,14|166=16,16|68=16,18|67=16,20 132=18,2|75=18,4|52=18,8|100=18,10|75=18,12|85=18,16|152=18,18 52=20,0|68=20,2|74=20,8|74=20,10|56=20,12|64=20,18|53=20,20 End // // Mostly White pickaxe icon indicating we are close enough to mine away. // Object MiningNear2 // at 980,505 72=0,0|79=0,2|83=0,4|61=0,6|91=0,8|131=0,10|122=0,12|63=0,14 54=2,0|59=2,2|72=2,4|195=2,6|150=2,8|64=2,10|90=2,12|91=2,14 70=4,0|151=4,2|210=4,4|167=4,6|67=4,8|91=4,10|92=4,12|93=4,14 64=6,0|177=6,2|223=6,4|128=6,6|65=6,8|83=6,10|89=6,12|92=6,14 73=8,0|199=8,2|77=8,4|67=8,6|185=8,8|94=8,10|81=8,12|91=8,14 74=10,0|110=10,2|83=10,4|89=10,6|65=10,8|143=10,10|156=10,12|70=10,14 69=12,0|74=12,2|84=12,4|90=12,6|89=12,8|73=12,10|77=12,12|161=12,14 68=14,0|71=14,2|84=14,4|90=14,6|90=14,8|90=14,10|89=14,12|75=14,14 End // Black/greyed out pickaxe icon, indicating we need to get // closer to the resource. Object MiningFar2 // at 980,505 68=2,6|53=2,8 52=4,2|73=4,4|58=4,6 62=6,2|78=6,4 69=8,2|65=8,8 50=10,10|55=10,12 56=12,14 End // Look for the message that Prospect was Activated. // this is at 4th line of text in chat window. Object ProspectActivated // at 256,85 254=8,4|254=8,6|254=8,8 253=14,4|254=14,6 254=16,8 254=18,8 253=22,4|253=22,8 254=28,8 254=30,8 253=32,4|254=32,6 254=36,6|253=36,8 254=38,6|254=38,8 255=40,6 253=44,8 254=46,8 253=50,2|254=50,4|254=50,6|254=50,8 253=60,6 254=62,8 254=64,8 253=66,8 253=70,8 254=72,8 253=74,4|254=74,6 254=80,2|254=80,4|254=80,6|254=80,8 End Object HoldIsFull // at 335,85 251=2,4 250=8,4|251=8,6 251=10,8 251=12,8 251=16,2|251=16,4|251=16,6|251=16,8 250=20,8 251=22,8 251=24,2|251=24,4|251=24,6 250=36,4|250=36,8 50=50,0 End // Look for the text 'You' in red // 4th line of text window // can be from 'your cargo hld is full' // or from 'you dont have enouhg energy' Object YouText // at 257,86 250=0,0 250=2,2 250=4,2 250=6,0 250=10,2 251=12,2 251=14,4|251=14,6 End // Guess digits for roid tech levels // single character, 8x11 at 947,719 Object RoidTL6 // at 947,719 177=2,4 177=4,2|177=4,4|177=4,10 177=1,7|177=5,4|177=7,7 // anti-alias // 0=0,6|0=2,7|0=0,5 End // Digit 7 in target window // 8x11 pixels at 947,719 Object RoidTL7 // at 947,719 178=4,6 178=6,2 0=0,0|0=3,0|0=4,0|0=2,4 End //Digit 8 in tech level field of roid target window Object RoidTL8 // at 947,719 177=2,2|177=2,4|178=2,6 177=4,10 177=6,2|178=6,4|178=6,6 0=0,7|0=0,6|0=0,5|0=4,0|0=5,0 // black borders End // Digit9 // 8x11 Object RoidTL9 // at 947,719 177=2,2|177=2,6 177=4,10 177=6,2|177=6,6 0=0,5|0=0,3|0=0,4|0=4,0|0=5,0|0=2,4 // black borders End // Digit 5, 8x11 at Object RoidTL5 // at 947,719 178=2,2|177=2,4|177=2,10 177=4,4|177=4,10 End // Digit 3, 8x11 at 947,719 Object RoidTL3 // at 947,719 177=2,2 52=4,8|177=4,10 177=6,2|178=6,4 66=8,2|51=8,10 End // Digit 4 Object RoidTL4 // at 947,719 177=2,6|178=2,8 177=4,4|177=4,8 178=6,2|178=6,4|178=6,6|178=6,8|178=6,10 177=8,8 End // Digit 1 // largely done by hand since object mapper thinks 2 // pixels here is enough. insanity. Object RoidTL1 // at 947,719 177=2,4|177=5,10|177=5,9|177=5,8|177=5,7 177=5,6|177=5,5|177=5,4|177=5,3|177=5,1|177=5,1 177=4,3|177=3,3 177=4,2 0=5,0|0=6,1|0=6,2|0=6,3 // some black border pixels End // Digit 2 at 947,719, 8x11 Object RoidTL2 177=2,2|177=2,10 177=4,8|177=4,10 177=6,2|177=6,6|177=6,10 End // Look for the triple zero in the speed indicator Object SpeedZero // at 465,683 254=2,2|254=2,8 254=4,8 253=6,2|254=6,4|254=6,6 253=10,2|253=10,8 254=12,8 254=14,2|254=14,4|254=14,6 253=18,2|253=18,8 254=20,8 254=22,2|254=22,4|254=22,6 End // Look for text "Dist:" at 818,735 // Text size is 27x11 // white with black borders... Object DistText // at 818,735 254=2,10 254=4,10 254=6,2 253=8,4|253=8,6 253=14,6|254=14,10 253=16,4|254=16,10 254=20,4 254=22,4|254=22,10 254=26,4|253=26,10 End // Look for text 'tractor' at 292,86 (30x8 pixels) Object TractorStillInUse // at 292,86 252=2,2|251=2,4|251=2,6 250=6,2|251=6,4|251=6,6 250=8,2 251=12,6 251=14,2|251=14,4 251=16,2|251=16,4 250=22,2 251=24,2 252=28,2|251=28,4|251=28,6 End // // 20x20 icon for follow, from far away // Object FollowFar // at 979,506 87=2,2|56=2,4|72=2,6 72=4,2 54=6,2 60=8,6|82=8,14 58=14,4|75=14,14 87=16,14|68=16,16 53=18,12 End // // Look for follow icon (target is close) // 20x20 Object Follow Near // at 979,506 63=0,0|119=0,2|69=0,4|76=0,6|83=0,8|85=0,10|84=0,12|85=0,14|102=0,16|123=0,18|81=0,20 68=2,0|250=2,2|160=2,4|207=2,6|70=2,8|91=2,10|91=2,12|87=2,14|84=2,16|99=2,18|117=2,20 82=4,0|204=4,2|104=4,4|106=4,6|91=4,8|93=4,10|93=4,12|92=4,14|89=4,16|87=4,18|108=4,20 87=6,0|154=6,2|92=6,4|80=6,6|88=6,8|89=6,10|85=6,12|81=6,14|91=6,16|87=6,18|95=6,20 89=8,0|80=8,2|83=8,4|171=8,6|86=8,8|81=8,10|84=8,12|235=8,14|84=8,16|88=8,18|88=8,20 89=10,0|89=10,2|68=10,4|85=10,6|81=10,8|92=10,10|89=10,12|85=10,14|83=10,16|89=10,18|86=10,20 89=12,0|80=12,2|85=12,4|90=12,6|88=12,8|78=12,10|87=12,12|78=12,14|84=12,16|88=12,18|86=12,20 89=14,0|83=14,2|168=14,4|82=14,6|90=14,8|90=14,10|79=14,12|214=14,14|88=14,16|86=14,18|87=14,20 93=16,0|89=16,2|89=16,4|90=16,6|90=16,8|90=16,10|90=16,12|250=16,14|193=16,16|72=16,18|91=16,20 107=18,0|92=18,2|89=18,4|89=18,6|89=18,8|81=18,10|154=18,12|69=18,14|70=18,16|106=18,18|95=18,20 98=20,0|101=20,2|92=20,4|89=20,6|86=20,8|78=20,10|69=20,12|72=20,14|70=20,16|76=20,18|70=20,20 End // the boot and 'select member's target' icons in group entry // 40x18 // 950,455 is first group member // 950,414 for second ( -41) // 950,373 for third ( -41) Object GrpMember // at 950,455 72=0,0|68=0,2|74=0,4|81=0,6|85=0,8|88=0,10|93=0,12|96=0,14|98=0,16|97=0,18 84=2,2|84=2,4|84=2,6|84=2,8|85=2,10|85=2,12|91=2,14|83=2,16|96=2,18 82=4,2|82=4,4|82=4,6|82=4,8|95=4,10|213=4,12|192=4,14|97=4,16|95=4,18 82=6,2|82=6,4|82=6,6|82=6,8|149=6,10|224=6,12|183=6,14|80=6,16|94=6,18 99=8,2|96=8,4|87=8,6|82=8,8|144=8,10|208=8,12|175=8,14|77=8,16|93=8,18 90=10,2|191=10,4|155=10,6|162=10,8|245=10,10|213=10,12|195=10,14|77=10,16|92=10,18 89=12,2|146=12,4|232=12,6|193=12,8|221=12,10|176=12,12|135=12,14|115=12,16|91=12,18 82=14,2|212=14,4|176=14,6|192=14,8|176=14,10|178=14,12|145=14,14|115=14,16|89=14,18 107=16,2|142=16,4|75=16,6|77=16,8|94=16,10|116=16,12|67=16,14|123=16,16|88=16,18 69=18,2|69=18,4|69=18,6|69=18,8|69=18,10|69=18,12|69=18,14|73=18,16|88=18,18 65=20,0|63=20,2|69=20,4|75=20,6|74=20,8|83=20,10|84=20,12|87=20,14|88=20,16|87=20,18 91=22,2|95=22,4|209=22,6|250=22,8|157=22,10|107=22,12|91=22,14|89=22,16|86=22,18 132=24,2|216=24,4|86=24,6|135=24,8|66=24,10|101=24,12|167=24,14|117=24,16|85=24,18 194=26,2|60=26,4|82=26,6|173=26,8|107=26,10|82=26,12|145=26,14|85=26,18 50=28,0|195=28,2|81=28,4|163=28,6|105=28,8|90=28,10|83=28,12|90=28,14|118=28,16|84=28,18 56=30,0|184=30,2|114=30,4|203=30,6|91=30,8|136=30,10|91=30,12|123=30,14|111=30,16|84=30,18 209=32,2|71=32,4|84=32,6|226=32,8|120=32,10|90=32,12|111=32,14|92=32,16|83=32,18 143=34,2|119=34,4|82=34,6|125=34,8|66=34,10|90=34,12|218=34,14|77=34,16|82=34,18 107=36,2|132=36,4|241=36,6|147=36,8|133=36,10|201=36,12|99=36,14|110=36,16|82=36,18 59=38,0|108=38,8|50=38,10|79=38,16|82=38,18 58=40,0|55=40,2|62=40,4|66=40,6|71=40,8|74=40,10|77=40,12|79=40,14|80=40,16|81=40,18 End