-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTorn_City_Mosh_Mods.user.js
20 lines (18 loc) · 16 KB
/
Torn_City_Mosh_Mods.user.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// ==UserScript==
// @name TornCity - Easy Mode
// @namespace mosh.mage
// @version 0.1.2
// @description Tweaks to Torn City game
// @author moshmage
// @match https://www.torn.com/*
// @match http://www.torn.com/*
// @grant none
// @downloadURL http://github.com/moshmage/tc-easymode/raw/master/Torn_City_Mosh_Mods.user.js
// ==/UserScript==
function localParse(a){var b=localStorage.getItem(a);return b=b?JSON.parse(b):JSON.parse("{}")}function localWrite(a,b){localStorage.setItem(a,JSON.stringify(b))}function isModuleInStorage(a){var b=localParse(DB_NAMES.options);return b&&b[a]?b[a]:!1}function isModuleEnabled(a){var b=localParse(DB_NAMES.options);return b?b[a]:!1}function toggleMod(a){var b=localParse(DB_NAMES.options);b[a]=!b[a],localWrite(DB_NAMES.options,b)}function newModuleToConf(a){var b=localParse(DB_NAMES.options);b[a]=!1,localWrite(DB_NAMES.options,b)}function addGlobalStyle(a){var b,c;b=document.getElementsByTagName("head")[0],b&&(c=document.createElement("style"),c.type="text/css",c.innerHTML=a,b.appendChild(c))}window.tcEasyMode={};var loadTrying=new Array,DB_NAMES={options:"tc-easyMode-options",bookmarks:"tc-easyMode-bookmarks",playersList:"tc-em-bplayerlist",travelrunData:"tc-em-travelrun"},GLOBAL_CONFIG={maximum:{loadTry:5}},tcEasyMode=window.tcEasyMode;tcEasyMode.modules={},tcEasyMode.init=function(){"use strict";function a(b){var c=tcEasyMode.modules[b];c.isPresent()&&!c.loaded?(c.loaded=!0,c.initMod(),loadTrying[b]=5):loadTrying[b]&&(setTimeout(function(){a(b)},1e3),loadTrying[b]--)}function b(){var b,c,d,e=Object.keys(tcEasyMode.modules).length;console.log("tc-em: Found",e,"module(s)");for(c in tcEasyMode.modules)b=tcEasyMode.modules[c],b.loaded=!1,d=b.isLocation()&&isModuleEnabled(b.code),console.log("tc-em: Loading",b.name,"...",d,"isLocation:",b.isLocation(),"isModuleEnabled:",isModuleEnabled(b.code)),d&&(loadTrying[c]=GLOBAL_CONFIG.maximum.loadTry,setTimeout(a(c),1e3))}var c={name:"Options",code:"options",description:"Enable/Disable Modules",enabled:isModuleEnabled("options"),isLocation:function(){return!0},isPresent:function(){var a=jQuery("#settings");return jQuery(".tcem").length?!1:a.length?!0:!1},createHtml:function(a){var b=jQuery('<div class="clearfix prettyradio labelright blue" style="display: block"></div>'),c=a.enabled?'checked="checked"':"",d=a.enabled?'class="checked"':"";b.append('<input type="radio" name="tcmmOpt_'+a.code+'" id="'+a.code+'" value="" style="display: none;" '+c+'><a href="#" role="radio" '+d+' aria-checked="false" aria-disabled="false" title="'+a.description+'"></a><label for="'+a.code+'" class="" title="'+a.description+'">'+a.name+"</label>"),jQuery(".tcem").append(b),jQuery("#"+a.code).on("click",function(){isModuleEnabled(jQuery(this).attr("id"))?($("input",jQuery(this).parent()).removeAttr("checked"),$("a",jQuery(this).parent()).removeClass("checked")):($("input",jQuery(this).parent()).attr("checked","checked"),$("a",jQuery(this).parent()).addClass("checked")),toggleMod(jQuery(this).attr("id"))})},initMod:function(){var a,b,c=$('<div class="chat-init has-pretty-child tcem"></div>');addGlobalStyle(".tcem .github-links {display:inline-block; float:right; color: black;}"),addGlobalStyle(".tcem .github-links a {color: #069;}"),addGlobalStyle(".tcem .github-links a:hover,.tcem .t-blue a:hover {color: #999;}"),c.append('<div class="t-blue bold"><a target="_blank" href="https://github.com/moshmage/tc-easymode">TC Easy Mode</a><div class="github-links"><a target="_blank" href="https://github.com/moshmage/tc-easymode/issues">Feedback</a></div></div>'),$("#settings .chat-box-content").append(c);for(b in tcEasyMode.modules)a=tcEasyMode.modules[b],isModuleInStorage(a.code)||newModuleToConf(a.code),this.createHtml({code:a.code,enabled:a.enabled,name:a.name,description:a.description})}};return{initModules:b,modulesController:c}},tcEasyMode.modules.autoClick={name:"Several automatic clicks",code:"autoClick",description:"Auto clicks 'yes' when buying from market and bazaar",enabled:isModuleEnabled("autoClick"),onHashChange:!0,clicks:[{self:".buy",combo:[".yes-buy"],locale:[location.href.match(/#\/p=shop/)]},{self:"p.act span.buy",combo:[".yes"],closest:".buy-act",locale:[location.href.match(/bazaar\.php#\/p=bazaar&userID=\d+/g)]}],isLocation:function(){try{this.clicks.forEach(function(a){a.locale.forEach(function(b,c){if(b)throw{string:a.combo[c],locale:c}})})}catch(a){return!0}return!1},isPresent:function(){return!0},initMod:function(){var a,b,c;this.clicks.forEach(function(d){c=$(d.self),c.length>0&&$(d.self).on("click",function(){a=$(this),setTimeout(function(){d.combo.forEach(function(c){b=d.closest?$(c,a.closest(d.closest)):$(c),b.length>0&&b.click()})},500)})})},destroy:function(){return!0}},tcEasyMode.modules.bookmarkPlayer={name:"Bookmark Players",code:"bookmarkPlayer",description:"Create a list of players that are neither friends nor foe",enabled:isModuleEnabled("bookmarkPlayer"),onHashChange:!0,isLocation:function(){return location.href.match(/profiles.php\?XID=(\d+)/)&&(addGlobalStyle(".action-icon-tcem-add[data-bookm] a { background: url('http://cdn.www.torn.com/images/citymap/marker_icon/m/0/1.png') center center no-repeat; !important }"),addGlobalStyle(".action-icon-tcem-add[data-bookm] a:hover { background: url('http://cdn.www.torn.com/images/citymap/marker_icon/m/0/2.png') center center no-repeat; !important }"),addGlobalStyle(".action-icon-tcem-remove[data-bookm] a { background: url('http://cdn.www.torn.com/images/citymap/marker_icon/m/3/1.png') center center no-repeat; !important }"),addGlobalStyle(".action-icon-tcem-remove[data-bookm] a:hover { background: url('http://cdn.www.torn.com/images/citymap/marker_icon/m/3/2.png') center center no-repeat; !important }")),jQuery(".m-lists").length>0},isPresent:function(){return!0},withPlayerProfile:function(a,b){var c,d={},e=localParse(DB_NAMES.playersList),f=jQuery("ul.action-list"),g=e[a];d.profileListElemnt='<li class="action-icon-tcem-;action;" data-bookm=";action;"><a title=";description;" href="#" data-id=";pid;"></a></li>',d.profileListElemnt=d.profileListElemnt.replace(/;pid;/g,a),g?d.profileListElemnt=d.profileListElemnt.replace(/;action;/g,"remove").replace(/;description;/g,"Remove this person from regulars list"):d.profileListElemnt=d.profileListElemnt.replace(/;action;/g,"add").replace(/;description;/g,"Add this person to regulars list"),c=jQuery(d.profileListElemnt),f.append(c),c.on("click",function(){var c=localParse(DB_NAMES.playersList),d=jQuery(this),e="remove"!==d.attr("data-bookm");!e&&c[a]?delete c[a]:e&&(c[a]=b),localWrite("tc-em-bplayerlist",c),window.location.reload()})},initMod:function(){var a,b,c,d={},e={},f=location.href.match(/profiles.php\?XID=(\d+)/);if(d.wrapper='<li class="m-additional tcem-bookm-player"></li>',d.bookmarkMenu='<div class="list-link lists"><a href="#"><i class="left"></i><span class="border-l"></span><span class="border-r"></span><span class="list-link-name lists left">Players</span></a><i class="arrow-left right"></i><div class="list-link-value right"></div><i class=""></i><div class="clear"></div></div>',d.playerList='<div id="scrollbar3" class="listy"><div class="scrollbar disable" style="height: 28px;"><div class="track" style="height: 28px;"><div class="thumb" style="top: 0px; height: 28px;"><div class="end"></div></div></div></div><div class="viewport"><div class="friends overview list-flexslider" style="top: 0px;"><ul class="list-slides"><li class="slide"><ul class="list-of-people"></ul></li></ul></div></div></div>',d.playerLine='<li class="online"><div class="time right"></div><a class="" href="/profiles.php?XID=;pid;">;name;</a></li>',e.wrapper=jQuery(d.wrapper),e.bookmarkMenu=jQuery(d.bookmarkMenu),e.playerList=jQuery(d.playerList),e.wrapper.append(e.bookmarkMenu),e.wrapper.append(e.playerList),$(".m-lists #lists").append(e.wrapper),e.wrapper=$(".tcem-bookm-player"),$(".list-link.lists",e.wrapper).on("click",function(){var a=jQuery(this);a.siblings(".listy").andSelf().toggleClass("list-active"),a.hasClass("empty")||a.tinyscrollbar({scroll:!0})}),f&&(b=$("a.user.name img").attr("title").replace(/\s\[\d+\]/g,""),c=f[1],this.withPlayerProfile(c,b)),a=localParse(DB_NAMES.playersList)){$(".list-link-value",e.wrapper).text(Object.keys(a).length),d.playersLine="";for(c in a)d.playersLine+=d.playerLine.replace(";pid;",c).replace(";name;",a[c]);$("ul.list-of-people",e.wrapper).append(d.playersLine)}else $(".list-link.lists",e.wrapper).toggleClass("empty")},destroy:function(){$(".tcem-bookm-player").remove()}},tcEasyMode.modules.findItemsMap={name:"Find items in Map",code:"findItemsMap",description:".. It auto-clicks the damned thing.",enabled:isModuleEnabled("findItemsMap"),isLocation:function(){return!!location.href.match(/city\.php/)},isPresent:function(){return $("[aria-label]:hidden").length||!1},initMod:function(){var a;$(".map-cont hr").before($('<div class="title-black m-top10 top-round" role="heading" aria-level="5">Items found! :)</div><div class="cont-gray10 bottom-round tc-em-items-found" ></div>')),a=$(".tc-em-items-found"),$("[aria-label]:hidden").each(function(b,c){c.attr("src",c.attr("src").replace(/hover=0/,"hover=1")),a.append($("<span>"+c.attr("aria-label")+"</span>")),c.click()})}},tcEasyMode.modules.fromListingToMarket={name:"Listing: Links & Icons",code:"fromListingToMarket",description:"Adds search and graph links to listing",enabled:isModuleEnabled("fromListingToMarket"),onHashChange:!0,isLocation:function(){return location.href.match(/#\/p=addl(.+)?/)?!0:!1},isPresent:function(){return jQuery(".desc .name").length>0},initMod:function(){var a,b,c,d=$(".desc .name");d.each(function(){b=jQuery(this),a=b.text(),c=jQuery(".cost [data-id]",b.closest("li")).attr("data-id"),b.parent().append('<a target="_blank" href="imarket.php#/p=shop&step=shop&type=&searchname='+a+'"><span class="icon-wrap right" style="padding-right:10px"><i class="trades-icon"></i></span></a>'),b.parent().append('<span class="view-details view-icon t-blue right c-pointer" loaded="0" href="imarket.php?step=getiteminfo" style="margin-top: 5px;"></span>'),b.closest("li").append('<div class="details-wrap"><div class="item-cont"><img src="/images/v2/main/ajax-loader.gif?v=1426075403940" class="ajax-placeholder left m-top10 m-bottom10"><div class="clear"></div></div></div>'),b.closest("li").attr("itemID",c),b.closest("li").attr("loaded","0"),jQuery(".view-details",b.closest("li")).on("click",function(a){a.preventDefault(),jQuery(".details-wrap").hide();var b=$(this).closest("li"),c=b.attr("itemID"),d=$(".details-wrap",$(this).closest("li"));"0"===b.attr("loaded")?getAction({type:"post",action:"imarket.php?step=getiteminfo",data:{step:"getiteminfo",itemID:c},success:function(a){var c=JSON.parse(a),e=Handlebars.compile($("#main-iteminfo-template-wrap").html())(c);d.empty().append(e),b.attr("loaded",1),itemInfoHandler(d),d.show(),$(".desc",d).css({width:"initial",border:"none"}),$(".item-desc-wrap",d).hide(),d.attr("open","1")}}):setTimeout(function(){d.attr("open")?(d.hide(),d.removeAttr("open")):(d.show(),d.attr("open","1"))},300)})}),jQuery(".details-wrap").hide()}},tcEasyMode.modules.listMarketButton={name:"Listing: Add bulk items",code:"listMarketButton",description:"One-click un-stack while adding items to your market Listing",enabled:isModuleEnabled("listMarketButton"),isLocation:function(){return location.href.match(/#\/p=addl(.+)?/)?!0:!1},isPresent:function(){return $(".add").length>0},initMod:function(){var a=0;$(".add").on("click","#item-market-main-wrap",function(){var b=$(".available",$(this).parent()).attr("data-def");b>a?(a++,$(this).click()):a=0})}},tcEasyMode.modules.oneClickBuy={name:"One click buy",code:"oneClickBuy",description:"Adds a button to buy one item from anyones' bazaar",enabled:isModuleEnabled("oneClickBuy"),onHashChange:!0,isLocation:function(){return!!location.href.match(/bazaar\.php/)},isPresent:function(){return $("[aria-label]:hidden").length>0},initMod:function(){var a=$('<span class="tc-em oneClickBuy">buy one</span>'),b=$(".items-list .desc .stock");addGlobalStyle(".tc-em.oneClickBuy { cursor: pointer; }"),a.appendTo(b),$(".oneClickBuy").on("click",function(){$(".yes",$(this).closest("li")).click()})}},tcEasyMode.modules.travelrunData={name:"Travel Run Community",code:"travelrunData",description:"Retrieves and updates travel run at TornCentral",enabled:isModuleEnabled("bookmarkPlayer"),isPresent:function(){return!0},isLocation:function(){return jQuery(".travel-home").length>0||$(".travel-map").length>0||$(".travel-agency-travelling").length>0},updateTravelrun:function(a){var b,c,d=d||2,e=10,f=$(".users-list:visible"),g=$(".user-info:visible"),h=new Date,i=localParse(DB_NAMES.travelrunData);i.timestamp||(i={timestamp:h.getTime()-60*e*1e3}),b=h.getTime()-i.timestamp>=60*e*1e3,f.length&&(console.log("tc-em: Updating travelrun",b,"last",i.timestamp,"now",h.getTime()),b&&(c=g.text()+""+f.text(),c=c.replace(/\s+/g," "),$.post("http://travelrun.mosh.codes/travelrun.php",{update:c,pid:a}).done(function(a){var b=$(".content-title"),c="";if(a.match(/Redirected/i)||a.match(/Congratulations/i)){if(i.timestamp=h.getTime(),localWrite("tc-em-travelrun",i),a.match(/Congratulations/i)){a=$(a);var e=$("pre",a).text(),f=$("h3 a",a).href();c='<br/><h5>You won a prize!</h5>Send a message to <a href="'+f+'">ebcdic</a> containing: '+e}$("h4",b).html("Travelrun updated :)",c)}else--d&&($("h4",b).html("Failed to update travelrun <button>retry</button>"),$("h4 button",b).on("click",function(){$("h4 button",b).off("click"),tcEasyMode.modules.travelrunData().initMod()}))})))},requestTravelrun:function(a,b){var c,d,e=!1,f=$('<div class="info-msg-cont border-round m-top10 tc-em-traveldata hide"><div class="info-msg border-round"><i class="info-icon"></i><div class="delimiter"><div class="msg right-round">Requesting Travel Run data...</div></div></div></div><hr class="page-head-delimiter m-top10 m-bottom10">'),g="http://travelrun.mosh.codes/travelrun.php",h=$('<div class="itemdata cont-gray bottom-round"></div>'),i={"south-africa":"z",uae:"e",china:"x",japan:"j",switzerland:"s",argentina:"a",uk:"u",hawaii:"h",canada:"c",cayman:"i",mexico:"m"},j=function(a,b){var c;$.get(g+"?c="+b+"&pid="+a,function(a){var b,e,f=$(".content-wrapper"),g=$(".itemdata",f);d=$(this).attr("data-race"),c=$(".tc-em-traveldata .msg"),c.text("Requesting Travel Run data..."),$(".tc-em-traveldata").removeClass("hide"),a=$(a),b=$("table",a),$("tr:first-child",b).addClass("title-black"),e=a.clone().children().remove().html().replace(/[()]/g,""),c.text("Last update: "+e),g.length>0?$("table",g).html(b):(h.append(b),f.append(h))})};b?($(".travel-agency-travelling").append(f),d=$(document.querySelector(".header.msg").classList).eq(-1)[0],c=i[d],j(a,c)):($(".content-wrapper").append(f),$(".travel-agency").on("click","[data-race]",function(b){b.preventDefault(),e||(e=!0,d=$(this).attr("data-race"),c=i[d],j(a,c))}))},initMod:function(){addGlobalStyle(".itemdata table {margin-top: 10px;}"),addGlobalStyle(".itemdata table th,.itemdata table td {vertical-align:middle;}"),addGlobalStyle(".itemdata table tr {border-bottom: 1px solid rgba(0,0,0,0.5);}"),addGlobalStyle(".itemdata table tr:last-child {border-bottom: none;");var a,b=jQuery(".travel-map").length>0||$(".travel-agency-travelling").length>0?"retrieve":"update",c=$(".travel-agency-travelling .inner-popup").length>0,d=$(".info-name a");d=d.length>0?d.attr("href").match(/(\d+)/g)[0]:localParse(DB_NAMES.travelrunData).pid,d||(d="#"),"#"!==d&&localParse(DB_NAMES.travelrunData).pid!==d&&localParse(DB_NAMES.travelrunData).pid&&(a=localParse(DB_NAMES.travelrunData),a.pid=d,localWrite(DB_NAMES.travelrunData,a)),"retrieve"===b?this.requestTravelrun(d,c):this.updateTravelrun(d)}},jQuery(window).on("hashchange",function(){var a,b,c={};for(a in tcEasyMode.modules)c=tcEasyMode.modules[a],c.loaded=!1,b=c.isLocation()&&isModuleEnabled(c.code)&&c.onHashChange,console.log("tc-em: re-Loading",c.name,"...",b,"isLocation:",c.isLocation(),"isModuleEnabled:",isModuleEnabled(c.code)),b&&(c.destroy&&c.destroy(),setTimeout(function(){tcEasyMode.modules[a].initMod(),c.loaded=!0},300))}),setTimeout(function(){tcEasyMode.init().initModules(),tcEasyMode.init().modulesController.initMod()},300);
/*
* tc-easymode
* v0.1.2
* 2015-07-26
*/
console.log("TC - Easy Mode v0.1.2");