Skip to content
Menu
SteamAH
  • Cheat
  • Guide
  • Tips
  • Game Lists
  • Privacy Policy
SteamAH

Mr.Mine Save Editing, Fixing Broken Achievements, More

Posted on October 5, 2020

This guide is mainly about how to Edit Saves, Sell/Buy Prices, Fix Broken Achievements and Update UI Images, let’s check it out.

 

Table of Contents

  • Disclaimer
  • Save Editing
  • Sell/Buy Prices
  • Image Editing
  • Why do achievements break?
  • Fixing Achievements
  • Related Posts:

Disclaimer

I am not going to tell you how to play your game, if you want to play it the “right” way and grind through level-by-level then you do you

This guide is for those who want to fast-forward their game progress or simply explore what the game has to offer before committing countless hours to the grind

I personally would recommend avoiding the modifications in this guide if you wish to experience the gameplay as the developers intended.

⚠ Please ensure you back up your game save code before attempting anything in this guide, as some changes may have irreversible effects.

Save Editing

How are saves stored

Your saves are stored in a base64 format, a typical save code looks like the following:

Guide|TXpZek16TXhOekU0ZkRNd2ZEY3hOamMyZkRjMk5UWXhNVGs0TVRZMU1qRXdOak01ZkRWOE1UUjhNVFY4TVRKOE1UQjhNVEF4ZkRVMk56SjhORFEzTW53ME1UZ3hmREV5TkRWOE1UY3dmREI4TUh3d2ZEQjhNSHd3ZkRCOE1Id3dmREI4TUh3d2ZEQjhNSHd3ZkRRMk5Yd3hNSHd3ZkRCOE1Id3dmREI4TUh3d2ZEQjhNSHd3ZkRFaE9TRXRNU0V0TVNFdE1TRXRNU0V0TVNFdE1TRXRNWHd5SVRZaE1UQWhMVEVoTFRFaExURWhMVEVoTFRFaExURjhNeUV4TVNFM0lTMHhJUzB4SVMweElTMHhJUzB4SVMweGZEUWhPQ0V0TVNFdE1TRXRNU0V0TVNFdE1TRXRNU0V0TVh3dE1TRXRNU0V0TVNFdE1TRXRNU0V0TVNFdE1TRXRNU0V0TVh3eGZERjhNWHd4ZkRGOE1Yd3hmREY4TVh3eGZERjhNWHd4ZkRGOE1Yd3hmREY4TUh3eGZERjhNWHd4ZkRGOE1Id3hmREI4TVh3d2ZERjhNSHd4ZkRCOE1Id3dmREV5TURNd2ZESWhNaUV5SVRJaE1DRXdJVEFoTUNFd0lUSWhNQ0V3SVRBaE1DRXdJVEFoTUNFd0lUQWhNQ0V3SVRBaE1DRXdJVEFoTUNFd0lUQWhNQ0V3SVRBaE1DRXdJVEFoTUNFd0lUQWhNQ0V3SVRBaE1DRXdJVEFoTUNFd2ZEQjhNSHd3ZkRCOE1Id3dmREI4TUh3d2ZEQjhNSHd3ZkRCOE1Id3dmREI4TUh3d2ZEQjhNSHd3ZkRCOE1Id3dmREI4TUh3d2ZEQjhNSHd3ZkRFd2ZEQWhNQ0V3SVRBaE1DRXdJVEFoTUNFd0lUQjhNSHd3ZkRCOE1Id3dmREI4TUh3d2ZEQjhNSHd3ZkRCOE1Id3dmREI4TUh3d2ZEQjhNVFl3TVRnNU9EQTRNSHd3ZkRGOE1Id3dJVE1oTWpBd01DRXhJVEFoTUNFd2ZIeDhmSHg4Zkh4OGZIeDhmSHg4TUh3d2ZEQjhNVEI4TFRFaExURWhMVEVoTFRFaExURWhMVEVoTFRFaExURWhMVEVoTFRFaExURWhMVEVoTFRFaExURWhMVEVoTFRFaExURWhMVEVoTFRFaExURjhmSHg4Zkh4OGZIeDhmSHc9

