Midas Points

Developer
Size
19,443 Kb
Views
56,672

How do I make an midas points?

What is a midas points? How do you make a midas points? This script and codes were developed by Steven on 31 July 2022, Sunday.

Midas Points Previews

Midas Points - Script Codes HTML Codes

<!DOCTYPE html>
<html >
<head> <meta charset="UTF-8"> <title>Midas Points</title> <link rel="stylesheet" href="css/style.css">
</head>
<body> <h2>King Midas Skill Calculator</h2>
<div class="tab-container" id="tabContainer"> <button class="tab activeTab" id="tabSkill">Skill Calculator</button><button class="tab" id="tabCrit">Crit/Profits/Diamond</button><button class="tab" id="tabVoid">Mult/Void</button><button class="tab" id="tabLoot">Raid Loots</button><button class="tab" id="tabUnlock">Unlocks</button><button class="tab" id="tabMisc">Misc</button>
</div>
<div id="skillTab" class="tabContent"> <p> Enter your King Midas level and the percentage of income your favorite building provides. (Before skills).<br> The percentage your best building contributes is the number on the main screen, beside your best building - in brackets<br> To get it before skills the building can be unselected as favorite in the skill menu without resetting.<br> <!-- King Midas' level, points in Pillager and your favorite building percentage affect the calculation.<br> --> You may need to deselect and reselect your favorite building in game after skill reset to see the proper earning figures.<br> Armory is unlocked in the late game as part of the tier 2 Midaeum upgrades. </p> <p> It is recommended to go between a Max Pillager / Best Idle build and a Zero Pillager / Best Raid Loot build. <br> <a href="http://imgur.com/a/k5Yv5" target="_blank" rel="noopener">Instructions</a> </p> <div class="container"> <label for="numMidas" title="King Midas' level">Midas Level </label> <input type="number" class="num" id="numMidas" min="1" max="40" title="King Midas' level"> <label for="numFavPer" title="The % your best building contributes before skills (the number on the main screen, beside your best building - in brackets)">Fav Building % </label> <input type="number" class="num" id="numFavPer" 3 min="0" max="100" title="The % your best building contributes before skills (the number on the main screen, beside your best building - in brackets)"> <label for="numPillage" title="Points you want to keep back for pillager">Pillager </label> <input type="number" min="0" max="20" class="num" id="numPillage" title="Points you want to keep back for pillager"> <label for="numArmory" title="Armory - Corrects display if you have points from Armory">Armory (Midaeum) </label> <input type="number" min="0" max="20" class="num" id="numArmory" title="Armory - Corrects display if you have points from Armory"> <button id="doCalc">Calculate</button> </div> <div class="container result"> <p class="boxTitle">Sandbox / Your Stats</p> <div class="container"> <label for="numLoot">Loot Charge </label><input type="number" min="0" max="20" class="num" id="numLoot"> <label for="numRaid">Raid Charge </label><input type="number" min="0" max="20" class="num" id="numRaid"> <label for="numFavSkill">Favourite Building </label><input type="number" min="0" max="20" class="num" id="numFavSkill"> </div> <div class="container result"> <label for="noRaidLoot">No raid loots active </label><span class="spanResult" id="noRaidLoot">0.00%</span> <label for="withRaidLoot">Raid loots active </label><span class="spanResult" id="withRaidLoot">0.00%</span> </div> </div> <div class="container result inline"> <p class="boxTitle">Best For Idle</p> <div class="container"> <label>Loot Charge </label><input type="number" class="num" disabled id="loot1"> <label>Raid Charge </label><input type="number" class="num" disabled id="raid1"> <label>Favourite Building </label><input type="number" class="num" disabled id="fav1"> </div> <div class="container result"> <label>No raid loots active </label><span class="spanResult" id="noRaid1">0</span> <label>Raid loots active </label><span class="spanResult" id="withRaid1">0</span> </div> </div> <div class="container result inline"> <p class="boxTitle">Best For Raid Loot</p> <div class="container"> <label>Loot Charge </label><input type="number" class="num" disabled id="loot2"> <label>Raid Charge </label><input type="number" class="num" disabled id="raid2"> <label>Favourite Building </label><input type="number" class="num" disabled id="fav2"> </div> <div class="container result"> <label>No raid loots active </label><span class="spanResult" id="noRaid2">0</span> <label>Raid loots active </label><span class="spanResult" id="withRaid2">0</span> </div> </div> <div class="container result inline"> <p class="boxTitle">Highest Combined<span class="spanResult" id="combined"></span></p> <div class="container"> <label>Loot Charge </label><input type="number" class="num" disabled id="loot3"> <label>Raid Charge </label><input type="number" class="num" disabled id="raid3"> <label>Favourite Building </label><input type="number" class="num" disabled id="fav3"> </div> <div class="container result"> <label>No raid loots active </label><span class="spanResult" id="noRaid3">0</span> <label>Raid loots active </label><span class="spanResult" id="withRaid3">0</span> </div> </div>
</div>
<!-- SkillTab -->
<div id="critTab" class="tabContent tabHidden"> <p>For crit - use the in game percentages (next to the stone), not the number shown as the skill level.<br> For Diamonds use the skill level.<br> Diamond % will not be accurate until Diamonds account for most of your income. </p> <p><b>Building Profits first.</b></p> <div class="container"> <label for="numCritPer" title="Crit Chance % shown in game">Crit Chance % </label> <input type="number" class="num" id="numCritPer" min="0" max="1000" step="0.5" title="Crit Chance % shown in game"> <label for="numCritDmg" title="Critical Profits %">Critical Profits % </label> <input type="number" class="num" id="numCritDmg" min="0" max="1000" step="10" title="Critical Profits %"> <label for="numDiamondPer" title="Current Diamond Level. (Not %)">Diamond LVL </label> <input type="number" class="num" id="numDiamondPer" min="0" max="500" step="1" title="Current Diamond Level. (Not %)"> </div> <div id="critResult"> <p>Your next level of <b>Critical Chance</b> will be equivalent to a <span class="spanResult" id="critChanceIncrease"></span> production increase</p> <p>Your next level of <b>Critical Profits</b> will be equivalent to a <span class="spanResult" id="critDmgIncrease"></span> production increase</p> <p>Your next level of <b>Diamonds Value</b> will be equivalent to a <span class="spanResult" id="diamondDmgIncrease"></span> production increase</p> </div>
</div>
<!-- CritTab -->
<div id="voidTab" class="tabContent tabHidden"> <p> Late game you may buy Void Crystals for Red Gems<br> At 1000 Void Crystals you may buy extra void effect<br> <br><strong>Ideally you should never buy Void Crystals.<br>Wait for your 1k Crystals to come naturally and buy Void Effect instead</strong> </p> <div class="container"> <label for="numMultPer" title="Total Store Multiplier %">Store Multiplier </label> <input type="number" class="num" id="numMultPer" min="0" max="1000000" step="500" title="Total Store Multiplier %"> <label for="numVoid" title="Void Crystals">Void Crystals </label> <input type="number" class="num" id="numVoid" min="0" max="1000000" step="1" title="Void Crystals"> <label for="numVoidEffect" title="Void Effect % (Per Crystal)">Void Effect %</label> <input type="number" class="num" id="numVoidEffect" min="0" max="1000000" step="1" title="Void Effect % (Per Crystal)"> </div> <div id="voidResult"> </div>
</div>
<!-- VoidTab -->
<div id="lootTab" class="tabContent tabHidden"> <p> After unlocking Valeria you gain the ability to convert raid loots at the Exotic Merchant in exchange for Blue Stones<br> This is most useful during/after you have completed Midaeum as your loots will be out of balance.<br> </p> <div class="container"> <img src="http://volv.org/images/midas/1.png" title="Winds of Valhalla"> <img src="http://volv.org/images/midas/2.png" title="Mysterious Leaf of El Dorado"> <img src="http://volv.org/images/midas/3.png" title="Knowledge Burst of Babylonia"> <img src="http://volv.org/images/midas/4.png" title="Artifact of Atlantis"> <img src="http://volv.org/images/midas/5.png" title="Powder of Lemuria"> </div> <div class="container"> <input type="text" class="num" id="numRaid1" min="0" max="100000" step="1" title="Winds of Valhalla"> <input type="text" class="num" id="numRaid2" min="0" max="100000" step="1" title="Mysterious Leaf of El Dorado"> <input type="text" class="num" id="numRaid3" min="0" max="100000" step="1" title="Knowledge Burst of Babylonia"> <input type="text" class="num" id="numRaid4" min="0" max="100000" step="1" title="Artifact of Atlantis"> <input type="text" class="num" id="numRaid5" min="0" max="100000" step="1" title="Powder of Lemuria"> </div> <div id="lootResult"> <p>To even these out aim for <span class="spanResult" id="lootEven"></span> of each loot. (<span class="spanResult" id="lootExcess"></span> excess)</p> <p>This will take <span class="spanResult" id="lootBlue"></span> blue stones</p> </div>
</div>
<!-- lootTab -->
<div id="unlockTab" class="tabContent tabHidden"> <p> Red Gem Purchase Unlocks<br> </p> <div id="unlockTable" class="unlockTable"> </div>
</div>
<!-- unlockTab -->
<div id="miscTab" class="tabContent tabHidden"> <p> I make random other Midas stuff from time to time. Now it goes here<br> Some of it is very rough and I can't guarantee any of it is useful :) </p> <table class="miscList"> <!-- <tr> <td class="miscName">Mythical Invasion Tracker</td> <td class="miscDesc"> Spreadsheet I'm using to track Mythical Invasion event data </td> <td class="miscLink"><a target="_blank" href="https://docs.google.com/spreadsheets/d/1jNBkTGTSyXYBgNekdksFxWYEXRGdGHx_XF-c-IdbY64/edit?usp=sharing">Mythical Invasion Tracker</a><br>(Google Sheets)<br><a target="_blank" href="http://www.volv.org/Mythical Event.xlsx">Excel Version</td> </tr> --> <tr> <td class="miscName">Gift Rolls</td> <td class="miscDesc"> A look at potential gift rolling methods the game may be using </td> <td class="miscLink"><a target="_blank" href="http://codepen.io/volv/full/Lbmgmd/">Gift Rolling</a></td> </tr> <!-- <tr> <td class="miscName">Save Xmas Tracker</td> <td class="miscDesc"> Spreadsheet I'm using to track Xmas event data </td> <td class="miscLink"><a target="_blank" href="https://goo.gl/Y6eyg6">Save Xmas Tracker</a><br>(Google Sheets)</td> </tr> <tr> <td class="miscName">Crystal Simulator</td> <td class="miscDesc"> Simulates events and the expected resulting crystal gains at a supplied odd per crystal.<br> </td> <td class="miscLink"><a target="_blank" href="http://codepen.io/volv/full/JbpYpY/">Crystal Gain Simulator</a></td> </tr> --> <!-- <tr> <td class="miscName">Beer Event Remaining Rewards</td> <td class="miscDesc"> Gives a rough idea of what to expect between now and end of event<br> Can also show rough expectations per x tickets. </td> <td class="miscLink"><a target="_blank" href="http://codepen.io/volv/full/QGMWmy/">Beer Event Remaining Rewards</a></td> </tr> --> <!-- <tr> <td class="miscName">Beer Event Odds</td> <td class="miscDesc"> Observed odds from Beer Event until I got bored ot tracking<br> Combined results don't take into account decreasing odds of each crystal<br> Resulting from having 0-4AAs. </td> <td class="miscLink"><a target="_blank" href="http://imgur.com/a/GhNv9">Beer Reward Odds</a></td> </tr> --> <tr> <td class="miscName">Total Multiplier</td> <td class="miscDesc"> For getting a single number to compare your progress with others.<br> No support for current Building Profits Multi/Diamon Multi atm<br> Made to show impact of your Store/Void Multi, Raid Points and Void Crystals </td> <td class="miscLink"><a target="_blank" href="http://codepen.io/volv/full/worVPK/">Total Multi</a></td> </tr> <tr> <td class="miscName">War Outpost Stats</td> <td class="miscDesc"> My stats from WO, first time through<br> CP 420-1000. Multi 430m-510m.<br> Bit rough and outdated somewhat because of AAs </td> <td class="miscLink"><a target="_blank" href="https://docs.google.com/spreadsheets/d/1p8IhJfrt6L9GEBoQE8b_qUDiALEEucS_hr6EU8DSDpc/edit#gid=0">War Outpost Stats</a><br>(Google Sheet)</td> </tr> <tr> <td class="miscName">Mana Skills</td> <td class="miscDesc"> Sheet I used to work out if 2,3 or 2,3,4 was best for Idling.<br> Spoilers - 2,3,4 is best except for very early on. </td> <td class="miscLink"><a target="_blank" href="https://docs.google.com/spreadsheets/d/1cQhJ6U-ihrtOiLbPHbmq5ldMrJrrWK54RdcXE2k6w14/edit#gid=173328004">Mana Skills</a><br>(Google Sheet)</td> </tr> <tr> <td class="miscName">Midas Gold Plus Wiki</td> <td class="miscDesc"> Just in case anyone hasn't found it - there is a wiki. </td> <td class="miscLink"><a target="_blank" href="http://midasgoldplus.wikia.com/wiki/Midas%27_Gold_Plus_Wikia">Wiki</a></td> </tr> <tr> <td class="miscName">Donate</td> <td class="miscDesc"> Because some have asked, and with Holydays blessing. </td> <td class="miscLink"> <form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top"> <input type="hidden" name="cmd" value="_s-xclick"> <input type="hidden" name="hosted_button_id" value="WF3HSNE6BK8VQ"> <input type="image" src="https://www.paypalobjects.com/en_GB/i/btn/btn_donate_LG.gif" border="0" name="submit" alt="PayPal – The safer, easier way to pay online!"> </form> </td> </tr> </table>
</div> <script src="js/index.js"></script>
</body>
</html>

