MoxxiMod

one click at a time

目前为 2022-06-03 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name MoxxiMod
  3. // @namespace https://studiomoxxi.com/
  4. // @description one click at a time
  5. // @author Ben
  6. // @match *.outwar.com/*
  7. // @version 4.0
  8. // @grant GM_xmlhttpRequest
  9. // @license MIT
  10. // @grant GM_getResourceText
  11. // @grant GM_addStyle
  12. // @require http://code.jquery.com/jquery-3.6.0.min.js
  13. // ==/UserScript==
  14.  
  15. // world
  16.  
  17. function doc_keyUp(e) {
  18. if (e.key === '1') {
  19. document.querySelector("#roomDetails > ul > li:nth-child(1) > div > div.ml-3.d-block.align-self-center > a > img").click();}
  20. if (e.key === '2') {
  21. document.querySelector("#roomDetails > ul > li:nth-child(2) > div > div.ml-3.d-block.align-self-center > a > img").click();}
  22. if (e.key === '3') {
  23. document.querySelector("#roomDetails > ul > li:nth-child(3) > div > div.ml-3.d-block.align-self-center > a > img").click();}
  24. if (e.key === '4') {
  25. document.querySelector("#roomDetails > ul > li:nth-child(4) > div > div.ml-3.d-block.align-self-center > a > img").click();}
  26. if (e.key === '5') {
  27. document.querySelector("#roomDetails > ul > li:nth-child(5) > div > div.ml-3.d-block.align-self-center > a > img").click();}
  28. if (e.key === '6') {
  29. document.querySelector("#roomDetails > ul > li:nth-child(6) > div > div.ml-3.d-block.align-self-center > a > img").click();}
  30. if (e.key === '7') {
  31. document.querySelector("#roomDetails > ul > li:nth-child(7) > div > div.ml-3.d-block.align-self-center > a > img").click();}
  32. if (e.key === '8') {
  33. document.querySelector("#roomDetails > ul > li:nth-child(8) > div > div.ml-3.d-block.align-self-center > a > img").click();}
  34. if (e.key === '9') {
  35. document.querySelector("#roomDetails > ul > li:nth-child(9) > div > div.ml-3.d-block.align-self-center > a > img").click();}}
  36.  
  37. document.addEventListener('keyup', doc_keyUp, false);
  38.  
  39. if ( document.URL.indexOf("world") != -1 ) {
  40. let observer = new MutationObserver(mutationRecords => {
  41. console.log(mutationRecords); // console.log(the changes)
  42. attackframe()
  43. });
  44. observer.observe(roomid_display, {
  45. childList: true, // observe direct children
  46. subtree: true, // and lower descendants too
  47. characterDataOldValue: true // pass old data to callback
  48. });
  49.  
  50. function attackframe(){
  51. $('a[target="_blank"]').prop("target", "attack");
  52. };}
  53.  
  54. if (document.URL.indexOf("plrattack") != -1 ) {
  55. $("#sidebar").hide()
  56. $("body > center > div.sub-header-container").hide()
  57. $("body > center > div.header-container.fixed-top").hide()
  58. $("#ranks-filters > form > div").hide()
  59. GM_addStyle ( `
  60. #container{background:#0B0B0B !important;}
  61. #content > div.layout-px-spacing{margin-top: -50px !important;background:#0B0B0B !important;}
  62. .mr-3, .mx-3 {margin-right: 0rem!important;}
  63. #content-header-row > center{zoom: 90% !important;}
  64. ` );}
  65.  
  66. if ( document.URL.indexOf("world") != -1 ) {
  67. var theImage8;
  68. theImage8 = document.querySelector("#content-header-row > div.col-xl-5.col-lg-12.col-md-6.col-sm-12.col-12.layout-spacing.px-1 > div > div.widget-content > div.room-top")
  69. theImage8.innerHTML =
  70. '<iframe src="https://studiomoxxi.com/ow_themes/custom_jobs/classic_01/dc_box.png" name="attack" style="border:0px #ffffff none;" scrolling="no" frameborder="0" height="450px" width="750px"></iframe>'}
  71.  
  72. if ( document.URL.indexOf("world") != -1 ) {
  73. GM_addStyle ( `
  74. #roomDetails > ul > li > div > div.mr-3 > img {display:none !important;}
  75. #ranks > li > div > div.mr-3 > div > div.rank-row-image > a{width: 0px !important;}
  76. #ranks > li > div > div.media-body{text-align: left !important;}
  77.  
  78. .mr-3, .mx-3 {margin-right: 0rem!important;}
  79. #content-header-row > div.col-xl-5.col-lg-12.col-md-6.col-sm-12.col-12.layout-spacing.px-1 > div > div.widget-content > div.room-middle{display:none !important;}
  80. .spawnRow{padding-top:0px !important;padding-bottom:0px !important;}
  81. #roomDetails > ul > li {
  82. display: block !important;
  83. list-style-type: disc !important;
  84. margin-block-start: 0em !important;
  85. margin-block-end: 0em !important;
  86. margin-inline-start: 0px !important;
  87. margin-inline-end: 0px !important;
  88. padding-inline-start: 0px !important;
  89. }
  90. ` );}
  91.  
  92. // redefined
  93.  
  94. if ( document.URL.indexOf("scratch_ticket") != -1 ) {
  95. var theImage2;
  96. theImage2 = document.querySelector("#content > div.layout-px-spacing")
  97. theImage2.innerHTML = '<div id="contentframe" style="position:fixed; top: 100px; left: -65px;">' +
  98. '<iframe src="https://www.redefined.ro/?Quests" style="border:0px #ffffff none;" name="redefined" scrolling="yes" frameborder="0" marginheight="0px" marginwidth="0px" height="800px" width="1600px" allowfullscreen></iframe>' +
  99. '</div>'}
  100.  
  101. // itemdb
  102.  
  103. if ( document.URL.indexOf("raffle") != -1 ) {
  104. var theImage3;
  105. theImage3 = document.querySelector("#content > div.layout-px-spacing")
  106. theImage3.innerHTML = '<div id="contentframe" style="position:fixed; top: 120px; left: 210px;">' +
  107. '<iframe src="https://ow-raiding.com/items.php" style="border:0px #ffffff none;" name="redefined" scrolling="yes" frameborder="0" marginheight="0px" marginwidth="0px" height="800px" width="1300px" allowfullscreen></iframe>' +
  108. '</div>'}
  109.  
  110. // sess id
  111.  
  112. var byptlink = document.querySelector("#accordionExample > a");
  113. var sessid = byptlink.href.replace(/https:\/\/rampidgaming.outwar.com\/stripe_buy\?game=ow&outwar=0&wsrv=\$subDomain&lvl=\$user\[level]&rg_sess_id=/, ' ');
  114. var bypplink = document.querySelector("#components > li:nth-child(11) > a")
  115.  
  116. // custom side menu
  117.  
  118. var theImage;
  119. theImage = document.querySelector("#sidebar");
  120. theImage.innerHTML = '<div class="sidebar-wrapper sidebar-theme">'+
  121. '<nav id="sidebar">'+
  122. '<div class="shadow-bottom"></div>'+
  123. '<ul class="list-unstyled menu-categories ps" id="accordionExample">'+
  124.  
  125. '<li class="menu">'+
  126. '<a href="/home" class="dropdown-toggle">'+
  127. '<div class="">'+
  128. '<i class="fa fa-home"></i>'+
  129. '<span> HOME</span>'+
  130. '</div>'+
  131. '</a>'+
  132. '</li>'+
  133.  
  134. '<li class="menu">'+
  135. '<a href="#components" data-toggle="collapse" aria-expanded="false" class="dropdown-toggle">'+
  136. '<div class="">'+
  137. '<i class="fas fa-user fa-fw"></i>'+
  138. '<span> CHARACTER</span>'+
  139. '</div>'+
  140. '<div>'+
  141. '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right"><polyline points="9 18 15 12 9 6"></polyline></svg>'+
  142. '</div>'+
  143. '</a>'+
  144. '<ul class="collapse submenu list-unstyled" id="components" data-parent="#accordionExample">'+
  145.  
  146. '<li><a href="/profile"> PROFILE</a></li>'+
  147. '<li><a href="/ow_messagecenter"> MESSAGE CENTER</a></li>'+
  148. '<li><a href="/cast_skills"> SKILLS</a></li>'+
  149. '<li><a href="/allies"> MY ALLIES</a></li>'+
  150. '<li><a href="/underlings"> UNDERLINGS</a></li>'+
  151. '<li><a href="/user_preferences"> PREFERENCES</a></li>'+
  152. '<li><div id=updates24><a href="/crew_apply"> MOXXIMOD</a></font></div></li>'+
  153. '</ul>'+
  154. '</li>'+
  155.  
  156. '<li class="menu">'+
  157. '<a href="#server" data-toggle="collapse" aria-expanded="false" class="dropdown-toggle">'+
  158. '<div class="">'+
  159. '<i class="fas fa-server fa-fw"></i>'+
  160. '<span> SERVER</span>'+
  161. '</div>'+
  162. '<div>'+
  163. '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right"><polyline points="9 18 15 12 9 6"></polyline></svg>'+
  164. '</div>'+
  165. '</a>'+
  166. '<ul class="collapse submenu list-unstyled" id="server" data-parent="#accordionExample">'+
  167. '<li><a href="/attack_search"> SEARCH</a></li>'+
  168. '<li><a href="/newrankings"> RANKINGS</a></li>'+
  169. '<li><a href="/gladiator"> GLADIATORS</a></li>'+
  170. '<li><a href="/event?eventid=woz"> WAR OF ZHUL</a></li>'+
  171. '<li><a href="/event?eventid=top"> TRIAL OF POWER</a></li>'+
  172. '<li><a href="/kotw"> KOTW</a></li>'+
  173. '<li><a href="/news"> NEWS</a></li>'+
  174. '</ul>'+
  175. '</li>'+
  176.  
  177. '<li class="menu">'+
  178. '<a href="#elements" data-toggle="collapse" aria-expanded="false" class="dropdown-toggle">'+
  179. '<div class="">'+
  180. '<i class="fa fa-shopping-cart fa-fw"></i>'+
  181. '<span> ECONOMY</span>'+
  182. '</div>'+
  183. '<div>'+
  184. '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right"><polyline points="9 18 15 12 9 6"></polyline></svg>'+
  185. '</div>'+
  186. '</a>'+
  187. '<ul class="collapse submenu list-unstyled" id="elements" data-parent="#accordionExample">'+
  188. '<li><a href="/treasury?type=-1"> BUY ITEMS</a></li>'+
  189. '<li><a href="/mytreasury"> SELL ITEMS</a></li>'+
  190. '<li><a href="/treasury?type=192"> AMULET SHOP</a></li>'+
  191. '<li><a href="/supplies"> SUPPLIES</a></li>'+
  192. '<li><a href="/pointtransfer"> TRANSFER PNTS</a></li>'+
  193. '<li><a href="' + byptlink.href +'">BUY POINTS</a></li>'+
  194. '<li><a href="' + bypplink.href +'">BUY PP</a></li>'+
  195. '</ul>'+
  196. '</li>'+
  197.  
  198. '<li class="menu">'+
  199. '<a href="#forms" data-toggle="collapse" aria-expanded="false" class="dropdown-toggle">'+
  200. '<div class="">'+
  201. '<i class="fas fa-shield fa-fw"></i>'+
  202. '<span> CREW</span>'+
  203. '</div>'+
  204. '<div>'+
  205. '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right"><polyline points="9 18 15 12 9 6"></polyline></svg>'+
  206. '</div>'+
  207. '</a>'+
  208. '<ul class="collapse submenu list-unstyled" id="forms" data-parent="#accordionExample">'+
  209. '<li><a href="/crew_home"> CREW HOME</a></li>'+
  210. '<li><a href="/crew_profile"> CREW PROFILE</a></li>'+
  211. '<li><a href="/crew_bossspawns"> RAID BOSSES</a></li>'+
  212. '<li><a href="/crew_vault"> CREW VAULT</a></li>'+
  213. '<li><a href="/godstatus"> GOD STATUS</a></li>'+
  214. '<li><a href="/crewinvites"> CREW INVITES</a></li>'+
  215. '<li><a href="/crew_leavecrew"> LEAVE CREW</a></li>'+
  216. '</ul>'+
  217. '</li>'+
  218.  
  219. '<li class="menu">'+
  220. '<a href="#pvp" data-toggle="collapse" aria-expanded="false" class="dropdown-toggle">'+
  221. '<div class="">'+
  222. '<i class="fas fa-shield-alt fa-fw"></i>'+
  223. '<span> PVP</span>'+
  224. '</div>'+
  225. '<div>'+
  226. '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right"><polyline points="9 18 15 12 9 6"></polyline></svg>'+
  227. '</div>'+
  228. '</a>'+
  229. '<ul class="collapse submenu list-unstyled" id="pvp" data-parent="#accordionExample">'+
  230. '<li><a href="/attacklog"> ATTACK LOG</a></li>'+
  231. '<li><a href="/pvptourney"> OPEN TOURNEY</a></li>'+
  232. '<li><a href="/closedpvp"> PVP BRAWL</a></li>'+
  233. '<li><a href="/crew_hitlist"> HITLIST</a></li>'+
  234. '</ul>'+
  235. '</li>'+
  236.  
  237. '<li class="menu">'+
  238. '<a href="#datatables" data-toggle="collapse" aria-expanded="false" class="dropdown-toggle">'+
  239. '<div class="">'+
  240. '<i class="fas fa-shopping-bag fa-fw"></i>'+
  241. '<span> ITEMS</span>'+
  242. '</div>'+
  243. '<div>'+
  244. '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right"><polyline points="9 18 15 12 9 6"></polyline></svg>'+
  245. '</div>'+
  246. '</a>'+
  247. '<ul class="collapse submenu list-unstyled" id="datatables" data-parent="#accordionExample">'+
  248. '<li><a href="/vault"> VAULT</a></li>'+
  249. '<li><a href="/blacksmith"> BLACKSMITH</a></li>'+
  250. '<li><a href="/augmentequip"> ADD AUGMENTS</a></li>'+
  251. '<li><a href="/itemtransfer"> ITEM TRANSFER</a></li>'+
  252. '<li><a href="/cauldron"> CAULDRON</a></li>'+
  253. '<li><a href="/raffle"> ITEM DATABASE</a></li>'+
  254. '<li><a href="/challenge"> CHALLENGE SETS</a></li>'+
  255. '</ul>'+
  256. '</li>'+
  257.  
  258. '<li class="menu">'+
  259. '<a href="#resources" data-toggle="collapse" aria-expanded="false" class="dropdown-toggle">'+
  260. '<div class="">'+
  261. '<i class="fas fa-book fa-fw"></i>'+
  262. '<span> QUESTS</span>'+
  263. '</div>'+
  264. '<div>'+
  265. '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right"><polyline points="9 18 15 12 9 6"></polyline></svg>'+
  266. '</div>'+
  267. '</a>'+
  268. '<ul class="collapse submenu list-unstyled" id="resources" data-parent="#accordionExample">'+
  269. '<li><a href="/world"> EXPLORE</a></li>'+
  270. '<li><a href="/scratch_ticket"> REDEFINED</a></li>'+
  271. '<li><a href="/weeklyquests"> BOOSTERS</a></li>'+
  272. '<li><a href="/questlog"> QUEST LOG</a></li>'+
  273. '<li><a href="/dungeons"> DUNGEONS</a></li>'+
  274. '<li><a href="/collections"> COLLECTIONS</a></li>'+
  275. '<li><a href="/challenge"> CHALLENGES</a></li>'+
  276. '</ul>'+
  277. '</li>'+
  278.  
  279. '<li class="menu">'+
  280. '<a href="#rga" data-toggle="collapse" aria-expanded="false" class="dropdown-toggle">'+
  281. '<div class="">'+
  282. '<i class="fa fa-address-card"></i>'+
  283. '<span> RGA</span>'+
  284. '</div>'+
  285. '<div>'+
  286. '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right"><polyline points="9 18 15 12 9 6"></polyline></svg>'+
  287. '</div>'+
  288. '</a>'+
  289. '<ul class="collapse submenu list-unstyled" id="rga" data-parent="#accordionExample">'+
  290. '<li><a href="/myaccount.php?ac_serverid=2"> TORAX CHARS</a></li>'+
  291. '<li><a href="/myaccount.php?ac_serverid=1"> SIGIL CHARS</a></li>'+
  292. '<li><a href=#><input type="text" value='+sessid+' maxlength="12" size="12"></a></li>'+
  293. '<li><a href="/accountinfo.php"> ACCOUNT</a></li>'+
  294. '<li><a href="/support.php"> OW SUPPORT</a></li>'+
  295. '<li><a href="?cmd=logout"> LOGOUT</a></li>'+
  296. '</ul>'+
  297. '</li>'+
  298.  
  299. '<p><br>' +
  300.  
  301. '<div class=search>' +
  302. '<form method="post" action="playersearch.php" target="_parent">' +
  303. '<div class="col-12 px-2">' +
  304. '<input id="t-text" type="text" name="search" placeholder="player search" class="form-control" required="">' +
  305. '</div>' +
  306. '</form>' +
  307. '</div>' +
  308. '<div class="row mt-4">' +
  309. '</div>'+
  310. '<form method="post" action="crewsearch.php" target="_parent">' +
  311. '<div class="col-12 px-2">' +
  312. '<input id="t-text" type="text" name="search" placeholder="crew search" class="form-control" required="">' +
  313. '</div>' +
  314. '</form>' +
  315. '<p><a href=https://studiomoxxi.com/ target="_blank"><img src=https://studiomoxxi.com/ow_themes/custom_jobs/classic_01/mm_logo.png width=130px style="margin-top: 30px"></a>' +
  316. '</div>' +
  317. '<div class="row mt-4">' +
  318. '</div></div>' +
  319. '</p></div>'
  320.  
  321. var servername = window.location.hostname.split(".")[0];
  322. setTimeout(function() {
  323. $("span:contains('SERVER')").text(servername);
  324. }, 10);
  325.  
  326. // ammys toolbar icon
  327.  
  328. GM_xmlhttpRequest ( {
  329. method: 'GET',
  330. url: 'https://torax.outwar.com/ajax/backpackcontents.php?tab=quest',
  331. onload: function (responseDetails) {
  332. const ammyID = /Amulet of Achievement" data-itemqty="([0-9]*)"/g;
  333. const ammyPrint = ammyID.exec(responseDetails.responseText);
  334.  
  335. var ammy ='';
  336. if (ammyPrint[1] != null)
  337. ammy += ammyPrint[1];
  338.  
  339. const theImage = document.querySelector("body > center > div.sub-header-container > header > ul.navbar-nav.flex-row.mr-auto.toolbar-nav > li:nth-child(4)");
  340. theImage.innerHTML = `<a href="https://torax.outwar.com/treasury?type=192" onmouseover="statspopup(event,'<b>Amulets: </b>`+ammy+`<br><font color=#FFF000>(click for ammy store)')" onmouseout="kill()"><img border="0" src="https://studiomoxxi.com/ow_themes/custom_jobs/classic_01/ammy.png" align="middle"></a>`
  341. }
  342. } );
  343.  
  344. function insertAfter2(newNode, existingNode) {
  345. existingNode.parentNode.insertBefore(newNode, existingNode.nextSibling);
  346. }
  347.  
  348. let menu = document.querySelector("body > center > div.sub-header-container > header > ul.navbar-nav.flex-row.mr-auto.toolbar-nav");
  349.  
  350. let li = document.createElement('li');
  351. li.textContent = '';
  352. insertAfter2(li, menu.children[2]);
  353.  
  354. // moxximod raid results
  355.  
  356. if (document.URL.indexOf("crew_raidresults") != -1 ) {
  357. document.querySelector("#content-header-row > table > tbody > tr > td > form > p > input:nth-child(3)").setAttribute("value", "MoxxiMod raid results");
  358. };
  359.  
  360. if (document.URL.indexOf("crew_raidresults.php?most_recent=MoxxiMod") != -1 ) {
  361. GM_addStyle ( `
  362. #content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr:nth-child(1) > td:nth-child(1){width:10% !important;}
  363. #content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr:nth-child(1) > td:nth-child(2){width:15% !important;}
  364. #content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr:nth-child(1) > td:nth-child(3){width:5% !important;}
  365. #content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr:nth-child(1) > td:nth-child(4){width:5% !important;}
  366. #content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr:nth-child(1) > td:nth-child(5){width:5% !important;}
  367. #content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr:nth-child(1) > td:nth-child(6){width:5% !important;}
  368. #content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr:nth-child(1) > td:nth-child(7){width:5% !important;}
  369. #content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr:nth-child(1) > td:nth-child(8){width:5% !important;}
  370. #content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr:nth-child(1) > td:nth-child(9){width:45% !important;}
  371. #content-header-row > table > tbody > tr > td > div > center > div > table{background:#0B0B0B !important;}
  372. ` );
  373.  
  374. var mmraids = document.querySelector("#content-header-row > table > tbody > tr > td > form > p > input:nth-child(3)");
  375.  
  376. function insertAfter2(newNode, existingNode) {
  377. existingNode.parentNode.insertBefore(newNode, existingNode.nextSibling);
  378. }
  379.  
  380. let rrHead = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr");
  381. let tdHead = document.createElement('td');
  382. tdHead.textContent = 'Damage';
  383. insertAfter2(tdHead, rrHead.lastElementChild);
  384.  
  385. let rrHead2 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr");
  386. let tdHead2 = document.createElement('td');
  387. tdHead2.textContent = 'Average';
  388. insertAfter2(tdHead2, rrHead2.lastElementChild);
  389.  
  390. let rrHead4 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr");
  391. let tdHead4 = document.createElement('td');
  392. tdHead4.textContent = 'Drops';
  393. insertAfter2(tdHead4, rrHead4.lastElementChild);
  394.  
  395. let raidLink1 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr:nth-child(2) > td:nth-child(5) > a");
  396. console.log(raidLink1);
  397. GM_xmlhttpRequest ( {
  398. method: 'GET',
  399. url: raidLink1,
  400. onload: function (responseDetails) {
  401.  
  402. var raidDmg1 = /Damage: ([0-9,]*)/;
  403. var printDmg1 = raidDmg1.exec(responseDetails.responseText);
  404.  
  405. var raidDrops1 = /<a href="#" onmouseover="popup\(event,'([^']*)'\)" onmouseout="kill\(\)">[0-9]+ items<\/a>/i;
  406. var printDrops1 = raidDrops1.exec(responseDetails.responseText);
  407.  
  408. let row1 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr:nth-child(2)")
  409.  
  410. let td1 = document.createElement('td');
  411. td1.textContent = printDmg1[1].replace(/,/g, '');
  412. insertAfter2(td1, row1.lastElementChild);
  413.  
  414. var Cells = row1.getElementsByTagName("td");
  415.  
  416. let td2 = document.createElement('td');
  417. td2.textContent = Math.floor(printDmg1[1].replace(/,/g, '')/Cells[2].innerText);
  418. insertAfter2(td2, row1.lastElementChild);
  419.  
  420. let td4 = document.createElement('td');
  421. td4.innerHTML = printDrops1[1];
  422. insertAfter2(td4, row1.lastElementChild);
  423.  
  424. }})};
  425.  
  426. if (document.URL.indexOf("crew_raidresults.php?most_recent=MoxxiMod") != -1 ) {
  427.  
  428. function insertAfter3(newNode, existingNode) {
  429. existingNode.parentNode.insertBefore(newNode, existingNode.nextSibling);
  430. }
  431.  
  432. let raidLink12 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr:nth-child(3) > td:nth-child(5) > a");
  433.  
  434. GM_xmlhttpRequest ( {
  435. method: 'GET',
  436. url: raidLink12,
  437. onload: function (responseDetails) {
  438.  
  439. var raidDmg12 = /Damage: ([0-9,]*)/;
  440. var printDmg12 = raidDmg12.exec(responseDetails.responseText);
  441.  
  442. var raidDrops12 = /<a href="#" onmouseover="popup\(event,'([^']*)'\)" onmouseout="kill\(\)">[0-9]+ items<\/a>/i;
  443. var printDrops12 = raidDrops12.exec(responseDetails.responseText);
  444. let row12 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr:nth-child(3)");
  445. let td12 = document.createElement('td');
  446. td12.textContent = printDmg12[1].replace(/,/g, '');
  447. insertAfter3(td12, row12.lastElementChild);
  448.  
  449. var Cells2 = row12.getElementsByTagName("td");
  450.  
  451. let td22 = document.createElement('td');
  452. td22.textContent = Math.floor(printDmg12[1].replace(/,/g, '')/Cells2[2].innerText);
  453. insertAfter3(td22, row12.lastElementChild);
  454.  
  455. let td42 = document.createElement('td');
  456. td42.innerHTML = printDrops12[1];
  457. insertAfter3(td42, row12.lastElementChild);
  458.  
  459. }})};
  460.  
  461. if (document.URL.indexOf("crew_raidresults.php?most_recent=MoxxiMod") != -1 ) {
  462.  
  463. function insertAfter4(newNode, existingNode) {
  464. existingNode.parentNode.insertBefore(newNode, existingNode.nextSibling);
  465. }
  466.  
  467. let raidLink13 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr:nth-child(4) > td:nth-child(5) > a");
  468.  
  469. GM_xmlhttpRequest ( {
  470. method: 'GET',
  471. url: raidLink13,
  472. onload: function (responseDetails) {
  473.  
  474. var raidDmg13 = /Damage: ([0-9,]*)/;
  475. var printDmg13 = raidDmg13.exec(responseDetails.responseText);
  476. var raidDrops13 = /<a href="#" onmouseover="popup\(event,'([^']*)'\)" onmouseout="kill\(\)">[0-9]+ items<\/a>/i;
  477. var printDrops13 = raidDrops13.exec(responseDetails.responseText);
  478. let row13 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr:nth-child(4)");
  479.  
  480. let td13 = document.createElement('td');
  481. td13.textContent = printDmg13[1].replace(/,/g, '');
  482. insertAfter4(td13, row13.lastElementChild);
  483.  
  484. var Cells3 = row13.getElementsByTagName("td");
  485.  
  486. let td23 = document.createElement('td');
  487. td23.textContent = Math.floor(printDmg13[1].replace(/,/g, '')/Cells3[2].innerText);
  488. insertAfter4(td23, row13.lastElementChild);
  489.  
  490. let td43 = document.createElement('td');
  491. td43.innerHTML = printDrops13[1];
  492. insertAfter4(td43, row13.lastElementChild);
  493.  
  494. }})};
  495.  
  496. if (document.URL.indexOf("crew_raidresults.php?most_recent=MoxxiMod") != -1 ) {
  497.  
  498. function insertAfter5(newNode, existingNode) {
  499. existingNode.parentNode.insertBefore(newNode, existingNode.nextSibling);
  500. }
  501.  
  502. let raidLink14 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr:nth-child(5) > td:nth-child(5) > a");
  503.  
  504. GM_xmlhttpRequest ( {
  505. method: 'GET',
  506. url: raidLink14,
  507. onload: function (responseDetails) {
  508.  
  509. var raidDmg14 = /Damage: ([0-9,]*)/;
  510. var printDmg14 = raidDmg14.exec(responseDetails.responseText);
  511. var raidDrops14 = /<a href="#" onmouseover="popup\(event,'([^']*)'\)" onmouseout="kill\(\)">[0-9]+ items<\/a>/i;
  512. var printDrops14 = raidDrops14.exec(responseDetails.responseText);
  513. let row14 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr:nth-child(5)");
  514.  
  515. let td14 = document.createElement('td');
  516. td14.textContent = printDmg14[1].replace(/,/g, '');
  517. insertAfter5(td14, row14.lastElementChild);
  518.  
  519. var Cells4 = row14.getElementsByTagName("td");
  520.  
  521. let td24 = document.createElement('td');
  522. td24.textContent = Math.floor(printDmg14[1].replace(/,/g, '')/Cells4[2].innerText);
  523. insertAfter5(td24, row14.lastElementChild);
  524.  
  525. let td44 = document.createElement('td');
  526. td44.innerHTML = printDrops14[1];
  527. insertAfter5(td44, row14.lastElementChild);
  528.  
  529. }})};
  530.  
  531. if (document.URL.indexOf("crew_raidresults.php?most_recent=MoxxiMod") != -1 ) {
  532.  
  533. function insertAfter6(newNode, existingNode) {
  534. existingNode.parentNode.insertBefore(newNode, existingNode.nextSibling);
  535. }
  536.  
  537. let raidLink15 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr:nth-child(6) > td:nth-child(5) > a");
  538.  
  539. GM_xmlhttpRequest ( {
  540. method: 'GET',
  541. url: raidLink15,
  542. onload: function (responseDetails) {
  543.  
  544. var raidDmg15 = /Damage: ([0-9,]*)/;
  545. var printDmg15 = raidDmg15.exec(responseDetails.responseText);
  546. var raidDrops15 = /<a href="#" onmouseover="popup\(event,'([^']*)'\)" onmouseout="kill\(\)">[0-9]+ items<\/a>/i;
  547. var printDrops15 = raidDrops15.exec(responseDetails.responseText);
  548. let row15 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr:nth-child(6)");
  549.  
  550. let td15 = document.createElement('td');
  551. td15.textContent = printDmg15[1].replace(/,/g, '');
  552. insertAfter6(td15, row15.lastElementChild);
  553.  
  554. var Cells5 = row15.getElementsByTagName("td");
  555.  
  556. let td25 = document.createElement('td');
  557. td25.textContent = Math.floor(printDmg15[1].replace(/,/g, '')/Cells5[2].innerText);
  558. insertAfter6(td25, row15.lastElementChild);
  559.  
  560. let td45 = document.createElement('td');
  561. td45.innerHTML = printDrops15[1];
  562. insertAfter6(td45, row15.lastElementChild);
  563.  
  564. }})};
  565.  
  566. if (document.URL.indexOf("crew_raidresults.php?most_recent=MoxxiMod") != -1 ) {
  567.  
  568. function insertAfter7(newNode, existingNode) {
  569. existingNode.parentNode.insertBefore(newNode, existingNode.nextSibling);
  570. }
  571.  
  572. let raidLink16 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr:nth-child(7) > td:nth-child(5) > a");
  573.  
  574. GM_xmlhttpRequest ( {
  575. method: 'GET',
  576. url: raidLink16,
  577. onload: function (responseDetails) {
  578.  
  579. var raidDmg16 = /Damage: ([0-9,]*)/;
  580. var printDmg16 = raidDmg16.exec(responseDetails.responseText);
  581. var raidDrops16 = /<a href="#" onmouseover="popup\(event,'([^']*)'\)" onmouseout="kill\(\)">[0-9]+ items<\/a>/i;
  582. var printDrops16 = raidDrops16.exec(responseDetails.responseText);
  583. let row16 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr:nth-child(7)");
  584.  
  585. let td16 = document.createElement('td');
  586. td16.textContent = printDmg16[1].replace(/,/g, '');
  587. insertAfter7(td16, row16.lastElementChild);
  588.  
  589. var Cells6 = row16.getElementsByTagName("td");
  590.  
  591. let td26 = document.createElement('td');
  592. td26.textContent = Math.floor(printDmg16[1].replace(/,/g, '')/Cells6[2].innerText);
  593. insertAfter7(td26, row16.lastElementChild);
  594.  
  595. let td46 = document.createElement('td');
  596. td46.innerHTML = printDrops16[1];
  597. insertAfter7(td46, row16.lastElementChild);
  598.  
  599. }})};
  600.  
  601. if (document.URL.indexOf("crew_raidresults.php?most_recent=MoxxiMod") != -1 ) {
  602.  
  603. function insertAfter8(newNode, existingNode) {
  604. existingNode.parentNode.insertBefore(newNode, existingNode.nextSibling);
  605. }
  606.  
  607. let raidLink17 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr:nth-child(8) > td:nth-child(5) > a");
  608.  
  609. GM_xmlhttpRequest ( {
  610. method: 'GET',
  611. url: raidLink17,
  612. onload: function (responseDetails) {
  613.  
  614. var raidDmg17 = /Damage: ([0-9,]*)/;
  615. var printDmg17 = raidDmg17.exec(responseDetails.responseText);
  616. var raidDrops17 = /<a href="#" onmouseover="popup\(event,'([^']*)'\)" onmouseout="kill\(\)">[0-9]+ items<\/a>/i;
  617. var printDrops17 = raidDrops17.exec(responseDetails.responseText);
  618. let row17 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr:nth-child(8)");
  619.  
  620. let td17 = document.createElement('td');
  621. td17.textContent = printDmg17[1].replace(/,/g, '');
  622. insertAfter8(td17, row17.lastElementChild);
  623.  
  624. var Cells7 = row17.getElementsByTagName("td");
  625.  
  626. let td27 = document.createElement('td');
  627. td27.textContent = Math.floor(printDmg17[1].replace(/,/g, '')/Cells7[2].innerText);
  628. insertAfter8(td27, row17.lastElementChild);
  629.  
  630. let td47 = document.createElement('td');
  631. td47.innerHTML = printDrops17[1];
  632. insertAfter8(td47, row17.lastElementChild);
  633.  
  634. }})};
  635.  
  636. // custom side menu
  637.  
  638. if ( document.URL.indexOf("crew_apply") != -1 ) {
  639. var theImage11;
  640. theImage11 = document.querySelector("#content")
  641. theImage11.innerHTML =
  642. '<div id=moxxi_mod_page>' +
  643. '<img src=https://studiomoxxi.com/ow_themes/custom_jobs/classic_01/mm_logo.png width=50% padding=20px><p>' +
  644. '<a href=https://discord.com/invite/f35cccbWU8?utm_source=Discord%20Widget&utm_medium=Connect target=_blank><img src=https://studiomoxxi.com/moxximod/discord.png width=30%></a><p>' +
  645. 'MoxxiMod is a userscript written to improve the gaming user interface and player experience<p>' +
  646. 'The code is a combination of CSS (cascading style sheets) and JS (javascript)<p>' +
  647. '<b>MoxxiMod is 100% free</b><p>' +
  648. 'If you want to support, please send points to <font color=A30020>Moxxi</font><p>' +
  649. 'For help with setup or to report a bug, join our Discord server<p>' +
  650. '<a href=https://studiomoxxi.com/moxximod/ target=_blank>Click Here</a> for the latest scripts</div>' +
  651. '<div id=moxxi_mod_tys>' +
  652. '<p>BIG THANK YOU FOR THE TECHNICAL DEV SUPPORT<p>Beast666007, Bello, CarminT' +
  653. '<p>AND THANK YOU TO THE BETA TESTERS<p>Rhino, Andreas, Brillo, Dkgoon<br>StarFox, Kevin, Kriminal, Shawn<br>Tyler, Xafloc, Jalek, Rodeo<br>StarPower, TeddyPain, TheStud'+
  654. '</div>'
  655. }
  656.  
  657. // extra
  658.  
  659. if (document.URL.indexOf("726169") != -1 ) {
  660. GM_addStyle ( `
  661. #divProfile > div:nth-child(2) > div > div > div.col-xl-4.col-md-5 > div > div:nth-child(2) > div > div > div:nth-child(2) > img{content: url("https://studiomoxxi.com/ow_themes/custom_jobs/classic_01/disa_head.png") !important;}` );
  662. };
  663.  
  664. // toolbar skills
  665.  
  666. GM_xmlhttpRequest ( {
  667. method: 'GET',
  668. url: 'https://torax.outwar.com/profile',
  669. onload: function (responseDetails) {
  670.  
  671. const skill0 = /<img align="absmiddle" border="0" src="\/images\/skills\/skill_2952\.gif" hspace="2" width="25" height="25" alt="Underlings" onmouseover="popup\(event,'<b>Level 1 Underlings<\/b><br \/><br \/>[0-9]+ [a-zA-Z]+ .*/i;
  672. const lingloy = skill0.exec(responseDetails.responseText);
  673. const skill1 = /<img align="absmiddle" border="0" src="\/images\/skills\/circumspect\.png" hspace="2" width="25" height="25" alt="Circumspect" onmouseover="popup\(event,'<b>Level [0-9]+ Circumspect<\/b><br \/>Your heart beat steadies\. You become careful, and alert when attacking your targets\.<br \/> Rage costs of mobs in DC are lowered by [0-9]+%<br \/>[0-9]+ [a-zA-Z]+ .*/i;
  674. const circ = skill1.exec(responseDetails.responseText);
  675. const skill2 = /<img align="absmiddle" border="0" src="\/images\/skills\/markdown\.png" hspace="2" width="25" height="25" alt="Markdown" onmouseover="popup\(event,'<b>Level [0-9]+ Markdown<\/b><br \/>You become more focused and alert for battle\. Decreases cost by [0-9]+% to form\/join raids\.<br \/>[0-9]+ [a-zA-Z]+ .*/i;
  676. const markdown = skill2.exec(responseDetails.responseText);
  677. const skill3 = /<img align="absmiddle" border="0" src="\/images\/skills\/hitman\.png" hspace="2" width="25" height="25" alt="Hitman" onmouseover="popup\(event,'<b>Level [0-9]+ Hitman<\/b><br \/>You put extra effort into your kills when there is money on the line\. Double strip and gain XP from players\.<br \/>[0-9]+ [a-zA-Z]+ .*/i;
  678. const hitman = skill3.exec(responseDetails.responseText);
  679. const skill4 = /<img align="absmiddle" border="0" src="\/images\/skills\/haste\.png" hspace="2" width="25" height="25" alt="Haste" onmouseover="popup\(event,'<b>Level [0-9]+ Haste<\/b><br \/>Your actions become lightning fast, time speeds up with your every move\.<br \/> Respawn times on DC mobs are reduced by [0-9]+%\.<br \/>[0-9]+ [a-zA-Z]+ .*/i;
  680. const haste = skill4.exec(responseDetails.responseText);
  681. const skill5 = /<img align="absmiddle" border="0" src="\/images\/skills\/streetsmarts\.png" hspace="2" width="25" height="25" alt="Street Smarts" onmouseover="popup\(event,'<b>Level [0-9]+ Street Smarts<\/b><br \/>Your experience can not be stripped\.<br \/>[0-9]+ [a-zA-Z]+ .*/i;
  682. const street = skill5.exec(responseDetails.responseText);
  683. const skill6 = /<img align="absmiddle" border="0" src="\/images\/skills\/onguard\.png" hspace="2" width="25" height="25" alt="On Guard" onmouseover="popup\(event,'<b>Level [0-9]+ On Guard<\/b><br \/>You never tire\. Your strength cannot be stolen in battle\.<br \/>[0-9]+ [a-zA-Z]+ .*/i;
  684. const onguard = skill6.exec(responseDetails.responseText);
  685. const skill7 = /<img align="absmiddle" border="0" src="\/images\/skills\/\.\.\/items\/itemz80\.gif" hspace="2" width="25" height="25" alt="Quest Experience Potion" onmouseover="popup\(event,'<b>Level 1 Quest Experience Potion<\/b><br \/>Increases quest EXP rewards by 50% for characters lvl 84 and below\.<br \/>[0-9]+ [a-zA-Z]+ .*/i;
  686. const questexp = skill7.exec(responseDetails.responseText);
  687.  
  688. var skills = '';
  689. if (lingloy != null)
  690. skills += lingloy;
  691. if (circ != null)
  692. skills += circ;
  693. if (markdown != null)
  694. skills += markdown;
  695. if (hitman != null)
  696. skills += hitman;
  697. if (haste != null)
  698. skills += haste;
  699. if (street != null)
  700. skills += street;
  701. if (onguard != null)
  702. skills += onguard;
  703. if (questexp != null)
  704. skills += questexp;
  705.  
  706. // toolbar supplies notification
  707.  
  708. GM_xmlhttpRequest ( {
  709. method: 'GET',
  710. url: 'https://outwar.com/supplies',
  711. onload: function (responseDetails) {
  712. const supplies = /<img border="0" src="images\/suppliestriangle\.gif" width="11" height="11">[\n\r](.*)%<\/td>/i;
  713. const suppliesPrint = supplies.exec(responseDetails.responseText);
  714.  
  715. let result;
  716. if (suppliesPrint[1] < 100) {
  717. result = 'positive';
  718. } else {
  719. result = null;
  720. }
  721. var suppliesPOP = '';
  722. if (result != null)
  723. suppliesPOP += `<a href=/supplies><img src=https://studiomoxxi.com/ow_themes/custom_jobs/classic_01/suppliespop.png width=25px height=25px onmouseover="popup(event,'<b><font color=#FFFFFF>SUPPLIES: `+suppliesPrint[1]+`%<br></b><font color=#fff000>(click to buy more)')" onmouseout="kill()"></a>`;
  724.  
  725. // toolbar strength notification
  726.  
  727. GM_xmlhttpRequest ( {
  728. method: 'GET',
  729. url: 'https://outwar.com/profile',
  730. onload: function (responseDetails) {
  731. const strength = /event,'Strength: ([0-9]+)'/i;
  732. const strengthPrint = strength.exec(responseDetails.responseText);
  733.  
  734.  
  735. let resultStr;
  736. if (strengthPrint[1] < 100) {
  737. resultStr = 'positive';
  738. } else {
  739. resultStr = null;
  740. }
  741.  
  742. var strengthtb = '';
  743. if (resultStr != null)
  744. strengthtb += `<img src=https://torax.outwar.com/images/items/pot6.jpg width=25px height=25px onmouseover="popup(event,'<b><font color=#FFFFFF>STRENGTH: `+strengthPrint[1]+`%<br></b>')" onmouseout="kill()">`;
  745.  
  746. // toolbar gladiator notification
  747.  
  748. GM_xmlhttpRequest ( {
  749. method: 'GET',
  750. url: 'https://outwar.com/gladiator?mobid=4391',
  751. onload: function (responseDetails) {
  752. const vorkCheck = /Will retreat in/i;
  753. const vorkPrint = vorkCheck.exec(responseDetails.responseText);
  754.  
  755. var vork = '';
  756. if (vorkPrint != null)
  757. vork += `<a href=/gladiator?mobid=4391><img src=https://outwar.com/images/mobs/velgladiator.jpg width=25px height=25px onmouseover="popup(event,'<b>Vork is Available</b><br>Click to view Leaderboard')" onmouseout="kill()"></a>`;
  758.  
  759. GM_xmlhttpRequest ( {
  760. method: 'GET',
  761. url: 'https://outwar.com/gladiator?mobid=3991',
  762. onload: function (responseDetails) {
  763. const zerxCheck = /Will retreat in/i;
  764. const zerxPrint = zerxCheck.exec(responseDetails.responseText);
  765.  
  766. var zerx = '';
  767. if (zerxPrint != null)
  768. zerx += `<a href=/gladiator?mobid=3991><img src=https://outwar.com/images/mobs/mobc34.jpg width=25px height=25px onmouseover="popup(event,'<b>Zerx is Available</b><br><font color=#FFF000>(click to view Leaderboard)')" onmouseout="kill()"></a>`;
  769.  
  770. // toolbar boss notification
  771.  
  772. GM_xmlhttpRequest ( {
  773. method: 'GET',
  774. url: 'https://outwar.com/crew_bossspawns',
  775. onload: function (responseDetails) {
  776.  
  777. const boss01 = /images\/CosmosGreatAllBeing\.jpg/i;
  778. const cosmos = boss01.exec(responseDetails.responseText);
  779. const boss02 = /images\/DeathReaperOfSouls\.jpg/i;
  780. const death = boss02.exec(responseDetails.responseText);
  781. const boss03 = /images\/MaekrixDreadedStriker\.jpg/i;
  782. const maekrix = boss03.exec(responseDetails.responseText);
  783. const boss04 = /images\/BlackhandReborn\.png/i;
  784. const blackhand = boss04.exec(responseDetails.responseText);
  785. const boss05 = /images\/velserverboss\.jpg/i;
  786. const zyrak = boss05.exec(responseDetails.responseText);
  787.  
  788. const boss01h = /Cosmos, Great All Being.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*p class="card-user_occupation"> (.*)/i;
  789. const cosmosh = boss01h.exec(responseDetails.responseText);
  790. const boss02h = /Death, Reaper of Souls.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*p class="card-user_occupation"> (.*)/i;
  791. const deathh = boss02h.exec(responseDetails.responseText);
  792. const boss03h = /Maekrix, Dreaded Striker.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*p class="card-user_occupation"> (.*)/i;
  793. const maekrixh = boss03h.exec(responseDetails.responseText);
  794. const boss04h = /Blackhand Reborn.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*p class="card-user_occupation"> (.*)/i;
  795. const blackhandh = boss04h.exec(responseDetails.responseText);
  796. const boss05h = /Zyrak, Vision of Madness.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*p class="card-user_occupation"> (.*)/i;
  797. const zyrakh = boss05h.exec(responseDetails.responseText);
  798.  
  799. const boss01s = /Cosmos, Great All Being.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*(<a href="boss_stats\.php\?spawnid=[0-9]+">)\(stats\)<\/a>/i;
  800. const cosmoss = boss01s.exec(responseDetails.responseText);
  801. const boss02s = /Death, Reaper of Souls.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*(<a href="boss_stats\.php\?spawnid=[0-9]+">)\(stats\)<\/a>/i;
  802. const deaths = boss02s.exec(responseDetails.responseText);
  803. const boss03s = /Maekrix, Dreaded Striker.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*(<a href="boss_stats\.php\?spawnid=[0-9]+">)\(stats\)<\/a>/i;
  804. const maekrixs = boss03s.exec(responseDetails.responseText);
  805. const boss04s = /Blackhand Reborn.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*(<a href="boss_stats\.php\?spawnid=[0-9]+">)\(stats\)<\/a>/i;
  806. const blackhands = boss04s.exec(responseDetails.responseText);
  807. const boss05s = /Zyrak, Vision of Madness.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*(<a href="boss_stats\.php\?spawnid=[0-9]+">)\(stats\)<\/a>/i;
  808. const zyraks = boss05s.exec(responseDetails.responseText);
  809.  
  810. var boss = '';
  811. if (cosmos != null)
  812. boss += cosmoss[1]+`<img src="http://www.outwar.com/`+cosmos+`" width="25px" height="25px" onmouseover="popup(event,'<b>Cosmos, Great All Being</b><br>Health: `+cosmosh[1]+`<br><font color=#FFF000>(click for stats)')" onmouseout="kill()"></a>`;
  813. if (death != null)
  814. boss += deaths[1]+`<img src="http://www.outwar.com/`+death+`" width="25px" height="25px" onmouseover="popup(event,'<b>Death, Reaper of Souls</b><br>Health: `+deathh[1]+`<br><font color=#FFF000>(click for stats)')" onmouseout="kill()"></a>`;
  815. if (maekrix != null)
  816. boss += maekrixs[1]+`<img src="http://www.outwar.com/`+maekrix+`" width="25px" height="25px" onmouseover="popup(event,'<b>Maekrix, Dreaded Striker</b><br>Health: `+maekrixh[1]+`<br><font color=#FFF000>(click for stats)')" onmouseout="kill()"></a>`;
  817. if (blackhand != null)
  818. boss += blackhands[1]+`<img src="http://www.outwar.com/`+blackhand+`" width="25px" height="25px" onmouseover="popup(event,'<b>Blackhand Reborn</b><br>Health: `+blackhandh[1]+`<br><font color=#FFF000>(click for stats)')" onmouseout="kill()"></a>`;
  819. if (zyrak != null)
  820. boss += zyraks[1]+`<img src="http://www.outwar.com/`+zyrak+`" width="25px" height="25px" onmouseover="popup(event,'<b>Zyrak, Vision of Madness</b><br>Health: `+zyrakh[1]+`<br><font color=#FFF000>(click for stats)')" onmouseout="kill()"></a>`;
  821.  
  822. // toolbar god notification
  823.  
  824. GM_xmlhttpRequest ( {
  825. method: 'GET',
  826. url: 'https://outwar.com/raidtools',
  827. onload: function (responseDetails) {
  828.  
  829. const god1img = /onclick="sendTeleportRequest.*(images.*)" border.*/i;
  830. const god1imgPRINT = god1img.exec(responseDetails.responseText);
  831. const god1txt = /onclick="sendTeleportRequest.*[\n\r].*Teleport to (.*)<\/font>/i;
  832. const god1txtPRINT = god1txt.exec(responseDetails.responseText);
  833. const god2img = /onclick="sendTeleportRequest.*[\n\r].*[\n\r].*(images.*)" border.*/i;
  834. const god2imgPRINT = god2img.exec(responseDetails.responseText);
  835. const god2txt = /onclick="sendTeleportRequest.*[\n\r].*[\n\r].*[\n\r].*Teleport to (.*)<\/font>/i;
  836. const god2txtPRINT = god2txt.exec(responseDetails.responseText);
  837. const god3img = /onclick="sendTeleportRequest.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*(images.*)" border.*/i;
  838. const god3imgPRINT = god3img.exec(responseDetails.responseText);
  839. const god3txt = /onclick="sendTeleportRequest.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*Teleport to (.*)<\/font>/i;
  840. const god3txtPRINT = god3txt.exec(responseDetails.responseText);
  841. const god4img = /onclick="sendTeleportRequest.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*(images.*)" border.*/i;
  842. const god4imgPRINT = god4img.exec(responseDetails.responseText);
  843. const god4txt = /onclick="sendTeleportRequest.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*Teleport to (.*)<\/font>/i;
  844. const god4txtPRINT = god4txt.exec(responseDetails.responseText);
  845. const god5img = /onclick="sendTeleportRequest.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*(images.*)" border.*/i;
  846. const god5imgPRINT = god5img.exec(responseDetails.responseText);
  847. const god5txt = /onclick="sendTeleportRequest.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*Teleport to (.*)<\/font>/i;
  848. const god5txtPRINT = god5txt.exec(responseDetails.responseText);
  849. const god6img = /onclick="sendTeleportRequest.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*(images.*)" border.*/i;
  850. const god6imgPRINT = god6img.exec(responseDetails.responseText);
  851. const god6txt = /onclick="sendTeleportRequest.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*Teleport to (.*)<\/font>/i;
  852. const god6txtPRINT = god6txt.exec(responseDetails.responseText);
  853. const god7img = /onclick="sendTeleportRequest.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*(images.*)" border.*/i;
  854. const god7imgPRINT = god7img.exec(responseDetails.responseText);
  855. const god7txt = /onclick="sendTeleportRequest.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*Teleport to (.*)<\/font>/i;
  856. const god7txtPRINT = god7txt.exec(responseDetails.responseText);
  857. const god8img = /onclick="sendTeleportRequest.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*(images.*)" border.*/i;
  858. const god8imgPRINT = god8img.exec(responseDetails.responseText);
  859. const god8txt = /onclick="sendTeleportRequest.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*Teleport to (.*)<\/font>/i;
  860. const god8txtPRINT = god8txt.exec(responseDetails.responseText);
  861. const god9img = /onclick="sendTeleportRequest.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*(images.*)" border.*/i;
  862. const god9imgPRINT = god9img.exec(responseDetails.responseText);
  863. const god9txt = /onclick="sendTeleportRequest.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*Teleport to (.*)<\/font>/i;
  864. const god9txtPRINT = god9txt.exec(responseDetails.responseText);
  865. const god10img = /onclick="sendTeleportRequest.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*(images.*)" border.*/i;
  866. const god10imgPRINT = god10img.exec(responseDetails.responseText);
  867. const god10txt = /onclick="sendTeleportRequest.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*Teleport to (.*)<\/font>/i;
  868. const god10txtPRINT = god10txt.exec(responseDetails.responseText);
  869.  
  870. var gods = '';
  871. if (god1imgPRINT != null)
  872. gods += `<img src="http://www.outwar.com/`+god1imgPRINT[1]+`" width="25px" height="25px" onmouseover="popup(event,'<b>`+god1txtPRINT[1]+` has spawned!</b>')" onmouseout="kill()">`;
  873. if (god2imgPRINT != null)
  874. gods += `<img src="http://www.outwar.com/`+god2imgPRINT[1]+`" width="25px" height="25px" onmouseover="popup(event,'<b>`+god2txtPRINT[1]+` has spawned!</b>')" onmouseout="kill()">`;
  875. if (god3imgPRINT != null)
  876. gods += `<img src="http://www.outwar.com/`+god3imgPRINT[1]+`" width="25px" height="25px" onmouseover="popup(event,'<b>`+god3txtPRINT[1]+` has spawned!</b>')" onmouseout="kill()">`;
  877. if (god4imgPRINT != null)
  878. gods += `<img src="http://www.outwar.com/`+god4imgPRINT[1]+`" width="25px" height="25px" onmouseover="popup(event,'<b>`+god4txtPRINT[1]+` has spawned!</b>')" onmouseout="kill()">`;
  879. if (god5imgPRINT != null)
  880. gods += `<img src="http://www.outwar.com/`+god5imgPRINT[1]+`" width="25px" height="25px" onmouseover="popup(event,'<b>`+god5txtPRINT[1]+` has spawned!</b>')" onmouseout="kill()">`;
  881. if (god6imgPRINT != null)
  882. gods += `<img src="http://www.outwar.com/`+god6imgPRINT[1]+`" width="25px" height="25px" onmouseover="popup(event,'<b>`+god6txtPRINT[1]+` has spawned!</b>')" onmouseout="kill()">`;
  883. if (god7imgPRINT != null)
  884. gods += `<img src="http://www.outwar.com/`+god7imgPRINT[1]+`" width="25px" height="25px" onmouseover="popup(event,'<b>`+god7txtPRINT[1]+` has spawned!</b>')" onmouseout="kill()">`;
  885. if (god8imgPRINT != null)
  886. gods += `<img src="http://www.outwar.com/`+god8imgPRINT[1]+`" width="25px" height="25px" onmouseover="popup(event,'<b>`+god8txtPRINT[1]+` has spawned!</b>')" onmouseout="kill()">`;
  887. if (god9imgPRINT != null)
  888. gods += `<img src="http://www.outwar.com/`+god9imgPRINT[1]+`" width="25px" height="25px" onmouseover="popup(event,'<b>`+god9txtPRINT[1]+` has spawned!</b>')" onmouseout="kill()">`;
  889. if (god10imgPRINT != null)
  890. gods += `<img src="http://www.outwar.com/`+god10imgPRINT[1]+`" width="25px" height="25px" onmouseover="popup(event,'<b>`+god10txtPRINT[1]+` has spawned!</b>')" onmouseout="kill()">`;
  891.  
  892. // all toolbar
  893.  
  894. document.querySelector("body > center > div.sub-header-container > header > ul.navbar-nav.flex-row.mr-auto.toolbar-nav > li.nav-item.more-dropdown.little-space.hide-on-mob.progress-top").innerHTML =
  895. '<table><tr><td>' +
  896. '<div class="dropdown">' +
  897. '<button class="dropbtn">FAST TRAVEL</button></a>' +
  898. '<div class="dropdown-content">' +
  899. '<a href="/world.php?room=26137">ASTRAL RIFT</a>' +
  900. '<a href="/world.php?room=25989">CHALLENGES</a>' +
  901. '<a href="/world.php?room=24284">DEATHBAT GRAVEYARD</a>' +
  902. '<a href="/world.php?room=4249">EOB SANDS</a>' +
  903. '<a href="/world.php?room=42550">MADNESS VAULT</a>' +
  904. '<a href="/world.php?room=23311">MOUNTAIN CAVE</a>' +
  905. '<a href="/world.php?room=23471">PRISTINE DEPTHS</a>' +
  906. '<a href="/world.php?room=11">ROOM 11</a>' +
  907. '<a href="/world.php?room=6640">SCIENTIFIC DISTRICT</a>' +
  908. '<a href="/world.php?room=17321">UNDERGROUND Q SEC BASE</a>' +
  909. '<a href="/world.php?room=10697">VALLEY OF DEATH</a>' +
  910. '<a href="/world.php?room=25994">WARDENS SANCTUARY</a>' +
  911. '<a href="/wilderness">WILDERNESS</a>' +
  912. '</div>' +
  913. '</div>' +
  914. '</td><td>' +
  915. '<a href=world><button class="dropbtn">EXPLORE</button></a>' +
  916.  
  917. '</td><td>'+
  918. '<div id=toolbaralerts>'+
  919. '<center>NOTIFICATIONS<br>'+
  920. gods+boss+zerx+vork+suppliesPOP+strengthtb+
  921. '</div>'+
  922. '</td><td>'+
  923. '<div id=toolbarskills>'+
  924. '<center>SKILLS<br>'+
  925. skills+
  926. '</div>'+
  927. '</td></tr></table>'
  928.  
  929. }})}})}})}})}})}})}});
  930.  
  931. // homepage rankings
  932.  
  933. if ( document.URL.indexOf("outwar.com/home") != -1 ) {
  934.  
  935. function insertBefore(newNode, existingNode) {
  936. let sp2 = document.querySelector("#content-header-row > div.bio.col-lg-8.col-md-8.col-sm-12.col-12.layout-spacing.layout-spacing > div.widget-content.widget-content-area.text-left > div > div > div:nth-child(2) > div > div:nth-child(1)");
  937. existingNode.parentNode.insertBefore(newNode, sp2);
  938. }
  939.  
  940. let menu = document.querySelector("#content-header-row > div.bio.col-lg-8.col-md-8.col-sm-12.col-12.layout-spacing.layout-spacing > div.widget-content.widget-content-area.text-left > div > div > div:nth-child(2) > div")
  941.  
  942. var homepageEQ =
  943. '<div id="char_rankings"><table><tr>' +
  944. '<td>CHAR: POWER<div id="rankings_home"></div></td>' +
  945. '<td>CHAR: ELE DMG<div id="rankings_charele"></div></td>' +
  946. '<td>CHAR: CHAOS DMG<div id="rankings_charchaos"></div></td>'+
  947. '<td>CHAR: GROWTH<div id="rankings_chargrowth"></div></td></tr></table></div>' +
  948. '<p><div id="crew_rankings"><table><tr>' +
  949. '<td>CREW: POWER<div id="rankings_crewpow"></div></td>' +
  950. '<td>CREW: ELE DMG<div id="rankings_crewele"></div></td>' +
  951. '<td>CREW: CHAOS DMG<div id="rankings_crewchaos"></div></td>' +
  952. '<td>CREW: BOSS DMG<div id="rankings_crewboss"></div></td></tr></table></div>'
  953.  
  954. let div = document.createElement('div');
  955. div.innerHTML += homepageEQ;
  956. insertBefore(div, menu.children[0]);
  957.  
  958. }
  959.  
  960. GM_xmlhttpRequest ( {
  961. method: 'GET',
  962. url: 'https://torax.outwar.com/ajax/rankings?type=crew_power',
  963. onload: function (responseDetails) {
  964. const EQ = /\{.*/i;
  965. const EQprint = EQ.exec(responseDetails.responseText);
  966.  
  967. var isLoading = false;
  968.  
  969. function selectCategory(category, title, isCrew) {
  970. if(isLoading)
  971. return;
  972.  
  973. $('#rank-title').html(title);
  974. $('#ranks').hide();
  975. $('#ranks').html('');
  976. $('#last-updated').html('');
  977. isLoading = true;
  978.  
  979. $.getJSON('/ajax/rankings.php?type=' + category, function(data) {
  980.  
  981. var isOdd = true;
  982. $.each(data.results, function(key, value) {
  983.  
  984. if(isCrew) {
  985. var imgurl = data.baseimageurl + "/" + value.pic;
  986. var profileUrl = 'crew_profile?id=' + value.id;
  987. }
  988. else {
  989. var imgurl = data.baseimageurl + "/uploaded/" + value.pic;
  990. var profileUrl = 'characters/' + value.id;
  991. }
  992.  
  993. if(value.pic == '' || value.pic == null)
  994. imgurl = '/images/gangster1.jpg';
  995.  
  996. var rowClass = isOdd ? 'rank-row-odd' : 'rank-row-even';
  997.  
  998. var stat = '0';
  999.  
  1000. if(value.stat ) {
  1001. stat = value.stat.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")
  1002. }
  1003.  
  1004. var html = '<li class="list-group-item list-group-item-action ranksulli">'
  1005. + '<div class="media">'
  1006. + '<div class="mr-3">'
  1007. + '<div class="rank-row top">'
  1008. + ' <div class="rank-row-number"><span>' + value.rank + '</span></div>'
  1009. + '<div class="rank-row-image">'
  1010. + '<a href="' + profileUrl + '">'
  1011. + '</a>'
  1012. + '</div></div></div>'
  1013. + '<div class="media-body">'
  1014. + '<h5 class="tx-inverse"><a href="' + profileUrl + '">' + value.name + '</a></h5>'
  1015. + '<p class="mg-b-0">' + stat + '</p>'
  1016. + '</div>'
  1017. + '</li>'
  1018.  
  1019.  
  1020. $('#rankings_home').append(html);
  1021.  
  1022. isOdd = !isOdd;
  1023.  
  1024. });
  1025.  
  1026. isLoading = false;
  1027. $('#last-updated').html('<br>Last updated: ' + data.timestamp);
  1028. $('#ranks').show();
  1029. }, "json");
  1030. }
  1031.  
  1032. $( document ).ready(function() {
  1033.  
  1034. var selO = $('option[value="char_power"]');selectCategory('char_power', selO.html());
  1035. $( ".rank-sel2" ).change(function() {
  1036.  
  1037. if($( this ).val() == '')
  1038. return;
  1039.  
  1040. var isCrew = $( this ).attr('iscrew') == '1';
  1041. selectCategory($( this ).val(), $(this).find("option:selected").text(), isCrew);
  1042.  
  1043. });
  1044. });
  1045.  
  1046. GM_xmlhttpRequest ( {
  1047. method: 'GET',
  1048. url: 'https://torax.outwar.com/ajax/rankings?type=char_elepower',
  1049. onload: function (responseDetails) {
  1050. const EQ = /\{.*/i;
  1051. const EQprint = EQ.exec(responseDetails.responseText);
  1052.  
  1053. var isLoading = false;
  1054.  
  1055. function selectCategory(category, title, isCrew) {
  1056. if(isLoading)
  1057. return;
  1058.  
  1059. $('#rank-title').html(title);
  1060. $('#ranks').hide();
  1061. $('#ranks').html('');
  1062. $('#last-updated').html('');
  1063. isLoading = true;
  1064.  
  1065. $.getJSON('/ajax/rankings.php?type=char_elepower', function(data) {
  1066.  
  1067. var isOdd = true;
  1068. $.each(data.results, function(key, value) {
  1069.  
  1070. if(isCrew) {
  1071. var imgurl = data.baseimageurl + "/" + value.pic;
  1072. var profileUrl = 'crew_profile?id=' + value.id;
  1073. }
  1074. else {
  1075. var imgurl = data.baseimageurl + "/uploaded/" + value.pic;
  1076. var profileUrl = 'characters/' + value.id;
  1077. }
  1078.  
  1079. if(value.pic == '' || value.pic == null)
  1080. imgurl = '/images/gangster1.jpg';
  1081.  
  1082. var rowClass = isOdd ? 'rank-row-odd' : 'rank-row-even';
  1083.  
  1084. var stat = '0';
  1085.  
  1086. if(value.stat ) {
  1087. stat = value.stat.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")
  1088. }
  1089.  
  1090. var html = '<li class="list-group-item list-group-item-action ranksulli">'
  1091. + '<div class="media">'
  1092. + '<div class="mr-3">'
  1093. + '<div class="rank-row top">'
  1094. + ' <div class="rank-row-number"><span>' + value.rank + '</span></div>'
  1095. + '<div class="rank-row-image">'
  1096. + '<a href="' + profileUrl + '">'
  1097. + '</a>'
  1098. + '</div></div></div>'
  1099. + '<div class="media-body">'
  1100. + '<h5 class="tx-inverse"><a href="' + profileUrl + '">' + value.name + '</a></h5>'
  1101. + '<p class="mg-b-0">' + stat + '</p>'
  1102. + '</div>'
  1103. + '</li>'
  1104.  
  1105.  
  1106. $('#rankings_charele').append(html);
  1107.  
  1108. isOdd = !isOdd;
  1109.  
  1110. });
  1111.  
  1112. isLoading = false;
  1113. $('#last-updated').html('<br>Last updated: ' + data.timestamp);
  1114. $('#ranks').show();
  1115. }, "json");
  1116. }
  1117.  
  1118. $( document ).ready(function() {
  1119.  
  1120. var selO = $('option[value="char_power"]');selectCategory('char_power', selO.html());
  1121. $( ".rank-sel2" ).change(function() {
  1122.  
  1123. if($( this ).val() == '')
  1124. return;
  1125.  
  1126. var isCrew = $( this ).attr('iscrew') == '1';
  1127. selectCategory($( this ).val(), $(this).find("option:selected").text(), isCrew);
  1128.  
  1129. });
  1130. });
  1131.  
  1132. GM_xmlhttpRequest ( {
  1133. method: 'GET',
  1134. url: 'https://torax.outwar.com/ajax/rankings?type=crew_power',
  1135. onload: function (responseDetails) {
  1136. const EQ = /\{.*/i;
  1137. const EQprint = EQ.exec(responseDetails.responseText);
  1138.  
  1139. var isLoading = false;
  1140.  
  1141. function selectCategory(category, title, isCrew) {
  1142. if(isLoading)
  1143. return;
  1144.  
  1145. $('#rank-title').html(title);
  1146. $('#ranks').hide();
  1147. $('#ranks').html('');
  1148. $('#last-updated').html('');
  1149. isLoading = true;
  1150.  
  1151. $.getJSON('/ajax/rankings.php?type=crew_power', function(data) {
  1152.  
  1153. var isOdd = true;
  1154. $.each(data.results, function(key, value) {
  1155.  
  1156. if(isCrew) {
  1157. var imgurl = data.baseimageurl + "/" + value.pic;
  1158. var profileUrl = 'crew_profile?id=' + value.id;
  1159. }
  1160. else {
  1161. var imgurl = data.baseimageurl + "/uploaded/" + value.pic;
  1162. var profileUrl = 'crew_profile?id=' + value.id;
  1163. }
  1164.  
  1165. if(value.pic == '' || value.pic == null)
  1166. imgurl = '/images/gangster1.jpg';
  1167.  
  1168. var rowClass = isOdd ? 'rank-row-odd' : 'rank-row-even';
  1169.  
  1170. var stat = '0';
  1171.  
  1172. if(value.stat ) {
  1173. stat = value.stat.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")
  1174. }
  1175.  
  1176. var html = '<li class="list-group-item list-group-item-action ranksulli">'
  1177. + '<div class="media">'
  1178. + '<div class="mr-3">'
  1179. + '<div class="rank-row top">'
  1180. + ' <div class="rank-row-number"><span>' + value.rank + '</span></div>'
  1181. + '<div class="rank-row-image">'
  1182. + '<a href="' + profileUrl + '">'
  1183. + '</a>'
  1184. + '</div></div></div>'
  1185. + '<div class="media-body">'
  1186. + '<h5 class="tx-inverse"><a href="' + profileUrl + '">' + value.name + '</a></h5>'
  1187. + '<p class="mg-b-0">' + stat + '</p>'
  1188. + '</div>'
  1189. + '</li>'
  1190.  
  1191.  
  1192. $('#rankings_crewpow').append(html);
  1193.  
  1194. isOdd = !isOdd;
  1195.  
  1196. });
  1197.  
  1198. isLoading = false;
  1199. $('#last-updated').html('<br>Last updated: ' + data.timestamp);
  1200. $('#ranks').show();
  1201. }, "json");
  1202. }
  1203.  
  1204. $( document ).ready(function() {
  1205.  
  1206. var selO = $('option[value="char_power"]');selectCategory('char_power', selO.html());
  1207. $( ".rank-sel2" ).change(function() {
  1208.  
  1209. if($( this ).val() == '')
  1210. return;
  1211.  
  1212. var isCrew = $( this ).attr('iscrew') == '1';
  1213. selectCategory($( this ).val(), $(this).find("option:selected").text(), isCrew);
  1214.  
  1215. });
  1216. });
  1217.  
  1218. GM_xmlhttpRequest ( {
  1219. method: 'GET',
  1220. url: 'https://torax.outwar.com/ajax/rankings?type=crew_elepower',
  1221. onload: function (responseDetails) {
  1222. const EQ = /\{.*/i;
  1223. const EQprint = EQ.exec(responseDetails.responseText);
  1224.  
  1225. var isLoading = false;
  1226.  
  1227. function selectCategory(category, title, isCrew) {
  1228. if(isLoading)
  1229. return;
  1230.  
  1231. $('#rank-title').html(title);
  1232. $('#ranks').hide();
  1233. $('#ranks').html('');
  1234. $('#last-updated').html('');
  1235. isLoading = true;
  1236.  
  1237. $.getJSON('/ajax/rankings.php?type=crew_elepower', function(data) {
  1238.  
  1239. var isOdd = true;
  1240. $.each(data.results, function(key, value) {
  1241.  
  1242. if(isCrew) {
  1243. var imgurl = data.baseimageurl + "/" + value.pic;
  1244. var profileUrl = 'crew_profile?id=' + value.id;
  1245. }
  1246. else {
  1247. var imgurl = data.baseimageurl + "/uploaded/" + value.pic;
  1248. var profileUrl = 'crew_profile?id=' + value.id;
  1249. }
  1250.  
  1251. if(value.pic == '' || value.pic == null)
  1252. imgurl = '/images/gangster1.jpg';
  1253.  
  1254. var rowClass = isOdd ? 'rank-row-odd' : 'rank-row-even';
  1255.  
  1256. var stat = '0';
  1257.  
  1258. if(value.stat ) {
  1259. stat = value.stat.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")
  1260. }
  1261.  
  1262. var html = '<li class="list-group-item list-group-item-action ranksulli">'
  1263. + '<div class="media">'
  1264. + '<div class="mr-3">'
  1265. + '<div class="rank-row top">'
  1266. + ' <div class="rank-row-number"><span>' + value.rank + '</span></div>'
  1267. + '<div class="rank-row-image">'
  1268. + '<a href="' + profileUrl + '">'
  1269. + '</a>'
  1270. + '</div></div></div>'
  1271. + '<div class="media-body">'
  1272. + '<h5 class="tx-inverse"><a href="' + profileUrl + '">' + value.name + '</a></h5>'
  1273. + '<p class="mg-b-0">' + stat + '</p>'
  1274. + '</div>'
  1275. + '</li>'
  1276.  
  1277.  
  1278. $('#rankings_crewele').append(html);
  1279.  
  1280. isOdd = !isOdd;
  1281.  
  1282. });
  1283.  
  1284. isLoading = false;
  1285. $('#last-updated').html('<br>Last updated: ' + data.timestamp);
  1286. $('#ranks').show();
  1287. }, "json");
  1288. }
  1289.  
  1290. $( document ).ready(function() {
  1291.  
  1292. var selO = $('option[value="char_power"]');selectCategory('char_power', selO.html());
  1293. $( ".rank-sel2" ).change(function() {
  1294.  
  1295. if($( this ).val() == '')
  1296. return;
  1297.  
  1298. var isCrew = $( this ).attr('iscrew') == '1';
  1299. selectCategory($( this ).val(), $(this).find("option:selected").text(), isCrew);
  1300.  
  1301. });
  1302. });
  1303.  
  1304. GM_xmlhttpRequest ( {
  1305. method: 'GET',
  1306. url: 'https://torax.outwar.com/ajax/rankings?type=char_chaos',
  1307. onload: function (responseDetails) {
  1308. const EQ = /\{.*/i;
  1309. const EQprint = EQ.exec(responseDetails.responseText);
  1310.  
  1311. var isLoading = false;
  1312.  
  1313. function selectCategory(category, title, isCrew) {
  1314. if(isLoading)
  1315. return;
  1316.  
  1317. $('#rank-title').html(title);
  1318. $('#ranks').hide();
  1319. $('#ranks').html('');
  1320. $('#last-updated').html('');
  1321. isLoading = true;
  1322.  
  1323. $.getJSON('/ajax/rankings.php?type=char_chaos', function(data) {
  1324.  
  1325. var isOdd = true;
  1326. $.each(data.results, function(key, value) {
  1327.  
  1328. if(isCrew) {
  1329. var imgurl = data.baseimageurl + "/" + value.pic;
  1330. var profileUrl = 'crew_profile?id=' + value.id;
  1331. }
  1332. else {
  1333. var imgurl = data.baseimageurl + "/uploaded/" + value.pic;
  1334. var profileUrl = 'characters/' + value.id;
  1335. }
  1336.  
  1337. if(value.pic == '' || value.pic == null)
  1338. imgurl = '/images/gangster1.jpg';
  1339.  
  1340. var rowClass = isOdd ? 'rank-row-odd' : 'rank-row-even';
  1341.  
  1342. var stat = '0';
  1343.  
  1344. if(value.stat ) {
  1345. stat = value.stat.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")
  1346. }
  1347.  
  1348. var html = '<li class="list-group-item list-group-item-action ranksulli">'
  1349. + '<div class="media">'
  1350. + '<div class="mr-3">'
  1351. + '<div class="rank-row top">'
  1352. + ' <div class="rank-row-number"><span>' + value.rank + '</span></div>'
  1353. + '<div class="rank-row-image">'
  1354. + '<a href="' + profileUrl + '">'
  1355. + '</a>'
  1356. + '</div></div></div>'
  1357. + '<div class="media-body">'
  1358. + '<h5 class="tx-inverse"><a href="' + profileUrl + '">' + value.name + '</a></h5>'
  1359. + '<p class="mg-b-0">' + stat + '</p>'
  1360. + '</div>'
  1361. + '</li>'
  1362.  
  1363.  
  1364. $('#rankings_charchaos').append(html);
  1365.  
  1366. isOdd = !isOdd;
  1367.  
  1368. });
  1369.  
  1370. isLoading = false;
  1371. $('#last-updated').html('<br>Last updated: ' + data.timestamp);
  1372. $('#ranks').show();
  1373. }, "json");
  1374. }
  1375.  
  1376. $( document ).ready(function() {
  1377.  
  1378. var selO = $('option[value="char_power"]');selectCategory('char_power', selO.html());
  1379. $( ".rank-sel2" ).change(function() {
  1380.  
  1381. if($( this ).val() == '')
  1382. return;
  1383.  
  1384. var isCrew = $( this ).attr('iscrew') == '1';
  1385. selectCategory($( this ).val(), $(this).find("option:selected").text(), isCrew);
  1386.  
  1387. });
  1388. });
  1389.  
  1390. GM_xmlhttpRequest ( {
  1391. method: 'GET',
  1392. url: 'https://torax.outwar.com/ajax/rankings?type=char_yesterdaygrowth',
  1393. onload: function (responseDetails) {
  1394. const EQ = /\{.*/i;
  1395. const EQprint = EQ.exec(responseDetails.responseText);
  1396.  
  1397. var isLoading = false;
  1398.  
  1399. function selectCategory(category, title, isCrew) {
  1400. if(isLoading)
  1401. return;
  1402.  
  1403. $('#rank-title').html(title);
  1404. $('#ranks').hide();
  1405. $('#ranks').html('');
  1406. $('#last-updated').html('');
  1407. isLoading = true;
  1408.  
  1409. $.getJSON('/ajax/rankings.php?type=char_yesterdaygrowth', function(data) {
  1410.  
  1411. var isOdd = true;
  1412. $.each(data.results, function(key, value) {
  1413.  
  1414. if(isCrew) {
  1415. var imgurl = data.baseimageurl + "/" + value.pic;
  1416. var profileUrl = 'crew_profile?id=' + value.id;
  1417. }
  1418. else {
  1419. var imgurl = data.baseimageurl + "/uploaded/" + value.pic;
  1420. var profileUrl = 'characters/' + value.id;
  1421. }
  1422.  
  1423. if(value.pic == '' || value.pic == null)
  1424. imgurl = '/images/gangster1.jpg';
  1425.  
  1426. var rowClass = isOdd ? 'rank-row-odd' : 'rank-row-even';
  1427.  
  1428. var stat = '0';
  1429.  
  1430. if(value.stat ) {
  1431. stat = value.stat.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")
  1432. }
  1433.  
  1434. var html = '<li class="list-group-item list-group-item-action ranksulli">'
  1435. + '<div class="media">'
  1436. + '<div class="mr-3">'
  1437. + '<div class="rank-row top">'
  1438. + ' <div class="rank-row-number"><span>' + value.rank + '</span></div>'
  1439. + '<div class="rank-row-image">'
  1440. + '<a href="' + profileUrl + '">'
  1441. + '</a>'
  1442. + '</div></div></div>'
  1443. + '<div class="media-body">'
  1444. + '<h5 class="tx-inverse"><a href="' + profileUrl + '">' + value.name + '</a></h5>'
  1445. + '<p class="mg-b-0">' + stat + '</p>'
  1446. + '</div>'
  1447. + '</li>'
  1448.  
  1449.  
  1450. $('#rankings_chargrowth').append(html);
  1451.  
  1452. isOdd = !isOdd;
  1453.  
  1454. });
  1455.  
  1456. isLoading = false;
  1457. $('#last-updated').html('<br>Last updated: ' + data.timestamp);
  1458. $('#ranks').show();
  1459. }, "json");
  1460. }
  1461.  
  1462. $( document ).ready(function() {
  1463.  
  1464. var selO = $('option[value="char_power"]');selectCategory('char_power', selO.html());
  1465. $( ".rank-sel2" ).change(function() {
  1466.  
  1467. if($( this ).val() == '')
  1468. return;
  1469.  
  1470. var isCrew = $( this ).attr('iscrew') == '1';
  1471. selectCategory($( this ).val(), $(this).find("option:selected").text(), isCrew);
  1472.  
  1473. });
  1474. });
  1475.  
  1476. GM_xmlhttpRequest ( {
  1477. method: 'GET',
  1478. url: 'https://torax.outwar.com/ajax/rankings?type=crew_chaos',
  1479. onload: function (responseDetails) {
  1480. const EQ = /\{.*/i;
  1481. const EQprint = EQ.exec(responseDetails.responseText);
  1482.  
  1483. var isLoading = false;
  1484.  
  1485. function selectCategory(category, title, isCrew) {
  1486. if(isLoading)
  1487. return;
  1488.  
  1489. $('#rank-title').html(title);
  1490. $('#ranks').hide();
  1491. $('#ranks').html('');
  1492. $('#last-updated').html('');
  1493. isLoading = true;
  1494.  
  1495. $.getJSON('/ajax/rankings.php?type=crew_chaos', function(data) {
  1496.  
  1497. var isOdd = true;
  1498. $.each(data.results, function(key, value) {
  1499.  
  1500. if(isCrew) {
  1501. var imgurl = data.baseimageurl + "/" + value.pic;
  1502. var profileUrl = 'crew_profile?id=' + value.id;
  1503. }
  1504. else {
  1505. var imgurl = data.baseimageurl + "/uploaded/" + value.pic;
  1506. var profileUrl = 'crew_profile?id=' + value.id;
  1507. }
  1508.  
  1509. if(value.pic == '' || value.pic == null)
  1510. imgurl = '/images/gangster1.jpg';
  1511.  
  1512. var rowClass = isOdd ? 'rank-row-odd' : 'rank-row-even';
  1513.  
  1514. var stat = '0';
  1515.  
  1516. if(value.stat ) {
  1517. stat = value.stat.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")
  1518. }
  1519.  
  1520. var html = '<li class="list-group-item list-group-item-action ranksulli">'
  1521. + '<div class="media">'
  1522. + '<div class="mr-3">'
  1523. + '<div class="rank-row top">'
  1524. + ' <div class="rank-row-number"><span>' + value.rank + '</span></div>'
  1525. + '<div class="rank-row-image">'
  1526. + '<a href="' + profileUrl + '">'
  1527. + '</a>'
  1528. + '</div></div></div>'
  1529. + '<div class="media-body">'
  1530. + '<h5 class="tx-inverse"><a href="' + profileUrl + '">' + value.name + '</a></h5>'
  1531. + '<p class="mg-b-0">' + stat + '</p>'
  1532. + '</div>'
  1533. + '</li>'
  1534.  
  1535.  
  1536. $('#rankings_crewchaos').append(html);
  1537.  
  1538. isOdd = !isOdd;
  1539.  
  1540. });
  1541.  
  1542. isLoading = false;
  1543. $('#last-updated').html('<br>Last updated: ' + data.timestamp);
  1544. $('#ranks').show();
  1545. }, "json");
  1546. }
  1547.  
  1548. $( document ).ready(function() {
  1549.  
  1550. var selO = $('option[value="char_power"]');selectCategory('char_power', selO.html());
  1551. $( ".rank-sel2" ).change(function() {
  1552.  
  1553. if($( this ).val() == '')
  1554. return;
  1555.  
  1556. var isCrew = $( this ).attr('iscrew') == '1';
  1557. selectCategory($( this ).val(), $(this).find("option:selected").text(), isCrew);
  1558.  
  1559. });
  1560. });
  1561.  
  1562. GM_xmlhttpRequest ( {
  1563. method: 'GET',
  1564. url: 'https://torax.outwar.com/ajax/rankings?type=crew_bossdamage',
  1565. onload: function (responseDetails) {
  1566. const EQ = /\{.*/i;
  1567. const EQprint = EQ.exec(responseDetails.responseText);
  1568.  
  1569. var isLoading = false;
  1570.  
  1571. function selectCategory(category, title, isCrew) {
  1572. if(isLoading)
  1573. return;
  1574.  
  1575. $('#rank-title').html(title);
  1576. $('#ranks').hide();
  1577. $('#ranks').html('');
  1578. $('#last-updated').html('');
  1579. isLoading = true;
  1580.  
  1581. $.getJSON('/ajax/rankings.php?type=crew_bossdamage', function(data) {
  1582.  
  1583. var isOdd = true;
  1584. $.each(data.results, function(key, value) {
  1585.  
  1586. if(isCrew) {
  1587. var imgurl = data.baseimageurl + "/" + value.pic;
  1588. var profileUrl = 'crew_profile?id=' + value.id;
  1589. }
  1590. else {
  1591. var imgurl = data.baseimageurl + "/uploaded/" + value.pic;
  1592. var profileUrl = 'crew_profile?id=' + value.id;
  1593. }
  1594.  
  1595. if(value.pic == '' || value.pic == null)
  1596. imgurl = '/images/gangster1.jpg';
  1597.  
  1598. var rowClass = isOdd ? 'rank-row-odd' : 'rank-row-even';
  1599.  
  1600. var stat = '0';
  1601.  
  1602. if(value.stat ) {
  1603. stat = value.stat.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")
  1604. }
  1605.  
  1606. var html = '<li class="list-group-item list-group-item-action ranksulli">'
  1607. + '<div class="media">'
  1608. + '<div class="mr-3">'
  1609. + '<div class="rank-row top">'
  1610. + ' <div class="rank-row-number"><span>' + value.rank + '</span></div>'
  1611. + '<div class="rank-row-image">'
  1612. + '<a href="' + profileUrl + '">'
  1613. + '</a>'
  1614. + '</div></div></div>'
  1615. + '<div class="media-body">'
  1616. + '<h5 class="tx-inverse"><a href="' + profileUrl + '">' + value.name + '</a></h5>'
  1617. + '<p class="mg-b-0">' + stat + '</p>'
  1618. + '</div>'
  1619. + '</li>'
  1620.  
  1621.  
  1622. $('#rankings_crewboss').append(html);
  1623.  
  1624. isOdd = !isOdd;
  1625.  
  1626. });
  1627.  
  1628. isLoading = false;
  1629. $('#last-updated').html('<br>Last updated: ' + data.timestamp);
  1630. $('#ranks').show();
  1631. }, "json");
  1632. }
  1633.  
  1634. $( document ).ready(function() {
  1635.  
  1636. var selO = $('option[value="char_power"]');selectCategory('char_power', selO.html());
  1637. $( ".rank-sel2" ).change(function() {
  1638.  
  1639. if($( this ).val() == '')
  1640. return;
  1641.  
  1642. var isCrew = $( this ).attr('iscrew') == '1';
  1643. selectCategory($( this ).val(), $(this).find("option:selected").text(), isCrew);
  1644.  
  1645. });
  1646. });
  1647.  
  1648. }})}})}})}})}})}})}})}});
  1649.  
  1650. // equipment injection
  1651.  
  1652. if ( document.URL.indexOf("outwar.com/home") != -1 ) {
  1653. GM_xmlhttpRequest ( {
  1654. method: 'GET',
  1655. url: 'https://torax.outwar.com/profile',
  1656. onload: function (responseDetails) {
  1657. const EQ = /<div style="position:absolute; left:61px; top:12px; width:41px; height:41px;text-align:center">[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*/im;
  1658. const EQprint = EQ.exec(responseDetails.responseText);
  1659.  
  1660. function insertBefore(newNode, existingNode) {
  1661. let sp2 = document.querySelector("#content-header-row > div.bio.col-lg-8.col-md-8.col-sm-12.col-12.layout-spacing.layout-spacing > div.widget-content.widget-content-area.text-left > div > div > div:nth-child(1) > div > div:nth-child(1)");
  1662. existingNode.parentNode.insertBefore(newNode, sp2);
  1663. }
  1664.  
  1665. let menu = document.querySelector("#content-header-row > div.bio.col-lg-8.col-md-8.col-sm-12.col-12.layout-spacing.layout-spacing > div.widget-content.widget-content-area.text-left > div > div > div:nth-child(1) > div")
  1666.  
  1667. var homepageEQ =
  1668.  
  1669. '<div ID=EQhome style="position:relative; width:300px; height:385px; background-image:url(https://studiomoxxi.com/ow_themes/custom_jobs/classic_01/thedude_dark.png)">' +
  1670. EQprint +
  1671. '</div>'
  1672.  
  1673. let div = document.createElement('div');
  1674. div.innerHTML += homepageEQ;
  1675. insertBefore(div, menu.children[0]);
  1676.  
  1677.  
  1678.  
  1679. }})};
  1680.  
  1681. if ( document.URL.indexOf("world") != -1 ) {
  1682. GM_xmlhttpRequest ( {
  1683. method: 'GET',
  1684. url: 'https://torax.outwar.com/profile',
  1685. onload: function (responseDetails) {
  1686. const EQ = /<div style="position:absolute; left:61px; top:12px; width:41px; height:41px;text-align:center">[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*/im;
  1687. const EQprint = EQ.exec(responseDetails.responseText);
  1688.  
  1689. var EQworld = document.querySelector("#content-header-row > div.col-xl-4.col-lg-12.col-md-12.col-sm-12.col-12.layout-spacing.px-1 > div > div.widget-heading");
  1690. EQworld.innerHTML =
  1691.  
  1692. '<div id=EQworld style="position:relative; width:300px; height:385px; background-image:url(https://studiomoxxi.com/ow_themes/custom_jobs/classic_01/thedude_dark.png)">' +
  1693. EQprint +
  1694. '</div>'
  1695.  
  1696. }})};
  1697.  
  1698. if ( document.URL.indexOf("treasury") != -1 ) {
  1699. GM_xmlhttpRequest ( {
  1700. method: 'GET',
  1701. url: 'https://torax.outwar.com/profile',
  1702. onload: function (responseDetails) {
  1703. const EQ = /<div style="position:absolute; left:61px; top:12px; width:41px; height:41px;text-align:center">[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*/im;
  1704. const EQprint = EQ.exec(responseDetails.responseText);
  1705.  
  1706. var EQtreas = document.querySelector("#content-header-row > div.col-8.col-lg-3.pl-3.pl-xl-0.pr-1 > div > div.widget-heading");
  1707. EQtreas.innerHTML =
  1708.  
  1709. '<div id=EQtreas style="position:relative; width:300px; height:385px; background-image:url(https://studiomoxxi.com/ow_themes/custom_jobs/classic_01/thedude_dark.png)">' +
  1710. EQprint +
  1711. '</div>'
  1712.  
  1713. }})};