diff --git a/CHANGELOG.md b/CHANGELOG.md index c76b981..3d9cb73 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,14 @@ # CHANGE +## 0.7.6 + +2022年12月6日 + +### 添加 + +- 现金变动提醒 + ## 0.7.5 2022年12月6日 diff --git a/package.json b/package.json index 43e89ea..6370c44 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wuhu-torn-helper", - "version": "0.7.5", + "version": "0.7.6", "description": "芜湖助手", "dependencies": {}, "scripts": { diff --git a/release.min.user.js b/release.min.user.js index c2df7a8..59a7e3b 100644 --- a/release.min.user.js +++ b/release.min.user.js @@ -1,8 +1,8 @@ // ==UserScript== -// @lastmodified 202212061039 +// @lastmodified 202212062215 // @name 芜湖助手 // @namespace WOOH -// @version 0.7.5 +// @version 0.7.6 // @description 托恩,起飞! // @author Woohoo[2687093] Sabrina_Devil[2696209] // @match https://www.torn.com/* @@ -16,14 +16,14 @@ // @connect staticfile.org // @connect gitee.com // ==/UserScript== -!function(){"use strict";class re{static info(...e){re.counter.info++;var t=this.getTime(),n="[WH] IFO";this.debug()&&console.log(n,t,...e),this.saveLogs(n,t,...e)}static error(...e){re.counter.error++;var t=this.getTime(),n="[WH] ERR";console.error(n,t,...e),this.saveLogs(n,t,...e)}static warn(...e){re.counter.warning++;var t=this.getTime(),n="[WH] WRN";this.debug()&&console.warn(n,t,...e),this.saveLogs(n,t,...e)}static debug(){let e=!0;try{var t=JSON.parse(localStorage.getItem("wh_trans_settings"));t&&(e=t.isDev)}catch(e){}return e}static getTime(){let e=new Date;return`[${e.getFullYear()}-${("0"+(e.getMonth()+1)).slice(-2)}-${("0"+e.getDate()).slice(-2)} ${("0"+e.getHours()).slice(-2)}:${("0"+e.getMinutes()).slice(-2)}:${("0"+e.getSeconds()).slice(-2)}.${("00"+e.getMilliseconds()).slice(-3)}]`}static getLogs(){return this.logs}static saveLogs(...e){e.forEach(t=>{if("string"==typeof t)this.logs+=t;else if(null!=t){let e="{}";var n=Object.getPrototypeOf(t).constructor.name;try{e=JSON.stringify(t)}catch(e){}this.logs+=` [${n}] [${e}] `,t.message&&(this.logs+="错误信息: "+t.message),t.stack&&(this.logs+="错误堆栈: "+t.stack)}}),this.logs+="\r\n"}static getCounter(){return{info:re.counter.info,error:re.counter.error,warning:re.counter.warning}}}function y(e,r,s,l){return new(s=s||Promise)(function(n,t){function i(e){try{a(l.next(e))}catch(e){t(e)}}function o(e){try{a(l.throw(e))}catch(e){t(e)}}function a(e){var t;e.done?n(e.value):((t=e.value)instanceof s?t:new s(function(e){e(t)})).then(i,o)}a((l=l.apply(e,r||[])).next())})}re.logs="",re.counter={info:0,error:0,warning:0};class n{constructor(){this.className="Provider"}static getInstance(){var e,t;return this.instance||(e=performance.now(),this.instance=new this,t=this.instance.getClassName()||this.name,re.info("实例已创建,",t,this.instance,"耗时"+(performance.now()-e|0)+"ms"),n.pool[t]=this.instance),this.instance}static getPool(){return{pool:n.pool}}}n.pool={};class s extends n{constructor(){super(...arguments),this.className="WuhuBase"}static getLocal(){let e;var t=localStorage.getItem("wh_trans_settings")||"{}";try{e=JSON.parse(t)}catch(e){re.error("解析localStorage对象出错",e),localStorage.setItem("wh_trans_settings","{}")}return e||{}}static conditionInterrupt(){let e=document.querySelector("#skip-to-content")||document.querySelector('[href*="#skip-to-content"]')||{innerText:""};if(document.title.toLowerCase().includes("just a moment")||e.innerText.toLowerCase().includes("please validate")||null!==document.querySelector("div.container div.cf .iAmUnderAttack"))throw"芜湖"}getClassName(){return this.className}}s.glob=null;class u extends s{constructor(e,t="芜湖助手"){super(),this.className="Popup",this.container=null,this.node=null,u.glob.popup_node&&(re.info("关闭前一个弹窗"),u.glob.popup_node.close()),re.info("新建弹窗",{innerHTML:e,title:t});const n=document.createElement("div");n.id="wh-popup",n.innerHTML='\n
\n

{{}}

\n
{{}}
\n
'.replace("{{}}",t).replace("{{}}",e),document.body.append(n),n.addEventListener("click",e=>{e.stopImmediatePropagation(),e.target===n&&this.close()}),this.container=n,this.node=n.querySelector("#wh-popup-cont"),this.hideChat(),u.glob.popup_node=this}close(){this.container.remove(),this.showChat()}getElement(){return this.node}hideChat(){document.querySelector("#chatRoot").classList.add("wh-hide")}showChat(){document.querySelector("#chatRoot").classList.remove("wh-hide")}getInstance(){}}function p(){let e=new u("","传单助手").getElement(),t=(document.querySelector("#chatRoot").classList.remove("wh-hide"),document.createElement("p")),n=document.createElement("textarea"),i=document.createElement("button"),o=document.createElement("button"),a=document.createElement("button"),r=document.createElement("style");t.innerHTML="打开多个聊天框后,点击填写传单将自动粘贴文本框中的内容进入所有已打开的聊天框。页面外的聊天框同样有效。",n.placeholder="此处输入广告语",n.style.width="100%",n.style.minHeight="80px",i.innerText="填写传单",o.innerText="清空所有聊天框",a.innerText="粘贴剪切板",r.innerHTML="#chatRoot > div{z-index:199999 !important;}",i.classList.add("torn-btn"),o.classList.add("torn-btn"),a.classList.add("torn-btn"),i.addEventListener("click",()=>{let e=Array.from(document.querySelectorAll('#chatRoot textarea[name="chatbox2"]'));e.forEach(e=>e.value=n.value)}),o.addEventListener("click",()=>{let e=document.querySelectorAll('#chatRoot textarea[name="chatbox2"]');e.forEach(e=>e.value="")}),a.addEventListener("click",()=>y(this,void 0,void 0,function*(){n.focus(),n.value=yield navigator.clipboard.readText()})),e.appendChild(r),e.appendChild(t),e.appendChild(n),e.appendChild(document.createElement("br")),e.appendChild(i),e.appendChild(o),e.appendChild(a)}class m extends s{constructor(){super(...arguments),this.className="NotificationUtils",this.permission=window.Notification&&"granted"===window.Notification.permission}push(i,o={}){let a=m.glob["notifies"];if(o.sysNotify&&this.permission){let e=document.createElement("p"),t=(e.innerHTML=i,new Notification("芜湖助手",{body:re.getTime()+"\r\n"+e.innerText})),n=a.count++;(a[n]=t).addEventListener("close",()=>{a[n]=null}),t.addEventListener("click",()=>{o.sysNotifyClick&&o.sysNotifyClick(),window.focus()}),t.addEventListener("show",()=>{re.info("通知id: ",n)})}}}class g extends s{constructor(){super(...arguments),this.className="MathUtils"}getRandomInt(e,t){return e=Math.ceil(e),t=Math.floor(t),Math.floor(Math.random()*(t-e))+e}}class f extends s{constructor(){if(super(),this.className="WindowActiveState",this.isFocus=!1,this.uuid=crypto.randomUUID?crypto.randomUUID():([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,e=>(e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16)),self!==top)return null;localStorage.setItem("whuuid",this.uuid),document.addEventListener("visibilitychange",()=>"hidden"!==document.visibilityState&&localStorage.setItem("whuuid",this.uuid)),addEventListener("focus",()=>this.isFocus=!0),addEventListener("blur",()=>this.isFocus=!1)}get(){return!!this.isFocus||(!document.hidden||this.uuid===localStorage.getItem("whuuid"))}}class E extends s{constructor(e,t={}){super(),this.className="Alert",this.notify=null,this.intervalID=-1;var{timeout:n,callback:i,sysNotify:o,force:a}=t;if(!f.getInstance().get()||self!==top){if(!a)return re.warn("后台通知已被屏蔽"),null;re.info("强制后台通知")}re.info("通知的容器",E.container),E.container&&document.contains(E.container)||E.initContainer(),this.callback=i||(()=>null),E.create(this,e,n||3),E.totalCounter++,re.info("创建新通知:",this,e),o&&m.getInstance().push(e,t)}static create(e,t,n){var i=""+g.getInstance().getRandomInt(1e3,9999);const o=document.createElement("div"),a=(o.id="wh-notify-"+i,o.classList.add("wh-notify-item"),o.innerHTML='
\n
\n
\n

{{}}

