Merc Lister
Add a little something extra to an otherwise fairly uninteresting merc system.
by zuils
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/pako/1.0.6/pako.min.js"></script>
Updated Jun 9th for version 1.0 (<a href="https://jsfiddle.net/A45327Eq/vruwmyao/172/embedded/result/" target="_blank">0.26b version</a>) Added the zlib/pako save decoding Nov 14, 2017<br>
<table class="noBorder">
<td class="noBorder">
<textarea id="savegame" placeholder="Paste your save game here" autofocus onclick="this.focus();this.select()" onblur="readSave()"></textarea>
</td><td>
<button onclick="readSave()">Read save</button>
</td><td>
<a href="https://www.reddit.com/r/ClickerHeroes/comments/3ues7c/merc_lister_updated_with_quests_and_failure/" target="_blank">FAQ</a>
</td>
</table>
Show any TTDs: <input type="checkbox" id="showTTD" checked>
Sort quests: <input type="checkbox" id="sortQuests" checked>
Show days in time format: <input type="checkbox" id="showDays" checked>
Show recruit TTDs: <input type="checkbox" id="showMercTTDs"><br>
Number of revive TTDs: <input size="6" type="text" id="numTTDs"> Update time: <input type="checkbox" id="updateTime" checked> Alarm: <input size="6" type="text" onChange="formatAlarm(this);" value="hhmmss" onclick="clearInterval(window.alarm);this.value='hhmmss';this.select();"/><br>
Number of sets of quests: <input size="6" type="text" id="inputQuests" value=8> Mark:
<a class="tsource"><input type="checkbox" id="mGold"><span class="ttip">Gold</span></a>
<a class="tsource"><input type="checkbox" id="mHS"><span class="ttip">HS</span></a>
<a class="tsource"><input type="checkbox" id="mRubies"><span class="ttip">Rubies</span></a>
<a class="tsource"><input type="checkbox" id="mSkills"><span class="ttip">Skills</span></a>
<a class="tsource"><input type="checkbox" id="mRelics"><span class="ttip">Relics</span></a><br>
Number of recruits: <input size="6" type="text" id="inputMercs" value=4> Filters:
<a class="tsource"><input type="checkbox" id="Common"><span class="ttip">Common</span></a>
<a class="tsource"><input type="checkbox"...
CSS
table {
border-collapse: collapse;
border-spacing: 0;
border: 1px solid #cccccc;
}
th {
background-color: #e6e6e6;
/*text-align: center;*/
}
th, td {
padding: 6px;
/*text-align: left;*/
/*border-bottom: 1px solid #ddd;*/
}
td {text-align: left}
.striped tr:nth-child(odd) {background-color: #e6e6e6} /*#f2f2f2}*/
.striped4 tr:nth-child(8n-7) {background-color: #e6e6e6}
.striped4 tr:nth-child(8n-6) {background-color: #e6e6e6}
.striped4 tr:nth-child(8n-5) {background-color: #e6e6e6}
.striped4 tr:nth-child(8n-4) {background-color: #e6e6e6}
.noBorder {
padding: 0;
padding-right: 6px;
border-spacing: 0;
border-collapse: collapse;
border: 0;
}
.tsource:hover .ttip {
display: block;
}
.ttip {
display: none;
background: #C8C8C8;
margin-left: 14px;
padding: 6px;
position: absolute;
}
.shadow5 {
font-size:18px;
text-shadow: 0 0 3px black, 0 0 3px black, 0 0 3px black, 0 0 3px black, 0 0 3px black;
}
markHS {
background-color: #9CF051;
color: black;
}
markRubies {
background-color: #F59595;
color: black;
}
markGold {
background-color: yellow;
color: black;
}
markSkills {
background-color: orange;
color: black;
}
markRelics {
background-color: #BDB6FA;
color: black;
}
JavaScript
getCookies();
var tooltip = document.querySelectorAll('.ttip');
document.addEventListener('mousemove', fn, false);
function fn(e) {
for (var i = tooltip.length; i--;) {
tooltip[i].style.left = e.pageX + 'px';
tooltip[i].style.top = e.pageY + 'px';
}
}
function readSave() {
var txt = document.getElementById("savegame").value;
var ANTI_CHEAT_CODE = "Fe12NAfA3R6z4k0z";
var zlib = "7a990d405d2c6fb93aa8fbb0ec1a3b23";
var deflate = "7e8bb5a89f2842ac4af01b3b7e228592";
if (txt.indexOf(ANTI_CHEAT_CODE) > -1 || txt.substring(0, 32) == zlib || txt.substring(0, 32) == deflate) {
document.getElementById("alive").innerHTML = "Decoding...";
if (txt.substring(0, 32) == zlib) {
var pako = window.pako;
var data = JSON.parse(pako.inflate(atob(txt.substring(32)), {to: 'string'}));
} else if (txt.substring(0, 32) == deflate) {
var pako = window.pako;
var data = JSON.parse(pako.inflateRaw(atob(txt.substring(32)), {to: 'string'}));
} else {
var result = txt.split(ANTI_CHEAT_CODE);
txt = "";
for (var i = 0; i < result[0].length; i += 2)
txt += result[0][i];
var data = JSON.parse(atob(txt));
}
clearInterval(window.timer);
setCookies();
var numTTDs = document.getElementById("numTTDs").value;
var showDays = document.getElementById("showDays").checked;
var showTTD = document.getElementById("showTTD").checked;
alive(data, showTTD, numTTDs, showDays, document.getElementById("updateTime").checked);
quest(data, document.getElementById("inputQuests").value, document.getElementById("sortQuests").checked);
mercs(data.mercenaries.mercRoller.seed, document.getElementById("inputMercs").value, showTTD, showDays, document.getElementById("showMercTTDs").checked, numTTDs);
}
else if (txt)
document.getElementById("alive").innerHTML = "Not a valid save, try again.";
}
function randNum(seed) {
return (seed * 16807) % 2147483647;
}
function secToString(s, showDays) {
var d = 0, h = 0, m = 0;
var...