NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name rulesy // @version 1.0.9 // @author Rulesy - rjdown@gmail.com // @namespace rulesy-die2nite // @grant GM_xmlhttpRequest // @grant GM_getResourceText // @grant GM_info // @include http://www.die2nite.com/* // @include http*://die2nite.gamerz.org.uk/gm/test.html // @downloadURL https://die2nite.gamerz.org.uk/gm/Die2Nite_tools.user.js // @updateURL https://die2nite.gamerz.org.uk/gm/Die2Nite_tools.user.js // @require http://die2nite.gamerz.org.uk/gm/jquery.js // @require http://die2nite.gamerz.org.uk/gm/jquery-ui.js // @require http://die2nite.gamerz.org.uk/gm/farbtastic.js // @require http://die2nite.gamerz.org.uk/gm/app.js // @require http://die2nite.gamerz.org.uk/gm/mod_updateApps.js // @require http://die2nite.gamerz.org.uk/gm/mod_scavengerCountdown.js // @require http://die2nite.gamerz.org.uk/gm/mod_flashingEscortButton.js // @require http://die2nite.gamerz.org.uk/gm/mod_ghoulHungerPercentages.js // @require http://die2nite.gamerz.org.uk/gm/mod_devtools.js // @resource style.css http://die2nite.gamerz.org.uk/gm/style.css // @copyright 2018, hiZEN (https://openuserjs.org//users/hiZEN) // @license MIT // ==/UserScript== // @todo names alone are not enough to identify some items. need to use images as well // @todo add a reset button to the flashing escort button config page // @todo stop dtd updating when camped, because topology is unavailable but required var debugMode = true; if (!debugMode) { delete modules.devtools; } window.log = function(data) { if (debugMode && this.console) { console.log(data); } }; var remoteCssUrl = 'http://die2nite.gamerz.org.uk/gm/css/'; // basic jquery mutation observer extension, fuck IE for now $.fn.domChange = function(callback) { var mutations; var mutationObserver var selector; app.mutationObservers = app.mutationObservers || {}; selector = this.selector; // kill any existing observers for this selector if (app.mutationObservers[selector]) { app.mutationObservers[selector].disconnect(); } mutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver; app.mutationObservers[selector] = new mutationObserver(function() { // run once, might need to make this a variable later... this.disconnect(); callback(); }); mutations = { attributes: true, characterData: true, childList: true } this.each(function() { app.mutationObservers[selector].observe(this, mutations); }); } // bootstrap window.setInterval(function() { if ($('#appsettings').length == 0 && window.location.hash != '') { app.settings.init(); app.init(); } }, 1000);