We can ignore the name part (Guide), as we only need the right section of the code for our purpose. This code obviously not legible, so for our sake we can decode it by using an online decoder[www.base64decode.org] or any method which can decode from base64 -> utf-8, I personally use Python’s base64 [docs.python.org]library.

After decoding the save code once we get the following result:

MzYzMzMxNzE4fDMwfDcxNjc2fDc2NTYxMTk4MTY1MjEwNjM5fDV8MTR8MTV8MTJ8MTB8MTAxfDU2NzJ8NDQ3Mnw0MTgxfDEyNDV8MTcwfDB8MHwwfDB8MHwwfDB8MHwwfDB8MHwwfDB8MHwwfDQ2NXwxMHwwfDB8MHwwfDB8MHwwfDB8MHwwfDEhOSEtMSEtMSEtMSEtMSEtMSEtMSEtMXwyITYhMTAhLTEhLTEhLTEhLTEhLTEhLTF8MyExMSE3IS0xIS0xIS0xIS0xIS0xIS0xfDQhOCEtMSEtMSEtMSEtMSEtMSEtMSEtMXwtMSEtMSEtMSEtMSEtMSEtMSEtMSEtMSEtMXwxfDF8MXwxfDF8MXwxfDF8MXwxfDF8MXwxfDF8MXwxfDF8MHwxfDF8MXwxfDF8MHwxfDB8MXwwfDF8MHwxfDB8MHwwfDEyMDMwfDIhMiEyITIhMCEwITAhMCEwITIhMCEwITAhMCEwITAhMCEwITAhMCEwITAhMCEwITAhMCEwITAhMCEwITAhMCEwITAhMCEwITAhMCEwITAhMCEwITAhMCEwfDB8MHwwfDB8MHwwfDB8MHwwfDB8MHwwfDB8MHwwfDB8MHwwfDB8MHwwfDB8MHwwfDB8MHwwfDB8MHwwfDEwfDAhMCEwITAhMCEwITAhMCEwITB8MHwwfDB8MHwwfDB8MHwwfDB8MHwwfDB8MHwwfDB8MHwwfDB8MTYwMTg5ODA4MHwwfDF8MHwwITMhMjAwMCExITAhMCEwfHx8fHx8fHx8fHx8fHx8MHwwfDB8MTB8LTEhLTEhLTEhLTEhLTEhLTEhLTEhLTEhLTEhLTEhLTEhLTEhLTEhLTEhLTEhLTEhLTEhLTEhLTEhLTF8fHx8fHx8fHx8fHw

Okay, this is still illegible. If we look at the source code of the game we figure out why:

The save code is actually encoded twice, so in theory, if we run our previous result through the decoder again we should get our decoded save:

363331718|30|71676|76561198165210639|5|14|15|12|10|101|5672|4472|4181|1245|170|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|465|10|0|0|0|0|0|0|0|0|0|0|1!9!-1!-1!-1!-1!-1!-1!-1|2!6!10!-1!-1!-1!-1!-1!-1|3!11!7!-1!-1!-1!-1!-1!-1|4!8!-1!-1!-1!-1!-1!-1!-1|-1!-1!-1!-1!-1!-1!-1!-1!-1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|0|1|1|1|1|1|0|1|0|1|0|1|0|1|0|0|0|12030|2!2!2!2!0!0!0!0!0!2!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|10|0!0!0!0!0!0!0!0!0!0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1601898080|0|1|0|0!3!2000!1!0!0!0|||||||||||||||0|0|0|10|-1!-1!-1!-1!-1!-1!-1!-1!-1!-1!-1!-1!-1!-1!-1!-1!-1!-1!-1!-1||||||||||||

