diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..7acae8c --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,15 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..79ee123 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..8a7375f --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,66 @@ + + + + \ No newline at end of file diff --git a/.idea/jsLibraryMappings.xml b/.idea/jsLibraryMappings.xml new file mode 100644 index 0000000..cc3da93 --- /dev/null +++ b/.idea/jsLibraryMappings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..b713487 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..4cd28c6 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/smartfox_info.xml b/.idea/smartfox_info.xml new file mode 100644 index 0000000..1c2584f --- /dev/null +++ b/.idea/smartfox_info.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/torncity-zhcn-translate.iml b/.idea/torncity-zhcn-translate.iml new file mode 100644 index 0000000..d6ebd48 --- /dev/null +++ b/.idea/torncity-zhcn-translate.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index a40e43a..8864e51 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "wuhu-torn-helper", - "version": "0.4.6", + "version": "0.4.9", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/wuhu-torn-helper.js b/wuhu-torn-helper.js index 0721f61..7b2cf7e 100644 --- a/wuhu-torn-helper.js +++ b/wuhu-torn-helper.js @@ -1,8 +1,11 @@ -!async function () { +async function main() { 'use strict'; const start_timestamp = Date.now(); if (document.title.toLowerCase().includes('just a moment')) return; - const UWCopy = window.unsafeWindow; + let UWCopy; + if (window.hasOwnProperty('unsafeWindow')) { + UWCopy = window.unsafeWindow; + } try { window = UWCopy || window; } catch { @@ -18,7 +21,7 @@ const isPDA = PDA_APIKey.slice(-1) !== '#'; log.error = (...o) => (isDev()) && (console.error('[WH]', ...o)); - log.warm = (...o) => (isDev()) && (console.warm('[WH]', ...o)); + log.info = (...o) => (isDev()) && (console.info('[WH]', ...o)); // 通知权限 if (window.Notification) { @@ -2794,7 +2797,7 @@ } let clone = res.clone(); let text = await res.text(); - log({url, init, text}); + log({ url, init, text }); return clone; }; // endregion @@ -2824,13 +2827,13 @@ // 返回一个加载中gif图形HTML const loading_gif_html = () => { const gif_base64 = `data:image/svg+xml,%3Csvg t='1656084442571' class='icon' viewBox='0 0 1024 1024' version='1.1' xmlns='http://www.w3.org/2000/svg' p-id='3924' width='14' height='14'%3E%3Cpath d='M512.032002 237.105181a29.310168 29.310168 0 0 1-29.310168-29.246172V29.310168a29.310168 29.310168 0 0 1 58.620336 0v178.548841A29.310168 29.310168 0 0 1 512.032002 237.105181zM512.032002 1024a29.310168 29.310168 0 0 1-29.310168-29.310168v-178.484845a29.310168 29.310168 0 1 1 58.620336 0v178.548841A29.310168 29.310168 0 0 1 512.032002 1024z m482.657834-482.657834h-178.484845a29.310168 29.310168 0 1 1 0-58.620336h178.548841a29.310168 29.310168 0 1 1 0 58.620336z m-786.830823 0H29.310172a29.310168 29.310168 0 0 1 0-58.620336h178.548841a29.310168 29.310168 0 0 1 0 58.620336z m519.263546-215.090557a29.182176 29.182176 0 0 1-20.734704-49.980876l126.264108-126.264108a29.310168 29.310168 0 1 1 41.405412 41.405412l-126.264108 126.264108a29.182176 29.182176 0 0 1-20.670708 8.575464zM170.741333 882.568839a29.182176 29.182176 0 0 1-20.734704-49.980876l126.264108-126.264108a29.246172 29.246172 0 1 1 41.405412 41.405412L191.412041 874.057371a29.182176 29.182176 0 0 1-20.670708 8.575464z m682.581338 0a29.182176 29.182176 0 0 1-20.670708-8.575464l-126.264108-126.264108a29.310168 29.310168 0 1 1 41.405412-41.405412l126.264108 126.264108a29.310168 29.310168 0 0 1-20.734704 49.91688zM297.005441 326.251609a29.182176 29.182176 0 0 1-20.670708-8.575464L150.006629 191.412037a29.310168 29.310168 0 1 1 41.405412-41.405412l126.264108 126.264108a29.310168 29.310168 0 0 1-20.734704 49.91688z' p-id='3925'%3E%3C/path%3E%3C/svg%3E` - return `lgif`; + return `lgif`; } // 抢啤酒 let beer = buyBeer(); let popup_node = null; // 当窗口关闭时关闭所有还存在的通知 - let notifies = {count: 0}; + let notifies = { count: 0 }; window.addEventListener( 'beforeunload', () => { @@ -2850,62 +2853,62 @@ // 对新值应用「默认」设置 [ // 开启翻译 - {key: 'transEnable', val: false}, + { key: 'transEnable', val: false }, // 快速犯罪 - {key: 'quickCrime', val: true}, + { key: 'quickCrime', val: true }, // 任务助手 - {key: 'missionHint', val: true}, + { key: 'missionHint', val: true }, // 小镇攻略 - {key: 'xmasTownWT', val: true}, + { key: 'xmasTownWT', val: true }, // 小镇提醒 - {key: 'xmasTownNotify', val: true}, + { key: 'xmasTownNotify', val: true }, // 起飞爆e - {key: 'energyAlert', val: true}, + { key: 'energyAlert', val: true }, // 飞行闹钟 - {key: 'trvAlarm', val: true}, + { key: 'trvAlarm', val: true }, // 啤酒提醒 - {key: '_15Alarm', val: true}, + { key: '_15Alarm', val: true }, // 捡垃圾助手 - {key: 'cityFinder', val: false}, + { key: 'cityFinder', val: false }, // 叠E保护 - {key: 'SEProtect', val: false}, + { key: 'SEProtect', val: false }, // PT一键购买 - {key: 'ptQuickBuy', val: false}, + { key: 'ptQuickBuy', val: false }, // 光速拔刀 6-关闭 - {key: 'quickAttIndex', val: 2}, + { key: 'quickAttIndex', val: 2 }, // 光速跑路 0-leave 1-mug 2-hos 3-关闭 - {key: 'quickFinishAtt', val: 3}, + { key: 'quickFinishAtt', val: 3 }, // 自动开打和结束 - {key: 'autoStartFinish', val: false}, + { key: 'autoStartFinish', val: false }, // 废弃 - {key: 'attRelocate', val: true}, + { key: 'attRelocate', val: true }, // 攻击自刷新 0-无间隔 1-5s 6-关闭 - {key: 'attReload', val: 6}, + { key: 'attReload', val: 6 }, // 价格监视 - {key: 'priceWatcher', val: {xan: -1, pt: -1}}, + { key: 'priceWatcher', val: { xan: -1, pt: -1 } }, // 开发者模式 - {key: 'isDev', val: false}, + { key: 'isDev', val: false }, // 啤酒提醒时间 - {key: '_15AlarmTime', val: 50}, + { key: '_15AlarmTime', val: 50 }, // 4条转跳 - {key: 'barsRedirect', val: true}, + { key: 'barsRedirect', val: true }, // 浮动存钱框 - {key: 'floatDepo', val: true}, + { key: 'floatDepo', val: true }, // 公司转跳存钱 - {key: 'companyRedirect', val: true}, + { key: 'companyRedirect', val: true }, // 收起公司冰蛙效率表 - {key: 'companyBWCollapse', val: true}, + { key: 'companyBWCollapse', val: true }, // 清除多余的脚本 - {key: 'removeScripts', val: true}, + { key: 'removeScripts', val: true }, // 海外警告 - {key: 'abroadWarning', val: true}, + { key: 'abroadWarning', val: true }, // 落地转跳 - {key: 'landedRedirect', val: ''}, + { key: 'landedRedirect', val: '' }, // 任何位置一键存钱 - {key: 'companyDepositAnywhere', val: false}, + { key: 'companyDepositAnywhere', val: false }, // 危险行为⚠️ - {key: 'dangerZone', val: false}, + { key: 'dangerZone', val: false }, ].forEach(df => { if (typeof getWhSettingObj()[df.key] !== typeof df.val) setWhSetting(df.key, df.val); }); @@ -3076,7 +3079,7 @@ tip: '海外落地后每30秒通知警告', }); // 落地转跳 - setting_list.push({domType: 'button', domId: '', domText: '落地转跳', clickFunc: landedRedirect}); + setting_list.push({ domType: 'button', domId: '', domText: '落地转跳', clickFunc: landedRedirect }); // 公司 setting_list.push({ @@ -3143,7 +3146,7 @@ domId: '', domText: '啤酒提醒状态', clickFunc: function () { - WHNotify(`啤酒提醒${beer.status()}`); + WHNotify(`啤酒提醒${ beer.status() }`); } }); // 啤酒提醒时间 @@ -3154,7 +3157,7 @@ // tip: '通知提前时间', clickFunc: function () { popup_node.close(); - let popup = popupMsg(`

区间为 1 ~ 60,默认 50

`, '啤酒提醒时间设定'); + let popup = popupMsg(`

区间为 1 ~ 60,默认 50

`, '啤酒提醒时间设定'); let confirm = document.createElement('button'); confirm.innerHTML = '确定'; confirm.style.float = 'right'; @@ -3301,7 +3304,7 @@ setting_list.push({ domType: 'checkbox', domId: 'wh-dev-mode', - domText: ` 开发者模式${isDev() ? ' ' : ''}`, + domText: ` 开发者模式${ isDev() ? ' ' : '' }`, dictName: 'isDev', isHide: true, }); @@ -3323,39 +3326,39 @@ menu_list.push({ domType: 'plain', domId: 'wh-trans-welcome', - domHTML: `欢迎 ${player_info.playername}[${player_info.userID}] 大佬`, + domHTML: `欢迎 ${ player_info.playername }[${ player_info.userID }] 大佬`, }); } // 节日 let fest_date_html = ': '; { const fest_date_dict = { - '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: '获得双倍的能量饮料效果增益'}, - '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: '获得双倍的能量饮料效果增益' }, + '1014': { name: '世界糖尿病日', eff: '获得三倍的糖类效果增益' }, + '1015': { name: '周年庆', eff: '左上角的TORN图标可以食用' }, + '1025': { name: '黑色星期五', eff: '某些商家将提供1元购活动' }, + '1114': { name: '住院日', eff: '获得降低75%的住院时间增益' }, }; menu_list.fest_date_dict = fest_date_dict; menu_list.fest_date_list = Object.keys(fest_date_dict); const formatMMDD = (m, d) => { - const MM = m < 10 ? `0${m}` : m.toString(); - const DD = d < 10 ? `0${d}` : d.toString(); + const MM = m < 10 ? `0${ m }` : m.toString(); + const DD = d < 10 ? `0${ d }` : d.toString(); return MM + DD; } const fest_date_key = formatMMDD(date.getUTCMonth(), date.getUTCDate()); - if (fest_date_dict[fest_date_key]) fest_date_html += `今天 - ${fest_date_dict[fest_date_key]['name']}()`; + if (fest_date_dict[fest_date_key]) fest_date_html += `今天 - ${ fest_date_dict[fest_date_key]['name'] }()`; else { // 月日列表 let fest_date_list = Object.keys(fest_date_dict); @@ -3371,7 +3374,7 @@ fest_date_list[next_fest_date_index !== fest_date_list.length ? next_fest_date_index : 0].slice(2) / 1, 8 ) - date) / 86400000 | 0; - fest_date_html += `${days_left}天后 - ${next_fest_date.name}()`; + fest_date_html += `${ days_left }天后 - ${ next_fest_date.name }()`; } } menu_list.push({ @@ -3452,8 +3455,8 @@ }); eventObj.html = ': '; eventObj.onEv - ? eventObj.html += `${eventObj.current.name}() - 剩余${eventObj.daysLeft}天` - : eventObj.html += `${eventObj.daysLeft}天后 - ${eventObj.next.name}()`; + ? eventObj.html += `${ eventObj.current.name }() - 剩余${ eventObj.daysLeft }天` + : eventObj.html += `${ eventObj.daysLeft }天后 - ${ eventObj.next.name }()`; menu_list.push({ domType: 'plain', domId: 'wh-trans-event-cont', @@ -3540,7 +3543,7 @@ info{display:block;} `; const [dest_node, type_node] = node.querySelectorAll('select'); node.querySelector('button').addEventListener('click', () => { - sessionStorage['wh-quick-fly'] = `${dest_node.selectedIndex} ${type_node.selectedIndex} ${new Date().getTime()}`; + sessionStorage['wh-quick-fly'] = `${ dest_node.selectedIndex } ${ type_node.selectedIndex } ${ new Date().getTime() }`; if (!href.contains('travelagency.php')) { WHNotify('正在转跳'); location.href = 'https://www.torn.com/travelagency.php'; @@ -3576,13 +3579,13 @@ info{display:block;} ['~9时54分', '~6时56分', '~4时58分', '~2时58分',], ]; const showTime = function () { - time_predict.innerHTML = `往返时间:${predict[dest_node.selectedIndex][type_node.selectedIndex]}`; + time_predict.innerHTML = `往返时间:${ predict[dest_node.selectedIndex][type_node.selectedIndex] }`; } dest_node.addEventListener('change', showTime); type_node.addEventListener('change', showTime); document.body.append(node); showTime(); - yaoCD.innerHTML = `药CD剩余:${getYaoCD()}`; + yaoCD.innerHTML = `药CD剩余:${ getYaoCD() }`; }, }); // NPC LOOT @@ -3600,7 +3603,7 @@ info{display:block;}
  • Fernando(毒伞)
  • Tiny(大锤)
  • -
    stock.png
    `; +
    stock.png
    `; popupMsg(insert, 'NPC LOOT'); }, tip: '显示5个可击杀NPC的开打时间', @@ -3626,8 +3629,8 @@ info{display:block;} 冰蛙或PDA (推荐)

    由于需要用到APIKey,因此需要冰蛙或PDA提供

    当前可以使用的APIKey:
    -(来自冰蛙)
    -(来自PDA)

    +(来自冰蛙)
    +(来自PDA)