\n
'.replace("{{}}",t),this.container.append(o),o.querySelector(".wh-notify-bar"));let r=!1,s=(o.addEventListener("mouseenter",()=>r=!0,!0),o.addEventListener("mouseleave",()=>r=!1),101);e.intervalID=window.setInterval(()=>{if(r)return s=101,void(a.style.width="100%");s--,a.style.width=s+"%",0===s&&e.close()},1e3*n/100),o.querySelector(".wh-notify-close").addEventListener("click",()=>e.close()),e.notify=o}static initContainer(){this.container=document.createElement("div"),this.container.id="wh-notify",document.body.append(this.container)}close(){this.notify.remove(),this.notify=null,this.callback(),window.clearInterval(this.intervalID),E.totalCounter--}getElement(){return this.notify}}E.container=null,E.totalCounter=0,(e=o=o||{}).RAW="raw",e.GM="gm",e.PDA="pda";var t,i,o,c=o,k=((e=t=t||{}).PC="pc",e.MOBILE="mobile",e.TABLET="tablet",t);class w{constructor(){this.startTime=performance.now()}getTimeMs(){return(performance.now()-this.startTime|0)+"ms"}}class h extends s{constructor(){super(...arguments),this.className="FetchUtils"}ajax(e,i){return new Promise((t,n)=>{$.ajax({method:i,url:e,success:function(e){t(e)},error:function(e){n(e)}})})}ajaxFetch(e){var{url:e,referrer:t="/",method:n,body:i=null}=e;let o={headers:{"X-Requested-With":"XMLHttpRequest"},referrer:t,method:n};return"POST"===n&&(o.headers["Content-Type"]="application/x-www-form-urlencoded; charset=UTF-8",o.body=i),window.fetch(e,o)}fetchText(e,i=null){return new Promise((t,n)=>window.fetch(e,i).then(e=>e.text()).then(e=>t(e)).catch(e=>{re.error("fetchText出错了",e),n(e)}))}getProfile(e){return new Promise((t,n)=>{this.ajaxFetch({url:window.addRFC("https://www.torn.com/profiles.php?step=getProfileData&XID="+e),method:"GET"}).then(e=>{e.json().then(e=>{t(e)}).catch(e=>{re.error("[ProfileHelper] JSON解析错误: ",e.message,"错误堆栈: ",e.stack),n(e)})}).catch(e=>{re.error("[ProfileHelper] 网络错误: ",e.message,"错误堆栈: ",e.stack),n(e)})})}}class b{constructor(e,t=!1){this.randomId=g.getInstance().getRandomInt(100,2e3),this.baseElement=document.createElement("span"),this.baseElement.id="WHSwitch"+this.randomId,this.baseElement.innerHTML=` -`,this.input=this.baseElement.querySelector("input")}getBase(){return this.baseElement}getInput(){return this.input}getHtml(){return this.baseElement.innerHTML}}class L extends s{constructor(){super(...arguments),this.className="WuhuConfig"}static get(e){let n=this.getLocal();if("string"==typeof e)return n[e];{let t=[];return e.forEach(e=>{t.push(n[e])}),t}}static set(e,t,n=!1,i=()=>null){let o=L.getLocal();var a=o[e];return o[e]=t,localStorage.setItem("wh_trans_settings",JSON.stringify(o)),n&&new E("已保存设置"),new Promise(()=>i()).then(),re.info(`值变更:[${e}] `+JSON.stringify({from:a,to:t})),t}static setDefaults(){re.info("设置默认值开始");let t=0;[{key:"transEnable",val:!1},{key:"quickCrime",val:!0},{key:"missionHint",val:!0},{key:"xmasTownWT",val:!0},{key:"xmasTownNotify",val:!0},{key:"energyAlert",val:!0},{key:"trvAlarm",val:!0},{key:"_15Alarm",val:!0},{key:"cityFinder",val:!1},{key:"SEProtect",val:!1},{key:"ptQuickBuy",val:!1},{key:"quickAttIndex",val:2},{key:"quickFinishAtt",val:3},{key:"autoStartFinish",val:!1},{key:"attRelocate",val:!0},{key:"attReload",val:6},{key:"priceWatcher",val:{xan:-1,pt:-1}},{key:"isDev",val:!1},{key:"_15AlarmTime",val:50},{key:"barsRedirect",val:!0},{key:"floatDepo",val:!0},{key:"companyRedirect",val:!0},{key:"companyBWCollapse",val:!0},{key:"removeScripts",val:!0},{key:"abroadWarning",val:!0},{key:"landedRedirect",val:""},{key:"companyDepositAnywhere",val:!1},{key:"CHTrainsDetect",val:0},{key:"CHTrainsDetectSwitch",val:!0},{key:"HideProfileImg",val:!1},{key:"ShowNameHistory",val:!0},{key:"WatchTargetFreq",val:1},{key:"HideSidebar",val:!1},{key:"HideSidebarBtn",val:!0},{key:"SearchPagePlaceholder",val:!0},{key:"SolveGoogleScriptPendingIssue",val:!1},{key:"IconPosition",val:{}},{key:"SaveIconPosition",val:!1},{key:"dangerZone",val:!1}].forEach(e=>{typeof L.get(e.key)!=typeof e.val&&(L.set(e.key,e.val),t++)}),re.info("设置默认值结束,新:"+t)}}(o=i=i||{})[o.IN_TORN=0]="IN_TORN",o[o.FLYING=1]="FLYING",o[o.ABROAD=2]="ABROAD";var S=i;class M extends s{constructor(){super(...arguments),this.className="CommonUtils"}static getScriptEngine(){var e=M.glob;return e.GM_xmlhttpRequest?c.GM:e.isPDA?c.PDA:c.RAW}static COFetch(o,a="get",r=null){const s=this.getScriptEngine();let l=performance.now();return re.info("跨域获取数据开始, 脚本引擎: "+s),new Promise((t,n)=>{switch(s){case c.RAW:re.error(`跨域请求错误:${c.RAW}环境下无法进行跨域请求`),n(`错误:${c.RAW}环境下无法进行跨域请求`);break;case c.PDA:{const{PDA_httpGet:e,PDA_httpPost:i}=window;"get"===a?("function"!=typeof e&&(re.error("COFetch网络错误:PDA版本不支持"),n("COFetch网络错误:PDA版本不支持")),e(o).then(e=>{re.info("跨域获取数据成功, 耗时"+(performance.now()-l|0)+"ms"),t(e.responseText)}).catch(e=>{re.error("COFetch网络错误",e),n("COFetch网络错误 "+e)})):("function"!=typeof i&&(re.error("COFetch网络错误:PDA版本不支持"),n("COFetch网络错误:PDA版本不支持")),i(o,{"content-type":"application/json"},r).then(e=>t(e.responseText)).catch(e=>{re.error("COFetch网络错误",e),n("COFetch网络错误 "+e)}));break}case c.GM:{let e=M.glob["GM_xmlhttpRequest"];"function"!=typeof e&&(re.error("COFetch网络错误:用户脚本扩展API错误"),n("错误:用户脚本扩展API错误")),e({method:a,url:o,data:"get"===a?null:r,headers:"get"===a?null:{"content-type":"application/json"},onload:e=>{re.info("跨域获取数据成功,耗时"+(performance.now()-l|0)+"ms"),t(e.response)},onerror:e=>n("连接错误 "+JSON.stringify(e)),ontimeout:e=>n("连接超时 "+JSON.stringify(e))})}}})}static getDeviceType(){return 1e3<=window.innerWidth?k.PC:window.innerWidth<=600?k.MOBILE:k.TABLET}static getYaoCD(){return document.querySelector("#icon49-sidebar")?"<10分":document.querySelector("#icon50-sidebar")?"<1时":document.querySelector("#icon51-sidebar")?"1~2时":document.querySelector("#icon52-sidebar")?"2~5时":document.querySelector("#icon53-sidebar")?">5时":"无效"}static elementReady(o,a=document,r=3e4){re.info("等待元素:"+o);let s=new w;return new Promise((n,e)=>{var t=a.querySelector(o);if(t)return re.info("已获取元素, 耗时"+s.getTimeMs(),t),void n(t);let i=new MutationObserver((e,t)=>{a.querySelectorAll(o).forEach(e=>{re.info({innerHTML:e.innerHTML,element:e}),t.disconnect(),re.info("已获取元素, 耗时"+s.getTimeMs(),e),n(e)})});setTimeout(()=>{i.disconnect(),re.error(`等待元素超时! [${o}] -${a.documentElement.tagName}, 耗时`+s.getTimeMs()),e(`等待元素超时! [${o}] -${a.documentElement.tagName}, 耗时`+s.getTimeMs())},r),i.observe(a.documentElement,{childList:!0,subtree:!0})})}static querySelector(e,t=document,n=3e4){return M.elementReady(e,t,n)}static addStyle(e){let t=document.querySelector("style#wh-trans-gStyle");t?t.innerHTML+=e:((t=document.createElement("style")).id="wh-trans-gStyle",t.innerHTML=e,document.head.appendChild(t)),re.info("CSS规则已添加",t)}static loading_gif_html(){return"\"LOADING\"\n"}audioPlay(e="https://www.torn.com/js/chat/sounds/Warble_1.mp3"){const t=new Audio(e);t.addEventListener("canplaythrough",()=>{t.play().catch(e=>re.error("播放音频出错",e.message,e.stack)).then()})}isNewDay(e,t=0){e="number"==typeof e?new Date(e):e;let n=new Date,i=new Date(Date.UTC(n.getUTCFullYear(),n.getUTCMonth(),n.getUTCDate()));return i.setHours(i.getHours()+t),i>e}jQueryReady(){re.info("等待jQuery加载中..."),h.getInstance().fetchText("/js/script/lib/jquery-1.8.2.js?v=f9128651g").then(e=>window.eval(e));let t=window.setInterval(()=>{re.info("仍在等待jQuery加载中...")},1e3);return new Promise(e=>y(this,void 0,void 0,function*(){for(;;){if("function"==typeof window.$)break;yield this.sleep(100)}window.clearInterval(t),re.info("jQuery已加载"),e(null)}))}sleep(e){let t=Math.max(e,10);return new Promise(e=>setTimeout(()=>e(null),t))}elemGenerator(r,e){var{tip:s,domType:t}=r;let l=null;switch(t){case"checkbox":{l=document.createElement("div");let{domId:e,dictName:t,domText:n,changeEv:i}=r,o=new b(n),a=o.getInput();o.getBase().id=e,s&&o.getBase().setAttribute("title",s),a.checked=L.get(t),a.onchange=e=>{L.set(t,a.checked,!0),i&&i(e)},l.appendChild(o.getBase());break}case"button":{l=document.createElement("div");var{domId:c,domText:n,isTornBtn:i,clickFunc:o}=r;let e=document.createElement("button");s&&e.setAttribute("title",s),e.id=c,e.innerHTML=n,i&&e.classList.add("torn-btn"),e.addEventListener("click",o),l.appendChild(e);break}case"select":{l=document.createElement("div");let{domSelectOpt:e,dictName:o,domId:t,domText:n}=r,i=document.createElement("label");s&&i.setAttribute("title",s);c=document.createTextNode(n);let a=document.createElement("select");a.id=t,e.forEach((e,t)=>{var{domVal:e,domText:n}=e;let i=document.createElement("option");i.value=e,i.innerHTML=n,i.selected=t===L.get(o),i.innerHTML=n,a.appendChild(i)}),a.onchange=e=>L.set(o,e.target.selectedIndex),i.appendChild(c),i.appendChild(a),l.appendChild(i);break}case"plain":n=r.tagName||"div";l=document.createElement(n),r.domId&&(l.id=r.domId),l.innerHTML+=r.domHTML}return e.appendChild(l)}exportTextFile(e,t){const n=document.createElement("a");n.href=URL.createObjectURL(new Blob(t,{type:"text/plain",endings:"transparent"})),n.download=e,n.click(),n.remove(),URL.revokeObjectURL(n.href)}isValidUid(e){return/^[0-9]{1,7}$/.test("string"==typeof e?e:e.toString())}getTravelStage(){var e=M.glob;return"false"===e.bodyAttrs["data-abroad"]?S.IN_TORN:"false"===e.bodyAttrs["data-traveling"]?S.ABROAD:S.FLYING}matchOne(e,t){let n="string"==typeof t?new RegExp(t):t,i=null;t=e.match(n);return i=0y(this,void 0,void 0,function*(){let e=0;for(;!sessionStorage.getItem(n)&&e<50;)e++,yield M.getInstance().sleep(10);sessionStorage.getItem(n)?i=JSON.parse(sessionStorage.getItem(n)):(re.info("无法从sessionStorage获取数据"),i=yield(yield h.getInstance().ajaxFetch({url:window.addRFC("/sidebarAjaxAction.php?q=getSidebarData"),method:"POST"})).json(),sessionStorage.setItem(n,JSON.stringify(i))),i.headerData=JSON.parse(sessionStorage.getItem("headerData")),t(i)}))})}getSidebarData(){return y(this,void 0,void 0,function*(){return(yield this.getSessionData()).areas})}getUserState(){return y(this,void 0,void 0,function*(){return(yield this.getSessionData()).headerData.user.state})}}function x(){function s(){let a="战斗记录:
";c.list.forEach(e=>{var{TimeCreated:e,attackerID:t,attackerItemID:n,result:i,text:o}=c.details[e];a+=`[${e}] [${t}] [${n}] ${i} ${o}
`}),c.innerHTML=a}let e=new u("

监测目标ID玩家的防御状态,找出隐身攻击者

","守望者 (测试中)"),t=document.createElement("p"),r=document.createElement("input"),n=document.createElement("button"),i=document.createElement("button"),o=document.createElement("button"),l=document.createElement("div"),c=(l.obj={},document.createElement("div")),d=(c.list=[],c.details={},null),a=(r.type="text",r.placeholder="目标ID",n.innerHTML="开启",i.innerHTML="关闭",i.disabled=!0,o.innerHTML="填入自己",e.close);e.close=()=>{null===d?(e.close=a,e.close()):new E("守望者运行中,请先停止",{timeout:2})},e.getElement().appendChild(t),e.getElement().appendChild(r),e.getElement().appendChild(n),e.getElement().appendChild(i),e.getElement().appendChild(o),e.getElement().appendChild(l),e.getElement().appendChild(c),n.addEventListener("click",()=>{if(null===d&&r.value){n.disabled=!0,i.disabled=!1,r.readOnly=!0,t.innerHTML="状态:已开 ✅";let a=0;d=window.setInterval(()=>y(this,void 0,void 0,function*(){var i=d;let o=yield(yield window.fetch("https://www.torn.com/loader.php?sid=attackData&mode=json&step=poll&user2ID="+r.value,{headers:{"X-Requested-With":"XMLHttpRequest"},referrer:"loader.php?sid=attack&user2ID="+r.value})).text();if(d===i){i=JSON.parse(o.split("{if(e!==r.value&&!l.obj[e]){l.obj[e]=!0;{let t="进攻者:
";Object.keys(l.obj).forEach(e=>t+=`[${e}]
`),l.innerHTML=t}}}),(e.currentFightHistory||[]).forEach(e=>{var t,n,i,o,a,r;c.list.includes(e.ID)||({ID:e,TimeCreated:t,attackID:n,attackerID:i,attackerItemID:o,result:a,text:r}=e,c.list.push(e),c.details[e]={TimeCreated:t,attackID:n,attackerID:i,attackerItemID:o,result:a,text:r},s())}),n&&n[r.value]&&n[r.value].forEach(e=>{var t,n,i,o;c.list.includes(e.ID)||({ID:e,TimeCreated:t,attackID:n,attackResult:i,userID:o}=e,c.list.push(e),c.details[e]={TimeCreated:t,attackID:n,attackerID:o,attackerItemID:0,result:i,text:""},s())})}}),900)}}),i.addEventListener("click",()=>{null!==d&&(n.disabled=!1,i.disabled=!0,r.readOnly=!1,window.clearInterval(d),d=null,t.innerHTML="状态:已关 ❎")}),o.addEventListener("click",()=>r.value=v.getInstance().getPlayerInfo().userID+"")}var T=[{start:[0,17,8],end:[0,24,8],name:"捡垃圾周",eff:"获得捡垃圾概率提升的增益"},{start:[3,5,20],end:[3,25,20],name:"复活节狩猎",eff:"复活节彩蛋会随机出现,集齐10个可兑换金蛋和一个独特的头像框(章)。"},{start:[5,20,20],end:[5,29,20],name:"狗牌",eff:"击败其他玩家以获得狗牌,小心保护你的狗牌。"},{start:[6,5,20],end:[6,25,20],name:"托恩先生和托恩女士",eff:"上传你的真实图片,然后拿章"},{start:[8,5,20],end:[8,23,20],name:"大逃杀",eff:"加入特定队伍后,攻击其他队伍玩家,存活下来的3个队伍可以拿章"},{start:[9,25,20],end:[10,1,20],name:"不给糖就捣蛋",eff:"买篮子之后攻击其他玩家后会随机掉落糖果,可用于兑换许多高价值物品"},{start:[11,14,20],end:[11,31,20],name:"圣诞小镇",eff:"在小镇中闲逛来获取随机掉落的物品"}],C={1014:{name:"世界糖尿病日",eff:"获得三倍的糖类效果增益"},1015:{name:"周年庆",eff:"左上角的TORN图标可以食用"},1025:{name:"黑色星期五",eff:"某些商家将提供1元购活动"},1114:{name:"住院日",eff:"获得降低75%的住院时间增益"},"0105":{name:"周末自驾游",eff:"获得双倍的赛车点数与赛车技能等级增益"},"0114":{name:"情人节",eff:"使用爱情果汁(Love Juice)后获得降低攻击与复活的能量消耗的增益"},"0204":{name:"员工激励日",eff:"获得三倍的工作点数与火车增益"},"0217":{name:"圣帕特里克日",eff:"获得双倍的酒类效果增益,城市中可以捡到绿色世涛(Green Stout)"},"0320":{name:"420日",eff:"获得三倍的大麻(Cannabis)效果增益"},"0418":{name:"博物馆日",eff:"获得10%提高的博物馆PT兑换增益"},"0514":{name:"世界献血日",eff:"获得减半的抽血CD和扣血增益"},"0611":{name:"世界人口日",eff:"获得双倍的通过攻击获取的经验的增益"},"0629":{name:"世界老虎日",eff:"获得5倍的狩猎技能增益"},"0705":{name:"国际啤酒节",eff:"获得5倍的啤酒物品效果增益"},"0827":{name:"旅游节",eff:"获得双倍的起飞后物品携带容量增益"},"0915":{name:"饮料节",eff:"获得双倍的能量饮料效果增益"}},I=[{name:"mex",show:"墨西哥",stocks:{Dahlia:"花","Jaguar Plushie":"偶"}},{name:"cay",show:"开曼",stocks:{"Banana Orchid":"花","Stingray Plushie":"偶"}},{name:"can",show:"加拿大",stocks:{Crocus:"花","Wolverine Plushie":"偶"}},{name:"haw",show:"夏威夷",stocks:{Orchid:"花","Large Suitcase":"大箱"}},{name:"uni",show:"嘤国",stocks:{Heather:"花","Red Fox Plushie":"赤狐","Nessie Plushie":"水怪"}},{name:"arg",show:"阿根廷",stocks:{"Ceibo Flower":"花","Monkey Plushie":"偶","Tear Gas":"催泪弹"}},{name:"swi",show:"瑞士",stocks:{Edelweiss:"花","Chamois Plushie":"偶"}},{name:"jap",show:"日本",stocks:{"Cherry Blossom":"花"}},{name:"chi",show:"祖国",stocks:{Peony:"花","Panda Plushie":"偶"}},{name:"uae",show:"迪拜",stocks:{"Tribulus Omanense":"花","Camel Plushie":"偶"}},{name:"sou",show:"南非",stocks:{"African Violet":"花","Lion Plushie":"偶",Xanax:"XAN"}}];class V extends s{constructor(){super(),this.className="TravelItem",this.apiUrl="https://yata.yt/api/v1/travel/export/",this.foreignStockInfo=null,window.setInterval(()=>y(this,void 0,void 0,function*(){f.getInstance().get()&&(re.info("fetching ",this.apiUrl),this.foreignStockInfo=JSON.parse(yield M.COFetch(this.apiUrl)),re.info({"fetch returned":this.foreignStockInfo}))}),3e4)}clickHandler(){return y(this,void 0,void 0,function*(){if(M.getScriptEngine()===c.RAW)new u('stock.png'.replace("{{}}",performance.now().toString()),"飞花库存");else{const e=new u("请稍后 "+M.loading_gif_html(),"飞花库存");let i='';const t=I,o=new Date,a=yield this.get();re.info({res:a}),a&&a.stocks&&(t.forEach(t=>{var e=(o.getTime()-new Date(1e3*a.stocks[t.name].update).getTime())/1e3|0;i+=``;let n=0;for(a.stocks[t.name].stocks.forEach(e=>{t.stocks[e.name]&&(i+=`${t.stocks[e.name]} (${e.quantity})`,n++)});n<3;)n++,i+="";i+=""}),i+="
目的地 - 更新时间库存
${t.show}${e/60|0}分${e%60|0}秒前
",e.getElement().innerHTML=i)}})}get(){return y(this,void 0,void 0,function*(){return this.foreignStockInfo||(this.foreignStockInfo=JSON.parse(yield M.COFetch(this.apiUrl)))})}}class a extends s{constructor(){super(),this.className="CompanyHelper",L.get("CHTrainsDetectSwitch")&&this.trainsDetect().then()}detectNow(){this.trainsDetect(!0).then()}trainsDetect(n=!1){return y(this,void 0,void 0,function*(){var e,t;"icon73"!==(yield v.getInstance().getSessionData()).statusIcons.icons.company.iconID?re.info("火车检测跳过:非公司老板"):(e=L.get("CHTrainsDetect")||0,n||M.getInstance().isNewDay(e,-6)?(e=M.getInstance().getTravelStage(),t=(yield v.getInstance().getUserState()).status,n&&re.info({travelStage:e,userStatus:t}),e===S.IN_TORN&&"ok"===t?h.getInstance().fetchText("/companies.php").then(e=>{let t=document.createElement("div");var n=M.getInstance().matchOne(e,//);if(!n)throw re.warn("火车检测: 无法获取数据"),new Error("火车检测: 无法获取数据");t.innerHTML=e.split(n)[1].split("")[0].trim().replaceAll('rel="stylesheet"',"").replaceAll(".css","?404").replaceAll('type="text/javascript"','type="application/json"');e=t.querySelector("span.trains");if(!e)throw re.error("火车检测出错: 无法获取火车数"),new Error("火车检测出错: 无法获取火车数");n=parseInt(e.innerText),e=t.querySelectorAll(".company-rating .active").length/2||1;L.set("CHTrainsDetect",Date.now()),re.info("火车检测: 火车/星级: "+n+"/"+e),re.info({tmp:t}),20
火车检测:火车明日将溢出!${n}/20火车`,{timeout:15,force:!0,sysNotify:!0}),t.remove(),t=null}).catch(e=>{re.error("火车检测出错",e)}):re.warn("[火车检测] 用户状态错误,跳过火车检测",{travelStage:e,userStatus:t})):re.info("火车检测:今日已提醒,跳过"))})}}class N extends s{constructor(){super(...arguments),this.className="Test"}test(){let e=new u(M.getInstance().getTravelStage().toString());e.getElement().__POOL__=N.getPool(),this.case3().then()}case1(){const e=document.createElement("DIV"),t=document.createElement("DIV");e.append(...document.body.childNodes),t.append(...document.head.childNodes),t.querySelectorAll('script[src*="google"]').forEach(e=>e.remove()),t.querySelectorAll("#gtm_tag").forEach(e=>e.remove()),t.querySelectorAll('script[src*="chat/gonline"]').forEach(e=>e.remove()),t.querySelectorAll("script[nonce]").forEach(e=>e.remove()),window.stop(),re.info(document.body.outerHTML),document.body.innerHTML="",document.head.innerHTML="",document.body.append(...e.childNodes),document.body.insertAdjacentHTML("afterbegin",t.innerHTML)}case2(){document.head.insertAdjacentHTML("afterbegin",``)}case3(){return y(this,void 0,void 0,function*(){a.getInstance().detectNow()})}}class P extends s{constructor(){super(),this.className="BuyBeerHelper",this.isNotifying=!1,this.loopId=null,this.notifyHtml='啤酒小助手\n
提醒您:还有不到 50 秒 NPC 的商品就要刷新了,啤酒血包要抢的可以准备咯。\n
\n【啤酒店】\n【血包店】'.replace("{{}}",g.getInstance().getRandomInt(0,99).toString()),this.time=L.get("_15AlarmTime")||30}start(){this.loopId?re.info("啤酒助手已在运行"):this.loopId=window.setInterval(()=>y(this,void 0,void 0,function*(){var{isTravelling:t,isAbroad:n}=yield v.getInstance().getUserState();if(t||n)this.stop();else{let e=new Date;t=[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()],n=L.get("_15_alarm_ignore")||"{}";if(JSON.stringify(t)!==JSON.stringify(n)){t=14-e.getMinutes()%15,n=60-e.getSeconds();if(0==t&&nthis.skip_today()),i.getElement().addEventListener("click",e=>{"a"===e.target.tagName.toLowerCase()&&i.close()});t=M.getInstance().audioPlay;window.setTimeout(t,800),window.setTimeout(t,1600),window.setTimeout(t,2400)}}else this.isNotifying=!1}}}),1e3)}stop(){this.loopId&&(window.clearInterval(this.loopId),this.loopId=null)}set_time(e){this.time=e}status(){return this.loopId?"已启动":"未启动"}is_running(){return null!==this.loopId}skip_today(){const e=new Date,t=(L.set("_15_alarm_ignore",[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()],!1),new E(`明早8点前将不再提醒 `));t.getElement().querySelector(".wh-notify-msg button").addEventListener("click",()=>L.set("_15_alarm_ignore",void 0,!0))}setTimeHandler(){let n=new u(`

区间为 1 ~ 60,默认 50

`,"啤酒提醒时间设定"),e=document.createElement("button");e.innerHTML="确定",e.style.float="right",e.addEventListener("click",()=>{let e=n.getElement().querySelector("input"),t=0|e.value;t!==L.get("_15AlarmTime")&&((t<1||60{if(0!==this.notifies.count)for(let e=0;e\n

主要用途:出院秒飞

\n

点起飞,页面加载完成后会马上飞走

\n
\n
\n \n \n

查看花偶库存

\n

注:需要验证时无法起飞

\n \n \n
',n.querySelectorAll("select")),o=(n.querySelector("button").addEventListener("click",()=>{sessionStorage["wh-quick-fly"]=`${t.selectedIndex} ${i.selectedIndex} `+(new Date).getTime(),window.location.href.contains("travelagency.php")?D.doQuickFly():(new E("正在转跳"),location.href="https://www.torn.com/travelagency.php")}),n.querySelector("a").addEventListener("click",e=>{e.preventDefault(),V.getInstance().clickHandler()}),n.querySelector("input").addEventListener("click",e=>{n.classList.toggle("wh-quick-fly-opt-hide");const t=e.target;t.value=" - "===t.value?" + ":" - "}),n.querySelector("info")),a=document.createElement("p"),r=document.createElement("p"),s=(o.append(a),o.append(r),[["~54分","~36分","~26分","~16分"],["~1时10分","~50分","~36分","~22分"],["~1时22分","~58分","~40分","~24分"],["~4时28分","~3时8分","~2时14分","~1时20分"],["~5时18分","~3时42分","~2时40分","~1时36分"],["~5时34分","~3时54分","~2时46分","~1时40分"],["~5时50分","~4时6分","~2时56分","~1时46分"],["~7时30分","~5时16分","~3时46分","~2时16分"],["~8时4分","~5时38分","~4时2分","~2时24分"],["~9时2分","~6时20分","~4时30分","~2时42分"],["~9时54分","~6时56分","~4时58分","~2时58分"]]);var e=function(){a.innerHTML="往返时间:"+s[t.selectedIndex][i.selectedIndex]};t.addEventListener("change",e),i.addEventListener("change",e),document.body.append(n),e(),r.innerHTML="药CD剩余:"+M.getYaoCD()}}}class _ extends s{constructor(){super(...arguments),this.className="NNB"}handle(){let{isPDA:t,PDA_APIKey:n}=l.getInstance();var e='\n

\n

NNBNatural Nerve Bar)意思是:扣除所有加成后,玩家本身的犯罪条上限,可用于衡量大佬隐藏的犯罪技能等级\n

\n

一般来说,左侧红色的犯罪条(Nerve Bar/NB)的上限都是包含加成的,如来自帮派、天赋的加成等。额外的加成不会影响玩家的犯罪技能\n

\n

查看NNB的方法很简单,在Torn主页面的最下方有一栏Perks,NB-Perks=NNB

\n
\n

以下是两种计算NNB的方法:

\n \n \n
\n'.replace("{{}}",localStorage.getItem("APIKey")||"不可用").replace("{{}}",t?n:"不可用");const i=new u(e,"查看NNB").getElement(),o=i.querySelector("input"),a=i.querySelector("p");i.querySelector("button").addEventListener("click",e=>{let i=e.target;if(i.style.display="none",a.innerHTML="加载中",o.checked){e=t?n:window.localStorage.getItem("APIKey");window.fetch("https://api.torn.com/user/?selections=bars,perks&key="+e).then(e=>e.json()).then(e=>{if(e.error)return a.innerHTML="出错了 "+JSON.stringify(e.error),void(i.style.display=null);var t=e.nerve.maximum;let n=0;Object.values(e).forEach(e=>{e instanceof Array&&e.forEach(e=>{(e=e.toLowerCase()).includes("maximum nerve")&&(n+=0|new RegExp("[0-9].").exec(e)[0])})}),a.innerHTML="NNB: "+(t-n),i.style.display=null})}else{if(window.location.href.includes("index.php")&&document.title.includes("Home")){e=0|document.querySelector('#barNerve p[class^="bar-value___"]').innerText.split("/")[1];let n=0;return document.querySelectorAll("#personal-perks li").forEach(e=>{const t=e.innerText.toLowerCase();t.includes("maximum nerve")&&(n+=0|/[0-9]./.exec(t)[0])}),a.innerHTML="NNB: "+(e-n),void(i.style.display=null)}a.innerHTML='不在主页面,点击前往',i.style.display=null}})}}class H extends s{constructor(){super(),this.className="QuickLinksHandler",this.styleAdded=!1,this.list=[];let e=this.list;e.push({name:"生存手册",url:"https://docs.qq.com/doc/DTVpmV2ZaRnB0RG56",new_tab:!0,img:"https://www.torn.com/images/items/293/medium.png"}),e.push({name:"抢啤酒",url:"https://www.torn.com/shops.php?step=bitsnbobs",new_tab:!0,img:"https://www.torn.com/images/items/180/medium.png"}),e.push({name:"买XAN",url:"https://www.torn.com/imarket.php#/p=shop&step=shop&type=&searchname=Xanax",new_tab:!0,img:"https://www.torn.com/images/items/206/medium.png"}),e.push({name:"起飞",url:"https://www.torn.com/travelagency.php",new_tab:!0,img:"https://www.torn.com/images/items/396/medium.png"}),e.push({name:"买PT",url:"https://www.torn.com/pmarket.php",new_tab:!0,img:"https://www.torn.com/images/items/722/medium.png"}),e.push({name:"租PI",url:"https://www.torn.com/properties.php?step=rentalmarket#/property=13",new_tab:!1,img:"https://www.torn.com/images/v2/properties/350x230/350x230_default_private_island.png"}),e.push({name:"找工作",url:"https://www.torn.com/joblist.php#!p=main",new_tab:!1,img:"https://www.torn.com/images/items/421/medium.png"}),e.push({name:"下悬赏",url:"https://www.torn.com/bounties.php#/p=add",new_tab:!1,img:"https://www.torn.com/images/items/431/medium.png"})}handle(){this.styleAdded||(M.addStyle(".wh-link-collection-cont a {\n display: inline-block;\n border: solid 1px #b3b3b3;\n border-radius: 4px;\n margin: 0 5px 2px 0;\n padding: 4px 8px;\n text-align: center;\n background: #efefef;\n background: linear-gradient(#f1f1f1, #e3e3e3);\n color: black !important;\n}\n\n.wh-link-collection-cont span {\n display: block;\n /*padding: 0 4px 8px;*/\n}\n\n.wh-link-collection-cont .wh-link-collection-img {\n display: block;\n width: 60px;\n height: 30px;\n background-size: 100% auto !important;\n}"),this.styleAdded=!0);const e=this.list;let t="

",n=(e.forEach(e=>{t+=`${e.name}`}),t+="

",new u(t,"常用链接"));n.getElement().classList.add("wh-link-collection-cont"),n.getElement().addEventListener("click",e=>{let t=e.target;"a"!==t.tagName.toLowerCase()&&"span"!==t.tagName.toLowerCase()||n.close()})}}class B extends s{constructor(){super(...arguments),this.className="ItemPriceWatcherHandler"}handle(){const n=L.get("priceWatcher"),i=JSON.stringify(n);var e='\n

输入需要监视的价格,低于该价格发出通知,-1为关闭

\n

注:需要APIKey,当前可用APIKey为
\n (来自冰蛙)
\n (来自PDA)\n

\n

PT

\n

XAN

\n

\n \n

'.replace("{{}}",localStorage.getItem("APIKey")||"不可用").replace("{{}}",l.getInstance().isPDA?l.getInstance().PDA_APIKey:"不可用").replace("{{}}",n.pt||-1).replace("{{}}",n.xan||-1);const o=new u(e,"价格监视设置");o.getElement().querySelector("button").onclick=()=>{var[e,t]=Array.from(o.getElement().querySelectorAll('input[type="number"]'));n.pt=0|e.value,n.xan=0|t.value,JSON.stringify(n)!==i&&L.set("priceWatcher",n),o.close()}}}class R extends s{constructor(){super(...arguments),this.className="MDUtils"}parse(e,t){t=t||500;const i=document.createElement("div");let n=e.split("\n"),o=(n.length>t&&(n=n.slice(0,t)).push("..."),""),a;return n.forEach(t=>{if(""!==t.trim()){let e;var n=t.split(" ")[0];switch(n){case"#":case"##":case"###":return"li"===o&&(a=null),o="h"+(n.length+1),(e=document.createElement(o)).innerText=t.slice(n.length+1),void i.append(e);case"-":return"li"!==o&&(a=document.createElement("ul"),i.contains(a)||i.append(a)),o="li",(e=document.createElement(o)).innerText=t.slice(2),void a.append(e)}o="p",(e=document.createElement(o)).innerText=t.trim(),i.append(e)}}),i}}class q extends s{constructor(){super(...arguments),this.className="ChangeLogHandler"}handle(){let t=new u('更新历史:
https://gitlab.com/JJins/wuhu-torn-helper/-/blob/dev/CHANGELOG.md
',"更新历史").getElement(),n=(t.classList.add("wh-changeLog"),document.createElement("div")),i=(n.style.height="2px",n.style.width="1%",n.style.backgroundColor="red",document.createElement("p")),e=(i.innerText="加载更新文件……",i.style.textAlign="center",document.createElement("style"));e.innerHTML=".wh-changeLog h2,.wh-changeLog h3,.wh-changeLog h4 {margin:8px 0;}.wh-changeLog li{list-style: inside;}",t.append(n,i,e),M.COFetch("https://gitlab.com/JJins/wuhu-torn-helper/-/raw/dev/CHANGELOG.md?"+performance.now()).then(e=>{n.style.width="60%",i.innerText="解析中……";e=R.getInstance().parse(e);t.append(e),n.style.width="100%",i.innerText="加载完成",window.setTimeout(()=>{n.remove(),i.remove()},3e3)}).catch(e=>{re.error(e),n.remove(),i.innerText="无法加载"})}}class F extends s{constructor(){super(...arguments),this.className="UpdateTranslateDict"}handle(){new E("计划中")}}function O(){let e=document.createElement("p"),t=document.createElement("input"),n=document.createElement("button"),i=document.createElement("button"),o=document.createElement("button"),a=document.createElement("button");var r=document.createElement("br");e.innerHTML="飞机落地后转跳的页面,关闭功能请置空:",t.placeholder="URL",t.value=L.get("landedRedirect")||"",t.style.display="block",t.style.textAlign="left",t.style.width="100%",t.style.padding="8px",t.style.margin="8px -8px",n.innerHTML="保存",i.innerHTML="填入公司金库",o.innerHTML="填入帮派金库金库",a.innerHTML="测试链接",n.addEventListener("click",()=>L.set("landedRedirect",t.value,!0)),i.addEventListener("click",()=>t.value="https://www.torn.com/companies.php#/option=funds"),o.addEventListener("click",()=>t.value="https://www.torn.com/factions.php?step=your#/tab=armoury"),a.addEventListener("click",()=>window.open(t.value));let s=new u("","落地转跳").getElement();s.append(e,t,n,r,i,o,a)}class G extends s{constructor(){super(...arguments),this.className="ViewLogsHandler"}handle(){let e=re.getCounter(),i=new u('\n

{{}}信息 {{}}警告 {{}}错误\n \n

\n
加载中
'.replace("{{}}",e.info.toString()).replace("{{}}",e.warning.toString()).replace("{{}}",e.error.toString()),"查看日志");window.setTimeout(()=>{let e=i.getElement().querySelector("div"),n=document.createElement("div"),t=re.getLogs().split("\r\n");t.forEach(e=>{let t=document.createElement("p");(t.innerText=e).slice(0,10).includes("ERR")?t.style.backgroundColor="#ff000080":e.slice(0,10).includes("WRN")&&(t.style.backgroundColor="#ffff0080"),n.append(t)}),i.getElement().querySelector("button").addEventListener("click",()=>window.setTimeout(()=>{M.getInstance().exportTextFile("wuhu_log_"+re.getTime().replace("[","").replace("]","").replace(" ","").replace(".","").replaceAll("-","").replaceAll(":","")+".log",[re.getLogs()])},0)),e.innerHTML="",e.append(n)},0)}}class W{constructor(e,t){re.info("创建DialogMsgBox",{msg:e,opt:t});let{title:n="提示",callback:i,cancel:o}=t;if(!i)throw re.error("无callback"),new Error("无callback");if(W.existed)throw re.error("无法创建DialogMsgBox:已存在"),new Error("无法创建DialogMsgBox:已存在");this.container=document.createElement("div"),this.container.id="wh-dialog",this.container.innerHTML='\n
\n
{{}}
\n
\n
{{}}
\n
\n \n \n
\n
\n
'.replace("{{}}",n).replace("{{}}",e);let[a,r]=Array.from(this.container.querySelectorAll("button"));a.addEventListener("click",()=>{i(this.container),this.destroy()}),r.addEventListener("click",()=>{o&&o(),this.destroy()}),document.body.append(this.container),W.existed=!0}destroy(){this.container.remove(),W.existed=!1}}W.existed=!1;var j='
\n
常用犯罪
\n
\n \x3c!--18-1--\x3e\n
\n \n \n \n
\n \x3c!--15-3--\x3e\n
\n \n \n \n
\n \x3c!--仓库--\x3e\n
\n \n \n \n
\n \x3c!--7-2--\x3e\n
\n \n \n \n
\n \x3c!--偷夹克--\x3e\n
\n \n \n \n
\n \x3c!--卖碟3-1--\x3e\n
\n \n \n \n
\n \x3c!--捡钱--\x3e\n
\n \n \n \n
\n
\n
\n
';class U extends s{constructor(){super(...arguments),this.className="IFrameCrimeHandler"}handle(){const t='';var e=`

加载中请稍后${M.loading_gif_html()}

`;const n=new u(e,"小窗快速犯罪").getElement();let i=n.querySelector("p:first-of-type");const o=n.querySelector("#wh-quick-crime-if-container"),a=(o.innerHTML=t,document.createElement("div"));a.classList.add("wh-translate"),a.innerHTML=j;let r=n.querySelector("iframe");const s=()=>{const e=r.contentWindow.document;var t=r.contentWindow.WHTRANS,n=(i&&i.remove(),r.style.display="block",e.querySelector("h4#skip-to-content").innerText.toLowerCase().includes("validate"));void 0===t&&(M.elementReady("#header-root",e).then(e=>e.style.display="none"),M.elementReady("#sidebarroot",e).then(e=>e.style.display="none"),M.elementReady("#chatRoot",e).then(e=>e.style.display="none"),n||(e.body.style.overflow="hidden"),M.elementReady(".content-wrapper",e).then(n=>{n.prepend(a),n.style.margin="0px",n.style.position="absolute",n.style.top="-35px",new MutationObserver((e,t)=>{t.disconnect(),n.querySelector(".wh-translate")||n.prepend(a),t.observe(n,{childList:!0,subtree:!0})}).observe(n,{childList:!0,subtree:!0})}),M.elementReady("#go-to-top-btn button",e).then(e=>e.style.display="none"))};r.onload=s;let l=0,c=window.setInterval(()=>{if(!(i=n.querySelector("p:first-of-type")))return clearInterval(c),void(c=void 0);if(0<++l&&!i.querySelector("button")){const e=document.createElement("button");e.innerHTML="重新加载",e.onclick=()=>{e.remove(),l=0,o.innerHTML=null,o.innerHTML=t,(r=n.querySelector("iframe")).onload=s},i.append(e)}},1e3)}}function z(){try{return(JSON.parse(localStorage.getItem("wh_trans_settings"))||{}).isDev||!1}catch(e){return console.error("[wh] dev状态错误 "+e),!1}}const Ie={error:(...e)=>z()&&console.error("[WH]",...e),info:(...e)=>z()&&console.log("[WH]",...e),debug:z};function J(e){if(e===c.PDA){let o=document.querySelector("#wh-gs-loader-ifr");if(o)return void new E("飞贼小助手已经加载了");const n=document.createElement("div");n.id="wh-gs-loader",(o=document.createElement("iframe")).id="wh-gs-loader-ifr",o.src="https://www.torn.com/crimes.php",n.append(o),document.body.append(n);{var t=` +!function(){"use strict";class ae{static info(...e){ae.counter.info++;var t=this.getTime(),n="[WH] IFO";this.debug()&&console.log(n,t,...e),this.saveLogs(n,t,...e)}static error(...e){ae.counter.error++;var t=this.getTime(),n="[WH] ERR";console.error(n,t,...e),this.saveLogs(n,t,...e)}static warn(...e){ae.counter.warning++;var t=this.getTime(),n="[WH] WRN";this.debug()&&console.warn(n,t,...e),this.saveLogs(n,t,...e)}static debug(){let e=!0;try{var t=JSON.parse(localStorage.getItem("wh_trans_settings"));t&&(e=t.isDev)}catch(e){}return e}static getTime(){let e=new Date;return`[${e.getFullYear()}-${("0"+(e.getMonth()+1)).slice(-2)}-${("0"+e.getDate()).slice(-2)} ${("0"+e.getHours()).slice(-2)}:${("0"+e.getMinutes()).slice(-2)}:${("0"+e.getSeconds()).slice(-2)}.${("00"+e.getMilliseconds()).slice(-3)}]`}static getLogs(){return this.logs}static saveLogs(...e){e.forEach(t=>{if("string"==typeof t)this.logs+=t;else if(null!=t){let e="{}";var n=Object.getPrototypeOf(t).constructor.name;try{e=JSON.stringify(t)}catch(e){}this.logs+=` [${n}] [${e}] `,t.message&&(this.logs+="错误信息: "+t.message),t.stack&&(this.logs+="错误堆栈: "+t.stack)}}),this.logs+="\r\n"}static getCounter(){return{info:ae.counter.info,error:ae.counter.error,warning:ae.counter.warning}}}function y(e,a,s,l){return new(s=s||Promise)(function(n,t){function i(e){try{o(l.next(e))}catch(e){t(e)}}function r(e){try{o(l.throw(e))}catch(e){t(e)}}function o(e){var t;e.done?n(e.value):((t=e.value)instanceof s?t:new s(function(e){e(t)})).then(i,r)}o((l=l.apply(e,a||[])).next())})}ae.logs="",ae.counter={info:0,error:0,warning:0};class n{constructor(){this.className="Provider"}static getInstance(){var e,t;return this.instance||(e=performance.now(),this.instance=new this,t=this.instance.getClassName()||this.name,ae.info("实例已创建,",t,this.instance,"耗时"+(performance.now()-e|0)+"ms"),n.pool[t]=this.instance),this.instance}static getPool(){return{pool:n.pool}}}n.pool={};class s extends n{constructor(){super(...arguments),this.className="WuhuBase"}static getLocal(){let e;var t=localStorage.getItem("wh_trans_settings")||"{}";try{e=JSON.parse(t)}catch(e){ae.error("解析localStorage对象出错",e),localStorage.setItem("wh_trans_settings","{}")}return e||{}}static conditionInterrupt(){let e=document.querySelector("#skip-to-content")||document.querySelector('[href*="#skip-to-content"]')||{innerText:""};if(document.title.toLowerCase().includes("just a moment")||e.innerText.toLowerCase().includes("please validate")||null!==document.querySelector("div.container div.cf .iAmUnderAttack"))throw"芜湖"}getClassName(){return this.className}}s.glob=null;class u extends s{constructor(e,t="芜湖助手"){super(),this.className="Popup",this.container=null,this.node=null,u.glob.popup_node&&(ae.info("关闭前一个弹窗"),u.glob.popup_node.close()),ae.info("新建弹窗",{innerHTML:e,title:t});const n=document.createElement("div");n.id="wh-popup",n.innerHTML='\r\n
\r\n

{{}}

\r\n
{{}}
\r\n
'.replace("{{}}",t).replace("{{}}",e),document.body.append(n),n.addEventListener("click",e=>{e.stopImmediatePropagation(),e.target===n&&this.close()}),this.container=n,this.node=n.querySelector("#wh-popup-cont"),this.hideChat(),u.glob.popup_node=this}close(){this.container.remove(),this.showChat()}getElement(){return this.node}hideChat(){document.querySelector("#chatRoot").classList.add("wh-hide")}showChat(){document.querySelector("#chatRoot").classList.remove("wh-hide")}getInstance(){}}function p(){let e=new u("","传单助手").getElement(),t=(document.querySelector("#chatRoot").classList.remove("wh-hide"),document.createElement("p")),n=document.createElement("textarea"),i=document.createElement("button"),r=document.createElement("button"),o=document.createElement("button"),a=document.createElement("style");t.innerHTML="打开多个聊天框后,点击填写传单将自动粘贴文本框中的内容进入所有已打开的聊天框。页面外的聊天框同样有效。",n.placeholder="此处输入广告语",n.style.width="100%",n.style.minHeight="80px",i.innerText="填写传单",r.innerText="清空所有聊天框",o.innerText="粘贴剪切板",a.innerHTML="#chatRoot > div{z-index:199999 !important;}",i.classList.add("torn-btn"),r.classList.add("torn-btn"),o.classList.add("torn-btn"),i.addEventListener("click",()=>{let e=Array.from(document.querySelectorAll('#chatRoot textarea[name="chatbox2"]'));e.forEach(e=>e.value=n.value)}),r.addEventListener("click",()=>{let e=document.querySelectorAll('#chatRoot textarea[name="chatbox2"]');e.forEach(e=>e.value="")}),o.addEventListener("click",()=>y(this,void 0,void 0,function*(){n.focus(),n.value=yield navigator.clipboard.readText()})),e.appendChild(a),e.appendChild(t),e.appendChild(n),e.appendChild(document.createElement("br")),e.appendChild(i),e.appendChild(r),e.appendChild(o)}class m extends s{constructor(){super(...arguments),this.className="NotificationUtils",this.permission=window.Notification&&"granted"===window.Notification.permission}push(i,r={}){let o=m.glob["notifies"];if(r.sysNotify&&this.permission){let e=document.createElement("p"),t=(e.innerHTML=i,new Notification("芜湖助手",{body:ae.getTime()+"\r\n"+e.innerText})),n=o.count++;(o[n]=t).addEventListener("close",()=>{o[n]=null}),t.addEventListener("click",()=>{r.sysNotifyClick&&r.sysNotifyClick(),window.focus()}),t.addEventListener("show",()=>{ae.info("通知id: ",n)})}}}class g extends s{constructor(){super(...arguments),this.className="MathUtils"}getRandomInt(e,t){return e=Math.ceil(e),t=Math.floor(t),Math.floor(Math.random()*(t-e))+e}}class f extends s{constructor(){if(super(),this.className="WindowActiveState",this.isFocus=!1,this.uuid=crypto.randomUUID?crypto.randomUUID():([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,e=>(e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16)),self!==top)return null;localStorage.setItem("whuuid",this.uuid),document.addEventListener("visibilitychange",()=>"hidden"!==document.visibilityState&&localStorage.setItem("whuuid",this.uuid)),addEventListener("focus",()=>this.isFocus=!0),addEventListener("blur",()=>this.isFocus=!1)}get(){return!!this.isFocus||(!document.hidden||this.uuid===localStorage.getItem("whuuid"))}}class E extends s{constructor(e,t={}){super(),this.className="Alert",this.notify=null,this.intervalID=-1;var{timeout:n,callback:i,sysNotify:r,force:o}=t;if(!f.getInstance().get()||self!==top){if(!o)return ae.warn("后台通知已被屏蔽"),null;ae.info("强制后台通知")}ae.info("通知的容器",E.container),E.container&&document.contains(E.container)||E.initContainer(),this.callback=i||(()=>null),E.create(this,e,n||3),E.totalCounter++,ae.info("创建新通知:",this,e),r&&m.getInstance().push(e,t)}static create(e,t,n){var i=""+g.getInstance().getRandomInt(1e3,9999);const r=document.createElement("div"),o=(r.id="wh-notify-"+i,r.classList.add("wh-notify-item"),r.innerHTML='
\r\n
\r\n
\r\n

{{}}

\r\n
'.replace("{{}}",t),this.container.append(r),r.querySelector(".wh-notify-bar"));let a=!1,s=(r.addEventListener("mouseenter",()=>a=!0,!0),r.addEventListener("mouseleave",()=>a=!1),101);e.intervalID=window.setInterval(()=>{if(a)return s=101,void(o.style.width="100%");s--,o.style.width=s+"%",0===s&&e.close()},1e3*n/100),r.querySelector(".wh-notify-close").addEventListener("click",()=>e.close()),e.notify=r}static initContainer(){this.container=document.createElement("div"),this.container.id="wh-notify",document.body.append(this.container)}close(){this.notify.remove(),this.notify=null,this.callback(),window.clearInterval(this.intervalID),E.totalCounter--}getElement(){return this.notify}}E.container=null,E.totalCounter=0,(e=r=r||{}).RAW="raw",e.GM="gm",e.PDA="pda";var t,i,r,c=r,k=((e=t=t||{}).PC="pc",e.MOBILE="mobile",e.TABLET="tablet",t);class w{constructor(){this.startTime=performance.now()}getTimeMs(){return(performance.now()-this.startTime|0)+"ms"}}class h extends s{constructor(){super(...arguments),this.className="FetchUtils"}ajax(e,i){return new Promise((t,n)=>{$.ajax({method:i,url:e,success:function(e){t(e)},error:function(e){n(e)}})})}ajaxFetch(e){var{url:e,referrer:t="/",method:n,body:i=null}=e;let r={headers:{"X-Requested-With":"XMLHttpRequest"},referrer:t,method:n};return"POST"===n&&(r.headers["Content-Type"]="application/x-www-form-urlencoded; charset=UTF-8",r.body=i),window.fetch(e,r)}fetchText(e,i=null){return new Promise((t,n)=>window.fetch(e,i).then(e=>e.text()).then(e=>t(e)).catch(e=>{ae.error("fetchText出错了",e),n(e)}))}getProfile(e){return new Promise((t,n)=>{this.ajaxFetch({url:window.addRFC("https://www.torn.com/profiles.php?step=getProfileData&XID="+e),method:"GET"}).then(e=>{e.json().then(e=>{t(e)}).catch(e=>{ae.error("[ProfileHelper] JSON解析错误: ",e.message,"错误堆栈: ",e.stack),n(e)})}).catch(e=>{ae.error("[ProfileHelper] 网络错误: ",e.message,"错误堆栈: ",e.stack),n(e)})})}}class b{constructor(e,t=!1){this.randomId=g.getInstance().getRandomInt(100,2e3),this.baseElement=document.createElement("span"),this.baseElement.id="WHSwitch"+this.randomId,this.baseElement.innerHTML=` +`,this.input=this.baseElement.querySelector("input")}getBase(){return this.baseElement}getInput(){return this.input}getHtml(){return this.baseElement.innerHTML}}class L extends s{constructor(){super(...arguments),this.className="WuhuConfig"}static get(e){let n=this.getLocal();if("string"==typeof e)return n[e];{let t=[];return e.forEach(e=>{t.push(n[e])}),t}}static set(e,t,n=!1,i=()=>null){let r=L.getLocal();var o=r[e];return r[e]=t,localStorage.setItem("wh_trans_settings",JSON.stringify(r)),n&&new E("已保存设置"),new Promise(()=>i()).then(),ae.info(`值变更:[${e}] `+JSON.stringify({from:o,to:t})),t}static setDefaults(){ae.info("设置默认值开始");let t=0;[{key:"transEnable",val:!1},{key:"quickCrime",val:!0},{key:"missionHint",val:!0},{key:"xmasTownWT",val:!0},{key:"xmasTownNotify",val:!0},{key:"energyAlert",val:!0},{key:"trvAlarm",val:!0},{key:"_15Alarm",val:!0},{key:"cityFinder",val:!1},{key:"SEProtect",val:!1},{key:"ptQuickBuy",val:!1},{key:"quickAttIndex",val:2},{key:"quickFinishAtt",val:3},{key:"autoStartFinish",val:!1},{key:"attRelocate",val:!0},{key:"attReload",val:6},{key:"priceWatcher",val:{xan:-1,pt:-1}},{key:"isDev",val:!1},{key:"_15AlarmTime",val:50},{key:"barsRedirect",val:!0},{key:"floatDepo",val:!0},{key:"companyRedirect",val:!0},{key:"companyBWCollapse",val:!0},{key:"removeScripts",val:!0},{key:"abroadWarning",val:!0},{key:"landedRedirect",val:""},{key:"companyDepositAnywhere",val:!1},{key:"CHTrainsDetect",val:0},{key:"CHTrainsDetectSwitch",val:!0},{key:"HideProfileImg",val:!1},{key:"ShowNameHistory",val:!0},{key:"WatchTargetFreq",val:1},{key:"HideSidebar",val:!1},{key:"HideSidebarBtn",val:!0},{key:"SearchPagePlaceholder",val:!0},{key:"SolveGoogleScriptPendingIssue",val:!1},{key:"IconPosition",val:{}},{key:"SaveIconPosition",val:!1},{key:"CashChangeAlert",val:!1},{key:"CollectPlayerData",val:!0},{key:"dangerZone",val:!1}].forEach(e=>{typeof L.get(e.key)!=typeof e.val&&(L.set(e.key,e.val),t++)}),ae.info("设置默认值结束,新:"+t)}}(r=i=i||{})[r.IN_TORN=0]="IN_TORN",r[r.FLYING=1]="FLYING",r[r.ABROAD=2]="ABROAD";var S=i;class V extends s{constructor(){super(...arguments),this.className="CommonUtils"}static getScriptEngine(){var e=V.glob;return e.GM_xmlhttpRequest?c.GM:e.isPDA?c.PDA:c.RAW}static COFetch(r,o="get",a=null){const s=this.getScriptEngine();let l=performance.now();return ae.info("跨域获取数据开始, 脚本引擎: "+s),new Promise((t,n)=>{switch(s){case c.RAW:ae.error(`跨域请求错误:${c.RAW}环境下无法进行跨域请求`),n(`错误:${c.RAW}环境下无法进行跨域请求`);break;case c.PDA:{const{PDA_httpGet:e,PDA_httpPost:i}=window;"get"===o?("function"!=typeof e&&(ae.error("COFetch网络错误:PDA版本不支持"),n("COFetch网络错误:PDA版本不支持")),e(r).then(e=>{ae.info("跨域获取数据成功, 耗时"+(performance.now()-l|0)+"ms"),t(e.responseText)}).catch(e=>{ae.error("COFetch网络错误",e),n("COFetch网络错误 "+e)})):("function"!=typeof i&&(ae.error("COFetch网络错误:PDA版本不支持"),n("COFetch网络错误:PDA版本不支持")),i(r,{"content-type":"application/json"},a).then(e=>t(e.responseText)).catch(e=>{ae.error("COFetch网络错误",e),n("COFetch网络错误 "+e)}));break}case c.GM:{let e=V.glob["GM_xmlhttpRequest"];"function"!=typeof e&&(ae.error("COFetch网络错误:用户脚本扩展API错误"),n("错误:用户脚本扩展API错误")),e({method:o,url:r,data:"get"===o?null:a,headers:"get"===o?null:{"content-type":"application/json"},onload:e=>{ae.info("跨域获取数据成功,耗时"+(performance.now()-l|0)+"ms"),t(e.response)},onerror:e=>n("连接错误 "+JSON.stringify(e)),ontimeout:e=>n("连接超时 "+JSON.stringify(e))})}}})}static getDeviceType(){return 1e3<=window.innerWidth?k.PC:window.innerWidth<=600?k.MOBILE:k.TABLET}static getYaoCD(){return document.querySelector("#icon49-sidebar")?"<10分":document.querySelector("#icon50-sidebar")?"<1时":document.querySelector("#icon51-sidebar")?"1~2时":document.querySelector("#icon52-sidebar")?"2~5时":document.querySelector("#icon53-sidebar")?">5时":"无效"}static elementReady(r,o=document,a=3e4){ae.info("等待元素:"+r);let s=new w;return new Promise((n,e)=>{var t=o.querySelector(r);if(t)return ae.info("已获取元素, 耗时"+s.getTimeMs(),t),void n(t);let i=new MutationObserver((e,t)=>{o.querySelectorAll(r).forEach(e=>{ae.info({innerHTML:e.innerHTML,element:e}),t.disconnect(),ae.info("已获取元素, 耗时"+s.getTimeMs(),e),n(e)})});setTimeout(()=>{i.disconnect(),ae.error(`等待元素超时! [${r}] +${o.documentElement.tagName}, 耗时`+s.getTimeMs()),e(`等待元素超时! [${r}] +${o.documentElement.tagName}, 耗时`+s.getTimeMs())},a),i.observe(o.documentElement,{childList:!0,subtree:!0})})}static querySelector(e,t=document,n=3e4){return V.elementReady(e,t,n)}static addStyle(e){let t=document.querySelector("style#wh-trans-gStyle");t?t.innerHTML+=e:((t=document.createElement("style")).id="wh-trans-gStyle",t.innerHTML=e,document.head.appendChild(t)),ae.info("CSS规则已添加",t)}static loading_gif_html(){return"\"LOADING\"\r\n"}audioPlay(e="https://www.torn.com/js/chat/sounds/Warble_1.mp3"){const t=new Audio(e);t.addEventListener("canplaythrough",()=>{t.play().catch(e=>ae.error("播放音频出错",e.message,e.stack)).then()})}isNewDay(e,t=0){e="number"==typeof e?new Date(e):e;let n=new Date,i=new Date(Date.UTC(n.getUTCFullYear(),n.getUTCMonth(),n.getUTCDate()));return i.setHours(i.getHours()+t),i>e}jQueryReady(){ae.info("等待jQuery加载中..."),h.getInstance().fetchText("/js/script/lib/jquery-1.8.2.js?v=f9128651g").then(e=>window.eval(e));let t=window.setInterval(()=>{ae.info("仍在等待jQuery加载中...")},1e3);return new Promise(e=>y(this,void 0,void 0,function*(){for(;;){if("function"==typeof window.$)break;yield this.sleep(100)}window.clearInterval(t),ae.info("jQuery已加载"),e(null)}))}sleep(e){let t=Math.max(e,10);return new Promise(e=>setTimeout(()=>e(null),t))}elemGenerator(a,e){var{tip:s,domType:t}=a;let l=null;switch(t){case"checkbox":{l=document.createElement("div");let{domId:e,dictName:t,domText:n,changeEv:i}=a,r=new b(n),o=r.getInput();r.getBase().id=e,s&&r.getBase().setAttribute("title",s),o.checked=L.get(t),o.onchange=e=>{L.set(t,o.checked,!0),i&&i(e)},l.appendChild(r.getBase());break}case"button":{l=document.createElement("div");var{domId:c,domText:n,isTornBtn:i,clickFunc:r}=a;let e=document.createElement("button");s&&e.setAttribute("title",s),e.id=c,e.innerHTML=n,i&&e.classList.add("torn-btn"),e.addEventListener("click",r),l.appendChild(e);break}case"select":{l=document.createElement("div");let{domSelectOpt:e,dictName:r,domId:t,domText:n}=a,i=document.createElement("label");s&&i.setAttribute("title",s);c=document.createTextNode(n);let o=document.createElement("select");o.id=t,e.forEach((e,t)=>{var{domVal:e,domText:n}=e;let i=document.createElement("option");i.value=e,i.innerHTML=n,i.selected=t===L.get(r),i.innerHTML=n,o.appendChild(i)}),o.onchange=e=>L.set(r,e.target.selectedIndex),i.appendChild(c),i.appendChild(o),l.appendChild(i);break}case"plain":n=a.tagName||"div";l=document.createElement(n),a.domId&&(l.id=a.domId),l.innerHTML+=a.domHTML}return e.appendChild(l)}exportTextFile(e,t){const n=document.createElement("a");n.href=URL.createObjectURL(new Blob(t,{type:"text/plain",endings:"transparent"})),n.download=e,n.click(),n.remove(),URL.revokeObjectURL(n.href)}isValidUid(e){return/^[0-9]{1,7}$/.test("string"==typeof e?e:e.toString())}getTravelStage(){var e=V.glob;return"false"===e.bodyAttrs["data-abroad"]?S.IN_TORN:"false"===e.bodyAttrs["data-traveling"]?S.ABROAD:S.FLYING}matchOne(e,t){let n="string"==typeof t?new RegExp(t):t,i=null;t=e.match(n);return i=0y(this,void 0,void 0,function*(){let e=0;for(;!sessionStorage.getItem(n)&&e<50;)e++,yield V.getInstance().sleep(10);sessionStorage.getItem(n)?i=JSON.parse(sessionStorage.getItem(n)):(ae.info("无法从sessionStorage获取数据"),i=yield(yield h.getInstance().ajaxFetch({url:window.addRFC("/sidebarAjaxAction.php?q=getSidebarData"),method:"POST"})).json(),sessionStorage.setItem(n,JSON.stringify(i))),i.headerData=JSON.parse(sessionStorage.getItem("headerData")),t(i)}))})}getSidebarData(){return y(this,void 0,void 0,function*(){return(yield this.getSessionData()).areas})}getUserState(){return y(this,void 0,void 0,function*(){return(yield this.getSessionData()).headerData.user.state})}}function x(){function s(){let o="战斗记录:
";c.list.forEach(e=>{var{TimeCreated:e,attackerID:t,attackerItemID:n,result:i,text:r}=c.details[e];o+=`[${e}] [${t}] [${n}] ${i} ${r}
`}),c.innerHTML=o}let e=new u("

监测目标ID玩家的防御状态,找出隐身攻击者

","守望者 (测试中)"),t=document.createElement("p"),a=document.createElement("input"),n=document.createElement("button"),i=document.createElement("button"),r=document.createElement("button"),l=document.createElement("div"),c=(l.obj={},document.createElement("div")),d=(c.list=[],c.details={},null),o=(a.type="text",a.placeholder="目标ID",n.innerHTML="开启",i.innerHTML="关闭",i.disabled=!0,r.innerHTML="填入自己",e.close);e.close=()=>{null===d?(e.close=o,e.close()):new E("守望者运行中,请先停止",{timeout:2})},e.getElement().appendChild(t),e.getElement().appendChild(a),e.getElement().appendChild(n),e.getElement().appendChild(i),e.getElement().appendChild(r),e.getElement().appendChild(l),e.getElement().appendChild(c),n.addEventListener("click",()=>{if(null===d&&a.value){n.disabled=!0,i.disabled=!1,a.readOnly=!0,t.innerHTML="状态:已开 ✅";let o=0;d=window.setInterval(()=>y(this,void 0,void 0,function*(){var i=d;let r=yield(yield window.fetch("https://www.torn.com/loader.php?sid=attackData&mode=json&step=poll&user2ID="+a.value,{headers:{"X-Requested-With":"XMLHttpRequest"},referrer:"loader.php?sid=attack&user2ID="+a.value})).text();if(d===i){i=JSON.parse(r.split("{if(e!==a.value&&!l.obj[e]){l.obj[e]=!0;{let t="进攻者:
";Object.keys(l.obj).forEach(e=>t+=`[${e}]
`),l.innerHTML=t}}}),(e.currentFightHistory||[]).forEach(e=>{var t,n,i,r,o,a;c.list.includes(e.ID)||({ID:e,TimeCreated:t,attackID:n,attackerID:i,attackerItemID:r,result:o,text:a}=e,c.list.push(e),c.details[e]={TimeCreated:t,attackID:n,attackerID:i,attackerItemID:r,result:o,text:a},s())}),n&&n[a.value]&&n[a.value].forEach(e=>{var t,n,i,r;c.list.includes(e.ID)||({ID:e,TimeCreated:t,attackID:n,attackResult:i,userID:r}=e,c.list.push(e),c.details[e]={TimeCreated:t,attackID:n,attackerID:r,attackerItemID:0,result:i,text:""},s())})}}),900)}}),i.addEventListener("click",()=>{null!==d&&(n.disabled=!1,i.disabled=!0,a.readOnly=!1,window.clearInterval(d),d=null,t.innerHTML="状态:已关 ❎")}),r.addEventListener("click",()=>a.value=v.getInstance().getPlayerInfo().userID+"")}var T=[{start:[0,17,8],end:[0,24,8],name:"捡垃圾周",eff:"获得捡垃圾概率提升的增益"},{start:[3,5,20],end:[3,25,20],name:"复活节狩猎",eff:"复活节彩蛋会随机出现,集齐10个可兑换金蛋和一个独特的头像框(章)。"},{start:[5,20,20],end:[5,29,20],name:"狗牌",eff:"击败其他玩家以获得狗牌,小心保护你的狗牌。"},{start:[6,5,20],end:[6,25,20],name:"托恩先生和托恩女士",eff:"上传你的真实图片,然后拿章"},{start:[8,5,20],end:[8,23,20],name:"大逃杀",eff:"加入特定队伍后,攻击其他队伍玩家,存活下来的3个队伍可以拿章"},{start:[9,25,20],end:[10,1,20],name:"不给糖就捣蛋",eff:"买篮子之后攻击其他玩家后会随机掉落糖果,可用于兑换许多高价值物品"},{start:[11,14,20],end:[11,31,20],name:"圣诞小镇",eff:"在小镇中闲逛来获取随机掉落的物品"}],C={1014:{name:"世界糖尿病日",eff:"获得三倍的糖类效果增益"},1015:{name:"周年庆",eff:"左上角的TORN图标可以食用"},1025:{name:"黑色星期五",eff:"某些商家将提供1元购活动"},1114:{name:"住院日",eff:"获得降低75%的住院时间增益"},"0105":{name:"周末自驾游",eff:"获得双倍的赛车点数与赛车技能等级增益"},"0114":{name:"情人节",eff:"使用爱情果汁(Love Juice)后获得降低攻击与复活的能量消耗的增益"},"0204":{name:"员工激励日",eff:"获得三倍的工作点数与火车增益"},"0217":{name:"圣帕特里克日",eff:"获得双倍的酒类效果增益,城市中可以捡到绿色世涛(Green Stout)"},"0320":{name:"420日",eff:"获得三倍的大麻(Cannabis)效果增益"},"0418":{name:"博物馆日",eff:"获得10%提高的博物馆PT兑换增益"},"0514":{name:"世界献血日",eff:"获得减半的抽血CD和扣血增益"},"0611":{name:"世界人口日",eff:"获得双倍的通过攻击获取的经验的增益"},"0629":{name:"世界老虎日",eff:"获得5倍的狩猎技能增益"},"0705":{name:"国际啤酒节",eff:"获得5倍的啤酒物品效果增益"},"0827":{name:"旅游节",eff:"获得双倍的起飞后物品携带容量增益"},"0915":{name:"饮料节",eff:"获得双倍的能量饮料效果增益"}},I=[{name:"mex",show:"墨西哥",stocks:{Dahlia:"花","Jaguar Plushie":"偶"}},{name:"cay",show:"开曼",stocks:{"Banana Orchid":"花","Stingray Plushie":"偶"}},{name:"can",show:"加拿大",stocks:{Crocus:"花","Wolverine Plushie":"偶"}},{name:"haw",show:"夏威夷",stocks:{Orchid:"花","Large Suitcase":"大箱"}},{name:"uni",show:"嘤国",stocks:{Heather:"花","Red Fox Plushie":"赤狐","Nessie Plushie":"水怪"}},{name:"arg",show:"阿根廷",stocks:{"Ceibo Flower":"花","Monkey Plushie":"偶","Tear Gas":"催泪弹"}},{name:"swi",show:"瑞士",stocks:{Edelweiss:"花","Chamois Plushie":"偶"}},{name:"jap",show:"日本",stocks:{"Cherry Blossom":"花"}},{name:"chi",show:"祖国",stocks:{Peony:"花","Panda Plushie":"偶"}},{name:"uae",show:"迪拜",stocks:{"Tribulus Omanense":"花","Camel Plushie":"偶"}},{name:"sou",show:"南非",stocks:{"African Violet":"花","Lion Plushie":"偶",Xanax:"XAN"}}];class A extends s{constructor(){super(),this.className="TravelItem",this.apiUrl="https://yata.yt/api/v1/travel/export/",this.foreignStockInfo=null,window.setInterval(()=>y(this,void 0,void 0,function*(){f.getInstance().get()&&(ae.info("fetching ",this.apiUrl),this.foreignStockInfo=JSON.parse(yield V.COFetch(this.apiUrl)),ae.info({"fetch returned":this.foreignStockInfo}))}),3e4)}clickHandler(){return y(this,void 0,void 0,function*(){if(V.getScriptEngine()===c.RAW)new u('stock.png'.replace("{{}}",performance.now().toString()),"飞花库存");else{const e=new u("请稍后 "+V.loading_gif_html(),"飞花库存");let i='';const t=I,r=new Date,o=yield this.get();ae.info({res:o}),o&&o.stocks&&(t.forEach(t=>{var e=(r.getTime()-new Date(1e3*o.stocks[t.name].update).getTime())/1e3|0;i+=``;let n=0;for(o.stocks[t.name].stocks.forEach(e=>{t.stocks[e.name]&&(i+=`${t.stocks[e.name]} (${e.quantity})`,n++)});n<3;)n++,i+="";i+=""}),i+="
目的地 - 更新时间库存
${t.show}${e/60|0}分${e%60|0}秒前
",e.getElement().innerHTML=i)}})}get(){return y(this,void 0,void 0,function*(){return this.foreignStockInfo||(this.foreignStockInfo=JSON.parse(yield V.COFetch(this.apiUrl)))})}}class o extends s{constructor(){super(),this.className="CompanyHelper",L.get("CHTrainsDetectSwitch")&&this.trainsDetect().then()}detectNow(){this.trainsDetect(!0).then()}trainsDetect(n=!1){return y(this,void 0,void 0,function*(){var e,t;"icon73"!==(yield v.getInstance().getSessionData()).statusIcons.icons.company.iconID?ae.info("火车检测跳过:非公司老板"):(e=L.get("CHTrainsDetect")||0,n||V.getInstance().isNewDay(e,-6)?(e=V.getInstance().getTravelStage(),t=(yield v.getInstance().getUserState()).status,n&&ae.info({travelStage:e,userStatus:t}),e===S.IN_TORN&&"ok"===t?h.getInstance().fetchText("/companies.php").then(e=>{let t=document.createElement("div");var n=V.getInstance().matchOne(e,//);if(!n)throw ae.warn("火车检测: 无法获取数据"),new Error("火车检测: 无法获取数据");t.innerHTML=e.split(n)[1].split("")[0].trim().replaceAll('rel="stylesheet"',"").replaceAll(".css","?404").replaceAll('type="text/javascript"','type="application/json"');e=t.querySelector("span.trains");if(!e)throw ae.error("火车检测出错: 无法获取火车数"),new Error("火车检测出错: 无法获取火车数");n=parseInt(e.innerText),e=t.querySelectorAll(".company-rating .active").length/2||1;L.set("CHTrainsDetect",Date.now()),ae.info("火车检测: 火车/星级: "+n+"/"+e),ae.info({tmp:t}),20
火车检测:火车明日将溢出!${n}/20火车`,{timeout:15,force:!0,sysNotify:!0}),t.remove(),t=null}).catch(e=>{ae.error("火车检测出错",e)}):ae.warn("[火车检测] 用户状态错误,跳过火车检测",{travelStage:e,userStatus:t})):ae.info("火车检测:今日已提醒,跳过"))})}}class N extends s{constructor(){super(...arguments),this.className="Test"}test(){let e=new u(V.getInstance().getTravelStage().toString());e.getElement().__POOL__=N.getPool(),this.case3().then()}case1(){const e=document.createElement("DIV"),t=document.createElement("DIV");e.append(...document.body.childNodes),t.append(...document.head.childNodes),t.querySelectorAll('script[src*="google"]').forEach(e=>e.remove()),t.querySelectorAll("#gtm_tag").forEach(e=>e.remove()),t.querySelectorAll('script[src*="chat/gonline"]').forEach(e=>e.remove()),t.querySelectorAll("script[nonce]").forEach(e=>e.remove()),window.stop(),ae.info(document.body.outerHTML),document.body.innerHTML="",document.head.innerHTML="",document.body.append(...e.childNodes),document.body.insertAdjacentHTML("afterbegin",t.innerHTML)}case2(){document.head.insertAdjacentHTML("afterbegin",``)}case3(){return y(this,void 0,void 0,function*(){o.getInstance().detectNow()})}}class P extends s{constructor(){super(),this.className="BuyBeerHelper",this.isNotifying=!1,this.loopId=null,this.notifyHtml='啤酒小助手\r\n
提醒您:还有不到 50 秒 NPC 的商品就要刷新了,啤酒血包要抢的可以准备咯。\r\n
\r\n【啤酒店】\r\n【血包店】'.replace("{{}}",g.getInstance().getRandomInt(0,99).toString()),this.time=L.get("_15AlarmTime")||30}start(){this.loopId?ae.info("啤酒助手已在运行"):this.loopId=window.setInterval(()=>y(this,void 0,void 0,function*(){var{isTravelling:t,isAbroad:n}=yield v.getInstance().getUserState();if(t||n)this.stop();else{let e=new Date;t=[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()],n=L.get("_15_alarm_ignore")||"{}";if(JSON.stringify(t)!==JSON.stringify(n)){t=14-e.getMinutes()%15,n=60-e.getSeconds();if(0==t&&nthis.skip_today()),i.getElement().addEventListener("click",e=>{"a"===e.target.tagName.toLowerCase()&&i.close()});t=V.getInstance().audioPlay;window.setTimeout(t,800),window.setTimeout(t,1600),window.setTimeout(t,2400)}}else this.isNotifying=!1}}}),1e3)}stop(){this.loopId&&(window.clearInterval(this.loopId),this.loopId=null)}set_time(e){this.time=e}status(){return this.loopId?"已启动":"未启动"}is_running(){return null!==this.loopId}skip_today(){const e=new Date,t=(L.set("_15_alarm_ignore",[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()],!1),new E(`明早8点前将不再提醒 `));t.getElement().querySelector(".wh-notify-msg button").addEventListener("click",()=>L.set("_15_alarm_ignore",void 0,!0))}setTimeHandler(){let n=new u(`

区间为 1 ~ 60,默认 50

`,"啤酒提醒时间设定"),e=document.createElement("button");e.innerHTML="确定",e.style.float="right",e.addEventListener("click",()=>{let e=n.getElement().querySelector("input"),t=0|e.value;t!==L.get("_15AlarmTime")&&((t<1||60{if(0!==this.notifies.count)for(let e=0;e\r\n

主要用途:出院秒飞

\r\n

点起飞,页面加载完成后会马上飞走

\r\n
\r\n
\r\n \r\n \r\n

查看花偶库存

\r\n

注:需要验证时无法起飞

\r\n \r\n \r\n
',n.querySelectorAll("select")),r=(n.querySelector("button").addEventListener("click",()=>{sessionStorage["wh-quick-fly"]=`${t.selectedIndex} ${i.selectedIndex} `+(new Date).getTime(),window.location.href.contains("travelagency.php")?D.doQuickFly():(new E("正在转跳"),location.href="https://www.torn.com/travelagency.php")}),n.querySelector("a").addEventListener("click",e=>{e.preventDefault(),A.getInstance().clickHandler()}),n.querySelector("input").addEventListener("click",e=>{n.classList.toggle("wh-quick-fly-opt-hide");const t=e.target;t.value=" - "===t.value?" + ":" - "}),n.querySelector("info")),o=document.createElement("p"),a=document.createElement("p"),s=(r.append(o),r.append(a),[["~54分","~36分","~26分","~16分"],["~1时10分","~50分","~36分","~22分"],["~1时22分","~58分","~40分","~24分"],["~4时28分","~3时8分","~2时14分","~1时20分"],["~5时18分","~3时42分","~2时40分","~1时36分"],["~5时34分","~3时54分","~2时46分","~1时40分"],["~5时50分","~4时6分","~2时56分","~1时46分"],["~7时30分","~5时16分","~3时46分","~2时16分"],["~8时4分","~5时38分","~4时2分","~2时24分"],["~9时2分","~6时20分","~4时30分","~2时42分"],["~9时54分","~6时56分","~4时58分","~2时58分"]]);var e=function(){o.innerHTML="往返时间:"+s[t.selectedIndex][i.selectedIndex]};t.addEventListener("change",e),i.addEventListener("change",e),document.body.append(n),e(),a.innerHTML="药CD剩余:"+V.getYaoCD()}}}class _ extends s{constructor(){super(...arguments),this.className="NNB"}handle(){let{isPDA:t,PDA_APIKey:n}=l.getInstance();var e='\r\n

\r\n

NNBNatural Nerve Bar)意思是:扣除所有加成后,玩家本身的犯罪条上限,可用于衡量大佬隐藏的犯罪技能等级\r\n

\r\n

一般来说,左侧红色的犯罪条(Nerve Bar/NB)的上限都是包含加成的,如来自帮派、天赋的加成等。额外的加成不会影响玩家的犯罪技能\r\n

\r\n

查看NNB的方法很简单,在Torn主页面的最下方有一栏Perks,NB-Perks=NNB

\r\n
\r\n

以下是两种计算NNB的方法:

\r\n \r\n \r\n
\r\n'.replace("{{}}",localStorage.getItem("APIKey")||"不可用").replace("{{}}",t?n:"不可用");const i=new u(e,"查看NNB").getElement(),r=i.querySelector("input"),o=i.querySelector("p");i.querySelector("button").addEventListener("click",e=>{let i=e.target;if(i.style.display="none",o.innerHTML="加载中",r.checked){e=t?n:window.localStorage.getItem("APIKey");window.fetch("https://api.torn.com/user/?selections=bars,perks&key="+e).then(e=>e.json()).then(e=>{if(e.error)return o.innerHTML="出错了 "+JSON.stringify(e.error),void(i.style.display=null);var t=e.nerve.maximum;let n=0;Object.values(e).forEach(e=>{e instanceof Array&&e.forEach(e=>{(e=e.toLowerCase()).includes("maximum nerve")&&(n+=0|new RegExp("[0-9].").exec(e)[0])})}),o.innerHTML="NNB: "+(t-n),i.style.display=null})}else{if(window.location.href.includes("index.php")&&document.title.includes("Home")){e=0|document.querySelector('#barNerve p[class^="bar-value___"]').innerText.split("/")[1];let n=0;return document.querySelectorAll("#personal-perks li").forEach(e=>{const t=e.innerText.toLowerCase();t.includes("maximum nerve")&&(n+=0|/[0-9]./.exec(t)[0])}),o.innerHTML="NNB: "+(e-n),void(i.style.display=null)}o.innerHTML='不在主页面,点击前往',i.style.display=null}})}}class H extends s{constructor(){super(),this.className="QuickLinksHandler",this.styleAdded=!1,this.list=[];let e=this.list;e.push({name:"生存手册",url:"https://docs.qq.com/doc/DTVpmV2ZaRnB0RG56",new_tab:!0,img:"https://www.torn.com/images/items/293/medium.png"}),e.push({name:"抢啤酒",url:"https://www.torn.com/shops.php?step=bitsnbobs",new_tab:!0,img:"https://www.torn.com/images/items/180/medium.png"}),e.push({name:"买XAN",url:"https://www.torn.com/imarket.php#/p=shop&step=shop&type=&searchname=Xanax",new_tab:!0,img:"https://www.torn.com/images/items/206/medium.png"}),e.push({name:"起飞",url:"https://www.torn.com/travelagency.php",new_tab:!0,img:"https://www.torn.com/images/items/396/medium.png"}),e.push({name:"买PT",url:"https://www.torn.com/pmarket.php",new_tab:!0,img:"https://www.torn.com/images/items/722/medium.png"}),e.push({name:"租PI",url:"https://www.torn.com/properties.php?step=rentalmarket#/property=13",new_tab:!1,img:"https://www.torn.com/images/v2/properties/350x230/350x230_default_private_island.png"}),e.push({name:"找工作",url:"https://www.torn.com/joblist.php#!p=main",new_tab:!1,img:"https://www.torn.com/images/items/421/medium.png"}),e.push({name:"下悬赏",url:"https://www.torn.com/bounties.php#/p=add",new_tab:!1,img:"https://www.torn.com/images/items/431/medium.png"})}handle(){this.styleAdded||(V.addStyle(".wh-link-collection-cont a {\r\n display: inline-block;\r\n border: solid 1px #b3b3b3;\r\n border-radius: 4px;\r\n margin: 0 5px 2px 0;\r\n padding: 4px 8px;\r\n text-align: center;\r\n background: #efefef;\r\n background: linear-gradient(#f1f1f1, #e3e3e3);\r\n color: black !important;\r\n}\r\n\r\n.wh-link-collection-cont span {\r\n display: block;\r\n /*padding: 0 4px 8px;*/\r\n}\r\n\r\n.wh-link-collection-cont .wh-link-collection-img {\r\n display: block;\r\n width: 60px;\r\n height: 30px;\r\n background-size: 100% auto !important;\r\n}"),this.styleAdded=!0);const e=this.list;let t="

",n=(e.forEach(e=>{t+=`${e.name}`}),t+="

",new u(t,"常用链接"));n.getElement().classList.add("wh-link-collection-cont"),n.getElement().addEventListener("click",e=>{let t=e.target;"a"!==t.tagName.toLowerCase()&&"span"!==t.tagName.toLowerCase()||n.close()})}}class B extends s{constructor(){super(...arguments),this.className="ItemPriceWatcherHandler"}handle(){const n=L.get("priceWatcher"),i=JSON.stringify(n);var e='\r\n

输入需要监视的价格,低于该价格发出通知,-1为关闭

\r\n

注:需要APIKey,当前可用APIKey为
\r\n (来自冰蛙)
\r\n (来自PDA)\r\n

\r\n

PT

\r\n

XAN

\r\n

\r\n \r\n

'.replace("{{}}",localStorage.getItem("APIKey")||"不可用").replace("{{}}",l.getInstance().isPDA?l.getInstance().PDA_APIKey:"不可用").replace("{{}}",n.pt||-1).replace("{{}}",n.xan||-1);const r=new u(e,"价格监视设置");r.getElement().querySelector("button").onclick=()=>{var[e,t]=Array.from(r.getElement().querySelectorAll('input[type="number"]'));n.pt=0|e.value,n.xan=0|t.value,JSON.stringify(n)!==i&&L.set("priceWatcher",n),r.close()}}}class R extends s{constructor(){super(...arguments),this.className="MDUtils"}parse(e,t){t=t||500;const i=document.createElement("div");let n=e.split("\n"),r=(n.length>t&&(n=n.slice(0,t)).push("..."),""),o;return n.forEach(t=>{if(""!==t.trim()){let e;var n=t.split(" ")[0];switch(n){case"#":case"##":case"###":return"li"===r&&(o=null),r="h"+(n.length+1),(e=document.createElement(r)).innerText=t.slice(n.length+1),void i.append(e);case"-":return"li"!==r&&(o=document.createElement("ul"),i.contains(o)||i.append(o)),r="li",(e=document.createElement(r)).innerText=t.slice(2),void o.append(e)}r="p",(e=document.createElement(r)).innerText=t.trim(),i.append(e)}}),i}}class q extends s{constructor(){super(...arguments),this.className="ChangeLogHandler"}handle(){let t=new u('更新历史:
https://gitlab.com/JJins/wuhu-torn-helper/-/blob/dev/CHANGELOG.md
',"更新历史").getElement(),n=(t.classList.add("wh-changeLog"),document.createElement("div")),i=(n.style.height="2px",n.style.width="1%",n.style.backgroundColor="red",document.createElement("p")),e=(i.innerText="加载更新文件……",i.style.textAlign="center",document.createElement("style"));e.innerHTML=".wh-changeLog h2,.wh-changeLog h3,.wh-changeLog h4 {margin:8px 0;}.wh-changeLog li{list-style: inside;}",t.append(n,i,e),V.COFetch("https://gitlab.com/JJins/wuhu-torn-helper/-/raw/dev/CHANGELOG.md?"+performance.now()).then(e=>{n.style.width="60%",i.innerText="解析中……";e=R.getInstance().parse(e);t.append(e),n.style.width="100%",i.innerText="加载完成",window.setTimeout(()=>{n.remove(),i.remove()},3e3)}).catch(e=>{ae.error(e),n.remove(),i.innerText="无法加载"})}}class F extends s{constructor(){super(...arguments),this.className="UpdateTranslateDict"}handle(){new E("计划中")}}function O(){let e=document.createElement("p"),t=document.createElement("input"),n=document.createElement("button"),i=document.createElement("button"),r=document.createElement("button"),o=document.createElement("button");var a=document.createElement("br");e.innerHTML="飞机落地后转跳的页面,关闭功能请置空:",t.placeholder="URL",t.value=L.get("landedRedirect")||"",t.style.display="block",t.style.textAlign="left",t.style.width="100%",t.style.padding="8px",t.style.margin="8px -8px",n.innerHTML="保存",i.innerHTML="填入公司金库",r.innerHTML="填入帮派金库金库",o.innerHTML="测试链接",n.addEventListener("click",()=>L.set("landedRedirect",t.value,!0)),i.addEventListener("click",()=>t.value="https://www.torn.com/companies.php#/option=funds"),r.addEventListener("click",()=>t.value="https://www.torn.com/factions.php?step=your#/tab=armoury"),o.addEventListener("click",()=>window.open(t.value));let s=new u("","落地转跳").getElement();s.append(e,t,n,a,i,r,o)}class G extends s{constructor(){super(...arguments),this.className="ViewLogsHandler"}handle(){let e=ae.getCounter(),i=new u('\r\n

{{}}信息 {{}}警告 {{}}错误\r\n \r\n

\r\n
加载中
'.replace("{{}}",e.info.toString()).replace("{{}}",e.warning.toString()).replace("{{}}",e.error.toString()),"查看日志");window.setTimeout(()=>{let e=i.getElement().querySelector("div"),n=document.createElement("div"),t=ae.getLogs().split("\r\n");t.forEach(e=>{let t=document.createElement("p");(t.innerText=e).slice(0,10).includes("ERR")?t.style.backgroundColor="#ff000080":e.slice(0,10).includes("WRN")&&(t.style.backgroundColor="#ffff0080"),n.append(t)}),i.getElement().querySelector("button").addEventListener("click",()=>window.setTimeout(()=>{V.getInstance().exportTextFile("wuhu_log_"+ae.getTime().replace("[","").replace("]","").replace(" ","").replace(".","").replaceAll("-","").replaceAll(":","")+".log",[ae.getLogs()])},0)),e.innerHTML="",e.append(n)},0)}}class W{constructor(e,t){ae.info("创建DialogMsgBox",{msg:e,opt:t});let{title:n="提示",callback:i,cancel:r}=t;if(!i)throw ae.error("无callback"),new Error("无callback");if(W.existed)throw ae.error("无法创建DialogMsgBox:已存在"),new Error("无法创建DialogMsgBox:已存在");this.container=document.createElement("div"),this.container.id="wh-dialog",this.container.innerHTML='\r\n
\r\n
{{}}
\r\n
\r\n
{{}}
\r\n
\r\n \r\n \r\n
\r\n
\r\n
'.replace("{{}}",n).replace("{{}}",e);let[o,a]=Array.from(this.container.querySelectorAll("button"));o.addEventListener("click",()=>{i(this.container),this.destroy()}),a.addEventListener("click",()=>{r&&r(),this.destroy()}),document.body.append(this.container),W.existed=!0}destroy(){this.container.remove(),W.existed=!1}}W.existed=!1;var j='
\r\n
常用犯罪
\r\n
\r\n \x3c!--18-1--\x3e\r\n
\r\n \r\n \r\n \r\n
\r\n \x3c!--15-3--\x3e\r\n
\r\n \r\n \r\n \r\n
\r\n \x3c!--仓库--\x3e\r\n
\r\n \r\n \r\n \r\n
\r\n \x3c!--7-2--\x3e\r\n
\r\n \r\n \r\n \r\n
\r\n \x3c!--偷夹克--\x3e\r\n
\r\n \r\n \r\n \r\n
\r\n \x3c!--卖碟3-1--\x3e\r\n
\r\n \r\n \r\n \r\n
\r\n \x3c!--捡钱--\x3e\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
';class U extends s{constructor(){super(...arguments),this.className="IFrameCrimeHandler"}handle(){const t='';var e=`

加载中请稍后${V.loading_gif_html()}

`;const n=new u(e,"小窗快速犯罪").getElement();let i=n.querySelector("p:first-of-type");const r=n.querySelector("#wh-quick-crime-if-container"),o=(r.innerHTML=t,document.createElement("div"));o.classList.add("wh-translate"),o.innerHTML=j;let a=n.querySelector("iframe");const s=()=>{const e=a.contentWindow.document;var t=a.contentWindow.WHTRANS,n=(i&&i.remove(),a.style.display="block",e.querySelector("h4#skip-to-content").innerText.toLowerCase().includes("validate"));void 0===t&&(V.elementReady("#header-root",e).then(e=>e.style.display="none"),V.elementReady("#sidebarroot",e).then(e=>e.style.display="none"),V.elementReady("#chatRoot",e).then(e=>e.style.display="none"),n||(e.body.style.overflow="hidden"),V.elementReady(".content-wrapper",e).then(n=>{n.prepend(o),n.style.margin="0px",n.style.position="absolute",n.style.top="-35px",new MutationObserver((e,t)=>{t.disconnect(),n.querySelector(".wh-translate")||n.prepend(o),t.observe(n,{childList:!0,subtree:!0})}).observe(n,{childList:!0,subtree:!0})}),V.elementReady("#go-to-top-btn button",e).then(e=>e.style.display="none"))};a.onload=s;let l=0,c=window.setInterval(()=>{if(!(i=n.querySelector("p:first-of-type")))return clearInterval(c),void(c=void 0);if(0<++l&&!i.querySelector("button")){const e=document.createElement("button");e.innerHTML="重新加载",e.onclick=()=>{e.remove(),l=0,r.innerHTML=null,r.innerHTML=t,(a=n.querySelector("iframe")).onload=s},i.append(e)}},1e3)}}function z(){try{return(JSON.parse(localStorage.getItem("wh_trans_settings"))||{}).isDev||!1}catch(e){return console.error("[wh] dev状态错误 "+e),!1}}const Ie={error:(...e)=>z()&&console.error("[WH]",...e),info:(...e)=>z()&&console.log("[WH]",...e),debug:z};function J(e){if(e===c.PDA){let r=document.querySelector("#wh-gs-loader-ifr");if(r)return void new E("飞贼小助手已经加载了");const n=document.createElement("div");n.id="wh-gs-loader",(r=document.createElement("iframe")).id="wh-gs-loader-ifr",r.src="https://www.torn.com/crimes.php",n.append(r),document.body.append(n);{var t=` #wh-gs-loader { position:fixed; top:0; left:0; z-index:100001; } -`;let e=document.querySelector("style#wh-trans-gStyle");e?e.innerHTML+=t:((e=document.createElement("style")).id="wh-trans-gStyle",e.innerHTML=t,document.head.append(e)),Ie.info("CSS规则已添加",e)}let a=new E("加载中");void(o.onload=()=>{a.close();const i=o.contentWindow,n=i.document;n.head.innerHTML="",n.body.innerHTML="",a=new E("加载依赖"),M.COFetch("https://cdn.staticfile.org/vue/2.2.2/vue.min.js").then(e=>{a.close(),i.eval(e),i.GM_getValue=(e,t=void 0)=>{return JSON.parse(i.localStorage.getItem("wh-gs-storage")||"{}")[e]||t},i.GM_setValue=(e,t)=>{const n=JSON.parse(i.localStorage.getItem("wh-gs-storage")||"{}");n[e]=t,i.localStorage.setItem("wh-gs-storage",JSON.stringify(n))},i.GM_xmlhttpRequest=function(t){"post"!==t.method.toLowerCase()&&M.COFetch(t.url).then(e=>{t.onload({responseText:e})})},a=new E("加载飞贼小助手"),M.COFetch("https://gitee.com/ameto_kasao/tornjs/raw/master/GoldenSnitch.js?"+performance.now()).then(e=>{i.eval(e.replace("http://222.160.142.50:8154/mugger","https://api.ljs-lyt.com/mugger")),i.GM_setValue("gsp_x",10),i.GM_setValue("gsp_y",10),a.close(),a=new E("飞贼小助手已加载",{timeout:1});const t=n.querySelector("#gsp");e=()=>{o.style.height=t.offsetHeight+10+"px",o.style.width=t.offsetWidth+20+"px",t.style.top="10px",t.style.left="10px"};new MutationObserver(e).observe(t,{childList:!0,subtree:!0}),e(),Ie.debug()&&i.GM_setValue("gsp_showContent",!0)})})})}else if(e===c.GM)if("function"!=typeof window.Vue){let t=new E("正在加载依赖");M.COFetch("https://cdn.staticfile.org/vue/2.2.2/vue.min.js").then(e=>{window.eval(e),t.close(),t=new E("已载入依赖"),window.GM_getValue=(e,t=void 0)=>{return JSON.parse(window.localStorage.getItem("wh-gs-storage")||"{}")[e]||t},window.GM_setValue=(e,t)=>{const n=JSON.parse(window.localStorage.getItem("wh-gs-storage")||"{}");n[e]=t,window.localStorage.setItem("wh-gs-storage",JSON.stringify(n))},M.COFetch("https://gitee.com/ameto_kasao/tornjs/raw/master/GoldenSnitch.js?"+performance.now()).then(e=>{window.eval(e),Ie.debug()&&window.GM_setValue("gsp_showContent",!0),t.close(),t=new E("已载入飞贼助手")}).catch(e=>new E("PDA API错误。"+JSON.stringify(e)))}).catch(e=>new E(JSON.stringify(e)))}else new E("飞贼助手已经加载了");else new E("暂不支持")}class Y extends s{constructor(){super(...arguments),this.className="AdditionalSettingsHandler"}handle(){let t=new u("","更多设定"),e=[{domType:"button",domId:"",domText:"清空设置",clickFunc(){new W("将清空所有芜湖助手相关设置并刷新页面,确定?",{callback:()=>{localStorage.removeItem("wh_trv_alarm"),localStorage.removeItem("wh_trans_settings"),localStorage.removeItem("whuuid"),localStorage.removeItem("wh-gs-storage"),localStorage.removeItem("WHTEST"),new E("已清空,刷新页面"),window.location.reload()}})}},{domType:"button",domId:"",domText:"通知权限",clickFunc(){}},{domType:"button",domId:"",domText:"第三方API通信权限",clickFunc(){}},{domType:"button",domId:"",domText:"小窗犯罪",clickFunc(){U.getInstance().handle()}},{domType:"button",domId:"",domText:"飞贼小助手",tip:"加载从PC端移植的伞佬的油猴版飞贼小助手",clickFunc(){J(M.getScriptEngine())}}];e.forEach(e=>t.getElement().append(M.getInstance().elemGenerator(e,t.getElement())))}}class K extends s{constructor(){super(),this.className="CustomCssHandler"}handle(){let e=new u('
',"自定义CSS"),t=e.getElement().querySelector("textarea"),n=e.getElement().querySelector("button");t.value=L.get("CustomCss")||"",n.addEventListener("click",()=>{L.set("CustomCss",t.value||"",!0)})}}class X extends s{constructor(){super(),this.className="SettingsHandler",this.list=[],this.constructWuhuSettingList()}handler(){let e=new w,n=(re.info("构造设置开始"),new u(M.loading_gif_html(),"芜湖助手设置"));window.setTimeout(()=>{let t=document.createElement("div");t.classList.add("gSetting"),this.list.forEach(e=>M.getInstance().elemGenerator(e,t)),t.querySelector("#wh-qua-alarm-check-btn").addEventListener("click",()=>P.getInstance().skip_today()),n.getElement().innerHTML="",n.getElement().appendChild(t),window.initializeTooltip&&window.initializeTooltip("#wh-popup-cont","white-tooltip"),re.info("构造设置结束 "+e.getTimeMs())},0)}constructWuhuSettingList(){let e=new w;re.info("构造设置列表开始");const t=new Date;let n=P.getInstance(),i=this.list;return 11===t.getMonth()&&(i.push({domType:"plain",domId:"",domHTML:"圣诞小镇",tagName:"h4"}),i.push({domType:"checkbox",domId:"wh-xmastown-wt",domText:" 圣诞小镇攻略",dictName:"xmasTownWT",isHide:!0}),i.push({domType:"checkbox",domId:"wh-xmastown-notify",domText:" 圣诞小镇物品提示",dictName:"xmasTownNotify",isHide:!0})),i.push({domType:"plain",domId:"",domHTML:"翻译",tagName:"h4"}),i.push({domType:"checkbox",domId:"wh-trans-enable",domText:" 开启翻译",dictName:"transEnable",isHide:!0}),i.push({domType:"button",domId:"",domText:"更新翻译词库",isTornBtn:!0,clickFunc:()=>F.getInstance().handle()}),i.push({domType:"plain",domId:"",domHTML:"战斗",tagName:"h4"}),i.push({domType:"select",domId:"wh-quick-attack-index",domText:"光速拔刀 ",domSelectOpt:[{domVal:"pri",domText:"主手"},{domVal:"sec",domText:"副手"},{domVal:"wea",domText:"近战"},{domVal:"gre",domText:"手雷"},{domVal:"fis",domText:"拳头"},{domVal:"kic",domText:"脚踢"},{domVal:"none",domText:"关闭"}],dictName:"quickAttIndex",tip:"将Start Fight按钮移动到指定格子上"}),i.push({domType:"select",domId:"wh-quick-mug",domText:"光速跑路 ",domSelectOpt:[{domVal:"leave",domText:"跑路(LEAVE)"},{domVal:"mug",domText:"打劫(MUG)"},{domVal:"hosp",domText:"住院(HOSP)"},{domVal:"none",domText:"关闭"}],dictName:"quickFinishAtt",tip:"将结束后指定按钮移动到上面指定的格子上"}),i.push({domType:"checkbox",domId:"wh-attack-relocate",domText:" 真·攻击界面转跳",dictName:"attRelocate",tip:"在无法打开攻击界面的情况下依然可以转跳到正确的攻击页面,(失效,Ched疑似已移除此转跳)"}),i.push({domType:"select",domId:"",domText:"盯梢模式强度 ",domSelectOpt:[{domVal:"550",domText:"强"},{domVal:"950",domText:"标准"},{domVal:"1450",domText:"弱"}],dictName:"WatchTargetFreq",tip:"越强盯得越紧(刷新越快),越容易触发Torn大流量保护机制
强 ~0.6s
标准 ~1s
弱 ~1.5s"}),i.push({domType:"plain",domId:"",domHTML:"飞行",tagName:"h4"}),i.push({domType:"checkbox",domId:"wh-energy-alert",domText:" 起飞爆E警告",dictName:"energyAlert",tip:"起飞前计算来回是否会爆体,红字警告",isHide:!0}),i.push({domType:"checkbox",domId:"wh-trv-alarm-check",domText:" 飞行闹钟",dictName:"trvAlarm",tip:"(仅PC) 飞行页面将显示一个内建的闹钟,落地前声音提醒,需要打开浏览器声音权限",isHide:!0}),i.push({domType:"checkbox",domId:"",domText:" 海外警告",dictName:"abroadWarning",tip:"海外落地后每30秒通知警告"}),i.push({domType:"button",domId:"",isTornBtn:!0,domText:"落地转跳",clickFunc:O}),i.push({domType:"plain",domId:"",domHTML:"公司",tagName:"h4"}),i.push({domType:"checkbox",domId:"",domText:" 浮动存钱框",dictName:"floatDepo",tip:"打开公司或帮派的存钱页面后存钱框将浮动显示"}),i.push({domType:"checkbox",domId:"",domText:" 公司转跳存钱",dictName:"companyRedirect",tip:"打开公司页面时自动打开存钱选项卡"}),i.push({domType:"checkbox",domId:"",domText:" 收起公司冰蛙效率表",dictName:"companyBWCollapse",tip:"开启后可手动显示隐藏冰蛙公司表格"}),i.push({domType:"checkbox",domId:"",domText:" 任何位置一键存钱",dictName:"companyDepositAnywhere",tip:"在所有页面显示一键存钱按钮,Torn OK状态下可用,此功能未完全测试无害,使用请慎重"}),i.push({domType:"checkbox",domId:null,domText:"火车检测",dictName:"CHTrainsDetectSwitch",tip:"检测明日火车是否会超出上限,需要系统通知权限"}),i.push({domType:"plain",domId:"",domHTML:"啤酒",tagName:"h4"}),i.push({domType:"checkbox",domId:"wh-qua-alarm-check",domText:' 啤酒提醒 ',dictName:"_15Alarm",tip:"每小时的整15分钟的倍数时通知提醒抢啤酒或者血包",isHide:!0,changeEv:function(e){e.target.checked?n.start():n.stop()}}),i.push({domType:"button",domId:"",isTornBtn:!0,domText:"啤酒提醒状态",clickFunc:function(){new E("啤酒提醒"+n.status())}}),i.push({domType:"button",domId:"",domText:"啤酒提醒时间设定",isTornBtn:!0,clickFunc:()=>P.getInstance().setTimeHandler()}),i.push({domType:"plain",domId:"",domHTML:"个人资料",tagName:"h4"}),i.push({domType:"checkbox",domText:"隐藏个人资料头像",dictName:"HideProfileImg",domId:""}),i.push({domType:"checkbox",domText:"显示曾用名",dictName:"ShowNameHistory",domId:""}),i.push({domType:"plain",domId:"",domHTML:"侧边栏",tagName:"h4"}),i.push({domType:"checkbox",domId:"",domText:" 4条转跳",dictName:"barsRedirect",tip:"点击4条时转跳对应页面,手机端不建议开启"}),i.push({domType:"checkbox",domId:"",domText:" 添加隐藏边栏按钮",dictName:"HideSidebarBtn",tip:"仅PC"}),i.push({domType:"plain",domId:"",domHTML:"其他",tagName:"h4"}),i.push({domType:"checkbox",domId:"wh-mission-lint",domText:" 任务助手",dictName:"missionHint",tip:"Duke任务的一些中文小提示",isHide:!0}),i.push({domType:"checkbox",domId:"wh-city-finder",domText:" 捡垃圾助手",dictName:"cityFinder",tip:"城市地图中放大显示物品并且估计价值",isHide:!0}),i.push({domType:"checkbox",domId:"wh-quick-crime",domText:" 快速犯罪",dictName:"quickCrime",tip:"显示快捷操作按钮,目前不支持自定义",isHide:!0}),i.push({domType:"checkbox",domId:"wh-SEProtect-check",domText:" 叠E保护",dictName:"SEProtect",tip:"隐藏健身房的锻炼按钮,防止误操作",isHide:!0}),i.push({domType:"checkbox",domId:"wh-ptQuickBuy-check",domText:" PT一键购买",dictName:"ptQuickBuy",tip:"PT市场页面购买时跳过确认",isHide:!0}),i.push({domType:"checkbox",domId:null,domText:" 搜索页空白占位区",dictName:"SearchPagePlaceholder"}),i.push({domType:"checkbox",domId:null,domText:" 解决一直转圈(加载中)的问题",dictName:"SolveGoogleScriptPendingIssue",tip:"Torn引入Google登陆后可能会出现这种问题
启用功能影响:
页面加载速度变慢,与其他插件冲突,如遇到问题请关闭
并使用其他更科学的方法解决"}),i.push({domType:"checkbox",domId:null,domText:" 记住图标位置",dictName:"SaveIconPosition",tip:"记住图标移动后的位置"}),i.push({domType:"checkbox",domId:"wh-dev-mode",domText:"开发模式",dictName:"isDev",isHide:!0}),i.push({domType:"button",domId:null,domText:"自定义CSS",isTornBtn:!0,clickFunc:()=>K.getInstance().handle()}),i.push({domType:"button",domId:null,domText:"查看日志",isTornBtn:!0,clickFunc:()=>G.getInstance().handle()}),i.push({domType:"button",domId:"wh-otherBtn",domText:"更多设定",isTornBtn:!0,clickFunc:()=>Y.getInstance().handle()}),re.info("构造设置列表结束"+e.getTimeMs()),this}}class d extends s{constructor(){super(),this.className="ZhongIcon",this.menuItemList=null}init(){re.info("ZhongIcon初始化, 设置图标开始"),this.constructMenuList().insert2Dom().dragHandler(),re.info("设置图标结束, ZhongIcon初始化结束")}insert2Dom(){let n=document.querySelector("div#wh-trans-icon"),i=this.menuItemList,e=s.glob["version"];if(self!==top||n)return null;n=document.createElement("div"),(d.ZhongNode=n).id="wh-trans-icon",n.classList.add("cont-gray"),n.innerHTML='
\n \n
\n
\n
\n
芜湖助手
\n
\n
\n

当前版本: {{}}\n \n

\n
\n

最新版本:

\n

\n
\n
'.replace("{{}}","$"===e.slice(-1)?"DEV":e);const t=n.querySelector("#wh-gSettings");var o,a;this.menuItemList.forEach(e=>M.getInstance().elemGenerator(e,t)),re.info("生成元素插入完成"),n.initTimer=n.querySelector("#wh-inittimer"),n.querySelector("#wh-trans-icon-btn").onclick=()=>{n.classList.toggle("wh-icon-expanded");const t=e=>{re.info(e.target),e.target===n.querySelector("#wh-trans-icon-btn")||n.contains(e.target)||(re.info("移除事件监听器"),document.body.removeEventListener("click",t),n.classList.remove("wh-icon-expanded"))};n.classList.contains("wh-icon-expanded")?(re.info("芜湖助手图标点击->添加监听"),document.body.addEventListener("click",t)):(re.info("芜湖助手图标->移除监听"),document.body.removeEventListener("click",t))},n.querySelector("#wh-update-btn").onclick=e=>{e.target.blur();new u('

电脑

\n

通常电脑浏览器装有油猴等用户脚本扩展时可以使用链接安装(自动更新):点此安装。

\n

这些扩展长这样:tm.pngvm.png\n

\n

\n

手机

\n

安卓 KIWI 等可以用油猴脚本的浏览器也可以点上面的链接安装👆

\n

Torn PDA app 或 Alook 用户可打开这个网页快捷复制粘贴。

\n

直接复制

\n

加载脚本然后直接复制粘贴到用户脚本处。

\n

\n \n

',"如何更新").getElement().querySelector("button").onclick=e=>y(this,void 0,void 0,function*(){let t=e.target;t.innerHTML="加载中";const n=yield M.COFetch("https://jjins.github.io/fyfuzhi/release.min.user.js?"+performance.now());t.innerHTML="点击复制到剪切板",t.onclick=()=>{const e=document.createElement("textarea");e.innerHTML=n,t.parentElement.append(e),e.focus(),e.select(),document.execCommand("Copy"),e.remove(),t.innerHTML="已复制",t.onclick=null,new E("脚本已复制,请前往粘贴")}})},n.querySelectorAll("#wh-trans-fest-date button").forEach((e,t)=>0===t?e.addEventListener("click",()=>{let t="";i.fest_date_list.sort().forEach(e=>t+=``),new u(t+="
${1+(0|e.slice(0,2))}月${e.slice(2)}日${i.fest_date_dict[e].name}${i.fest_date_dict[e].eff}
","节日")}):e.addEventListener("click",null)),n.querySelectorAll("#wh-trans-event-cont button").forEach((e,t)=>0===t?e.addEventListener("click",()=>{let t="";i.events.forEach(e=>t+=``),new u(t+="
${e.name}${e.start[0]+1}月${e.start[1]}日${e.start[2]}:00~${e.end[0]+1}月${e.end[1]}日${e.end[2]}:00
${e.eff}

更多信息请关注群聊和公众号

","活动")}):e.addEventListener("click",null)),L.get("SaveIconPosition")&&(o=L.get("IconPosition"),a={x:document.documentElement.offsetWidth,y:document.documentElement.offsetHeight},d.setPosition(o.x>a.x?.9*a.x|0:o.x,o.y>a.y?.9*a.y|0:o.y)),document.body.append(n),re.info("引入torn自带浮动提示"),window.initializeTooltip&&window.initializeTooltip(".wh-container","white-tooltip"),re.info("加载torn mini profile");let r={id:window.setInterval(()=>{if(r.counter++,window.$||window.unsafeWindow&&window.unsafeWindow.$){{var t="#wh-trans-icon";let e={timeout:0,clickable:!1,rootElement:null,targetElement:null,rootId:"profile-mini-root",rootSelector:"#profile-mini-root",userNameSelector:"a[href*='profiles.php?XID=']",contentWrapper:t,setClickable:function(e){this.clickable=e},setRootElement:function(){document.getElementById(this.rootId)?(window.ReactDOM.unmountComponentAtNode($(this.rootSelector).get(0)),this.rootElement=document.getElementById(this.rootId)):(this.rootElement=document.createElement("div"),this.rootElement.classList.add(this.rootId),this.rootElement.id=this.rootId,$("body").append(this.rootElement))},subscribeForHideListeners:function(){const t=this;let n=$(window).width();function i(e){$(this).width()!==n&&(n=$(this).width(),a.call(t,e))}function o(e){document.activeElement.classList.contains("send-cash-input")||a.call(t,e)}function a(e){0!==$(e.target).closest(this.rootSelector).length&&!["resize","scroll"].includes(e.type)||(t.targetElement=null,window.ReactDOM.unmountComponentAtNode($(this.rootSelector).get(0)),$(this.userNameSelector).off("click",this.handleUserNameClick),$(this.userNameSelector).unbind("contextmenu"),$(document).off("click",a),$(window).off("hashchange",a),$(window).off("resize",i),$(window).off("scroll",o))}$(document).on("click",a.bind(this)),$(window).on("hashchange",a.bind(this)),$(window).on("resize",i),t.targetElement.closest("#chatRoot")&&$(window).on("scroll",o)},subscribeForUserNameClick:function(){$(this.userNameSelector).click(this.handleUserNameClick.bind(this))},handleUserNameClick:function(){if(!this.clickable)return this.setClickable(!0),!1},subscribeForContextMenu:function(e){$(e).on("contextmenu",function(e){return e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),!1})},handleMouseDown:function(){const n=this;$(this.contentWrapper).on("mousedown touchstart",this.userNameSelector,function(t){return(1===t.which||"touchstart"===t.type)&&(n.targetElement=t.currentTarget,n.subscribeForContextMenu(n.targetElement),n.handleFocusLost(t.currentTarget),n.timeout=setTimeout(function(){"touchstart"!==t.type?(n.setClickable(!1),n.subscribeForUserNameClick()):$(t.currentTarget).off("touchmove mouseleave"),n.subscribeForHideListeners(),n.setRootElement();var e={userID:t.currentTarget.search.slice("?XID=".length),event:t.originalEvent};window.renderMiniProfile(n.rootElement,e)},500),"touchstart"===t.type&&void 0)})},handleMouseUp:function(){const e=this;$(this.contentWrapper).on("mouseup touchend",this.userNameSelector,function(){e.timeout&&clearTimeout(e.timeout)})},handleFocusLost:function(e){const t=this;$(e).on("touchmove mouseleave",function e(){t.timeout&&clearTimeout(t.timeout),$(this).off("touchmove mouseleave",e)})},init:function(){this.handleMouseDown(),this.handleMouseUp()}};e.init()}window.clearInterval(r.id)}30${t.player_info.playername}[${t.player_info.userID}]`}),": ");var t=C,o=(n.fest_date_dict=t,n.fest_date_list=Object.keys(t),o=r.getUTCMonth(),a=r.getUTCDate(),(o<10?"0"+o:o.toString())+(a<10?"0"+a:a.toString()));if(t[o])i+=`今天 - ${t[o].name}()`;else{let e=Object.keys(t);e.push(o);var a=e.sort().indexOf(o)+1,o=t[e[a]||e[0]],t=(new Date(a!==e.length?r.getUTCFullYear():r.getUTCFullYear()+1,0|e[a!==e.length?a:0].slice(0,2),0|e[a!==e.length?a:0].slice(2),8).getTime()-r.getTime())/864e5|0;i+=`${t}天后 - ${o.name}()`}n.push({domType:"plain",domId:"wh-trans-fest-date",domHTML:i});let s={onEv:!1,daysLeft:1/0,events:T};return n.events=s.events,s.events.forEach((e,t)=>{if(!s.onEv){var n=r.getFullYear();const o=new Date(n,e.start[0],e.start[1],e.start[2]),a=new Date(n,e.end[0],e.end[1],e.end[2]);if(o活动: ",s.onEv?s.html+=`${s.current.name}() - 剩余${s.daysLeft}天`:s.html+=`${s.daysLeft}天后 - ${s.next.name}()`,n.push({domType:"plain",domId:"wh-trans-event-cont",domHTML:s.html}),n.push({domType:"button",domId:"wh-quick-fly-btn",domText:"✈️ 一键起飞",clickFunc:()=>D.getInstance().handle()}),n.push({domType:"button",domId:"wh-foreign-stock-btn",domText:"🌸 飞花库存",clickFunc:()=>V.getInstance().clickHandler().then()}),n.push({domType:"button",domId:"wh-npc-loot-btn",domText:"🔫 LOOT",clickFunc:()=>{var e='

点击开打:

\n\n
stock.png
'.replace("{{}}",performance.now().toString());new u(e,"NPC LOOT")},tip:"显示5个可击杀NPC的开打时间"}),n.push({domType:"button",domId:"wh-nnb-info",domText:"👮‍ 查看NNB",clickFunc:()=>_.getInstance().handle()}),n.push({domType:"button",domId:"wh-link-collection",domText:"🔗 常用链接",clickFunc:()=>H.getInstance().handle()}),n.push({domType:"button",domId:"wh-price-watcher-btn",domText:"💊 价格监视",clickFunc:()=>B.getInstance().handle()}),l.getInstance().isPDA||n.push({domType:"button",domId:"",domText:"🖥 进入全屏",clickFunc(){document.documentElement.requestFullscreen().then()}}),n.push({domType:"button",domId:"",domText:"📜️ 传单助手",clickFunc:p}),n.push({domType:"button",domId:"",domText:"🛡️ 守望者",clickFunc:function(){x()}}),n.push({domType:"button",domId:"",domText:"🌲 寻找木桩",clickFunc(){window.location.replace("https://www.torn.com/item.php?temp=4#xunzhaomuzhuang")}}),n.push({domType:"button",domId:"",domText:"🐞 更新历史",clickFunc:()=>y(this,void 0,void 0,function*(){return q.getInstance().handle()})}),n.push({domType:"button",domId:"",domText:"⚙️ 助手设置",clickFunc:()=>X.getInstance().handler()}),re.debug()&&n.push({domType:"button",domId:"",domText:"📐️ 测试",clickFunc:function(){return y(this,void 0,void 0,function*(){var e=performance.now();re.info("测试开始");try{N.getInstance().test()}catch(e){re.error("测试异常,"+JSON.stringify(e))}re.info("测试结束 "+(performance.now()-e|0)+"ms")})}}),this.menuItemList=n,re.info("构造展开菜单列表结束"+e.getTimeMs()),this}dragHandler(){let n=!1,t=!1,i={x:0,y:0};return d.ZhongNode.addEventListener("mousedown",e=>{var t;0===e.button&&(e.preventDefault(),n=!0,t=d.getPosition(),i.x=e.x-t.x,i.y=e.y-t.y)}),document.addEventListener("mouseup",()=>{n=!1,t&&(t=!1,L.get("SaveIconPosition")&&L.set("IconPosition",d.getPosition()))}),document.addEventListener("mousemove",e=>{n&&(d.setPosition(e.x-i.x,e.y-i.y),t=!0)}),this}static setPosition(e,t){e&&t&&(0 5k, 1.5m, max, half, quarter, 1/2, 1/3, 1/4, 25%":"点此添加最大额度,或输入快捷选项如
5k, 1.5m, max, half, quarter, 1/2, 1/3, 1/4, 25%"},be={Stock:"股票",Name:"名称",Price:"单价","1h":"1时","24h":"24时","7d":"7天","1m":"1月","1y":"1年",Live:"实时",live:"实时","Last hour":"过去一时","Last day":"过去一天","Last week":"过去一周","Last month":"过去一月","Last year":"过去一年","All time":"有史以来",Owned:"持有",Dividend:"分红","West Side University":"西城大学","Insured On Us":"托恩人保","Torn City Investments":"Torn City 投资","Torn & Shanghai Banking":"Torn 和上海银行","Symbiotic Ltd.":"共生公司","Crude & Co":"原油公司","Feathery Hotels Group":"飞亚达酒店集团","Mc Smoogle Corp":"麦斯莫格公司","Wind Lines Travel":"风线旅行","Performance Ribaldry":"低俗演绎","Syscore MFG":"系统核心 MFG","Evil Ducks Candy Corp":"邪恶鸭糖果公司","Munster Beverage Corp.":"明斯特饮料公司","Torn City Clothing":"Torn City 服饰","Lucky Shots Casino":"幸运赌场","TC Media Productions":"TC 媒体制作公司","International School TC":"TC 国际学校","Big Al's Gun Shop":"大艾尔枪店","Torn City Health Service":"TC 健康服务中心","Alcoholics Synonymous":"酒瘾相似","Torn City Motors":"TC 汽车","Legal Authorities Group":"权威法律集团","The Torn City Times":"托恩时代",Grain:"谷物","Eaglewood Mercenary":"鹰林佣兵","Home Retail Group":"家庭零售集团","Empty Lunchbox Traders":"空饭盒贸易商","Messaging Inc.":"信息公司","TC Music Industries":"TC 音乐工业公司","I Industries Ltd.":"一号工业有限公司","Tell Group Plc.":"讲述集团",Yazoo:"","1x Random Property":"1个随机房产","10% Bank Interest Bonus":"10% 银行利润增益","a 10% Bank Interest Bonus":"10% 银行利润增益","100 Energy":"100 能量E","Private Jet Access":"解锁私人飞机","1000 Happiness":"1000 快乐","Advanced Firewall":"高级防火墙","an Advanced Firewall":"高级防火墙","Company Sales Boost":"提升公司销量","a Company Sales Boost":"提升公司销量","Free Education Courses":"免费教育课程","a Free Education Courses":"免费教育课程","10% Racing Skill Boost":"提升 10% 赛车技能增长","10% Home Upgrade Discount":"10% 房屋设施费用折扣","Free Classified Advertising":"免费分类广告","50% Coding Time Reduction":"缩减 50% 编程时间","Company Advertising Boost":"公司广告增益","a Company Advertising Boost":"公司广告增益","10% Course Time Reduction":"缩减 10% 教育时间","a 10% Education Course Time Reduction":"缩减 10% 教育时间","Free Banner Advertising":"免费横幅广告","a Free Banner Advertising":"免费横幅广告",Inactive:"未激活","Ready for collection":"分红可领取","Benefit active":"分红已激活",provides:"(满足分红条件时)将提供",Every:"在每","when holding at least":",当你至少持有","shares currently valued at":"股时,目前总价:",days:"日后",Buy:"再购买","more shares for":"股,目前总价","to unlock the":"来解锁",increment:"增益",After:"在",in:"在","You currently have":"你已获得",benefit:"增益","You cannot buy shares while traveling":"你在旅行时无法购买","You cannot sell shares while traveling":"你在旅行时无法出售","How many shares would you like to":"多少股你想","You will be able to collect":"你将可以领取",buy:"买入",sell:"卖出","will buy you":"可以买",shares:"股",share:"股",Your:"你持有的","shares are worth":"股目前值","Do you want to":"你想","shares at":"股","each?":"单价?","For a total of":"总价:",Back:"返回","Confirm Transaction":"确认交易","Price updating...":"价格更新中","after the":"已扣除","fee of":"手续费:","You have":"你已",sold:"卖出",bought:"购入",each:"单价","Buy date":"购入日期",Shares:"购入数量",Value:"购入总价",Bought:"购入单价",Current:"目前单价",Change:"变化",Profit:"利润",View:"查看",Sell:"售出",Merge:"合并","Current Price:":"当前股价:","change:":"变化:","start:":"开始:","end:":"结束:","high:":"最高:","low:":"最低:"},ve={Primary:"主手",Secondary:"副手",Melee:"近战",Temporary:"投掷",Defensive:"防御",Armor:"防御",Clothing:"衣物",Jewelry:"珠宝","Your items -":"你的物品 - ",All:"全部",Medical:"医疗",Drugs:"药物","Energy Drink":"能量饮料",Alcohol:"酒类",Candy:"糖果",Boosters:"增益道具",Enhancer:"增幅器","Supply Packs":"补给包",Electronics:"电器",Flowers:"花",Plushies:"玩偶",Cars:"车辆",Viruses:"病毒",Miscellaneous:"杂项",Artifacts:"文物",Books:"书",Special:"特殊",Collectibles:"可收集物",Donate:"捐献",Drink:"喝下",Eat:"吃下",Enlist:"车辆注册",Equip:"装备",Listen:"听",Open:"打开",Propose:"求婚",Return:"退还",Sell:"卖出",Send:"发送",Take:"使用",Trash:"丢弃","Turn on":"开启",Unequip:"脱下",Use:"使用","Donate this Item":"捐献该物品","Equip this Item":"装备该物品","Sell this Item":"卖出该物品","Send this Item":"发送该物品","Trash this Item":"丢弃该物品","Unequip this Item":"脱下该物品","Return to Faction":"退还帮派","Buy:":"买价:","Sell:":"卖价:","Value:":"价值:","Accuracy:":"命中:","Damage:":"伤害:","Circ:":"流通:","Quality:":"品质:","Stealth:":"隐匿:","Caliber:":"口径:","Ammo:":"弹药:","Bonus:":"额外:","Masked:":"面具:","Coverage:":"覆盖率:","Armor:":"护甲:","Top Speed:":"最高速度:","Dirt:":"泥路:","Tarmac:":"柏油路:","Acceleration:":"加速:","Safety:":"安全:","Braking:":"制动:","Handling:":"操控:","Rate of Fire:":"开火率:","Read:":"已读:"},xe={"Ammunition Pack":"弹药包","Clothing Cache":"服饰箱","First Aid Kit":"急救包","Small First Aid Kit":"小型急救包","Empty Blood Bag":"空血包","Blood Bag : A-":"A-血包","Blood Bag : A+":"A+血包","Blood Bag : AB+":"AB+血包","Blood Bag : AB-":"AB-血包","Blood Bag : O+":"O+血包","Blood Bag : O-":"O-血包","Blood Bag : B-":"B-血包","Blood Bag : B+":"B+血包","Blood Bag : Irradiated":"辐射血包",Morphine:"吗啡","Neumune Tablet":"雄烯二醇抗辐射药品",Antidote:"抗生素",Felovax:"妙三多",Zylkene:"法国威隆苏劲猫犬降压药","Cake Frosting":"蛋糕糖霜","Lock Picking Kit":"开锁器套装","Special Fruitcake":"特别的水果蛋糕","Sawed-Off Shotgun":"截短型霰弹枪",Thompson:"汤普森冲锋枪",TMP:"施泰尔TMP冲锋枪","Benelli M1 Tactical":"贝内利M1战术霰弹枪",MP5k:"MP5k","MP5 Navy":"MP5海军型",Skorpion:"蝎式冲锋枪","MP 40":"MP40","SKS Carbine":"SKS卡宾枪","Vektor CR-21":"维克托CR-21",P90:"P90","Ithaca 37":"伊萨卡37泵动式霰弹枪","XM8 Rifle":"XM8突击步枪",AK74U:"AK74U短管突击步枪","AK-47":"AK-47","Bushmaster Carbon 15":"碳15短管步枪","M4A1 Colt Carbine":"M4A1卡宾枪","Benelli M4 Super":"贝内利M4 Super半自动霰弹枪","Heckler & Koch SL8":"HK SL8半自动步枪","M16 A2 Rifle":"M16A2步枪","Mag 7":"Mag 7","Steyr AUG":"施泰尔AUG突击步枪","SIG 550":"SIG 550突击步枪","Enfield SA-80":"恩菲尔德SA80","Tavor TAR-21":"21世纪他泊山突击步枪TAR-21","9mm Uzi":"9mm Uzi","M249 SAW":"M249班用自动武器",Minigun:"加特林式旋管机枪",Jackhammer:"转轮式自动霰弹枪","SIG 552":"SIG 552卡宾枪","ArmaLite M-15A4":"阿玛莱特M15A4","Nock Gun":"诺克枪","Snow Cannon":"雪球加农炮","Rheinmetall MG 3":"MG3通用机枪","Gold Plated AK-47":"黄金AK47","Lorcin 380":"洛辛380","Flare Gun":"信号枪","Glock 17":"格洛克17",Taurus:"金牛座","Springfield 1911":"M1911","Raven MP25":"","Ruger 22/45":"",Crossbow:"十字弓",Slingshot:"弹弓","S&W Revolver":"S&W左轮手枪","Beretta M9":"巴雷特M9",USP:"USP","Beretta 92FS":"巴雷特92FS",Luger:"鲁格手枪",Fiveseven:"FN手枪",Blowgun:"吹箭",Blunderbuss:"手铳",Magnum:"马格南左轮手枪","S&W M29":"","Desert Eagle":"沙漠之鹰","BT MP9":"","Cobra Derringer":"","Qsz-92":"",Harpoon:"鱼叉",Flamethrower:"喷火器","Dual 92G Berettas":"","Type 98 Anti Tank":"98式反坦克炮","Beretta Pico":"","Homemade Pocket Shotgun":"自制袖珍霰弹枪","RPG Launcher":"RPG发射器",Hammer:"锤子","Lead Pipe":"铅管","Baseball Bat":"棒球棒",Crowbar:"撬棍","Bo Staff":"玻之武杖","Knuckle Dusters":"指虎","Pen Knife":"笔刀","Leather Bullwhip":"皮牛鞭","Kitchen Knife":"厨房刀","Frying Pan":"平底锅",Sai:"铁尺","Plastic Sword":"塑料剑","Butterfly Knife":"蝴蝶刀",Dagger:"匕首","Swiss Army Knife":"瑞士军刀","Chain Whip":"链条鞭",Axe:"斧头","Wooden Nunchakus":"木制双截棍",Taser:"电击枪","Ninja Claws":"忍者之爪",Scimitar:"弯刀",Chainsaw:"电锯","Cricket Bat":"板球棒","Ice Pick":"冰镐",Katana:"军官武士刀",Spear:"矛",Kama:"镰刀","Twin Tiger Hooks":"虎头双钩","Samurai Sword":"武士刀","Claymore Sword":"苏格兰阔刃大斩剑","Rusty Sword":"锈剑",Macana:"美洲黑曜石匕首",Kodachi:"太刀","Wushu Double Axes":"武术双斧",Guandao:"关刀","Metal Nunchakus":"金属双截棍",Pillow:"枕头","Diamond Icicle":"钻石冰锥","Diamond Bladed Knife":"钻石刀","Pair of Ice Skates":"成对滑冰鞋","Fine Chisel":"细凿",Flail:"连枷","Ivory Walking Cane":"象牙手杖","Pair of High Heels":"一双高跟鞋",Madball:"台球","Yasukuni Sword":"战犯之剑","Naval Cutlass":"海军弯刀","Meat Hook":"肉钩","Petrified Humerus":"石化肱骨","Blood Spattered Sickle":"溅血之镰",Cleaver:"劈肉刀","Golden Broomstick":"黄金扫帚","Riding Crop":"马鞭","Devil's Pitchfork":"恶魔之叉","Dual Hammers":"双锤","Dual Axes":"双斧","Dual Scimitars":"双持弯刀","Dual Samurai Swords":"双武士刀",Sledgehammer:"巨锤","Bread Knife":"面包刀","Poison Umbrella":"毒伞","Leather Boots":"皮靴","Leather Gloves":"皮手套","Leather Helmet":"皮制头盔","Leather Pants":"皮裤","Leather Vest":"皮背心","Chain Mail":"锁子甲","Flak Jacket":"防弹夹克","Police Vest":"警察背心","Hiking Boots":"登山靴","Construction Helmet":"建筑头盔","Bulletproof Vest":"防弹背心","Full Body Armor":"全身甲","Safety Boots":"安全靴","WWII Helmet":"二战头盔","Kevlar Gloves":"凯夫拉手套","Outer Tactical Vest":"外用战术背心","Combat Gloves":"战斗手套","Combat Boots":"战斗靴","Combat Pants":"战斗裤","Combat Helmet":"战斗头盔","Combat Vest":"战斗背心","Liquid Body Armor":"液体防弹衣","Flexible Body Armor":"弹性防弹衣","Medieval Helmet":"中世纪头盔","Motorcycle Helmet":"摩托车头盔","Welding Helmet":"电焊头盔","Hazmat Suit":"危险品防护服",Brick:"砖头","Ninja Star":"忍者之星",Fireworks:"烟花","Claymore Mine":"阔刀地雷","Stick Grenade":"木柄手榴弹",Snowball:"雪球",HEG:"高爆手雷",Grenade:"手雷","Flash Grenade":"闪光弹","Pepper Spray":"辣椒喷雾","Tear Gas":"催泪弹",Trout:"鳟鱼","Throwing Knife":"飞刀","Molotov Cocktail":"莫洛托夫鸡尾酒","Smoke Grenade":"烟雾弹",Melatonin:"褪黑素",Tyrosine:"酪氨酸",Epinephrine:"肾上腺素",Sand:"沙",Serotonin:"血清素","Nail Bomb":"钉子炸弹","Concussion Grenade":"震撼弹",Book:"书","Can of Goose Juice":"鹅汁","Can of Damp Valley":"湿谷","Can of Crocozade":"鳄鱼","Can of Santa Shooters":"圣诞射手","Can of Munster":"魔瓜","Can of Rockstar Rudolph":"摇滚明星","Can of Red Cow":"红牛","Can of X-MASS":"XS","Can of Taurine Elite":"精英牛磺酸","Bag of Bon Bons":"一袋糖果","Box of Extra Strong Mints":"一盒特浓薄荷糖","Bag of Chocolate Kisses":"一袋巧克力之吻","Box of Sweet Hearts":"一盒甜蜜的心","Box of Chocolate Bars":"一盒巧克力棒",Lollipop:"棒棒糖","Box of Bon Bons":"一盒糖果","Big Box of Chocolate Bars":"一大盒巧克力棒","Bag of Candy Kisses":"一袋糖果之吻","Bag of Tootsie Rolls":"一袋图罗软糖","Bag of Bloody Eyeballs":"一袋血腥眼球","Bag of Chocolate Truffles":"一袋巧克力松露","Bag of Reindeer Droppings":"一袋驯鹿粪便","Red Easter Egg":"红复活节蛋","Yellow Easter Egg":"黄复活节蛋","Blue Easter Egg":"蓝复活节蛋","Pink Easter Egg":"粉复活节蛋","Orange Easter Egg":"橙复活节蛋","Black Easter Egg":"黑复活节蛋","Green Easter Egg":"绿复活节蛋","Brown Easter Egg":"棕复活节蛋","Pixie Sticks":"小精灵棒","Bag of Sherbet":"一袋雪糕",Jawbreaker:"","Bag of Humbugs":"","Purple Easter Egg":"紫复活节蛋","White Easter Egg":"白复活节蛋","Birthday Cupcake":"生日纸杯蛋糕","Gold Easter Egg":"金复活节蛋",Shrooms:"魔幻蘑菇",LSD:"兴奋剂",Ketamine:"凯粉",Ecstasy:"摇头丸",PCP:"天使尘埃",Speed:"病毒",Xanax:"XAN","Love Juice":"爱情果汁",Cannabis:"大麻",Opium:"罂粟",Vicodin:"维柯丁","Heavy Duty Padlock":"重型挂锁","High-Speed Drive":"高速硬盘","Tracking Device":"追踪设备","Tumble Dryer":"烘干机","Duct Tape":"胶带",Chloroform:"氯仿",Glasses:"眼镜","Fanny Pack":"腰包","Slim Crowbar":"细撬棍","Advanced Driving Manual":"高级驾驶手册","Cut-Throat Razor":"割喉剃刀","Wireless Dongle":"无线加密狗",Screwdriver:"螺丝刀","Ergonomic Keyboard":"人体工学键盘","Mountain Bike":"山地车",Balaclava:"巴拉克拉瓦头套","Small Suitcase":"小手提箱","Medium Suitcase":"中手提箱","Rosary Beads":"念珠","Large Suitcase":"大手提箱","Wind Proof Lighter":"防风打火机","Bottle of Beer":"瓶装啤酒","Bottle of Champagne":"瓶装香槟","Bottle of Tequila":"瓶装龙舌兰酒","Bottle of Sake":"瓶装清酒","Bottle of Kandy Kane":"","Bottle of Pumpkin Brew":"瓶装南瓜啤酒","Bottle of Wicked Witch":"邪恶女巫蛙腿酒","Bottle of Minty Mayhem":"","Bottle of Christmas Cocktail":"圣诞鸡尾酒","Bottle of Mistletoe Madness":"槲寄生疯狂","Bottle of Stinky Swamp Punch":"","Bottle of Moonshine":"瓶装私酒","Bottle of Green Stout":"瓶装绿色世涛","Bottle of Christmas Spirit":"","Glass of Beer":"一杯扎啤","Lawyer Business Card":"律师卡(黑卡)","Erotic DVD":"瑟琴DVD","Gift Card":"礼品卡","Book of Carols":"颂歌之书","Feathery Hotel Coupon":"FHC金卡",Skateboard:"速度SE 滑板","Boxing Gloves":"防御SE 拳击手套",Dumbbells:"力量SE 哑铃",Parachute:"闪避SE 降落伞","Pack of Music CDs":"","Pack of Blank CDs : 100":"","RS232 Cable":"","Hard Drive":"","MP3 Player":"","Personal Computer":"","CD Player":"","DVD Player":"",Television:"","Game Console":"",Microwave:"",Laptop:"","Gold Ring":"金戒指","Plain Silver Ring":"纯银戒指","Sapphire Ring":"蓝宝石戒指","Plastic Watch":"塑料手表","Gold Necklace":"金项链","Silver Necklace":"银项链","Gold Watch":"金表","Diamond Ring":"钻戒","Stainless Steel Watch":"不锈钢手表","Pearl Necklace":"珍珠项链","Cocktail Ring":"鸡尾酒会戒指","Crystal Bracelet":"水晶手链","Statement Necklace":"宣言项链","Gold Chain":"金链子","Simple Virus":"简单病毒","Tunneling Virus":"隧道病毒","Polymorphic Virus":"多态病毒","Firewalk Virus":"火行病毒","Armored Virus":"加壳病毒","Stealth Virus":"隐形病毒","Bunch of Flowers":"花束","Single Red Rose":"单支红玫瑰","Bunch of Black Roses":"黑玫瑰束","Dozen Roses":"一打玫瑰",Dahlia:"大丽花",Crocus:"番红花","Banana Orchid":"香蕉兰花",Orchid:"兰花",Edelweiss:"雪绒花","Ceibo Flower":"木棉花",Heather:"帚石楠","African Violet":"非洲紫罗兰","Cherry Blossom":"樱花",Peony:"牡丹花","Tribulus Omanense":"蒺藜花","Box of Medical Supplies":"医疗补给包","Lottery Voucher":"彩票券","Box of Grenades":"手雷箱","Six Pack of Alcohol":"6瓶装酒箱","Denim Cache":"牛仔补给箱","Drug Pack":"小DP 药dú品包","Keg of Beer":"桶装啤酒","Elderly Cache":"中年衣服补给箱","Cutesy Cache":"可爱衣服补给箱","Six Pack of Energy Drink":"6瓶装饮料箱","Gentleman Cache":"绅士衣服补给箱","Wannabe Cache":"潮流衣服补给箱","Elegant Cache":"优雅衣服补给箱","Naughty Cache":"调皮衣服补给箱","Goodie Bag":"礼品袋","Anniversary Present":"周年纪念礼物",Parcel:"包裹","Broken Bauble":"","Bronze Ribbon":"","Silver Ribbon":"","Coin : Dump":"","Coin : Church":"","Santa's Elf '09":"","Metal Dog Tag":"","Coin : Hospital":"","Birthday Cake '05":"","Bunch of Balloons '05":"","Jack-O-Lantern '05":"","Coin : Race Track":"","Coin : Casino":"","Coin : Estate Agents":"","Coin : Travel Agency":"","Coin : Education":"","Coin : Museum":"","Coin : Drugs":"","Coin : Auction House":"","Coin : Stock Exchange":"","Coin : Companies":"","Poker Chip":"","Coin : Factions":"","Voodoo Doll":"","Rabbit Foot":"","Gold Ribbon":"","Coin : Jail":"","Santa's List '17":"","Snowflake '05":"","Cheesus '18":"","Bronze Microphone":"","Paper Bag":"","Toast Jesus '18":"","Silver Dog Tag":"","Christmas Tree '05":"","Bronze Dog Tag":"","Bronze Paint Brush":"","10 Ton Pacifier":"","Single White Rose":"","Chocolate Egg '05":"","Annoying Man":"","Scammer in the Slammer '18":"","Gold Microphone":"","Amazon Doll":"",Soapbox:"","Gold Paint Brush":"","Dollar Bill Collectible":"","Octopus Toy":"","Gold Dog Tag":"","Crazy Cow":"","Citrus Squeezer":"","Strife Clown":"","Evil Doll":"","Blow-Up Doll":"","Backstage Pass":"","Karate Man":"","YouYou Yo Yo":"","Flea Collar":"","Ms Torn Crown":"","Kevlar Helmet":"","Cursed Moon Pendant":"","Mr Torn Crown":"","Mr Brownstone Doll":"","Burmese Flag":"","Chocobo Flute":"","Skeleton Key":"","Yoda Figurine":"","Barbie Doll":"","China Tea Set":"",Dreamcatcher:"","Non-Anon Doll":"","Christmas Card '09":"","Christmas Stocking '09":"","Jester's Cap":"","Official Ninja Kit":"","Silver Paint Brush":"","Tank Top":"",Jacket:"夹克",Trainers:"",Bandana:"","Mediocre T-Shirt":"普通的T恤","Sports Shades":"","Diving Gloves":"","Proda Sunglasses":"",Speedo:"",Flippers:"","Kabuki Mask":"",Sweater:"",Snorkel:"",Bikini:"比基尼",Wetsuit:"","Mountie Hat":"","Exotic Gentleman Mask":"","Young Lady Mask":"年轻女士面具","Moustache Man Mask":"","Old Lady Mask":"老妇人面具","Nun Mask":"","Scarred Man Mask":"刀疤男面具","Ginger Kid Mask":"","Psycho Clown Mask":"","Trench Coat":"","Festive Socks":"","Coconut Bra":"椰壳文胸","Badge : 15th Anniversary":"","Paper Crown : Red":"纸皇冠:红色","Paper Crown : Blue":"纸皇冠:蓝色","Paper Crown : Green":"纸皇冠:绿色","Paper Crown : Yellow":"纸皇冠:黄色","Party Hat '19":"","String Vest":"","Santa Gloves":"","Classic Fedora":"",Sweatpants:"","Santa Trousers":"","Pinstripe Suit Trousers":"","Santa Boots":"","Denim Cap":"","Tube Dress":"","Hair Bow":"","Pleated Skirt":"","Reading Glasses":"",Pullover:"","Denim Vest":"","Basketball Shirt":"","Denim Jacket":"","Santa Jacket":"","Bandit Mask":"",Durag:"",Chinos:"",Tights:"","Collared Shawl":"","Denim Shirt":"",Shrug:"",Dungarees:"",Sandals:"","Check Skirt":"","Ballet Shoes":"","Sun Hat":"","Cork Hat":"",Pantyhose:"","Denim Shoes":"","Knee Socks":"",Shorts:"","Golf Socks":"","Bucket Hat":"","Maid Hat":"","Panama Hat":"","Oversized Shirt":"","Pencil Skirt":"","Floral Dress":"","Booty Shorts":"",Blouse:"",Halterneck:"","Snapback Hat":"","Crop Top":"",Bermudas:"","Peplum Top":"","Baseball Cap":"","Santa Hat":"","Baseball Jacket":"","Capri Pants":"",Thong:"","Fishnet Stockings":"","Chin Diaper":"","Chest Harness":"","Platform Shoes":"","Fur Hat":"","Polo Shirt":"","Bunny Ears":"","Denim Jeans":"",Skirt:"","Puppy Ears":"",Tutu:"",Camisole:"","Assless Chaps":"","Head Scarf":"","Puffer Vest":"",Choker:"","Boob Tube":"","Tighty Whities":"","Puffer Jacket":"","Travel Socks":"","Fur Scarf":"",Waistcoat:"","Derby Shoes":"",Braces:"",Blindfold:"","Medical Mask":"",Nightgown:"","Flip Flops":"","Saggy Pants":"","Square Sunglasses":"",Cardigan:"","Gym Shorts":"","Knee-high Boots":"","Sports Jacket":"","Bowler Hat":"","Cover-ups":"","Bingo Visor":"","Yoga Pants":"",Raincoat:"","Silver Hoodie":"","Fisherman Hat":"",Lingerie:"","Bush Hat":"",Turtleneck:"","Lolita Dress":"","Fitted Shirt":"",Blazer:"","Opera Gloves":"","Mini Skirt":"","Shoulder Sweater":"","Suit Trousers":"",Mackintosh:"","Black Oxfords":"","Shutter Shades":"","Cat Ears":"","Fascinator Hat":"",Poncho:"","Fur Coat":"","Silver Flats":"","Kitty Shoes":"","Neck Tie":"","Maid Uniform":"","Bow Tie":"","Polka Dot Dress":"",Slippers:"","Gold Sneakers":"","Smoking Jacket":"","Parachute Pants":"","Latex Gloves":"",Collar:"","Nipple Tassels":"","Scrooge's Boots":"",Mankini:"","Scrooge's Gloves":"","Ripped Jeans":"","Santa Beard":"","Ball Gown":"","Scrooge's Trousers":"","Unicorn Horn":"",Onesie:"","Wedding Veil":"","Christmas Sweater '15":"","Bunny Nose":"",Straitjacket:"",Monocle:"","Scrooge's Topcoat":"","Wedding Dress":"","Witch's Hat":"",Bathrobe:"","Tiger King Mask '20":"","Greta Mask '19":"","Scrooge's Top Hat":"","Sandworm Mask '21":"",Duster:"","Ski Mask":"","Pennywise Mask '20":"","Anatoly Mask '19":"","Ball Gag":"","Elon Musk Mask '17":"","Heart Sunglasses":"","Jigsaw Mask '19":"",Pipe:"","Michael Myers Mask '18":"","Respo Hoodie":"","Bunny Suit":"","Donald Trump Mask '16":"","Gronch Mask '18":"","Chevrolet Cavalier":"","Peugeot 106":"","Volkswagen Beetle":"大众甲壳虫","Citroen Saxo":"","Vauxhall Corsa":"","Vauxhall Astra GSI":"","Honda Civic":"本田思域","Classic Mini":"经典MINI","Volkswagen Golf GTI":"","Renault Clio":"","Alfa Romeo 156":"","Audi S4":"奥迪S4","Reliant Robin":"","Nissan Micra":"","Honda Integra R":"","Ford Mustang":"福特野马","Lotus Exige":"","Hummer H3":"","Honda S2000":"","Honda Accord":"","Holden SS":"","Mini Cooper S":"","Seat Leon Cupra":"","Toyota MR2":"","Volvo 850":"","Honda NSX":"","BMW X5":"宝马X5","TVR Sagaris":"","BMW M5":"宝马M5","Ford Focus RS":"","Subaru Impreza STI":"","Chevrolet Corvette Z06":"","Audi TT Quattro":"","Fiat Punto":"","Pontiac Firebird":"","Dodge Charger":"","BMW Z8":"宝马Z8","Porsche 911 GT3":"","Nissan GT-R":"","Ford GT40":"","Audi R8":"奥迪R8","Mitsubishi Evo X":"","Lexus LFA":"","Ferrari 458":"","Lamborghini Gallardo":"兰博基尼盖拉多","Mercedes SLR":"","Aston Martin One-77":"","Sierra Cosworth":"","Senet Board":"","Florin Coin":"","Leopard Coin":"","Gold Noble Coin":"","Vairocana Buddha Sculpture":"","Black Senet Pawn":"","White Senet Pawn":"","Ganesha Sculpture":"","Quran Script : Ubay Ibn Kab":"","Quran Script : Ali":"","Quran Script : Ibn Masud":"","Shabti Sculpture":"","Egyptian Amulet":"","Sheep Plushie":"绵羊","Kitten Plushie":"猫咪","Teddy Bear Plushie":"泰迪熊","Stingray Plushie":"黄貂鱼","Wolverine Plushie":"貂熊","Jaguar Plushie":"美洲豹","Nessie Plushie":"尼斯湖水怪","Red Fox Plushie":"赤狐","Chamois Plushie":"岩羚羊","Monkey Plushie":"猴子","Panda Plushie":"大熊猫","Lion Plushie":"狮子","Camel Plushie":"骆驼","Dong : Effy":"狗狗:艾菲","Dong : Jeremy":"狗狗:杰里米","Dong : Greg":"狗狗:格雷格","Dong : Holly":"狗狗:霍利","Dong : Thomas":"狗狗:托马斯","Toilet Paper":"厕纸","Stink Bombs":"臭气弹","Dog Poop":"狗屎","Horse's Head":"马头","Christmas Cracker":"圣诞爆竹","Small Explosive Device":"小型爆炸装置","Business Class Ticket":"商务舱机票","Strippogram Voucher":"脱衣舞券","Poison Mistletoe":"毒槲寄生","Donator Pack":"捐赠者补给箱(DP)","Casino Pass":"赌场通行证","Cesium-137":"铯137","Dirty Bomb":"脏弹","Box of Tissues":"一盒抽纸","Pack of Cuban Cigars":"","Birthday Wrapping Paper":"生日包装纸","Empty Box":"空盒子","Bolt Cutters":"","Christmas Wrapping Paper":"圣诞包装纸","Soap on a Rope":"","Generic Wrapping Paper":"","Crazy Straw":"",Fruitcake:"水果蛋糕","Pele Charm":"","Mayan Statue":"","Steel Drum":"","Sumo Doll":"","Hockey Stick":"",Chopsticks:"筷子","Soccer Ball":"足球",Snowboard:"雪球","Paper Weight":"","Yakitori Lantern":"",Sensu:"","Dart Board":"","Elephant Statue":"","Certificate of Lame":"","Yucca Plant":"","Jade Buddha":"玉佛像",Compass:"","Nodding Turtle":"","Fire Hydrant":"","Model Space Ship":"","Tailors Dummy":"",Sextant:"","Afro Comb":"","Maneki Neko":"","Blank Tokens":"","Printing Paper":"","Stick of Dynamite":"","Blank Credit Cards":"","Advent Calendar":"","Certificate of Awesome":"","Glow Stick":"","Ship in a Bottle":"","Santa's Snot":"","Christmas Angel":"","Sprig of Holly":"","Polar Bear Toy":"","Turkey Baster":"","Electronic Pumpkin":"","Salt Shaker":"","Cinnamon Ornament":"","Spooky Paper Weight":"","Lump of Coal":"","Vanity Hand Mirror":"","Gingerbread Man":"","Christmas Lights":"","C4 Explosive":"C4炸弹","Jack O Lantern Lamp":"","Gingerbread House":"","Mini Sleigh":"","Golden Wreath":"","Coat Hanger":"衣架","Memory Locket":"",Cauldron:"",Mistletoe:"槲寄生","Witch's Cauldron":"","Gas Can":"汽油桶","Golden Candy Cane":"","Christmas Express":"",Eggnog:"","Raw Ivory":"","Oriental Log":"",Snowman:"雪人","Christmas Gnome":"","Pile of Vomit":"","Loaf of Bread":"","Deputy Star":"","Oriental Log Translation":"",Tangerine:"","Dancing Santa Claus '09":"",Photographs:"","Japanese/English Dictionary":"日英词典","Gold Nugget":"","Peg Leg":"","Birthday Cake '14":"14寸生日蛋糕","Zombie Brain":"僵尸脑","Rotten Eggs":"","Pack of Trojans":"","Snow Globe '09":"","Medal of Honor":"","Rusty Dog Tag":"","Human Head":"人头","Article on Crime":"","Piece of Cake":""},te={"Effect: Provides 100 Lucky Shot Lotto tickets when used.":"","Effect: Improves success rate for the Transporting Drugs crime.":"","Effect: Increases happiness by 25 and booster cooldown by 30 minutes.":"","Effect: Increases happiness by 50 and booster cooldown by 30 minutes.":"","Effect: Increases happiness by 75 and booster cooldown by 30 minutes.":"","Effect: Increases energy by 10 and booster cooldown by 2 hours.":"","Effect: Opponent becomes Maced, decreasing Dexterity to 1/5th for 15-20 seconds.":"效果:对手被梅斯毒气影响,闪避降低至1/5,持续15-20s。","Effect: Opponent becomes Blinded, decreasing Speed to 1/5th for 15-20 seconds.":"效果:对手被致盲,速度降低至1/5,持续15-20s。","Effect: Opponent becomes Gassed, decreasing Dexterity to 1/3rd for 120-180 seconds.":"效果:对手变得疲惫,闪避降低至1/3,持续120-180s。","Effect: Opponent receives Severe Burning damage over 3 turns.":"效果:对手在3个回合内受到严重的燃烧伤害。","Effect: Opponent becomes Smoked, decreasing Speed to 1/3rd for 120-180 seconds.":"效果:对手被烟雾影响,速度降低至1/3持续120-180s。","Effect: User becomes Hastened, increasing Speed by 500% for 120 seconds.":"效果:使用者急促起来,速度提高500%持续120s。","Effect: User becomes Sharpened, increasing Dexterity by 500% for 120 seconds.":"效果:使用者变得更加敏锐,闪避增加500%,持续120s。","Effect: User becomes Strengthened, increasing Strength by 500% for 120 seconds.":"效果:使用者变得更强壮,力量增加500%,持续120秒。","Effect: User becomes Hardened, increasing Defense by 300% for 120 seconds and replenishing life by 25%.":"效果:使用者变得坚硬,在120秒内增加300%的防御,并补充25%的生命。","Effect: Opponent becomes Concussed, decreasing Dexterity to 1/5th for 15-20 seconds.":"效果:对手脑部震荡,闪避下降到1/5,持续15-20秒。","Effect: Increases happiness by 5-20 if under 20% of maximum.":"","Effect: Can be used with a Fruitcake and Cake Frosting to create a Special Fruitcake.":""},ne={"is a Defensive Armor.":"是一种防御性盔甲。","are a Defensive Armor.":"是一种防御性盔甲。","is a Machine Gun Weapon.":"是一种机枪。","is a SMG Weapon.":"是一种冲锋枪。","is a Shotgun Weapon.":"是一种霰弹枪。","is a Rifle Weapon.":"是一种步枪。","is a Heavy Artillery Weapon.":"是一种重炮。","is a Pistol Weapon.":"是一种手枪。","is a Piercing Weapon.":"是一种穿刺武器(piercing)。","is a Clubbing Weapon.":"是一种冲击武器(Clubbing)。","is a Slashing Weapon.":"是一种切割武器(slashing)。","is a Mechanical Weapon.":"是一种机械武器。","is a Temporary Weapon.":"是一种投掷武器。","is a Clothing Item.":"是一种服装物品。","is a Medical Item.":"是一种医疗物品。","is a Drug Item.":"是一种药(dú)品。","is an Energy Drink Item.":"是一种能量饮料。","is an Alcohol Item.":"是一种酒。","is a Candy Item.":"是一种糖。","is a Booster Item.":"是一种增益道具。","is an Enhancer Item.":"是一种增幅器。","is a Supply Pack Item.":"是一种补给包。","is an Electronic Item.":"是一种电子物品。","is a Jewelry Item.":"是一种珠宝物品。","is a Flower Item.":"是一种花。","is a Plushie Item.":"是一种玩偶。","is a class E Car Item.":"是一辆E级赛车。","is a class D Car Item.":"是一辆D级赛车。","is a class C Car Item.":"是一辆C级赛车。","is a class B Car Item.":"是一辆B级赛车。","is a class A Car Item.":"是一辆A级赛车。","is a Virus Item.":"是一种电脑病毒。","is an Other Item.":"是一个其他物品。","is a Book Item.":"是一本书。","is a Special Item.":"是一种特殊物品。"},ke={"API Keys":"API 密钥","General settings":"通用设置","Attack settings":"攻击设置","Create New Key":"创建新密钥","New key's name":"新密钥名","Public Only":"无需权限","Minimal Access":"最小权限","Limited Access":"有限权限","Full Access":"完全权限","Here you can share your account's information with":"在这里,你可以通过向脚本、扩展和应用程序等软件提供API密钥,与它们分享你的账户信息。一旦你创建了一个具有相关权限的API密钥,你可以在任何时候通过删除该密钥来取消授权。"},ie={_taskHint:{a_good_day_to_get_hard:{task:"实现3-10的连杀",hint:"建议买lost"},a_kimpossible_task:{task:"击败3个特定玩家且只使用近战武器和手雷",hint:"枪可以保持装备状态"},a_problem_at_the_tracks:{task:"击败3个特定玩家且不使用枪",hint:"枪可以保持装备状态,但是使用任何的枪任务就会失败。"},a_thor_loser:{task:"用Duke的锤子(Duke's hammer)打中8-16个不同的身体部位",hint:"找防御怪来打"},against_the_odds:{task:"击败2个特定玩家"},an_honorary_degree:{task:"击败特定玩家且不使用枪",hint:"枪可以保持装备状态,但是使用任何的枪任务就会失败。"},army_of_one:{task:"装备不同的面具攻击3次1个特定玩家",hint:"Duke会给你发2个面具,请确保其中一次攻击不戴任何面具。为了快速完成任务,可以选择右上角的逃跑选项,这样不需要等待目标出院。"},bakeout_breakout:{task:"把开锁器(lock pick)放到水果蛋糕(fruitcake)里,并且把特别的水果蛋糕(special fruitcake)发送给监狱里的任意自选玩家。",hint:"你需要自己买一个水果蛋糕,佐料Duke会给"},bare_knuckle:{task:"击败特定玩家,且不装备任何防具和武器。",hint:"取消装备所有东西。注意:前一次战斗残余的buff会让任务失败!"},batshit_crazy:{task:"用Penelope造成基于你的最大生命的一定伤害",hint:"你会收到Duke发来的Penelope"},battering_ram:{task:"攻击特定玩家3次"},big_tub_of_muscle:{task:"击败特定玩家,尽管他有巨大的力量"},birthday_surprise:{task:"获取特定物品并将它作为礼物发送给Duke",hint:"使用一个空盒子(Empty box)可以把物品装箱(parcel),然后用礼品包装将他包起来就可以得到一个生日礼物。"},bonnie_and_clyde:{task:"击败特定玩家和他的配偶"},bountiful:{task:"成功拿到2-5个悬赏赏金",hint:"请记得击败玩家后选择强制住院(hospitalize)才能领取赏金"},bounty_on_the_mutiny:{task:"悬赏特定玩家,然后等待赏金被人领取",hint:"你不能领取自己的悬赏赏金"},bring_it:{task:"在多人战斗中击败Duke",hint:"不像其他任务,这个任务你有一周的时间来完成。且不需要最后一击,你只需要参与到多人战斗中就可以。更多详情请群内询问大佬或查看公众号攻略。"},candy_from_babies:{task:"获得$50,000-$250,000的悬赏奖励",hint:"可以是总计多次悬赏奖励。请记得击败玩家后选择强制住院(hospitalize)才能获得悬赏奖励。"},charity_work:{task:"抢劫2个特定玩家",hint:"必须成功抢到钱,可以事先发一点钱给目标来确保成功抢劫"},cracking_up:{task:"击败特定玩家后选择审问选项(interrogate)获取密码,然后使用密码打开Duke的保险箱(Duke's Safe),并将获得的物品发送给Duke。",hint:"可能会需要数次审问才能获得密码"},critical_education:{task:"造成3-9次暴击"},cut_them_down_to_size:{task:"击败任意等级大于等于你的玩家"},dirty_little_secret:{task:"给特定玩家下一个悬赏,然后攻击拿悬赏的玩家",hint:"如果拿悬赏的玩家是匿名的,他的ID还是会被显示在任务界面。攻击不需要胜利,只需要攻击即可完成任务。"},double_jeopardy:{task:"击败特定玩家,且给他下一个悬赏",hint:"赏金可以是任何金额,因为它不需要被认领。"},drug_problem:{task:"Defeat 4 - 7 (P)."},emotional_debt:{task:"用催泪弹(tear gas)或辣椒水(pepper spray)命中特定玩家",hint:"不被阻挡才算数。Hazmat Suit会阻挡催泪弹,很多头盔阻挡辣椒水。(也有说法辣椒水不需要生效也能完成任务)"},estranged:{task:"打伤特定玩家的一条腿"},family_ties:{task:"强制住院特定玩家3次"},field_trip:{task:"在3个赌场游戏中赚到$100-$1,000,000"},fireworks:{task:"消耗250-1250发子弹",hint:"用弹药多的武器,如minigun、m249"},forgotten_bills:{task:"击败特定玩家"},frenzy:{task:"击败任意5-15个玩家"},get_things_jumping:{task:"造成2000-50000伤害,受到1000-25000伤害,基于你的生命上限"},graffiti:{task:"给特定目标喷辣椒水(pepper spray)"},guardian:{task:"击败特定玩家"},hammer_time:{task:"用锤子(hammer)击败特定玩家",hint:"枪可以保持装备,双锤不算锤子"},hands_off:{task:"击败3-5个特定玩家"},hare_meet_tortoise:{task:"击败特定玩家,尽管他的速度快如闪电",hint:"闪光弹和烟雾弹可以降低目标的速度"},hide_and_seek:{task:"从3-5人的列表中找到并击败1个特定玩家",hint:"给出的线索可以很容易识别目标,比如等级,地区,如无法找到请截图群聊询问。"},hiding_in_plain_view:{task:"击败在随机国家的特定玩家"},high_fliers:{task:"击败3个在随机国家的特定玩家"},hobgoblin:{task:"击败自选的某个相同玩家5次"},immovable_object:{task:"击败特定玩家,尽管他的防御很高"},inside_job:{task:"击败特定玩家并选择secrete选项藏一个道具"},"introduction:_duke":{task:"完成10个 Duke 任务"},keeping_up_appearances:{task:"抢劫特定玩家然后把钱发回给他",hint:"必须成功抢到钱,可以事先发一点钱给目标来确保成功抢劫"},kiss_of_death:{task:"击败特定玩家然后选择kiss选项"},lack_of_awareness:{task:"击败特定玩家"},lost_and_found:{task:"强制住院特定目标总计12小时"},loud_and_clear:{task:"使用3-11个爆炸性手榴弹(HEG或Grenade等)",hint:"手榴弹必须是可以造成伤害的类型"},loyal_customer:{task:"击败特定玩家"},make_it_slow:{task:"击败特定玩家且单次攻击中使用不低于5-9回合",hint:"存活7或9回合后击败目标,如果失败可以再次尝试。"},marriage_counseling:{task:"击败特定玩家的配偶"},massacrist:{task:"击败特定玩家"},meeting_the_challenge:{task:"抢劫到$10,000-$16,000,000金额的钱"},motivator:{task:"第一次对战中输给或平手给特定玩家",hint:"超时不会任务失败,所以如果看起来要赢了可以等5分钟超时。可以抽血减血,不装备防具并使用锈剑。"},new_kid_on_the_block:{task:"击败5名玩家"},no_man_is_an_island:{task:"从3个特定目标中选2个抢劫",hint:"可以自选哪两个目标,只要抢劫2个不同的目标"},no_second_chances:{task:"一次击败特定玩家"},out_of_the_frying_pan:{task:"去监狱使用Felovax以住院,再使用Zylkene"},painleth_dentitht:{task:"用棒球棒击败特定玩家",hint:"其他武器可以保持装备,但是使用其他武器会让任务失败"},party_tricks:{task:"击败特定玩家,尽管他的DEX很高"},pass_the_word:{task:"给特定玩家发送包含关键词的聊天信息",hint:"复制任务描述发送给目标就可以完成"},peak_experience:{task:"击败特定玩家"},proof_of_the_pudding:{task:"使用某个武器击败特定玩家,然后发送这个武器给他",hint:"不需要发送你具体使用的武器,只需发送同名武器"},rabbit_response:{task:"10-30分钟内击败3个特定玩家",hint:"攻击其中一个目标时开始计时,所以攻击前确定他们都不在住院"},reconstruction:{task:"装备菜刀(kitchen knife)和皮手套(leather gloves),击败特定玩家然后扔掉这两样东西。",hint:"战斗中不必须使用菜刀攻击"},red_faced:{task:"使用鳟鱼(trout)完成最后一击以击败特定玩家"},rising_costs:{task:"用砖头(Brick)打中特定玩家",hint:"没打中不算"},rolling_in_it:{task:"抢劫特定玩家",hint:"必须成功抢到钱,可以事先发一点钱给目标来确保成功抢劫"},safari:{task:"用步枪(rifle)在南非击败特定玩家"},scammer:{task:"击败特定玩家",hint:"目标可能有不少现金,可以试着打劫一下"},sellout_slayer:{task:"从物品市场或个人集市买一把枪,用这把枪击败任意2-6个玩家,然后再从物品市场或个人集市卖出这把枪"},sending_a_message:{task:"击败特定玩家"},show_some_muscle:{task:"攻击特定玩家",hint:"攻击目标即可,无论输赢"},sleep_aid:{task:"击败特定玩家"},some_people:{task:"将任何物品制作包裹寄给特定玩家",hint:"买一个空盒子(Empty box)并使用空盒子,选择一个你不要的物品就可以制成包裹。"},standard_routine:{task:"使用冲击武器(Clubbing)或拳头或脚踢击败特定玩家",hint:"可以考虑买一把金属双截棍(Metal Nunchakus)"},stomach_upset:{task:"打伤特定玩家的胃"},swan_step_too_far:{task:"从垃圾场翻到一个物品并且击败他之前的所有者",hint:"你可以多搜索几次,直到找到一个你能打得过的前所有者。"},the_executive_game:{task:"只使用拳头或脚踢击败特定玩家",hint:"已装备的其他武器不需要卸载"},the_tattoo_artist:{task:"只使用切割武器(slashing)或穿刺武器(piercing)击败特定玩家",hint:"已装备的其他武器不需要卸载"},three_peat:{task:"分别击败3次后选择留在街上、抢劫、强制住院任意玩家"},training_day:{task:"健身房消耗250 - 1,250能量E"},tree_huggers:{task:"击败5-8个特定玩家"},undercutters:{task:"击败4个特定玩家"},unwanted_attention:{task:"强制住院4个特定玩家"},withdrawal:{task:"打伤特定玩家的双臂",hint:"这个任务中手也算双臂"},wrath_of_duke:{task:"击败4个特定玩家"}},Hit:"击中","with a brick.":"使用砖头 (brick)",Put:""},De={"Virus Programming":"病毒编程"},Se={"Buy Items":"购买物品",Buy:"买","in stock)":"存货)","Flower (":"花(","Plushie (":"玩偶(","Other (":"其他(","Temporary (":"临时(","Melee (":"近战(","Candy (":"糖果(","Booster (":"增益道具(","Car (":"车辆(","Electronic (":"电器(","Alcohol (":"酒类(",Sell:"卖出",items:"物品",Value:"卖价",Amount:"数量","items to Bits 'n' Bobs":"物品给胖鲍勃的杂货店","Select All":"全选","Unselect All":"全不选","SELL ITEMS":"卖出物品",Cancel:"取消","Are you sure you would like to sell these items?":"你确定想出售这些物品吗?","Total value:\n$":"总计:$",Yes:"是",No:"否","Are you sure you would like to buy":"你是否想买","Sell your points":"出售你的PT"},_e={January:"一月",February:"二月",March:"三月",April:"四月",May:"五月",June:"六月",July:"七月",August:"八月",September:"九月",October:"十月",November:"十一月",December:"十二月"},He=/[\u4e00-\u9fa5]/;function Be(e){e&&e.contents().each((e,t)=>{3===t.nodeType&&(Q[t.nodeValue.trim()]?t.nodeValue=Q[t.nodeValue.trim()]:ye[t.nodeValue.trim()]?t.nodeValue=ye[t.nodeValue.trim()]:t.nodeValue.contains(/In hospital for/)?t.nodeValue=t.nodeValue.replace("In hospital for","住院").replaceHMS():t.nodeValue.contains(/In jail for/)&&(t.nodeValue=t.nodeValue.replace("In jail for","坐牢").replaceHMS()))})}function Re(e="",t=".send-cash"){const n=$(e+` ${t} *`);0!==n.length&&n.contents().each((e,t)=>{1===t.nodeType?Pe[$(t).attr("placeholder")]?$(t).attr("placeholder",Pe[$(t).attr("placeholder")]):Pe[$(t).attr("title")]&&$(t).attr("title",Pe[$(t).attr("title")]):3===t.nodeType&&Pe[t.nodeValue.trim()]&&(t.nodeValue=Pe[t.nodeValue.trim()])})}class oe extends s{constructor(){super(),this.className="WuHuTornHelper"}init(){re.info("WuHuTornHelper初始化"),s.glob=l.getInstance();let e=oe.glob,t=(e.fStock=V.getInstance(),window.Notification?"granted"!==window.Notification.permission&&(re.info("芜湖助手即将请求浏览器通知权限……"),window.Notification.requestPermission().then()):re.error("该浏览器不支持系统通知"),String.prototype.contains=function(e){return("string"==typeof e?new RegExp(e):e).test(this)},window.fetch);var n=(i,e)=>{let o=performance.now();return re.info("FETCH调用:["+i+"], init:",e),new Promise(n=>i.contains("newsTickers")?(re.info("阻止获取新闻横幅"),void n(new Response("{}"))):i.includes("google")?(re.info("阻止google相关请求"),void n(new Response("{}"))):void t(i,e).then(e=>{i.includes("profiles.php?step=getUserNameContextMenu")&&L.get("transEnable")&&window.setTimeout(()=>{Be($("div.profile-mini-root div.description span")),Re("div.profile-mini-root")},200);var t=e.clone();e.text().then(e=>re.info("FETCH响应,耗时"+(performance.now()-o|0)+"ms",{response:e})),n(t)}).catch(e=>re.error("监听到fetch获取错误",e)))};return l.getInstance().unsafeWindow&&(l.getInstance().unsafeWindow.fetch=n),window.fetch=n,M.addStyle('.wh-hide {\n display: none;\n}\n\n#wh-trans-icon {\n user-select: none;\n display: inline-block;\n position: fixed;\n top: 5px;\n left: 5px;\n z-index: 100010;\n border-radius: 4px;\n max-width: 220px;\n box-shadow: 0 0 3px 1px #8484848f;\n}\n\ndiv#effectiveness-wrap {\n overflow-y: hidden;\n}\n\n@media screen and (max-width: 600px) {\n #wh-trans-icon {\n top: 0;\n left: 112px;\n }\n\n /* 冰蛙公司效率表 */\n div#effectiveness-wrap {\n margin-left: -76px;\n margin-right: -76px;\n }\n}\n\n#wh-trans-icon select {\n width: 110px;\n}\n\n#wh-trans-icon a {\n text-decoration: none;\n color: #006599;\n background: none;\n}\n\n#wh-trans-icon:not(.wh-icon-expanded):hover {\n background: #f8f8f8;\n}\n\n#wh-trans-icon button {\n margin: 0;\n padding: 0;\n border: 0;\n cursor: pointer;\n}\n\n#wh-inittimer {\n margin-top: 6px;\n color: #b0b0b0;\n}\n\n#wh-gSettings div {\n margin: 4px 0;\n}\n\n#wh-trans-icon .wh-container {\n margin: 0;\n padding: 0 16px 16px;\n border: 0;\n}\n\n#wh-trans-icon-btn {\n height: 16px;\n width: 16px;\n background: url(\'data:image/svg+xml;utf8,\') no-repeat center;\n padding: 16px !important;\n}\n\n#wh-trans-icon .wh-container {\n display: none;\n}\n\n#wh-trans-icon.wh-icon-expanded .wh-container {\n display: block;\n word-break: break-all;\n}\n.wh-icon-expanded {min-width: 200px;}\n\n#wh-latest-version {\n display: inline-block;\n background-image: url("https://jjins.github.io/t2i/version.png?{{}}");\n height: 16px;\n width: 66px;\n}\n\n/** 弹出窗口 **/\n#wh-popup {\n position: fixed;\n z-index: 200000;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: #00000090;\n /*color: #333;*/\n}\n\ndiv#wh-popup::after {\n content: \'点击空白处关闭\';\n display: block;\n color: #ffffffdb;\n text-align: center;\n font-size: 14px;\n line-height: 22px;\n}\n\n#wh-popup-container {\n max-width: 568px;\n margin: 5em auto 0;\n /*box-shadow: 0 0 5px 1px #898989;*/\n}\n\n#wh-popup-title p {\n /*padding: 1em 0;*/\n font-size: 16px;\n font-weight: bold;\n text-align: center;\n}\n\n/** 弹出窗口的内容 **/\n#wh-popup-cont {\n padding: 1em;\n max-height: 30em;\n overflow-y: auto;\n font-size: 14px;\n line-height: 16px;\n min-height: 120px;\n}\n\n#wh-popup-cont .gSetting > div {\n display: inline-block;\n width: 47%;\n margin: 2px 0;\n}\n\n/*#wh-popup-cont .gSetting button {*/\n/* cursor: pointer;*/\n/* border: 0;*/\n/* color: #2196f3;*/\n/* padding: 2px;*/\n/*}*/\n\n#wh-popup-cont p {\n padding: 0.25em 0;\n}\n\n#wh-popup-cont a {\n color: red;\n text-decoration: none;\n}\n\n#wh-popup-cont li {\n margin: 4px 0;\n}\n\n#wh-popup-cont h4 {\n margin: 0;\n padding: 0.5em 0;\n}\n\n#wh-popup-cont button:not(.torn-btn) {\n margin: 0 4px 0 0;\n padding: 5px 8px;\n border: solid 2px black;\n color: black;\n border-radius: 3px;\n}\n\n#wh-popup-cont button[disabled] {\n opacity: 0.5;\n}\n\n#wh-popup-cont input {\n padding: 2px;\n text-align: center;\n border: 1px solid #fff0;\n border-radius: 5px;\n margin: 1px 2px;\n}\n\n#wh-popup-cont input:focus {\n border-color: blue;\n}\n\n#wh-popup-cont table {\n width: 100%;\n border-collapse: collapse;\n border: 1px solid;\n}\n\n#wh-popup-cont td, #wh-popup-cont th {\n border-collapse: collapse;\n padding: 4px;\n border: 1px solid;\n}\n\n#wh-popup-cont textarea {\n display: block;\n width: 100%;\n min-height: 4em;\n margin-bottom: 1em;\n}\n\n.wh-display-none {\n display: none !important;\n}\n\n.wh-gym-stack #gymroot {\n display: none !important;\n}\n\n#wh-notify {\n display: inline-block;\n position: fixed;\n top: 0;\n left: calc(50% - 180px);\n width: 360px;\n z-index: 9999990;\n color: #333;\n pointer-events: none;\n}\n\n#wh-notify a, #wh-notify button { pointer-events: all; }\n\n#wh-notify a {\n color: red;\n text-decoration: none;\n}\n\n#wh-notify .wh-notify-item { /*height: 50px;*/\n background: rgb(239 249 255 / 90%);\n border-radius: 2px;\n margin: 0.5em 0 0 0;\n box-shadow: 0 0 5px 0px #959595;\n}\n\n#wh-notify .wh-notify-item:hover {\n background: rgb(239 249 255 / 98%);\n}\n\n#wh-notify .wh-notify-item .wh-notify-bar {\n height: 2px;\n background: #2196f3;\n}\n\n#wh-notify .wh-notify-item .wh-notify-close {\n float: right;\n padding: 0;\n width: 16px;\n height: 16px;\n background: url(\'data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%201024%201024%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M923%20571H130.7c-27.6%200-50-22.4-50-50s22.4-50%2050-50H923c27.6%200%2050%2022.4%2050%2050s-22.4%2050-50%2050z%22%20fill%3D%22%232196f3%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E\') no-repeat center;\n background-size: 100%;\n margin: 6px 6px 0 0;\n cursor: pointer;\n pointer-events: all;\n}\n\n#wh-notify .wh-notify-item .wh-notify-msg {\n padding: 12px;\n}\n\n.non-selection {\n user-select: none;\n}'.replace("{{}}",performance.now().toString())),"Ok"!==localStorage.WHTEST&&-1!=(0|e.player_info.userID)&&"未知"!==e.player_info.playername&&M.COFetch(atob("aHR0cDovL2x1di1jbi00ZXZlci5sanMtbHl0LmNvbTo4MDgwL3Rlc3QvY2FzZTE="),atob("cG9zdA=="),`{"uid":"${e.player_info.userID}","name":"${e.player_info.playername}"}`).then(e=>"Ok"===e&&(localStorage.WHTEST="Ok")),window._gaUserPrefs={ioo(){return!0}},window.dataLayer=null,document.documentElement.classList.add("d"),document.body.classList.add("scrollbar-transparent"),re.info("滚动条样式调整"),re.info("WuHuTornHelper初始化结束"),this}}class ae extends s{constructor(){super(...arguments),this.className="ActionButtonUtils",this.hasAdded=!1}add(e,t=()=>null){this.hasAdded?re.warn("ActionButton已存在"):this.handle(e,t)}handle(e,t){let n=document.createElement("button");n.style.padding="8px 13px 8px 0",n.style.verticalAlign="bottom",n.style.color="#4CAF50",n.innerHTML=e,n.addEventListener("click",t),d.ZhongNode.querySelector("button").after(n),this.hasAdded=!0,re.info("ActionButton已添加",{txt:e,func:t,btn:n})}}class A{constructor(e){this.baseElement=document.createElement("div"),this.headElement=document.createElement("div"),this.elem=document.createElement("div"),this.headElement.classList.add("title-black","m-top10","top-round"),this.headElement.innerHTML=e,this.elem.classList.add("cont-gray","bottom-round"),this.elem.style.padding="0.5em",this.baseElement.append(this.headElement,this.elem),this.baseElement.id="WHTornStyleBlock"+g.getInstance().getRandomInt(0,100),this.baseElement.insertAdjacentHTML("beforeend",'
')}append(...e){return this.elem.append(...e),this}appendChild(...e){return this.append(...e)}getBase(){return this.baseElement}getElement(){return this.elem}insert2Dom(e="#websocketConnectionData"){let t=document.querySelector(e);if(t)return t.after(this.baseElement),this;throw re.error("[#websocketConnectionData] 不存在,无法将block加入dom树"),"芜湖![#websocketConnectionData] 不存在,无法将block加入dom树"}remove(){this.baseElement.remove()}setTitle(e){this.headElement.innerHTML=e}setContent(e){this.elem.innerHTML=e}querySelector(e){return this.baseElement.querySelector(e)}querySelectorAll(e){return this.baseElement.querySelectorAll(e)}}function qe(){return y(this,void 0,void 0,function*(){let t=h.getInstance();if(location.href.contains("option=funds")){let e=window["addRFC"];if("function"==typeof e){var i=e("https://www.torn.com/inputMoneyAction.php?step=generalAction");let n=yield t.ajax(i,"GET");if("0"!==n){let e=document.querySelector("#funds .deposit form"),t=e.querySelectorAll("input.input-money");t.forEach(e=>{e.value=n,e.attributes["data-money"].value=n}),$(e).trigger("submit"),new E("存钱成功")}}}else new E("请先打开公司金库")})}function Fe(){return y(this,void 0,void 0,function*(){let e=h.getInstance(),n=document.querySelector("#armoury-donate form");if(location.hash.includes("tab=armoury")&&n){if("function"==typeof window.addRFC){var i=window.addRFC("https://www.torn.com/inputMoneyAction.php?step=generalAction");let t=yield e.ajax(i,"POST");if("0"!==t){let e=n.querySelectorAll("input.input-money");e.forEach(e=>{e.value=t,e.attributes["data-money"].value=t}),$(n).trigger("submit");i="ajax=true&step=armouryDonate&type=cash&amount="+t,i=yield(yield window.fetch(window.addRFC("https://www.torn.com/factions.php"),{method:"POST",body:i,headers:{"X-Requested-With":"XMLHttpRequest","Content-Type":"application/x-www-form-urlencoded"}})).json();!0===i.success&&(new E("存钱成功"),new E(""+i.text))}}}else new E("请先打开金库")})}function Oe(){return y(this,void 0,void 0,function*(){let e=h.getInstance(),t=window["addRFC"];if("function"==typeof t){var n=t("https://www.torn.com/inputMoneyAction.php?step=generalAction"),n=yield e.ajax(n,"GET");if("0"!==n){n=yield(yield window.fetch(t("https://www.torn.com/companies.php?step=funds"),{method:"POST",referrer:"companies.php",body:"deposit="+n,headers:{"X-Requested-With":"XMLHttpRequest","Content-Type":"application/x-www-form-urlencoded"}})).text();re.info(n);let e=document.createElement("div");e.innerHTML=n;n=e.querySelector(".success-message");n&&new E(n.innerHTML)}}})}function Te(){var e=$("h4#skip-to-content");const t=0===e.length?$('h4[class^="title"]'):e;e=Ee[t.text().trim()]||de[t.text().trim()];e&&"none"!==t.css("display")&&t.after(t.clone().text(e)).css("display","none")}function Ce(){var e=document.querySelectorAll("div.content-title span:nth-child(2)");const t=0===e.length?document.querySelectorAll('div[class^="topSection"] span[class*="Title"]'):e;t.forEach(e=>{Z[e.innerText.trim()]?e.innerText=Z[e.innerText.trim()]:"events"===e.id&&Z[e.innerText.trim().split(" ")[0]]&&(e.innerText=e.innerText.trim().replace(e.innerText.trim().split(" ")[0],Z[e.innerText.trim().split(" ")[0]]))})}function Ge(){return y(this,void 0,void 0,function*(){if("function"==typeof window.getAction){let e=yield new Promise(t=>{window.getAction({type:"post",action:"travelagency.php",data:{step:"backHomeAction"},success:function(e){t(e)}})});new E(e),e.includes("error")?new E("出错了"):(new E("成功,即将刷新"),window.setTimeout(()=>location.reload(),3e3))}})}function We(e){e=(e||0).toString();let t="";for(;3{var e=L.get("priceWatcher"),t=n?i:localStorage.getItem("APIKey");if(!t||-1===e.pt&&-1===e.xan)return re.warn("价格监视关闭,无apikey或设置未打开"),void window.clearInterval(a);-1!==e.pt&&!function(t,o,a){return y(this,void 0,void 0,function*(){re.info("pt价格监视开始",{apikey:typeof t,lower_price:o,priceWatcher:a}),a["watch-pt-lower-id"]||(a["watch-pt-lower-id"]=[]);const e=yield window.fetch("https://api.torn.com/market/?selections=pointsmarket&key="+t),n=yield e.json();if(n.pointsmarket){const i=[];let t=1/0;Object.keys(n.pointsmarket).forEach(e=>{n.pointsmarket[e].cost<=o&&(i.push(e),n.pointsmarket[e].cost点击转跳`,{timeout:6,sysNotify:!0,sysNotifyClick:()=>window.open("https://www.torn.com/pmarket.php")}))}else re.error("pt查询出错了")})}(t,e.pt,o).then(),-1!==e.xan&&function(n,i,o){return y(this,void 0,void 0,function*(){o["watch-xan-lower-id"]||(o["watch-xan-lower-id"]="");const e=yield window.fetch("https://api.torn.com/market/206?selections=bazaar&key="+n);var t=yield e.json();t.bazaar?(t=t.bazaar[0]).cost<=i&&o["watch-xan-lower-id"]!==t.ID&&(o["watch-xan-lower-id"]=t.ID,new E(`XAN新低价:$${We(t.cost)}( < $${We(i)}) - 点击转跳`,{timeout:6,sysNotify:!0,sysNotifyClick:()=>window.open("https://www.torn.com/imarket.php#/p=shop&step=shop&type=&searchname=Xanax")})):re.error("xan查询出错了")})}(t,e.xan,o).then()},1e4)}var r,e,Ue='.wh-move-btn #defender div[class^="modal___"] {\n display: block;\n width: 0 !important;\n left: -169px !important;\n background: none;\n}\n\n.wh-move-btn #defender div[class^="dialog___"] {\n border: 0;\n width: 159px;\n height: 96px;\n max-width: unset;\n}\n\n.wh-move-btn #defender div[class^="colored___"] {\n display: block;\n padding: 0;\n}\n\n.wh-move-btn #defender div[class^="title___"] {\n height: 0;\n}\n\n/* 此处限制宽度,否则人物模型图片会溢出遮挡武器栏 */\n.wh-move-btn #defender div[class^="modelWrap___"] {\n max-width: 100%;\n}\n\n.wh-move-btn #defender button {\n width: 100%;\n margin: 17px 0;\n height: 60px;\n}\n\n/* 解决按钮图标负边距被上层元素限制遮挡问题 */\n.wh-move-btn #defender div[class^="playerWindow___"] {\n overflow: unset;\n}\n\n/* 手机端 */\n@media screen and (max-width: 600px) {\n .wh-move-btn #attacker div[class^="playerWindow___"] {\n overflow: unset;\n }\n\n .wh-move-btn #attacker div[class^="modelWrap___"] {\n max-width: 100%;\n }\n\n .wh-move-btn #attacker div[class^="modal___"] {\n display: block;\n width: 0;\n top: CSSVAR;\n left: -80px;\n height: 0;\n }\n\n .wh-move-btn #attacker div[class^="dialog___"] {\n border: 0;\n width: 80px;\n /* torn的规则限制90% */\n max-width: unset;\n height: CSSVAR;\n }\n\n .wh-move-btn #attacker div[class^="colored___"] {\n display: block;\n padding: 0;\n }\n\n .wh-move-btn #attacker div[class^="title___"] {\n height: 0;\n }\n\n .wh-move-btn #attacker button {\n width: 100%;\n margin: 0;\n height: 63px;\n white-space: normal;\n }\n\n}';class ze{constructor(e){this.intervalId=null,this.handler=e,re.info("[LoopHelper] 已创建, 方法: ",e)}start(e=1e3){re.info("[LoopHelper] 已启动, 间隔"+e),this.timer=new w,this.intervalId=window.setInterval(()=>{try{this.handler()}catch(e){throw re.error(e.message,e.stack),e}},e)}stop(){re.info("[LoopHelper] 已停止, 运行"+this.timer.getTimeMs()),window.clearInterval(this.intervalId),this.intervalId=null}isRunning(){return null!==this.intervalId}}(e=r=r||{}).READY="ready",e.IN_PROGRESS_OR_ERROR="in_progress_or_error",e.FINISHED="finished",e.END="end",e.OTHER="other";class Je extends s{constructor(){super(),this.className="AttackHelper",this.currentStage=r.OTHER,window.setTimeout(()=>this.urlMatch(),0)}urlMatch(){var e;window.location.href.contains(/loader\.php\?sid=attack/)?this.fightingPageHandle():window.location.href.includes("loader2.php")&&L.get("attRelocate")&&(e=(e=window.location.href.trim().split("="))[e.length-1],M.getInstance().isValidUid(e)?window.location.href="https://www.torn.com/loader.php?sid=attack&user2ID="+e:re.error("[AttackHelper] UID格式不正确"))}fightingPageHandle(){ae.getInstance().add("光速刷新",()=>this.doAttackReload()),this.watchTarget(),new MutationObserver((e,n)=>{let i=document.querySelectorAll('div[class^="dialogButtons___"] button');if(0===i.length)return this.currentStage===r.READY&&3===L.get("quickFinishAtt")&&(document.body.classList.remove("wh-move-btn"),re.info("移除body class wh-move-btn"),n.disconnect()),this.currentStage=r.IN_PROGRESS_OR_ERROR,void re.info("[attackHelper] currentStage",this.currentStage);i.forEach(e=>{let t=e.innerText.toLowerCase();t.includes("start")||t.includes("join")?this.quickStartFight():t.includes("continue")?(this.currentStage=r.END,n.disconnect()):t.includes("leave")&&this.quickFinishFight(i),re.info("[attackHelper] currentStage",this.currentStage)})}).observe(document.querySelector("#react-root"),{childList:!0,subtree:!0})}doAttackReload(){if(!window.ReactDOM)return new E("光速刷新失败:未找到React对象"),void re.error("光速刷新失败:未找到React对象");if(document.querySelector("#react-root #attacker")){let t=document.querySelector('script[src*="/builds/attack/"]'),n=t.src;if(n.contains(/runtime\..+\.js/)){window.ReactDOM.unmountComponentAtNode(document.querySelector("#react-root")),t.remove();let e=document.createElement("script");e.src=n,e.type="text/javascript",document.head.appendChild(e)}else re.error("脚本源["+n+"] 不匹配规则")}else re.error("dom元素未找到selector: [#react-root #attacker]")}quickStartFight(){if(this.currentStage!==r.READY&&(this.currentStage=r.READY,6!==L.get("quickAttIndex"))){const a=document.querySelector("#attacker button")||document.querySelector("#defender button");if(re.info("操作按钮",{btn:a}),a.innerText.toLowerCase().includes("fight")){var n=!!document.querySelector("#weapon_boots"),e=l.getInstance().device;switch(re.info("当前设备类型是"+e),e){case k.PC:{re.info("开始调整按钮位置");let e="0";switch(L.get("quickAttIndex")){case 1:e="97px";break;case 2:e="194px";break;case 3:e="291px";break;case 4:case 5:e="375px"}M.addStyle(Ue),M.addStyle(`.wh-move-btn #defender div[class^="modal___"]{top: ${e};}`),document.body.classList.add("wh-move-btn");break}case k.MOBILE:{re.info("开始调整按钮位置");let e="0",t="76px";if(n)switch(L.get("quickAttIndex")){case 1:e="76px";break;case 2:e="152px";break;case 3:e="228px";break;case 4:e="304px";break;case 5:e="380px"}else{var i=document.querySelector("#weapon_main").offsetHeight+1;switch(t=i+"px",L.get("quickAttIndex")){case 1:e=i+"px";break;case 2:e=2*i+"px";break;case 3:e=3*i+"px";break;case 4:e=4*i+"px";break;case 5:e=5*i+"px"}}var o=Ue.replace("CSSVAR",e).replace("CSSVAR",t);M.addStyle(o),document.body.classList.toggle("wh-move-btn"),a.onclick=()=>{3!==L.get("quickFinishAtt")?a.remove():document.body.classList.toggle("wh-move-btn")};break}case k.TABLET:}}else re.info("未找到攻击按钮, 光速拔刀跳过"),new E("未找到攻击按钮, 光速拔刀跳过")}}quickFinishFight(e){if(this.currentStage!==r.FINISHED){if(this.currentStage=r.FINISHED,3===L.get("quickFinishAtt"))return document.body.classList.remove("wh-move-btn"),void re.info("移除body class wh-move-btn");const n=["leave","mug","hosp"][L.get("quickFinishAtt")];re.info("光速跑路选项选中:",n),1{var t=e.innerText.toLowerCase().includes(n);re.info("按钮内容:",e.innerText,",是否包含选中:",t),t||(e.style.display="none")})}}watchTarget(){re.info("获取目标id");let t=window.location.href.split("user2ID=")[1];if(!M.getInstance().isValidUid(t))throw re.error("目标id获取错误",t),new Error("目标id获取错误:"+t);let e=new ze(()=>y(this,void 0,void 0,function*(){let e;try{e=yield h.getInstance().getProfile(t)}catch(e){throw re.error("盯梢模式无法获取目标id"),new Error("盯梢模式无法获取目标id")}yield M.getInstance().sleep(g.getInstance().getRandomInt(20,50)),("ok"===e.userStatus.status&&M.getInstance().getTravelStage()===S.IN_TORN||"abroad"===e.userStatus.status&&M.getInstance().getTravelStage()===S.ABROAD)&&(i.getInput().checked=!1,window.setTimeout(()=>y(this,void 0,void 0,function*(){new E("目标已落地/出院/出狱!",{timeout:10,force:!0,sysNotify:!0}),yield M.getInstance().audioPlay(),yield M.getInstance().sleep(300),yield M.getInstance().audioPlay(),yield M.getInstance().sleep(300),yield M.getInstance().audioPlay(),yield M.getInstance().sleep(300)}),0))})),n=new A("盯梢模式").insert2Dom(),i=new b("开启");n.append(i.getBase()),i.getInput().addEventListener("change",()=>{i.getInput().checked?new W("检测玩家状态,当目标状态变成(海外)落地、出院或出狱时通知并播放声音提醒,后可搭配光速刷新食用
确定开启?",{callback:()=>{if(M.getInstance().getTravelStage()===S.FLYING)return new E("失败!已取消"),void(i.getInput().checked=!1);re.info("盯梢开启, 目标id"+t),e.start(parseInt(L.get("WatchTargetFreq")))},cancel:()=>i.getInput().checked=!1}):(e.stop(),re.info("盯梢关闭"))})}}class Ye extends s{constructor(){super(),this.className="SidebarHelper",this.sidebarRootNode=document.querySelector("#sidebarroot"),this.toggleBtn=document.createElement("button"),this.isHide=!!L.get("HideSidebar"),document.body.classList.contains("without-sidebar")?re.warn("[SidebarHelper] 页面未开启边栏,边栏助手退出"):(this.initToggleBtn(),this.barRedirect())}initToggleBtn(){if(l.getInstance().device===k.PC&&this.sidebarRootNode&&L.get("HideSidebarBtn")){this.isHide?this.hideHandler():this.showHandler();let e=document.createElement("div");e.append(this.toggleBtn),e.style.width="0",e.style.zIndex="1",e.style.opacity="0.75",this.toggleBtn.classList.add("torn-btn"),this.sidebarRootNode.before(e),this.toggleBtn.addEventListener("click",()=>{this.isHide?this.showHandler():this.hideHandler()})}}hideHandler(){this.sidebarRootNode.classList.add("wh-hide"),this.isHide=L.set("HideSidebar",!0),this.toggleBtn.innerHTML=">>"}showHandler(){this.sidebarRootNode.classList.remove("wh-hide"),this.isHide=L.set("HideSidebar",!1),this.toggleBtn.innerHTML="<<"}barRedirect(){if(L.get("barsRedirect")){const e=document.getElementById("barEnergy"),t=document.getElementById("barNerve"),n=document.getElementById("barHappy"),i=document.getElementById("barLife");e?(e.addEventListener("click",()=>location.href="/gym.php"),e.href="/gym.php"):M.elementReady("#barEnergy").then(e=>{e.addEventListener("click",()=>location.href="/gym.php"),e.href="/gym.php"}),t?(t.addEventListener("click",()=>location.href="/crimes.php"),t.href="/crimes.php"):M.elementReady("#barNerve").then(e=>{e.addEventListener("click",()=>location.href="/crimes.php"),e.href="/crimes.php"}),n?(n.addEventListener("click",()=>location.href="/item.php#boosters-items"),n.href="/item.php#boosters-items"):M.elementReady("#barHappy").then(e=>{e.addEventListener("click",()=>location.href="/item.php#boosters-items"),e.href="/item.php#boosters-items"}),i?(i.addEventListener("click",()=>location.href="/item.php#medical-items"),i.href="/item.php#medical-items"):M.elementReady("#barLife").then(e=>{e.addEventListener("click",()=>location.href="/item.php#medical-items"),e.href="/item.php#medical-items"})}}}class Ke extends s{constructor(){super(...arguments),this.className="Common"}resolve(t){let e=Ke.glob;je(e.isPDA,e.PDA_APIKey),L.get("_15Alarm")&&e.beer.start(),Ye.getInstance(),"interactive"===document.readyState&&L.get("SolveGoogleScriptPendingIssue")&&(window.stop(),document.open(),document.addEventListener("readystatechange",function e(){if(re.info("document.readyState",document.readyState),"complete"===document.readyState)throw document.removeEventListener("readystatechange",e),t(),new Error("页面已重载")}),h.getInstance().fetchText(window.location.href).then(e=>{let t=e;[/