Great, now we have numbers, but what do they mean Mason. If we look at the source code we get our answers:

money = Math.floor(saves[chosen][0]); depth = parseInt(saves[chosen][1]); dexp = parseInt(saves[chosen][2]); UID = saves[chosen][3]; drill[0] = parseInt(saves[chosen][4]); drill[1] = parseInt(saves[chosen][5]); drill[2] = parseInt(saves[chosen][6]); drill[3] = parseInt(saves[chosen][7]); hireamt = parseInt(saves[chosen][8]); if(hireamt > 10){hireamt = 10;} oldversion = saves[chosen][9]; …

Let’s break this down:

  • Money is the first element in our save code, if we refer to the code we can deduct that our money is at $363331718
  • Depth is the second element, and just like money, our depth can be seen as 30
  • dexp is our experience
  • UID is the steamID64 of the account which created the save, if you’re curious you can use SteamID I/O[steamid.io] to find out the steam account of the creator

If we look in game, we can confirm this at the title screen:
Mr.Mine Save Editing, Fixing Broken Achievements, More

Extra Information

The order of the materials in the save file is as follows:

  1. Money
  2. Depth
  3. Exp
  4. UID
  5. Drill 1
  6. Drill 2
  7. Drill 3
  8. Drill 4
  9. Hireamt
  10. Old Version
  11. Coal
  12. Copper
  13. Silver
  14. Gold
  15. Platinum
  16. Diamond
  17. Coltan
  18. Painite
  19. Black Opal
  20. Red Diamond
  21. Blue Obsidian
  22. Californium

The first material begins at separation ( | ) #10 (money starting at 0). If you’re interested in the full list of the save code here you go[pastebin.com]

How to edit saves

To edit the save, you can simply modify these values. Say for example we want our dollars to be at $700,000, we refer back to our save code and simply replace the first value with our desired one. Same applies for the depth, for our instance we’ll change it to 5

700000|5|71676|76561198165210639|5|14|15|12|10|101|5672|4472|4181|1245|170|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|465|10|0|0|0|0|0|0|0|0|0|0|1!9!-1!-1!-1!-1!-1!-1!-1|2!6!10!-1!-1!-1!-1!-1!-1|3!11!7!-1!-1!-1!-1!-1!-1|4!8!-1!-1!-1!-1!-1!-1!-1|-1!-1!-1!-1!-1!-1!-1!-1!-1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|0|1|1|1|1|1|0|1|0|1|0|1|0|1|0|0|0|12030|2!2!2!2!0!0!0!0!0!2!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|10|0!0!0!0!0!0!0!0!0!0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1601898080|0|1|0|0!3!2000!1!0!0!0|||||||||||||||0|0|0|10|-1!-1!-1!-1!-1!-1!-1!-1!-1!-1!-1!-1!-1!-1!-1!-1!-1!-1!-1!-1||||||||||||

Once we are done editing our file, we have to convert it back by encoding it twice using base64 encryption. We can use the same website we used to decode, to encode our new modified save.

The first pass gives us the first encoded result, we have to repeat the process to encode this result further:

