// ==UserScript== // @name HV - Track Drops // @version 2.1 // @namespace HVTD // @description totally useless // @match http://hentaiverse.org/* // @run-at document-end // ==/UserScript== if (document.getElementById('togpane_log')) { var round = document.querySelector('#togpane_log td').textContent, turns = document.querySelectorAll('#togpane_log tr'), difficulty = document.querySelector('.cit + .cit tr + tr').textContent, drops = [], last = difficulty; for (var i=0;i 0; gifts--) { if (/Received/.test(messages[gifts].textContent)) drops.push(messages[gifts].textContent); } } if (/Equipment/.test(origin)) { // Equipment salvaging results: 'Salvaged Mid-Grade Metals' ... for (var salvage = messages.length - 1; salvage > 0; salvage--) { if (/Salvaged/.test(messages[salvage].textContent)) drops.push(messages[salvage].textContent); // doesn't catch Item Menu salvage results, of course } } if (/gift/.test(messages[1].textContent)) { // '... brought you a gift!' origin = 'Gifts'; for (var gifts = messages.length - 1; gifts > 0; gifts--) { if (/Received/.test(messages[gifts].textContent)) drops.push(messages[gifts].textContent); } } if (drops.length) { var data = localStorage.getItem('Drops.' + origin)||'', temp = drops.join(','); // we're more likely to get consecutive duplicate items when shrining // possible duplicates if people use back/refresh buttons; mostly a worry for combat because of 503's localStorage.setItem('Drops.' + origin,data + (data.length?',':'') + temp); } } var img = document.querySelector('[title^="Stamina"]'); img.style.cursor = 'pointer'; img.addEventListener('click',function(e) { if (e.which != 1) return; var res = ''; ['Normal','Hard','Nightmare','Hell','Nintendo','Battletoads','IWBTH','PFUDOR','Snowflake','Received','Equipment','Gifts'].forEach(function(difficulty) { if (!localStorage.hasOwnProperty('Drops.' + difficulty)) return; var count = {}, temp = []; localStorage['Drops.' + difficulty].split(',').forEach(function(x) { count[x] = (count[x]||0)+1; }); for (var x in count) temp.push('' + x+ ' (' + count[x] + ')'); // plain output with count // for (var x in count) temp.push('[' + x+ '] (' + count[x] + ')'); // wrapped in brackets with count // for (var x in count) { for (var i=0;i' + x + ''); } // print duplicates, no count if (temp.length) res += '
  • ' + difficulty + '

    ' + temp.join('
    ') + '

  • ' }); if (res.length) { Array.prototype.slice.call(document.querySelectorAll('.stuffbox > div'),0).forEach(function(x) { x.style.display = 'none'; }); var stuffbox = document.querySelector('.stuffbox'), div = stuffbox.appendChild(document.createElement('div')); div.innerHTML = ''; div.style.textAlign = 'left'; var buttons = div.insertBefore(document.createElement('div'),div.firstChild); var reset = buttons.appendChild(document.createElement('a')), close = buttons.appendChild(document.createElement('a')); reset.innerHTML = 'Reset'; close.innerHTML = 'Close'; buttons.style.cssText = 'text-align: right'; reset.style.cssText = close.style.cssText = 'cursor: pointer; text-decoration: underline; margin: 5px;'; function closeReport(e) { if (e.which != 1) return; if (e.target.textContent == 'Reset') { if (!confirm('Are you sure?')) return; ['Normal','Hard','Nightmare','Hell','Nintendo','Battletoads','IWBTH','PFUDOR','Snowflake','Received','Equipment','Gifts'].forEach(function(x) { localStorage.removeItem('Drops.' + x); }); } Array.prototype.slice.call(document.querySelectorAll('.stuffbox > div'),0).forEach(function(x) { x.style.display = null; }); e.target.parentNode.parentNode.parentNode.removeChild(e.target.parentNode.parentNode); } close.addEventListener('click',closeReport,false); reset.addEventListener('click',closeReport,false); } },false);