Midas Points - Script Codes CSS Codes

#skillTab { display: block;
}
.tabHidden { display: none;
}
body { background: rgba(200, 167, 112, 1); text-align: center;
}
.container { width: 175px; margin: auto; margin-top: 20px; display: flex; justify-content: space-between; flex-flow: row wrap
}
.result { border: solid 0.5px; padding: 5px; text-align: center; width: 225px;
}
.spanResult { font-weight: bold;
}
.inline { display: none; width: 240px;
}
.result span { font-weight: bold; width: 85px;
}
.container * { margin-top: 5px;
}
.num { width: 40px;
}
button { width: 100%;
}
.boxTitle,
#combined { background: rgba(200, 167, 112, 1);
}
.boxTitle { position: absolute; margin-top: -16px; margin-left: 4px;
}
#combined { font-weight: normal; padding-right: 2px;
}
.tab-container { width: 80%; margin: auto; margin-top: -10px;
}
.tab { width: auto; margin: 0; padding: 5px; background: rgba(170, 137, 82, 1); border: none; font-weight: bold; border-top-right-radius: 10px; border-top-left-radius: 10px; outline: none;
}
.tab:hover { background: rgba(150, 117, 62, 1);
}
.activeTab { background: rgba(150, 117, 62, 1); box-shadow: 1px -2px 10px .1px rgba(240, 180, 50, .8);
}
#numMultPer, #numVoid, #numVoidEffect { width: 60px;
}
#lootTab input { width: 40px; height: 18px; font-size: 18px; text-align: center;
}
#lootTab img { width: 45px; height: 45px; margin-bottom: -22px;
}
#lootTab .container { width: 230px;
}
#voidResult { margin-top: 10px;
}
#voidResult { margin-top: 30px;
}
#voidResult table { width: 60vw; margin: auto; text-align: center;
}
table { border: solid 0.5px; margin: auto; margin-top: 10px; padding: 5px; border-collapse: collapse; min-width: 320px;
}
td { padding: 0px 20px 0px 20px;
}
th { padding: 1px 5px 1px 5px; background: rgba(150, 117, 62, 1);
}
.disabled { background: rgba(100, 10, 10, 0.6) !important;
}
.disabled:hover { cursor: default;
}
.best { background: rgba(10, 100, 10, 0.7) !important;
}
.best:hover { background: rgba(10, 90, 10, 0.8) !important;
}
tr:first-child { border: solid black 1px;
}
tr:first-child:hover { cursor: default;
}
tr:hover { cursor: pointer; background: rgba(150, 117, 62, .5);
}
.unlockTable table {
}
.miscList { margin: auto; text-align: center;
}
.miscList tr { border: solid 0.5px; display: block; padding: 5px 0px;
}
.miscName { width: 12vw;
}
.miscDesc { width: 50vw;
}
.miscLink { width: 12vw;
}
input:invalid { box-shadow: none;
}