NzAwMDAwfDV8NzE2NzZ8NzY1NjExOTgxNjUyMTA2Mzl8NXwxNHwxNXwxMnwxMHwxMDF8NTY3Mnw0NDcyfDQxODF8MTI0NXwxNzB8MHwwfDB8MHwwfDB8MHwwfDB8MHwwfDB8MHwwfDB8NDY1fDEwfDB8MHwwfDB8MHwwfDB8MHwwfDB8MSE5IS0xIS0xIS0xIS0xIS0xIS0xIS0xfDIhNiExMCEtMSEtMSEtMSEtMSEtMSEtMXwzITExITchLTEhLTEhLTEhLTEhLTEhLTF8NCE4IS0xIS0xIS0xIS0xIS0xIS0xIS0xfC0xIS0xIS0xIS0xIS0xIS0xIS0xIS0xIS0xfDF8MXwxfDF8MXwxfDF8MXwxfDF8MXwxfDF8MXwxfDF8MXwwfDF8MXwxfDF8MXwwfDF8MHwxfDB8MXwwfDF8MHwwfDB8MTIwMzB8MiEyITIhMiEwITAhMCEwITAhMiEwITAhMCEwITAhMCEwITAhMCEwITAhMCEwITAhMCEwITAhMCEwITAhMCEwITAhMCEwITAhMCEwITAhMCEwITAhMCEwITB8MHwwfDB8MHwwfDB8MHwwfDB8MHwwfDB8MHwwfDB8MHwwfDB8MHwwfDB8MHwwfDB8MHwwfDB8MHwwfDB8MTB8MCEwITAhMCEwITAhMCEwITAhMHwwfDB8MHwwfDB8MHwwfDB8MHwwfDB8MHwwfDB8MHwwfDB8MHwxNjAxODk4MDgwfDB8MXwwfDAhMyEyMDAwITEhMCEwITB8fHx8fHx8fHx8fHx8fHwwfDB8MHwxMHwtMSEtMSEtMSEtMSEtMSEtMSEtMSEtMSEtMSEtMSEtMSEtMSEtMSEtMSEtMSEtMSEtMSEtMSEtMSEtMXx8fHx8fHx8fHx8fA

The second pass gives us our desired result:

TnpBd01EQXdmRFY4TnpFMk56WjhOelkxTmpFeE9UZ3hOalV5TVRBMk16bDhOWHd4Tkh3eE5Yd3hNbnd4TUh3eE1ERjhOVFkzTW53ME5EY3lmRFF4T0RGOE1USTBOWHd4TnpCOE1Id3dmREI4TUh3d2ZEQjhNSHd3ZkRCOE1Id3dmREI4TUh3d2ZEQjhORFkxZkRFd2ZEQjhNSHd3ZkRCOE1Id3dmREI4TUh3d2ZEQjhNU0U1SVMweElTMHhJUzB4SVMweElTMHhJUzB4SVMweGZESWhOaUV4TUNFdE1TRXRNU0V0TVNFdE1TRXRNU0V0TVh3eklURXhJVGNoTFRFaExURWhMVEVoTFRFaExURWhMVEY4TkNFNElTMHhJUzB4SVMweElTMHhJUzB4SVMweElTMHhmQzB4SVMweElTMHhJUzB4SVMweElTMHhJUzB4SVMweElTMHhmREY4TVh3eGZERjhNWHd4ZkRGOE1Yd3hmREY4TVh3eGZERjhNWHd4ZkRGOE1Yd3dmREY4TVh3eGZERjhNWHd3ZkRGOE1Id3hmREI4TVh3d2ZERjhNSHd3ZkRCOE1USXdNekI4TWlFeUlUSWhNaUV3SVRBaE1DRXdJVEFoTWlFd0lUQWhNQ0V3SVRBaE1DRXdJVEFoTUNFd0lUQWhNQ0V3SVRBaE1DRXdJVEFoTUNFd0lUQWhNQ0V3SVRBaE1DRXdJVEFoTUNFd0lUQWhNQ0V3SVRBaE1DRXdJVEI4TUh3d2ZEQjhNSHd3ZkRCOE1Id3dmREI4TUh3d2ZEQjhNSHd3ZkRCOE1Id3dmREI4TUh3d2ZEQjhNSHd3ZkRCOE1Id3dmREI4TUh3

Now all we have to do is add a name to the start of our code, and import it into the game. The final code would look like the following:

