// ==UserScript== // @name NicerKongregate // @namespace http://www.brainassassin.com/ // @description Makes Kongregate a nicer place (removes a few ads and re-arranges stuff). // @include http://www.kongregate.com/ // @include http://www.kongregate.com/game* // @include http://www.kongregate.com/forums* // @include http://www.kongregate.com/badges* // @include http://www.kongregate.com/*-games* // @include http://www.kongregate.com/collabs* // @include http://www.kongregate.com/games/*/* // @include http://www.kongregate.com/accounts/* // @include http://www.kongregate.com/my_favorites* // @include http://www.kongregate.com/badge_quests/* // @include http://www.kongregate.com/announcements* // @include http://www.kongregate.com/accounts/leaders* // @include http://www.kongregate.com/accounts/*/fans* // @include http://www.kongregate.com/accounts/*/friends* // @include http://www.kongregate.com/accounts/*/rewards* // @include http://www.kongregate.com/accounts/*/favorites // @require http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js // @version 1.1.1 // @downloadURL https://update.greasyfork.icu/scripts/17763/NicerKongregate.user.js // @updateURL https://update.greasyfork.icu/scripts/17763/NicerKongregate.meta.js // ==/UserScript== var badgeCache = {}; var sPrefix = "Kongregate.com | "; var css = "#category .category_badges_listing {background-color:#CCCCCC;} \ #category .badge_row {background-color:#FFD8D8;} \ #category .badge_completed {background-color:#E8FFD8;} \ DIV.adcontainer {display:none;} \ #category .badges_set1 {width:auto;} \ #category .badges_set1 .badge_row {float:left;} \ #category .category_listing_header {min-height:29px; padding:0 6px;} \ #category .category_listing_header h1 {padding:4px 0 0 1px; margin:0;} \ #filter_by {width:100px !important;} \ #sort_order {width:140px !important;} \ #category .category_listing_header select {height:17px;} \ #feature .homepageads, .horizontal_ad, .adspacer, #primarywrap div[id$='-ad-slot'], .adcontainer {display:none !important;} \ .badge_difficulty {-moz-border-radius:8px 8px 8px 8px; float:right; height:13px; left:31px; position:absolute; top:31px; width:13px;} \ .badge_EASY, .badge_MEDI, .badge_HARD, .badge_IMPO {-moz-border-radius:8px 8px 8px 8px; float:right; height:13px; left:31px; position:absolute; top:31px; width:13px; background:none no-repeat scroll 0 0 #990000;} \ .badge_EASY {background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAOwwAADsMBx2+oZAAAABl0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuNUmK/OAAAAA8SURBVChTY5zJwPCfgVQA0kQqZkDW8B8PQFaHVRMhmwdYE7rX0J07wM4jK/SwRRfOeCJkA0weJSCI1QQAHchGyXwV0W0AAAAASUVORK5CYII=');} \ .badge_MEDI {background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAOwwAADsMBx2+oZAAAABl0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuNUmK/OAAAABtSURBVChTY5zJwPCfgVQA0kQqZkDW8B8K9kREgA06mJoKE0IxGKumq9OngxWBaBhANhyrJpDCpXJycA0gBkFNx4uL/8Mw0TZtdnICq93u60u881aoqYEVr9bXJ14TthAl6CfaayI2ZaDEE7GaAMP4ZCfVTVDwAAAAAElFTkSuQmCC');} \ .badge_HARD {background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAOwwAADsMBx2+oZAAAABl0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuNUmK/OAAAAAySURBVChTY5zJwPCfgVQA0kQqZkDW8B8KCIkNRU0wvyHTyP4cin4iKZ6ITRkoAUGsJgBsoFeFJkDXCAAAAABJRU5ErkJggg==');} \ .badge_IMPO {background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAOwwAADsMBx2+oZAAAABl0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuNUmK/OAAAAA2SURBVChTY5zJwPCfgVQA0kQqZkDX8B8HQFaHoQkmCdOLzRWjmqDRQ52AoCie8KUSnM7DpwkAE6s4cbWZc84AAAAASUVORK5CYII=');} \ .badgeInfo {position:absolute; border:thin solid black; width:91px; height:13px; background-color:red; color:#ffffff; font:0.9em 'Lucida Grande',Verdana,Arial,Sans-serif;} \ .notBadginated, .badginated {border:1px solid #000000; height:13px; left:0; position:relative; top:0; width:13px;} \ .badginated {background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwQAADsEBuJFr7QAAABl0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuNtCDrVoAAABOSURBVChTY1SrZ/jPQCoAaSIVM5CqAewymCavKdr/8YG5R3vhLsKqCWQAzLCEha5ws2Bi1NOE7kxkp+H008A5D+RcrKFHSnxRFrmk2AQAm4Bgs3hq5XkAAAAASUVORK5CYII=') no-repeat scroll 0 0 #267F00;} \ .notBadginated {background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwgAADsIBFShKgAAAABl0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuNtCDrVoAAABOSURBVChTY5zJwPCfgVQA0kQqZiBVA9hlME2rtLX/4wMXe3vhLsKqCWQAzLAtrq5ws2Bi1NOE7kxkp+H008A5D+RcrKFHSnxRFrmk2AQAPXxbUD16cWwAAAAASUVORK5CYII=') no-repeat scroll 0 0 #990000;}"; String.prototype.trim = function(){ var str = this.replace(/^\s\s*/, ''), ws = /\s/, i = str.length; while (ws.test(str.charAt(--i))); return str.slice(0, i + 1); }; String.prototype.capitalize = function(){ return this.replace(/(^|\s)([a-z])/g, function(m,p1,p2) { return p1+p2.toUpperCase(); }); }; function improveHistory() { css += "\ntable[class='rewards'] thead tr:first-of-type {background-color:#990000; color:#ffffff; font-variant:small-caps; font-family:verdana,arial,sans-serif;} \ body#report #secondary ul.pagination {margin:0;} \ #report.mypoints #subwrap {padding:15px 0 0 0;} \ #primarywrap {padding:0 0 15px 0;}"; $('#secondary').find('table.rewards tr.summary').insertBefore('table.rewards tr.even:first-of-type'); } // remove emty URLS (url = "http://") function improveLeaders() { css += "\ntable[class='leaders'] thead tr:first-of-type {background-color:#990000; color:#ffffff; font-variant:small-caps; font-family:verdana,arial,sans-serif;} \n" + "#subwrap {padding:15px 0 0 0;}"; $('table.leaders a[href="http://"]').replaceWith(function() { return this.innerHTML; }); } // rearrange quick-pick and leaderboards function improveMain() { css += "\n#leaderboards .tabset td {padding:3px 0;} \ #leaderboards .freightheader {margin-top:0;} \ #leaderboards {float:left; margin-left:10px;} \ #leaderboards p.challenge_padding {text-align:right;} \ #leaderboards .spritehome {background-image:url('data:image/png;base64,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');} \ #home #leaderboards h2 a {background-position:0 0; margin-bottom:7px;} \ #quick-pick-container {margin-bottom:18px; margin-left:10px; width:281px;} \ dl.tabset dt.dormant a {height:25px;} \ dl.tabset dt.active a {height:27px;}"; $("#primarywrap").removeAttr("style"); $('#quick-pick-container').insertAfter($('#featuredgame')); $('#leaderboards').insertAfter($('#quick-pick-container')); checkForBadges('#secondary'); $('#update-button').find('a.spritehome.spriteall').bind('click', function() { var t = setTimeout(expandLink, 1300); }); } function expandLink() { var $url = $('#random_game').find('a:first'); if ($url.length) { if ($url.text().trim().indexOf("...") > -1) { var linkText = $url.get(0).pathname; linkText = linkText.substring(linkText.lastIndexOf("/") + 1).replace(/\-/g, " "); $url.text(linkText.capitalize()); } } }; // remove "Play:" from game title // remove "Scores" from floating_game_holder header // remove background from #primarywrap function improveGames() { var $header = $('#gamepage_header h1'); css += "\n#gamepage_header {height:60px;} \ body#play #gamepage_header {height:40px;} \ body#play #gamepage_header h1 {width:auto; height:25px;} \ #gamepage_header .game_title {display:block;font-size:1.5em;font-weight:bold;}"; if ($header.length) { $header.find('.game_title').insertBefore($header); $header.remove(); $('#quicklinks').find('li.scores').remove(); checkForBadges('#recommendedgames'); } $('#primarywrap').css('background', 'none'); } // add icons displaying difficulty to the badge icons // preserve sort order & filter function improveBadges() { $('.badge_border', '#feature div.category_badges_listing').each(function() { var badge = getBadgeIcon($(this).parents('.badge_row').attr('title')); $('
').appendTo($(this)); }); $('#browser_sidebar ul>li>a').click(function () { var filter = $('#filter_by option:selected').attr('value'), sortOrder = $('#sort_order option:selected').attr('value'); // preserve sort order this.href += ((this.search!=""?"&":"?") + "sort=" + sortOrder); if (filter != "all") { // preserve filter if ($(this).parents('.browser_gamegroups').length == 0) this.href += "&filter_by=" + filter; } }); } // add icons displaying difficulty to the badge icons on the profile page function improveProfileBadges() { $('span.complete', '#achievements > .badge_list .badge_border').each(function() { var moText = $(this).attr("onMouseover").toString(); var pattern = /(userbadges-[0-9]+_details)/; if (moText.match(pattern)) { var badge = getBadgeIcon($('#' + RegExp.$1 + ' .bd > .badge_name').text()); $('').prependTo(this.parentNode); } }); } function getBadgeIcon(elmText) { var badge = ""; if (elmText.search(/easy/i) > -1) badge = "badge_EASY"; else if (elmText.search(/medium/i) > -1) badge = "badge_MEDI"; else if (elmText.search(/hard/i) > -1) badge = "badge_HARD"; else if (elmText.search(/impossible/i) > -1) badge = "badge_IMPO"; return badge; } function setDocTitle(sTitle) { var sNewTitle = sPrefix, tmp; if (sTitle == "/") sNewTitle = sNewTitle.substring(0, 14); else if (sTitle.indexOf("/badges") > -1) { tmp = $('#browser_sidebar ul li.active a.browser_sprite').text(); if (tmp == $('#browser_sidebar ul li:first a.browser_sprite').text()) sNewTitle += tmp; else sNewTitle += tmp + " Badges"; } else if (sTitle.indexOf("/card_album") > -1) sNewTitle += "Card Album"; else if (sTitle.indexOf("/current_challenges") > -1) sNewTitle += "Current Challenges"; else if (sTitle.indexOf("/games/") > -1) sNewTitle += $('#gamepage_header .game_title').text(); else if (sTitle.indexOf("/games") > -1 || sTitle.indexOf("-games") > -1 || sTitle.indexOf("/my_favorites") > -1 || sTitle.indexOf("/game_groups/") > -1) sNewTitle += $('#browser_sidebar ul li.active a.browser_sprite').text(); else if (sTitle.indexOf("/forums") > -1) sNewTitle += "Forums"; else if (sTitle.indexOf("/accounts/") > -1) { if (sTitle.indexOf("/friends") > -1) sNewTitle += "My Friends"; else if (sTitle.indexOf("/fans") > -1) sNewTitle += "My Fans"; else if (sTitle.indexOf("/rewards") > -1) sNewTitle += "My Points"; else if (sTitle.indexOf("/leaders") > -1) sNewTitle += "Point Leaders"; } else if (sTitle.indexOf("/collabs") > -1) sNewTitle += "Art & Sound"; document.title = sNewTitle; } function prepSite() { var path = location.pathname.toLowerCase().trim(); if (path == "/") improveMain(); else if (path == "/accounts/leaders") improveLeaders(); else if (path.indexOf("/accounts/") > -1 && path.indexOf("/rewards") > -1) improveHistory(); else if (path.indexOf("/accounts/") > -1 && path.indexOf("/favorites") > -1) checkForBadges('#feature'); else if (path.indexOf("/accounts/") > -1) improveProfileBadges(); else if (path.indexOf("/badge") > -1) improveBadges(); else if (path.indexOf("/games/") > -1) improveGames(); else { if (path.indexOf("games") > -1 || path.indexOf("my_favorites") > -1 || path.indexOf("/game_groups/") > -1) { checkForBadges('#feature'); } } setDocTitle(location.pathname.toLowerCase()); } // assign mouseover functions function checkForBadges(context) { var $games = $(context).find('div.game.media'); if ($games.length) $games.bind('mouseover', hasBadges); } // check whether a game has badges or not function hasBadges() { var $me = $(this), URI = $me.find('a:first').get(0); if (badgeCache[URI]) return; badgeCache[URI] = 1; var $badgeInfo = $('').text('checking badges...').appendTo($me.find('dl.thumb dt')); GM_xmlhttpRequest({ method: 'GET', url: URI, onload: function(responseDetails) { if (responseDetails.readyState == 4 && responseDetails.status == 200) { var pattern = /achievements_tab/; var hasAchievements = pattern.test(responseDetails.responseText); $badgeInfo.removeClass('badgeInfo').addClass(hasAchievements ? 'badginated' : 'notBadginated').text(""); } } }); } function addNewStyle(myStyle) { if (typeof GM_addStyle != "undefined") { GM_addStyle(myStyle); } else if (typeof addStyle != "undefined") { addStyle(myStyle); } else { var heads = document.getElementsByTagName("head"); if (heads.length > 0) { var node = document.createElement("style"); node.type = "text/css"; node.appendChild(document.createTextNode(myStyle)); heads[0].appendChild(node); } } } if (unsafeWindow.top == unsafeWindow.self) { prepSite(); addNewStyle(css); }