Midas Points - Script Codes JS Codes

'use strict';
// Polyfill tests
// Production steps of ECMA-262, Edition 6, 22.1.2.1
if (!Array.from) { Array.from = function () { var toStr = Object.prototype.toString; var isCallable = function isCallable(fn) { return typeof fn === 'function' || toStr.call(fn) === '[object Function]'; }; var toInteger = function toInteger(value) { var number = Number(value); if (isNaN(number)) { return 0; } if (number === 0 || !isFinite(number)) { return number; } return (number > 0 ? 1 : -1) * Math.floor(Math.abs(number)); }; var maxSafeInteger = Math.pow(2, 53) - 1; var toLength = function toLength(value) { var len = toInteger(value); return Math.min(Math.max(len, 0), maxSafeInteger); }; // The length property of the from method is 1. return function from(arrayLike /*, mapFn, thisArg */) { // 1. Let C be the this value. var C = this; // 2. Let items be ToObject(arrayLike). var items = Object(arrayLike); // 3. ReturnIfAbrupt(items). if (arrayLike == null) { throw new TypeError('Array.from requires an array-like object - not null or undefined'); } // 4. If mapfn is undefined, then let mapping be false. var mapFn = arguments.length > 1 ? arguments[1] : void undefined; var T; if (typeof mapFn !== 'undefined') { // 5. else // 5. a If IsCallable(mapfn) is false, throw a TypeError exception. if (!isCallable(mapFn)) { throw new TypeError('Array.from: when provided, the second argument must be a function'); } // 5. b. If thisArg was supplied, let T be thisArg; else let T be undefined. if (arguments.length > 2) { T = arguments[2]; } } // 10. Let lenValue be Get(items, "length"). // 11. Let len be ToLength(lenValue). var len = toLength(items.length); // 13. If IsConstructor(C) is true, then // 13. a. Let A be the result of calling the [[Construct]] internal method // of C with an argument list containing the single item len. // 14. a. Else, Let A be ArrayCreate(len). var A = isCallable(C) ? Object(new C(len)) : new Array(len); // 16. Let k be 0. var k = 0; // 17. Repeat, while k < len… (also steps a - h) var kValue; while (k < len) { kValue = items[k]; if (mapFn) { A[k] = typeof T === 'undefined' ? mapFn(kValue, k) : mapFn.call(T, kValue, k); } else { A[k] = kValue; } k += 1; } // 18. Let putStatus be Put(A, "length", len, true). A.length = len; // 20. Return A. return A; }; }();
}
// Midas Gold Plus - King Midas Skill Calculator
// No attempt yet to assign value to Raid Loot up time or Pillager worthiness
// 16/03/16 - Added localStorage to remember values between sessions.
// 26/03/16 - Tidied a little. Added Crit Chance/Dmg tabs
// 27/03/16 - Added Armory calc
// 27/03/16 - Added Mult/Void Stuff
// 28/03/16 - Working on secondary sort
// 30/03/16 - Hardcoded low level diamond values
// 10/04/16 - Added Raid loot trading.
// 12/04/16 - Added Void Effect Increase calculations
// 12/04/16 - Part 2 - Reworked whole mult/void/effect calculations. Made fancy table
// 13/04/16 - Added last void effect multiplier. Only updates tabs the user can see.
// 14/04/16 - Can now 'buy' upgrades by clicking on the table.
// 31/05/16 - Added Unlocks tab/ Cleared up tab implementation.
// 03/06/16 - Added Cumulative Costs to unlocks tab.
// 31/10/16 - Fixed armory display bug. (Thanks Amongalen), some refactoring.
// 26/11/16 - Now with localized number display
// 05/12/16 - Added Misc Tab
var skillCalc = function () { var volv$ = function volv$(x) { return document.getElementById(x); }; var numMidas = volv$("numMidas"); var numFavPer = volv$("numFavPer"); var numPillage = volv$("numPillage"); var numLoot = volv$("numLoot"); var numRaid = volv$("numRaid"); var numFavSkill = volv$("numFavSkill"); var numArmory = volv$("numArmory"); var noRaidLoot = volv$("noRaidLoot"); var withRaidLoot = volv$("withRaidLoot"); var numCritPer = volv$("numCritPer"); var numCritDmg = volv$("numCritDmg"); var numDiamondPer = volv$("numDiamondPer"); var numMultPer = volv$("numMultPer"); var numVoid = volv$("numVoid"); var numVoidEffect = volv$("numVoidEffect"); var numRaid1 = volv$("numRaid1"); var numRaid2 = volv$("numRaid2"); var numRaid3 = volv$("numRaid3"); var numRaid4 = volv$("numRaid4"); var numRaid5 = volv$("numRaid5"); var savedVars = ["numMidas", "numFavPer", "numPillage", "numLoot", "numRaid", "numFavSkill", "numArmory", "numCritPer", "numCritDmg", "numDiamondPer", "numMultPer", "numVoid", "numVoidEffect", "numRaid1", "numRaid2", "numRaid3", "numRaid4", "numRaid5"]; function numberWithCommas(x) { return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); } function controlInput(e) { var currentValue = Number(e.target.value); var currentMax = Number(e.target.max); if (currentValue > currentMax) { e.target.value = currentMax; } } // Converts percentage (int) to multiplier // Eg 20% becomes 1.2 function percToMult(perc) { return 1 + perc / 100; } function getArmoryMult() { var lvl = Number(numArmory.value); if (lvl === 0) return 1; if (lvl === 20) return 4; // Double effect = 4x return percToMult(lvl * 5); } function calcGains(_ref) { var lootPoints = _ref[0]; var raidPoints = _ref[1]; var favPoints = _ref[2]; var favPer = Number(numFavPer.value); var armoryMult = getArmoryMult(); // If no points in skill multiplier is 1 (No effect) var lootChargeMult = lootPoints ? percToMult(lootPoints * 10 * armoryMult) : 1; var raidChargeMult = raidPoints ? percToMult(raidPoints * 10 * armoryMult) : 1; var favBuildingMult = favPoints ? percToMult(favPer / 10 * favPoints * armoryMult) : 1; var noRaidLoots = favBuildingMult * raidChargeMult; var withRaidLoots = noRaidLoots * lootChargeMult; // Results expressed as +xxx% eg Multiplier * 100 - 100 return [noRaidLoots * 100 - 100, withRaidLoots * 100 - 100]; } function calcBest() { var pillager = Number(numPillage.value); var midas = Number(numMidas.value); var perms = []; // Build array of all possible combinations that use all available points for (var i = 0; i <= 20 && i <= midas; i++) { for (var j = 0; j <= 20 && j <= midas - i; j++) { for (var k = 0; k <= 20 && k <= midas - i - j; k++) { if (i + j + k + pillager === midas) perms.push([i, j, k]); } } } // Brute force. Calc Gains on each combination var result = perms.map(function (m) { return calcGains(m); }); function dualSort(a, b) { if (b[0] !== a[0]) { // If main gains are not the same return b[0] - a[0]; // Main gain wins } else { // If they are the same return b[1] - a[1]; // Sort by secondary } } // Map to Gains, Sort by Best as required var bestNoLootIndex = result.map(function (m, i) { return [m[0], m[1], i]; }).sort(dualSort)[0][2]; var bestWithLootIndex = result.map(function (m, i) { return [m[1], m[0], i]; }).sort(dualSort)[0][2]; var bestCombinedIndex = result.map(function (m, i) { return [m[0] + m[1], i]; }).sort(function (a, b) { return b[0] - a[0]; })[0][1]; return [perms[bestNoLootIndex], perms[bestWithLootIndex], perms[bestCombinedIndex]]; } // Returns number formatted with commas in form +x,xxx.xx% function calcNumOutput(num) { return '+' + num.toLocaleString(undefined, { maximumFractionDigits: 2, minimumFractionDigits: 2 }) + '%'; } function updateSandbox() { var _calcGains = calcGains([numLoot.value, numRaid.value, numFavSkill.value]); var incWithout = _calcGains[0]; var incWith = _calcGains[1]; noRaidLoot.innerHTML = calcNumOutput(incWithout); withRaidLoot.innerHTML = calcNumOutput(incWith); } function updateResults(_ref2) { var noLoot = _ref2[0]; var withLoot = _ref2[1]; var combined = _ref2[2]; var outputs = ["loot1", "raid1", "fav1", "noRaid1", "withRaid1", "loot2", "raid2", "fav2", "noRaid2", "withRaid2", "loot3", "raid3", "fav3", "noRaid3", "withRaid3"]; outputs = outputs.map(function (m) { return volv$(m); }); var x = undefined, y = undefined, z = undefined, noRaid = undefined, withRaid = undefined; x = noLoot[0]; y = noLoot[1]; z = noLoot[2]; outputs[0].value = x; outputs[1].value = y; outputs[2].value = z; var _calcGains2 = calcGains([x, y, z]); noRaid = _calcGains2[0]; withRaid = _calcGains2[1]; outputs[3].innerHTML = calcNumOutput(noRaid); outputs[4].innerHTML = calcNumOutput(withRaid); x = withLoot[0]; y = withLoot[1]; z = withLoot[2]; outputs[5].value = x; outputs[6].value = y; outputs[7].value = z; var _calcGains3 = calcGains([x, y, z]); noRaid = _calcGains3[0]; withRaid = _calcGains3[1]; outputs[8].innerHTML = calcNumOutput(noRaid); outputs[9].innerHTML = calcNumOutput(withRaid); x = combined[0]; y = combined[1]; z = combined[2]; outputs[10].value = x; outputs[11].value = y; outputs[12].value = z; var _calcGains4 = calcGains([x, y, z]); noRaid = _calcGains4[0]; withRaid = _calcGains4[1]; outputs[13].innerHTML = calcNumOutput(noRaid); outputs[14].innerHTML = calcNumOutput(withRaid); volv$("combined").innerHTML = ' - (' + numberWithCommas((noRaid + withRaid).toFixed(2)) + '%)'; } function saveToLocalStorage() { savedVars.forEach(function (each) { return localStorage.setItem(each, volv$(each).value); }); } function init() { savedVars.forEach(function (each) { return volv$(each).value = localStorage.getItem(each) || 0; }); updateSandbox(); updateCritResults(); updateVoidResults(); updateRaidResults(); displayUnlocks(); } // There's probably a fancy one liner for this :) function calcCritResults(critChance, critDmg, diamondLVL, armory) { var baseDmg = 100; var hits = 100; var curCritChance = 0, curCritDmg = 0; var critHits = 0, normalHits = 0; var beforeDmg = 0, afterCritChanceDmg = 0, afterCritProfitDmg = 0, afterDiamondDmg = 0; curCritChance = critChance; curCritDmg = critDmg; critHits = hits * curCritChance / 100; normalHits = hits - critHits; beforeDmg = normalHits * baseDmg + critHits * (baseDmg * (curCritDmg / 100 + 1)); curCritChance = critChance + 0.5; curCritDmg = critDmg; critHits = hits * curCritChance / 100; normalHits = hits - critHits; afterCritChanceDmg = normalHits * baseDmg + critHits * (baseDmg * (curCritDmg / 100 + 1)); curCritChance = critChance; curCritDmg = critDmg + 10; critHits = hits * curCritChance / 100; normalHits = hits - critHits; afterCritProfitDmg = normalHits * baseDmg + critHits * (baseDmg * (curCritDmg / 100 + 1)); //Diamond calc var beforeDiamond = 0, afterDiamond = 0; switch (Math.floor(diamondLVL)) { case 0: beforeDiamond = 1;afterDiamond = 1.25; break; case 1: beforeDiamond = 1.25;afterDiamond = 1.5; break; case 2: beforeDiamond = 1.5;afterDiamond = 2; break; case 3: beforeDiamond = 2;afterDiamond = 2.25; break; case 4: beforeDiamond = 2.25;afterDiamond = 2.5; break; default: beforeDiamond = diamondLVL * 0.5; afterDiamond = (diamondLVL + 1) * 0.5; break; } var critChanceIncrease = (afterCritChanceDmg - beforeDmg) / beforeDmg * 100; var critDmgIncrease = (afterCritProfitDmg - beforeDmg) / beforeDmg * 100; var diamondDmgIncrease = (afterDiamond - beforeDiamond) / beforeDiamond * 100; return [critChanceIncrease, critDmgIncrease, diamondDmgIncrease]; } function updateCritResults() { var critChance = Number(numCritPer.value); var critDmg = Number(numCritDmg.value); var diamonds = Number(numDiamondPer.value); var _calcCritResults = calcCritResults(critChance, critDmg, diamonds); var critChanceResult = _calcCritResults[0]; var critDmgResult = _calcCritResults[1]; var diamondResult = _calcCritResults[2]; volv$("critChanceIncrease").innerHTML = '+' + critChanceResult.toLocaleString(undefined, { maximumFractionDigits: 2, minimumFractionDigits: 2 }) + '%'; volv$("critDmgIncrease").innerHTML = '+' + critDmgResult.toLocaleString(undefined, { maximumFractionDigits: 2, minimumFractionDigits: 2 }) + '%'; volv$("diamondDmgIncrease").innerHTML = '+' + diamondResult.toLocaleString(undefined, { maximumFractionDigits: 2, minimumFractionDigits: 2 }) + '%'; volv$("critResult").style.display = "block"; } //5000 to 5500 shows as 9.8% inc because 5000 = 51 * income. Not 50 //4900 to 5400 shows as 10% because 4900 = 50 * income function calcVoidResults(query) { var baseDmg = 100; var multPer = query.multPer; var voidCrystals = query.voidCrystals; var voidEffect = query.voidEffect; var cost = query.cost; var newMult = query.newMult; var newCrystal = query.newCrystal; var newEffect = query.newEffect; var curMult = 0, curVoid = 0; var before = 0, after = 0; curMult = multPer; curVoid = voidCrystals * voidEffect; curMult = curMult === 0 ? 1 : curMult / 100 + 1; curVoid = curVoid === 0 ? 1 : curVoid / 100 + 1; before = baseDmg * curMult * curVoid; curMult = newMult; curVoid = newCrystal * newEffect; curMult = curMult === 0 ? 1 : curMult / 100 + 1; curVoid = curVoid === 0 ? 1 : curVoid / 100 + 1; after = baseDmg * curMult * curVoid; query.increase = (after - before) / before * 100; query.efficiency = cost > 0 ? query.increase / cost : 0; } function updateVoidResults() { var multPer = Number(numMultPer.value); var voidCrystals = Number(numVoid.value); var voidEffect = Number(numVoidEffect.value); var voidQueries = [{ name: "+100% Multiplier", info: "", multPer: multPer, voidCrystals: voidCrystals, voidEffect: voidEffect, disabled: false, newMult: multPer + 100, newCrystal: voidCrystals, newEffect: voidEffect, cost: 25, increase: 0, efficiency: 0 }, { name: "+300% Multiplier", info: "Unlocks at 500%", multPer: multPer, voidCrystals: voidCrystals, voidEffect: voidEffect, disabled: multPer < 500, newMult: multPer + 300, newCrystal: voidCrystals, newEffect: voidEffect, cost: 60, increase: 0, efficiency: 0 }, { name: "+500% Multiplier", info: 'Unlocks at ' + 2900..toLocaleString() + '%', multPer: multPer, voidCrystals: voidCrystals, voidEffect: voidEffect, disabled: multPer < 2900, newMult: multPer + 500, newCrystal: voidCrystals, newEffect: voidEffect, cost: 80, increase: 0, efficiency: 0 }, { name: '+' + 1000..toLocaleString() + '% Multiplier', info: 'Unlocks at ' + 7900..toLocaleString() + '%', multPer: multPer, voidCrystals: voidCrystals, voidEffect: voidEffect, disabled: multPer < 7900, newMult: multPer + 1000, newCrystal: voidCrystals, newEffect: voidEffect, cost: 95, increase: 0, efficiency: 0 }, { name: '+' + 2500..toLocaleString() + '% Multiplier', info: 'Unlocks at ' + 27900..toLocaleString() + '%', multPer: multPer, voidCrystals: voidCrystals, voidEffect: voidEffect, disabled: multPer < 27900, newMult: multPer + 2500, newCrystal: voidCrystals, newEffect: voidEffect, cost: 125, increase: 0, efficiency: 0 }, { name: "+10 Void Crystals", info: "Unlocks at Felix", multPer: multPer, voidCrystals: voidCrystals, voidEffect: voidEffect, disabled: voidCrystals === 0 && voidEffect === 0, newMult: multPer, newCrystal: voidCrystals + 10, newEffect: voidEffect, cost: 10, increase: 0, efficiency: 0 }, { name: "+1% Void Effect", info: "Unlocks at 1000 Total Void Crystals", multPer: multPer, voidCrystals: voidCrystals, voidEffect: voidEffect, disabled: voidCrystals < 1000 || voidEffect < 1, newMult: multPer, newCrystal: voidCrystals, newEffect: voidEffect + 1, cost: 10, increase: 0, efficiency: 0 }, { name: "+6% Void Effect", info: "Unlocks at 20% Void Effect", multPer: multPer, voidCrystals: voidCrystals, voidEffect: voidEffect, disabled: voidCrystals < 1000 || voidEffect < 20, newMult: multPer, newCrystal: voidCrystals, newEffect: voidEffect + 6, cost: 20, increase: 0, efficiency: 0 }, { name: "+50% Void Effect", info: "Unlocks at 140% Void Effect", multPer: multPer, voidCrystals: voidCrystals, voidEffect: voidEffect, disabled: voidCrystals < 1000 || voidEffect < 140, newMult: multPer, newCrystal: voidCrystals, newEffect: voidEffect + 50, cost: 40, increase: 0, efficiency: 0 }, { name: "+500% Void Effect", info: 'Unlocks at ' + 1150..toLocaleString() + '% Void Effect', multPer: multPer, voidCrystals: voidCrystals, voidEffect: voidEffect, disabled: voidCrystals < 1000 || voidEffect < 1150, newMult: multPer, newCrystal: voidCrystals, newEffect: voidEffect + 500, cost: 100, increase: 0, efficiency: 0 }]; voidQueries.forEach(calcVoidResults); Array.from(voidQueries).sort(function (a, b) { return b.efficiency - a.efficiency; }) // Sort by efficiency - copy array. Don't mutate .filter(function (item) { return !item.disabled; }) // Filter out disabled ones .filter(function (item, i, arr) { return item.efficiency.toFixed(5) === arr[0].efficiency.toFixed(5); }) // Get all that match max efficiency .forEach(function (each) { return each.best = true; }); // They're the best! var outString = "<table>"; outString += '<tr><th>Upgrade</th>'; outString += '<th>Cost</th>'; outString += '<th>Gain %</th>'; outString += '<th>Efficiency</th></tr>'; voidQueries.forEach(function (each) { // Set class to disabled or best if required. outString += '<tr id="' + each.name + '" class="multresult ' + (each.disabled ? "disabled" : "") + ' ' + (each.best ? "best" : "") + '">'; outString += '<td title="' + each.info + '">' + each.name + '</td>'; outString += '<td>' + each.cost + '</td>'; outString += '<td>' + each.increase.toLocaleString(undefined, { maximumFractionDigits: 2, minimumFractionDigits: 2 }) + '</td>'; outString += '<td>' + each.efficiency.toLocaleString(undefined, { maximumFractionDigits: 5, minimumFractionDigits: 5 }) + '</td></tr>'; }); outString += "</table>"; volv$("voidResult").innerHTML = outString; // Allow 'buying' of upgrade by clicking Array.from(document.querySelectorAll(".multresult")).forEach(function (each) { volv$(each.id).addEventListener("click", buyUpgrade); }); function buyUpgrade() { var _this = this; var curUpgrade = voidQueries.find(function (item) { return item.name === _this.id; }); // Match clicked if (curUpgrade.disabled) return; numMultPer.value = curUpgrade.newMult; numVoid.value = curUpgrade.newCrystal; numVoidEffect.value = curUpgrade.newEffect; updateVoidResults(); } volv$("voidResult").style.display = "block"; } function calcRaidResults(loot1, loot2, loot3, loot4, loot5) { var targetValue = 0; var blueStones = 0; var RLA = Math.floor((loot1 + loot2 + loot3 + loot4 + loot5) / 5); // Raid Loot Average var excess = (loot1 + loot2 + loot3 + loot4 + loot5) % 5; targetValue = RLA; var diffs = [RLA - loot1, RLA - loot2, RLA - loot3, RLA - loot4, RLA - loot5]; blueStones = diffs.reduce(function (prev, cur) { if (cur < 0) { return prev + Math.abs(cur); } else { return prev; } }, 0); blueStones -= excess; // Test - 66 67 290 413 544 - 419 (276) if (loot1 >= RLA && loot2 >= RLA && loot3 >= RLA && loot4 >= RLA && loot5 >= RLA) blueStones = 0; return [targetValue, blueStones, excess]; } function updateRaidResults() { var loot1 = Number(numRaid1.value); var loot2 = Number(numRaid2.value); var loot3 = Number(numRaid3.value); var loot4 = Number(numRaid4.value); var loot5 = Number(numRaid5.value); var _calcRaidResults = calcRaidResults(loot1, loot2, loot3, loot4, loot5); var targetValue = _calcRaidResults[0]; var blueStones = _calcRaidResults[1]; var excess = _calcRaidResults[2]; volv$("lootEven").innerHTML = '' + targetValue; volv$("lootBlue").innerHTML = '' + blueStones; volv$("lootExcess").innerHTML = '' + excess; volv$("lootResult").style.display = "block"; } var unlocks = { prodMult: { title: "Multiplier", levels: [{ desc: "+100%", cost: "25", unlocksAt: "Default", cumulativeCost: "N/A", tooltip: "Initially Unlocked" }, { desc: "+300%", cost: "60", unlocksAt: "500%", cumulativeCost: "125", tooltip: "5 Purchases from last" }, { desc: "+500%", cost: "80", unlocksAt: 2900..toLocaleString() + '%', cumulativeCost: "605", tooltip: "8 Purchases from last" }, { desc: '+' + 1000..toLocaleString() + '%', cost: "95", unlocksAt: 7900..toLocaleString() + '%', cumulativeCost: '' + 1485..toLocaleString(), tooltip: '11 Purchases from last' }, { desc: '+' + 2500..toLocaleString() + '%', cost: "125", unlocksAt: 27900..toLocaleString() + '%', cumulativeCost: '' + 3385..toLocaleString(), tooltip: "20 Purchases from last\n50 days of red gems total to get to this point in ideal conditions" }] }, voidMult: { title: "Void", levels: [{ desc: "10 Void Crystals", cost: "10", unlocksAt: "Felix", cumulativeCost: "N/A", tooltip: "Unlocks at Felix" }, { desc: "+1% Void Effect", cost: "10", unlocksAt: "1000 Void Crystals", cumulativeCost: "N/A", tooltip: "Unlocks at 1000 Void Crystals" }, { desc: "+6% Void Effect", cost: "20", unlocksAt: "20% Void Effect", cumulativeCost: "180", tooltip: "18 Purchases from last" }, { desc: "+50% Void Effect", cost: "40", unlocksAt: "140% Void Effect", cumulativeCost: "580", tooltip: "20 Purchases from last" }, { desc: "+500% Void Effect", cost: "100", unlocksAt: 1150..toLocaleString() + '% Void Effect', cumulativeCost: '' + 1420..toLocaleString(), tooltip: "21 Purchases from last\n20.5 days of red gems total to get to this point in ideal conditions" }] }, warMult: { title: "War Multiplier", levels: [{ desc: "+100%", cost: "10", unlocksAt: "Maxxed Midaeum<br>1 Qivg (1e78) Diamonds", cumulativeCost: "N/A", tooltip: "Unlocks at Maxxed Midaeum + 1 Qivg (1e78) Diamonds" }, { desc: "+400%", cost: "20", unlocksAt: 1000..toLocaleString() + '%', cumulativeCost: "100", tooltip: "10 Purchases from last" }, { desc: '+' + 1800..toLocaleString() + '%', cost: "30", unlocksAt: 5400..toLocaleString() + '%', cumulativeCost: "320", tooltip: "11 Purchases from last" }, { desc: '+' + 9000..toLocaleString() + '%', cost: "50", unlocksAt: 27000..toLocaleString() + '%', cumulativeCost: "680", tooltip: "12 Purchases from last" }, { desc: '+' + 50000..toLocaleString() + '%', cost: "70", unlocksAt: 144000..toLocaleString() + '%', cumulativeCost: '' + 1330..toLocaleString(), tooltip: "13 Purchases from last" }, { desc: '+' + 300000..toLocaleString() + '%', cost: "80", unlocksAt: 844000..toLocaleString() + '%', cumulativeCost: '' + 2310..toLocaleString(), tooltip: "14 Purchases from last" }, { desc: '+' + 1800000..toLocaleString() + '%', cost: "90", unlocksAt: 5344000..toLocaleString() + '%', cumulativeCost: '' + 3510..toLocaleString(), tooltip: "15 Purchases from last" }, { desc: '+' + 40000000..toLocaleString() + '%', cost: "100", unlocksAt: 34144000..toLocaleString() + '%', cumulativeCost: '' + 4950..toLocaleString(), tooltip: "16 Purchases from last\n72 days of red gems total to get to this point in ideal conditions" }] } }; function displayUnlocks() { for (var key in unlocks) { var outString = '<table><caption>' + unlocks[key].title + '</caption>'; outString += '<tr><th>Upgrade</th>'; outString += '<th>Cost</th>'; outString += '<th>Unlocks at</th>'; outString += '<th>Cumulative Cost</th></tr>'; unlocks[key].levels.forEach(function (each) { outString += '<tr>'; outString += '<td>' + each.desc + '</td>'; outString += '<td>' + each.cost + '</td>'; outString += '<td>' + each.unlocksAt + '</td>'; outString += '<td title="' + each.tooltip + '">' + each.cumulativeCost + '</td></tr>'; }); outString += "</table>"; volv$("unlockTable").innerHTML += outString; } } var tabNames = Array.from(document.getElementsByClassName("tab")).map(function (m) { return m.id; }); var buttonsToTab = { tabSkill: "skillTab", tabCrit: "critTab", tabVoid: "voidTab", tabLoot: "lootTab", tabUnlock: "unlockTab", tabMisc: "miscTab" }; volv$("tabContainer").addEventListener("click", function (e) { if (tabNames.indexOf(e.target.id) > -1) { // Ghetto Array.includes. Stupid IE / Edge Array.from(document.getElementsByClassName("tabContent")).forEach(function (e) { return e.style.display = "none"; }); Array.from(document.getElementsByClassName("tab")).forEach(function (e) { return e.classList.remove("activeTab"); }); volv$(e.target.id).classList.add("activeTab"); volv$(buttonsToTab[e.target.id]).style.display = "block"; } }); volv$("doCalc").addEventListener("click", function () { updateResults(calcBest()); var showResults = Array.from(document.querySelectorAll(".inline")).forEach(function (e) { return e.style.display = "inline-block"; }); }); document.body.addEventListener("input", function (e) { var activeTab = document.querySelector(".activeTab").id; controlInput(e); // Only update tabs the user can see. switch (activeTab) { case "tabSkill": updateSandbox(); updateResults(calcBest()); break; case "tabCrit": updateCritResults(); break; case "tabVoid": updateVoidResults(); break; case "tabLoot": updateRaidResults(); break; } saveToLocalStorage(); }, false); // Auto select input content Array.from(document.querySelectorAll("input")).forEach(function (each) { return each.addEventListener("click", function () { return each.select(); }); }); return { init: init };
}();
skillCalc.init();
Array.from(document.querySelectorAll(".miscList tr")).forEach(function (each) { each.addEventListener("click", function (e) { if (e.target.tagName.toLowerCase() === 'a') return; window.open(each.querySelector("a").href, '_blank'); });
});
Midas Points - Script Codes
Midas Points - Script Codes
Home Page Home
Developer Steven
Username volv
Uploaded July 31, 2022
Rating 3
Size 19,443 Kb
Views 56,672
Do you need developer help for Midas Points?

Find the perfect freelance services for your business! Fiverr's mission is to change how the world works together. Fiverr connects businesses with freelancers offering digital services in 500+ categories. Find Developer!

Steven (volv) Script Codes
Create amazing web content with AI!

Jasper is the AI Content Generator that helps you and your team break through creative blocks to create amazing, original content 10X faster. Discover all the ways the Jasper AI Content Platform can help streamline your creative workflows. Start For Free!