Guide|TnpBd01EQXdmRFY4TnpFMk56WjhOelkxTmpFeE9UZ3hOalV5TVRBMk16bDhOWHd4Tkh3eE5Yd3hNbnd4TUh3eE1ERjhOVFkzTW53ME5EY3lmRFF4T0RGOE1USTBOWHd4TnpCOE1Id3dmREI4TUh3d2ZEQjhNSHd3ZkRCOE1Id3dmREI4TUh3d2ZEQjhORFkxZkRFd2ZEQjhNSHd3ZkRCOE1Id3dmREI4TUh3d2ZEQjhNU0U1SVMweElTMHhJUzB4SVMweElTMHhJUzB4SVMweGZESWhOaUV4TUNFdE1TRXRNU0V0TVNFdE1TRXRNU0V0TVh3eklURXhJVGNoTFRFaExURWhMVEVoTFRFaExURWhMVEY4TkNFNElTMHhJUzB4SVMweElTMHhJUzB4SVMweElTMHhmQzB4SVMweElTMHhJUzB4SVMweElTMHhJUzB4SVMweElTMHhmREY4TVh3eGZERjhNWHd4ZkRGOE1Yd3hmREY4TVh3eGZERjhNWHd4ZkRGOE1Yd3dmREY4TVh3eGZERjhNWHd3ZkRGOE1Id3hmREI4TVh3d2ZERjhNSHd3ZkRCOE1USXdNekI4TWlFeUlUSWhNaUV3SVRBaE1DRXdJVEFoTWlFd0lUQWhNQ0V3SVRBaE1DRXdJVEFoTUNFd0lUQWhNQ0V3SVRBaE1DRXdJVEFoTUNFd0lUQWhNQ0V3SVRBaE1DRXdJVEFoTUNFd0lUQWhNQ0V3SVRBaE1DRXdJVEI4TUh3d2ZEQjhNSHd3ZkRCOE1Id3dmREI4TUh3d2ZEQjhNSHd3ZkRCOE1Id3dmREI4TUh3d2ZEQjhNSHd3ZkRCOE1Id3dmREI4TUh3
How to load saves

To load a save simply navigate to the load button in the main menu, and paste your new code into the field provided. Then press “Import Game And Close”
Mr.Mine Save Editing, Fixing Broken Achievements, More

If everything worked successfully, we should see our desired result as save file with $700,000 and a depth of 5:
Mr.Mine Save Editing, Fixing Broken Achievements, More

Sell/Buy Prices

How to modify sell prices of minerals


If you’re looking to sell coal for $10,000 a piece then this is the place for you.

Index.html

Start by navigating to the following file, which is located in the root directory of the game. This can be opened by: Right Clicking the game in your library ➡ Properties ➡ Browse Local Files ➡ win-unpacked

\MrMine\win-unpacked\resources\app\index.html

This is essentially the source code for the game, I recommend opening this with notepad++ or an equivalent application to easily navigate it.

minerals[]

Your sell prices are stored in an array called minerals[] which can be found on by searching var minerals =
In this area you can alter the sell price of any of the minerals, for our example we will modify the coal sell price to $10,000

var minerals = [ [], [_(“Coal”),10000,0], [_(“Copper”),2,0], [_(“Silver”),4,0], [_(“Gold”),16,0], [_(“Platinum”),32,0], [_(“Diamond”),64,0], [_(“Coltan”),500,0], [_(“Painite”),1000,0], [_(“Black Opal”),2000,0], [_(“Red Diamond”),10000,0], [_(“Blue Obsidian”),20000,0], [_(“Californium”),100000,0], [_(“Diamond8”),13,0], [_(“Diamond9”),14,0], [_(“Diamond10”),15,0], [_(“Diamond11”),16,0], [_(“Diamond12”),17,0], [_(“Diamond13”),18,0], [_(“Diamond14”),19,0], [_(“Diamond15”),20,0], [_(“Uranium”),[100,2000,50000],0,[0,0,0],[],36001] [_(“Plutonium”),[1000,20000,500000],0,[0,0,0],[],36001], [_(“Polonium”),[5000,250000,50000000],0,[0,0,0],[],36001] ];

