// ==UserScript== // @name Mutik's DotD Script // @namespace tag://kongregate // @description Fork of ForTheGoodOfAll DotD script with new look and strongly optimized js code // @author Mutik, orig version: SReject, chairmansteve, tsukinomai(Shylight)?, JHunz, wpatter6, MoW, true_heathen, HG, mutikt, PDrifting // @version 1.0.17 // @grant GM_xmlhttpRequest // @include http://www.kongregate.com/games/5thPlanetGames/dawn-of-the-dragons* // @include *web*.dawnofthedragons.com/* // @include http://dotd.url.ph/* // @downloadURL none // ==/UserScript== function main() { if (typeof GM_setValue === 'undefined') { var GM_setValue = function (name, value) { localStorage.setItem(name, (typeof value).substring(0, 1) + value); }; } if (typeof GM_getValue == 'undefined') { var GM_getValue = function (name, dvalue) { var value = localStorage.getItem(name); if (typeof value != 'string') return dvalue; else { var type = value.substring(0, 1); value = value.substring(1); if (type == 'b') return (value == 'true'); else if (type == 'n') return Number(value); else return value; } }; } if (typeof GM_deleteValue == 'undefined') var GM_deleteValue = function(name) { localStorage.removeItem(name) }; window.FPX = { LandBasePrices:[4000,15000,25000,50000,75000,110000,300000,600000,1200000], LandBaseIncome:[100,300,400,700,900,1200,2700,4500,8000], LandCostRatio: function(owned) { var landCosts = [4000,15000,25000,50000,75000,110000,300000,600000,1200000]; var icr = [1,1,1,1,1,1,1,1,1]; /*Income/Cost ratio*/ var i = 9; while (i--) { landCosts[i] += FPX.LandBasePrices[i] * owned[i] / 10; icr[i] = FPX.LandBaseIncome[i] / landCosts[i]; } return icr; } }; window.timeSince = function(date,after) { if (typeof date === 'number') date = new Date(date); var seconds = Math.abs(Math.floor((new Date().getTime() - date.getTime())/1000)); var interval = Math.floor(seconds/31536000); var pretext = 'about ', posttext = after ? ' left' : ' ago'; if (interval >= 1) return pretext + interval + ' year' + (interval == 1 ? '' : 's') + posttext; interval = Math.floor(seconds/2592000); if (interval >= 1) return pretext + interval + ' month' + (interval == 1 ? '' : 's') + posttext; interval = Math.floor(seconds/86400); if (interval >= 1) return pretext + interval + ' day' + (interval == 1 ? '' : 's') + posttext; interval = Math.floor(seconds/3600); if (interval >= 1) return pretext + interval + ' hour' + (interval == 1 ? '' : 's') + posttext; interval = Math.floor(seconds/60); if (interval >= 1) return interval + ' minute' + (interval == 1 ? '' : 's') + posttext; return Math.floor(seconds) + ' second' + (seconds == 1 ? '' : 's') + posttext; }; window.isNumber = function(n) { return !isNaN(parseFloat(n)) && isFinite(n); }; window.SRDotDX = { version: { major: "1.0.17", minor: 'Mutik\'s mod' }, util: { getQueryVariable: function(v, s){ var query = String(s||window.location.search.substring(1)); if(query.indexOf('?')>-1) query = query.substring(query.indexOf('?')+1); var vars = query.split('&'); for (var i = 0; i < vars.length; i++) { var pair = vars[i].split('='); if (decodeURIComponent(pair[0]) == v) { return decodeURIComponent(pair[1]); } } return '' }, getRaidFromUrl: function(url){ var r = {}, link; var reg = /[?&]([^=]+)=([^?&]+)/ig, p = url.replace(/&/gi,"&"); while (link = reg.exec(p)) { if (!r.diff && link[1] == 'kv_difficulty') r.diff = parseInt(link[2]); else if (!r.hash && link[1] == 'kv_hash') r.hash = link[2]; else if (!r.boss && link[1] == 'kv_raid_boss') r.boss = link[2]; else if (!r.id && link[1] == 'kv_raid_id') r.id = link[2].replace(/http:?/i,""); else if (link[1] != 'kv_action_type') return null; } return r; }, getShortNum: function (num) { if (isNaN(num) || num < 0) return num; if (num >= 1000000000000) return (num / 1000000000000).toPrecision(4) + 't'; if (num >= 1000000000) return (num / 1000000000).toPrecision(4) + 'b'; if (num >= 1000000) return (num / 1000000).toPrecision(4) + 'm'; if (num >= 1000) return (num / 1000).toPrecision(4) + 'k'; return num + '' }, objToUriString: function(obj) { if (typeof obj == 'object') { var str = ''; for (var i in obj) str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]) + '&'; str = str.substring(0,str.length-1); return str } return ''; }, serialize: function(obj) { var str = []; for (var p in obj) if(obj[p]!=null)str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p])); return str.join("&"); }, stringFormat: function() { var s = arguments[0]; for (var i = 0; i < arguments.length - 1; i++) { var reg = new RegExp("\\{" + i + "\\}", "gm"); s = s.replace(reg, arguments[i + 1]); } return s; } }, config: (function() { var tmp, reqSave = false; try { tmp = JSON.parse(GM_getValue('SRDotDX','{}')) } catch (e) { tmp = {}; reqSave = true } //Raids tab vars tmp.lastFilter = typeof tmp.lastFilter == 'string' ? tmp.lastFilter : ''; tmp.filterSearchStringR = typeof tmp.filterSearchStringR == 'string' ? tmp.filterSearchStringR : ''; tmp.fltIncVis = typeof tmp.fltIncVis == 'boolean' ? tmp.fltIncVis : false; tmp.fltShowNuked = typeof tmp.fltShowNuked == 'boolean' ? tmp.fltShowNuked : false; tmp.fltShowAll = typeof tmp.fltShowAll == 'boolean' ? tmp.fltShowAll : false; //Options tab vars tmp.importFiltered = typeof tmp.importFiltered == 'boolean' ? tmp.importFiltered : true; tmp.hideRaidLinks = typeof tmp.hideRaidLinks == 'boolean' ? tmp.hideRaidLinks : false; tmp.hideBotLinks = typeof tmp.hideBotLinks == 'boolean' ? tmp.hideBotLinks : false; tmp.hideVisitedRaids = typeof tmp.hideVisitedRaids == 'boolean' ? tmp.hideVisitedRaids : false; tmp.hideVisitedRaidsInRaidList = typeof tmp.hideVisitedRaidsInRaidList == 'boolean' ? tmp.hideVisitedRaidsInRaidList : false; tmp.markMyRaidsVisted = typeof tmp.markMyRaidsVisted == 'boolean' ? tmp.markMyRaidsVisted : false; tmp.markImportedVisited = typeof tmp.markImportedVisited == 'boolean' ? tmp.markImportedVisited : false; tmp.FPXLandOwnedCount = typeof tmp.FPXLandOwnedCount == 'object' ? tmp.FPXLandOwnedCount : [0, 0, 0, 0, 0, 0, 0, 0, 0]; tmp.prettyPost = typeof tmp.prettyPost == 'boolean' ? tmp.prettyPost : false; tmp.useMaxRaidCount = typeof tmp.useMaxRaidCount == 'boolean' ? tmp.useMaxRaidCount : false; tmp.maxRaidCount = !(typeof tmp.maxRaidCount === 'undefined') ? tmp.maxRaidCount : 3000; tmp.autoImportPaste = typeof tmp.autoImportPaste == 'boolean' ? tmp.autoImportPaste : false; tmp.confirmForLargePaste = typeof tmp.confirmForLargePaste == 'boolean' && tmp.confirmPasteSize ? tmp.confirmForLargePaste : false; tmp.confirmPasteSize = typeof tmp.confirmPasteSize == 'number' ? tmp.confirmPasteSize : 1000; tmp.showStatusOverlay = typeof tmp.showStatusOverlay == 'boolean' ? tmp.showStatusOverlay : false; tmp.confirmDeletes = typeof tmp.confirmDeletes == 'boolean' ? tmp.confirmDeletes : true; tmp.autoPostPaste = typeof tmp.autoPostPaste == 'boolean' ? tmp.autoPostPaste : false; tmp.whisperTo = typeof tmp.whisperTo == 'string' ? tmp.whisperTo : ''; tmp.formatLinkOutput = typeof tmp.formatLinkOutput == 'boolean' ? tmp.formatLinkOutput : false; tmp.linkShowFs = typeof tmp.linkShowFs == 'boolean' ? tmp.linkShowFs : false; tmp.linkShowAp = typeof tmp.linkShowAp == 'boolean' ? tmp.linkShowAp : false; tmp.unvisitedRaidPruningMode = typeof tmp.unvisitedRaidPruningMode == 'number' ? tmp.unvisitedRaidPruningMode : 1; tmp.selectedRaids = typeof tmp.selectedRaids == 'string' ? tmp.selectedRaids : ''; tmp.pastebinUrl = typeof tmp.pastebinUrl == 'string' ? tmp.pastebinUrl : ''; tmp.bckColor = typeof tmp.bckColor == 'string' ? tmp.bckColor : 'fff'; tmp.lastImported = typeof tmp.lastImported == 'number' ? tmp.lastImported : ((new Date).getTime() - 1728000000); tmp.hideKongForum = typeof tmp.hideKongForum == 'boolean' ? tmp.hideKongForum : false; tmp.hideGameDetails = typeof tmp.hideGameDetails == 'boolean' ? tmp.hideGameDetails : false; tmp.hideGameTitle = typeof tmp.hideGameTitle == 'boolean' ? tmp.hideGameTitle : true; tmp.chatFilterString = typeof tmp.chatFilterString == 'string' ? tmp.chatFilterString : ''; tmp.filterSearchStringC = typeof tmp.filterSearchStringC == 'string' ? tmp.filterSearchStringC : ''; tmp.chatSize = ty