您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
one click at a time
当前为
// ==UserScript== // @name MoxxiMod // @namespace https://studiomoxxi.com/ // @description one click at a time // @author Ben // @match *.outwar.com/* // @version 4.9 // @grant GM_xmlhttpRequest // @license MIT // @grant GM_getResourceText // @grant GM_addStyle // @require http://code.jquery.com/jquery-3.6.0.min.js // ==/UserScript== // MOXXI VISION if (document.URL.indexOf("earnfreepoints") != -1 ) { if (location.protocol !== 'https:') { location.replace(`https:${location.href.substring(location.protocol.length)}`);} GM_addStyle ( ` #content-header-row > div.outer{display:none !important;} `)}; if (document.URL.indexOf("earnfreepoints") != -1 ) { if (location.protocol !== 'https:') { location.replace(`https:${location.href.substring(location.protocol.length)}`);} var selectedID = document.querySelector("body").outerHTML.match(/value="(.*)" selected/) fetch("/myaccount") .then(res => res.text()) .then((responseText) => { const doc = new DOMParser().parseFromString(responseText, 'text/html'); const chars = doc.querySelector("#cal"); var content = "<div class=POOP>"+chars.innerHTML+"</div>" GM_addStyle ( ` #zero-config > tbody > tr > td:nth-child(1){display: none !important;} #zero-config > tbody > tr > td:nth-child(3){display: none !important;} #zero-config > tbody > tr > td:nth-child(4){display: none !important;} #zero-config > tbody > tr > td:nth-child(5){display: none !important;} #zero-config > tbody > tr > td:nth-child(6){display: none !important;} #zero-config > tbody > tr > td:nth-child(7){display: none !important;} #zero-config > tbody > tr > td:nth-child(8){display: none !important;} #zero-config > tbody > tr > td:nth-child(9){display: none !important;} #zero-config > tbody > tr > td:nth-child(10){display: none !important;} #zero-config > tbody > tr > td:nth-child(11){display: none !important;} #zero-config > thead > tr > th:nth-child(11){display: none !important;} #zero-config > thead{background: #0F0F0F} #zero-config > tbody > tr{border-bottom:1px SOLID !important;} #zero-config img[src*="Message.png"] {display: none !important;} #zero-config img[src*="Attacked.png"] {display: none !important;} #zero-config img[src*="Trade.png"] {display: none !important;} #zero-config > tbody{width:100% !important;} #zero-config > thead{width:100% !important;} .outer {width:100%;height:700px;overflow-x:scroll;overflow-y:scroll;background:#0F0F0F;} .rgahealth > tbody > tr > td {padding-top: 2px !important;padding-bottom: 1px !important;padding-right: 15px !important;padding-left: 5px !important;white-space: pre !important;} #zero-config > tbody > tr {border: 1px SOLID #202020 !important;} #zero-config > thead > tr > th:nth-child(1),#zero-config > tbody > tr > td:nth-child(2) {position: sticky;display: block;background:#0F0F0F;left: 0;z-index: 2;border:3px #0F0F0F SOLID !important; margin-left: -1px !important;left: -1px !important;} #zero-config > thead > tr > td > a > font,#zero-config > thead > tr > td > font{font-weight: bold;font-size:13px} #zero-config > thead > tr > td{font-weight: bold;font-size:13px} #zero-config > thead > tr > th,#zero-config > thead > tr > td{padding-right:15px !important; white-space: pre !important;} `); setTimeout(function() { $('#zero-config > thead > tr > th:nth-child(1)').html('CHARACTER'); $('#zero-config > thead > tr > th:nth-child(2)').html(`<a onmouseover="statspopup(event,'char level')" onmouseout="kill\(\)"><font color=#D4D4D4>LVL</a>`); $('#zero-config > thead > tr > th:nth-child(3)').html(`<a onmouseover="statspopup(event,'number of turns until rage caps<br>mouseover to see circ status')" onmouseout="kill\(\)"><font color=#D4D4D4>RAGE FILLED</a>`); $('#zero-config > thead > tr > th:nth-child(4)').html(`<a onmouseover="statspopup(event,'maximum rage')" onmouseout="kill\(\)"><font color=#D4D4D4>MAX RAGE</a>`); $('#zero-config > thead > tr > th:nth-child(5)').html(`<a onmouseover="statspopup(event,'growth today')" onmouseout="kill\(\)"><font color=#D4D4D4>TODAY</a>`); $('#zero-config > thead > tr > th:nth-child(6)').html(`<a onmouseover="statspopup(event,'growth yesterday')" onmouseout="kill\(\)"><font color=#D4D4D4>YESTERDAY</a>`); $('#zero-config > thead > tr > th:nth-child(7)').html(`<a onmouseover="statspopup(event,'experience to level')" onmouseout="kill\(\)"><font color=#D4D4D4>EXP TO LEVEL</a>`); $('#zero-config > thead > tr > th:nth-child(8)').html(`<a onmouseover="statspopup(event,'strength')" onmouseout="kill\(\)"><font color=#D4D4D4>STR</a>`); $('#zero-config > thead > tr > th:nth-child(9)').html(`<a onmouseover="statspopup(event,'number of items equipped<br>will turn red if fewer than 10')" onmouseout="kill\(\)"><font color=#D4D4D4>ITEMS</a>`); $('#zero-config > thead > tr > th:nth-child(10)').html(`<a onmouseover="statspopup(event,'equipped chaos gem')" onmouseout="kill\(\)"><font color=#D4D4D4>GEM</a>`); function insertAfter(newNode, existingNode) { existingNode.parentNode.insertBefore(newNode, existingNode.nextSibling); } let header = document.querySelector("#zero-config > thead > tr"); let hdTD12 = document.createElement('td'); hdTD12.innerHTML = `<a onmouseover="statspopup(event,'equipped rune')" onmouseout="kill\(\)"><font color=#D4D4D4>RUNE</a>`; insertAfter(hdTD12, header.lastElementChild); let hdTD4 = document.createElement('td'); hdTD4.innerHTML = `<a onmouseover="statspopup(event,'equipped badge')" onmouseout="kill\(\)"><font color=#D4D4D4>BADGE</a>`; insertAfter(hdTD4, header.lastElementChild); let hdTD1 = document.createElement('td'); hdTD1.innerHTML = `<a onmouseover="statspopup(event,'hover booster to see time remaining')" onmouseout="kill\(\)"><font color=#D4D4D4>BOOSTER</a>`; insertAfter(hdTD1, header.lastElementChild); let hdTD3 = document.createElement('td'); hdTD3.innerHTML = `<a onmouseover="statspopup(event,'char power')" onmouseout="kill\(\)"><font color=#D4D4D4>POWER</a>`; insertAfter(hdTD3, header.lastElementChild); let hdTD2 = document.createElement('td'); hdTD2.innerHTML = `<a onmouseover="statspopup(event,'elemental damage')" onmouseout="kill\(\)"><font color=#D4D4D4>ELE</a>`; insertAfter(hdTD2, header.lastElementChild); let hdTD6 = document.createElement('td'); hdTD6.innerHTML = `<a onmouseover="statspopup(event,'chaos damage')" onmouseout="kill\(\)"><font color=#D4D4D4>CHAOS</a>`; insertAfter(hdTD6, header.lastElementChild); let hdTD7 = document.createElement('td'); hdTD7.innerHTML = `<a onmouseover="statspopup(event,'fire resist')" onmouseout="kill\(\)"><font color=#FF0000>RESIST</font>`; insertAfter(hdTD7, header.lastElementChild); let hdTD8 = document.createElement('td'); hdTD8.innerHTML = `<a onmouseover="statspopup(event,'arcane resist')" onmouseout="kill\(\)"><font color=FFFF00>RESIST</font>`; insertAfter(hdTD8, header.lastElementChild); let hdTD9 = document.createElement('td'); hdTD9.innerHTML = `<a onmouseover="statspopup(event,'shadow resist')" onmouseout="kill\(\)"><font color=7e01bc>RESIST</font>`; insertAfter(hdTD9, header.lastElementChild); let hdTD10 = document.createElement('td'); hdTD10.innerHTML = `<a onmouseover="statspopup(event,'holy resist')" onmouseout="kill\(\)"><font color=00FFFF>RESIST</font>`; insertAfter(hdTD10, header.lastElementChild); let hdTD11 = document.createElement('td'); hdTD11.innerHTML = `<a onmouseover="statspopup(event,'kinetic resist')" onmouseout="kill\(\)"><font color=00FF00>RESIST</font>`; insertAfter(hdTD11, header.lastElementChild); let hdTD5 = document.createElement('td'); hdTD5.innerHTML = `<a onmouseover="statspopup(event,'wilderness level')" onmouseout="kill\(\)"><font color=#D4D4D4>WLDR</a>`; insertAfter(hdTD5, header.lastElementChild); let hdTD13 = document.createElement('td'); hdTD13.innerHTML = `<a onmouseover="statspopup(event,'amulet of achievement')" onmouseout="kill\(\)"><font color=#D4D4D4>AMLT</a>`; insertAfter(hdTD13, header.lastElementChild); let hdTD14 = document.createElement('td'); hdTD14.innerHTML = `<a onmouseover="statspopup(event,'elemental fuser')" onmouseout="kill\(\)"><font color=#D4D4D4>FUSR</a>`; insertAfter(hdTD14, header.lastElementChild); let hdTD15 = document.createElement('td'); hdTD15.innerHTML = `<a onmouseover="statspopup(event,'badge reputation')" onmouseout="kill\(\)"><font color=#D4D4D4>REPS</a>`; insertAfter(hdTD15, header.lastElementChild); let hdTD16 = document.createElement('td'); hdTD16.innerHTML = `<a onmouseover="statspopup(event,'chaos ore')" onmouseout="kill\(\)"><font color=#D4D4D4>ORES</a>`; insertAfter(hdTD16, header.lastElementChild); let hdTD17 = document.createElement('td'); hdTD17.innerHTML = `<a onmouseover="statspopup(event,'quest shard')" onmouseout="kill\(\)"><font color=#D4D4D4>SHRD</a>`; insertAfter(hdTD17, header.lastElementChild); let hdTD0 = document.createElement('td'); hdTD0.innerHTML = `<a onmouseover="statspopup(event,'active skills')" onmouseout="kill\(\)"><font color=#D4D4D4>SKILLS</a>`; insertAfter(hdTD0, header.lastElementChild); let hdTD18 = document.createElement('td'); hdTD18.innerHTML = `BACKPACK`; insertAfter(hdTD18, header.lastElementChild); let hdTD19 = document.createElement('td'); hdTD19.innerHTML = `<a onmouseover="statspopup(event,'will display skill resets, totems, add aug and remove aug if in backpack')" onmouseout="kill\(\)"><font color=#D4D4D4>UTILITY</a>`; insertAfter(hdTD19, header.lastElementChild); var charsTable = document.querySelector("#zero-config"); var charsTableRows = charsTable.rows.length; for (let rownum = 1; rownum < charsTableRows; rownum++) { var charid = document.querySelector("#zero-config > tbody > tr:nth-child("+rownum+") > td:nth-child(2) > a").outerHTML.replaceAll(/<a target="_top" href="https:\/\/.*\.outwar\.com\/world\?suid=/g,"").replace(/&serverid=.*<\/a>/g,"") fetch("skills_info.php?suid="+charid+"&id=3008") .then(response => response.text()) .then((response) => { var circReady = response.match(/<input type="submit" name="cast" class="btn btn-primary" value="Cast Skill">/i) var circCharging = response.match(/<b>This skill is recharging\. (.*) minutes remaining\.<\/b>/i) var circUntrained = response.match(/<b>You have not learned this skill yet<\/b>/i) var charid = document.querySelector("#zero-config > tbody > tr:nth-child("+rownum+") > td:nth-child(2) > a").outerHTML.replaceAll(/<a target="_top" href="https:\/\/.*\.outwar\.com\/world\?suid=/g,"").replace(/&serverid=.*<\/a>/g,"") fetch("ajax/backpackcontents.php?suid="+charid+"&tab=regular") .then(response => response.text()) .then((response) => { var backpack = response.match(/<span id="backpackmaxval" data-maxval="(.*)" data-isover=".*" data-curitemct="(.*)"><\/span>/i) var bpItems = parseInt(backpack[2]) var bpCap = parseInt(backpack[1]) var bpMax = ''; if (bpItems > bpCap) bpMax = "<font color=#FF0000>" if (bpCap > bpItems) bpMax = "<font color=#FFFFFF>" if (bpCap == bpItems) bpMax = "<font color=#FF0000>" var addaug = response.match(/addaugs\.jpg/i) var totem = response.match(/rechargetotem\.jpg/i) var skillitem = response.match(/skillitem\.jpg/i) var removeaug = response.match(/AugmentRemover\.gif/i) var utility = ''; if (addaug != null) utility += "<img src=images/addaugs.jpg height=25px width=25px> "; if (totem != null) utility += "<img src=images/rechargetotem.jpg height=25px width=25px> "; if (skillitem != null) utility += "<img src=images/skillitem.jpg height=25px width=25px> "; if (removeaug != null) utility += "<img src=images/items/AugmentRemover.gif height=25px width=25px> "; if (utility == "") utility = "none" var charid = document.querySelector("#zero-config > tbody > tr:nth-child("+rownum+") > td:nth-child(2) > a").outerHTML.replaceAll(/<a target="_top" href="https:\/\/.*\.outwar\.com\/world\?suid=/g,"").replace(/&serverid=.*<\/a>/g,"") fetch("ajax/backpackcontents.php?suid="+charid+"&tab=quest") .then(response => response.text()) .then((response) => { var amuletCnt = response.match(/data-name="Amulet of Achievement" data-itemqty="(.*)" data-itemid/i) || 0 var repCnt = response.match(/data-name="Badge Reputation" data-itemqty="(.*)" data-itemid/i) || 0 var oreCnt = response.match(/data-name="Chaos Ore" data-itemqty="(.*)" data-itemid/i) || 0 var shardCnt = response.match(/data-name="Quest Shard" data-itemqty="(.*)" data-itemid/i) || 0 var fuserCnt = response.match(/data-name="Elemental Fuser" data-itemqty="(.*)" data-itemid/i) || 0 var repCnt2 = ''; if (repCnt[1] >= 14) repCnt2 = "<font color=00CC00>"+parseInt(repCnt[1])+"</font>" if (repCnt[1] <= 15) repCnt2 = parseInt(repCnt[1]) if (repCnt[1] == undefined) repCnt2 = 0 var oreCnt2 = ''; if (oreCnt[1] >= 0) oreCnt2 = "<font color=f441be>"+parseInt(oreCnt[1])+"</font>" if (oreCnt[1] == 0) oreCnt2 = parseInt(oreCnt[1]) if (oreCnt[1] == undefined) oreCnt2 = 0 var charid = document.querySelector("#zero-config > tbody > tr:nth-child("+rownum+") > td:nth-child(2) > a").outerHTML.replaceAll(/<a target="_top" href="https:\/\/.*\.outwar\.com\/world\?suid=/g,"").replace(/&serverid=.*<\/a>/g,"") fetch("home?suid="+charid) .then(response => response.text()) .then((response) => { var fireRes = response.match(/onmouseout="kill\(\)">Fire Resist:<\/b>.*[\n\r].*[\n\r].*[\n\r].*[\n\r](.*)<\/font>/i); var arcaneRes = response.match(/onmouseout="kill\(\)">Arcane Resist:<\/b>.*[\n\r].*[\n\r].*[\n\r].*[\n\r](.*)<\/font>/i); var shadowRes = response.match(/onmouseout="kill\(\)">Shadow Resist:<\/b>.*[\n\r].*[\n\r].*[\n\r].*[\n\r](.*)<\/font>/i); var holyRes = response.match(/onmouseout="kill\(\)">Holy Resist:<\/b>.*[\n\r].*[\n\r].*[\n\r].*[\n\r](.*)<\/font>/i); var kineticRes = response.match(/onmouseout="kill\(\)">Kinetic Resist:<\/b>.*[\n\r].*[\n\r].*[\n\r].*[\n\r](.*)<\/font>/i); var charid = document.querySelector("#zero-config > tbody > tr:nth-child("+rownum+") > td:nth-child(2) > a").outerHTML.replaceAll(/<a target="_top" href="https:\/\/.*\.outwar\.com\/world\?suid=/g,"").replace(/&serverid=.*<\/a>/g,"") fetch("profile?suid="+charid) .then(response => response.text()) .then((response) => { var charlvl = response.match(/<font size="2">Level ([0-9]+) (.*)<\/font>/i) var charpower = response.match(/TOTAL POWER.*[\n\r].*<font size="2">(.*)<\/font>/i) var charpower2 = parseInt(charpower[1].replaceAll(",","")) var charele = response.match(/ELEMENTAL ATTACK.*[\n\r].*<font size="2">(.*)<\/font>/i) var charchaos = response.match(/CHAOS DAMAGE.*[\n\r].*<font size="2">(.*)<\/font>/i) var wilderness = response.match(/WILDERNESS LEVEL.*[\n\r].*<font size="2">(.*)<\/font>/i) var growthyesterday = response.match(/GROWTH YESTERDAY.*[\n\r].*<font size="2">(.*)<\/font>/i) var growthyesterday2 = parseInt(growthyesterday[1].replaceAll(",","")) var growthyesterday3 = ''; if (growthyesterday2 < 0) growthyesterday3 = "<font color=#FF0000>"+growthyesterday2.toLocaleString("en-US")+"</font>" if (growthyesterday2 > -1) growthyesterday3 = growthyesterday2.toLocaleString("en-US") var growthtoday = response.match(/<tr><td><b>Growth Today:<\/b><\/td><td>(.*)<\/td><\/tr>/i) var growthtoday2 = parseInt(growthtoday[1].replaceAll(",","")) var growthtoday3 = ''; if (growthtoday2 < 0) growthtoday3 = "<font color=#FF0000>"+growthtoday2.toLocaleString("en-US")+"</font>" if (growthtoday2 > -1) growthtoday3 = growthtoday2.toLocaleString("en-US") var tolevel = response.match(/to Level:<\/b><\/td><td>(.*)<\/td>/i) var tolevel2 = parseInt(tolevel[1].replaceAll(",","")) var strength = response.match(/statspopup\(event,'Strength: (.*)'\)" onmouseout/i) var strength2 = parseInt(strength[1]) var strength3 = ''; if (strength2 <= 100) strength3 = "<font color=#FF0000>"+strength2+"</font>" if (strength2 == 100) strength3 = strength2 var gem = response.match(/<img style="border:0px;" src="(.*)" onclick.* Chaos.*"/i) var gem2 = ''; if (gem == null) gem2 = "none" if (gem != null) gem2 = "<img src="+gem[1]+" height=25px width=25px>" var gem3 = response.match(/onmouseover="itempopup\(event,'.*'\)" onmouseout="kill\(\)" alt=".*Chaos.*">/i) var gem4 = ''; if (gem3 == null) gem4 = "><font color=#D4D4D4>" if (gem3 != null) gem4 = gem3 var rune = response.match(/<img style="border:0px;" src="(.*)" onclick.* Rune.*"/i) var rune2 = ''; if (rune == null) rune2 = "none" if (rune != null) rune2 = "<img src="+rune[1]+" height=25px width=25px>" var rune3 = response.match(/onmouseover="itempopup\(event,'.*'\)" onmouseout="kill\(\)" alt=".*Rune.*">/i) var rune4 = ''; if (rune3 == null) rune4 = "><font color=#D4D4D4>" if (rune3 != null) rune4 = rune3 var booster = response.match(/<img style="border:0px;" src="(.*)" onclick.* Booster.*"/i) var booster2 = ''; if (booster == null) booster2 = "none" if (booster != null) booster2 = "<img src="+booster[1]+" height=25px width=25px>" var booster3 = response.match(/onmouseover="itempopup\(event,'.*'\)" onmouseout="kill\(\)" alt=".*Booster.*">/i) var booster4 = ''; if (booster3 == null) booster4 = "><font color=#D4D4D4>" if (booster3 != null) booster4 = booster3 var items = response.match(/<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].*/im) var items2 = (items.toString().match(/img/g) || []).length var items3 = ''; if (items2 < 10) items3 = "<font color=#FF0000>"+items2 if (items2 == 10) items3 = "<font color=#D4D4D4>"+items2 var badge = response.match(/src="(.*)" onclick="window\.location='.*'\)" onmouseout="kill\(\)" alt=".*Badge.*">/i) var badge2 = ''; if (badge == null) badge2 = "none" if (badge != null) badge2 = "<img src="+badge[1]+" height=25px width=25px>" var badge3 = response.match(/onmouseover="itempopup\(event,'.*'\)" onmouseout="kill\(\)" alt=".*Badge.*">/i) var badge4 = ''; if (badge3 == null) badge4 = "><font color=#D4D4D4>" if (badge3 != null) badge4 = badge3 var circCast = response.match(/<img align="absmiddle" border="0" src="\/images\/skills\/circumspect\.png".*/i); const skill0 = response.match(/<img align="absmiddle" border="0" src="\/images\/skills\/skill_2952\.gif".*/i); const skill1 = response.match(/<img align="absmiddle" border="0" src="\/images\/skills\/circumspect\.png".*/i); const skill2 = response.match(/<img align="absmiddle" border="0" src="\/images\/skills\/markdown\.png".*/i); const skill3 = response.match(/<img align="absmiddle" border="0" src="\/images\/skills\/hitman\.png".*/i); const skill4 = response.match(/<img align="absmiddle" border="0" src="\/images\/skills\/haste\.png".*/i); const skill5 = response.match(/<img align="absmiddle" border="0" src="\/images\/skills\/streetsmarts\.png".*/i); const skill6 = response.match(/<img align="absmiddle" border="0" src="\/images\/skills\/onguard\.png".*/i); const skill7 = response.match(/<img align="absmiddle" border="0" src="\/images\/skills\/\.\.\/items\/itemz80\.gif".*/i); const skill8 = response.match(/<img align="absmiddle" border="0" src="\/images\/skills\/killingspree\.png".*/i); const skill9 = response.match(/<img align="absmiddle" border="0" src="\/images\/skills\/masterferoskill\.png".*/i); const skill10 = response.match(/<img align="absmiddle" border="0" src="\/images\/skills\/masterpresskill\.png".*/i); const skill11 = response.match(/<img align="absmiddle" border="0" src="\/images\/skills\/masteraffskill\.png".*/i); const skill12 = response.match(/<img align="absmiddle" border="0" src="\/images\/skills\/\.\.\/items\/itemz82\.jpg".*/i); const skill13 = response.match(/<img align="absmiddle" border="0" src="\/images\/skills\/\.\.\/items\/itemz91\.jpg".*/i); const skill14 = response.match(/<img align="absmiddle" border="0" src="\/images\/items\/itemz28\.jpg".*/i); const skill15 = response.match(/<img align="absmiddle" border="0" src="\/images\/skills\/blessingfromabove\.png".*/i); var circ = ''; if (circCast != null) circ += "circumspect is cast"; if (circReady != null) circ += "circumspect is ready!"; if (circCharging != null && circCast == null) circ += "circumspect is charged in <font color=F8DA00><b>"+(parseInt(circCharging[1])/60).toFixed(2)+"</font></b> hours"; if (circUntrained != null) circ += "circumspect is not trained"; var rage = response.match(/<span class="toolbar_rage">(.*)<\/span>/i) var rage2 = parseInt(rage[1].replaceAll(",","")) var mrage = response.match(/<b>Maximum:<\/b><\/td><td>(.*)<\/td>/i) var mrage2 = parseInt(mrage[1].replaceAll(",","")) var rpt = response.match(/<p class="top-rage" onmouseover="statspopup\(event,'<tr><td><b>Per Turn:<\/b><\/td><td>(.*)<\/td>/i) var rpt2 = parseInt(rpt[1].replaceAll(",","")) var tomax = Math.ceil((mrage2-rage2)/rpt2) var tomax2 = ''; if (tomax > 0) tomax2 = "in "+tomax+" turns" if (tomax == 0 && circReady != null) tomax2 = "<font color=F8DA00>in "+tomax+" turns</font>" if (tomax == 0 && circReady == null) tomax2 = "<font color=00CC00>in "+tomax+" turns</font>" var skills = ''; if (skill0 != null) skills += skill0+' '; if (skill1 != null) skills += skill1+' '; if (skill2 != null) skills += skill2+' '; if (skill3 != null) skills += skill3+' '; if (skill4 != null) skills += skill4+' '; if (skill5 != null) skills += skill5+' '; if (skill6 != null) skills += skill6+' '; if (skill7 != null) skills += skill7+' '; if (skill8 != null) skills += skill8+' '; if (skill9 != null) skills += skill9+' '; if (skill10 != null) skills += skill10+' '; if (skill11 != null) skills += skill11+' '; if (skill12 != null) skills += skill12+' '; if (skill13 != null) skills += skill13+' '; if (skill14 != null) skills += skill14+' '; if (skill15 != null) skills += skill15+' '; if (skills == "") skills += "none" let menu = document.querySelector("#zero-config > tbody > tr:nth-child("+rownum+")"); let lvlTD = document.createElement('td'); lvlTD.innerHTML = charlvl[1]; insertAfter(lvlTD, menu.lastElementChild); let rageTD = document.createElement('td'); rageTD.innerHTML = `<a onmouseover="statspopup(event,'`+circ+`')" onmouseout="kill\(\)"><font color=#D4D4D4>`+tomax2 insertAfter(rageTD, menu.lastElementChild); let mrTD = document.createElement('td'); mrTD.innerHTML = `<a onmouseover="statspopup(event,'max rage')" onmouseout="kill\(\)"><font color=#D4D4D4>`+mrage2.toLocaleString("en-US") insertAfter(mrTD, menu.lastElementChild); let todayTD = document.createElement('td'); todayTD.innerHTML = `<a onmouseover="statspopup(event,'growth today')" onmouseout="kill\(\)"><font color=#D4D4D4>`+growthtoday3; insertAfter(todayTD, menu.lastElementChild); let yesterdayTD = document.createElement('td'); yesterdayTD.innerHTML = `<a onmouseover="statspopup(event,'growth yesterday')" onmouseout="kill\(\)"><font color=#D4D4D4>`+growthyesterday3; insertAfter(yesterdayTD, menu.lastElementChild); let tolvlTD = document.createElement('td'); tolvlTD.innerHTML = `<a onmouseover="statspopup(event,'exp needed to level')" onmouseout="kill\(\)"><font color=#D4D4D4>`+tolevel2.toLocaleString("en-US") insertAfter(tolvlTD, menu.lastElementChild); let strengthTD = document.createElement('td'); strengthTD.innerHTML = `<a onmouseover="statspopup(event,'strength')" onmouseout="kill\(\)"><font color=#D4D4D4>`+strength3; insertAfter(strengthTD, menu.lastElementChild); let boosterTD = document.createElement('td'); boosterTD.innerHTML = items3+"/10</font>"; insertAfter(boosterTD, menu.lastElementChild); let suppliesTD = document.createElement('td'); suppliesTD.innerHTML = "<a "+gem4+gem2+"</a>"; insertAfter(suppliesTD, menu.lastElementChild); let runeTD = document.createElement('td'); runeTD.innerHTML = "<a "+rune4+rune2+"</a>"; insertAfter(runeTD, menu.lastElementChild); let itemsTD = document.createElement('td'); itemsTD.innerHTML = "<a "+badge4+badge2+"</a>"; insertAfter(itemsTD, menu.lastElementChild); let gemTD = document.createElement('td'); gemTD.innerHTML = "<a "+booster4+booster2+"</a>"; insertAfter(gemTD, menu.lastElementChild); let powerTD = document.createElement('td'); powerTD.innerHTML = `<a onmouseover="statspopup(event,'total power')" onmouseout="kill\(\)"><font color=#D4D4D4>`+charpower2.toLocaleString("en-US"); insertAfter(powerTD, menu.lastElementChild); let eleTD = document.createElement('td'); eleTD.innerHTML = `<a onmouseover="statspopup(event,'total elemental attack')" onmouseout="kill\(\)"><font color=#D4D4D4>`+charele[1]; insertAfter(eleTD, menu.lastElementChild); let chaosTD = document.createElement('td'); chaosTD.innerHTML = `<a onmouseover="statspopup(event,'chaos attack')" onmouseout="kill\(\)"><font color=#D4D4D4>`+charchaos[1]; insertAfter(chaosTD, menu.lastElementChild); let fireResTD = document.createElement('td'); fireResTD.innerHTML = `<a onmouseover="statspopup(event,'fire resistance')" onmouseout="kill\(\)"><font color=#D4D4D4>`+parseInt(fireRes[1]); insertAfter(fireResTD, menu.lastElementChild); let arcaneResTD = document.createElement('td'); arcaneResTD.innerHTML = `<a onmouseover="statspopup(event,'arcane resistance')" onmouseout="kill\(\)"><font color=#D4D4D4>`+parseInt(arcaneRes[1]); insertAfter(arcaneResTD, menu.lastElementChild); let shadowResTD = document.createElement('td'); shadowResTD.innerHTML = `<a onmouseover="statspopup(event,'shadow resistance')" onmouseout="kill\(\)"><font color=#D4D4D4>`+parseInt(shadowRes[1]); insertAfter(shadowResTD, menu.lastElementChild); let holyResTD = document.createElement('td'); holyResTD.innerHTML = `<a onmouseover="statspopup(event,'holy resistance')" onmouseout="kill\(\)"><font color=#D4D4D4>`+parseInt(holyRes[1]); insertAfter(holyResTD, menu.lastElementChild); let kineticResTD = document.createElement('td'); kineticResTD.innerHTML = `<a onmouseover="statspopup(event,'kinetic resistance')" onmouseout="kill\(\)"><font color=#D4D4D4>`+parseInt(kineticRes[1]); insertAfter(kineticResTD, menu.lastElementChild); let wildTD = document.createElement('td'); wildTD.innerHTML = `<a onmouseover="statspopup(event,'wilderness level')" onmouseout="kill\(\)"><font color=#D4D4D4>`+wilderness[1]; insertAfter(wildTD, menu.lastElementChild); let ammyTD = document.createElement('td'); ammyTD.innerHTML = amuletCnt[1] ?? "0" insertAfter(ammyTD, menu.lastElementChild); let fuserTD = document.createElement('td'); fuserTD.innerHTML = fuserCnt[1] ?? "0" insertAfter(fuserTD, menu.lastElementChild); let repTD = document.createElement('td'); repTD.innerHTML = `<a onmouseover="statspopup(event,'badge reputations')" onmouseout="kill\(\)"><font color=#D4D4D4>`+repCnt2 insertAfter(repTD, menu.lastElementChild); let oreCnt = document.createElement('td'); oreCnt.innerHTML = `<a onmouseover="statspopup(event,'chaos ore')" onmouseout="kill\(\)"><font color=#D4D4D4>`+oreCnt2 insertAfter(oreCnt, menu.lastElementChild); let shardTD = document.createElement('td'); shardTD.innerHTML = shardCnt[1] ?? "0" insertAfter(shardTD, menu.lastElementChild); let skillsTD = document.createElement('td'); skillsTD.innerHTML = skills; insertAfter(skillsTD, menu.lastElementChild); let bpTD = document.createElement('td'); bpTD.innerHTML = bpMax+bpItems+" / "+bpCap insertAfter(bpTD, menu.lastElementChild); let utilityTD = document.createElement('td'); utilityTD.innerHTML = utility; insertAfter(utilityTD, menu.lastElementChild); fetch("profile?suid="+selectedID[1]) .then(res => res.text()) .then((responseText) => {}) document.querySelector("#zero-config").setAttribute('class', 'rgahealth') })})})})})}}, 1000); var pageContent = `<div id=mvhead><img src=https://studiomoxxi.com/ow_themes/custom_jobs/minimal_01/mv.gif width=80% height=80%></div><p>`+ `<div class="outer">`+content+`</div><p>`+ `<div id=beta>MOXXI VISION is in beta. Please report any issues on <a href=https://discord.com/invite/f35cccbWU8?utm_source=Discord%20Widget&utm_medium=Connect>DISCORD</a></div>` var earnfreepoints = document.querySelector("#content-header-row") earnfreepoints.innerHTML = pageContent })} setTimeout(function() { if (document.URL.indexOf("earnfreepoints") != -1 ) { GM_addStyle ( ` #content-header-row > div.outer{display:inline !important;} #mvhead{display:none !important;} `)} }, 32500); // level chart if (document.URL.indexOf("home") != -1 ) { function insertAfter(newNode, existingNode) { existingNode.parentNode.insertBefore(newNode, existingNode.nextSibling); } GM_addStyle ( ` #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(7){margin-left:15px !important;} #expchart{margin-left:0px !important; width:361px !important;height:87px !important;overflow-y: scroll !important} #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(7) > div > div.w-100 > div > table > tbody > tr > td{padding-right:10px !important;} `); var levelchart = 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"); var chart = ` <div class="d-flex b-skills"> <div> </div> <div class="w-100"> <h5>OUTWAR LEVEL CHART</h5><p> <table> <tr><td width="45px">Level</td><td width="125px">Experience</td><td width="35px">SP</td><td width="70px">ATK</td><td width="70x">DEF</td></tr> </table> <div class="table-responsive" id="expchart"> <table> <tr><td width="45px">1</td><td width="125px">0</td><td width="35px">0</td><td width="70px">1</td><td width="70px">3</td></tr> <tr><td>2</td><td>7</td><td>0</td><td>2</td><td>5</td></tr> <tr><td>3</td><td>25</td><td>0</td><td>4</td><td>8</td></tr> <tr><td>4</td><td>50</td><td>0</td><td>6</td><td>12</td></tr> <tr><td>5</td><td>150</td><td>0</td><td>9</td><td>16</td></tr> <tr><td>6</td><td>250</td><td>0</td><td>12</td><td>21</td></tr> <tr><td>7</td><td>450</td><td>0</td><td>15</td><td>27</td></tr> <tr><td>8</td><td>700</td><td>0</td><td>18</td><td>36</td></tr> <tr><td>9</td><td>1,000</td><td>0</td><td>22</td><td>44</td></tr> <tr><td>10</td><td>1,500</td><td>1</td><td>26</td><td>50</td></tr> <tr><td>11</td><td>3,000</td><td>1</td><td>30</td><td>62</td></tr> <tr><td>12</td><td>5,000</td><td>2</td><td>36</td><td>71</td></tr> <tr><td>13</td><td>8,000</td><td>2</td><td>38</td><td>85</td></tr> <tr><td>14</td><td>12,000</td><td>3</td><td>43</td><td>92</td></tr> <tr><td>15</td><td>18,000</td><td>3</td><td>48</td><td>107</td></tr> <tr><td>16</td><td>28,000</td><td>4</td><td>53</td><td>115</td></tr> <tr><td>17</td><td>40,000</td><td>4</td><td>58</td><td>226</td></tr> <tr><td>18</td><td>55,000</td><td>5</td><td>63</td><td>231</td></tr> <tr><td>19</td><td>75,000</td><td>5</td><td>68</td><td>242</td></tr> <tr><td>20</td><td>100,000</td><td>6</td><td>73</td><td>257</td></tr> <tr><td>21</td><td>130,000</td><td>6</td><td>78</td><td>264</td></tr> <tr><td>22</td><td>165,000</td><td>7</td><td>83</td><td>272</td></tr> <tr><td>23</td><td>215,000</td><td>7</td><td>88</td><td>281</td></tr> <tr><td>24</td><td>260,000</td><td>8</td><td>95</td><td>290</td></tr> <tr><td>25</td><td>310,000</td><td>8</td><td>100</td><td>300</td></tr> <tr><td>26</td><td>370,000</td><td>9</td><td>106</td><td>320</td></tr> <tr><td>27</td><td>445,000</td><td>9</td><td>112</td><td>335</td></tr> <tr><td>28</td><td>525,000</td><td>10</td><td>118</td><td>350</td></tr> <tr><td>29</td><td>625,000</td><td>10</td><td>125</td><td>370</td></tr> <tr><td>30</td><td>735,000</td><td>11</td><td>132</td><td>392</td></tr> <tr><td>31</td><td>838,500</td><td>11</td><td>150</td><td>412</td></tr> <tr><td>32</td><td>950,000</td><td>12</td><td>160</td><td>426</td></tr> <tr><td>33</td><td>1,082,250</td><td>12</td><td>185</td><td>438</td></tr> <tr><td>34</td><td>1,224,000</td><td>13</td><td>200</td><td>453</td></tr> <tr><td>35</td><td>1,378,125</td><td>13</td><td>215</td><td>487</td></tr> <tr><td>36</td><td>1,530,000</td><td>14</td><td>230</td><td>500</td></tr> <tr><td>37</td><td>1,732,500</td><td>14</td><td>260</td><td>526</td></tr> <tr><td>38</td><td>1,920,000</td><td>15</td><td>300</td><td>556</td></tr> <tr><td>39</td><td>2,131,250</td><td>15</td><td>330</td><td>575</td></tr> <tr><td>40</td><td>2,325,000</td><td>16</td><td>345</td><td>600</td></tr> <tr><td>41</td><td>2,537,500</td><td>16</td><td>360</td><td>650</td></tr> <tr><td>42</td><td>2,800,000</td><td>17</td><td>380</td><td>704</td></tr> <tr><td>43</td><td>3,105,000</td><td>17</td><td>400</td><td>747</td></tr> <tr><td>44</td><td>3,380,000</td><td>18</td><td>415</td><td>811</td></tr> <tr><td>45</td><td>3,687,500</td><td>18</td><td>425</td><td>856</td></tr> <tr><td>46</td><td>3,990,000</td><td>19</td><td>450</td><td>879</td></tr> <tr><td>47</td><td>4,312,500</td><td>19</td><td>475</td><td>911</td></tr> <tr><td>48</td><td>4,620,000</td><td>20</td><td>500</td><td>932</td></tr> <tr><td>49</td><td>4,935,000</td><td>20</td><td>550</td><td>956</td></tr> <tr><td>50</td><td>5,250,000</td><td>21</td><td>650</td><td>1,000</td></tr> <tr><td>51</td><td>6,500,000</td><td>21</td><td>700</td><td>1,032</td></tr> <tr><td>52</td><td>7,750,000</td><td>22</td><td>750</td><td>1,067</td></tr> <tr><td>53</td><td>9,250,000</td><td>22</td><td>800</td><td>1,103</td></tr> <tr><td>54</td><td>11,050,000</td><td>23</td><td>850</td><td>1,250</td></tr> <tr><td>55</td><td>12,750,000</td><td>23</td><td>875</td><td>1,500</td></tr> <tr><td>56</td><td>14,750,000</td><td>24</td><td>900</td><td>1,750</td></tr> <tr><td>57</td><td>17,250,000</td><td>24</td><td>950</td><td>2,000</td></tr> <tr><td>58</td><td>19,750,000</td><td>25</td><td>1,000</td><td>2,200</td></tr> <tr><td>59</td><td>22,250,000</td><td>25</td><td>1,250</td><td>2,400</td></tr> <tr><td>60</td><td>24,750,000</td><td>26</td><td>1,500</td><td>2,500</td></tr> <tr><td>61</td><td>28,000,000</td><td>26</td><td>1,750</td><td>2,650</td></tr> <tr><td>62</td><td>31,750,000</td><td>27</td><td>2,000</td><td>2,800</td></tr> <tr><td>63</td><td>35,750,000</td><td>27</td><td>2,250</td><td>3,000</td></tr> <tr><td>64</td><td>39,750,000</td><td>28</td><td>2,500</td><td>3,200</td></tr> <tr><td>65</td><td>44,750,000</td><td>28</td><td>2,750</td><td>3,500</td></tr> <tr><td>66</td><td>49,750,000</td><td>29</td><td>3,000</td><td>3,800</td></tr> <tr><td>67</td><td>55,750,000</td><td>29</td><td>3,250</td><td>4,100</td></tr> <tr><td>68</td><td>61,750,000</td><td>30</td><td>3,500</td><td>4,400</td></tr> <tr><td>69</td><td>68,750,000</td><td>30</td><td>3,750</td><td>4,700</td></tr> <tr><td>70</td><td>77,000,000</td><td>31</td><td>4,000</td><td>5,000</td></tr> <tr><td>71</td><td>90,650,000</td><td>31</td><td>4,150</td><td>5,200</td></tr> <tr><td>72</td><td>106,900,000</td><td>32</td><td>4,300</td><td>5,450</td></tr> <tr><td>73</td><td>126,400,000</td><td>32</td><td>4,500</td><td>5,750</td></tr> <tr><td>74</td><td>152,400,000</td><td>33</td><td>4,750</td><td>6,100</td></tr> <tr><td>75</td><td>184,900,000</td><td>33</td><td>5,000</td><td>6,500</td></tr> <tr><td>76</td><td>385,000,000</td><td>34</td><td>5,250</td><td>6,800</td></tr> <tr><td>77</td><td>675,000,000</td><td>34</td><td>5,500</td><td>7,100</td></tr> <tr><td>78</td><td>995,600,000</td><td>35</td><td>5,800</td><td>7,500</td></tr> <tr><td>79</td><td>1,450,920,000</td><td>35</td><td>6,150</td><td>7,900</td></tr> <tr><td>80</td><td>2,000,000,000</td><td>36</td><td>6,500</td><td>8,500</td></tr> <tr><td>81</td><td>3,000,000,000</td><td>36</td><td>6,900</td><td>9,200</td></tr> <tr><td>82</td><td>4,500,000,000</td><td>37</td><td>7,350</td><td>10,000</td></tr> <tr><td>83</td><td>6,750,000,000</td><td>37</td><td>7,850</td><td>10,900</td></tr> <tr><td>84</td><td>10,000,000,000</td><td>38</td><td>8,400</td><td>11,900</td></tr> <tr><td>85</td><td>15,000,000,000</td><td>38</td><td>9,000</td><td>13,000</td></tr> <tr><td>86</td><td>20,000,000,000</td><td>39</td><td>9,650</td><td>14,200</td></tr> <tr><td>87</td><td>26,000,000,000</td><td>39</td><td>10,350</td><td>15,500</td></tr> <tr><td>88</td><td>33,000,000,000</td><td>40</td><td>11,100</td><td>16,900</td></tr> <tr><td>89</td><td>41,000,000,000</td><td>40</td><td>11,900</td><td>18,400</td></tr> <tr><td>90</td><td>50,000,000,000</td><td>41</td><td>12,750</td><td>20,000</td></tr> </table> </div> </div> </div> </div> </div> ` let lvlchart = document.createElement('div'); lvlchart.innerHTML = chart; insertAfter(lvlchart, levelchart.lastElementChild); } // itemlink modifications if (document.URL.indexOf("itemlink") != -1 ) { var itemID = window.location.search.replace(/\?id=/g,"").replace(/&owner=.*/g,"") fetch("/item_rollover.php?id="+itemID+"_1") .then(response => response.text()) .then((response) => { var holyaug = response.match(/ \+([0-9]+) <span style="color:#00FFFF/g); if (holyaug == null) holyaug = 0 var arcaneaug = response.match(/ \+([0-9]+) <span style="color:#FFFF00/g); if (arcaneaug == null) arcaneaug = 0 var fireaug = response.match(/ \+([0-9]+) <span style="color:#FF0000/g); if (fireaug == null) fireaug = 0 var kineticaug = response.match(/ \+([0-9]+) <span style="color:#00FF00/g); if (kineticaug == null) kineticaug = 0 var shadowaug = response.match(/ \+([0-9]+) <span style="color:#7e01bc/g); if (shadowaug == null) shadowaug = 0 var chaosaug = response.match(/ \+([0-9]+) <span style="color:#f441be/g); if (chaosaug == null) chaosaug = 0 var psaug = response.match(/\+([0-9]+)% perfect strike/g); if (psaug == null) psaug = 0 var aug1holy = parseInt(holyaug.toString().replace(/ <span style="color:#00FFFF/i,"").replace(/ \+/i,"")) var aug1arcane = parseInt(arcaneaug.toString().replace(/ <span style="color:#FFFF00/i,"").replace(/ \+/i,"")) var aug1fire = parseInt(fireaug.toString().replace(/ <span style="color:#FF0000/i,"").replace(/ \+/i,"")) var aug1kinetic = parseInt(kineticaug.toString().replace(/ <span style="color:#00FF00/i,"").replace(/ \+/i,"")) var aug1shadow = parseInt(shadowaug.toString().replace(/ <span style="color:#7e01bc/i,"").replace(/ \+/i,"")) var aug1chaos = parseInt(chaosaug.toString().replace(/ <span style="color:#f441be/i,"").replace(/ \+/i,"")) var aug1ps = parseInt(psaug.toString().replace(/% perfect strike/i,"").replace(/\+/i,"")) fetch("/item_rollover.php?id="+itemID+"_2") .then(response => response.text()) .then((response) => { var holyaug = response.match(/ \+([0-9]+) <span style="color:#00FFFF/g); if (holyaug == null) holyaug = 0 var arcaneaug = response.match(/ \+([0-9]+) <span style="color:#FFFF00/g); if (arcaneaug == null) arcaneaug = 0 var fireaug = response.match(/ \+([0-9]+) <span style="color:#FF0000/g); if (fireaug == null) fireaug = 0 var kineticaug = response.match(/ \+([0-9]+) <span style="color:#00FF00/g); if (kineticaug == null) kineticaug = 0 var shadowaug = response.match(/ \+([0-9]+) <span style="color:#7e01bc/g); if (shadowaug == null) shadowaug = 0 var chaosaug = response.match(/ \+([0-9]+) <span style="color:#f441be/g); if (chaosaug == null) chaosaug = 0 var psaug = response.match(/\+([0-9]+)% perfect strike/g); if (psaug == null) psaug = 0 var aug2holy = parseInt(holyaug.toString().replace(/ <span style="color:#00FFFF/i,"").replace(/ \+/i,"")) var aug2arcane = parseInt(arcaneaug.toString().replace(/ <span style="color:#FFFF00/i,"").replace(/ \+/i,"")) var aug2fire = parseInt(fireaug.toString().replace(/ <span style="color:#FF0000/i,"").replace(/ \+/i,"")) var aug2kinetic = parseInt(kineticaug.toString().replace(/ <span style="color:#00FF00/i,"").replace(/ \+/i,"")) var aug2shadow = parseInt(shadowaug.toString().replace(/ <span style="color:#7e01bc/i,"").replace(/ \+/i,"")) var aug2chaos = parseInt(chaosaug.toString().replace(/ <span style="color:#f441be/i,"").replace(/ \+/i,"")) var aug2ps = parseInt(psaug.toString().replace(/% perfect strike/i,"").replace(/\+/i,"")) fetch("/item_rollover.php?id="+itemID+"_3") .then(response => response.text()) .then((response) => { var holyaug = response.match(/ \+([0-9]+) <span style="color:#00FFFF/g); if (holyaug == null) holyaug = 0 var arcaneaug = response.match(/ \+([0-9]+) <span style="color:#FFFF00/g); if (arcaneaug == null) arcaneaug = 0 var fireaug = response.match(/ \+([0-9]+) <span style="color:#FF0000/g); if (fireaug == null) fireaug = 0 var kineticaug = response.match(/ \+([0-9]+) <span style="color:#00FF00/g); if (kineticaug == null) kineticaug = 0 var shadowaug = response.match(/ \+([0-9]+) <span style="color:#7e01bc/g); if (shadowaug == null) shadowaug = 0 var chaosaug = response.match(/ \+([0-9]+) <span style="color:#f441be/g); if (chaosaug == null) chaosaug = 0 var psaug = response.match(/\+([0-9]+)% perfect strike/g); if (psaug == null) psaug = 0 var aug3holy = parseInt(holyaug.toString().replace(/ <span style="color:#00FFFF/i,"").replace(/ \+/i,"")) var aug3arcane = parseInt(arcaneaug.toString().replace(/ <span style="color:#FFFF00/i,"").replace(/ \+/i,"")) var aug3fire = parseInt(fireaug.toString().replace(/ <span style="color:#FF0000/i,"").replace(/ \+/i,"")) var aug3kinetic = parseInt(kineticaug.toString().replace(/ <span style="color:#00FF00/i,"").replace(/ \+/i,"")) var aug3shadow = parseInt(shadowaug.toString().replace(/ <span style="color:#7e01bc/i,"").replace(/ \+/i,"")) var aug3chaos = parseInt(chaosaug.toString().replace(/ <span style="color:#f441be/i,"").replace(/ \+/i,"")) var aug3ps = parseInt(psaug.toString().replace(/% perfect strike/i,"").replace(/\+/i,"")) fetch("/item_rollover.php?id="+itemID+"_4") .then(response => response.text()) .then((response) => { var holyaug = response.match(/ \+([0-9]+) <span style="color:#00FFFF/g); if (holyaug == null) holyaug = 0 var arcaneaug = response.match(/ \+([0-9]+) <span style="color:#FFFF00/g); if (arcaneaug == null) arcaneaug = 0 var fireaug = response.match(/ \+([0-9]+) <span style="color:#FF0000/g); if (fireaug == null) fireaug = 0 var kineticaug = response.match(/ \+([0-9]+) <span style="color:#00FF00/g); if (kineticaug == null) kineticaug = 0 var shadowaug = response.match(/ \+([0-9]+) <span style="color:#7e01bc/g); if (shadowaug == null) shadowaug = 0 var chaosaug = response.match(/ \+([0-9]+) <span style="color:#f441be/g); if (chaosaug == null) chaosaug = 0 var psaug = response.match(/\+([0-9]+)% perfect strike/g); if (psaug == null) psaug = 0 var aug4holy = parseInt(holyaug.toString().replace(/ <span style="color:#00FFFF/i,"").replace(/ \+/i,"")) var aug4arcane = parseInt(arcaneaug.toString().replace(/ <span style="color:#FFFF00/i,"").replace(/ \+/i,"")) var aug4fire = parseInt(fireaug.toString().replace(/ <span style="color:#FF0000/i,"").replace(/ \+/i,"")) var aug4kinetic = parseInt(kineticaug.toString().replace(/ <span style="color:#00FF00/i,"").replace(/ \+/i,"")) var aug4shadow = parseInt(shadowaug.toString().replace(/ <span style="color:#7e01bc/i,"").replace(/ \+/i,"")) var aug4chaos = parseInt(chaosaug.toString().replace(/ <span style="color:#f441be/i,"").replace(/ \+/i,"")) var aug4ps = parseInt(psaug.toString().replace(/% perfect strike/i,"").replace(/\+/i,"")) fetch("/item_rollover.php?id="+itemID+"_5") .then(response => response.text()) .then((response) => { var holyaug = response.match(/ \+([0-9]+) <span style="color:#00FFFF/g); if (holyaug == null) holyaug = 0 var arcaneaug = response.match(/ \+([0-9]+) <span style="color:#FFFF00/g); if (arcaneaug == null) arcaneaug = 0 var fireaug = response.match(/ \+([0-9]+) <span style="color:#FF0000/g); if (fireaug == null) fireaug = 0 var kineticaug = response.match(/ \+([0-9]+) <span style="color:#00FF00/g); if (kineticaug == null) kineticaug = 0 var shadowaug = response.match(/ \+([0-9]+) <span style="color:#7e01bc/g); if (shadowaug == null) shadowaug = 0 var chaosaug = response.match(/ \+([0-9]+) <span style="color:#f441be/g); if (chaosaug == null) chaosaug = 0 var psaug = response.match(/\+([0-9]+)% perfect strike/g); if (psaug == null) psaug = 0 var aug5holy = parseInt(holyaug.toString().replace(/ <span style="color:#00FFFF/i,"").replace(/ \+/i,"")) var aug5arcane = parseInt(arcaneaug.toString().replace(/ <span style="color:#FFFF00/i,"").replace(/ \+/i,"")) var aug5fire = parseInt(fireaug.toString().replace(/ <span style="color:#FF0000/i,"").replace(/ \+/i,"")) var aug5kinetic = parseInt(kineticaug.toString().replace(/ <span style="color:#00FF00/i,"").replace(/ \+/i,"")) var aug5shadow = parseInt(shadowaug.toString().replace(/ <span style="color:#7e01bc/i,"").replace(/ \+/i,"")) var aug5chaos = parseInt(chaosaug.toString().replace(/ <span style="color:#f441be/i,"").replace(/ \+/i,"")) var aug5ps = parseInt(psaug.toString().replace(/% perfect strike/i,"").replace(/\+/i,"")) var aholy = aug1holy+aug2holy+aug3holy+aug4holy+aug5holy var aarcane = aug1arcane+aug2arcane+aug3arcane+aug4arcane+aug5arcane var afire = aug1fire+aug2fire+aug3fire+aug4fire+aug5fire var akinetic = aug1kinetic+aug2kinetic+aug3kinetic+aug4kinetic+aug5kinetic var ashadow = aug1shadow+aug2shadow+aug3shadow+aug4shadow+aug5shadow var achaos = aug1chaos+aug2chaos+aug3chaos+aug4chaos+aug5chaos var aps = aug1ps+aug2ps+aug3ps+aug4ps+aug5ps var Gslot1 = document.querySelector("#itemtable > tbody > tr:nth-child(2) > td:nth-child(2) > img:nth-child(3)").outerHTML.replace(/<img src="\/images\/gemslot2\.jpg">/i,1).replace(/<img src="\/images\/gem_.*\.jpg">/i,0) var Gslot2 = document.querySelector("#itemtable > tbody > tr:nth-child(2) > td:nth-child(2) > img:nth-child(4)").outerHTML.replace(/<img src="\/images\/gemslot2\.jpg">/i,1).replace(/<img src="\/images\/gem_.*\.jpg">/i,0) var Gslot3 = document.querySelector("#itemtable > tbody > tr:nth-child(2) > td:nth-child(2) > img:nth-child(5)").outerHTML.replace(/<img src="\/images\/gemslot2\.jpg">/i,1).replace(/<img src="\/images\/gem_.*\.jpg">/i,0) var Gslot4 = document.querySelector("#itemtable > tbody > tr:nth-child(2) > td:nth-child(2) > img:nth-child(6)").outerHTML.replace(/<img src="\/images\/gemslot2\.jpg">/i,1).replace(/<img src="\/images\/gem_.*\.jpg">/i,0) var sum = Math.round(Gslot1+Gslot2+Gslot3+Gslot4) var gems = ''; if (sum == "0") gems = "4" if (sum == "1") gems = "3" if (sum == "11") gems = "2" if (sum == "111") gems = "1" if (sum == "1111") gems = "0" var item = document.querySelector("#itemtable > tbody > tr:nth-child(2) > td:nth-child(1)").outerHTML.replace(/<span style="color:#00FF00"> \(\+[0-9]+\)<\/span>/g,"").replaceAll(",",""); var atk = item.match(/\+([0-9]+) ATK/) ?? 0 var holy = item.match(/\+([0-9]+) <span style="color:#.*">Holy/) ?? 0 var arcane = item.match(/\+([0-9]+) <span style="color:#.*">Arcane/) ?? 0 var shadow = item.match(/\+([0-9]+) <span style="color:#.*">Shadow/) ?? 0 var fire = item.match(/\+([0-9]+) <span style="color:#.*">Fire/) ?? 0 var kinetic = item.match(/\+([0-9]+) <span style="color:#.*">Kinetic/) ?? 0 var chaos = item.match(/\+([0-9]+) <span style="color:#.*">Chaos/) ?? 0 var vile = item.match(/\+([0-9]+) vile energy/) ?? 0 var hp = item.match(/\+([0-9]+) HP/) ?? 0 var holyr = item.match(/\+([0-9]+) Holy Resist/) ?? 0 var arcaner = item.match(/\+([0-9]+) Arcane Resist/) ?? 0 var shadowr = item.match(/\+([0-9]+) Shadow Resist/) ?? 0 var firer = item.match(/\+([0-9]+) Fire Resist/) ?? 0 var kineticr = item.match(/\+([0-9]+) Kinetic Resist/) ?? 0 var chaosr = item.match(/\+([0-9]+) Chaos Resist/) ?? 0 var block = item.match(/\+([0-9]+)% block/) ?? 0 var eblock = item.match(/\+([0-9]+)% elemental block/) ?? 0 var rpt = item.match(/\+([0-9]+) rage per hr/) ?? 0 var ept = item.match(/\+([0-9]+) exp per hr/) ?? 0 var ramp = item.match(/\+([0-9]+)% rampage/) ?? 0 var ps = item.match(/\+([0-9]+)% perfect strike/) ?? 0 var mr = item.match(/\+([0-9]+) max rage/) ?? 0 var crit = item.match(/\+([0-9]+)% critical hit/) ?? 0 var edititem = document.querySelector("#itemtable > tbody > tr:nth-child(2) > td:nth-child(1)"); if (aholy != 0){ edititem.innerHTML = edititem.innerHTML.replace(/ \+.* <span style="color:#00FFFF">Holy/," +"+(parseInt(holy[1])-aholy)+" <font color=00FF00>(+"+aholy+")</font><font color=00FFFF> Holy</font>")} if (aarcane != 0){ edititem.innerHTML = edititem.innerHTML.replace(/ \+.* <span style="color:#FFFF00">Arcane/," +"+(parseInt(arcane[1])-aarcane)+" <font color=00FF00>(+"+aarcane+")</font><font color=FFFF00> Arcane</font>")} if (afire != 0){ edititem.innerHTML = edititem.innerHTML.replace(/ \+.* <span style="color:#FF0000">Fire/," +"+(parseInt(fire[1])-afire)+" <font color=00FF00>(+"+afire+")</font><font color=FF0000> Fire</font>")} if (akinetic != 0){ edititem.innerHTML = edititem.innerHTML.replace(/ \+.* <span style="color:#00FF00">Kinetic/," +"+(parseInt(kinetic[1])-akinetic)+" <font color=00FF00>(+"+akinetic+")</font<font color=00FF00> Kinetic</font>")} if (ashadow != 0){ edititem.innerHTML = edititem.innerHTML.replace(/ \+.* <span style="color:#7e01bc">Shadow/," +"+(parseInt(shadow[1])-ashadow)+" <font color=00FF00>(+"+ashadow+")</font><font color=7e01bc> Shadow</font>")} if (achaos != 0){ edititem.innerHTML = edititem.innerHTML.replace(/ \+.* <span style="color:#f441be">Chaos/," +"+(parseInt(chaos[1])-achaos)+" <font color=00FF00>(+"+achaos+")</font><font color=f441be> Chaos</font>")} if (aps != 0){ edititem.innerHTML = edititem.innerHTML.replace(/% perfect strike/," <font color=00FF00>(+"+aps+")</font>% perfect strike")} var g1 = ''; var g2 = ''; var g3 = ''; var g4 = ''; if (atk[1] > 0){ g1 += "+"+Math.round(atk[1]*1.15)+" ATK<br>" g2 += "+"+Math.round(atk[1]*1.3225)+" ATK<br>" g3 += "+"+Math.round(atk[1]*1.520875)+" ATK<br>" g4 += "+"+Math.round(atk[1]*1.74900625)+" ATK<br>"} if (holy[1] > 0){ g1 += " +"+(parseInt(holy[1])-aholy)+" <font color=00FFFF>Holy</font><br>" g2 += " +"+(parseInt(holy[1])-aholy)+" <font color=00FFFF>Holy</font><br>" g3 += " +"+(parseInt(holy[1])-aholy)+" <font color=00FFFF>Holy</font><br>" g4 += " +"+(parseInt(holy[1])-aholy)+" <font color=00FFFF>Holy</font><br>"} if (arcane[1] > 0){ g1 += " +"+(parseInt(arcane[1])-aarcane)+" <font color=FFFF00>Arcane</font><br>" g2 += " +"+(parseInt(arcane[1])-aarcane)+" <font color=FFFF00>Arcane</font><br>" g3 += " +"+(parseInt(arcane[1])-aarcane)+" <font color=FFFF00>Arcane</font><br>" g4 += " +"+(parseInt(arcane[1])-aarcane)+" <font color=FFFF00>Arcane</font><br>"} if (shadow[1] > 0){ g1 += " +"+(parseInt(shadow[1])-ashadow)+" <font color=7E01BC>Shadow</font><br>" g2 += " +"+(parseInt(shadow[1])-ashadow)+" <font color=7E01BC>Shadow</font><br>" g3 += " +"+(parseInt(shadow[1])-ashadow)+" <font color=7E01BC>Shadow</font><br>" g4 += " +"+(parseInt(shadow[1])-ashadow)+" <font color=7E01BC>Shadow</font><br>"} if (fire[1] > 0){ g1 += " +"+(parseInt(fire[1])-afire)+" <font color=FF0000>Fire</font><br>" g2 += " +"+(parseInt(fire[1])-afire)+" <font color=FF0000>Fire</font><br>" g3 += " +"+(parseInt(fire[1])-afire)+" <font color=FF0000>Fire</font><br>" g4 += " +"+(parseInt(fire[1])-afire)+" <font color=FF0000>Fire</font><br>"} if (kinetic[1] > 0){ g1 += " +"+(parseInt(kinetic[1])-akinetic)+" <font color=00FF00>Kinetic</font><br>" g2 += " +"+(parseInt(kinetic[1])-akinetic)+" <font color=00FF00>Kinetic</font><br>" g3 += " +"+(parseInt(kinetic[1])-akinetic)+" <font color=00FF00>Kinetic</font><br>" g4 += " +"+(parseInt(kinetic[1])-akinetic)+" <font color=00FF00>Kinetic</font><br>"} if (chaos[1] > 0){ g1 += " +"+(parseInt(chaos[1])-achaos)+" <font color=E93EB5>Chaos</font><br>" g2 += " +"+(parseInt(chaos[1])-achaos)+" <font color=E93EB5>Chaos</font><br>" g3 += " +"+(parseInt(chaos[1])-achaos)+" <font color=E93EB5>Chaos</font><br>" g4 += " +"+(parseInt(chaos[1])-achaos)+" <font color=E93EB5>Chaos</font><br>"} if (vile[1] > 0){ g1 += " +"+vile[1]+" vile energy<br>" g2 += " +"+vile[1]+" vile energy<br>" g3 += " +"+vile[1]+" vile energy<br>" g4 += " +"+vile[1]+" vile energy<br>"} if (hp[1] > 0){ g1 += "+"+Math.round(hp[1]*1.15)+" HP<br>" g2 += "+"+Math.round(hp[1]*1.3225)+" HP<br>" g3 += "+"+Math.round(hp[1]*1.520875)+" HP<br>" g4 += "+"+Math.round(hp[1]*1.74900625)+" HP<br>"} if (holyr[1] != undefined){ g1 += " +"+holyr[1]+" Holy Resist<br>" g2 += " +"+holyr[1]+" Holy Resist<br>" g3 += " +"+holyr[1]+" Holy Resist<br>" g4 += " +"+holyr[1]+" Holy Resist<br>"} if (arcaner[1] > 0){ g1 += " +"+arcaner[1]+" Arcane Resist<br>" g2 += " +"+arcaner[1]+" Arcane Resist<br>" g3 += " +"+arcaner[1]+" Arcane Resist<br>" g4 += " +"+arcaner[1]+" Arcane Resist<br>"} if (shadowr[1] > 0){ g1 += " +"+shadowr[1]+" Shadow Resist<br>" g2 += " +"+shadowr[1]+" Shadow Resist<br>" g3 += " +"+shadowr[1]+" Shadow Resist<br>" g4 += " +"+shadowr[1]+" Shadow Resist<br>"} if (firer[1] > 0){ g1 += " +"+firer[1]+" Fire Resist<br>" g2 += " +"+firer[1]+" Fire Resist<br>" g3 += " +"+firer[1]+" Fire Resist<br>" g4 += " +"+firer[1]+" Fire Resist<br>"} if (kineticr[1] > 0){ g1 += " +"+kineticr[1]+" Kinetic Resist<br>" g2 += " +"+kineticr[1]+" Kinetic Resist<br>" g3 += " +"+kineticr[1]+" Kinetic Resist<br>" g4 += " +"+kineticr[1]+" Kinetic Resist<br>"} if (chaosr[1] > 0){ g1 += " +"+chaosr[1]+" Chaos Resist<br>" g2 += " +"+chaosr[1]+" Chaos Resist<br>" g3 += " +"+chaosr[1]+" Chaos Resist<br>" g4 += " +"+chaosr[1]+" Chaos Resist<br>"} if (block[1] > 0){ g1 += "+"+block[1]+"% block<br>" g2 += "+"+block[1]+"% block<br>" g3 += "+"+block[1]+"% block<br>" g4 += "+"+block[1]+"% block<br>"} if (eblock[1] > 0){ g1 += "+"+eblock[1]+"% elemental block<br>" g2 += "+"+eblock[1]+"% elemental block<br>" g3 += "+"+eblock[1]+"% elemental block<br>" g4 += "+"+eblock[1]+"% elemental block<br>"} if (rpt[1] > 0){ g1 += "+"+Math.round(rpt[1]*1.15)+" rage per hour<br>" g2 += "+"+Math.round(rpt[1]*1.3225)+" rage per hour<br>" g3 += "+"+Math.round(rpt[1]*1.520875)+" rage per hour<br>" g4 += "+"+Math.round(rpt[1]*1.74900625)+" rage per hour<br>"} if (ept[1] > 0){ g1 += "+"+Math.round(ept[1]*1.15)+" exp per hour<br>" g2 += "+"+Math.round(ept[1]*1.3225)+" exp per hour<br>" g3 += "+"+Math.round(ept[1]*1.520875)+" exp per hour<br>" g4 += "+"+Math.round(ept[1]*1.74900625)+" exp per hour<br>"} if (ramp[1] > 0){ g1 += "+"+ramp[1]+"% rampage<br>" g2 += "+"+ramp[1]+"% rampage<br>" g3 += "+"+ramp[1]+"% rampage<br>" g4 += "+"+ramp[1]+"% rampage<br>"} if (ps[1] > 0){ g1 += "+"+ps[1]+"<br>% perfect strike<br>" g2 += "+"+ps[1]+"<br>% perfect strike<br>" g3 += "+"+ps[1]+"<br>% perfect strike<br>" g4 += "+"+ps[1]+"<br>% perfect strike<br>"} if (mr[1] > 0){ g1 += "+"+Math.round(mr[1]*1.15)+" max rage<br>" g2 += "+"+Math.round(mr[1]*1.3225)+" max rage<br>" g3 += "+"+Math.round(mr[1]*1.520875)+" max rage<br>" g4 += "+"+Math.round(mr[1]*1.74900625)+" max rage<br>"} if (crit[1] > 0){ g1 += "+"+crit[1]+"% critical hit<br>" g2 += "+"+crit[1]+"% critical hit<br>" g3 += "+"+crit[1]+"% critical hit<br>" g4 += "+"+crit[1]+"% critical hit<br>"} var openslot = document.querySelectorAll("img[src='/images/gemslot2.jpg']"); if (openslot[0] != null) openslot[0].setAttribute(`onmouseover`, `popup(event,'<div id=gemcalc>`+g1+`</div>');`); if (openslot[0] != null) openslot[0].setAttribute(`onmouseout`, `kill()`); if (openslot[1] != null) openslot[1].setAttribute(`onmouseover`, `popup(event,'<div id=gemcalc>`+g2+`</div>')`); if (openslot[1] != null) openslot[1].setAttribute(`onmouseout`, `kill()`); if (openslot[2] != null) openslot[2].setAttribute(`onmouseover`, `popup(event,'<div id=gemcalc>`+g3+`</div>')`); if (openslot[2] != null) openslot[2].setAttribute(`onmouseout`, `kill()`); if (openslot[3] != null) openslot[3].setAttribute(`onmouseover`, `popup(event,'<div id=gemcalc>`+g4+`</div>')`); if (openslot[3] != null) openslot[3].setAttribute(`onmouseout`, `kill()`); var itemNameColor = document.querySelector("#itemtable > tbody > tr:nth-child(1) > td").outerHTML.replace(/<td colspan="2" style="height:20px;font-size:12pt;text-shadow: #47462E 1px 1px 2px;color:#/g,"").replace(/" align="left">.*/g,""); var itemRarity = ''; if (itemNameColor == "FFFFFF") itemRarity = "Uncommon"; if (itemNameColor == "1eff00") itemRarity = "Rare"; if (itemNameColor == "ffde5b") itemRarity = "Elite"; if (itemNameColor == "0070ff") itemRarity = "Godly"; if (itemNameColor == "CA1111") itemRarity = "Brutal"; if (itemNameColor == "ff8000") itemRarity = "King"; if (itemNameColor == "9000ba") itemRarity = "Mythic" var gemTxt = ` <td colspan="2" style="padding:2px;" valign="top"><div id="itemGemCalc"> <table width=300px border=1 bordercolor=#D4D4D4 id=gemcalc><tr><td> Item Rarity: <font color=`+itemNameColor+`>`+itemRarity+` </td><td> Number of Gems: `+gems+` </td></tr></table> <div id=mouseovergem>Mouseover empty gem slot to see gemmed stats</div><p> </div></td> ` function insertAfter(newNode, existingNode) { existingNode.parentNode.insertBefore(newNode, existingNode.nextSibling); } let menu = document.querySelector("#itemtable > tbody"); let tr = document.createElement('tr'); tr.innerHTML = gemTxt; insertAfter(tr, menu.lastElementChild); })})})})})} // boss raid individual pages if (document.URL.indexOf("boss_stats") != -1 ) { let str = document.querySelector("#content-header-row > div > table") str.innerHTML = str.innerHTML .replace("Ancestral","<font color=#FF00FF>Ancestral") .replace("Tomb","Tomb</font>") .replace("Boon of Vision","<font color=#FF00FF>Boon of Madness</font>") .replace("Tier 2 Booster Upgrade","<font color=#FF8000>Tier 2 Booster Upgrade</font>") .replace("8-Bit Banana","<font color=#FF8000>8-Bit Banana</font>") .replace("Augment of Vision","<font color=#FF8000>Augment of Vision</font>") .replace("Transcended Extract","<font color=#FF8000>Transcended Extract</font>") .replace("Prophecy Mail Reborn","<font color=#FFDE5B>Prophecy Mail Reborn</font>") .replace("Cord of Freezing Winds Reborn","<font color=#FFDE5B>Cord of Freezing Winds Reborn</font>") .replace("Soul of Blackhand Reborn","<font color=#FFDE5B>Soul of Blackhand Reborn</font>") .replace("Trinket of Aridity Reborn","<font color=#FFDE5B>Trinket of Aridity Reborn</font>") .replace("Interstellar Leggings Reborn","<font color=#FFDE5B>Interstellar Leggings Reborn</font>") .replace("Myrmidon Helm Reborn","<font color=#FFDE5B>Myrmidon Helm Reborn</font>") .replaceAll("Blackhand Reborn","<font color=#FFDE5B>Blackhand Reborn</font>") .replace("Incredible Tower Shield Reborn","<font color=#FFDE5B>Incredible Tower Shield Reborn</font>") .replace("Ring of the Sea Reborn","<font color=#FFDE5B>Ring of the Sea Reborn</font>") .replace("Boots of the Eagle Reborn","<font color=#FFDE5B>Boots of the Eagle Reborn</font>") .replace("Core of Exalted Perfection","<font color=#FFDE5B>Core of Exalted Perfection</font>") .replace("Greathelm of Exalted Perfection","<font color=#FFDE5B>Greathelm of Exalted Perfection</font>") .replace("Brooch of Exalted Perfection","<font color=#FFDE5B>Brooch of Exalted Perfection</font>") .replace("Launcher of Exalted Perfection","<font color=#FFDE5B>Launcher of Exalted Perfection</font>") .replace("Cuirass of Exalted Perfection","<font color=#FFDE5B>Cuirass of Exalted Perfection</font>") .replace("Boon of Exalted Perfection","<font color=#FFDE5B>Boon of Exalted Perfection</font>") .replace("Link of Exalted Perfection","<font color=#FFDE5B>Link of Exalted Perfection</font>") .replace("Scales of Exalted Perfection","<font color=#FFDE5B>Scales of Exalted Perfection</font>") .replace("Twirl of Exalted Perfection","<font color=#FFDE5B>Twirl of Exalted Perfection</font>") .replace("Spurs of Exalted Perfection","<font color=#FFDE5B>Spurs of Exalted Perfection</font>") var deadCheck = document.querySelector("#content-header-row > div > table > tbody > tr:nth-child(1) > td:nth-child(3)").innerHTML; if (deadCheck > 0){ var bossTableX = document.querySelector("#content-header-row > div > table"); var bossTableRowsX = bossTableX.rows.length; function insertAfter(newNode, existingNode) { existingNode.parentNode.insertBefore(newNode, existingNode.nextSibling); } var bossName = document.querySelector("#content-header-row > h1").innerHTML var lootCount = ''; if (bossName == "Cosmos, Great All Being") lootCount = "50" if (bossName == "Death, Reaper of Souls") lootCount = "80" if (bossName == "Maekrix, Dreaded Striker") lootCount = "73" if (bossName == "Blackhand Reborn") lootCount = "61" if (bossName == "Zyrak, Vision of Madness") lootCount = "65" for (let rownumX = 1; rownumX < bossTableRowsX; rownumX++) { GM_addStyle ( ` td:nth-of-type(3){display: none !important;} #content-header-row > div > table > thead > tr > th:nth-child(3){width: 60% !important;} .table td{border: 1px SOLID #0F0F0F !important;} `); var crewName = document.querySelector("#content-header-row > div > table > tbody > tr:nth-child("+rownumX+") > td:nth-child(1) > a > font").innerHTML.replace("'",""); var percentage = document.querySelector("#content-header-row > div > table > tbody > tr:nth-child("+rownumX+") > td:nth-child(2)").innerHTML.replace(/.*\(/i,"").replace("%)",""); let bossLootCnt = document.querySelector("#content-header-row > div > table > tbody > tr:nth-child("+rownumX+") > td:nth-child(3)").innerHTML let bossLoot = document.querySelector("#content-header-row > div > table > tbody > tr:nth-child("+rownumX+") > td:nth-child(3)").outerHTML bossLoot = `<table id=bossloottable><tr><td width=50px><center><span id=bossloot style='background-color: #D4D4D4; color: #202020;'><b>`+bossLootCnt+`</b><br></span><a onmouseover="popup(event,'`+crewName+`s expected drops')" onmouseout="kill()"><font size=1 color=#D4D4D4>(`+Math.round(percentage/100*lootCount)+`)</td><td> `+bossLoot.replace(/<td onmouseover="popup\(event,'/g,"").replace(/<br>','808080'\)" onmouseout="kill\(\)>.*<\/td>/g,"").replaceAll("<br>",", ").replaceAll(/No Items','808080'\)" onmouseout="kill\(\)">0/g,"").replaceAll(/, ','808080'\)" onmouseout="kill\(\)">[0-9]+/g,""); let menu = document.querySelector("#content-header-row > div > table > tbody > tr:nth-child("+rownumX+")"); let td = document.createElement('td'); td.innerHTML = bossLoot; insertAfter(td, menu.lastElementChild); }}} if (document.URL.indexOf("boss_stats") != -1 ) { let bossName = document.querySelector("#content-header-row > h1").innerHTML let lootCount = ''; if (bossName == "Cosmos, Great All Being") lootCount = "50" if (bossName == "Death, Reaper of Souls") lootCount = "78" if (bossName == "Maekrix, Dreaded Striker") lootCount = "73" if (bossName == "Blackhand Reborn") lootCount = "61" if (bossName == "Zyrak, Vision of Madness") lootCount = "64" var bossHP = ''; if (bossName == "Cosmos, Great All Being") bossHP = "100000000000" if (bossName == "Death, Reaper of Souls") bossHP = "295000000000" if (bossName == "Maekrix, Dreaded Striker") bossHP = "320000000000" if (bossName == "Blackhand Reborn") bossHP = "570000000000" if (bossName == "Zyrak, Vision of Madness") bossHP = "1200000000000" var bossTable = document.querySelector("#content-header-row > div > table"); var bossTableRows = bossTable.rows.length; function insertAfter(newNode, existingNode) { existingNode.parentNode.insertBefore(newNode, existingNode.nextSibling); } var aliveCheck = document.querySelector("#content-header-row > div > table > tbody > tr:nth-child(1) > td:nth-child(3)").innerHTML; if (aliveCheck < 1){ let menu = document.querySelector("#content-header-row > div > table > thead > tr"); let td1 = document.createElement('td'); td1.innerHTML = `<div id=estdrop><a onmouseover="popup\(event,'Estimating the number of items each crew will receive'\)" onmouseout="kill\(\)"><b>ESTIMATED DROPS</div>`; insertAfter(td1, menu.lastElementChild); let td4 = document.createElement('td'); td4.innerHTML = `<div id=estdrop><a onmouseover="popup\(event,'Mouseover column to see last raid'\)" onmouseout="kill\(\)"><b>RAID STATUS</div>`; insertAfter(td4, menu.lastElementChild); function calcTime(city, offset) { d = new Date(); utc = d.getTime() + (d.getTimezoneOffset() * 60000); nd = new Date(utc + (3600000*offset)); return nd.toLocaleString(); } var OWtime = Date.parse((calcTime('Outwar', '-5.0'))); for (let rownum = 1; rownum < bossTableRows; rownum++) { GM_addStyle ( ` td:nth-of-type(3){display: none !important;} #content-header-row > div > table > thead > tr > th:nth-child(3) > a > b > font{color: #FFF000 !important;} .table td{border: 1px SOLID #0F0F0F !important;} #content-header-row > div > table > thead{border: 0px SOLID !important;} #estdrop{margin-top:7px !important;} `); var crewID = document.querySelector("#content-header-row > div > table > tbody > tr:nth-child("+rownum+") > td:nth-child(1)").innerHTML.replaceAll(/"><font.*/g,"").replaceAll(/<a href="crew_profile\.php\?id=/g,""); fetch("crew_raidresults.php?all_results=Display+all+raid+results&crewid="+crewID) .then(response => response.text()) .then((response) => { var match = 'valign="top">(.*)<\/td.*[\n\r].*'+bossName var lastRaid = response.match(match) var lastRaidprint = '' if (lastRaid != null) lastRaidprint = Date.parse(lastRaid[1].replaceAll("-","/").replace(/\/22 /g,"/2022, ").replace("am",":00 AM").replace("pm",":00 PM").replace(/ 0/i," ")); var sinceLast = OWtime-lastRaidprint var crewName = document.querySelector("#content-header-row > div > table > tbody > tr:nth-child("+rownum+") > td:nth-child(1) > a > font").innerHTML.replace("'",""); var crewID = document.querySelector("#content-header-row > div > table > tbody > tr:nth-child("+rownum+") > td:nth-child(1)").innerHTML.replaceAll(/<a href="crew_profile\.php\?id=/g,"").replaceAll(/"><font color="#CC0000".*/g,""); var activeRaids = ''; if (sinceLast < 150000) activeRaids = `<font color=#FFF000><a href=crew_raidresults.php?most_recent=MoxxiMod+raid+results&crewid=`+crewID+` onmouseover="popup\(event,'<b>`+crewName+`</b><br>Last raid vs `+bossName+`:<br>`+Math.round(sinceLast/60000)+` minutes ago<br><font color=#FFF000>(click to see raid results)'\)" onmouseout="kill\(\)">Actively Raiding` if (sinceLast > 149999) activeRaids = `<a onmouseover="popup\(event,'<b>`+crewName+`</b><br>Last raid vs `+bossName+`:<br>`+Math.round(sinceLast/60000)+` minutes ago'\)" onmouseout="kill\(\)"><font color=#D4D4D4>Not Raiding` let td3 = document.createElement('td'); td3.innerHTML = activeRaids; insertAfter(td3, menu.lastElementChild); }) bossTable.rows[0].cells[2].innerHTML = `<a onmouseover="popup\(event,'Estimating the total damage when the boss dies'\)" onmouseout="kill\(\)"><b>ESTIMATED DAMAGE` let percentage = document.querySelector("#content-header-row > div > table > tbody > tr:nth-child("+rownum+") > td:nth-child(2)").innerHTML.replace(/.*\(/i,"").replace("%)",""); var damage = document.querySelector("#content-header-row > div > table > tbody > tr:nth-child("+rownum+") > td:nth-child(2)").innerHTML.replace(/ \(.*%\)/g,"").replaceAll(",",""); let menu = document.querySelector("#content-header-row > div > table > tbody > tr:nth-child("+rownum+")"); let td1 = document.createElement('td'); td1.innerHTML = Math.round(lootCount*(percentage/100)); insertAfter(td1, menu.lastElementChild); const reducer = (accumulator, curr) => accumulator + curr var BaseDmgArray = []; var table = document.querySelector("#content-header-row > div > table").innerHTML var BaseMatch = table.matchAll(/<td>(.*) \(/g); for (const BaseMatchLoop of BaseMatch) { let BaseObj = [parseInt(BaseMatchLoop[1].replace(",","").replace(",","").replace(",",""))]; for (const BaseDmg of BaseObj) { BaseDmgArray.push(BaseDmg);}} var BaseNumbers = BaseDmgArray.map(Number) var SumOfBase = BaseNumbers.reduce(reducer) let td2 = document.createElement('td'); td2.innerHTML = Math.round(damage/SumOfBase*bossHP).toLocaleString("en-US"); insertAfter(td2, menu.children[2]); const header = document.querySelector("#content-header-row > h5") header.innerHTML = "<br>Health Remaining: "+(bossHP-SumOfBase).toLocaleString("en-US")+" ("+((bossHP-SumOfBase)/bossHP*100).toFixed(3)+"%)" }}} // moxximod boss raid main page if (document.URL.indexOf("crew_bossspawns") != -1 ) { GM_addStyle ( ` #content-header-row > div.col-12.layout-spacing{display: none !important;} `); var bossCount = $('#divCollections > div.row > div').length fetch("crew_profile") .then(response => response.text()) .then((response) => { var myCrew = response.match(/<h2>.*<\/h2>/g) var myCrewID = response.match(/href="\/crew_raidresults\.php\?crewid=(.*)">Raid Results<\/a>/i) var bossHead = document.querySelector("#divHeader > h3") bossHead.innerHTML = "<a href=crew_raidresults.php?most_recent=MoxxiMod+raid+results&crewid="+myCrewID[1]+"> Moxxi Mod Raid Results</a>" }) for (let bossNum = 1; bossNum < 1+bossCount; bossNum++) { var bossLink = document.querySelector("#divCollections > div.row > div:nth-child("+bossNum+") > div > div > div.user-info.w-100.pr-3 > p.card-user_occupation > a") var boss = ''; if (bossLink != null) boss = document.querySelector("#divCollections > div.row > div:nth-child("+bossNum+") > div > div > div.user-info.w-100.pr-3 > p.card-user_occupation > a") if (bossLink =! null){ fetch(boss) .then(response => response.text()) .then((response) => { var bossName = response.match(/<h1 class="w-100">(.*)<\/h1>/i) if (bossName != null){ var bossHP = ''; if (bossName[1] == "Cosmos, Great All Being") bossHP = "100000000000" if (bossName[1] == "Death, Reaper of Souls") bossHP = "295000000000" if (bossName[1] == "Maekrix, Dreaded Striker") bossHP = "320000000000" if (bossName[1] == "Blackhand Reborn") bossHP = "570000000000" if (bossName[1] == "Zyrak, Vision of Madness") bossHP = "1200000000000" var crew1 = response.match(/<font color="#CC0000">(.*)<\/font>.*[\n\r].*<td>(.*) \(.*\)<\/font>/i); const reducer = (accumulator, curr) => accumulator + curr var BaseDmgArray = []; var BaseMatch = response.matchAll(/<td>(.*) \(/g); for (const BaseMatchLoop of BaseMatch) { let BaseObj = [parseInt(BaseMatchLoop[1].replace(",","").replace(",","").replace(",",""))]; for (const BaseDmg of BaseObj) { BaseDmgArray.push(BaseDmg);}} var BaseNumbers = BaseDmgArray.map(Number) var SumOfBase = BaseNumbers.reduce(reducer) var cosmosPerc = ((bossHP-SumOfBase)/bossHP*100).toFixed(3) var cosmosRemain = Math.round(SumOfBase*cosmosPerc/(100-cosmosPerc)) document.querySelector("#divCollections > div.row > div:nth-child("+bossNum+") > div > div > div.user-info.w-100.pr-3 > p.card-text").innerHTML = "<hr><b>Total Damage Dealt:</b> "+SumOfBase.toLocaleString("en-US")+"<hr><b>Leading Crew:</b><br>"+crew1[1]+"<br>"+crew1[2]+"<hr><b>Health Remaining:</b> "+cosmosRemain.toLocaleString("en-US")+'<br><a href='+document.querySelector("#divCollections > div.row > div:nth-child("+bossNum+") > div > div > div.user-info.w-100.pr-3 > p.card-user_occupation > a")+'>'+cosmosPerc+"%</a>" document.querySelector("#divCollections > div.row > div:nth-child("+bossNum+") > div > div > div.user-info.w-100.pr-3 > h3").innerHTML = '<a href='+document.querySelector("#divCollections > div.row > div:nth-child("+bossNum+") > div > div > div.user-info.w-100.pr-3 > p.card-user_occupation > a")+'>'+bossName[1]+'</a>' document.querySelector("#divCollections > div.row > div:nth-child("+bossNum+") > div > div > div.user-info.w-100.pr-3 > p.card-user_occupation").innerHTML = '' }})};}} // moxximod raid results menu and styling if (document.URL.indexOf("crew_raidresults") != -1 ) { document.querySelector("#content-header-row > table > tbody > tr > td > form > p > input:nth-child(3)").setAttribute("value", "MoxxiMod raid results"); }; if (document.URL.indexOf("most_recent=MoxxiMod") != -1 ) { GM_addStyle ( `#content-header-row > table > tbody > tr > td > div > center > div > table{background:#0B0B0B !important;} td:nth-of-type(3){display: none;} td:nth-of-type(4){display: none;} td:nth-of-type(5){display: none;} `); var changeHeader0 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table") changeHeader0.rows[0].cells[0].innerHTML = `<a onmouseover="popup\(event,'Raid time'\)" onmouseout="kill\(\)"><font color=#c2c2c2><b>TIME` var changeHeader1 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table") changeHeader1.rows[0].cells[1].innerHTML = `<a onmouseover="popup\(event,'Raid god, mob or boss'\)" onmouseout="kill\(\)"><font color=#c2c2c2><b>RAID` // moxximod raid results header row function insertAfter2(newNode, existingNode) { existingNode.parentNode.insertBefore(newNode, existingNode.nextSibling); } let rrHead11 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr"); let tdHead11 = document.createElement('td'); tdHead11.innerHTML = `<a onmouseover="popup\(event,'Total chars in the raid<br>(number of chars who died)'\)" onmouseout="kill\(\)"><font color=#c2c2c2><b>CHARS`; insertAfter2(tdHead11, rrHead11.lastElementChild); let rrHead1 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr"); let tdHead1 = document.createElement('td'); tdHead1.innerHTML = `<a onmouseover="popup\(event,'Total amount of attack damage<br>Mouseover to see details'\)" onmouseout="kill\(\)"><font color=#c2c2c2><b>DMG`; insertAfter2(tdHead1, rrHead1.lastElementChild); let rrHead2 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr"); let tdHead2 = document.createElement('td'); tdHead2.innerHTML = `<a onmouseover="popup\(event,'Average amount of attack damage per char'\)" onmouseout="kill\(\)"><font color=#c2c2c2><b>AVG`; insertAfter2(tdHead2, rrHead2.lastElementChild); let rrHead6 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr"); let tdHead6 = document.createElement('td'); tdHead6.innerHTML = `<a onmouseover="popup\(event,'Average block rate of all chars'\)" onmouseout="kill\(\)"><font color="ff9e00"><b>BLOCK`; insertAfter2(tdHead6, rrHead6.lastElementChild); let rrHead7 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr"); let tdHead7 = document.createElement('td'); tdHead7.innerHTML = `<a onmouseover="popup\(event,'Average ele block rate of all chars'\)" onmouseout="kill\(\)"><font color="00ff0b"><b>BLOCK`; insertAfter2(tdHead7, rrHead7.lastElementChild); let rrHead13 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr"); let tdHead13 = document.createElement('td'); tdHead13.innerHTML = `<a onmouseover="popup\(event,'Average ele shield rate of all chars'\)" onmouseout="kill\(\)"><font color=#c2c2c2><b>SHIELD`; insertAfter2(tdHead13, rrHead13.lastElementChild); let rrHead14 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr"); let tdHead14 = document.createElement('td'); tdHead14.innerHTML = `<a onmouseover="popup\(event,'Total number of individual attacks executed'\)" onmouseout="kill\(\)"><font color=#c2c2c2><b>ATKS`; insertAfter2(tdHead14, rrHead14.lastElementChild); let rrHead10 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr"); let tdHead10 = document.createElement('td'); tdHead10.innerHTML = `<a onmouseover="popup\(event,'Total number of rounds'\)" onmouseout="kill\(\)"><font color=#c2c2c2><b>RNDS`; insertAfter2(tdHead10, rrHead10.lastElementChild); let rrHead12 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr"); let tdHead12 = document.createElement('td'); tdHead12.innerHTML = `<a onmouseover="popup\(event,'Was SIN applied during the raid?'\)" onmouseout="kill\(\)"><font color=#c2c2c2><b>SIN`; insertAfter2(tdHead12, rrHead12.lastElementChild); let rrHead5 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr"); let tdHead5 = document.createElement('td'); tdHead5.innerHTML = `<a onmouseover="popup\(event,'Remaining health of the mob'\)" onmouseout="kill\(\)"><font color=#c2c2c2><b>HEALTH`; insertAfter2(tdHead5, rrHead5.lastElementChild); let rrHead4 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr"); let tdHead4 = document.createElement('td'); tdHead4.innerHTML = `<a onmouseover="popup\(event,'Items dropped from raid'\)" onmouseout="kill\(\)"><font color=#c2c2c2><b>LOOT`; insertAfter2(tdHead4, rrHead4.lastElementChild); // moxximod raid results data scrape var rrTable = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table"); var rrRowCount = 1+rrTable.rows.length; for (let rownum = 2; rownum < rrRowCount; rownum++) { let raidLink11 = ''; if (document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr:nth-child("+rownum+") > td:nth-child(5) > a") != null) raidLink11 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr:nth-child("+rownum+") > td:nth-child(5) > a"); let row11 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr:nth-child("+rownum+")") let chars11 = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr:nth-child("+rownum+") > td:nth-child(3)").innerHTML; let raidNameCell = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr:nth-child("+rownum+") > td:nth-child(2)"); let raidName = ''; if (raidNameCell != null) raidNameCell.innerHTML = '<a href='+raidLink11+'>'+raidNameCell.innerHTML.replaceAll(/,.*/g,"").replaceAll(/of.*/g,"").replaceAll("The","").replaceAll(/the.*/g,"").replaceAll(/the.*/g,"")+'</a>'; let timeStampCell = document.querySelector("#content-header-row > table > tbody > tr > td > div > center > div > table > tbody > tr:nth-child("+rownum+") > td:nth-child(1)"); let timeStampName = ''; if (timeStampCell != null) timeStampCell.innerHTML = timeStampCell.innerHTML.replaceAll(/[0-9]+-[0-9]+-[0-9]+/g,""); GM_xmlhttpRequest ( { method: 'GET', url: raidLink11, onload: function (responseDetails) { var raidDmg11 = /Damage: ([0-9,]*)/; var printDmg11 = raidDmg11.exec(responseDetails.responseText); var raidDrops11 = /popup\(event,'<b>(.*)<\/b>'\)" onmouseout="kill\(\)">[0-9]+ items<\/a>/i; var printDrops11 = raidDrops11.exec(responseDetails.responseText); var drops11 = ''; if (printDrops11 == null) drops11 = `<b>No items found` if (printDrops11 != null) drops11 = printDrops11[1] var raidHealth11 = /([0-9]+)%<\/span><\/div>.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r]<span id=/i; var printHealth11 = raidHealth11.exec(responseDetails.responseText); var health11 = ''; if (printHealth11[1] < 1) health11 = `<font color=#02B602><b>`+printHealth11[1]+`%</font>` if (printHealth11[1] > 0) health11 = `<font color=#FF0000><b>`+printHealth11[1]+`%</font>` fetch(raidLink11) .then(response => response.text()) .then((response) => { var attacks11 = response.match(/Base: [0-9]+/g).length; var blocks11 = response.match(/images\/block\.jpg/g); var eleblocks11 = response.match(/images\/block2\.jpg/g); var shields11 = response.match(/_ele_shield\.jpg/g); var dead11 = response.match(/images\/dead\.jpg/g); var rounds11 = response.match(/\/img\/skin\/Bar_separator_little\.png/g).length; var sincheck11 = response.match(/color:#CC0000;"><b>(.*)<\/b>/i); const reducer = (accumulator, curr) => accumulator + curr var BaseDmgArray = []; var BaseMatch = response.matchAll(/onmouseover="popup\(event,.*Base: (.*)<div/g); for (const BaseMatchLoop of BaseMatch) { let BaseObj = [parseInt(BaseMatchLoop[1].replace(",",""))]; for (const BaseDmg of BaseObj) { BaseDmgArray.push(BaseDmg);}} var BaseNumbers = BaseDmgArray.map(Number) var BaseDmgCheck = ''; if (BaseNumbers != "") BaseDmgCheck = BaseNumbers if (BaseNumbers == "") BaseDmgCheck = [0] var SumOfBase = BaseDmgCheck.reduce(reducer).toLocaleString("en-US"); var printBase = "<font color=#FFFFFF><b>+"+SumOfBase+" base<br>" var FireDmgArray = []; var FireMatch = response.matchAll(/onmouseover="popup\(event,.*\+(.*) fire/g); for (const FireMatchLoop of FireMatch) { let FireObj = [parseInt(FireMatchLoop[1].replace(",",""))]; for (const FireDmg of FireObj) { FireDmgArray.push(FireDmg);}} var FireNumbers = FireDmgArray.map(Number) var FireDmgCheck = ''; if (FireNumbers != "") FireDmgCheck = FireNumbers if (FireNumbers == "") FireDmgCheck = [0] var SumOfFire = FireDmgCheck.reduce(reducer).toLocaleString("en-US"); var printFire = "<font color=#ff0000><b>+"+SumOfFire+" fire<br>" var ShadowDmgArray = []; var ShadowMatch = response.matchAll(/onmouseover="popup\(event,.*\+(.*) shadow/g); for (const ShadowMatchLoop of ShadowMatch) { let ShadowObj = [parseInt(ShadowMatchLoop[1].replace(",",""))]; for (const ShadowDmg of ShadowObj) { ShadowDmgArray.push(ShadowDmg);}} var ShadowNumbers = ShadowDmgArray.map(Number) var ShadowDmgCheck = ''; if (ShadowNumbers != "") ShadowDmgCheck = ShadowNumbers if (ShadowNumbers == "") ShadowDmgCheck = [0] var SumOfShadow = ShadowDmgCheck.reduce(reducer).toLocaleString("en-US"); var printShadow = "<font color=#9f02d3><b>+"+SumOfShadow+" shadow<br>" var HolyDmgArray = []; var HolyMatch = response.matchAll(/onmouseover="popup\(event,.*\+(.*) holy/g); for (const HolyMatchLoop of HolyMatch) { let HolyObj = [parseInt(HolyMatchLoop[1].replace(",",""))]; for (const HolyDmg of HolyObj) { HolyDmgArray.push(HolyDmg);}} var HolyNumbers = HolyDmgArray.map(Number) var HolyDmgCheck = ''; if (HolyNumbers != "") HolyDmgCheck = HolyNumbers if (HolyNumbers == "") HolyDmgCheck = [0] var SumOfHoly = HolyDmgCheck.reduce(reducer).toLocaleString("en-US"); var printHoly = "<font color=#00FFFF><b>+"+SumOfHoly+" holy<br>" var ArcaneDmgArray = []; var ArcaneMatch = response.matchAll(/onmouseover="popup\(event,.*\+(.*) arcane/g); for (const ArcaneMatchLoop of ArcaneMatch) { let ArcaneObj = [parseInt(ArcaneMatchLoop[1].replace(",",""))]; for (const ArcaneDmg of ArcaneObj) { ArcaneDmgArray.push(ArcaneDmg);}} var ArcaneNumbers = ArcaneDmgArray.map(Number) var ArcaneDmgCheck = ''; if (ArcaneNumbers != "") ArcaneDmgCheck = ArcaneNumbers if (ArcaneNumbers == "") ArcaneDmgCheck = [0] var SumOfArcane = ArcaneDmgCheck.reduce(reducer).toLocaleString("en-US"); var printArcane = "<font color=#FFFF00><b>+"+SumOfArcane+" arcane<br>" var KineticDmgArray = []; var KineticMatch = response.matchAll(/onmouseover="popup\(event,.*\+(.*) kinetic/g); for (const KineticMatchLoop of KineticMatch) { let KineticObj = [parseInt(KineticMatchLoop[1].replace(",",""))]; for (const KineticDmg of KineticObj) { KineticDmgArray.push(KineticDmg);}} var KineticNumbers = KineticDmgArray.map(Number) var KineticDmgCheck = ''; if (KineticNumbers != "") KineticDmgCheck = KineticNumbers if (KineticNumbers == "") KineticDmgCheck = [0] var SumOfKinetic = KineticDmgCheck.reduce(reducer).toLocaleString("en-US"); var printKinetic = "<font color=#00FF00><b>+"+SumOfKinetic+" kinetic<br>" var VileDmgArray = []; var VileMatch = response.matchAll(/onmouseover="popup\(event,.*\+(.*) vile/g); for (const VileMatchLoop of VileMatch) { let VileObj = [parseInt(VileMatchLoop[1].replace(",",""))]; for (const VileDmg of VileObj) { VileDmgArray.push(VileDmg);}} var VileNumbers = VileDmgArray.map(Number) var VileDmgCheck = ''; if (VileNumbers != "") VileDmgCheck = VileNumbers if (VileNumbers == "") VileDmgCheck = [0] var SumOfVile = VileDmgCheck.reduce(reducer).toLocaleString("en-US"); var printVile = "<font color=#cccccc><b>+"+SumOfVile+" vile energy<br>" var ChaosDmgArray = []; var ChaosMatch = response.matchAll(/onmouseover="popup\(event,.*\+(.*) chaos/g); for (const ChaosMatchLoop of ChaosMatch) { let ChaosObj = [parseInt(ChaosMatchLoop[1].replace(",",""))]; for (const ChaosDmg of ChaosObj) { ChaosDmgArray.push(ChaosDmg);}} var ChaosNumbers = ChaosDmgArray.map(Number) var ChaosDmgCheck = ''; if (ChaosNumbers != "") ChaosDmgCheck = ChaosNumbers if (ChaosNumbers == "") ChaosDmgCheck = [0] var SumOfChaos = ChaosDmgCheck.reduce(reducer).toLocaleString("en-US"); var printChaos = "<font color=#f441be><b>+"+SumOfChaos+" chaos" var totdead11 = ''; if (dead11 != null) totdead11 = (dead11.length).toFixed(0) if (dead11 == null) totdead11 += "0" var shieldrate11 = ''; if (shields11 != null) shieldrate11 = (shields11.length/attacks11*100).toFixed(1) if (shields11 == null) shieldrate11 += "0.0" var sin11 = ''; if (sincheck11[1] != "0") sin11 += "No" if (sincheck11[1] == "0") sin11 += "Yes" var blockrate11 = ''; if (blocks11 != null) blockrate11 += (blocks11.length/attacks11*100).toFixed(1) if (blocks11 == null) blockrate11 += "0.0" var eleblockrate11 = ''; if (eleblocks11 != null) eleblockrate11 = (eleblocks11.length/attacks11*100).toFixed(1) if (eleblocks11 == null) eleblockrate11 += "0.0" let td112 = document.createElement('td'); td112.innerHTML = chars11+" (<span>🕱</span>"+totdead11+")"; insertAfter2(td112, row11.lastElementChild); var damage11 = printDmg11[1]; let td11 = document.createElement('td'); td11.innerHTML = `<span class="dmgbox-text" onmouseover="popup(event,'</center>`+printBase+printFire+printShadow+printHoly+printArcane+printKinetic+printVile+printChaos+`');" onmouseout="kill();">`+damage11; insertAfter2(td11, row11.lastElementChild); var cells11 = row11.getElementsByTagName("td"); let td12 = document.createElement('td'); var td12comma = Math.floor(printDmg11[1].replace(/,/g, '')/cells11[2].innerText); td12.textContent = td12comma.toLocaleString("en-US"); insertAfter2(td12, row11.lastElementChild); let td61 = document.createElement('td'); td61.innerHTML = blockrate11+"%"; insertAfter2(td61, row11.lastElementChild); let td71 = document.createElement('td'); td71.innerHTML = eleblockrate11+"%"; insertAfter2(td71, row11.lastElementChild); let td111 = document.createElement('td'); td111.innerHTML = shieldrate11+"%"; insertAfter2(td111, row11.lastElementChild); let td13 = document.createElement('td'); td13.innerHTML = attacks11; insertAfter2(td13, row11.lastElementChild); let td91 = document.createElement('td'); td91.innerHTML = rounds11; insertAfter2(td91, row11.lastElementChild); let td101 = document.createElement('td'); td101.innerHTML = sin11; insertAfter2(td101, row11.lastElementChild); let td51 = document.createElement('td'); td51.innerHTML = health11; insertAfter2(td51, row11.lastElementChild); let td41 = document.createElement('td'); td41.innerHTML = drops11.replaceAll(/Amulet Chest \(.*\),/g,"").replaceAll(/,/g,"<br>"); insertAfter2(td41, row11.lastElementChild); });}})}} // world function doc_keyUp(e) { if (e.key === '1') { document.querySelector("#roomDetails > ul > li:nth-child(1) > div > div.ml-3.d-block.align-self-center > a > img").click();} if (e.key === '2') { document.querySelector("#roomDetails > ul > li:nth-child(2) > div > div.ml-3.d-block.align-self-center > a > img").click();} if (e.key === '3') { document.querySelector("#roomDetails > ul > li:nth-child(3) > div > div.ml-3.d-block.align-self-center > a > img").click();} if (e.key === '4') { document.querySelector("#roomDetails > ul > li:nth-child(4) > div > div.ml-3.d-block.align-self-center > a > img").click();} if (e.key === '5') { document.querySelector("#roomDetails > ul > li:nth-child(5) > div > div.ml-3.d-block.align-self-center > a > img").click();} if (e.key === '6') { document.querySelector("#roomDetails > ul > li:nth-child(6) > div > div.ml-3.d-block.align-self-center > a > img").click();} if (e.key === '7') { document.querySelector("#roomDetails > ul > li:nth-child(7) > div > div.ml-3.d-block.align-self-center > a > img").click();} if (e.key === '8') { document.querySelector("#roomDetails > ul > li:nth-child(8) > div > div.ml-3.d-block.align-self-center > a > img").click();} if (e.key === '9') { document.querySelector("#roomDetails > ul > li:nth-child(9) > div > div.ml-3.d-block.align-self-center > a > img").click();}} document.addEventListener('keyup', doc_keyUp, false); if ( document.URL.indexOf("world") != -1 ) { let observer = new MutationObserver(mutationRecords => { attackframe() }); observer.observe(roomid_display, { childList: true, subtree: true, characterDataOldValue: true }); function attackframe(){ $('a[target="_blank"]').prop("target", "attack"); };} if (document.URL.indexOf("plrattack") != -1 ) { $("#sidebar").hide() $("body > center > div.sub-header-container").hide() $("body > center > div.header-container.fixed-top").hide() $("#ranks-filters > form > div").hide() GM_addStyle ( ` #container{background:#0B0B0B !important;} #content > div.layout-px-spacing{margin-top: -50px !important;background:#0B0B0B !important;} .mr-3, .mx-3 {margin-right: 0rem!important;} #content-header-row > center{zoom: 90% !important;} ` );} if ( document.URL.indexOf("world") != -1 ) { var theImage8; 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") theImage8.innerHTML = '<div id="attack"><iframe src="" name="attack" id="attack" style="border:0px #ffffff none;" scrolling="no" frameborder="0" height="1px" width="750px"></iframe></div>'} if ( document.URL.indexOf("world") != -1 ) { document.querySelector("#roomDetails").onclick = function() {$("iframe").height(450)}} if ( document.URL.indexOf("world") != -1 ) { GM_addStyle ( ` #roomDetails > ul > li > div > div.mr-3 > img {display:none !important;} #ranks > li > div > div.mr-3 > div > div.rank-row-image > a{width: 0px !important;} #ranks > li > div > div.media-body{text-align: left !important;} .mr-3, .mx-3 {margin-right: 0rem!important;} #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;} .spawnRow{padding-top:0px !important;padding-bottom:0px !important;} #roomDetails > ul > li { display: block !important; list-style-type: disc !important; margin-block-start: 0em !important; margin-block-end: 0em !important; margin-inline-start: 0px !important; margin-inline-end: 0px !important; padding-inline-start: 0px !important; } ` );} if ( document.URL.indexOf("plrattack") != -1 ) { GM_addStyle ( `#result_notice_window { zoom: 225% !important; top: -0px !important; ; left: 15px !important; top: -17px !important; }` );} // redefined if ( document.URL.indexOf("scratch_ticket") != -1 ) { var theImage2; theImage2 = document.querySelector("#content > div.layout-px-spacing") theImage2.innerHTML = '<div id="contentframe" style="position:fixed; top: 100px; left: -65px;">' + '<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>' + '</div>'} // sess id var byptlink = document.querySelector("#accordionExample > a"); var sessid = byptlink.href.replace(/https:\/\/rampidgaming.outwar.com\/stripe_buy\?game=ow&outwar=0&wsrv=\$subDomain&lvl=\$user\[level]&rg_sess_id=/, ' '); var bypplink = document.querySelector("#components > li:nth-child(12) > a") // custom side menu var theImage; theImage = document.querySelector("#sidebar"); theImage.innerHTML = '<div class="sidebar-wrapper sidebar-theme">'+ '<nav id="sidebar">'+ '<div class="shadow-bottom"></div>'+ '<ul class="list-unstyled menu-categories ps" id="accordionExample">'+ '<li class="menu">'+ '<a href="/home" class="dropdown-toggle">'+ '<div class="">'+ '<i class="fa fa-home"></i>'+ '<span> HOME</span>'+ '</div>'+ '</a>'+ '</li>'+ '<li class="menu">'+ '<a href="#components" data-toggle="collapse" aria-expanded="false" class="dropdown-toggle">'+ '<div class="">'+ '<i class="fas fa-user fa-fw"></i>'+ '<span> CHARACTER</span>'+ '</div>'+ '<div>'+ '<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>'+ '</div>'+ '</a>'+ '<ul class="collapse submenu list-unstyled" id="components" data-parent="#accordionExample">'+ '<li><a href="/profile"> PROFILE</a></li>'+ '<li><a href="/ow_messagecenter"> MESSAGE CENTER</a></li>'+ '<li><a href="/cast_skills"> SKILLS</a></li>'+ '<li><a href="/allies"> MY ALLIES</a></li>'+ '<li><a href="/underlings"> UNDERLINGS</a></li>'+ '<li><a href="/user_preferences"> PREFERENCES</a></li>'+ '</ul>'+ '</li>'+ '<li class="menu">'+ '<a href="#server" data-toggle="collapse" aria-expanded="false" class="dropdown-toggle">'+ '<div class="">'+ '<i class="fas fa-server fa-fw"></i>'+ '<span> SERVER</span>'+ '</div>'+ '<div>'+ '<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>'+ '</div>'+ '</a>'+ '<ul class="collapse submenu list-unstyled" id="server" data-parent="#accordionExample">'+ '<li><a href="/attack_search"> SEARCH</a></li>'+ '<li><a href="/newrankings"> RANKINGS</a></li>'+ '<li><a href="/gladiator"> GLADIATORS</a></li>'+ '<li><a href="/event?eventid=woz"> WAR OF ZHUL</a></li>'+ '<li><a href="/event?eventid=top"> TRIAL OF POWER</a></li>'+ '<li><a href="/kotw"> KOTW</a></li>'+ '<li><a href="/news"> NEWS</a></li>'+ '</ul>'+ '</li>'+ '<li class="menu">'+ '<a href="#elements" data-toggle="collapse" aria-expanded="false" class="dropdown-toggle">'+ '<div class="">'+ '<i class="fa fa-shopping-cart fa-fw"></i>'+ '<span> ECONOMY</span>'+ '</div>'+ '<div>'+ '<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>'+ '</div>'+ '</a>'+ '<ul class="collapse submenu list-unstyled" id="elements" data-parent="#accordionExample">'+ '<li><a href="/treasury?type=-1"> BUY ITEMS</a></li>'+ '<li><a href="/mytreasury"> SELL ITEMS</a></li>'+ '<li><a href="/supplies"> SUPPLIES</a></li>'+ '<li><a href="/pointtransfer"> TRANSFER PNTS</a></li>'+ '<li><a href="' + bypplink.href +'">PREFERRED PLAYER</a></li>'+ '<li><a href="/metamask"> METAMASK NFT</a></li>'+ '</ul>'+ '</li>'+ '<li class="menu">'+ '<a href="#forms" data-toggle="collapse" aria-expanded="false" class="dropdown-toggle">'+ '<div class="">'+ '<i class="fas fa-shield fa-fw"></i>'+ '<span> CREW</span>'+ '</div>'+ '<div>'+ '<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>'+ '</div>'+ '</a>'+ '<ul class="collapse submenu list-unstyled" id="forms" data-parent="#accordionExample">'+ '<li><a href="/crew_home"> CREW HOME</a></li>'+ '<li><a href="/crew_profile"> CREW PROFILE</a></li>'+ '<li><a href="/crew_bossspawns"> RAID BOSSES</a></li>'+ '<li><a href="/crew_vault"> CREW VAULT</a></li>'+ '<li><a href="/godstatus"> GOD STATUS</a></li>'+ '<li><a href="/crewinvites"> CREW INVITES</a></li>'+ '<li><a href="/crew_leavecrew"> LEAVE CREW</a></li>'+ '</ul>'+ '</li>'+ '<li class="menu">'+ '<a href="#pvp" data-toggle="collapse" aria-expanded="false" class="dropdown-toggle">'+ '<div class="">'+ '<i class="fas fa-shield-alt fa-fw"></i>'+ '<span> PVP</span>'+ '</div>'+ '<div>'+ '<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>'+ '</div>'+ '</a>'+ '<ul class="collapse submenu list-unstyled" id="pvp" data-parent="#accordionExample">'+ '<li><a href="/attacklog"> ATTACK LOG</a></li>'+ '<li><a href="/pvptourney"> OPEN TOURNEY</a></li>'+ '<li><a href="/closedpvp"> PVP BRAWL</a></li>'+ '<li><a href="/bounty"> BOUNTY BOARD</a></li>'+ '<li><a href="/crew_hitlist"> HITLIST</a></li>'+ '</ul>'+ '</li>'+ '<li class="menu">'+ '<a href="#datatables" data-toggle="collapse" aria-expanded="false" class="dropdown-toggle">'+ '<div class="">'+ '<i class="fas fa-shopping-bag fa-fw"></i>'+ '<span> ITEMS</span>'+ '</div>'+ '<div>'+ '<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>'+ '</div>'+ '</a>'+ '<ul class="collapse submenu list-unstyled" id="datatables" data-parent="#accordionExample">'+ '<li><a href="/vault"> VAULT</a></li>'+ '<li><a href="/blacksmith"> BLACKSMITH</a></li>'+ '<li><a href="/augmentequip"> ADD AUGMENTS</a></li>'+ '<li><a href="/itemtransfer"> ITEM TRANSFER</a></li>'+ '<li><a href="/cauldron"> CAULDRON</a></li>'+ '<li><a href="/challenge"> CHALLENGE SETS</a></li>'+ '</ul>'+ '</li>'+ '<li class="menu">'+ '<a href="#resources" data-toggle="collapse" aria-expanded="false" class="dropdown-toggle">'+ '<div class="">'+ '<i class="fas fa-book fa-fw"></i>'+ '<span> QUESTS</span>'+ '</div>'+ '<div>'+ '<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>'+ '</div>'+ '</a>'+ '<ul class="collapse submenu list-unstyled" id="resources" data-parent="#accordionExample">'+ '<li><a href="/scratch_ticket"> REDEFINED</a></li>'+ '<li><a href="/weeklyquests"> BOOSTERS</a></li>'+ '<li><a href="/questlog"> QUEST LOG</a></li>'+ '<li><a href="/dungeons"> DUNGEONS</a></li>'+ '<li><a href="/collections"> COLLECTIONS</a></li>'+ '<li><a href="/challenge"> CHALLENGES</a></li>'+ '</ul>'+ '</li>'+ '<li class="menu">'+ '<a href="#rga" data-toggle="collapse" aria-expanded="false" class="dropdown-toggle">'+ '<div class="">'+ '<i class="fa fa-address-card"></i>'+ '<span> RGA</span>'+ '</div>'+ '<div>'+ '<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>'+ '</div>'+ '</a>'+ '<ul class="collapse submenu list-unstyled" id="rga" data-parent="#accordionExample">'+ '<input type="text" value='+sessid+' maxlength="18" size="18" id="sessidbox">'+ '<li><a href="/earnfreepoints"> MOXXI VISION</a></li>'+ '<li><a href="/myaccount.php?ac_serverid=2"> TORAX CHARS</a></li>'+ '<li><a href="/myaccount.php?ac_serverid=1"> SIGIL CHARS</a></li>'+ '<li><a href="/accountinfo.php"> ACCOUNT</a></li>'+ '<li><A href="/editcharacters.php?page=3"> TRUSTEES</a></li>'+ '<li><a href="/support.php"> OW SUPPORT</a></li>'+ '<li><a href="?cmd=logout"> LOGOUT</a></li>'+ '</ul>'+ '</li>'+ '<li class="menu">'+ '<a href="/world" class="dropdown-toggle">'+ '<div class="">'+ '<i class="fas fa-globe fa-fw"></i>'+ '<span> WORLD</span>'+ '</div>'+ '</a>'+ '</li>' + '<p><br>' + '<div class=search>' + '<form method="post" action="playersearch.php" target="_parent">' + '<div class="col-12 px-2">' + '<input id="t-text" type="text" name="search" placeholder="player search" class="form-control" required="">' + '</div>' + '</form>' + '</div>' + '<div class="row mt-4">' + '</div>'+ '<form method="post" action="crewsearch.php" target="_parent">' + '<div class="col-12 px-2">' + '<input id="t-text" type="text" name="search" placeholder="crew search" class="form-control" required="">' + '</div>' + '</form>' + '<p><br><a href=/crew_apply>MoxxiMod v4.9</a>' + '</div>' + '<div class="row mt-4">' + '</div></div>' + '</p></div>' var servername = window.location.hostname.split(".")[0]; setTimeout(function() { $("span:contains('SERVER')").text(servername); }, 10); // currency toolbar GM_xmlhttpRequest ( { method: 'GET', url: 'https://torax.outwar.com/ajax/backpackcontents.php?tab=quest', onload: function (responseDetails) { const ammyID = /Amulet of Achievement" data-itemqty="([0-9]*)"/g; const ammyRes = ammyID.exec(responseDetails.responseText); const badgeID = /Badge Reputation" data-itemqty="([0-9]*)"/g; const badgeRes = badgeID.exec(responseDetails.responseText); fetch('ajax/challenge_status.php') .then(response => response.text()) .then((response) => { var claimed = response.match(/tokens":"(.*)","p_tokens"/i) var freeTok = ''; if (claimed[1] < 30) freeTok = claimed[1] if (claimed[1] > 29) freeTok = "<font color=#ff0000>"+claimed[1]+"</font>" var ammyPrint = ''; if (ammyRes != null) ammyPrint = ammyRes[1] if (ammyRes == null) ammyPrint = "0" var badgePrint = ''; if (badgeRes != null) badgePrint = badgeRes[1] if (badgeRes == null) badgePrint ="0" var ammyCnt = ammyPrint var ammy = ammyCnt; var badgeCnt = badgePrint var badge = ''; if (badgeCnt < 15) badge = badgeCnt if (badgeCnt > 14) badge = '<font color=#00CC00>'+badgeCnt+'</font>' var goldPrint = document.body.innerHTML.match(/<tr><td><b>Gold:<\/b><\/td><td>(.*)<\/td><\/tr>/i); var pbPrint = document.body.innerHTML.match(/<tr><td><b>Points:<\/b><\/td><td><font size=2 color=#00FF00>(.*)<\/font><\/td><\/tr>/i); var prPrint = document.body.innerHTML.match(/<tr><td><b>Premium:<\/b><\/td><td><font size=2 color=#00FF00>(.*)\.<\/font>/i); var tkPrint = document.body.innerHTML.match(/<tr><td><b>Tokens:<\/b><\/td><td><font size=2 color=#00FF00>(.*)<\/font>/i); var skPrint = document.body.innerHTML.match(/<tr><td><b>Skill:<\/b><\/td><td>(.*)<\/td><\/tr>/i); const theImage = document.querySelector("body > center > div.sub-header-container > header > ul.navbar-nav.flex-row.mr-auto.toolbar-nav > li:nth-child(4)"); theImage.innerHTML = `<div class="dropdown"><a href="`+byptlink.href+`" onmouseover="statspopup(event,'<table><tr><td><b>Points:</b></td><td>`+pbPrint[1]+`</td></tr><tr><td><b>Premium:</b></td><td>`+prPrint[1]+`</td></tr><tr><td><b>Free Tokens:</b></td><td>`+freeTok+`</td></tr><tr><td><b>Prem Tokens:</b></td><td>`+(tkPrint[1]-claimed[1])+`</td></tr><tr><td><b>Skill Points:</b></td><td>`+skPrint[1]+`</td></tr><tr><td><b>Badge Reps:</b></td><td>`+badge+`</td></tr><tr><td><b>Amulets:</b></td><td>`+ammy+`</td></tr><tr><td><b>Gold:</b></td><td>`+goldPrint[1]+`</td></tr></table><p><font color=#FFF000><center>click to buy points')" onmouseout="kill()"><button class="dropbtn"><font size=1>$$$</button></a></div>` } )}} ); function insertAfter2(newNode, existingNode) { existingNode.parentNode.insertBefore(newNode, existingNode.nextSibling); } let menu = document.querySelector("body > center > div.sub-header-container > header > ul.navbar-nav.flex-row.mr-auto.toolbar-nav"); let li = document.createElement('li'); li.textContent = ''; insertAfter2(li, menu.children[2]); // moxximod page if ( document.URL.indexOf("crew_apply") != -1 ) { var theImage11; theImage11 = document.querySelector("#content") theImage11.innerHTML = '<div id=moxxi_mod_page>' + '<img src=https://studiomoxxi.com/ow_themes/custom_jobs/classic_01/mm_logo.png width=50% padding=20px><p>' + '<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>' + 'MoxxiMod is a userscript written to improve the gaming user interface and player experience<p>' + 'The code is a combination of CSS (cascading style sheets) and JS (javascript)<p>' + '<b>MoxxiMod is 100% free</b><p>' + 'If you want to support, please send points to <font color=A30020>Moxxi</font><p>' + 'For help with setup or to report a bug, join our Discord server<p>' + '<a href=https://studiomoxxi.com/moxximod/ target=_blank>Click Here</a> for the latest scripts</div>' + '<div id=moxxi_mod_tys>' + '<p>BIG THANK YOU FOR THE TECHNICAL DEV SUPPORT<p>Beast666007, Bello, CarminT' + '<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'+ '</div>' } // toolbar skills GM_xmlhttpRequest ( { method: 'GET', url: 'https://torax.outwar.com/profile', onload: function (responseDetails) { const skill0 = /<img align="absmiddle" border="0" src="\/images\/skills\/skill_2952\.gif".*/i; const lingloy = skill0.exec(responseDetails.responseText); const skill1 = /<img align="absmiddle" border="0" src="\/images\/skills\/circumspect\.png".*/i; const circ = skill1.exec(responseDetails.responseText); const skill2 = /<img align="absmiddle" border="0" src="\/images\/skills\/markdown\.png".*/i; const markdown = skill2.exec(responseDetails.responseText); const skill3 = /<img align="absmiddle" border="0" src="\/images\/skills\/hitman\.png".*/i; const hitman = skill3.exec(responseDetails.responseText); const skill4 = /<img align="absmiddle" border="0" src="\/images\/skills\/haste\.png".*/i; const haste = skill4.exec(responseDetails.responseText); const skill5 = /<img align="absmiddle" border="0" src="\/images\/skills\/streetsmarts\.png".*/i; const street = skill5.exec(responseDetails.responseText); const skill6 = /<img align="absmiddle" border="0" src="\/images\/skills\/onguard\.png".*/i; const onguard = skill6.exec(responseDetails.responseText); const skill7 = /<img align="absmiddle" border="0" src="\/images\/skills\/\.\.\/items\/itemz80\.gif".*/i; const questexp = skill7.exec(responseDetails.responseText); const skill8 = /<img align="absmiddle" border="0" src="\/images\/skills\/killingspree\.png".*/i; const spree = skill8.exec(responseDetails.responseText); const skill9 = /<img align="absmiddle" border="0" src="\/images\/skills\/masterferoskill\.png".*/i; const masterF = skill9.exec(responseDetails.responseText); const skil20 = /<img align="absmiddle" border="0" src="\/images\/skills\/masterpresskill\.png".*/i; const masterP = skil20.exec(responseDetails.responseText); const skil21 = /<img align="absmiddle" border="0" src="\/images\/skills\/masteraffskill\.png".*/i; const masterA = skil21.exec(responseDetails.responseText); const skil22 = /<img align="absmiddle" border="0" src="\/images\/skills\/\.\.\/items\/itemz82\.jpg".*/i; const chaosMaj = skil22.exec(responseDetails.responseText); const skil23 = /<img align="absmiddle" border="0" src="\/images\/skills\/\.\.\/items\/itemz91\.jpg".*/i; const chaosMin = skil23.exec(responseDetails.responseText); const skil24 = /<img align="absmiddle" border="0" src="\/images\/items\/itemz28\.jpg".*/i; const endFlask = skil24.exec(responseDetails.responseText); const skil25 = /<img align="absmiddle" border="0" src="\/images\/skills\/blessingfromabove\.png".*/i; const bfa = skil25.exec(responseDetails.responseText); var skills = ''; if (lingloy != null) skills += lingloy+'<br>'; if (circ != null) skills += circ+'<br>'; if (markdown != null) skills += markdown+'<br>'; if (hitman != null) skills += hitman+'<br>'; if (haste != null) skills += haste+'<br>'; if (street != null) skills += street+'<br>'; if (onguard != null) skills += onguard+'<br>'; if (questexp != null) skills += questexp+'<br>'; if (spree != null) skills += spree+'<br>'; if (masterF != null) skills += masterF+'<br>'; if (masterP != null) skills += masterP+'<br>'; if (masterA != null) skills += masterA+'<br>'; if (chaosMin != null) skills += chaosMin+'<br>'; if (chaosMaj != null) skills += chaosMaj+'<br>'; if (bfa != null) skills += bfa+'<br>'; if (endFlask != null) skills += endFlask+'<br>'; if (skills == "") skills += "void" // skills tooltab if (skills != "void"){ $("body").append ( ` <div id="rightbar"> <center> <a href=cast_skills>SKILLS</a><p> `+skills+` </div> ` );} // recent raid tooltab if (document.location.href.indexOf('characters') === -1){ fetch('/profile') .then(response => response.text()) .then((response) => {var myCrewID = response.match(/<a href="\/crew_profile\?id=.*">/).toString().replace(/<a href="\/crew_profile\?id=/,"").replace(/">/,"") var raidLink ='/crew_raidresults.php?all_results=Display+all+raid+results&crewid='+myCrewID fetch(raidLink) .then(response => response.text()) .then((response) => { var myLastRaid = ''; if (response.match(/<a href="raidattack\.php\?raidid=.*">View<\/a>/) != null) myLastRaid = response.match(/<a href="raidattack\.php\?raidid=.*">View<\/a>/).toString().replace(/<a href="/,"/").replace(/">View<\/a>/,"") if (response.match(/<a href="raidattack\.php\?raidid=.*">View<\/a>/) == null) myLastRaid = "void" if (myLastRaid != "void"){ fetch(myLastRaid) .then(response => response.text()) .then((response) => { var raidMob = response.match(/<h4 class="text-center d-flex align-items-center justify-content-center">(.*)<\/h4>.*[\n\r].*[\n\r].*<div class="defenderimage skinborder d-flex justify-content-center align-items-center mb-3">.*[\n\r](.*)/i) var crewName = response.match(/.*<b>(.*) has (.*)!<\/b>/i) var raidLootx = response.match(/onmouseover="popup\(event,'<b>(.*)<\/b>/i) var raidLoot = ''; if (response.match(/onmouseover="popup\(event,'<b>(.*)<\/b>/i) != null) raidLoot = response.match(/onmouseover="popup\(event,'<b>(.*)<\/b>/i) if (response.match(/onmouseover="popup\(event,'<b>(.*)<\/b>/i) == null) raidLoot = "void" var raidLoot2 = ''; if (raidLoot != "void") raidLoot2 = raidLoot[1].toString().replace(/<\/b>'\)" onmouseout="kill\(\)">.*/i,"").replaceAll(/<br>/g,", ") if (raidLoot == "void") raidLoot2 = "Nothing" var raidResult = ''; if (crewName[2] == "lost") raidResult = "<font color=#FF0000>lost</font> to" if (crewName[2] == "won") raidResult = "<font color=#00FF00>defeated</font>" $("body").append ( ` <div id="recentraid"> <center> <a href=`+raidLink+`>RAIDS</a><p> <a href=`+myLastRaid+` onmouseover="popup(event,'<b>`+crewName[1]+`</b> `+raidResult+` `+raidMob[1]+`<br><b>Found:</b> `+raidLoot2+`<br><font color=#FFFF00>(click to view the raid)</a>')" onmouseout="kill()">`+raidMob[2]+` </div> ` ); })}})})}}}) // extra if (document.URL.indexOf("726169") != -1 ) { GM_addStyle ( ` #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;}` ); }; // server switch link var server = window.location.href; var server2 = server.replace(/\.outwar\.com.*/, ''); var server3 = server2.replace(/http.*:\/\//, ''); GM_xmlhttpRequest ( { method: 'GET', url: 'https://torax.outwar.com/myaccount.php?ac_serverid=2', onload: function (responseDetails) { const toraxGet = /https:\/\/torax\.outwar\.com\/world\?suid=[0-9]+&serverid=2/i; const toraxGetPrint = toraxGet.exec(responseDetails.responseText); GM_xmlhttpRequest ( { method: 'GET', url: 'https://torax.outwar.com/myaccount.php?ac_serverid=1', onload: function (responseDetails) { const sigilGet = /https:\/\/sigil\.outwar\.com\/world\?suid=[0-9]+&serverid=1/i; const sigilGetPrint = sigilGet.exec(responseDetails.responseText); var torax = "torax"; var sigil = "sigil"; var servSwitch = ''; if (server3 != torax) servSwitch += toraxGetPrint+"#"; if (server3 != sigil) servSwitch += sigilGetPrint+"#"; let serverGo1 = servSwitch.replace("null", ""); let serverGo2 = serverGo1.replace("world", "home"); var otherServ = ''; if (server3 != torax) otherServ = torax; if (server3 != sigil) otherServ = sigil; // toolbar supplies notification GM_xmlhttpRequest ( { method: 'GET', url: 'https://outwar.com/supplies', onload: function (responseDetails) { const supplies = /<img border="0" src="images\/suppliestriangle\.gif" width="11" height="11">[\n\r](.*)%<\/td>/i; const suppliesPrint = supplies.exec(responseDetails.responseText); let result; if (suppliesPrint[1] < 100) { result = 'positive'; } else { result = null; } var suppliesPOP = ''; if (result != null) 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>`; // toolbar strength notification GM_xmlhttpRequest ( { method: 'GET', url: 'https://outwar.com/profile', onload: function (responseDetails) { const strength = /event,'Strength: ([0-9]+)'/i; const strengthPrint = strength.exec(responseDetails.responseText); let resultStr; if (strengthPrint[1] < 100) { resultStr = 'positive'; } else { resultStr = null; } var strengthtb = ''; if (resultStr != null) 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()">`; // toolbar gladiator notification fetch('/gladiator?mobid=4391') .then(response => response.text()) .then((response) => { var vorkCheck = response.match(/Will retreat in/i); var vork = ''; if (vorkCheck != null) 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><font color=#FFF000>(click to view)')" onmouseout="kill()"></a>`; fetch('/gladiator?mobid=3991') .then(response => response.text()) .then((response) => { var zerxCheck = response.match(/Will retreat in/i); var zerx = ''; if (zerxCheck != null) 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)')" onmouseout="kill()"></a>`; // toolbar brawl notification GM_xmlhttpRequest ( { method: 'GET', url: 'https://outwar.com/closedpvp', onload: function (responseDetails) { const brawlCheck = /images\/atk_player_icon\.jpg/i; const brawlPrint = brawlCheck.exec(responseDetails.responseText); var brawl = ''; if (brawlPrint != null) brawl += `<a href=/closedpvp><img src=https://images.emojiterra.com/google/android-pie/512px/1f94a.png width=25px height=25px onmouseover="popup(event,'<b>PVP Brawl is Active</b><br><font color=#FFF000>(Click to view)')" onmouseout="kill()"></a>`; // toolbar boss notification fetch('/crew_bossspawns') .then(response => response.text()) .then((response) => { const cosmos = response.match(/images\/CosmosGreatAllBeing\.jpg/i); const death = response.match(/images\/DeathReaperOfSouls\.jpg/i); const maekrix = response.match(/images\/MaekrixDreadedStriker\.jpg/i); const blackhand = response.match(/images\/BlackhandReborn\.png/i); const zyrak = response.match(/images\/velserverboss\.jpg/i); const cosmosh = response.match(/Cosmos, Great All Being.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*p class="card-user_occupation"> (.*)/i); const deathh = response.match(/Death, Reaper of Souls.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*p class="card-user_occupation"> (.*)/i); const maekrixh = response.match(/Maekrix, Dreaded Striker.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*p class="card-user_occupation"> (.*)/i); const blackhandh = response.match(/Blackhand Reborn.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*p class="card-user_occupation"> (.*)/i); const zyrakh = response.match(/Zyrak, Vision of Madness.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*p class="card-user_occupation"> (.*)/i); const cosmoss = response.match(/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); const deaths = response.match(/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); const maekrixs = response.match(/Maekrix, Dreaded Striker.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*(<a href="boss_stats\.php\?spawnid=[0-9]+">)\(stats\)<\/a>/i); const blackhands = response.match(/Blackhand Reborn.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*(<a href="boss_stats\.php\?spawnid=[0-9]+">)\(stats\)<\/a>/i); const zyraks = response.match(/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); var boss = ''; if (cosmos != null) 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>`; if (death != null) 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>`; if (maekrix != null) 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>`; if (blackhand != null) 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>`; if (zyrak != null) 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>`; // toolbar god notification fetch('/raidtools') .then(response => response.text()) .then((response) => { const god1imgPRINT = response.match(/onclick="sendTeleportRequest.*(images.*)" border.*/i); const god1txtPRINT = response.match(/onclick="sendTeleportRequest.*[\n\r].*Teleport to (.*)<\/font>/i); const god2imgPRINT = response.match(/onclick="sendTeleportRequest.*[\n\r].*[\n\r].*(images.*)" border.*/i); const god2txtPRINT = response.match(/onclick="sendTeleportRequest.*[\n\r].*[\n\r].*[\n\r].*Teleport to (.*)<\/font>/i); const god3imgPRINT = response.match(/onclick="sendTeleportRequest.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*(images.*)" border.*/i); const god3txtPRINT = response.match(/onclick="sendTeleportRequest.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*Teleport to (.*)<\/font>/i); const god4imgPRINT = response.match(/onclick="sendTeleportRequest.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*(images.*)" border.*/i); const god4txtPRINT = response.match(/onclick="sendTeleportRequest.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*Teleport to (.*)<\/font>/i); const god5imgPRINT = response.match(/onclick="sendTeleportRequest.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*(images.*)" border.*/i); const god5txtPRINT = response.match(/onclick="sendTeleportRequest.*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*[\n\r].*Teleport to (.*)<\/font>/i); const god6imgPRINT = response.match(/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); const god6txtPRINT = response.match(/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); const god7imgPRINT = response.match(/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); const god7txtPRINT = response.match(/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); var gods = ''; if (god1imgPRINT != null) gods += `<img src="http://www.outwar.com/`+god1imgPRINT[1]+`" width="25px" height="25px" onmouseover="popup(event,'<b>`+god1txtPRINT[1]+` has spawned!</b>')" onmouseout="kill()">`; if (god2imgPRINT != null) gods += `<img src="http://www.outwar.com/`+god2imgPRINT[1]+`" width="25px" height="25px" onmouseover="popup(event,'<b>`+god2txtPRINT[1]+` has spawned!</b>')" onmouseout="kill()">`; if (god3imgPRINT != null) gods += `<img src="http://www.outwar.com/`+god3imgPRINT[1]+`" width="25px" height="25px" onmouseover="popup(event,'<b>`+god3txtPRINT[1]+` has spawned!</b>')" onmouseout="kill()">`; if (god4imgPRINT != null) gods += `<img src="http://www.outwar.com/`+god4imgPRINT[1]+`" width="25px" height="25px" onmouseover="popup(event,'<b>`+god4txtPRINT[1]+` has spawned!</b>')" onmouseout="kill()">`; if (god5imgPRINT != null) gods += `<img src="http://www.outwar.com/`+god5imgPRINT[1]+`" width="25px" height="25px" onmouseover="popup(event,'<b>`+god5txtPRINT[1]+` has spawned!</b>')" onmouseout="kill()">`; if (god6imgPRINT != null) gods += `<img src="http://www.outwar.com/`+god6imgPRINT[1]+`" width="25px" height="25px" onmouseover="popup(event,'<b>`+god6txtPRINT[1]+` has spawned!</b>')" onmouseout="kill()">`; if (god7imgPRINT != null) gods += `<img src="http://www.outwar.com/`+god7imgPRINT[1]+`" width="25px" height="25px" onmouseover="popup(event,'<b>`+god7txtPRINT[1]+` has spawned!</b>')" onmouseout="kill()">`; // all toolbar 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 = '<table><tr>'+ '<td><div id=toolbar1>toolbar1</div></td>'+ '<td><div id=toolbar2>toolbar2</div></td>'+ '</tr></table>' document.querySelector("#toolbar1").innerHTML = '<table><tr><td>' + `<div class="dropdown"><a href=`+serverGo2+` onmouseover="popup(event,'switch to `+otherServ+`')" onmouseout="kill()"><button class="dropbtn"><font size=1>SERVER</button></a></div>` + '</td><td>'+ '</td><td>'+ '<div class="dropdown">' + '<button class="dropbtn"><font size=1>FAST TRAVEL</button></a>' + '<div class="dropdown-content">' + '<a href="/world.php?room=26137">ASTRAL RIFT</a>' + '<a href="/world.php?room=25989">CHALLENGES</a>' + '<a href="/world.php?room=24284">DEATHBAT GRAVEYARD</a>' + '<a href="/world.php?room=4249">EOB SANDS</a>' + '<a href="/world.php?room=42550">MADNESS VAULT</a>' + '<a href="/world.php?room=23311">MOUNTAIN CAVE</a>' + '<a href="/world.php?room=23471">PRISTINE DEPTHS</a>' + '<a href="/world.php?room=11">ROOM 11</a>' + '<a href="/world.php?room=6640">SCIENTIFIC DISTRICT</a>' + '<a href="/world.php?room=17321">UNDERGROUND Q SEC BASE</a>' + '<a href="/world.php?room=10697">VALLEY OF DEATH</a>' + '<a href="/world.php?room=25994">WARDENS SANCTUARY</a>' + '<a href="/wilderness">WILDERNESS</a>' + '</div>' + '</div>' + '</td></tr></table>' document.querySelector("#toolbar2").innerHTML = '<div id=toolbaralerts>'+ gods+boss+zerx+vork+suppliesPOP+strengthtb+brawl+ '</div>' })})}})})})}})}}); // homepage rankings if ( document.URL.indexOf("outwar.com/home") != -1 ) { function insertBefore(newNode, existingNode) { 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)"); existingNode.parentNode.insertBefore(newNode, sp2); } fetch('/crew_profile') .then(response => response.text()) .then((response) => {var crewName = response.match(/<h4><img src="\/img\/CrewPoints\.png" onmouseover="popup\(event,'.*Crew Points'\);" onmouseout="kill\(\);"> .*<\/h4>/).toString().replace(/<h4><img src="\/img\/CrewPoints\.png" onmouseover="popup\(event,'.* Crew Points'\);" onmouseout="kill\(\);"> /,"").replace(/<\/h4>/,"") 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") var homepageEQ = '<div id="char_rankings"><table><tr>' + '<td>CHAR: POWER<div id="rankings_home"></div></td>' + '<td>CHAR: ELE DMG<div id="rankings_charele"></div></td>' + '<td>CHAR: CHAOS DMG<div id="rankings_charchaos"></div></td>'+ '</tr></table></div>' + '<p><div id="crew_rankings"><table><tr>' + '<td>CREW: POWER<div id="rankings_crewpow"></div></td>' + '<td>CREW: ELE DMG<div id="rankings_crewele"></div></td>' + '<td>CREW: CHAOS DMG<div id="rankings_crewchaos"></div></td>' + '</tr></table></div>' var myName = document.querySelector("#select2-charselectdropdown-container").innerHTML let div = document.createElement('div'); div.innerHTML += homepageEQ; insertBefore(div, menu.children[0]); if ( document.URL.indexOf("outwar.com/home") != -1 ) { GM_xmlhttpRequest ( { method: 'GET', url: 'https://torax.outwar.com/ajax/rankings?type=crew_power', onload: function (responseDetails) { const EQ = /\{.*/i; const EQprint = EQ.exec(responseDetails.responseText); var isLoading = false; function selectCategory(category, title, isCrew) { if(isLoading) return; $('#rank-title').html(title); $('#ranks').hide(); $('#ranks').html(''); $('#last-updated').html(''); isLoading = true; $.getJSON('/ajax/rankings.php?type=' + category, function(data) { var isOdd = true; $.each(data.results, function(key, value) { if(isCrew) { var profileUrl = 'crew_profile?id=' + value.id; } else { var profileUrl = 'characters/' + value.id; } var rowClass = isOdd ? 'rank-row-odd' : 'rank-row-even'; var stat = '0'; if(value.stat ) { stat = value.stat.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") } var html = '<li class="list-group-item list-group-item-action ranksulli">' + '<div class="media">' + '<div class="mr-3">' + '<div class="rank-row top">' + '<table><tr><td width=40px class=homerankings><div class="rank-row-number"><span>' + value.rank + '</span></div></td><td width=215px>' + '<div class="rank-row-image">' + '<a href="' + profileUrl + '">' + '</a>' + '</div></div></div>' + '<div class="media-body">' + '<a href="' + profileUrl + '">' + value.name + '</a></td><td>'+ stat +'</h5></td></tr></table>' + '</div>' + '</li>' var rankSearch1 = document.querySelector("#rankings_home") rankSearch1.innerHTML = rankSearch1.innerHTML.replace(myName,"<div id=myRank>"+myName+"</div>") $('#rankings_home').append(html); isOdd = !isOdd; }); isLoading = false; $('#last-updated').html('<br>Last updated: ' + data.timestamp); $('#ranks').show(); }, "json"); } $( document ).ready(function() { var selO = $('option[value="char_power"]');selectCategory('char_power', selO.html()); $( ".rank-sel2" ).change(function() { if($( this ).val() == '') return; var isCrew = $( this ).attr('iscrew') == '1'; selectCategory($( this ).val(), $(this).find("option:selected").text(), isCrew); }); }); GM_xmlhttpRequest ( { method: 'GET', url: 'https://torax.outwar.com/ajax/rankings?type=char_elepower', onload: function (responseDetails) { const EQ = /\{.*/i; const EQprint = EQ.exec(responseDetails.responseText); var isLoading = false; function selectCategory(category, title, isCrew) { if(isLoading) return; $('#rank-title').html(title); $('#ranks').hide(); $('#ranks').html(''); $('#last-updated').html(''); isLoading = true; $.getJSON('/ajax/rankings.php?type=char_elepower', function(data) { var isOdd = true; $.each(data.results, function(key, value) { if(isCrew) { var imgurl = data.baseimageurl + "/" + value.pic; var profileUrl = 'crew_profile?id=' + value.id; } else { var imgurl = data.baseimageurl + "/uploaded/" + value.pic; var profileUrl = 'characters/' + value.id; } if(value.pic == '' || value.pic == null) imgurl = '/images/gangster1.jpg'; var rowClass = isOdd ? 'rank-row-odd' : 'rank-row-even'; var stat = '0'; if(value.stat ) { stat = value.stat.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") } var html = '<li class="list-group-item list-group-item-action ranksulli">' + '<div class="media">' + '<div class="mr-3">' + '<div class="rank-row top">' + '<table><tr><td width=40px class=homerankings><div class="rank-row-number"><span>' + value.rank + '</span></div></td><td width=215px>' + '<div class="rank-row-image">' + '<a href="' + profileUrl + '">' + '</a>' + '</div></div></div>' + '<div class="media-body">' + '<a href="' + profileUrl + '">' + value.name + '</a></td><td>'+ stat +'</h5></td></tr></table>' + '</div>' + '</li>' var rankSearch1 = document.querySelector("#rankings_charele") rankSearch1.innerHTML = rankSearch1.innerHTML.replace(myName,"<div id=myRank>"+myName+"</div>") $('#rankings_charele').append(html); isOdd = !isOdd; }); isLoading = false; $('#last-updated').html('<br>Last updated: ' + data.timestamp); $('#ranks').show(); }, "json"); } $( document ).ready(function() { var selO = $('option[value="char_power"]');selectCategory('char_power', selO.html()); $( ".rank-sel2" ).change(function() { if($( this ).val() == '') return; var isCrew = $( this ).attr('iscrew') == '1'; selectCategory($( this ).val(), $(this).find("option:selected").text(), isCrew); }); }); GM_xmlhttpRequest ( { method: 'GET', url: 'https://torax.outwar.com/ajax/rankings?type=crew_power', onload: function (responseDetails) { const EQ = /\{.*/i; const EQprint = EQ.exec(responseDetails.responseText); var isLoading = false; function selectCategory(category, title, isCrew) { if(isLoading) return; $('#rank-title').html(title); $('#ranks').hide(); $('#ranks').html(''); $('#last-updated').html(''); isLoading = true; $.getJSON('/ajax/rankings.php?type=crew_power', function(data) { var isOdd = true; $.each(data.results, function(key, value) { if(isCrew) { var imgurl = data.baseimageurl + "/" + value.pic; var profileUrl = 'crew_profile?id=' + value.id; } else { var imgurl = data.baseimageurl + "/uploaded/" + value.pic; var profileUrl = 'crew_profile?id=' + value.id; } if(value.pic == '' || value.pic == null) imgurl = '/images/gangster1.jpg'; var rowClass = isOdd ? 'rank-row-odd' : 'rank-row-even'; var stat = '0'; if(value.stat ) { stat = value.stat.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") } var html = '<li class="list-group-item list-group-item-action ranksulli">' + '<div class="media">' + '<div class="mr-3">' + '<div class="rank-row top">' + '<table><tr><td width=40px class=homerankings><div class="rank-row-number"><span>' + value.rank + '</span></div></td><td width=215px>' + '<div class="rank-row-image">' + '<a href="' + profileUrl + '">' + '</a>' + '</div></div></div>' + '<div class="media-body">' + '<a href="' + profileUrl + '">' + value.name + '</a></td><td>'+ stat +'</h5></td></tr></table>' + '</div>' + '</li>' var rankSearch1 = document.querySelector("#rankings_crewpow") rankSearch1.innerHTML = rankSearch1.innerHTML.replace(crewName,"<div id=myRank>"+crewName+"</div>") $('#rankings_crewpow').append(html); isOdd = !isOdd; }); isLoading = false; $('#last-updated').html('<br>Last updated: ' + data.timestamp); $('#ranks').show(); }, "json"); } $( document ).ready(function() { var selO = $('option[value="char_power"]');selectCategory('char_power', selO.html()); $( ".rank-sel2" ).change(function() { if($( this ).val() == '') return; var isCrew = $( this ).attr('iscrew') == '1'; selectCategory($( this ).val(), $(this).find("option:selected").text(), isCrew); }); }); GM_xmlhttpRequest ( { method: 'GET', url: 'https://torax.outwar.com/ajax/rankings?type=crew_elepower', onload: function (responseDetails) { const EQ = /\{.*/i; const EQprint = EQ.exec(responseDetails.responseText); var isLoading = false; function selectCategory(category, title, isCrew) { if(isLoading) return; $('#rank-title').html(title); $('#ranks').hide(); $('#ranks').html(''); $('#last-updated').html(''); isLoading = true; $.getJSON('/ajax/rankings.php?type=crew_elepower', function(data) { var isOdd = true; $.each(data.results, function(key, value) { if(isCrew) { var imgurl = data.baseimageurl + "/" + value.pic; var profileUrl = 'crew_profile?id=' + value.id; } else { var imgurl = data.baseimageurl + "/uploaded/" + value.pic; var profileUrl = 'crew_profile?id=' + value.id; } if(value.pic == '' || value.pic == null) imgurl = '/images/gangster1.jpg'; var rowClass = isOdd ? 'rank-row-odd' : 'rank-row-even'; var stat = '0'; if(value.stat ) { stat = value.stat.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") } var html = '<li class="list-group-item list-group-item-action ranksulli">' + '<div class="media">' + '<div class="mr-3">' + '<div class="rank-row top">' + '<table><tr><td width=40px class=homerankings><div class="rank-row-number"><span>' + value.rank + '</span></div></td><td width=215px>' + '<div class="rank-row-image">' + '<a href="' + profileUrl + '">' + '</a>' + '</div></div></div>' + '<div class="media-body">' + '<a href="' + profileUrl + '">' + value.name + '</a></td><td>'+ stat +'</h5></td></tr></table>' + '</div>' + '</li>' var rankSearch1 = document.querySelector("#rankings_crewele") rankSearch1.innerHTML = rankSearch1.innerHTML.replace(crewName,"<div id=myRank>"+crewName+"</div>") $('#rankings_crewele').append(html); isOdd = !isOdd; }); isLoading = false; $('#last-updated').html('<br>Last updated: ' + data.timestamp); $('#ranks').show(); }, "json"); } $( document ).ready(function() { var selO = $('option[value="char_power"]');selectCategory('char_power', selO.html()); $( ".rank-sel2" ).change(function() { if($( this ).val() == '') return; var isCrew = $( this ).attr('iscrew') == '1'; selectCategory($( this ).val(), $(this).find("option:selected").text(), isCrew); }); }); GM_xmlhttpRequest ( { method: 'GET', url: 'https://torax.outwar.com/ajax/rankings?type=char_chaos', onload: function (responseDetails) { const EQ = /\{.*/i; const EQprint = EQ.exec(responseDetails.responseText); var isLoading = false; function selectCategory(category, title, isCrew) { if(isLoading) return; $('#rank-title').html(title); $('#ranks').hide(); $('#ranks').html(''); $('#last-updated').html(''); isLoading = true; $.getJSON('/ajax/rankings.php?type=char_chaos', function(data) { var isOdd = true; $.each(data.results, function(key, value) { if(isCrew) { var imgurl = data.baseimageurl + "/" + value.pic; var profileUrl = 'crew_profile?id=' + value.id; } else { var imgurl = data.baseimageurl + "/uploaded/" + value.pic; var profileUrl = 'characters/' + value.id; } if(value.pic == '' || value.pic == null) imgurl = '/images/gangster1.jpg'; var rowClass = isOdd ? 'rank-row-odd' : 'rank-row-even'; var stat = '0'; if(value.stat ) { stat = value.stat.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") } var html = '<li class="list-group-item list-group-item-action ranksulli">' + '<div class="media">' + '<div class="mr-3">' + '<div class="rank-row top">' + '<table><tr><td width=40px class=homerankings><div class="rank-row-number"><span>' + value.rank + '</span></div></td><td width=215px>' + '<div class="rank-row-image">' + '<a href="' + profileUrl + '">' + '</a>' + '</div></div></div>' + '<div class="media-body">' + '<a href="' + profileUrl + '">' + value.name + '</a></td><td>'+ stat +'</h5></td></tr></table>' + '</div>' + '</li>' var rankSearch1 = document.querySelector("#rankings_charchaos") rankSearch1.innerHTML = rankSearch1.innerHTML.replace(myName,"<div id=myRank>"+myName+"</div>") $('#rankings_charchaos').append(html); isOdd = !isOdd; }); isLoading = false; $('#last-updated').html('<br>Last updated: ' + data.timestamp); $('#ranks').show(); }, "json"); } $( document ).ready(function() { var selO = $('option[value="char_power"]');selectCategory('char_power', selO.html()); $( ".rank-sel2" ).change(function() { if($( this ).val() == '') return; var isCrew = $( this ).attr('iscrew') == '1'; selectCategory($( this ).val(), $(this).find("option:selected").text(), isCrew); }); }); GM_xmlhttpRequest ( { method: 'GET', url: 'https://torax.outwar.com/ajax/rankings?type=crew_chaos', onload: function (responseDetails) { const EQ = /\{.*/i; const EQprint = EQ.exec(responseDetails.responseText); var isLoading = false; function selectCategory(category, title, isCrew) { if(isLoading) return; $('#rank-title').html(title); $('#ranks').hide(); $('#ranks').html(''); $('#last-updated').html(''); isLoading = true; $.getJSON('/ajax/rankings.php?type=crew_chaos', function(data) { var isOdd = true; $.each(data.results, function(key, value) { if(isCrew) { var imgurl = data.baseimageurl + "/" + value.pic; var profileUrl = 'crew_profile?id=' + value.id; } else { var imgurl = data.baseimageurl + "/uploaded/" + value.pic; var profileUrl = 'crew_profile?id=' + value.id; } if(value.pic == '' || value.pic == null) imgurl = '/images/gangster1.jpg'; var rowClass = isOdd ? 'rank-row-odd' : 'rank-row-even'; var stat = '0'; if(value.stat ) { stat = value.stat.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") } var html = '<li class="list-group-item list-group-item-action ranksulli">' + '<div class="media">' + '<div class="mr-3">' + '<div class="rank-row top">' + '<table><tr><td width=40px class=homerankings><div class="rank-row-number"><span>' + value.rank + '</span></div></td><td width=215px>' + '<div class="rank-row-image">' + '<a href="' + profileUrl + '">' + '</a>' + '</div></div></div>' + '<div class="media-body">' + '<a href="' + profileUrl + '">' + value.name + '</a></td><td>'+ stat +'</h5></td></tr></table>' + '</div>' + '</li>' var rankSearch1 = document.querySelector("#rankings_crewchaos") rankSearch1.innerHTML = rankSearch1.innerHTML.replace(crewName,"<div id=myRank>"+crewName+"</div>") $('#rankings_crewchaos').append(html); isOdd = !isOdd; }); isLoading = false; $('#last-updated').html('<br>Last updated: ' + data.timestamp); $('#ranks').show(); }, "json"); } $( document ).ready(function() { var selO = $('option[value="char_power"]');selectCategory('char_power', selO.html()); $( ".rank-sel2" ).change(function() { if($( this ).val() == '') return; var isCrew = $( this ).attr('iscrew') == '1'; selectCategory($( this ).val(), $(this).find("option:selected").text(), isCrew); }); }); }})}})}})}})}})}})}})}; // equipment injection if ( document.URL.indexOf("outwar.com/home") != -1 ) { GM_xmlhttpRequest ( { method: 'GET', url: 'https://torax.outwar.com/profile', onload: function (responseDetails) { 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; const EQprint = EQ.exec(responseDetails.responseText); function insertBefore(newNode, existingNode) { 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)"); existingNode.parentNode.insertBefore(newNode, sp2); } 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") var homepageEQ = '<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)">' + EQprint + '</div>' let div = document.createElement('div'); div.innerHTML += homepageEQ; insertBefore(div, menu.children[0]); }})}; if ( document.URL.indexOf("world") != -1 ) { GM_xmlhttpRequest ( { method: 'GET', url: 'https://torax.outwar.com/profile', onload: function (responseDetails) { 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; const EQprint = EQ.exec(responseDetails.responseText); 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"); EQworld.innerHTML = '<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)">' + EQprint + '</div>' }})}; if ( document.URL.indexOf("treasury") != -1 ) { GM_xmlhttpRequest ( { method: 'GET', url: 'https://torax.outwar.com/profile', onload: function (responseDetails) { 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; const EQprint = EQ.exec(responseDetails.responseText); var EQtreas = document.querySelector("#content-header-row > div.col-8.col-lg-3.pl-3.pl-xl-0.pr-1 > div > div.widget-heading"); EQtreas.innerHTML = '<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)">' + EQprint + '</div>' }})} // crew raid menus var crewID1 = ''; if (document.documentElement.innerHTML.match(/href="\/crew_raidresults\.php\?crewid=(.*)">Raid Results<\/a>/i) != null) crewID1 = document.documentElement.innerHTML.match(/href="\/crew_raidresults\.php\?crewid=(.*)">Raid Results<\/a>/i); var crewID2 = document.documentElement.innerHTML.match(/tradeWith=(.*)"><svg/i); if ( document.URL.indexOf("crew_profile") != -1 ) { $('a[href="crew_raidresults.php?crewid='+crewID2[1]+'&most_recent=1"]').prop('href', 'https://torax.outwar.com/crew_raidresults.php?most_recent=MoxxiMod+raid+results&crewid='+crewID2[1]); $('a[href="crew_raidresults.php?crewid='+crewID2[1]+'&most_recent=1"]').text("Bed 2");} var crewmenu = '<div class="btn-group" role="group">' + '<button id="btnGroupDefault" type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">' + 'Moxxi Mod Raids <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-down"><polyline points="6 9 12 15 18 9"></polyline></svg>' + '</button>' + '<div class="dropdown-menu" aria-labelledby="btnGroupDefault" style="will-change: transform;">' + '<a class="dropdown-item" href="/crew_raidresults.php?most_recent=MoxxiMod+raid+results&crewid='+crewID1[1]+'">Moxxi Mod Raid Results</a>' + '<a class="dropdown-item" href="/crew_raidresults.php?all_results=Display+all+raid+results&crewid='+crewID1[1]+'">All Raid Results</a>' + '<a class="dropdown-item" href="/crew_raidresults.php?wins=Display+only+victorious+raids&crewid='+crewID1[1]+'">Only Victorious Raids</a>' + '</div>' + '</div>' if ( document.URL.indexOf("crew_") != -1 ) { function insertAfter9(newNode, existingNode) { existingNode.parentNode.insertBefore(newNode, existingNode.nextSibling); } var rrHead = document.querySelector("#content-header-row > div > div > div.btn-group.mb-3.mr-2"); let tdHead = document.createElement('div'); tdHead.innerHTML = crewmenu; if (rrHead != null) insertAfter9(tdHead, rrHead.children[2]);} }})}})