Once you’ve modified the code, simply save and reload your game – your changes should be visible right away! Note, that you can always go back and reverse this change once you’re happy with your amount of dollars.

How to modify buy prices and resource costs
Worker Hire Costs
Base Costs

The array titled dlvlcost holds the costs of hire, simply by changing it to 0’s you obtain free hire costs.

var dlvlcost = [0,1,1,1,1,1,1,1,1,1,1];
Hire Function

If for some reason you don’t want to alter hire costs, you can change the function titled upgradehire(x) to the following:

function upgradehire(x){dlvl++;}
Equipment Upgrade Costs

The array titled upgradeEquipCosts holds the oil/money/time costs of upgrades and can be modified by simply changing the desired values and reloading the game.

Oil Rig Upgrade Costs

The array titled oilRigUpgradeCosts holds, you guessed it, oil rig upgrade costs. Change this to 0’s if you wish to have free upgrade costs:

var oilRigUpgradeCosts = [0,0,0, 0, 0,0, 0,0,0];

Image Editing

How to change the UI Images
How to change UI extras (Fonts)
(WIP)

Why do achievements break?

(WIP)

Fixing Achievements

Why do achievements break?

Timed AchievementsThis game has two two timed achievements

  • Play for 2hrs
  • Play for 24hrs

These achievements work by checking the playtime variable of the user’s save at two different times: 7200 and 86400 which is hours converted to minutes; 2hrs & 24hrs respectively.

This code works fine, however, the issue lies in how time is added to the playtime variable:

setInterval(function(){if(chosen > -1){playtime+=30;savegame();afk–;if(focus){checkQuests();}}},30000);

Every 30 seconds, the game checks if the user has completed any quests. The issue here is the following line of code: playtime+=30

Every 30 seconds, the game adds 30 minutes to the playtime, which as a result causes all players to earn the timed rewards far ahead of schedule.

A simple solution is to change the function to grand playtime += 0.3 which grants 30 seconds as opposed to 30 minutes – which I assume is the intended functionality 🙂

 

That’s all we are sharing today in Mr.Mine Save Editing, Fixing Broken Achievements, More , if there are anything you want to add please feel free to leave a comment below and we’ll see you soon.
Credit to Twi

MORE GAME GUIDES FOR YOU

Related Posts:

  • Trover Saves the Universe: Save Game File Guide
  • Unity of Command II: Save File Location
  • SONG OF HORROR: How to Save
  • Marvel’s Avengers How to Start a New Game Without Losing Your Progress (Save File Location)
  • The 13th Doll: A Fan Game of The 7th Guest – Save File Guide

1 thought on “Mr.Mine Save Editing, Fixing Broken Achievements, More”

  1. ezi says:
    October 26, 2020 at am9:08

    Hey there any way to reduce the excavation time for scientists?

    Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Recent Posts

  • CosmicBreak Universal New Player Guide
  • Blockchain Tycoon Quickstart Guide (Campaign 1)
  • House Flipper Japanese Garden Guide
  • Blood of Steel Zhang Bao Hero Guide
  • OMORI How to Defeat the Toughest Optional Boss
©2021 SteamAH | Powered by SuperbThemes & WordPress

Welcome to SteamAH!

We'd like to use cookies to help analyse, improve and personalise our service to you. Using cookies we are able to provide better contextual advertising (which pays to run this website) and share anonymised statistics with our partners and potential clients.

You can find out more in our Privacy Policy and customise your settings below.

Cookie settingsACCEPT
Privacy & Cookies Policy

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these cookies, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may have an effect on your browsing experience.
Necessary
Always Enabled

Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.

Non-necessary

Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.

Click below to consent to the use of the cookie technology provided by vi (video intelligence AG) to personalize content and advertising. For more info please access vi's website.

Show purposesShow vendors
Privacy settings