// ==UserScript== // @name Spawn TrChO // @namespace Spawn // @icon https://images2.imgbox.com/e8/e9/CU2F5936_o.jpg // @homepage https://greasyfork.org/en/scripts/408041-spawn-trcho // @description KOC All In One Throne Room & Champion Hall // @version 4.1.4 // @delay 2000 // @priority -10 // @include *.rycamelot.com/*main_src.php* // @include *.beta.rycamelot.com/*main_src.php* // @include *apps.facebook.com/kingdomsofcamelot/* // @include *.rockyou.com/rya/* // @include *koc-cdn.popreach.com* // @resource jqcss http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css // @resource champion_uniques https://koc-cdn.popreach.com/fb/e2/src/pb/resource/champion_uniques.js // @require https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js // @require https://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js // @connect * // @connect greasyfork.org // @grant unsafeWindow // @grant GM_getValue // @grant GM_setValue // @grant GM_addStyle // @grant GM_xmlhttpRequest // @grant GM_log // @grant GM_registerMenuCommand // @grant GM_getResourceText // @grant GM_getResourceURL // @contributionURL https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=CB2MLZCP8FPE8 // @copyright Copyright 2013-2020 KSA CodeSphere - Non-commercial use only. No modifications permitted. // @license http://creativecommons.org/licenses/by/4.0/ // @downloadURL https://update.greasyfork.icu/scripts/408041/Spawn%20TrChO.user.js // @updateURL https://update.greasyfork.icu/scripts/408041/Spawn%20TrChO.meta.js // ==/UserScript== // ********************************************************************************************************* // * In Hounour Of Mark Branscombe(TCO)& Phil Cazz (MadMaxx) * // * That Paved The Way For Organizers Like This Thanks Guys !!! * // * "Parts of this script use code created by Mark Branscombe & used with his * // * explicit permission. We thank you for your generosity Mark Branscombe" * // * * // * * // ********************************************************************************************************* var STrChOVersion = '4.1.4'; GM_addStyle("._10.uiLayer._4-hy._3qw {display: none;}"); String.prototype.capitalizeFirstLetter = function() { return this.charAt(0).toUpperCase() + this.slice(1); }; String.prototype.startsWith = function(starter) { return this.substring(0,starter.length) == starter; }; String.prototype.endsWith = function(ender) { return this.substring(this.length-ender.length) == ender; }; var ResetAll = false; var DEBUG_TRACE = false; var JSON;if(!JSON){JSON={};}(function(){"use strict";function f(n){return n<10?'0'+n:n;}if(typeof Date.prototype.toJSON!=='function'){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+'-'+f(this.getUTCMonth()+1)+'-'+f(this.getUTCDate())+'T'+f(this.getUTCHours())+':'+f(this.getUTCMinutes())+':'+f(this.getUTCSeconds())+'Z':null;};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf();};}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==='string'?c:'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);})+'"':'"'+string+'"';}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==='object'&&typeof value.toJSON==='function'){value=value.toJSON(key);}if(typeof rep==='function'){value=rep.call(holder,key,value);}switch(typeof value){case'string':return quote(value);case'number':return isFinite(value)?String(value):'null';case'boolean':case'null':return String(value);case'object':if(!value){return'null';}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==='[object Array]'){length=value.length;for(i=0;i'; m += 'Spawn TrChO (Version ' + STrChOVersion + ')'; m += ''; m += ''; m += 'X'; m += ''; m += ''; m += ''; m += ''; m += ''; m += '
'; m += ''; document.body.appendChild(this.div); this.div.innerHTML = m; document.getElementById(prefix + '_X').addEventListener('click', e_XClose, false); this.dragger = new CWinDrag(document.getElementById(prefix + '_bar'), this.div, enableDrag); this.div.addEventListener('mousedown', e_divClicked, false); STrChOWinManager.add(prefix, this); function e_divClicked() { t.focusMe(); } function e_XClose() { t.show(false); if (t.onClose != null) t.onClose(); } function focusMe() { t.setLayer(5); for (k in uW.cpopupWins) { if (k != t.prefix) uW.cpopupWins[k].unfocusMe(); } } function unfocusMe() { t.setLayer(-5); } function getLocation() { return { x: parseInt(this.div.style.left), y: parseInt(this.div.style.top) }; } function setLocation(loc) { t.div.style.left = loc.x + 'px'; t.div.style.top = loc.y + 'px'; } function destroy() { document.body.removeChild(t.div); STrChOWinManager.delete(t.prefix); } function centerMe(parent) { if (parent == null) { var coords = getClientCoords(document.body); } else var coords = getClientCoords(parent); var x = ((coords.width - parseInt(t.div.style.width)) / 2) + coords.x; var y = ((coords.height - parseInt(t.div.style.height)) / 2) + coords.y; if (x < 0) x = 0; if (y < 0) y = 0; t.div.style.left = x + 'px'; t.div.style.top = y + 'px'; } function setEnableDrag(tf) { t.dragger.setEnable(tf); } function setLayer(zi) { t.div.style.zIndex = '' + (this.BASE_ZINDEX + zi); } function getLayer() { return parseInt(t.div.style.zIndex) - this.BASE_ZINDEX; } function getTopDiv() { return document.getElementById(this.prefix + '_top'); } function getMainDiv() { return document.getElementById(this.prefix + '_main'); } function show(tf) { if (tf) { t.div.style.display = 'block'; t.focusMe(); } else { t.div.style.display = 'none'; } return tf; } function toggleHide(t) { if (t.div.style.display == 'block') { return t.show(false); } else { return t.show(true); } } } function CWinDrag (clickableElement, movingDiv, enabled) { var t=this; this.setEnable = setEnable; this.setBoundRect = setBoundRect; this.lastX = null; this.lastY = null; this.enabled = true; this.moving = false; this.theDiv = movingDiv; this.body = document.body; this.ce = clickableElement; this.moveHandler = new CeventMove(this).handler; this.outHandler = new CeventOut(this).handler; this.upHandler = new CeventUp(this).handler; this.downHandler = new CeventDown(this).handler; this.clickableRect = null; this.boundRect = null; this.bounds = null; this.enabled = false; if (enabled == null) enabled = true; this.setEnable (enabled); function setBoundRect (b){ // this rect (client coords) will not go outside of current body this.boundRect = boundRect; this.bounds = null; } function setEnable (enable){ if (enable == t.enabled) return; if (enable){ clickableElement.addEventListener('mousedown', t.downHandler, false); t.body.addEventListener('mouseup', t.upHandler, false); } else { clickableElement.removeEventListener('mousedown', t.downHandler, false); t.body.removeEventListener('mouseup', t.upHandler, false); } t.enabled = enable; } function CeventDown (that){ this.handler = handler; var t = that; function handler (me){ if (t.bounds == null){ t.clickableRect = getClientCoords(clickableElement); t.bodyRect = getClientCoords(document.body); if (t.boundRect == null) t.boundRect = t.clickableRect; t.bounds = {top:10-t.clickableRect.height, bot:t.bodyRect.height-25, left:40-t.clickableRect.width, right:t.bodyRect.width-25}; } if (me.button==0 && t.enabled){ t.body.addEventListener('mousemove', t.moveHandler, true); t.body.addEventListener('mouseout', t.outHandler, true); t.lastX = me.clientX; t.lastY = me.clientY; t.moving = true; } } } function CeventUp (that){ this.handler = handler; var t = that; function handler (me){ if (me.button==0 && t.moving) { _doneMoving(t); } } } function _doneMoving (t){ t.body.removeEventListener('mousemove', t.moveHandler, true); t.body.removeEventListener('mouseout', t.outHandler, true); t.moving = false; } function CeventOut (that){ this.handler = handler; var t = that; function handler (me){ if (me.button==0){ t.moveHandler (me); } } } function CeventMove (that){ this.handler = handler; var t = that; function handler (me){ if (t.enabled && !t.wentOut){ var newTop = parseInt(t.theDiv.style.top) + me.clientY - t.lastY; var newLeft = parseInt(t.theDiv.style.left) + me.clientX - t.lastX; if (newTop < t.bounds.top){ // if out-of-bounds... newTop = t.bounds.top; _doneMoving(t); } else if (newLeft < t.bounds.left){ newLeft = t.bounds.left; _doneMoving(t); } else if (newLeft > t.bounds.right){ newLeft = t.bounds.right; _doneMoving(t); } else if (newTop > t.bounds.bot){ newTop = t.bounds.bot; _doneMoving(t); } t.theDiv.style.top = newTop + 'px'; t.theDiv.style.left = newLeft + 'px'; t.lastX = me.clientX; t.lastY = me.clientY; } } } } function getClientCoords(e) { if (e == null) return { x: null, y: null, width: null, height: null }; var x = 0, y = 0; ret = { x: 0, y: 0, width: e.clientWidth, height: e.clientHeight }; while (e.offsetParent != null) { ret.x += e.offsetLeft; ret.y += e.offsetTop; e = e.offsetParent; } return ret; } var tabManager = { tabList : {}, // {name, obj, div} currentTab : null, init : function (mainDiv){ var t = tabManager; var sorter = []; for (k in Tabs){ if (!Tabs[k].tabDisabled){ t.tabList[k] = {}; t.tabList[k].name = k; t.tabList[k].tabColor = Tabs[k].tabColor?Tabs[k].tabColor:'blue'; t.tabList[k].obj = Tabs[k]; if (Tabs[k].tabLabel != null) t.tabList[k].label = Tabs[k].tabLabel; else t.tabList[k].label = k; if (Tabs[k].tabOrder != null) sorter.push([Tabs[k].tabOrder, t.tabList[k]]); else sorter.push([1000, t.tabList[k]]); t.tabList[k].div = document.createElement('div'); } } sorter.sort (function (a,b){return a[0]-b[0]}); var m = ''; m += ''; mainPop.getTopDiv().innerHTML = m; var contentDiv = document.createElement('div'); contentDiv.id = 'STrChOMain_content'; mainDiv.appendChild(contentDiv); for (k in t.tabList) { if (t.tabList[k].name == STrChOGeneralOptions.currentTab) t.currentTab =t.tabList[k]; document.getElementById('nttc'+ k).addEventListener('click', this.e_clickedTab, false); var div = t.tabList[k].div; div.style.display = 'none'; div.style.height = '100%'; contentDiv.appendChild(div); try { t.tabList[k].obj.init(div); } catch (e){ div.innerHTML = "INIT ERROR: "+ e; } } if (t.currentTab == null) t.currentTab = sorter[0][1]; t.currentTab.div.style.display = 'block'; t.setTabStyle(t.currentTab, true); }, hideTab : function (){ var t = tabManager; t.currentTab.obj.hide(); STrChOGeneralOptions.hidden = true; //STrChOGeneralOptions.currentTab = null; SAVESTrChOGeneralOptions(); }, showTab : function (){ var t = tabManager; t.currentTab.obj.show(); STrChOGeneralOptions.hidden = false; //STrChOGeneralOptions.currentTab = t.currentTab.name; SAVESTrChOGeneralOptions(); }, setTabStyle : function (Tab, selected){ var e = document.getElementById ('nttc'+ Tab.name) var c = Tab.tabColor?Tab.tabColor:"gray"; if (selected){ e.className = 'STrChOMenuButton h20 gray'; } else { e.className = 'STrChOMenuButton h20 '+c; } }, e_clickedTab : function (e){ var t = tabManager; mainPop.show (true); if (e.target.id) var newTab = t.tabList[e.target.id.substring(4)]; else var newTab = t.tabList[e.target.parentNode.id.substring(4)]; if (t.currentTab.name != newTab.name){ t.setTabStyle (t.currentTab, false); t.setTabStyle (newTab, true); t.currentTab.obj.hide (); t.currentTab.div.style.display = 'none'; t.currentTab = newTab; STrChOGeneralOptions.currentTab = newTab.name; newTab.div.style.display = 'block'; } newTab.obj.show(); }, } //TODO function mouseEventTab (me){ // right-click on main button resets window if (me.button == 2){ var c = getClientCoords(document.getElementById('main_engagement_tabs')); mainPop.setLocation ({x: c.x+4, y: c.y+c.height}); } } function eventHideShow() { if (mainPop.toggleHide(mainPop)) { tabManager.showTab(); } else { tabManager.hideTab(); } } function createButton(label) { var a = document.createElement('a'); a.className = 'button20'; a.innerHTML = '' + label + ''; return a; } function AddMainTabLink(text, eventListener, mouseListener) { var a = createButton(text); a.className = 'tab'; var tabs = document.getElementById('main_engagement_tabs'); if (!tabs) { tabs = document.getElementById('topnav_msg'); if (tabs) tabs = tabs.parentNode; } if (tabs) { var e = tabs.parentNode; var gmTabs = null; for (var i = 0; i < e.childNodes.length; i++) { var ee = e.childNodes[i]; if (ee.tagName && ee.tagName == 'DIV' && ee.className == 'tabs_engagement' && ee.id != 'main_engagement_tabs') { gmTabs = ee; break; } } if (gmTabs == null) { gmTabs = document.createElement('div'); gmTabs.className = 'tabs_engagement'; tabs.parentNode.insertBefore(gmTabs, tabs); gmTabs.style.whiteSpace = 'normal'; gmTabs.style.width = dlgWidth+'px'; } gmTabs.style.height = '0%'; gmTabs.style.overflow = 'auto'; if (gmTabs.firstChild) gmTabs.insertBefore(a, gmTabs.firstChild); else gmTabs.appendChild(a); a.addEventListener('click', eventListener, false); if (mouseListener != null) a.addEventListener('mousedown', mouseListener, true); return a; } return null; } function ScriptStartup () { if (uW.STrChOLoaded) return; var metc = getClientCoords(document.getElementById('main_engagement_tabs')); if (metc.width==null || metc.width==0) { setTimeout (ScriptStartup, 1000); return; } STrChOMaxThroneQuality = CM.ThronePanelController.MAX_QUALITY; STrChOMaxThroneLevel = CM.MAX_MASTERS_TOKEN_LEVEL; STrChOMaxChampLevel = CM.CHAMPION.MAX_LEVELS; STrChOMaxChampQuality = CM.CHAMPION.MAX_EFFECTS; STrChOMaxChampions = Seed.champion.champions.size(); STrChOMaxInventoryRows = Seed.throne.rowNum; STrChOMaxThroneCards = STrChOMaxInventoryRows * 5; // initialise // LOADallData(); //done earlier in the script var styles = ''; styles += '#itemInventory {min-height: 420px; background-color:#884422;}'; //this expands the height of the champion hall inventory space styles += '#itemFilter {min-height: 150px; background-color:#884422;}'; styles += 'tr.STrChOPopupTop td {background-color:#000000; border:1px solid #000000; height: 21px; padding:0px; color:#C92C0C;}'; styles += 'td {border: 0px;}'; styles += '.STrChOCPopMain {width:'+dlgWidth+'px; height:'+(dlgHeight-dlgHeightOffset)+'px; background-color:#F7F3E6; border:1px solid #000000; -moz-box-shadow:inset 0px 0px 10px #6a6a6a; -webkit-box-shadow:inset 0px 0px 10px #6a6a6a; box-shadow:inset 0px 0px 10px #6a6a6a; font-size:12px; color:#000000;}'; styles += '.STrChOPopup {border:5px ridge #666; opacity:1; -moz-box-shadow: 1px 1px 5px #000000; -webkit-box-shadow: 1px 1px 5px #000000; box-shadow: 1px 1px 5px #000000;}'; styles += '.STrChOHeader {width:100%; border:0px solid; border-color:#808080; background: -moz-linear-gradient(top, #A9A9A9, #333); background: -webkit-linear-gradient(top, #A9A9A9, #333); background: linear-gradient(top, #A9A9A9, #333); height: 22px; border-bottom:0px solid #000000;font-weight:bold;font-size:12px;opacity:0.75;margin-left:0px;margin-right:0px;margin-top:1px;margin-bottom:0px;padding-top:6px;padding-right:0px; vertical-align:middle;align:center; color:#000000; text-align:center;}'; styles += '.STrChOThroneOrganizer {position: static; overflow-x: auto; overflow-y: auto; width:100%; border:0px solid; border-color:#000000; background: -moz-linear-gradient(top, #A9A9A9, #333); background: -webkit-linear-gradient(top, #A9A9A9, #333); background: linear-gradient(top, #A9A9A9, #333); height: 16px;border-bottom:0px solid #000000;font-weight:bold;font-size:12px;opacity:0.75;margin-left:0px;margin-right:0px;margin-top:1px;margin-bottom:0px;padding-top:0px;padding-right:0px; vertical-align:middle;align:center; color:#000000; text-align:center;}'; styles += '.STrChOChampOrganizer {position: static; overflow-x: auto; overflow-y: auto; width:100%; border:0px solid; border-color:#000000; background: -moz-linear-gradient(top, #A9A9A9, #333); background: -webkit-linear-gradient(top, #A9A9A9, #333); background: linear-gradient(top, #A9A9A9, #333); height: 16px;border-bottom:0px solid #000000;font-weight:bold;font-size:12px;opacity:0.75;margin-left:0px;margin-right:0px;margin-top:1px;margin-bottom:0px;padding-top:0px;padding-right:0px; vertical-align:middle;align:center; color:#000000; text-align:center;}'; styles += '.STrChOThroneOrganizerSection {display:none; position:static; overflow-x:auto; overflow-y:hidden; }'; styles += '.STrChOChampOrganizerSection {display:none; position:static; overflow-x:auto; overflow-y:hidden; }'; styles += '.divNoWrap {white-space: nowrap; display:inline-block;}'; styles += '.indent5 {padding-left:5px}'; styles += '.STrChOButton {background-color:#000000; color:#ffffff;font-weight:bold;font-size:11px;-webkit-box-shadow: 0px 1px 3px rgba(0,0,0,0.5); -moz-box-shadow: 0px 1px 3px rgba(0,0,0,0.5); box-shadow: 0px 1px 3px rgba(0,0,0,0.5);}'; styles += '.STrChOSelect {background-color:#ffffff; color:#000000;font-weight:normal;width:100px;font-size:11px;-webkit-box-shadow: 0px 1px 3px rgba(0,0,0,0.5); -moz-box-shadow: 0px 1px 3px rgba(0,0,0,0.5); box-shadow: 0px 1px 3px rgba(0,0,0,0.5);}'; styles += '.STrChOTextbox {background-color:#ffffff; color:#000000;font-weight:normal;font-size:11px;-webkit-box-shadow: 0px 1px 3px rgba(0,0,0,0.5); -moz-box-shadow: 0px 1px 3px rgba(0,0,0,0.5); box-shadow: 0px 1px 3px rgba(0,0,0,0.5);}'; styles += '.STrChOCheckbox {-webkit-box-shadow: 0px 1px 3px rgba(0,0,0,0.5); -moz-box-shadow: 0px 1px 3px rgba(0,0,0,0.5); box-shadow: 0px 1px 3px rgba(0,0,0,0.5);}'; styles += '.STrChOLinks {font-family: tahoma,verdana,arial,sans-serif; font-size: 12px; font-variant: normal; font-style: normal; font-weight: normal; color: #000000; text-decoration: none;}'; styles += 'td.STrChOTDLinks {background-color:#FFFFCC;}'; styles += 'hr.STrChOHRCenter {width: 80%; align:center;}'; styles += '.STrChOLinksHeader {font-family: tahoma,verdana,arial,sans-serif; font-size: 12px; font-variant: normal; font-style: normal; font-weight: bold; color: #1a1a1a; text-decoration: none;}'; styles += '.STrChOLinksDesc {font-family: tahoma,verdana,arial,sans-serif; font-size: 12px; font-variant: normal; font-style: italic; font-weight: bold; color: #0000FF; text-decoration: none;}'; styles += '.STrChOULMenu {list-style-type: none;padding: 0;margin: 0;display: inline;}'; styles += '.STrChOSectionTable {padding:0px; border-spacing: 0px;width:100%;border:0px;}'; styles += '.STrChOReverseImage {-moz-transform: scaleX(-1); -o-transform: scaleX(-1); -webkit-transform: scaleX(-1); transform: scaleX(-1); filter: FlipH; -ms-filter: "FlipH";}'; styles += '.STrChOSection {display:none;}'; styles += 'table.STrChOStats tr td { background-color: #ffffff; white-space:nowrap; padding:5px; border-bottom:solid black 1px;}'; styles += 'table.STrChOStats tr td:last-child { border-right:solid black 1px; }'; styles += 'table.STrChOStats tr:first-child th { border-top:solid black 1px; }'; styles += 'table.STrChOStats tr td.td0 { background-color: white; }'; styles += 'table.STrChOStats tr td.td1 { background-color: #eeeeee; }'; styles += 'table.STrChOStats tr td.td2 { background-color: white; }'; styles += 'table.STrChOStats tr th {border:solid black 1px; border-top: none; background-color: #357; color: white; white-space:nowrap; padding:5px}'; styles += 'table.STrChOStats tr:last-child td:first-child, table.STrChOStats tr:last-child th:first-child { -moz-border-radius-bottomleft:10px; -webkit-border-bottom-left-radius:10px; border-bottom-left-radius:10px} '; styles += 'table.STrChOStats tr:last-child td:last-child, table.STrChOStats tr:last-child th:last-child { -moz-border-radius-bottomright:10px; -webkit-border-bottom-right-radius:10px; border-bottom-right-radius:10px} '; styles += 'table.STrChOStats tr:first-child th:first-child { -moz-border-radius-topleft:10px; -webkit-border-top-left-radius:10px; border-top-left-radius:10px} '; styles += 'table.STrChOStats tr:first-child th:last-child { -moz-border-radius-topright:10px; -webkit-border-top-right-radius:10px; border-top-right-radius:10px} '; styles += '.STrChOMenuButton { cursor: pointer; border-width: 2px; border-style: solid; -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; -webkit-border-top-colors: none; -webkit-border-right-colors: none; -webkit-border-bottom-colors: none; -webkit-border-left-colors: none; border-top-colors: none; border-right-colors: none; border-bottom-colors: none; border-left-colors: none; border-image: none; border-color: #FDF4D2 #A69964 #A69964 #FDF4D2; color: #FFF; font: bold 10px Georgia; text-align: center; text-decoration: none; background-color: #C82622 !important; }'; styles += '.STrChOMenuButton.h20 { width: 123px; height: 20px; line-height: 14px; padding: 2px 7px; }'; styles += '.STrChOMenuButton.red { color: #FFF !important; background: -moz-linear-gradient(center top , #B600B6, #5D3A5D 100%) repeat scroll 0% 0% transparent; background: -webkit-linear-gradient(top , #747474, #474747 100%) repeat scroll 0% 0% transparent; background: linear-gradient(center top , #FF6E72, #320201 100%) repeat scroll 0% 0% transparent; }'; styles += '.STrChOMenuButton.green { background: -moz-linear-gradient(center top , #B600B6, #5D3A5D 100%) repeat scroll 0% 0% transparent; background: -webkit-linear-gradient(top , #747474, #474747 100%) repeat scroll 0% 0% transparent; background: linear-gradient(center top , #4AB900, #3F8803 100%) repeat scroll 0% 0% transparent; }'; styles += '.STrChOMenuButton.brown { background: -moz-linear-gradient(center top , #B600B6, #5D3A5D 100%) repeat scroll 0% 0% transparent; background: -webkit-linear-gradient(top , #FE6601, #B3561D 100%) repeat scroll 0% 0% transparent; background: linear-gradient(center top , #C58200, #976300 100%) repeat scroll 0% 0% transparent; }'; styles += '.STrChOMenuButton.blue { background: -moz-linear-gradient(center top , #B600B6, #5D3A5D 100%) repeat scroll 0% 0% transparent; background: -webkit-linear-gradient(top , #B600B6, #5D3A5D 100%) repeat scroll 0% 0% transparent; background: linear-gradient(center top , #014DAA, #00397E 100%) repeat scroll 0% 0% transparent; }'; styles += '#STrChOHammer { background-image: url("'+gameurl+'img/throne/modal/sm_hammer.png"); background-repeat: no-repeat; background-color: transparent; display: inline-block; width: 28px; height: 32px; margin: 2px; vertical-align: middle;}'; styles += 'div.STrChOHammer { background-image: url("'+gameurl+'img/throne/modal/sm_hammer.png"); background-repeat: no-repeat; background-color: transparent; display: inline-block; width: 28px; height: 32px; margin: 2px; vertical-align: middle;}'; styles += 'div.STrChOBroken { background-image: url("'+gameurl+'img/throne/modal/sm_fail_overlay.png"); background-repeat: no-repeat; background-color: transparent; display: inline-block; width: 28px; height: 32px; margin: 2px; vertical-align: middle;}'; styles += 'div.STrChOSuccess { background-image: url('+ success_image +'); background-repeat: no-repeat; background-color: transparent; display: inline-block; width: 28px; height: 32px; margin: 2px; vertical-align: middle;}'; styles += 'div.STrChOUpRow { display=inline; background-image: url('+ up_img +'); background-repeat: no-repeat; background-color: transparent; width: 28px; height: 24px; }'; styles += 'div.STrChOUpRow:hover { display=inline; background-image: url('+ up_glow +'); background-repeat: no-repeat; background-color: transparent; width: 28px; height: 24px; }'; styles += 'div.STrChORemove { display=inline; background-image: url('+ remove_img +'); background-repeat: no-repeat; background-color: transparent; width: 50px; height: 50px; }'; styles += 'div.STrChORemove:hover { display=inline; background-image: url('+ remove_glow +'); background-repeat: no-repeat; background-color: transparent; width: 50px; height: 50px; }'; styles += 'div.STrChODownRow { display=inline; background-image: url('+ down_img +'); background-repeat: no-repeat; background-color: transparent; width: 28px; height: 24px; }'; styles += 'div.STrChODownRow:hover { display=inline; background-image: url('+ down_glow +'); background-repeat: no-repeat; background-color: transparent; width: 28px; height: 24px; }'; styles += 'div.STrChOGoButton { display=inline; background-image: url('+ gbtn_img +'); background-repeat: no-repeat; background-color: transparent; width: 32px; height: 32px; margin: 0px; }'; styles += 'div.STrChOSaveSettings { display=inline; background-image: url("'+gameurl+'img/bonus_prestige.png"); background-repeat: no-repeat; background-color: transparent; display: inline-block; width: 20px; height: 20px; margin-left: 20px; vertical-align: middle; float:left}'; styles += 'div.STrChOLoadSettings { display=inline; background-image: url("'+gameurl+'img/bonus_att.png"); background-repeat: no-repeat; background-color: transparent; display: inline-block; width: 20px; height: 20px; margin-left: 2px; vertical-align: middle; float:left}'; styles += 'div.STrChOBlueBorder { border: 2px solid blue; }'; styles += 'div.STrChOYellowBorder { outline: 2px solid yellow; outline-offset:0px; }'; styles += '.swapBorderThrone { margin-right: -100%; margin-bottom: -100%; height: 99%; width: 99%; padding: 4%; background-image: url('+ success_image +'); background-repeat: no-repeat; background-size: 28px; display: inline-block;}'; styles += '.tagBorderThrone { margin-right: -100%; margin-bottom: -100%; height: 72%; width: 72%; padding: 4%; border: 3px solid ' + STrChOThronePresetData.tagColor + '; background: transparent;}'; styles += '.presetBorderThrone { margin-right: -100%; margin-bottom: -100%; height: 72%; width: 72%; padding: 4%; border: 3px solid ' + STrChOThronePresetData.presetColor + '; background: transparent;}'; styles += '.activeBorderThrone { margin-right: -100%; margin-bottom: -100%; height: 72%; width: 72%; padding: 4%; border: 3px solid ' + STrChOThronePresetData.activeColor + '; background: transparent;}'; styles += '.tagBorderChamp { margin-right: -100%; margin-bottom: -100%; height: 72%; width: 72%; padding: 4%; border: 3px solid ' + STrChOChampPresetData.tagColor + '; background: transparent;}'; styles += '.presetBorderChamp { margin-right: -100%; margin-bottom: -100%; height: 72%; width: 72%; padding: 4%; border: 3px solid ' + STrChOChampPresetData.presetColor + '; background: transparent;}'; styles += '.activeBorderChamp { margin-right: -100%; margin-bottom: -100%; height: 72%; width: 72%; padding: 4%; border: 3px solid ' + STrChOChampPresetData.activeColor + '; background: transparent;}'; styles += 'div.champ_item_section ul.effects { margin: 3px 0 0 0; padding: 0; list-style: none; }'; styles += 'div.champ_item_section ul.effects li.effect { padding:0;font-weight:bold;font-size:10px; }'; styles += 'div.champ_item_section ul.effects li.effect.statChamp { color: #3F2300; }'; styles += 'div.champ_item_section ul.effects li.effect.statTroop { color: #1751A5; }'; styles += 'div.champ_item_section ul.effects li.effect.statChamp.disabled { color: #B9A48B; }'; styles += 'div.champ_item_section ul.effects li.effect.statTroop.disabled { color: #A5B1E5; }'; styles += 'div.STrChOCard {width: 180px; height: 200px; font:bold 8px Georiga; overflow: hidden;}'; var icon_size = '50px 50px'; styles += 'div.STrChOCard div.description>div{width:50px;height:50px; }'; styles += 'div.STrChOCard div.description div.briton.advisor{background:transparent url("'+gameurl+'img/throne/icons/70/briton_advisor_normal_1_6.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.briton.banner{background:transparent url("'+gameurl+'img/throne/icons/70/briton_banner_normal_1_6.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.briton.chair{background:transparent url("'+gameurl+'img/throne/icons/70/briton_chair_normal_1_6.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.briton.table{background:transparent url("'+gameurl+'img/throne/icons/70/briton_table_normal_1_6.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.briton.window{background:transparent url("'+gameurl+'img/throne/icons/70/briton_window_normal_1_6.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.briton.trophy{background:transparent url("'+gameurl+'img/throne/icons/70/briton_trophy_normal_1_6.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.briton.hero{background:transparent url("'+gameurl+'img/throne/icons/70/briton_hero_normal_1_6.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.briton.statue{background:transparent url("'+gameurl+'img/throne/icons/70/briton_statue_normal_1_6.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.briton.candelabrum{background:transparent url("'+gameurl+'img/throne/icons/70/briton_candelabrum_normal_1_6.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.briton.pet{background:transparent url("'+gameurl+'img/throne/icons/70/briton_pet_normal_1_6.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.briton.tapestry{background:transparent url("'+gameurl+'img/throne/icons/70/briton_tapestry_normal_1_6.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.briton.pillar{background:transparent url("'+gameurl+'img/throne/icons/70/briton_pillar_normal_1_6.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.briton.weapon{background:transparent url("'+gameurl+'img/champion_hall/wondrous_weapon_briton_30x30.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.briton.chest{background:transparent url("'+gameurl+'img/champion_hall/wondrous_chestArmor_briton_30x30.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.briton.helm{background:transparent url("'+gameurl+'img/champion_hall/wondrous_helmet_briton_30x30.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.briton.boots{background:transparent url("'+gameurl+'img/champion_hall/wondrous_feet_briton_30x30.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.briton.shield{background:transparent url("'+gameurl+'img/champion_hall/wondrous_shield_briton_30x30.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.briton.ring{background:transparent url("'+gameurl+'img/champion_hall/wondrous_ring1_briton_30x30.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.briton.pendant{background:transparent url("'+gameurl+'img/champion_hall/wondrous_pendant_briton_30x30.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.briton.cloak{background:transparent url("'+gameurl+'img/champion_hall/wondrous_cloak_briton_30x30.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.druid.advisor{background:transparent url("'+gameurl+'img/throne/icons/70/druid_advisor_normal_1_6.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.druid.banner{background:transparent url("'+gameurl+'img/throne/icons/70/druid_banner_normal_1_6.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.druid.chair{background:transparent url("'+gameurl+'img/throne/icons/70/druid_chair_normal_1_6.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.druid.table{background:transparent url("'+gameurl+'img/throne/icons/70/druid_table_normal_1_6.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.druid.window{background:transparent url("'+gameurl+'img/throne/icons/70/druid_window_normal_1_6.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.druid.trophy{background:transparent url("'+gameurl+'img/throne/icons/70/druid_trophy_normal_1_6.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.druid.hero{background:transparent url("'+gameurl+'img/throne/icons/70/druid_hero_normal_1_6.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.druid.statue{background:transparent url("'+gameurl+'img/throne/icons/70/druid_statue_normal_1_6.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.druid.candelabrum{background:transparent url("'+gameurl+'img/throne/icons/70/druid_candelabrum_normal_1_6.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.druid.pet{background:transparent url("'+gameurl+'img/throne/icons/70/druid_pet_normal_1_6.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.druid.tapestry{background:transparent url("'+gameurl+'img/throne/icons/70/druid_tapestry_normal_1_6.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.druid.pillar{background:transparent url("'+gameurl+'img/throne/icons/70/druid_pillar_normal_1_6.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.druid.weapon{background:transparent url("'+gameurl+'img/champion_hall/wondrous_weapon_druid_30x30.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.druid.chest{background:transparent url("'+gameurl+'img/champion_hall/wondrous_chestArmor_druid_30x30.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.druid.helm{background:transparent url("'+gameurl+'img/champion_hall/wondrous_helmet_druid_30x30.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.druid.boots{background:transparent url("'+gameurl+'img/champion_hall/wondrous_feet_druid_30x30.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.druid.shield{background:transparent url("'+gameurl+'img/champion_hall/wondrous_shield_druid_30x30.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.druid.ring{background:transparent url("'+gameurl+'img/champion_hall/wondrous_ring1_druid_30x30.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.druid.pendant{background:transparent url("'+gameurl+'img/champion_hall/wondrous_pendant_druid_30x30.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.druid.cloak{background:transparent url("'+gameurl+'img/champion_hall/wondrous_cloak_druid_30x30.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.fey.advisor{background:transparent url("'+gameurl+'img/throne/icons/70/fey_advisor_normal_1_6.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.fey.banner{background:transparent url("'+gameurl+'img/throne/icons/70/fey_banner_normal_1_6.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.fey.chair{background:transparent url("'+gameurl+'img/throne/icons/70/fey_chair_normal_1_6.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.fey.table{background:transparent url("'+gameurl+'img/throne/icons/70/fey_table_normal_1_6.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.fey.window{background:transparent url("'+gameurl+'img/throne/icons/70/fey_window_normal_1_6.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.fey.trophy{background:transparent url("'+gameurl+'img/throne/icons/70/fey_trophy_normal_1_6.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.fey.hero{background:transparent url("'+gameurl+'img/throne/icons/70/fey_hero_normal_1_6.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.fey.statue{background:transparent url("'+gameurl+'img/throne/icons/70/fey_statue_normal_1_6.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.fey.candelabrum{background:transparent url("'+gameurl+'img/throne/icons/70/fey_candelabrum_normal_1_6.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.fey.pet{background:transparent url("'+gameurl+'img/throne/icons/70/fey_pet_normal_1_6.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.fey.tapestry{background:transparent url("'+gameurl+'img/throne/icons/70/fey_tapestry_normal_1_6.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.fey.pillar{background:transparent url("'+gameurl+'img/throne/icons/70/fey_pillar_normal_1_6.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.fey.weapon{background:transparent url("'+gameurl+'img/champion_hall/wondrous_weapon_fey_30x30.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.fey.chest{background:transparent url("'+gameurl+'img/champion_hall/wondrous_chestArmor_fey_30x30.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.fey.helm{background:transparent url("'+gameurl+'img/champion_hall/wondrous_helmet_fey_30x30.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.fey.boots{background:transparent url("'+gameurl+'img/champion_hall/wondrous_feet_fey_30x30.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.fey.shield{background:transparent url("'+gameurl+'img/champion_hall/wondrous_shield_fey_30x30.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.fey.ring{background:transparent url("'+gameurl+'img/champion_hall/wondrous_ring1_fey_30x30.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.fey.pendant{background:transparent url("'+gameurl+'img/champion_hall/wondrous_pendant_fey_30x30.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard div.description div.fey.cloak{background:transparent url("'+gameurl+'img/champion_hall/wondrous_cloak_fey_30x30.png") top left no-repeat; background-size: ' + icon_size + ';}'; styles += 'div.STrChOCard .disabled{opacity:.5;}'; styles += 'div.STrChOCard ul{margin:0px;padding:0;list-style:none;}'; styles += 'div.STrChOCard li{padding:0px 0 0 0px;color:#3f2300;font-weight:bold;font-size:10px;}'; //tooltip styles += 'div.STrChOCard>div{float:left;border:1px solid #a56631;margin:0px;padding:0px;width:200px; height:300px; background:transparent url("'+gameurl+'img/modal/modal_med_bg_4.png") -200px 0 no-repeat;}'; //tooltip styles += 'div.STrChOTitle{font:bold 11px Georgia;border-bottom:1px solid #703200;padding:4px 3px 5px 8px;background:transparent url("'+gameurl+'img/throne/panel/modal/item_bg.png") -20px -100px no-repeat;}'; //tooltip styles += 'div.STrChOTitle span.icon{background:transparent url("'+gameurl+'img/throne/modal/equip.png") top right no-repeat;display:block;height:20px;width:20px;top:12px;right:12px;position:absolute;}'; styles += 'div.description {overflow:hidden;border-bottom:1px solid #703200;}'; styles += 'div.portrait {float:left; border:3px solid #deaf69;margin-right:8px;}'; styles += 'div.description>ul{float:left;margin:3px 0 0 0;padding:0;}'; styles += 'div.description>ul li{padding:0;font-weight:bold;font-size:10px;text-transform:capitalize;}'; //tooltip styles += '.STrChOCastleButton {outline:0px; margin-left:0px; margin-right:0px; width:24px; height:26px; font-size:12px; font-weight:bold; }'; styles += '.STrChOCastleButton:hover {background-image:url("'+ URL_CASTLE_BUTTON_SELECT +'")}'; styles += '.STrChOCastleButtonNot {background-image:url("'+ URL_CASTLE_BUTTON +'")}'; styles += '.STrChOCastleButtonSelect {background-image:url("'+ URL_CASTLE_BUTTON_SELECT +'")}'; styles += 'div.STrChOContextMenu {background-color: #999966; z-index: 10000000; position: absolute; height: 400px; padding: 4px 4px 4px 4px; font: bold 11px Georgia; border-width: 2px; border-style: solid; text-align: center; margin: auto;}';// overflow-y: auto; overflow-x: hidden;}'; styles += 'div.STrChOContextMenuItem {height: 20px; width: 140px; margin-bottom: 2px; cursor: pointer; text-decoration: none; font: bold 12px Georgia; text-align: center; border-style: solid; border-width: 2px; background-color: #B72828 !important; vertical-align: middle; color: #ffffff; border-color: transparent; padding-top: 4px;}'; styles += 'div.STrChOContextMenuSubItem {height: 20px; width: 140px; margin-bottom: 2px; cursor: pointer; text-decoration: none; font: bold 12px Georgia; text-align: center; border-style: solid; border-width: 2px; background-color: #B72828 !important; vertical-align: middle; color: #ffffff; border-color: transparent; padding-top: 4px;}'; styles += 'div.STrChORed {background: -moz-linear-gradient(center top , #FF6E72, #320201 100%) repeat scroll 0% 0% transparent;background: -webkit-linear-gradient(top , #FF6E72, #320201 100%) repeat scroll 0% 0% transparent;background: linear-gradient(center top , #FF6E72, #320201 100%) repeat scroll 0% 0% transparent;}'; styles += 'div.STrChORed:hover {background: -moz-linear-gradient(center top , #320201, #FF6E72 100%) repeat scroll 0% 0% transparent;background: -webkit-linear-gradient(top , #320201, #FF6E72 100%) repeat scroll 0% 0% transparent;background: linear-gradient(center top , #320201, #FF6E72 100%) repeat scroll 0% 0% transparent;}'; styles += 'div.STrChOGreen {background: -moz-linear-gradient(center top , #4AB900, #3F8803 100%) repeat scroll 0% 0% transparent; background: -webkit-linear-gradient(top , #4AB900, #3F8803 100%) repeat scroll 0% 0% transparent; background: linear-gradient(center top , #4AB900, #3F8803 100%) repeat scroll 0% 0% transparent; }'; styles += 'div.STrChOGreen:hover {background: -moz-linear-gradient(center top , #3F8803, #4AB900 100%) repeat scroll 0% 0% transparent; background: -webkit-linear-gradient(top , #3F8803, #4AB900 100%) repeat scroll 0% 0% transparent; background: linear-gradient(center top , #3F8803, #4AB900 100%) repeat scroll 0% 0% transparent; }'; styles += 'div.STrChOBlue {background: -moz-linear-gradient(center top , #014DAA, #00397E 100%) repeat scroll 0% 0% transparent; background: -webkit-linear-gradient(top , #014DAA, #00397E 100%) repeat scroll 0% 0% transparent; background: linear-gradient(center top , #014DAA, #00397E 100%) repeat scroll 0% 0% transparent; }'; styles += 'div.STrChOBlue:hover {background: -moz-linear-gradient(center top , #00397E, #014DAA 100%) repeat scroll 0% 0% transparent; background: -webkit-linear-gradient(top , #00397E, #014DAA 100%) repeat scroll 0% 0% transparent; background: linear-gradient(center top , #00397E, #014DAA 100%) repeat scroll 0% 0% transparent; }'; styles += 'div.STrChOBrown {background: -moz-linear-gradient(center top , #976300, #C58200 100%) repeat scroll 0% 0% transparent; background: -webkit-linear-gradient(top , #976300, #C58200 100%) repeat scroll 0% 0% transparent; background: linear-gradient(center top , #976300, #C58200 100%) repeat scroll 0% 0% transparent; }'; styles += 'div.STrChOBrown:hover {background: -moz-linear-gradient(center top , #C58200, #976300 100%) repeat scroll 0% 0% transparent; background: -webkit-linear-gradient(top , #C58200, #976300 100%) repeat scroll 0% 0% transparent; background: linear-gradient(center top , #C58200, #976300 100%) repeat scroll 0% 0% transparent; }'; styles += 'div.STrChODisabled {background: -moz-linear-gradient(center top , #5D5D5D, #171717 100%) repeat scroll 0% 0% transparent; background: -webkit-linear-gradient(top , #5D5D5D, #171717 100%) repeat scroll 0% 0% transparent; background: linear-gradient(center top , #5D5D5D, #171717 100%) repeat scroll 0% 0% transparent; }'; styles += 'div.STrChODisabled:hover {background: -moz-linear-gradient(center top , #5D5D5D, #171717 100%) repeat scroll 0% 0% transparent; background: -webkit-linear-gradient(top , #5D5D5D, #171717 100%) repeat scroll 0% 0% transparent; background: linear-gradient(center top , #5D5D5D, #171717 100%) repeat scroll 0% 0% transparent; }'; styles += 'div.STrChOContextHidden {display: none; }'; styles += 'div.STrChOContextVisible {display: block; }'; if (STrChOGeneralOptions.usedCityNum && STrChOGeneralOptions.usedCityNum > Seed.cities.length -1 ) STrChOGeneralOptions.usedCityNum = 0; if (STrChOGeneralOptions.salvageCityNum && STrChOGeneralOptions.salvageCityNum > Seed.cities.length -1 ) STrChOGeneralOptions.salvageCityNum = 0; installThroneHandlerFunctions(); //installHandlerFunctions setCities(); //window.addEventListener('unload', onUnload, false); window.addEventListener('beforeunload', onUnload, false); CM.cheatDetector.detect = foo; AddMainTabLink('Spawn TrChO', eventHideShow, mouseEventTab); ThroneAttachTab(); alterChampHall(); if (!STrChOGeneralOptions.xPos) STrChOGeneralOptions.xPos=0; if (!STrChOGeneralOptions.yPos) STrChOGeneralOptions.yPos=30; //mainPop = new STrChOPopup('STrChOMain', 0, 30, true, function (){ tabManager.hideTab(); }); mainPop = new STrChOPopup ('STrChOMain', STrChOGeneralOptions.xPos, STrChOGeneralOptions.yPos, true, function (){ tabManager.hideTab(); }); mainPop.getMainDiv().innerHTML = ''; tabManager.init (mainPop.getMainDiv()); if (!STrChOGeneralOptions.hidden) eventHideShow(); setUpgradeColor(); STrChOThroneDisplayTimer = setInterval(ThroneUpdateTimerDisplay, 1000); ReplaceToolTips(); uW.STrChOLoaded = true; } var foo = function() { }; /*********************************** TABS ***********************************/ Tabs.throneUpgrader = { tabOrder: 101, tabLabel: 'UPGRADER', tabColor: 'red', tabHeader: 'THRONE ROOM UPGRADER', myDiv: null, repairId: 0, repairEnd: 0, timerH: null, clearTimerH: null, speedup: 0, upgradePath: { 0: { maxLev: 2, nextQual: 2 }, 1: { maxLev: 2, nextQual: 2 }, 2: { maxLev: 3, nextQual: 4 }, 3: { maxLev: 3, nextQual: 4 }, 4: { maxLev: 4, nextQual: 5 }, 5: { maxLev: 5, nextQual: 6 } }, init: function (div) { var t = Tabs.throneUpgrader; t.mydiv = div; var m = '
' + t.tabHeader + '
'; m += '
'; m += '
'; m += ''; m += ''; if (STrChOThroneUpgradeData.active) { m += ''; } else { m += ''; } m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += '
Upgrade 1 At A Time



'; m += '
'; m += '
 SPEED UPS 
'; m += '
'; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += '
Only use hourglass for levels '; m += ' and higher
Only use hourglass for qualities '; m += ' and higher
' + STrChOHourGlassName[1] + ' (
' : '>') + uW.ksoItems[1].count + '
)
' + STrChOHourGlassName[2] + ' (
' : '>') + uW.ksoItems[2].count + '
)
' + STrChOHourGlassName[3] + ' (
' : '>') + uW.ksoItems[3].count + '
)
' + STrChOHourGlassName[4] + ' (
' : '>') + uW.ksoItems[4].count + '
)
' + STrChOHourGlassName[5] + ' (
' : '>') + uW.ksoItems[5].count + '
)
' + STrChOHourGlassName[6] + ' (
' : '>') + uW.ksoItems[6].count + '
)
' + STrChOHourGlassName[7] + ' (
' : '>') + uW.ksoItems[7].count + '
)
' + STrChOHourGlassName[8] + ' (
' : '>') + uW.ksoItems[8].count + '
)
'; m += '
Override hourglasses by using '; m += ' every time
'; m += '
'; m += '
 BOOST ITEMS 
'; m += '
'; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; //m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ' '; m += '
Lesser Protection Stones (
' + uW.ksoItems[20001].count + '
)
Protection Stones (
' + uW.ksoItems[20002].count + '
)
'; m += '
Lesser Mystic Orb (
' + Seed.items['i20003'] + '
)
Mystic Orb (
' + uW.ksoItems[20004].count + '
)
'; m += 'Quality and higher
Lesser Tokens (
' + uW.ksoItems[20005].count + '
)
Lucky Tokens (
' + uW.ksoItems[20006].count + '
)
Level & Higher
'; m += ' Use Auto Masters Upgrade When Min Level '; m += ' & Max Level '; m += ''; m += '
'; m += '
'; m += '
 UPGRADE ITEMS 
'; m += '
'; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += '
Enhance All Quality To Quality   
Upgrade All Cards Less To Level   
Upgrade All Level To Level   
Item:  '; m += 'Action:  '; m += '
 '; m += ''; m += '
'; m += '
'; m += '
UPGRADE LIST
'; m += ''; m += ''; m += ''; m += '
'; m += '
'; m += '
'; m += '
'; m += '
'; m += '
'; m += ''; t.mydiv.innerHTML = '
' + m + '
'; document.getElementById('STrChOThroneUpgraderSaveSettings').addEventListener('click', function () { SaveSettingsToFile(STrChOThroneUpgradeData); }, false); document.getElementById('STrChOThroneUpgraderLoadSettings').addEventListener('click', function () { var loader = document.getElementById('STrChOSettingsFile'); loader.addEventListener('change', function () { LoadSettingsFromFile(STrChOThroneUpgradeData, Tabs.throneUpgrader); }, false); loader.click(); }, false); var header = document.getElementsByClassName('STrChOHeader'); for (var head=0;head= high_level) return; for (ThroneId in uW.kocThroneItems) { var ThroneItem = uW.kocThroneItems[ThroneId]; if (ThroneItem.quality == low_level) { var qItem = new QueueItem(); qItem.item = ThroneId; qItem.action = "enhance" qItem.level = high_level STrChOThroneQueueData.list.push(qItem); } } SAVESTrChOThroneQueueData(); t.buildThroneQueueDisplay(); }, false); document.getElementById('STrChOThroneUpgradeAddAllLevelMax').addEventListener('click', function () { var high_level = parseInt(document.getElementById('STrChOThroneUpgradeAddAllLevelMaxTo').value); for (ThroneId in uW.kocThroneItems) { var ThroneItem = uW.kocThroneItems[ThroneId]; if (ThroneItem.level < high_level) { var qItem = new QueueItem(); qItem.item = ThroneId; qItem.action = "upgrade" qItem.level = high_level STrChOThroneQueueData.list.push(qItem); } } SAVESTrChOThroneQueueData(); t.buildThroneQueueDisplay(); }, false); document.getElementById('STrChOThroneUpgradeAddAllLevel').addEventListener('click', function () { var low_level = parseInt(document.getElementById('STrChOThroneUpgradeAllLevel').value); var high_level = parseInt(document.getElementById('STrChOThroneUpgradeAllLevelTo').value); if (low_level >= high_level) return; for (ThroneId in uW.kocThroneItems) { var ThroneItem = uW.kocThroneItems[ThroneId]; if (ThroneItem.level == low_level) { var qItem = new QueueItem(); qItem.item = ThroneId; qItem.action = "upgrade" qItem.level = high_level STrChOThroneQueueData.list.push(qItem); } } SAVESTrChOThroneQueueData(); t.buildThroneQueueDisplay(); }, false); document.getElementById('STrChOThroneAction').addEventListener('change', function () { t.buildThroneLevelWidget(); }, false); // wait for the current repair to finish before starting if (STrChOThroneUpgradeData.active) t.setStatus("Loading ...."); else t.setStatus("Powered Off"); t.startTimer(); t.buildThroneLevelWidget(); t.refreshAetherDisplay(); t.buildThroneQueueDisplay(); }, startTimer: function () { var t = Tabs.throneUpgrader; var delay = 2 + Math.random() * 8; if (Seed.queue_throne != null && Seed.queue_throne.end != null) { var repairTimeLeft = Seed.queue_throne.end - unixTime(); t.repairEnd = Seed.queue_throne.end; t.repairId = Seed.queue_throne.itemId; var n = new Date(t.repairEnd * 1000); var throne_item = uW.kocThroneItems[t.repairId]; t.setStatus("Waiting until " + n.toLocaleTimeString() + " for repair to complete. Item: " + throne_item.name); if (STrChOThroneUpgradeData.useSH || STrChOThroneUpgradeData.useKH || STrChOThroneUpgradeData.useGH || STrChOThroneUpgradeData.useMH || STrChOThroneUpgradeData.useAH || STrChOThroneUpgradeData.useWH || STrChOThroneUpgradeData.useDH || STrChOThroneUpgradeData.useEH || (STrChOThroneUpgradeData.overrideSpeedUp && STrChOThroneUpgradeData.useSpeedUp > 0)) { var throneQuality = throne_item.quality; var throneLevel = throne_item.level; var useThoseSpeedups = true; if (STrChOThroneUpgradeData.hourglassQualitySpecific && throneQuality < STrChOThroneUpgradeData.hourglassQuality) useThoseSpeedups = false; if (STrChOThroneUpgradeData.hourglassLevelSpecific && throneLevel < STrChOThroneUpgradeData.hourglassLevel) useThoseSpeedups = false; if (STrChOThroneUpgradeData.overrideSpeedUp) useThoseSpeedups = true; if (useThoseSpeedups) { setTimeout(function () { t.doSpeedup(); }, 2000); } } setTimeout(t.clearRepair, (repairTimeLeft + 1) * 1000); if (repairTimeLeft > 0) delay += repairTimeLeft; } if (t.timerH == null) t.timerH = setTimeout(t.doAction, delay * 1000); }, hide: function () {}, refreshAetherDisplay : function () { document.getElementById('STrChOThroneAetherDisplay').innerHTML = displayCityAstone(); }, show: function () { var t = Tabs.throneUpgrader; t.startTimer(); t.refreshAetherDisplay(); t.buildThroneQueueDisplay(); }, doAction: function () { var t = Tabs.throneUpgrader; if (STrChOThroneRepairData.active) { t.setStatus('Waiting for repair tab to finish...'); return; } var retryTime = STrChOGeneralOptions.retryInterval; try { // check if repair is done var ti = t.clearRepair(); if (ti <= 0) { // repair is done if (STrChOThroneQueueData.oneItem || (STrChOThroneQueueData.doingRepairs == true)) { for (queueItems in STrChOThroneQueueData.list) { var qItem = STrChOThroneQueueData.list[queueItems]; if (!qItem) continue; var throneItem = uW.kocThroneItems[qItem.item]; if ((throneItem == null) || (STrChOThroneQueueData.list[queueItems].status == "complete")) continue; if (throneItem.isBroken) { t.doRepair(throneItem.id); clearTimeout(t.timerH); t.timerH = setTimeout(t.doAction, retryTime * 1000); return; } else if (STrChOThroneQueueData.oneItem) { break; } } } STrChOThroneQueueData.doingRepairs = false; // all repairs complete t.selectNext(); // set the index SAVESTrChOThroneQueueData(); // if we reach the end of the queue, start repair cycle if (STrChOThroneQueueData.index < 0) { t.setStatus("Reached end of queue.") t.setResult(""); if (!STrChOThroneUpgradeData.active) t.setStatus("Powered Off"); STrChOThroneQueueData.doingRepairs = true; SAVESTrChOThroneQueueData(); clearTimeout(t.timerH); t.timerH = setTimeout(t.doAction, retryTime * 1000); return; } // upgrade/enhance next item var qItem = STrChOThroneQueueData.list[STrChOThroneQueueData.index]; if (qItem) { if (qItem.action == "enhance") t.doEnhance(qItem.item); else t.doUpgrade(+qItem.item, false); } } else { // come back after repair is complete retryTime = ti + 5; var n = new Date(t.repairEnd * 1000); t.setStatus("Waiting until " + n.toLocaleTimeString() + " for repair to complete. Item: " + uW.kocThroneItems[t.repairId].name); if (STrChOThroneUpgradeData.useSH || STrChOThroneUpgradeData.useKH || STrChOThroneUpgradeData.useGH || STrChOThroneUpgradeData.useMH || STrChOThroneUpgradeData.useAH || STrChOThroneUpgradeData.useWH || STrChOThroneUpgradeData.useDH || STrChOThroneUpgradeData.useEH || (STrChOThroneUpgradeData.overrideSpeedUp && STrChOThroneUpgradeData.useSpeedUp > 0)) { var throneItem = uW.kocThroneItems[t.repairId]; var trQuality = throneItem.quality; var trLevel = throneItem.level; var useThoseSpeedups = true; if (STrChOThroneUpgradeData.hourglassQualitySpecific && trQuality < STrChOThroneUpgradeData.hourglassQuality) useThoseSpeedups = false; if (STrChOThroneUpgradeData.hourglassLevelSpecific && trLevel < STrChOThroneUpgradeData.hourglassLevel) useThoseSpeedups = false; if (STrChOThroneUpgradeData.overrideSpeedUp) useThoseSpeedups = true; if (useThoseSpeedups) { setTimeout(function () { t.doSpeedup(); }, 2000); } retryTime = 1; } } CM.ThroneView.renderInventory(uW.kocThroneItems); } catch (e) { } // recycle clearTimeout(t.timerH); t.timerH = setTimeout(t.doAction, retryTime * 1000); }, doSpeedup: function () { var t = Tabs.throneUpgrader; var endTime = t.repairEnd; var startTime = unixTime(); var secondsForRepair = endTime - startTime; var divId = ""; t.speedup = 0; if (secondsForRepair > 0 && STrChOThroneUpgradeData.overrideSpeedUp && STrChOThroneUpgradeData.useSpeedUp > 0) { t.speedup = STrChOThroneUpgradeData.useSpeedUp; } else { if (t.speedup == 0 && secondsForRepair >= HOURGLASSES_TIME_MIN_THRESHOLD.day25 && STrChOThroneUpgradeData.useEH && uW.ksoItems[8].count > 0) { t.speedup = 8; } if (t.speedup == 0 && secondsForRepair >= HOURGLASSES_TIME_MIN_THRESHOLD.hour24 && STrChOThroneUpgradeData.useDH && uW.ksoItems[7].count > 0) { t.speedup = 7; } if (t.speedup == 0 && secondsForRepair >= HOURGLASSES_TIME_MIN_THRESHOLD.hour15 && STrChOThroneUpgradeData.useWH && uW.ksoItems[6].count > 0) { t.speedup = 6; } if (t.speedup == 0 && secondsForRepair >= HOURGLASSES_TIME_MIN_THRESHOLD.hour8 && STrChOThroneUpgradeData.useAH && uW.ksoItems[5].count > 0) { t.speedup = 5; } if (t.speedup == 0 && secondsForRepair >= HOURGLASSES_TIME_MIN_THRESHOLD.hour25 && STrChOThroneUpgradeData.useMH && uW.ksoItems[4].count > 0) { t.speedup = 4; } if (t.speedup == 0 && secondsForRepair >= HOURGLASSES_TIME_MIN_THRESHOLD.hour1 && STrChOThroneUpgradeData.useGH && uW.ksoItems[3].count > 0) { t.speedup = 3; } if (t.speedup == 0 && secondsForRepair >= HOURGLASSES_TIME_MIN_THRESHOLD.minute15 && STrChOThroneUpgradeData.useKH && uW.ksoItems[2].count > 0) { t.speedup = 2; } if (t.speedup == 0 && secondsForRepair >= HOURGLASSES_TIME_MIN_THRESHOLD.minute1 && STrChOThroneUpgradeData.useSH && uW.ksoItems[1].count > 0) { t.speedup = 1; } } switch (t.speedup) { case "1": case 1: secondsForRepair -= HOURGLASSES_TIME.minute1; divId = 'STrChOThroneUseSHLabel'; break; case "2": case 2: secondsForRepair -= HOURGLASSES_TIME.minute15; divId = 'STrChOThroneUseKHLabel'; break; case "3": case 3: secondsForRepair -= HOURGLASSES_TIME.hour1; divId = 'STrChOThroneUseGHLabel'; break; case "4": case 4: secondsForRepair -= HOURGLASSES_TIME.hour25; divId = 'STrChOThroneUseMHLabel'; break; case "5": case 5: secondsForRepair -= HOURGLASSES_TIME.hour8; divId = 'STrChOThroneUseAHLabel'; break; case "6": case 6: secondsForRepair -= HOURGLASSES_TIME.hour15; divId = 'STrChOThroneUseWHLabel'; break; case "7": case 7: secondsForRepair -= HOURGLASSES_TIME.hour24; divId = 'STrChOThroneUseDHLabel'; break; case "8": case 8: secondsForRepair -= HOURGLASSES_TIME.day25; divId = 'STrChOThroneUseEHLabel'; break; } if (t.speedup != 0) { t.setResult('Used ' + uW.ksoItems[t.speedup].name); var divCount = uW.ksoItems[t.speedup].count - 1; var divSpeedups = document.getElementById(divId); divSpeedups.innerHTML = divCount; uW.modal_speedup_apply("throne", t.speedup, t.repairId); if (secondsForRepair <= 0) { secondsForRepair = 0; endTime = startTime; t.clearTimerH = setTimeout(t.clearRepair, 1000); t.buildThroneQueueDisplay(); } else { endTime = unixTime() + secondsForRepair; t.repairEnd = endTime; var n = new Date(t.repairEnd * 1000); var item = uW.kocThroneItems[t.repairId]; t.setStatus("Repair begun ... Repair will be complete at " + n.toLocaleTimeString() + ". Item: " + item.name); t.clearTimerH = setTimeout(t.clearRepair, secondsForRepair * 1000); t.buildThroneQueueDisplay(); } t.repairEnd = endTime; setTimeout(function () { t.doSpeedup(); }, 1000); } }, selectNext: function () { if (STrChOThroneQueueData.index >= STrChOThroneQueueData.list.length) STrChOThroneQueueData.index = 0; if (STrChOThroneQueueData.index < 0) STrChOThroneQueueData.index = 0; // for single item mode, always start from the top if (STrChOThroneQueueData.oneItem) STrChOThroneQueueData.index = 0; var l = STrChOThroneQueueData.list.length; for (i = STrChOThroneQueueData.index; i < l; i++) { var item = STrChOThroneQueueData.list[i]; if (!item) continue; var throneItem = uW.kocThroneItems[item.item]; if ((STrChOThroneQueueData.list[i].status != "complete") && (throneItem != null) && (!throneItem.isBroken)) { if (((item.action == "enhance") && (item.level <= throneItem.quality)) || ((item.action == "upgrade") && (item.level <= throneItem.level))) { item.status = "complete"; } else { STrChOThroneQueueData.index = i; return; } } } STrChOThroneQueueData.index = -1; // if we get here, the queue is complete }, doEnhance: function (eItem) { var t = Tabs.throneUpgrader; try { if (STrChOThroneUpgradeData.active == false || eItem == 0) { t.setStatus("Powered Off"); return; } var throne_item = uW.kocThroneItems[eItem]; if (!throne_item) return; if (throne_item.isBroken) { // repair and then try again later t.doRepair(eItem); return; } var num_city = pickAetherUseCity(); if (num_city < 0) { t.setStatus("Not enough aetherstones to enhance. Minimum of " + STrChOGeneralOptions.minStones + " needed. Waiting for more ..."); return; } var t_city = uW.currentcityid; uW.currentcityid = Seed.cities[num_city][0]; var w = CM.ThronePanelController.calcCost("enhance", throne_item, null, "stones"); uW.currentcityid = t_city; if ((w.gems.use > 0) || (w.stones.total > parseInt(Seed.resources["city" + Seed.cities[num_city][0]]["rec5"][0]))) { t.setStatus("Not enough aetherstones to enhance."); return; } var qI = STrChOThroneQueueData.list[STrChOThroneQueueData.index]; if (qI) { qI.triesTotal++; qI.triesThis++; } var buffItemId = 0; var useDiv = ''; if (STrChOThroneUpgradeData.active && STrChOThroneQueueData.index != -1 && STrChOThroneUpgradeData.useQuality <= throne_item.quality) { if (STrChOThroneUpgradeData.useORB) { if (Seed.items['i20004'] > 0) { buffItemId = 20004; useDiv = 'STrChOThroneUseORBLabel'; } } /* if (TRupgradeData.useLORB) { if (Seed.items['i20003'] > 0) buffItemId = 20003; } */ if (STrChOThroneUpgradeData.usePS) { if (Seed.items['i20002'] > 0) { buffItemId = 20002; useDiv = 'STrChOThroneUsePSLabel'; } } if (STrChOThroneUpgradeData.useLPS) { if (Seed.items['i20001'] > 0) { buffItemId = 20001; useDiv = 'STrChOThroneUseLPSLabel'; } } if (buffItemId) CM.InventoryView.removeItemFromInventory(buffItemId); } if (useDiv != '') document.getElementById(useDiv).innerHTML = uW.ksoItems[buffItemId].count; var params = uW.Object.clone(ajfx); params.ctrl = 'throneRoom\\ThroneRoomServiceAjax'; params.action = 'upgradeQuality'; params.throneRoomItemId = eItem; params.payment = "aetherstone"; params.buffItemId = buffItemId; params.cityId = Seed.cities[num_city][0]; t.setStatus("Sending enhance request"); new AjaxRequest(uW.g_ajaxpath + "ajax/_dispatch53.php" + uW.g_ajaxsuffix, { method: "post", parameters: params, loading: true, onSuccess: function (transport) { try { var rslt = eval("(" + transport.responseText + ")"); if (rslt.updateSeed) uW.update_seed(rslt.updateSeed); if (rslt.ok) { Seed.resources["city" + Seed.cities[num_city][0]]["rec5"][0] = Seed.resources["city" + Seed.cities[num_city][0]]["rec5"][0] - rslt.aetherstones; if (rslt.gems > 0) { ActionLog('Upgrader accidentally spent gems! Upgrader turned off'); t.setStatus("Error ... shutting down"); STrChOThroneUpgradeData.active = false; SAVESTrChOThroneUpgradeData(); } throne_item.level = rslt.item.level; throne_item.quality = rslt.item.quality throne_item.status = rslt.item.status; if (rslt.success) { throne_item.name = throne_item.createName(); STrChOThroneUpgradeStats.enhanceSuccess[throne_item.quality - 1][throne_item.level]++; SAVESTrChOThroneUpgradeStats(); t.setResult("Enhance successful. " + addCommas(rslt.aetherstones) + " aetherstones used."); t.refreshAetherDisplay(); t.setStatus("Attempting next action"); CM.sounds.play("tr_success_build"); // update the cost line var qItem = STrChOThroneQueueData.list[STrChOThroneQueueData.index]; if (qItem) { var now = new Date(); qItem.lastUpgrade = "Enhanced to " + throneCardQualities[throne_item.quality] + " " + now.toDateString().substring(3, 10) + " " + now.toTimeString().substring(0, 8) + " in " + qItem.triesThis + " attempts"; if (!qItem.upgrades) qItem.upgrades = []; qItem.upgrades.push(qItem.lastUpgrade); var msg = 'Enhanced ' + uW.kocThroneItems[eItem].name + ' [ ' + eItem + '] to quality ' + rslt.item.quality + " in " + qItem.triesThis + " attempts. " + qItem.triesTotal + " total attempts for this item."; if (STrChOGeneralOptions.whisperToMe) sendChat("/" + Seed.player.name + ' ' + msg); if (STrChOGeneralOptions.sendToInbox) sendComposedMail(Seed.player.name, 'THRONE: Enhance Success : ' + uW.kocThroneItems[eItem].name, msg); SuccessLog(msg); if (qItem.level <= throne_item.quality) { qItem.status = "complete"; STrChOThroneUpgradeData.newUpgradeState = 2; } else { var now = new Date(); qItem.status = "Partially enhanced"; qItem.triesLast = qItem.triesThis; qItem.triesThis = 0; if (STrChOThroneUpgradeData.newUpgradeState != 2) STrChOThroneUpgradeData.newUpgradeState = 1; } SAVESTrChOThroneUpgradeData(); setUpgradeColor(); } } else { STrChOThroneUpgradeStats.enhanceFailure[throne_item.quality][throne_item.level]++; SAVESTrChOThroneUpgradeStats(); ActionLog('Enhance failed. Throne Room item ' + uW.kocThroneItems[eItem].name + (buffItemId > 0 ? ' - (' + Seed.items['i' + buffItemId] + ' ' + uW.itemlist['i' + buffItemId].name + ' remaining)' : '')); if (rslt["break"]) { throne_item.isBroken = true; throne_item.brokenType = "quality"; throne_item.name = throne_item.createName(); } t.setResult("Enhance failed. " + addCommas(rslt.aetherstones) + " aetherstones used"); t.refreshAetherDisplay(); var qItem = STrChOThroneQueueData.list[STrChOThroneQueueData.index]; if (qItem) if (qItem.status == "not started") qItem.status = "started"; } CM.ThroneView.renderInventory(uW.kocThroneItems); SAVESTrChOThroneQueueData(); t.buildThroneQueueDisplay(); clearTimeout(t.timerH); t.timerH = setTimeout(t.doAction, 10 * 1000); } else { t.setStatus("Unable to enhance at this time ... waiting for next cycle"); } } catch (e) { } return; }, onFailure: function (rst) { t.setStatus("Unable to send enhance request. Waiting for next cycle"); return; } }); } catch (e) { } return; }, doUpgrade: function (uItemId, bypass) { var t = Tabs.throneUpgrader; var throne_item = uW.kocThroneItems[uItemId]; if (uItemId == 0 || throne_item == null) { t.setStatus("Item not found."); return; } if ((STrChOThroneUpgradeData.active == false) && (bypass != true)) { t.setStatus("Powered Off"); return; } if (bypass == true && Tabs.throneSalvager.deleting != true) { // delete cycle has been canceled. Don't upgrade this item return; } if (throne_item.isBroken) { // repair and then try again later t.doRepair(uItemId); return; } var num_city = pickAetherUseCity(); if (num_city < 0) { t.setStatus("Not enough aetherstones to upgrade. Minimum of " + STrChOGeneralOptions.minStones + " needed. Waiting for more ..."); return; } var t_city = uW.currentcityid; uW.currentcityid = Seed.cities[num_city][0]; var w = CM.ThronePanelController.calcCost("upgrade", throne_item, null, "stones"); uW.currentcityid = t_city; if ((w.gems.use > 0) || (w.stones.total > parseInt(Seed.resources["city" + Seed.cities[num_city][0]]["rec5"][0]))) { t.setStatus("Not enough aetherstones to upgrade."); return; } if (bypass != true) { var qI = STrChOThroneQueueData.list[STrChOThroneQueueData.index]; if (qI) { qI.triesTotal++; qI.triesThis++; } t.setStatus("Sending upgrade request ..."); } var buffItemId = 0; var useDiv = ''; if (STrChOThroneUpgradeData.active && STrChOThroneQueueData.index != -1 && STrChOThroneUpgradeData.useLevel <= throne_item.level) { if (STrChOThroneUpgradeData.useLT) { if (Seed.items['i20006'] > 0) { buffItemId = 20006; useDiv = 'STrChOThroneUseLTLabel'; } } if (STrChOThroneUpgradeData.useLLT) { if (Seed.items['i20005'] > 0) { buffItemId = 20005; useDiv = 'STrChOThroneUseLLTLabel'; } } if (STrChOThroneUpgradeData.usePS) { if (Seed.items['i20002'] > 0) { buffItemId = 20002; useDiv = 'STrChOThroneUsePSLabel'; } } if (STrChOThroneUpgradeData.useLPS) { if (Seed.items['i20001'] > 0) { buffItemId = 20001; useDiv = 'STrChOThroneUseLPSLabel'; } } } if (STrChOThroneUpgradeData.useAutoTokens) { if (STrChOThroneUpgradeData.useAutoTokensMin <= STrChOThroneUpgradeData.useAutoTokensMax) { var throneLevel = throne_item.level; if (throneLevel >= STrChOThroneUpgradeData.useAutoTokensMin && throneLevel < STrChOThroneUpgradeData.useAutoTokensMax) { var nextMastersID = getNextAvailableMasters(throne_item); if (nextMastersID != 0) { buffItemId = nextMastersID; ActionLog('Using ' + uW.ksoItems[buffItemId].name + ' on item: ' + throne_item.name); } } } } if (buffItemId) CM.InventoryView.removeItemFromInventory(buffItemId); if (useDiv != '') document.getElementById(useDiv).innerHTML = uW.ksoItems[buffItemId].count; var params = uW.Object.clone(ajfx); params.ctrl = 'throneRoom\\ThroneRoomServiceAjax'; params.action = 'upgradeLevel'; params.throneRoomItemId = uItemId; params.buffItemId = buffItemId; params.payment = "aetherstone"; params.cityId = Seed.cities[num_city][0]; new AjaxRequest(uW.g_ajaxpath + "ajax/_dispatch53.php" + uW.g_ajaxsuffix, { method: "post", parameters: params, loading: true, onSuccess: function (transport) { try { var rslt = eval("(" + transport.responseText + ")"); if (rslt.ok) { if (rslt.updateSeed) uW.update_seed(rslt.updateSeed); Seed.resources["city" + Seed.cities[num_city][0]]["rec5"][0] = Seed.resources["city" + Seed.cities[num_city][0]]["rec5"][0] - rslt.aetherstones; if (rslt.gems > 0) { t.setStatus("Error .... Shutting down."); ActionLog('Upgrader accidentally spent gems! Upgrader turned off'); STrChOThroneUpgradeData.active = false; SAVESTrChOThroneUpgradeData(); } if (rslt.success) { throne_item.level = rslt.item.level; throne_item.quality = rslt.item.quality; throne_item.name = throne_item.createName(); if (bypass != true) { t.show(); STrChOThroneUpgradeStats.upgradeSuccess[throne_item.quality][throne_item.level - 1]++; SAVESTrChOThroneUpgradeStats(); t.setResult("Upgrade successful. " + addCommas(rslt.aetherstones) + " aetherstones used."); t.refreshAetherDisplay(); t.setStatus("Attempting next upgrade"); CM.sounds.play("tr_success_build"); var qItem = STrChOThroneQueueData.list[STrChOThroneQueueData.index]; if (qItem) { var now = new Date(); qItem.lastUpgrade = "Upgraded to +" + throne_item.level + " " + now.toDateString().substring(3, 10) + " " + now.toTimeString().substring(0, 8) + " in " + qItem.triesThis + " attempts"; if (!qItem.upgrades) qItem.upgrades = []; qItem.upgrades.push(qItem.lastUpgrade); var msg = 'Upgraded ' + uW.kocThroneItems[uItemId].name + ' [' + uItemId + '] to level ' + rslt.item.level + " in " + qItem.triesThis + " attempts. " + qItem.triesTotal + " total attempts for this item."; if (STrChOGeneralOptions.whisperToMe) sendChat("/" + Seed.player.name + ' ' + msg); if (STrChOGeneralOptions.sendToInbox) sendComposedMail(Seed.player.name, 'THRONE: Upgrade Success : ' + uW.kocThroneItems[uItemId].name, msg); SuccessLog(msg); if (qItem.level <= throne_item.level) { qItem.status = "complete"; STrChOThroneUpgradeData.newUpgradeState = 2; } else { var now = new Date(); qItem.status = "Partially upgraded"; qItem.triesLast = qItem.triesThis; qItem.triesThis = 0; if (STrChOThroneUpgradeData.newUpgradeState != 2) STrChOThroneUpgradeData.newUpgradeState = 1; } SAVESTrChOThroneUpgradeData(); setUpgradeColor(); } } } else { STrChOThroneUpgradeStats.upgradeFailure[throne_item.quality][throne_item.level]++; SAVESTrChOThroneUpgradeStats(); ActionLog('Upgrade failed Throne Room item ' + uW.kocThroneItems[uItemId].name); if (!params.buffItemId) { throne_item.isBroken = true; throne_item.brokenType = "level"; throne_item.name = throne_item.createName(); throne_item.status = rslt.item.status; } if (bypass != true) { t.setResult("Upgrade failed. " + addCommas(rslt.aetherstones) + " aetherstones used"); t.refreshAetherDisplay(); var qItem = STrChOThroneQueueData.list[STrChOThroneQueueData.index]; if (qItem.status == "not started") qItem.status = "started"; } } CM.ThroneView.renderInventory(uW.kocThroneItems); SAVESTrChOThroneQueueData(); t.buildThroneQueueDisplay(); clearTimeout(t.timerH); t.timerH = setTimeout(t.doAction, 10 * 1000); if (rslt.heatupModifier) CM.HeatUpModel.attemptCallback(+(rslt.heatupModifier)); return; } else { if (bypass != true) { t.setStatus("Upgrade request not accepted. Waiting for next cycle."); } else { if (rslt.msg && rslt.msg.indexOf("Has status 2") > -1) { // the object is in the locked rows. Shutdown deleting until the next pass Tabs.throneSalvager.delItems = []; Tabs.throneSalvager.deleting = false; } } } } catch (e) { } return; }, onFailure: function (rrr) { t.setStatus("Unable to transmitt upgrade request. Waiting for next cycle."); CM.ThroneView.renderInventory(uW.kocThroneItems); return; } }); return; }, doRepair: function (rItem) { var t = Tabs.throneUpgrader; var params = uW.Object.clone(ajfx); if (STrChOThroneUpgradeData.active == false || rItem == 0 || uW.kocThroneItems[rItem] == null) return; //repair is turned off var theItem = uW.kocThroneItems[rItem]; params.action = 'timeRepair'; params.throneRoomItemId = rItem; params.ctrl = 'throneRoom\\ThroneRoomServiceAjax'; new AjaxRequest(uW.g_ajaxpath + "ajax/_dispatch53.php" + uW.g_ajaxsuffix, { method: "post", parameters: params, loading: true, onSuccess: function (transport) { var rslt = eval("(" + transport.responseText + ")"); if (rslt.ok) { var item = uW.kocThroneItems[rItem]; var startTime = unixTime(); var endTime = rslt.eta; ActionLog('Starting repair for Throne Room item ' + item.name); Seed.queue_throne.itemId = item.id; Seed.queue_throne.start = startTime; Seed.queue_throne.end = endTime; t.repairId = item.id; t.repairEnd = endTime; var n = new Date(t.repairEnd * 1000); t.setStatus("Repair begun ... Repair will be complete at " + n.toLocaleTimeString() + ". Item: " + item.name); var secondsForRepair = t.repairEnd - startTime; if (secondsForRepair < 0) secondsForRepair = 0; CM.ThroneView.renderInventory(uW.kocThroneItems); t.clearTimerH = setTimeout(t.clearRepair, (secondsForRepair + 1) * 1000); t.buildThroneQueueDisplay(); if (STrChOThroneUpgradeData.useSH || STrChOThroneUpgradeData.useKH || STrChOThroneUpgradeData.useGH || STrChOThroneUpgradeData.useMH || STrChOThroneUpgradeData.useAH || STrChOThroneUpgradeData.useWH || STrChOThroneUpgradeData.useDH || STrChOThroneUpgradeData.useEH || (STrChOThroneUpgradeData.overrideSpeedUp && STrChOThroneUpgradeData.useSpeedUp > 0)) { var throneItem = uW.kocThroneItems[t.repairId]; var trQuality = throneItem.quality; var trLevel = throneItem.level; var useThoseSpeedups = true; if (STrChOThroneUpgradeData.hourglassQualitySpecific && trQuality < STrChOThroneUpgradeData.hourglassQuality) useThoseSpeedups = false; if (STrChOThroneUpgradeData.hourglassLevelSpecific && trLevel < STrChOThroneUpgradeData.hourglassLevel) useThoseSpeedups = false; if (STrChOThroneUpgradeData.overrideSpeedUp) useThoseSpeedups = true; if (useThoseSpeedups) { setTimeout(function () { t.doSpeedup(); }, 2000); } } } else { if (rslt.msg == "Item is not broken") { uW.kocThroneItems[rItem].isBroken = false; t.clearRepair(); } // regrab the end times in case this is caused by a manual repair if (Seed.queue_throne && Seed.queue_throne.end && Seed.queue_throne.itemId) { t.repairEnd = Seed.queue_throne.end; t.repairId = Seed.queue_throne.itemId; } } return; }, onFailure: function (ttt) { // this usually means a repair is in progress (such as a manual repair). Grab the seed data (if possible) if (Seed.queue_throne && Seed.queue_throne.end) { t.repairEnd = Seed.queue_throne.end; t.repairId = Seed.queue_throne.itemId; } return; } }); return; }, clearRepair: function () { var t = Tabs.throneUpgrader; var timeUntilDone = 0; if (t.repairEnd == 0) { return timeUntilDone; } timeUntilDone = t.repairEnd - unixTime(); if (timeUntilDone <= 0) { if (t.repairId != 0 && uW.kocThroneItems[t.repairId] != null) { if (uW.kocThroneItems[t.repairId].isBroken == true) { t.setStatus("Repair time complete."); } uW.kocThroneItems[t.repairId].isBroken = false; uW.kocThroneItems[t.repairId].brokenType = ""; t.repairId = 0; } } CM.ThroneView.renderInventory(uW.kocThroneItems); return timeUntilDone; }, addUpgradeItem: function (throneId) { var t = Tabs.throneUpgrader; var qItem = new QueueItem(); qItem.item = throneId; qItem.action = "upgrade"; qItem.level = STrChOMaxThroneLevel; STrChOThroneQueueData.list.push(qItem); SAVESTrChOThroneQueueData(); document.getElementById('throneInventoryItem' + throneId).className = 'STrChOBlueBorder'; t.buildThroneQueueDisplay(); }, addEnhanceItem: function (throneId) { var t = Tabs.throneUpgrader; var qItem = new QueueItem(); qItem.item = throneId; qItem.action = "enhance"; qItem.level = STrChOMaxThroneQuality; STrChOThroneQueueData.list.push(qItem); SAVESTrChOThroneQueueData(); document.getElementById('throneInventoryItem' + throneId).className = 'STrChOYellowBorder'; t.buildThroneQueueDisplay(); }, addBothThroneItem: function (throneId) { var t = Tabs.throneUpgrader; var throneItem = uW.kocThroneItems[throneId]; if (throneItem == null || !throneItem) return; var qual = +throneItem.quality; var lev = +throneItem.level; if (qual >= STrChOMaxThroneQuality) return; var maxLev = null; var nextQual = null; var qItem = null; while (qual < STrChOMaxThroneQuality) { maxLev = t.upgradePath[qual].maxLev; nextQual = t.upgradePath[qual].nextQual; if (lev < maxLev) { qItem = new QueueItem(); qItem.item = throneId; qItem.action = "upgrade"; qItem.level = maxLev; STrChOThroneQueueData.list.push(qItem); document.getElementById('throneInventoryItem' + throneId).className = 'STrChOBlueBorder'; } qItem = new QueueItem(); qItem.item = throneId; qItem.action = "enhance"; qItem.level = nextQual; STrChOThroneQueueData.list.push(qItem); document.getElementById('throneInventoryItem' + throneId).className = 'STrChOYellowBorder'; lev = maxLev; qual = nextQual; } STrChOThroneQueueData(); t.buildThroneQueueDisplay(); }, addThroneQueue: function () { var t = Tabs.throneUpgrader; var action = document.getElementById('STrChOThroneAction').value; if (action == "both") { t.addBothThroneItem(document.getElementById('STrChOThroneUpgradeList').value); return; } var qItem = new QueueItem(); qItem.item = document.getElementById('STrChOThroneUpgradeList').value; qItem.action = document.getElementById('STrChOThroneAction').value; qItem.level = document.getElementById('STrChOThroneMaxLevel').value; if (qItem.item == 0) return; STrChOThroneQueueData.list.push(qItem); SAVESTrChOThroneQueueData(); t.buildThroneQueueDisplay(); }, buildThroneLevelWidget: function () { var t = Tabs.throneUpgrader; var m; var STrChOThroneAction = document.getElementById('STrChOThroneAction'); if (STrChOThroneAction.value == "enhance") { m = ' Max: '; } else if (STrChOThroneAction.value == "upgrade") { m = ' Max: '; } else { m = ' - '; } document.getElementById('STrChOThroneMaxDiv').innerHTML = m; if (STrChOThroneAction.value == "enhance") { document.getElementById('STrChOThroneMaxLevel').value = STrChOMaxThroneQuality; } else if (STrChOThroneAction.value == "upgrade") { document.getElementById('STrChOThroneMaxLevel').value = STrChOMaxThroneLevel; } }, buildThroneQueueDisplay: function () { var t = Tabs.throneUpgrader; var STrChOThroneQDiv = document.getElementById('STrChOThroneQDiv'); var m = ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; for (var queueIndex = 0; queueIndex < STrChOThroneQueueData.list.length; queueIndex++) { var queueItem = STrChOThroneQueueData.list[queueIndex]; if (!queueItem) continue; var throneItem = uW.kocThroneItems[queueItem.item]; var throneCardName = "Unknown / Item removed"; var throneId = 0; if (throneItem) { throneCardName = throneItem.name; throneId = throneItem.id; } m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; } m += '
RemoveOrderStatusItemActionMaxStatus/Last Upgrade/Attempts
' + throneCardName + '
' + queueItem.action + ''; if (queueItem.action == "enhance") { m += '
'; } else { m += '
'; } m += '
' + queueItem.status + ' / '; if (queueItem.lastUpgrade) m += queueItem.lastUpgrade; m += ' / ' + queueItem.triesThis + ' tries this level, ' + queueItem.triesTotal + ' tries total'; m += '
'; STrChOThroneQDiv.innerHTML = m; for (var queueIndex = 0; queueIndex < STrChOThroneQueueData.list.length; queueIndex++) { var queueItem = STrChOThroneQueueData.list[queueIndex]; if (!queueItem) continue; var throneItem = uW.kocThroneItems[queueItem.item]; if (throneItem) { var trId = throneItem.id; document.getElementById('STrChOThroneUpdaterItem' + trId).addEventListener('mouseover', function(A) { A.stopPropagation(); var throneId = this.id.split('STrChOThroneUpdaterItem')[1]; var throneItem = uW.kocThroneItems[throneId]; var STrChOCard = document.getElementById('STrChOThroneUpdaterItem' + throneId); CM.ThroneView.hoverItem(A, STrChOCard, throneItem); }, false); } document.getElementById('STrChOThroneQueueRemove' + queueIndex).setAttribute('v1', queueIndex); document.getElementById('STrChOThroneQueueRemove' + queueIndex).addEventListener('click', function () { var qIndex = this.getAttribute('v1'); t.deleteQueueItem(qIndex); }, false); document.getElementById('STrChOThroneUpRow' + queueIndex).setAttribute('v1', queueIndex); document.getElementById('STrChOThroneUpRow' + queueIndex).addEventListener('click', function () { var qIndex = this.getAttribute('v1'); t.moveUpRow(qIndex); }, false); document.getElementById('STrChOThroneDownRow' + queueIndex).setAttribute('v1', queueIndex); document.getElementById('STrChOThroneDownRow' + queueIndex).addEventListener('click', function () { var qIndex = this.getAttribute('v1'); t.moveDownRow(qIndex); }, false); document.getElementById('STrChOThroneChangeLevel' + queueIndex).setAttribute('v1', queueIndex); document.getElementById('STrChOThroneChangeLevel' + queueIndex).addEventListener('change', function () { var qIndex = this.getAttribute('v1'); var itemLevel = this.value; t.changeLevel(qIndex, itemLevel); }, false); if (!throneItem || !(throneItem.id)) { document.getElementById('STrChOThroneState' + queueIndex).innerHTML = '
??
'; } else if (queueItem.status == "complete") { document.getElementById('STrChOThroneState' + queueIndex).className = 'STrChOSuccess'; } else if (throneItem.isBroken) { if (throneItem.id == t.repairId) { document.getElementById('STrChOThroneState' + queueIndex).className = 'STrChOHammer'; } else { document.getElementById('STrChOThroneState' + queueIndex).className = 'STrChOBroken'; } } else { document.getElementById('STrChOThroneState' + queueIndex).innerHTML = '
'; } } }, deleteQueueItem: function (index) { // delete an item from the queue var t = Tabs.throneUpgrader; STrChOThroneQueueData.list.splice(index, 1); if (index > STrChOThroneQueueData.index) STrChOThroneQueueData.index--; SAVESTrChOThroneQueueData(); t.buildThroneQueueDisplay(); }, moveUpRow: function (index) { if (index < 1) return; var t = Tabs.throneUpgrader; var qItem = STrChOThroneQueueData.list.splice(index, 1); STrChOThroneQueueData.list.splice(index - 1, 0, qItem[0]); if (index == STrChOThroneQueueData.index) STrChOThroneQueueData.index--; else if (STrChOThroneQueueData.index == index - 1) STrChOThroneQueueData.index++; SAVESTrChOThroneQueueData(); t.buildThroneQueueDisplay(); }, moveDownRow: function (index) { if (index > (STrChOThroneQueueData.list.length - 2)) return; var t = Tabs.throneUpgrader; var qItem = STrChOThroneQueueData.list.splice(index, 1); STrChOThroneQueueData.list.splice(index + 1, 0, qItem[0]); if (index == STrChOThroneQueueData.index) STrChOThroneQueueData.index++; else if (STrChOThroneQueueData.index == index + 1) STrChOThroneQueueData.index--; SAVESTrChOThroneQueueData(); t.buildThroneQueueDisplay(); }, changeLevel: function (index, level) { var t = Tabs.throneUpgrader; var queueItem = STrChOThroneQueueData.list[index]; if (!queueItem) return; queueItem.level = level; if (queueItem.status == "complete") queueItem.status = "started"; SAVESTrChOThroneQueueData(); t.buildThroneQueueDisplay(); }, setStatus: function (s) { document.getElementById('STrChOThroneUpgradeStatus').innerHTML = '
' + s + '
'; }, setResult: function (s) { document.getElementById('STrChOThroneLastResult').innerHTML = '
' + s + '
'; }, togglePower: function (obj) { var t = Tabs.throneUpgrader; if (!STrChOThroneUpgradeData.active && STrChOThroneRepairData.active) { alert('You must disable repair tab first'); return; } var btn = document.getElementById('STrChOThroneUpgradePower'); if (STrChOThroneUpgradeData.active) { STrChOThroneUpgradeData.active = false; btn.value = 'Upgrader = OFF'; t.setStatus('Powered Off'); t.setResult(''); } else { STrChOThroneUpgradeData.active = true; btn.value = "Upgrader = ON"; t.setStatus("Powered On"); t.setResult(""); } if (!STrChOThroneUpgradeData.active) { } t.updateThroneMenu(); SAVESTrChOThroneUpgradeData(); }, updateThroneMenu: function () { if (!document.getElementById('STrChOExecuteUpgrader')) return; document.getElementById('STrChOExecuteUpgrader').innerHTML = 'Upgrade ' + (STrChOThroneUpgradeData.active ? 'ON' : 'OFF'); }, } Tabs.throneSalvager = { tabOrder: 102, tabLabel: 'SALVAGER', tabColor: 'red', tabHeader: 'THRONE ROOM SALVAGER', delItems: [], deleting: false, rowNum: 0, timer: null, city: null, cityNum: 0, sTimer: null, delTimer: null, upgradeProfit: true, init: function (div) { var t = Tabs.throneSalvager; t.mydiv = div; var m = '
' + t.tabHeader + '
'; m += '
'; m += '
'; m += ''; m += ''; if (STrChOThroneSalvageData.active) { m += ''; } else { m += ''; } m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += '
'; m += 'Keep All: '; m += '
Keep The First Cards


'; m += '
'; m += '
 SIMPLE RULES 
'; m += '
'; m += ''; m += ''; m += ''; m += '
'; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += '
Define Throne Items To Keep:
Faction:
Card Type:
'; m += '
'; m += ''; m += ''; m += ''; m += '
'; m += '
'; m += '
'; //end of STrChOSection m += '
 ADVANCED RULES 
'; m += '
'; m += ''; m += ''; m += ''; m += '
'; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += '
Define Throne Items To Keep:
Faction:
Card Type:
'; m += '
'; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += '
ROW 1ROW 2ROW 3ROW 4ROW 5
'; m += '
'; m += '
'; //end of STrChOSection m += '
 AUTO LOAD RULES 
'; m += '
'; m += ''; m += ''; m += '
 Define Effect:'; m += '
'; m += '
'; m += '
 RULES LIST 
'; m += '
'; m += ''; m += ''; m += ''; m += ''; m += ''; m += '
'; m += 'Sort By Card Type: '; m += '
'; m += 'Salvager Will Keep Items Matching These Rules
'; m += '
'; m += '
'; m += ''; m += ''; m += ''; m += ''; m += ''; m += '
     '; m += '' m += ''; m += ''; m += ''; m += '
'; m += '
'; m += '
'; m += '
'; m += '
'; m += '
'; m += '
'; m += '
'; //end of STrChOSection m += '
'; t.mydiv.innerHTML = '
' + m + '
'; var header = document.getElementsByClassName('STrChOHeader'); for (var head=0;head 0) { var rule = new ThroneRule(type, faction, conditions, true); t.addRule(rule); } } SAVESTrChOThroneSalvageData(); t.buildThroneRuleDisplay(); }, false); document.getElementById('STrChOThroneSalvagePower').addEventListener('click', function () { t.togglePower(this); }, false); t.createRow(); t.buildThroneRuleDisplay(); document.getElementById('STrChOThroneSalvageSortCard').addEventListener('change', function() { t.buildThroneRuleDisplay(); }, false); document.getElementById('STrChOThroneAddRow').addEventListener('click', function () { t.createRow(); }, false); document.getElementById('STrChOThroneSalvageQuality').addEventListener('click', function () { t.setSalvageQuality(this.value); }, false); document.getElementById('STrChOThroneSalvageQuality').value = STrChOThroneSalvageData.minQuality; document.getElementById('STrChOThroneSaveNum').addEventListener('change', function () { STrChOThroneSalvageData.throneSaveNum = parseInt(document.getElementById('STrChOThroneSaveNum').value); if (STrChOThroneSalvageData.throneSaveNum < 0) STrChOThroneSalvageData.throneSaveNum = 0; SAVESTrChOThroneSalvageData(); }, false); document.getElementById('STrChOThroneAdvancedReset').addEventListener('click', function() { var cardtype = document.getElementById('STrChOThroneCardTypeAdvanced'); cardtype.selectedIndex = 0; t.clearAdvancedStats(); t.setAdvancedStatsToAny(); }, false); t.setAdvancedStatsToAny(); document.getElementById('STrChOThroneAddRuleAdvanced').addEventListener('click', function() { t.createAdvancedRule(); }, false); document.getElementById('STrChOThroneCardTypeAdvanced').addEventListener('change', function() { var selectedValue = document.getElementById('STrChOThroneCardTypeAdvanced').value; t.clearAdvancedStats(); if (selectedValue == 'any') { t.setAdvancedStatsToAny(); } else { t.filterAdvancedStats(selectedValue); } }, false); document.getElementById('STrChOThroneAddRule').addEventListener('click', function () { t.createRule(); }, false); document.getElementById('STrChOThroneButtonSaveItem').addEventListener('click', function () { var uriContent = 'data:application/octet-stream,' + encodeURIComponent(JSON.stringify(STrChOThroneSalvageData.ruleSet)); var newWindow = window.open(uriContent, 'file.txt'); }, false); document.getElementById('STrChOThroneButtonLoadItem').addEventListener('click', function () { var fileInput = document.getElementById("STrChOThroneFileLoadItem"); var files = fileInput.files; if (files.length == 0) { alert('Please Select A File'); return; } var file = files[0]; var reader = new FileReader(); reader.onload = function (e) { var output = e.target.result; STrChOThroneSalvageData.ruleSet = JSON.parse(output); STrChOThroneSalvageData.active = false; clearInterval(Tabs.throneSalvager.sTimer); clearInterval(Tabs.throneSalvager.delTimer); Tabs.throneSalvager.deleting = false; SAVESTrChOThroneSalvageData(); Tabs.throneSalvager.show(); alert('Throne Salvage Settings Now Loaded From File'); }; reader.readAsText(file); }, false); if (STrChOThroneSalvageData.upgradedToDelete.length > 0) { // some items were left over that need to be deleted for (k = 0; k < STrChOThroneSalvageData.upgradedToDelete.length; k++) { var id = STrChOThroneSalvageData.upgradedToDelete[k]; // if the item is not longer in the inventory, remove the id if (!uW.kocThroneItems[id]) { STrChOThroneSalvageData.upgradedToDelete.splice(k, 1); // Remove item from array SAVESTrChOThroneSalvageData(); k--; } } // resume deleting things if (STrChOThroneSalvageData.active) { t.delItems = STrChOThroneSalvageData.upgradedToDelete; t.deleting = true; t.upgradeAndDelete(); } else { // if the salvager is Powered Off, clear the list STrChOThroneSalvageData.upgradedToDelete = []; SAVESTrChOThroneSalvageData(); } } // this check makes sure upgrading before deleting is still profitable t.upgradeProfit = (5 * CM.WorldSettings.getSettingAsNumber("AETHERSTONE_SALVAGE_MULTIPLIER", 500) > CM.thronestats.upgrade[1]["Stones"]); t.start(); }, setAdvancedStatsToAny: function() { for (var i = 1; i < STrChOQualityCount; i++) { var row = document.getElementById('STrChOThroneRow' + i + 'Advanced'); row.options.add(new Option("none","None")); for (eff in CM.thronestats.effects) { var effectName = CM.thronestats.effects[eff][1]; row.options.add(new Option(effectName, effectName)); } row.options.add(new Option("Any Infantry", "Infantry")); row.options.add(new Option("Any Ranged", "Ranged")); row.options.add(new Option("Any Horsed", "Horsed")); row.options.add(new Option("Any Siege", "Siege")); row.options.add(new Option("Any Spellcaster", "Spellcaster")); row.options.add(new Option("Any Tower", "Tower")); } }, clearAdvancedStats: function() { for (var i = 1; i < STrChOQualityCount; i++) { var row = document.getElementById('STrChOThroneRow' + i + 'Advanced'); row.innerHTML = ""; } }, filterAdvancedStats: function(cardtype) { var t = Tabs.throneSalvager; cardtype = cardtype || 'any'; if (cardtype == 'any') { t.setAdvancedStatsToAny(); return; } document.getElementById("STrChOThroneRow1Advanced").options.add(new Option("none", "none")); document.getElementById("STrChOThroneRow2Advanced").options.add(new Option("none", "none")); document.getElementById("STrChOThroneRow3Advanced").options.add(new Option("none", "none")); document.getElementById("STrChOThroneRow4Advanced").options.add(new Option("none", "none")); document.getElementById("STrChOThroneRow5Advanced").options.add(new Option("none", "none")); for (eff in CM.thronestats.effects) { var effectName = CM.thronestats.effects[eff][1]; if (STrChOThroneStatsGrid[cardtype][1][eff]) { document.getElementById("STrChOThroneRow1Advanced").options.add(new Option(effectName, effectName)); } if (STrChOThroneStatsGrid[cardtype][2][eff]) { document.getElementById("STrChOThroneRow2Advanced").options.add(new Option(effectName, effectName)); } if (STrChOThroneStatsGrid[cardtype][3][eff]) { document.getElementById("STrChOThroneRow3Advanced").options.add(new Option(effectName, effectName)); } if (STrChOThroneStatsGrid[cardtype][4][eff]) { document.getElementById("STrChOThroneRow4Advanced").options.add(new Option(effectName, effectName)); } if (STrChOThroneStatsGrid[cardtype][5][eff]) { document.getElementById("STrChOThroneRow5Advanced").options.add(new Option(effectName, effectName)); } } }, hide: function () {}, show: function () { var t = Tabs.throneSalvager; t.displayNumberSalvaged(); t.buildThroneRuleDisplay(); }, updateThroneMenu: function () { if (!document.getElementById('STrChOExecuteSalvager')) return; document.getElementById('STrChOExecuteSalvager').innerHTML = 'Salvager ' + (STrChOThroneSalvageData.active ? 'ON' : 'OFF'); }, forceSalvage: function (throneId) { throneId = throneId || false; if (!throneId) return; var throneItem = uW.kocThroneItems[throneId]; if (!throneItem) return; if (throneItem.jewel) { if (throneItem.jewel.valid) { var city_num = pickAetherSalvageCity(); if (city_num == -1) city_num = 0; var city_id = Seed.cities[city_num][0]; Tabs.STrChOJewels.removeJewel(city_id, throneId); } } SalvageThroneItem(throneId); CM.ThroneView.renderInventory(uW.kocThroneItems); }, doDelete: function (id) { var t = Tabs.throneSalvager; if (!STrChOThroneSalvageData.active || !t.deleting) { t.deleting = false; return; } var item = uW.kocThroneItems[id]; if (item == null || !item) return; if (item) t.setStatus('Salvaging ' + item.name); SalvageThroneItem(id); }, removeItem: function (id, cityId, numStones) { var throne_item = uW.kocThroneItems[id]; if (throne_item == null || !throne_item) return; var c = +(Seed.resources["city" + cityId]["rec5"][0]); var b = Seed.throne.slotEquip; Seed.resources["city" + cityId]["rec5"][0] = c + numStones; jQuery.each(b, function (g, h) { a = jQuery.inArray(id, h); if (a > -1) { h.splice(a, 1) } }); delete uW.kocThroneItems[id]; CM.ThroneView.renderInventory(uW.kocThroneItems); }, // update items to +1 before deleting upgradeAndDelete: function () { var t = Tabs.throneSalvager; if (!STrChOThroneSalvageData.active || t.delItems.length == 0) { t.deleting = false; return; } var id = +t.delItems[0]; // since simple +0 can be upgrade w/ near 100% success for 1500 a-stone and then salvaged for 2150 // upgrade all these items 1 level if (STrChOThroneSalvageData.upgradeFirst && t.upgradeProfit) { var throne_item = uW.kocThroneItems[id]; if (throne_item) { if (throne_item.quality <= STrChOThroneSalvageData.upgradeFirstQual && throne_item.level == 0 && (STrChOThroneSalvageData.upgradedToDelete.indexOf(id) < 0)) { STrChOThroneSalvageData.upgradedToDelete.push(id); SAVESTrChOThroneSalvageData(); Tabs.throneUpgrader.doUpgrade(+id, true); } } else { //item not found } } // delete the item t.delTimer = setTimeout(function () { t.doDelete(id) }, 4000); }, // returns true if the item should be saved and not salvaged applyRules: function (id) { var t = Tabs.throneSalvager; for (r in STrChOThroneSalvageData.ruleSet) { var rule = STrChOThroneSalvageData.ruleSet[r]; if (rule.ThroneApplyRule(id)) return true; } return false; }, // Create the list of items to delete. // If 'test' is set to true, then broken/equipted items are included. buildList: function (test) { var t = Tabs.throneSalvager; var countItem = 0; var retList = []; for (k in uW.kocThroneItems) { var throne_item = uW.kocThroneItems[k]; if (throne_item == null || !throne_item) continue; countItem++; // ignore these things if (throne_item.level != 0) continue; if (throne_item.unique > 0) continue; // in test mode, include these items // These items are at risk if they are repaired or unequiped. if (test != true) { if (throne_item.isEquipped) continue; if (throne_item.isBroken) continue; } // keep the first X items if (countItem <= STrChOThroneSalvageData.throneSaveNum) continue; // keep things w/ at least minQuality if (throne_item.quality >= STrChOThroneSalvageData.minQuality) continue; // check the rules if (t.applyRules(throne_item.id)) { //item was found if (STrChOThroneSalvageData.upgradeAutoFind) { var found = false; for (var i = 0; i < STrChOThroneQueueData.list.length; i++) { var qItem = STrChOThroneQueueData.list[i]; if (qItem.item != throne_item.id) continue; found = true; break; } if (!found) { ActionLog('Item: ' + throne_item.name + ' found and added to auto upgrade'); Tabs.throneUpgrader.addUpgradeItem(throne_item.id); } } continue; } // passes all tests retList.push(throne_item.id); } return retList; }, // do the actual discard of TR items doSalvage: function () { var t = Tabs.throneSalvager; if (!STrChOThroneSalvageData.active) { t.deleting = false; return; } if (t.deleting == true) return; t.deleting = true; t.setStatus('Salvaging items'); t.delItems = t.buildList(false); if (t.delItems.length > 0) { // upgrade items from +0 to +1 first t.upgradeAndDelete(); } else { // give enough time for the last delete to finish setTimeout(function () { t.deleting = false; t.setStatus('No items to salvage. Waiting for next cycle.'); }, 3000); } }, start: function () { var t = Tabs.throneSalvager; if (STrChOThroneSalvageData.active) { t.sTimer = setInterval(t.doSalvage, 1 * 60 * 1000); } }, addRule: function (rule) { STrChOThroneSalvageData.ruleSet.unshift(rule); SAVESTrChOThroneSalvageData(); }, readRows: function () { var t = Tabs.throneSalvager; var table = document.getElementById('STrChOThroneConditionTable'); var rowCount = table.rows.length; var cType = document.getElementById('STrChOThroneCardType').value; var faction = document.getElementById('STrChOThroneFactionType').value; var conditions = []; for (i = 0; i < table.rows.length; i++) { var row = table.rows[i]; if (row.id) { var s1 = document.getElementById(row.id + "ThroneSel1"); var s2 = document.getElementById(row.id + "ThroneSel2"); var s3 = document.getElementById(row.id + "ThroneSel3"); var s4 = document.getElementById(row.id + "ThroneSel4"); var slots = []; for (j = 1; j <= 5; j++) { var ch = document.getElementById(row.id + "ThroneSlot" + j); slots.push(ch.checked); } var c = new ThroneCondition(s1.value, s2.value, s3.value, s4.value, slots); conditions.push(c); } } var rule1 = new ThroneRule(cType, faction, conditions, false); t.addRule(rule1); }, readAdvancedRows: function () { var t = Tabs.throneSalvager; var cType = document.getElementById('STrChOThroneCardTypeAdvanced').value; var faction = document.getElementById('STrChOThroneFactionTypeAdvanced').value; var conditions = []; for (var i = 1; i < 6; i++) { var row = document.getElementById("STrChOThroneRow" + i + "Advanced"); if (row.selectedIndex == 0) continue; var slots = []; for (var slotChecker = 1; slotChecker < 6; slotChecker++) { slots.push(slotChecker==i); } var effectName = row.options[row.selectedIndex].value; var buffDebuff = "b"; if (effectName.indexOf(" Debuff") != -1) buffDebuff = "d"; var effectName = effectName.split(" Debuff")[0]; var c = new ThroneCondition(true, 1, effectName, buffDebuff, slots); conditions.push(c); } if ( conditions.length > 0 ) { var rule1 = new ThroneRule(cType, faction, conditions, true); t.addRule(rule1); } }, createRule: function () { var t = Tabs.throneSalvager; t.readRows(); t.buildThroneRuleDisplay(); }, createAdvancedRule: function() { var t = Tabs.throneSalvager; t.readAdvancedRows(); t.buildThroneRuleDisplay(); }, setSalvageQuality: function (qual) { STrChOThroneSalvageData.minQuality = qual; SAVESTrChOThroneSalvageData(); }, buildThroneRuleDisplay: function () { var t = Tabs.throneSalvager; function innerThroneRuleDisplay(dataset) { var innerM = ''; for (i = 0; i < dataset.length; i++) { var rule = dataset[i]; innerM += ''; innerM += '
'; innerM += (rule.advancedrule ? 'Advanced Rule
' : 'Simple Rule
'); innerM += ' Type: ' + rule.type; innerM += ' Faction: ' + rule.faction; for (ii = 0; ii < rule.conditions.length; ii++) { var condition = rule.conditions[ii]; if (ii == 0) innerM += '
Item'; else innerM += '
and'; if (condition.mustHave != 'false') innerM += ' must have '; else innerM += ' must NOT have '; innerM += condition.number + 'x '; innerM += condition.effect + ' '; if (condition.buffType == 'b') innerM += 'buff '; else if (condition.buffType == 'd') innerM += 'debuff '; else innerM += 'buff or debuff '; innerM += ' in slot(s): '; for (j = 0; j < condition.slots.length; j++) { if (condition.slots[j]) innerM += (j + 1) + " "; } } innerM += '
'; innerM += ''; innerM += ''; innerM += ''; innerM += ''; innerM += ''; } return innerM; } var rd = document.getElementById('STrChOThroneRuleDisplay'); var sortType = document.getElementById('STrChOThroneSalvageSortCard').value; var ruleCounter = 0; if (sortType != "0") { var sortedDataSet = []; for (var k = 0; k < STrChOThroneSalvageData.ruleSet.length; k++) { if (sortType == STrChOThroneSalvageData.ruleSet[k].type) { sortedDataSet.unshift(STrChOThroneSalvageData.ruleSet[k]); }else { sortedDataSet.push(STrChOThroneSalvageData.ruleSet[k]); } } rd.innerHTML = '' + innerThroneRuleDisplay(sortedDataSet); ruleCounter = sortedDataSet.length; for (var j = 0; j < sortedDataSet.length; j++) { document.getElementById('STrChOThroneDelRule' + j).v1 = j; document.getElementById('STrChOThroneEditRule' + j).v1 = j; document.getElementById('STrChOThroneDelRule' + j).addEventListener('click', function () { t.deleteRule(this.v1, sortedDataSet); }, false); document.getElementById('STrChOThroneEditRule' + j).addEventListener('click', function () { t.editRule(this.v1, sortedDataSet); }, false); } } else { ruleCounter = STrChOThroneSalvageData.ruleSet.length; rd.innerHTML = '
' + innerThroneRuleDisplay(STrChOThroneSalvageData.ruleSet); for (var j = 0; j < STrChOThroneSalvageData.ruleSet.length; j++) { document.getElementById('STrChOThroneDelRule' + j).v1 = j; document.getElementById('STrChOThroneEditRule' + j).v1 = j; document.getElementById('STrChOThroneDelRule' + j).addEventListener('click', function () { t.deleteRule(this.v1, STrChOThroneSalvageData.ruleSet); }, false); document.getElementById('STrChOThroneEditRule' + j).addEventListener('click', function () { t.editRule(this.v1, STrChOThroneSalvageData.ruleSet); }, false); } } document.getElementById('STrChOThroneRuleCount').innerHTML = '(Total Rules: ' + ruleCounter + ')'; }, editRule: function (ruleIndex, sortedData) { var t = Tabs.throneSalvager; var rule = sortedData[ruleIndex]; var divExpander = null; if (rule.advancedrule) divExpander = document.getElementById('STrChOThroneAdvancedRule'); else divExpander = document.getElementById('STrChOThroneSimpleRule'); divExpander.click(); if (divExpander.childNodes[0].src == STrChORightArrow) divExpander.click(); if (rule.advancedrule) { document.getElementById('STrChOThroneFactionTypeAdvanced').value = rule.faction; document.getElementById('STrChOThroneCardTypeAdvanced').value = rule.type; t.clearAdvancedStats(); if (rule.type == 'any') t.setAdvancedStatsToAny(); else t.filterAdvancedStats(rule.type); for (row = 0; row < rule.conditions.length; row++) { var condition = rule.conditions[row]; var slotNumber = 0; for (s = 0; s < condition.slots.length; s++) { if (condition.slots[s]) slotNumber = s+1; } var cell = document.getElementById('STrChOThroneRow' + slotNumber + 'Advanced'); var STrChOEffect = condition.effect; if (condition.buffType == 'd') STrChOEffect += ' Debuff'; cell.value = STrChOEffect; } } else { document.getElementById('STrChOThroneFactionType').value = rule.faction; document.getElementById('STrChOThroneCardType').value = rule.type; var STrChOThroneConditionTable = document.getElementById('STrChOThroneConditionTable'); while (STrChOThroneConditionTable.rows.length > 1) STrChOThroneConditionTable.deleteRow(0); for (row = 0; row < rule.conditions.length; row++) { var condition = rule.conditions[row]; t.createRow(); STrChOThroneConditionTable = document.getElementById('STrChOThroneConditionTable'); STrChOThroneConditionTable.rows[row].cells[0].children[0].value = condition.mustHave; STrChOThroneConditionTable.rows[row].cells[1].children[0].value = condition.number; STrChOThroneConditionTable.rows[row].cells[2].children[0].value = condition.effect; STrChOThroneConditionTable.rows[row].cells[3].children[0].value = condition.buffType; var slotCells = STrChOThroneConditionTable.rows[row].cells[4]; for (s = 0; s < condition.slots.length; s++) { if (condition.slots[s]) slotCells.children[s].checked = true; else slotCells.children[s].checked = false; } } } t.deleteRule(ruleIndex, sortedData); }, // delete a rule from the ruleset deleteRule: function (ruleIndex, sortedData) { var t = Tabs.throneSalvager; sortedData.splice(ruleIndex, 1); var newDataSet = []; for (var i = 0; i < STrChOThroneSalvageData.ruleSet.length; i++) { for (var i2 = 0; i2 < sortedData.length; i2++) { if (STrChOThroneSalvageData.ruleSet[i] == sortedData[i2]) { newDataSet.push(STrChOThroneSalvageData.ruleSet[i]); break; } } } STrChOThroneSalvageData.ruleSet = newDataSet; SAVESTrChOThroneSalvageData(); t.buildThroneRuleDisplay(); }, removeRow: function (row) { var t = Tabs.throneSalvager; var table = document.getElementById('STrChOThroneConditionTable'); for (i = 0; i < table.rows.length; i++) { if (table.rows[i] == row) { table.deleteRow(i); break; } } }, createRow: function () { var t = Tabs.throneSalvager; var table = document.getElementById('STrChOThroneConditionTable'); var rowCount = table.rows.length; var row = table.insertRow(rowCount - 1); var rowId = "r" + t.rowNum; t.rowNum += 1; row.id = rowId; var h = ''; h += ''; h += ''; h += ''; h += ''; row.innerHTML = h; var effects = []; for (e in CM.thronestats.effects) { var effectName = CM.thronestats.effects[e][1].split(" Debuff")[0]; if (effects.indexOf(effectName) < 0) effects.push(effectName); } var select = document.getElementById(rowId + "ThroneSel3"); for (index in effects) { select.options.add(new Option(effects[index], effects[index])); } // add in options for troops specific effects select.options.add(new Option("Any Infantry", "Infantry")); select.options.add(new Option("Any Ranged", "Ranged")); select.options.add(new Option("Any Horsed", "Horsed")); select.options.add(new Option("Any Siege", "Siege")); select.options.add(new Option("Any Spellcaster", "Spellcaster")); select.options.add(new Option("Any Tower", "Tower")); var c = row.insertCell(5); //TODO: change to javascript var btn = $(''); $(btn).click(function () { t.removeRow(row); }); $(c).append(btn); }, togglePower: function (obj) { var t = Tabs.throneSalvager; if (STrChOThroneSalvageData.active) { var btn = document.getElementById('STrChOThroneSalvagePower'); STrChOThroneSalvageData.active = false; btn.value = "Salvager = OFF"; t.setStatus('Powered Off'); clearInterval(t.sTimer); clearInterval(t.delTimer); t.delItems = []; STrChOThroneSalvageData.upgradedToDelete = []; t.deleting = false; } else { if (STrChOGeneralOptions.throneSorter) { if (!confirm('SORTER WARNING: You will likely experience lowered salvage rates and potentially crashing if you have both sorter and salvager enabled. Would you like to continue?')) return; } STrChOThroneSalvageData.active = true; var btn = document.getElementById('STrChOThroneSalvagePower'); btn.value = "Salvager = ON"; t.setStatus('Loading...'); t.doSalvage(); t.start(); } SAVESTrChOThroneSalvageData(); t.updateThroneMenu(); }, // put out a status message on the trSavlStatus div setStatus: function (msg) { document.getElementById('STrChOThroneSalvageStatus').innerHTML = msg; }, displayNumberSalvaged: function () { var since = ""; var rate = ""; var now = new Date(); if (!STrChOThroneSalvageData.since) STrChOThroneSalvageData.since = now.valueOf(); var sinceD = new Date(STrChOThroneSalvageData.since); since = sinceD.toDateString().substring(3, 10) + " " + sinceD.toLocaleTimeString(); var duration = now.valueOf() - STrChOThroneSalvageData.since + 1; duration = duration / 1000.0; rate = ' (' + addCommas(Math.round(STrChOThroneSalvageData.numSalvagedItems2 / duration * 86400)) + ' per day)'; var m = ""; m += '
'; m += addCommas(STrChOThroneSalvageData.numSalvagedItems); m += ' items salvaged, '; m += addCommas(STrChOThroneSalvageData.numSalvagedItems2); m += ' items since ' + since + rate; m += '
'; document.getElementById('STrChOThroneNumSalv').innerHTML = m; document.getElementById('STrChOThroneTripOdometer').addEventListener('click', function () { Tabs.throneSalvager.tripOdometer(); }, false); }, tripOdometer: function () { STrChOThroneSalvageData.numSalvagedItems2 = 0; var now = new Date(); STrChOThroneSalvageData.since = now.valueOf(); SAVESTrChOThroneSalvageData(); Tabs.throneSalvager.displayNumberSalvaged(); }, } Tabs.throneRepair = { tabOrder: 103, tabLabel: 'REPAIR', tabColor: 'red', tabHeader: 'THRONE ROOM REPAIR', repairId: 0, repairEnd: 0, timerH: null, clearTimerH: null, init: function (div) { var t = Tabs.throneRepair; t.mydiv = div; var m = '
' + t.tabHeader + '
'; m += '
'; m += '
'; m += '
'; h += ' 1'; h += ' 2'; h += ' 3'; h += ' 4'; h += ' 5'; h += '
'; m += ''; if (STrChOThroneRepairData.active) { m += ''; } else { m += ''; } m += ''; m += ''; m += ''; m += ''; m += ''; m += '



'; m += ''; m += '
 SPEED UPS 
'; m += '
'; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += '
Only use hourglass for levels '; m += ' and higher
Only use hourglass for qualities '; m += ' and higher
' + STrChOHourGlassName[1] + ' (
' : '>') + uW.ksoItems[1].count + '
)
' + STrChOHourGlassName[2] + ' (
' : '>') + uW.ksoItems[2].count + '
)
' + STrChOHourGlassName[3] + ' (
' : '>') + uW.ksoItems[3].count + '
)
' + STrChOHourGlassName[4] + ' (
' : '>') + uW.ksoItems[4].count + '
)
' + STrChOHourGlassName[5] + ' (
' : '>') + uW.ksoItems[5].count + '
)
' + STrChOHourGlassName[6] + ' (
' : '>') + uW.ksoItems[6].count + '
)
' + STrChOHourGlassName[7] + ' (
' : '>') + uW.ksoItems[7].count + '
)
' + STrChOHourGlassName[8] + ' (
' : '>') + uW.ksoItems[8].count + '
)
'; m += '
Override hourglasses by using '; m += ' every time
'; m += '
'; m += '
 REPAIR ITEMS 
'; m += '
'; m += ''; m += ''; m += '"; m += ''; m += '
Queue By Level:  
Queue By Preset Tag:  
Item:   
'; m += '
'; m += '
 REPAIR LIST 
'; m += '
'; m += ''; m += ''; m += ''; m += '
'; m += '
'; m += '
'; m += '
'; m += '
'; m += '
'; m += ''; t.mydiv.innerHTML = '
' + m + '
'; document.getElementById('STrChOThroneRepairSaveSettings').addEventListener('click', function () { SaveSettingsToFile(STrChOThroneRepairData); }, false); document.getElementById('STrChOThroneRepairLoadSettings').addEventListener('click', function () { var loader = document.getElementById('STrChOSettingsFile'); loader.addEventListener('change', function () { LoadSettingsFromFile(STrChOThroneRepairData, Tabs.throneRepair); }, false); loader.click(); }, false); t.refreshAetherDisplay(); var header = document.getElementsByClassName('STrChOHeader'); for (var head=0;head 0) { var trId = STrChOThroneRepairData.items.pop(); var throne_item = uW.kocThroneItems[trId]; if (throne_item == null || !throne_item) continue; if (throne_item.isBroken) temp.push(trId); } while (temp.length > 0) STrChOThroneRepairData.items.push(temp.pop()); STrChOThroneRepairData.index = 0 SAVESTrChOThroneRepairData(); t.populateThroneRepairListBox(); t.buildThroneRepairDisplay(); }, false); document.getElementById('STrChOThroneRepairAdd').addEventListener('click', function () { t.addQueue(); }, false); document.getElementById('STrChOThroneRepairAddAll').addEventListener('click', function () { t.addAllQueue(); }, false); document.getElementById('STrChOThroneRepairRefresh').addEventListener('click', function () { t.populateThroneRepairListBox(); }, false); if (STrChOThroneRepairData.active) t.setStatus('Loading...'); else t.setStatus('Powered Off'); t.refreshAetherDisplay(); var d = 2 + Math.random() * 8; if (Seed.queue_throne != null && Seed.queue_throne.end != null) { var repairTimeLeft = Seed.queue_throne.end - unixTime(); t.repairEnd = Seed.queue_throne.end; t.repairId = Seed.queue_throne.itemId; var n = new Date(t.repairEnd * 1000); t.setStatus("Waiting until " + n.toLocaleTimeString() + " for repair to complete. Item: " + uW.kocThroneItems[t.repairId].name); if (STrChOThroneRepairData.useSH || STrChOThroneRepairData.useKH || STrChOThroneRepairData.useGH || STrChOThroneRepairData.useMH || STrChOThroneRepairData.useAH || STrChOThroneRepairData.useWH || STrChOThroneRepairData.useDH || STrChOThroneRepairData.useEH || (STrChOThroneRepairData.overrideSpeedUp && STrChOThroneRepairData.useSpeedUp > 0)) { var throneItem = uW.kocThroneItems[t.repairId]; var trQuality = throneItem.quality; var trLevel = throneItem.level; var useThoseSpeedups = true; if (STrChOThroneRepairData.hourglassQualitySpecific && trQuality < STrChOThroneRepairData.hourglassQuality) useThoseSpeedups = false; if (STrChOThroneRepairData.hourglassLevelSpecific && trLevel < STrChOThroneRepairData.hourglassLevel) useThoseSpeedups = false; if (STrChOThroneRepairData.overrideSpeedUp) useThoseSpeedups = true; if (useThoseSpeedups) { setTimeout(function () { t.doSpeedup(); }, 2000); } } setTimeout(t.clearRepair, (repairTimeLeft + 1) * 1000); if (repairTimeLeft > 0) d += repairTimeLeft; } t.populateThroneRepairListBox(); t.buildThroneRepairDisplay(); if (!STrChOThroneRepairData.active) t.setStatus("Powered Off"); if (t.timerH == null) { t.timerH = setTimeout(t.doAction, d * 1000); } }, refreshAetherDisplay : function () { document.getElementById('STrChOThroneRepairAetherDisplay').innerHTML = displayCityAstone(); }, hide: function () {}, show: function () { var t = Tabs.throneRepair; t.refreshAetherDisplay(); t.populateThroneRepairListBox(); t.buildThroneRepairDisplay(); }, doRepair: function (rItem) { var t = Tabs.throneRepair; var params = uW.Object.clone(ajfx); if (STrChOThroneRepairData.active == false || rItem == 0 || uW.kocThroneItems[rItem] == null) return; var theItem = uW.kocThroneItems[rItem]; params.action = 'timeRepair'; params.throneRoomItemId = rItem; params.ctrl = 'throneRoom\\ThroneRoomServiceAjax'; new AjaxRequest(uW.g_ajaxpath + "ajax/_dispatch53.php" + uW.g_ajaxsuffix, { method: "post", parameters: params, loading: true, onSuccess: function (transport) { var rslt = eval("(" + transport.responseText + ")"); if (rslt.ok) { var item = uW.kocThroneItems[rItem]; var startTime = unixTime(); var endTime = rslt.eta; ActionLog('Starting repair for Throne Room item ' + item.name); Seed.queue_throne.itemId = item.id; Seed.queue_throne.start = startTime; Seed.queue_throne.end = endTime; t.repairId = item.id; t.repairEnd = endTime; var n = new Date(t.repairEnd * 1000); t.setStatus("Repair begun ... Repair will be complete at " + n.toLocaleTimeString() + ". Item: " + item.name); var secondsForRepair = t.repairEnd - startTime; if (secondsForRepair < 0) secondsForRepair = 0; CM.ThroneView.renderInventory(uW.kocThroneItems); t.clearTimerH = setTimeout(t.clearRepair, (secondsForRepair + 1) * 1000); t.buildThroneRepairDisplay(); if (STrChOThroneRepairData.useSH || STrChOThroneRepairData.useKH || STrChOThroneRepairData.useGH || STrChOThroneRepairData.useMH || STrChOThroneRepairData.useAH || STrChOThroneRepairData.useWH || STrChOThroneRepairData.useDH || STrChOThroneRepairData.useEH || (STrChOThroneRepairData.overrideSpeedUp && STrChOThroneRepairData.useSpeedUp > 0)) { var throneItem = uW.kocThroneItems[t.repairId]; var trQuality = throneItem.quality; var trLevel = throneItem.level; var useThoseSpeedups = true; if (STrChOThroneRepairData.hourglassQualitySpecific && trQuality < STrChOThroneRepairData.hourglassQuality) useThoseSpeedups = false; if (STrChOThroneRepairData.hourglassLevelSpecific && trLevel < STrChOThroneRepairData.hourglassLevel) useThoseSpeedups = false; if (STrChOThroneRepairData.overrideSpeedUp) useThoseSpeedups = true; if (useThoseSpeedups) { setTimeout(function () { t.doSpeedup(); }, 2000); } } } else { if (rslt.msg == "Item is not broken") { uW.kocThroneItems[rItem].isBroken = false; t.clearRepair(); } // regrab the end times in case this is caused by a manual repair if (Seed.queue_throne && Seed.queue_throne.end && Seed.queue_throne.itemId) { t.repairEnd = Seed.queue_throne.end; t.repairId = Seed.queue_throne.itemId; } } return; }, onFailure: function (ttt) { // this usually means a repair is in progress (such as a manual repair). Grab the seed data (if possible) if (Seed.queue_throne && Seed.queue_throne.end) { t.repairEnd = Seed.queue_throne.end; t.repairId = Seed.queue_throne.itemId; } return; } }); return; }, togglePower: function (obj) { var t = Tabs.throneRepair; var STrChOThroneRepairPower = document.getElementById('STrChOThroneRepairPower'); if (STrChOThroneRepairData.active) { STrChOThroneRepairData.active = false; STrChOThroneRepairPower.value = "Repair = OFF"; t.setStatus("Powered Off"); t.setResult(""); } else { STrChOThroneRepairData.active = true; STrChOThroneRepairPower.value = "Repair = ON"; t.setStatus("Powered On"); t.setResult(""); STrChOThroneUpgradeData.active = false; SAVESTrChOThroneUpgradeData(); t.doAction(); } if (!STrChOThroneRepairData.active) { } SAVESTrChOThroneRepairData(); t.updateThroneMenu(); }, clearRepair: function () { var t = Tabs.throneRepair; var timeUntilDone = 0; if (t.repairEnd == 0) { return timeUntilDone; } timeUntilDone = t.repairEnd - unixTime(); if (timeUntilDone <= 0) { // logit("clearing repair"); if (t.repairId != 0 && uW.kocThroneItems[t.repairId] != null) { if (!uW.kocThroneItems[t.repairId].isBroken) { t.setStatus("Repair time complete."); document.getElementById('STrChOThroneRepairState' + t.repairId).className = "STrChOSuccess"; } else { uW.kocThroneItems[t.repairId].isBroken = false; uW.kocThroneItems[t.repairId].brokenType = ""; } t.repairId = 0; } } CM.ThroneView.renderInventory(uW.kocThroneItems); return timeUntilDone; }, setStatus: function (s) { document.getElementById('STrChOThroneRepairStatus').innerHTML = "
" + s + "
"; }, setResult: function (s) { document.getElementById('STrChOThroneRepairLastResult').innerHTML = "
" + s + "
"; }, updateThroneMenu: function () { if (!document.getElementById('STrChOExecuteRepair')) return; document.getElementById('STrChOExecuteRepair').innerHTML = 'Repair ' + (STrChOThroneRepairData.active ? 'ON' : 'OFF'); }, deleteRepairItem: function (index) { // delete an item from the queue var t = Tabs.throneRepair; STrChOThroneRepairData.items.splice(index, 1); SAVESTrChOThroneRepairData(); t.populateThroneRepairListBox(); t.buildThroneRepairDisplay(); }, moveRepairUpRow: function (index) { if (index < 1) return; var t = Tabs.throneRepair; var q = STrChOThroneRepairData.items.splice(index, 1); STrChOThroneRepairData.items.splice(index - 1, 0, q); if (index == STrChOThroneRepairData.index) STrChOThroneRepairData.index--; else if (STrChOThroneRepairData.index == index - 1) STrChOThroneRepairData.index++; SAVESTrChOThroneRepairData(); t.buildThroneRepairDisplay(); }, moveRepairDownRow: function (index) { if (index > (STrChOThroneRepairData.items.length - 2)) return; var t = Tabs.throneRepair; var q = STrChOThroneRepairData.items.splice(index, 1); STrChOThroneRepairData.items.splice(index + 1, 0, q); if (i == STrChOThroneRepairData.index) STrChOThroneRepairData.index++; else if (STrChOThroneRepairData.index == i + 1) STrChOThroneRepairData.index--; SAVESTrChOThroneRepairData(); t.buildThroneRepairDisplay(); }, buildThroneRepairDisplay: function () { var t = Tabs.throneRepair; var STrChOThroneRepairQDiv = document.getElementById('STrChOThroneRepairQDiv'); var totalRepairTime = t.calcRepairTime(); var item_count = STrChOThroneRepairData.items.length; var m = ''; if (totalRepairTime > 0) m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; if (item_count > 0) { for (var item_index = 0; item_index < item_count; item_index++) { var trId = STrChOThroneRepairData.items[item_index]; if (trId == null) { t.deleteRepairItem(item_index); return; } var throne_item = uW.kocThroneItems[trId]; if (throne_item == null || !throne_item) { t.deleteRepairItem(item_index); return; } m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; } m += '
Total Repair Time (' + item_count + ' items): ' + repairTimeToText(totalRepairTime) + '
RemoveOrderStatusItem
' + throne_item.name + '
'; STrChOThroneRepairQDiv.innerHTML = m; for (var item_index = 0; item_index < item_count; item_index++) { var trId = STrChOThroneRepairData.items[item_index]; var throne_item = uW.kocThroneItems[trId]; if (throne_item == null || !throne_item) continue; document.getElementById('STrChOThroneRepairItem' + trId).addEventListener('mouseover', function(A) { A.stopPropagation(); var throneId = this.id.split('STrChOThroneRepairItem')[1]; var throneItem = uW.kocThroneItems[throneId]; var STrChOCard = document.getElementById('STrChOThroneRepairItem' + throneId); CM.ThroneView.hoverItem(A, STrChOCard, throneItem); }, false); document.getElementById('STrChOThroneRepairRemove' + trId).setAttribute('v1', item_index); document.getElementById('STrChOThroneRepairRemove' + trId).addEventListener('click', function () { var qIndex = this.getAttribute('v1'); t.deleteRepairItem(qIndex); }, false); document.getElementById('STrChOThroneRepairUpRow' + trId).setAttribute('v1', item_index); document.getElementById('STrChOThroneRepairUpRow' + trId).addEventListener('click', function () { var qIndex = this.getAttribute('v1'); t.moveRepairUpRow(qIndex); }, false); document.getElementById('STrChOThroneRepairDownRow' + trId).setAttribute('v1', item_index); document.getElementById('STrChOThroneRepairDownRow' + trId).addEventListener('click', function () { var qIndex = this.getAttribute('v1'); t.moveRepairDownRow(qIndex); }, false); var throne_item = uW.kocThroneItems[trId]; if (!throne_item || !(throne_item.id)) { document.getElementById('STrChOThroneRepairState' + trId).innerHTML = '
??
'; } else if (!throne_item.isBroken) { document.getElementById('STrChOThroneRepairState' + trId).className = 'STrChOSuccess'; } else if (throne_item.isBroken) { if (trId == t.repairId) { document.getElementById('STrChOThroneRepairState' + trId).className = 'STrChOHammer'; } else { document.getElementById('STrChOThroneRepairState' + trId).className = 'STrChOBroken'; } } } } else { m += ''; STrChOThroneRepairQDiv.innerHTML = m; } }, populateThroneRepairListBox: function () { var repairList = document.getElementById('STrChOThroneRepairList'); var m = ''; var item_count = STrChOThroneRepairData.items.length; for (trId in uW.kocThroneItems) { var throne_item = uW.kocThroneItems[trId]; if (throne_item == null || !throne_item) continue; if (!throne_item.isBroken) continue; //item not broken, move on var foundIt = false; for (var item_index = 0; item_index < item_count; item_index++) { if (trId == STrChOThroneRepairData.items[item_index]) { foundIt = true; break; } } if (!foundIt) { var optionText = throne_item.name; m += ''; } } repairList.innerHTML = m; }, deleteQueue: function () { var t = Tabs.throneRepair STrChOThroneRepairData.items = []; SAVESTrChOThroneRepairData(); t.populateThroneRepairListBox(); t.buildThroneRepairDisplay(); }, addAllQueue: function () { var t = Tabs.throneRepair; for (trId in uW.kocThroneItems) { var throne_item = uW.kocThroneItems[trId]; if (throne_item == null || !throne_item) continue; if (throne_item.isBroken) { t.addQueue(trId); } } }, selectNext: function () { var l = STrChOThroneRepairData.items.length; for (i = 0; i < l; i++) { var throne_item = uW.kocThroneItems[STrChOThroneRepairData.items[i]]; if (throne_item == null || !throne_item) continue; if ((throne_item != null) && (throne_item.isBroken)) { STrChOThroneRepairData.index = i; SAVESTrChOThroneRepairData(); return; } } // if we get here, the queue is complete STrChOThroneRepairData.index = -1; SAVESTrChOThroneRepairData(); }, calcRepairTime: function () { var t = Tabs.throneRepair var item_count = STrChOThroneRepairData.items.length; var total_time = 0; for (var item_index = 0; item_index < item_count; item_index++) { var trId = STrChOThroneRepairData.items[item_index]; var throne_item = uW.kocThroneItems[trId]; if (throne_item == null || !throne_item) continue; var item_time = CM.thronestats.repairCostUpgrade[throne_item.level].Time; total_time += item_time; } return total_time; }, addQueue: function (iD) { var t = Tabs.throneRepair; if (iD == null) { var trId = document.getElementById('STrChOThroneRepairList').value; } else { var trId = iD; } if (trId == 0 || trId == null) return; var item_count = STrChOThroneRepairData.items.length; if (item_count > 0) { for (var item_index = 0; item_index < item_count; item_index++) { if (trId == STrChOThroneRepairData.items[item_index]) return; } } STrChOThroneRepairData.items.push(trId); SAVESTrChOThroneRepairData(); t.populateThroneRepairListBox(); t.buildThroneRepairDisplay(); }, doSpeedup: function () { var t = Tabs.throneRepair; var endTime = t.repairEnd; var startTime = unixTime(); var secondsForRepair = endTime - startTime; var divId = ""; t.speedup = 0; if (secondsForRepair > 0 && STrChOThroneRepairData.overrideSpeedUp && STrChOThroneRepairData.useSpeedUp > 0) { t.speedup = STrChOThroneRepairData.useSpeedUp; } else { if (t.speedup == 0 && secondsForRepair >= HOURGLASSES_TIME_MIN_THRESHOLD.day25 && STrChOThroneRepairData.useAH && uW.ksoItems[8].count > 0) { t.speedup = 8; } if (t.speedup == 0 && secondsForRepair >= HOURGLASSES_TIME_MIN_THRESHOLD.hour24 && STrChOThroneRepairData.useAH && uW.ksoItems[7].count > 0) { t.speedup = 7; } if (t.speedup == 0 && secondsForRepair >= HOURGLASSES_TIME_MIN_THRESHOLD.hour15 && STrChOThroneRepairData.useAH && uW.ksoItems[6].count > 0) { t.speedup = 6; } if (t.speedup == 0 && secondsForRepair >= HOURGLASSES_TIME_MIN_THRESHOLD.hour8 && STrChOThroneRepairData.useAH && uW.ksoItems[5].count > 0) { t.speedup = 5; } if (t.speedup == 0 && secondsForRepair >= HOURGLASSES_TIME_MIN_THRESHOLD.hour25 && STrChOThroneRepairData.useMH && uW.ksoItems[4].count > 0) { t.speedup = 4; } if (t.speedup == 0 && secondsForRepair >= HOURGLASSES_TIME_MIN_THRESHOLD.hour1 && STrChOThroneRepairData.useGH && uW.ksoItems[3].count > 0) { t.speedup = 3; } if (t.speedup == 0 && secondsForRepair >= HOURGLASSES_TIME_MIN_THRESHOLD.minute15 && STrChOThroneRepairData.useKH && uW.ksoItems[2].count > 0) { t.speedup = 2; } if (t.speedup == 0 && secondsForRepair >= HOURGLASSES_TIME_MIN_THRESHOLD.minute1 && STrChOThroneRepairData.useSH && uW.ksoItems[1].count > 0) { t.speedup = 1; } } switch (t.speedup) { case "1": case 1: secondsForRepair -= HOURGLASSES_TIME.minute1; divId = 'STrChOThroneRepairUseSHLabel'; break; case "2": case 2: secondsForRepair -= HOURGLASSES_TIME.minute15; divId = 'STrChOThroneRepairUseKHLabel'; break; case "3": case 3: secondsForRepair -= HOURGLASSES_TIME.hour1; divId = 'STrChOThroneRepairUseGHLabel'; break; case "4": case 4: secondsForRepair -= HOURGLASSES_TIME.hour25; divId = 'STrChOThroneRepairUseMHLabel'; break; case "5": case 5: secondsForRepair -= HOURGLASSES_TIME.hour8; divId = 'STrChOThroneRepairUseAHLabel'; break; case "6": case 6: secondsForRepair -= HOURGLASSES_TIME.hour15; divId = 'STrChOThroneRepairUseWHLabel'; break; case "7": case 7: secondsForRepair -= HOURGLASSES_TIME.hour24; divId = 'STrChOThroneRepairUseDHLabel'; break; case "8": case 8: secondsForRepair -= HOURGLASSES_TIME.day25; divId = 'STrChOThroneRepairUseEHLabel'; break; } if (t.speedup != 0) { t.setResult('Used ' + uW.ksoItems[t.speedup].name); var divCount = uW.ksoItems[t.speedup].count - 1; var divSpeedups = document.getElementById(divId); divSpeedups.innerHTML = divCount; uW.modal_speedup_apply("throne", t.speedup, t.repairId); if (secondsForRepair <= 0) { secondsForRepair = 0; endTime = startTime; t.clearTimerH = setTimeout(t.clearRepair, 1000); } else { endTime = unixTime() + secondsForRepair; t.repairEnd = endTime; var n = new Date(t.repairEnd * 1000); var item = uW.kocThroneItems[t.repairId]; if (item) { t.setStatus("Repair begun ... Repair will be complete at " + n.toLocaleTimeString() + ". Item: " + item.name); t.clearTimerH = setTimeout(t.clearRepair, secondsForRepair * 1000); } } t.buildThroneRepairDisplay(); t.repairEnd = endTime; setTimeout(function () { t.doSpeedup(); }, 1000); } }, doAction: function () { var t = Tabs.throneRepair; t.populateThroneRepairListBox(); if (STrChOThroneUpgradeData.active) { t.setStatus('Waiting for upgrade tab to finish...'); if (STrChOThroneRepairData.active) t.togglePower(); return; } if (!STrChOThroneRepairData.active) { t.setStatus("Powered Off"); return; } else { var retryTime = STrChOGeneralOptions.retryInterval; try { // check if repair is done var ti = t.clearRepair(); if (ti <= 0) { // repair is done // set the index t.selectNext(); if (STrChOThroneRepairData.index < 0) { t.setStatus("Reached end of queue.") t.setResult(""); SAVESTrChOThroneRepairData(); } else { var throne_item = uW.kocThroneItems[STrChOThroneRepairData.items[STrChOThroneRepairData.index]]; if (throne_item) { t.repairId = throne_item.id; t.doRepair(throne_item.id); } } } else { // come back after repair is complete retryTime = ti + 5; var n = new Date(t.repairEnd * 1000); t.setStatus("Waiting until " + n.toLocaleTimeString() + " for repair to complete. Item: " + uW.kocThroneItems[t.repairId].name); if (STrChOThroneRepairData.useSH || STrChOThroneRepairData.useKH || STrChOThroneRepairData.useGH || STrChOThroneRepairData.useMH || STrChOThroneRepairData.useAH || STrChOThroneRepairData.useWH || STrChOThroneRepairData.useDH || STrChOThroneRepairData.useEH || (STrChOThroneRepairData.overrideSpeedUp && STrChOThroneRepairData.useSpeedUp > 0)) { var throneItem = uW.kocThroneItems[t.repairId]; var trQuality = throneItem.quality; var trLevel = throneItem.level; var useThoseSpeedups = true; if (STrChOThroneRepairData.hourglassQualitySpecific && trQuality < STrChOThroneRepairData.hourglassQuality) useThoseSpeedups = false; if (STrChOThroneRepairData.hourglassLevelSpecific && trLevel < STrChOThroneRepairData.hourglassLevel) useThoseSpeedups = false; if (STrChOThroneRepairData.overrideSpeedUp) useThoseSpeedups = true; if (useThoseSpeedups) { setTimeout(function () { t.doSpeedup(); }, 2000); } retryTime = 1; } } CM.ThroneView.renderInventory(uW.kocThroneItems); } catch (e) { } // recycle clearTimeout(t.timerH); t.timerH = setTimeout(t.doAction, retryTime * 1000); t.buildThroneRepairDisplay(); } }, } Tabs.throneOrganizer = { tabOrder: 104, tabLabel: 'ORGANIZER', tabColor: 'red', tabHeader: 'THRONE ROOM ORGANIZER', throneItemLists: {}, sortEffect: "none", buffType: "both", panelId: -1, panelType: "upgrade", panelNextLevel: 2, switchingPresets: false, thronePanelOpen: false, init: function (div) { var t = Tabs.throneOrganizer; t.mydiv = div; t.sortEffect = STrChOThroneUpgradeData.effectSelected; t.buffType = STrChOThroneUpgradeData.buffSelected; var throneEffects = []; for (efx in CM.thronestats.effects) { var throneEffectName = CM.thronestats.effects[efx][1].split(" Debuff")[0]; if (throneEffects.indexOf(throneEffectName) < 0) throneEffects.push(throneEffectName); } var m = '
' + t.tabHeader + '
'; m += '
'; m += ''; m += ''; m += '
'; m += 'Sort: '; m += ''; m += ' Include Inactive '; m += ' Ignore Broken'; m += '
'; m += '
'; m += '
'; m += '
 CARD FILTER 
'; m += '
'; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += '
'; m += 'Filter By Effects: '; m += ''; m += '

FactionQualityLevelJewel
'; for (var fact=0;fact' + String(STrChOFactions[fact]).capitalizeFirstLetter() + '
'; m += '
'; for (var qual = 0; qual < throneCardQualities.length; qual++) m += '' + throneCardQualities[qual].capitalizeFirstLetter() + '
'; m += 'Uniques
'; m += '
'; for (lvl = 0; lvl <= STrChOMaxThroneLevel; lvl++) { m += '' + lvl + '
'; } m += '
'; m += 'No Jewel
'; for (var jwl = 0; jwl < STrChOJewelQualities.length; jwl++) m += '' + STrChOJewelQualities[jwl].capitalizeFirstLetter() + '
'; m += '
'; m += '
'; m += '
'; m += '
'; for (var tct = 0; tct < throneCardTypes.length; tct++) { m += '
 ' + throneCardTypes[tct].toUpperCase() + ' 
'; m += '
'; } //m += '
'; t.mydiv.innerHTML = '
' + m + '
'; var throneOrganizers = document.getElementsByClassName('STrChOThroneOrganizer'); for (var throneOrg=0; throneOrg < throneOrganizers.length; throneOrg++) { throneOrganizers[throneOrg].addEventListener('click', function () { var imgs = this.childNodes; if (imgs[0].src == STrChODownArrow) { imgs[0].src = STrChORightArrow imgs[2].src = STrChORightArrow } else { imgs[0].src = STrChODownArrow imgs[2].src = STrChODownArrow } var section = this.nextSibling; if (section.className != 'STrChOThroneOrganizerSection') return; if (section.style.display == 'block') section.style.display = 'none'; else section.style.display = 'block'; }, false); } var header = document.getElementsByClassName('STrChOHeader'); for (var head=0;head 5) { bump = 5 - quality; } } else if ((level + bump) > STrChOMaxThroneLevel) { bump = STrChOMaxThroneLevel - level; } var R = [], Q, Y, S, U, N = {}, T, W; if (V == 'next') { if (P == 'enhance') { quality += bump; document.getElementById('nextStatContainer').firstChild.innerHTML = X.createPrefix(); } else { if (P == "upgrade") { level += bump; document.getElementById('nextStatContainer').firstChild.innerHTML = 'Level ' + level; } } } $.each(X.effects, function (Z, aa) { Q = +(Z.split('slot')[1]); Y = CM.thronestats.effects[aa.id]; S = CM.thronestats.tiers[aa.id][aa.tier]; if (!S) CM.thronestats.tiers[aa.id][aa.tier - 1] var base = S.base || 0; var growth = S.growth || 0; U = +(base) + ((level * level + level) * +(growth) / 2); var wholeNumber = false; if (Math.round(U) == U) wholeNumber = true; if (wholeNumber) U = U.toFixed(0); else U = U.toFixed(2); if (Q % 2 == 0) { T = 'even' } else { T = 'odd' } if (Q <= quality) { if (U > 1) { R.push('
  • ' + Y[1] + ' +' + U + '%
  • ') } else { R.push('
  • ' + Y[1] + ' ' + U + '%
  • ') } } else { R.push('
  • ' + Y[1] + ' + ' + U + '%
  • ') } }); if (V == 'next') { if (P == 'enhance') { quality -= bump } else { if (P == 'upgrade') { level -= bump; } } } if (V === 'next') { if (CM.ThronePanelController.isLastLevel(X, P)) { var nextStatContainer = document.getElementById('nextStatContainer'); if (nextStatContainer.children.length < 3) { W = '
    '; nextStatContainer.innerHTML += W; } } else { var elem = document.getElementById('lockedStatIcon'); if (elem) elem.parentNode.removeChild(elem); } } t.panelNextLevel++; document.getElementById('thronePanelStat2').innerHTML = R.join(''); var lis = document.getElementById('thronePanelStat2').getElementsByTagName('li'); for (var i =0; i 0) { if (!(document.getElementById('STrChOThroneJewel' + jewelQuality).checked)) continue; } else { if (!noJewel) continue; } if (STrChOThroneUpgradeData.ignoreBroken && isBroken) continue; if (!(document.getElementById('STrChOThroneQualityUnique').checked) && unique) continue; if (!(document.getElementById('STrChOThroneQuality' + quality).checked) && !unique) continue; if (!(document.getElementById('STrChOThroneFaction' + faction).checked)) continue; if (!(document.getElementById('STrChOThroneLevel' + level).checked)) continue; var filterEffect = document.getElementById('STrChOThroneFilterEffects').value; if (filterEffect != 'none') { var filterBuff = document.getElementById('STrChOThroneFilterBuffType').value; if (filterBuff == 'debuff') filterEffect += ' Debuff'; var foundEffect = false; for (e in throneItem.effects) { var N = throneItem.effects[e]; var effect = CM.thronestats.effects[N.id][1]; if (effect == filterEffect) { foundEffect = true; break; } } if (!foundEffect) continue; } if (throneItem.isEquipped) t.throneItemLists[thronetype].unshift(throneItem); else t.throneItemLists[thronetype].push(throneItem); } t.sortThroneOrganizerLists(); }, paintThroneTables: function () { var t = Tabs.throneOrganizer; for (tct in t.throneItemLists) { var m = ''; var divCards = document.getElementById('STrChOThroneCardSection' + tct); divCards.innerHTML = "
    "; for (idx = 0; idx < t.throneItemLists[tct].length; idx++) { var throneItem = t.throneItemLists[tct][idx]; m += ''; } m += '
    '; m += BuildThroneCard(throneItem); m += '
    '; divCards.innerHTML = '
    ' + m + '
    '; } var STrChOCards = document.getElementsByClassName('STrChOThroneCard'); for (idx = 0; idx < STrChOCards.length; idx++) { STrChOCards[idx].addEventListener('click', function (A) { A.stopPropagation(); var throneId = this.id.split('STrChOThroneCard')[1]; var throneItem = uW.kocThroneItems[throneId]; CardContextMenu(this, throneItem, true); }, false); } Tabs.thronePresets.paintTags(); }, show: function () { var t = Tabs.throneOrganizer; t.createThroneItemList(); t.paintThroneTables(); }, sortThroneOrganizerLists: function () { var t = Tabs.throneOrganizer; STrChOThroneUpgradeData.sortInactive = document.getElementById('STrChOThroneSortInactive').checked; for (tct in t.throneItemLists) { t.throneItemLists[tct].sort(function (item1, item2) { return t.sortThroneOrganizerValue(item2) - t.sortThroneOrganizerValue(item1); }); } }, sortThroneOrganizerValue: function (item) { var t = Tabs.throneOrganizer; var retValue = 0.0; for (e in item.effects) { try { var N = item.effects[e]; var effect = CM.thronestats.effects[N.id][1]; var tier = CM.thronestats.tiers[N.id][N.tier]; if (!tier) CM.thronestats.tiers[N.id][N.tier - 1] var B = +(e.split("slot")[1]); var base = tier.base || 0; var level = item.level || 0; var growth = tier.growth || 0; var quality = item.quality || 0; if (B > quality && !STrChOThroneUpgradeData.sortInactive) { return +retValue; } var percent = +(base + ((level * level + level) * growth * 0.5)); if ((effect == (t.sortEffect + " Debuff")) && (t.buffType != "buff")) { retValue -= percent; } else if (effect == t.sortEffect && t.buffType != "debuff") { retValue += percent; } } catch (e) { } } return +retValue; }, unequipItem: function (I, preset) { var t = Tabs.throneOrganizer; if (!I) return; uW.AjaxCall.gPostRequest("ajax/_dispatch53.php", { ctrl: "throneRoom\\ThroneRoomServiceAjax", action: "unequipItem", itemId: I.id, presetId: preset }, function (u) { if (u.ok === true) { CM.ThroneView.clickItemUnequip(I); } else { CM.ModalManager.alert({ button_text: uW.g_js_strings.commonstr.ok, text: u.msg, "class": "craftFailure", exe: function () { uW.Modal.hideModalAll(); CM.ModalManager.close() } }) } }, function (u) { }); }, equipItem: function (I, preset) { if (!I) return; uW.AjaxCall.gPostRequest("ajax/_dispatch53.php", { ctrl: "throneRoom\\ThroneRoomServiceAjax", action: "equipItem", itemId: I.id, presetId: preset }, function (u) { if (u.ok === true) { CM.ThroneView.clickItemEquip(I); } else { CM.ModalManager.alert({ button_text: uW.g_js_strings.commonstr.ok, text: u.msg, "class": "craftFailure", exe: function () { uW.Modal.hideModalAll(); CM.ModalManager.close() } }) } }, function (u) { }) }, } Tabs.throneSorter = { tabOrder: 105, tabLabel: 'SORTER', tabColor: 'red', tabHeader: 'THRONE ROOM SORTER', STrChOLocalSwapFile: null, STrChOLocalSwapPresets: [], init: function (div) { var t = Tabs.throneSorter; t.mydiv = div; }, hide: function () {}, show: function () { var t = Tabs.throneSorter; t.STrChOLocalSwapFile = null; var m = '
    ' + t.tabHeader + '
    '; m += '
    '; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += '
    '; if (STrChOGeneralOptions.throneSorter) { m += ''; } else { m += ''; } m += '
    WARNINGS!
    Sorter tab and throne panel will not sync until the other is redrawn by closing/reopening it.
    Salvaging with throne sorter on, WILL decrease the rate of salvaging

     '; m += ''; m += '                    ' m += '                    ' m += '                    ' m += '                    ' m += '    '; m += ' '; m += ''; m += ''; m += '
    '; m += ''; m += ''; m += ''; m += '
    '; m += 'Slot: '; m += '
    '; m += 'SELECTED CARD:
    '; m += '
    '; m += '
    '; m += '
    '; if (STrChOThroneSorter.length == 0) resetThroneSorter(); var row = 0; for (var idx = 0; idx < STrChOThroneSorter.length; idx++) { if (idx % 5 == 0) { row++; m += '
    '; } var throneId = STrChOThroneSorter[idx]; var throneItem = uW.kocThroneItems[throneId]; if (!throneItem) continue; var className = ''; className += throneItem.type + ' '; className += throneItem.faction + ' '; className += 'quality' + throneItem.quality; if (throneItem.unique > 0) className += ' unique' + throneItem.unique; img = getThroneImage(throneItem); if (t.STrChOLocalSwapFile == throneId) img = success_image; m += ''; if (idx == STrChOThroneSorter.length-1 && idx % 5 != 4) m += '
    '; if (idx % 5 == 4) m += '
    '; } m += ''; m += '
    '; m += 'HOVER CARD:
    '; m += '
    '; m += '
    '; t.mydiv.innerHTML = '
    ' + m + '
    '; t.displaySelectCard(); document.getElementById('STrChOThroneSorterPresetGo').addEventListener('click', function() { if (!STrChOGeneralOptions.throneSorter) return; if (t.STrChOLocalSwapFile != null) return; var STrChOThroneSorterPreset = document.getElementById('STrChOThroneSorterPreset'); if (STrChOThroneSorterPreset.value == 0) return; var STrChOThroneSorterPresetGo = document.getElementById('STrChOThroneSorterPresetGo'); var STrChOThroneSortCard = document.getElementById('STrChOThroneSortCard'); if (STrChOThroneSorterPresetGo.value == 'Select') { var equipped_items = Seed.throne.slotEquip[STrChOThroneSorterPreset.value]; STrChOThroneSortCard.innerHTML = equipped_items.length + ' Cards Selected
    From Slot ' + STrChOThroneSorterPreset.value; for (var ei = 0; ei < equipped_items.length; ei++) { var throneId = parseInt(equipped_items[ei]); t.STrChOLocalSwapPresets.push(throneId); document.getElementById('STrChOThroneSorterInventoryIcon' + throneId).src = success_image; } STrChOThroneSorterPreset.disabled = true; STrChOThroneSorterPresetGo.value = 'Unselect'; } else { STrChOThroneSortCard.innerHTML = 'No Card(s) Selected'; for (var ei = 0; ei < t.STrChOLocalSwapPresets.length; ei++) { var throneId = t.STrChOLocalSwapPresets[ei]; document.getElementById('STrChOThroneSorterInventoryIcon' + throneId).src = getThroneImage(uW.kocThroneItems[throneId]); } t.STrChOLocalSwapPresets = []; STrChOThroneSorterPresetGo.value = 'Select'; STrChOThroneSorterPreset.disabled = false; } }, false); document.getElementById('STrChOThroneSorterPower').addEventListener('click', function () { t.togglePower(this); }, false); var STrChOThroneSorterItems = document.getElementsByClassName('STrChOThroneSorterItem'); for (var idx = 0; idx < STrChOThroneSorterItems.length; idx++) { var STrChOThroneSorterItem = STrChOThroneSorterItems[idx]; STrChOThroneSorterItem.addEventListener('mouseover', function(A) { A.stopPropagation(); var throneId = this.id.split('STrChOThroneSorterInventoryIcon')[1]; var throneItem = uW.kocThroneItems[throneId]; document.getElementById('STrChOThroneSortCardHover').innerHTML = howManyThroneSlots(throneId) + '
    ' + BuildThroneCard(throneItem); }, false); STrChOThroneSorterItem.addEventListener('mouseout', function(A) { A.stopPropagation(); var throneId = this.id.split('STrChOThroneSorterInventoryIcon')[1]; var throneItem = uW.kocThroneItems[throneId]; document.getElementById('STrChOThroneSortCardHover').innerHTML = ''; }, false); STrChOThroneSorterItem.addEventListener('contextmenu', function(A) { A.preventDefault(); if (!STrChOGeneralOptions.throneSorter) return; if (t.STrChOLocalSwapPresets.length > 0) { var thisThroneId = parseInt(this.id.split('STrChOThroneSorterInventoryIcon')[1]); var foundIndex = 0; var tempSwapper = []; for (var i = 0; i < STrChOThroneSorter.length; i++) { var throneId = parseInt(STrChOThroneSorter[i]); if (thisThroneId == throneId) { foundIndex = i; break; } if (t.STrChOLocalSwapPresets.indexOf(throneId) == -1) { //not found in local swap list tempSwapper.unshift(throneId); } } for (var i = 0; i < t.STrChOLocalSwapPresets.length; i++ ) { tempSwapper.unshift(parseInt(t.STrChOLocalSwapPresets[i])); } for (var i = foundIndex; i < STrChOThroneSorter.length; i++) { var throneId = parseInt(STrChOThroneSorter[i]); if (t.STrChOLocalSwapPresets.indexOf(throneId) == -1) { //not found in swap list tempSwapper.unshift(throneId); } } t.STrChOLocalSwapPresets = []; STrChOThroneSorter = []; while (tempSwapper.length > 0) STrChOThroneSorter.push(tempSwapper.pop()); SAVESTrChOThroneSorter(); t.show(); return; } var throneId = this.id.split('STrChOThroneSorterInventoryIcon')[1]; var throneItem = uW.kocThroneItems[throneId]; if (!throneItem || throneItem == null) { if (t.STrChOLocalSwapFile == throneId) $(this).remove(); t.STrChOLocalSwapFile = null; setThroneSorter(true); SAVESTrChOThroneSorter(); t.show(); return; } if (t.STrChOLocalSwapFile == null) { t.STrChOLocalSwapFile = throneId; this.src = success_image; t.displaySelectCard(); } else { if (t.STrChOLocalSwapFile == throneId) { t.STrChOLocalSwapFile = null; this.src = getThroneImage(throneItem); t.displaySelectCard(); return; } var img = document.getElementById('STrChOThroneSorterInventoryIcon' + t.STrChOLocalSwapFile); img.src = getThroneImage(uW.kocThroneItems[t.STrChOLocalSwapFile]); var fromTile = document.getElementById('STrChOThroneSorterInventoryIcon' + t.STrChOLocalSwapFile); var fromTilePosition = 0; var child = fromTile; while( (child = child.previousSibling) != null ) fromTilePosition++; var toTile = document.getElementById('STrChOThroneSorterInventoryIcon' + throneId); var toTilePosition = 0; child = this; while( (child = child.previousSibling) != null ) toTilePosition++; var fromParent = fromTile.parentElement; var toParent = toTile.parentElement; var fromDelete = fromParent.children[fromTilePosition]; var toDelete = toParent.children[toTilePosition]; if (fromParent != toParent) { //simple swap $(fromDelete).remove(); $(toDelete).remove(); fromParent.insertBefore(toTile, fromParent.childNodes[fromTilePosition]); toParent.insertBefore(fromTile, toParent.childNodes[toTilePosition]); } else { //little more tricky var newRow = []; for (var idx = 0; idx < fromParent.children.length; idx++) { if (idx == fromTilePosition) { newRow.unshift(toTile); } else if (idx == toTilePosition) { newRow.unshift(fromTile); } else { newRow.unshift(fromParent.children[idx]); } } while (fromParent.hasChildNodes()) fromParent.removeChild(fromParent.lastChild); while (newRow.length > 0) fromParent.appendChild(newRow.pop()); } t.STrChOLocalSwapFile = null; t.displaySelectCard(); setThroneSorter(true); SAVESTrChOThroneSorter(); t.show(); } }, false); } document.getElementById('STrChOSorterDefaults').addEventListener('click', function () { resetThroneSorter(); t.STrChOLocalSwapFile = null; var cmContainerOpen = (document.getElementsByClassName('cmModalContainer').length == 1 ? true : false); if (cmContainerOpen) { var titlebar = document.getElementsByClassName('primarytitlebar')[0]; var closebutton = titlebar.children[2]; closebutton.click(); setTimeout(function () { CM.ThroneView.openThrone(); }, 100); } t.show(); }, false); document.getElementById('STrChOSorterExport').addEventListener('click', function () { if (STrChOThroneSorter.length == 0) return; uriContent = 'data:application/octet-stream,' + encodeURIComponent(JSON.stringify(STrChOThroneSorter)); newWindow = window.open(uriContent, 'file.txt'); }, false); document.getElementById('STrChOSorterImport').addEventListener('click', function () { var fileInput = document.getElementById("STrChOSorterImportLoadItem"); var files = fileInput.files; if (files.length==0) { alert('Please Select A File'); return; } var file = files[0]; var reader = new FileReader(); reader.onload = function (e) { var output = e.target.result; STrChOThroneSorter = JSON.parse(output); SAVESTrChOThroneSorter(); t.show(); alert('Throne Sorted Order Now Loaded From File'); }; reader.readAsText(file); }, false); }, togglePower: function (obj) { var t = Tabs.throneSorter; var STrChOThroneSorterPower = document.getElementById('STrChOThroneSorterPower'); if (STrChOGeneralOptions.throneSorter) { STrChOGeneralOptions.throneSorter = false; STrChOThroneSorterPower.value = "Sorter = OFF"; } else { if (STrChOThroneSalvageData.active) { if (!confirm('SORTER WARNING: You will likely experience lowered salvage rates and potentially crashing if you have both sorter and salvager enabled. Would you like to continue?')) return; } STrChOGeneralOptions.throneSorter = true; STrChOThroneSorterPower.value = "Sorter = ON"; } SAVESTrChOThroneSorter(); var cmContainerOpen = (document.getElementsByClassName('cmModalContainer').length == 1 ? true : false); if (cmContainerOpen) { var titlebar = document.getElementsByClassName('primarytitlebar')[0]; var closebutton = titlebar.children[2]; closebutton.click(); setTimeout(function () { CM.ThroneView.openThrone(); }, 100); } t.updateThroneMenu(); }, updateThroneMenu: function () { if (!document.getElementById('STrChOExecuteSorter')) return; document.getElementById('STrChOExecuteSorter').innerHTML = 'Sorter ' + (STrChOGeneralOptions.throneSorter ? 'ON' : 'OFF'); }, displaySelectCard: function () { var t = Tabs.throneSorter; if (t.STrChOLocalSwapFile == null) { document.getElementById('STrChOThroneSortCard').innerHTML = "No Card(s) Selected"; } else { var throneItem = uW.kocThroneItems[t.STrChOLocalSwapFile]; document.getElementById('STrChOThroneSortCard').innerHTML = howManyThroneSlots(t.STrChOLocalSwapFile) + '
    ' + BuildThroneCard(throneItem); } }, } Tabs.throneEnhStats = { tabOrder: 106, tabLabel: 'ENH STATS', tabColor: 'red', tabHeader: 'THRONE ROOM ENHANCEMENT STATS', init: function (div) { var t = Tabs.throneEnhStats; t.mydiv = div; t.buildThroneEnhStatsDisplay(); }, hide: function () {}, buildThroneEnhStatsDisplay: function () { var t = Tabs.throneEnhStats; var m = '
    ' + t.tabHeader + '
    '; // m += '
    '; m += '
    '; m += ''; m += ''; m += ''; for (qual = 0; qual <= STrChOMaxThroneQuality; qual++) m += ''; m += ''; var st = [0, 0, 0, 0, 0, 0, 0]; var ft = [0, 0, 0, 0, 0, 0, 0]; for (lvl = 0; lvl <= STrChOMaxThroneLevel; lvl++) { m += ''; m += ''; for (qual = 0; qual < (STrChOMaxThroneQuality+1); qual++) { if (STrChOThroneUpgradeStats.enhanceSuccess[qual][lvl] == null) STrChOThroneUpgradeStats.enhanceSuccess[qual][lvl] = 0; if (STrChOThroneUpgradeStats.enhanceFailure[qual][lvl] == null) STrChOThroneUpgradeStats.enhanceFailure[qual][lvl] = 0; st[qual] += STrChOThroneUpgradeStats.enhanceSuccess[qual][lvl]; ft[qual] += STrChOThroneUpgradeStats.enhanceFailure[qual][lvl]; m += ''; } m += ''; } m += ''; for (qual = 0; qual < (STrChOMaxThroneQuality+1); qual++) m += ''; m += ''; m += ''; for (qual = 0; qual < (STrChOMaxThroneQuality+1); qual++) { m += ''; } m += ''; m += '
    Enhancing Numbers (successes/failures)
    ' + throneCardQualities[qual].capitalizeFirstLetter() + ' 
    '; if (lvl != 0) m += '+'; m += lvl + '' + STrChOThroneUpgradeStats.enhanceSuccess[qual][lvl] + ' / ' + STrChOThroneUpgradeStats.enhanceFailure[qual][lvl] + '
    Totals: ' + st[qual] + ' / ' + ft[qual] + '
    Percents: '; if ((st[qual] + ft[qual]) == 0) m += "--"; else { var perc = (100 * st[qual] / (st[qual] + ft[qual])); m += perc.toFixed(2) + '%'; } m += '
    '; m += '
    '; m += '
    '; t.mydiv.innerHTML = '
    ' + m + '
    '; document.getElementById('STrChOThroneEnhStatsClear').addEventListener('click', function () { var t = Tabs.throneEnhStats; for (lvl = 0; lvl <= STrChOMaxThroneLevel; lvl++) { for (qual = 0; qual < (STrChOMaxThroneQuality+1); qual++) { STrChOThroneUpgradeStats.enhanceSuccess[qual][lvl] = null; STrChOThroneUpgradeStats.enhanceFailure[qual][lvl] = null; } } SAVESTrChOThroneUpgradeStats(); t.buildThroneEnhStatsDisplay(); }, false); }, show: function () { var t = Tabs.throneEnhStats; t.buildThroneEnhStatsDisplay(); }, } Tabs.throneUpgStats = { tabOrder: 107, tabLabel: 'UPG STATS', tabColor: 'red', tabHeader: 'THRONE ROOM UPGRADE STATS', init: function (div) { var t = Tabs.throneUpgStats; t.mydiv = div; t.buildThroneUpgStatsDisplay(); }, hide: function () {}, buildThroneUpgStatsDisplay: function () { var t = Tabs.throneUpgStats; var m = '
    ' + t.tabHeader + '
    '; m += '
    '; m += ''; m += ''; m += ''; for (lvl = 0; lvl < STrChOMaxThroneLevel; lvl++) m += ''; m += ''; var st = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0,0]; //TODO: change when game changes max throne level (currently 52) var ft = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0,0]; for (qual = 0; qual <= STrChOMaxThroneQuality; qual++) { m += ''; for (lvl = 0; lvl < STrChOMaxThroneLevel; lvl++) { if (STrChOThroneUpgradeStats.upgradeSuccess[qual][lvl] == null || isNaN(STrChOThroneUpgradeStats.upgradeSuccess[qual][lvl])) STrChOThroneUpgradeStats.upgradeSuccess[qual][lvl] = 0; if (STrChOThroneUpgradeStats.upgradeFailure[qual][lvl] == null || isNaN(STrChOThroneUpgradeStats.upgradeFailure[qual][lvl])) STrChOThroneUpgradeStats.upgradeFailure[qual][lvl] = 0; st[lvl] += STrChOThroneUpgradeStats.upgradeSuccess[qual][lvl]; ft[lvl] += STrChOThroneUpgradeStats.upgradeFailure[qual][lvl]; m += ''; } m += ''; } m += ''; for (lvl = 0; lvl < STrChOMaxThroneLevel; lvl++) m += ''; m += ''; m += ''; for (lvl = 0; lvl < STrChOMaxThroneLevel; lvl++) { m += ''; } m += ''; m += '
    Upgrading Numbers (successes/failures)
     +' + (lvl + 1) + ' 
    ' + throneCardQualities[qual].capitalizeFirstLetter() + ''; m += STrChOThroneUpgradeStats.upgradeSuccess[qual][lvl] + ' / ' + STrChOThroneUpgradeStats.upgradeFailure[qual][lvl]; m += '
    Totals: ' + st[lvl] + " / " + ft[lvl] + '
    Percents: '; if ((st[lvl] + ft[lvl]) == 0) m += '--'; else { var perc = (100 * st[lvl] / (st[lvl] + ft[lvl])); m += perc.toFixed(2) + '%'; } m += '
    '; m += '
    '; m += '
    '; t.mydiv.innerHTML = '
    ' + m + '
    '; document.getElementById('STrChOThroneUpgStatsClear').addEventListener('click', function () { var t = Tabs.throneUpgStats; for (lvl = 0; lvl <= STrChOMaxThroneLevel; lvl++) { for (qual = 0; qual < (STrChOMaxThroneQuality+1); qual++) { STrChOThroneUpgradeStats.upgradeSuccess[qual][lvl] = null; STrChOThroneUpgradeStats.upgradeFailure[qual][lvl] = null; } } SAVESTrChOThroneUpgradeStats(); t.buildThroneUpgStatsDisplay() }, false); }, show: function () { var t = Tabs.throneUpgStats; t.buildThroneUpgStatsDisplay(); }, } Tabs.thronePresets = { tabOrder: 108, tabLabel: 'PRESETS', tabColor: 'red', tabHeader: 'THRONE ROOM PRESETS', broke_count: 0, broke_items: 0, delay: 1000, init: function (div) { var t = Tabs.thronePresets; t.mydiv = div; //t.show(); }, hide: function () {}, refreshBrokeMightDisplay: function () { document.getElementById('STrChOThroneMightBroke').innerHTML = getThroneBrokeMight(); }, show: function () { var t = Tabs.thronePresets; var m = '
    ' + t.tabHeader + '
    '; m += '
    '; m += ''; m += ''; m += ''; m += ''; m += '
    Preset Color: '; m += '   General Color: '; m += '   Active Color: (Requires Refresh)
    '; m += '  '; m += '  '; m += '  '; //m += ''; m += '
    '; m += 'Show Might on Posts'; m += '   Show Preset Name on Posts'; m += '
    '; m += '
     PRESET NAMING 
    '; m += '
    '; m += ''; var presetSlots = getObjectCollectionCount(Seed.throne.slotEquip); var presetsList = ""; for (i = 1; i < presetSlots + 1; i++) { presetsList += ''; } for (i = 1; i < presetSlots + 1; i++) { m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; if (getThronePresetTagCount(i) != 0) { m += ''; m += ''; } else { m += ''; } m += '
     Preset ' + i + ': '; } m += '
    '; m += '
    '; m += '
     THRONE ROOM BREAKING 
    '; m += '
    '; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += '
    You have 0 throne room might broken
    Exclude Tagged Presets
    Exclude Regular Tagged
    Break Items Level or Higher
    Break Items Level or Lower
    (all options above will reset after refresh)

    Break Equiped Throne Room Only
    Break Tagged Preset Only
    Break Throne Might
    '; m += '
    '; m += '
    '; t.mydiv.innerHTML = '
    ' + m + '
    '; document.getElementById('STrChOThronePresetsSaveSettings').addEventListener('click', function () { SaveSettingsToFile(STrChOThronePresetData); }, false); document.getElementById('STrChOThronePresetsLoadSettings').addEventListener('click', function () { var loader = document.getElementById('STrChOSettingsFile'); loader.addEventListener('change', function () { LoadSettingsFromFile(STrChOThronePresetData, Tabs.thronePresets); }, false); loader.click(); }, false); var header = document.getElementsByClassName('STrChOHeader'); for (var head=0;head= 35 && e.keyCode <= 39) || // Allow: F5 (e.keyCode == 116)) { // let it happen, don't do anything return; } // Ensure that it is a number and stop the keypress if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105) || e.keyCode == 190 || e.keyCode == 110 ) { e.preventDefault(); } }, false); document.getElementById('STrChOThroneMightBreak').addEventListener('keyup', function (e) { document.getElementById('STrChOThroneMightBreak').value = document.getElementById('STrChOThroneMightBreak').value.replace('.',''); document.getElementById('STrChOThroneMightBreak').value = document.getElementById('STrChOThroneMightBreak').value.replace(',',''); }, false); function BreakIt( cardsToBreak ) { var t = Tabs.thronePresets; if (!cardsToBreak || cardsToBreak == null) return; if (cardsToBreak.length == 0) { alert('No throne items to break'); return; } t.broke_count = cardsToBreak.length; //t.setBreakStatus(); t.broke_items = 0; //var items_broke = 0; //this will be the counter for the # of throne items broke for (var i = 0; i < cardsToBreak.length; i++) { //loop through all the throne items to be broke var citytobreakfrom = 0; //start at the first city {the index is 0-based} var throne_item = uW.kocThroneItems[cardsToBreak[i]]; //get the next throne item in the collection var curr_level = throne_item.level; //get the current level of the throne item var throne_id = throne_item.id; //get the throne item id //var curr_might = throne_item if (curr_level == STrChOMaxThroneLevel) continue; //if for some reason a card at the max level makes it through the list then continue to the next in the list var cost_to_upgrade = CM.thronestats.upgrade[curr_level + 1].Stones; //get the cost of stones to upgrade to the next level while (citytobreakfrom < 8) { //loop through all the 8 cities checking for astone to upgrade for the break feature stones_in_city = parseInt(Seed.resources["city" + Seed.cities[citytobreakfrom][0]]["rec5"][0]); //get the astone count for the city if (cost_to_upgrade + STrChOBreakBuffer <= stones_in_city) break; //if you have the astone in the city then stop searching cities and do the upgrade citytobreakfrom = citytobreakfrom + 1; //search to the next city in the loop } if (citytobreakfrom == 8) continue; //if you make it to 8, then you've exhausted all the cities astone search for this throne item, move to the next one var params = uW.Object.clone(ajfx); params.ctrl = 'throneRoom\\ThroneRoomServiceAjax'; params.action = 'upgradeLevel'; params.throneRoomItemId = throne_id; params.buffItemId = 0; params.payment = "aetherstone"; params.cityId = Seed.cities[citytobreakfrom][0]; //items_broke = items_broke + 1; t.broke_items += 1; Seed.resources["city" + Seed.cities[citytobreakfrom][0]]["rec5"][0] = Seed.resources["city" + Seed.cities[citytobreakfrom][0]]["rec5"][0] - cost_to_upgrade; new AjaxRequest(uW.g_ajaxpath + "ajax/_dispatch53.php" + uW.g_ajaxsuffix, { method: "post", parameters: params, loading: true, onSuccess: function (transport) { try { var rslt = eval("(" + transport.responseText + ")"); if (rslt.ok) { if (rslt.updateSeed) uW.update_seed(rslt.updateSeed); } if (rslt.gems > 0) { alert("UNEXPECTED ERROR: 'BREAK TR' accidentally spent gems.... Stopping now!"); ActionLog('BREAK TR accidentally spent gems! Stopping now!'); RefreshCamelot(); return; } //if (rslt.success) i--; } catch (e) { } }, onFailure: function (rrr) { CM.ThroneView.renderInventory(uW.kocThroneItems); } }); } CM.ThroneView.renderInventory(uW.kocThroneItems); if (t.broke_items == 0) { alert('No Items broken. (NOTE: check astone levels if items should have been broke)'); } else { alert('Breaking TR complete. ' + t.broke_items + ' Throne items were broken. Page will now refresh.'); RefreshCamelot(); } } document.getElementById('STrChOThroneBreakAll').addEventListener('click', function () { if (!confirm('You cannot undo this action, are you sure you want to break your throne room?')) return; var excludePresets = document.getElementById('STrChOThroneExcludePresets').checked; var excludeTags = document.getElementById('STrChOThroneExcludeTags').checked; var breakLevelLow = document.getElementById('STrChOThroneBreakLevelLow').value; var breakLevelHigh = document.getElementById('STrChOThroneBreakLevelHigh').value; var allTaggedPresets = []; if (excludePresets) { for (i = 1; i < presetSlots + 1; i++) { if (getThronePresetTagCount(i) != 0) { var thisPreset = getThronePresetObject(i); for (throneId in thisPreset) { var throne_item = uW.kocThroneItems[throneId]; if (throne_item == null || !throne_item) continue; if (throne_item.level == STrChOMaxThroneLevel) continue; if (throne_item.level < breakLevelLow || throne_item.level > breakLevelHigh) continue; allTaggedPresets.push(throneId); } } } } var throneToBreak = []; for (trId in uW.kocThroneItems) { var throne_item = uW.kocThroneItems[trId]; if (throne_item == null || !throne_item) continue; if (throne_item.isBroken) continue; if (excludeTags && STrChOThronePresetData.taggedItems[trId]) continue; if (allTaggedPresets.indexOf(trId) != -1) continue; if (throne_item.level == STrChOMaxThroneLevel) continue; if (throne_item.level < breakLevelLow || throne_item.level > breakLevelHigh) continue; throneToBreak.push(trId); } delete allTaggedPresets; BreakIt(throneToBreak); }, false); document.getElementById('STrChOThroneMightBreakNow').addEventListener('click', function () { document.getElementById('STrChOThroneMightBreak').value = document.getElementById('STrChOThroneMightBreak').value.replace('.',''); document.getElementById('STrChOThroneMightBreak').value = document.getElementById('STrChOThroneMightBreak').value.replace(',',''); var mightReach = document.getElementById('STrChOThroneMightBreak').value; if (!isNumeric(mightReach)) return; if (!confirm('You cannot undo this action, are you sure you want to break?')) return; var throneToBreak = []; var mightTally = 0; for (var throneId in uW.kocThroneItems) { if (mightTally >= mightReach) break; var throne_item = uW.kocThroneItems[throneId]; var throne_might = CM.ThroneView.getMightBonus(throne_item); mightTally += throne_might; throneToBreak.push(throneId); }; BreakIt(throneToBreak); }, false); document.getElementById('STrChOThronePresetEquipBreakNow').addEventListener('click', function () { if (!confirm('You cannot undo this action, are you sure you want to break?')) return; var throneToBreak = []; var equipped_items = Seed.throne.slotEquip[Seed.throne.activeSlot]; for (ei = 0; ei < equipped_items.length; ei++) { throneToBreak.push(equipped_items[ei]); } BreakIt(throneToBreak); }, false); document.getElementById('STrChOThronePresetTaggedBreakNow').addEventListener('click', function () { if (!confirm('You cannot undo this action, are you sure you want to break?')) return; var throneToBreak = []; var STrChOThronePresetTaggedBreak = document.getElementById('STrChOThronePresetTaggedBreak').value; var thronePreset = getThronePresetObject(parseInt(STrChOThronePresetTaggedBreak)); for (var throneId in thronePreset) throneToBreak.push(throneId); BreakIt(throneToBreak); }, false); function isNumeric(n) { return !isNaN(parseFloat(n)) && isFinite(n); } // read the preset names and descriptions var STrChOThronePresetNameEntry = document.getElementsByClassName('STrChOThronePresetNameEntry'); for (var elem=0; elem
    "); } for (p in STrChOThronePresetData.taggedItems) { $("#throneInventoryItem" + p).children(".tagBorderThrone").remove(); //remove any tag first before applying the tag to avoid doubling, trippling up on the borders, etc $("div#throneInventoryItem" + p).prepend("
    "); } for (idx = 1; idx < (STrChOMaxPresets+1); idx++) { var preset = getThronePresetObject(idx); if (getObjectCollectionCount(preset) > 0) { for (p in preset) { $("#throneInventoryItem" + p).children(".presetBorderThrone").remove(); //remove any tag first before applying the tag to avoid doubling, trippling up on the borders, etc $("#throneInventoryItem" + p).prepend("
    "); } } } if (STrChOGeneralOptions.showJewels) { for (trId in uW.kocThroneItems) { var throne_item = uW.kocThroneItems[trId]; if (!throne_item.jewel) continue; if (throne_item.jewel.valid && !throne_item.isBroken) { $("#throneInventoryItem" + throne_item.id).children(".jewelIcon").remove(); $("div#throneInventoryItem" + throne_item.id).append("
    "); } } } $("#advisorContainer").click(function () { ThroneMenuPopup('advisorContainer'); }); $("#heroContainer").click(function () { ThroneMenuPopup('heroContainer'); }); $("#chairContainer").click(function () { ThroneMenuPopup('chairContainer'); }); $("#candelabrumContainer").click(function () { ThroneMenuPopup('candelabrumContainer'); }); $("#tableContainer").click(function () { ThroneMenuPopup('tableContainer'); }); $("#windowContainer").click(function () { ThroneMenuPopup('windowContainer'); }); $("#bannerContainer").click(function () { ThroneMenuPopup('bannerContainer'); }); $("#trophyContainer").click(function () { ThroneMenuPopup('trophyContainer'); }); $("#statueContainer").click(function () { ThroneMenuPopup('statueContainer'); }); $("#petContainer").click(function () { ThroneMenuPopup('petContainer'); }); $("#tapestryContainer").click(function () { ThroneMenuPopup('tapestryContainer'); }); $("#pillarContainer").click(function () { ThroneMenuPopup('pillarContainer'); }); function ThroneMenuPopup(displayContainer) { var throneType = displayContainer.split('Container')[0]; for (var trId in uW.kocThroneItems) { var throne_item = uW.kocThroneItems[trId]; if (throne_item == null || !throne_item) continue; if (throne_item.type == throneType && throne_item.isEquipped) { var thisDiv = document.getElementById(displayContainer); CardContextMenu(thisDiv, throne_item, false); break; } } }; }, unequipAllItems: function (presetIndex) { if (Seed.throne.activeSlot != presetIndex) { Seed.throne.activeSlot = presetIndex; } var t = Tabs.throneOrganizer; if (t.switchingPresets) { alert("still unequipping"); return; } if (!confirm('Are you sure you want to unequip all items?')) return; var c = 0; t.switchingPresets = true; // grab the list of items equipped in the slot about to be switched to var delay = 7; var equipped_items = Seed.throne.slotEquip[presetIndex]; var counter = equipped_items.length; var items = []; for (i = 0; i < counter; i++) items.push(equipped_items[i]); while (counter > 0) { var throne_item = uW.kocThroneItems[items.pop()]; var goUnequip = function (I2, s) { return function () { Tabs.throneOrganizer.unequipItem(I2, s); }; } setTimeout(goUnequip(throne_item, presetIndex), c * delay * 1000); // have to wait at least 5 seconds between switches c++; counter--; } setTimeout(function () { t.switchingPresets = false; alert("all throne items unequipped") }, c * delay * 1000 + 1000); }, equipPresetTags: function (presetIndex) { if (Seed.throne.activeSlot != presetIndex) { Seed.throne.activeSlot = presetIndex; } var t = Tabs.throneOrganizer; var preset = getThronePresetObject(presetIndex); if (t.switchingPresets) { alert("still equipping"); return; } if (getObjectCollectionCount(preset) == 0) { alert("preset is empty"); return; } var c = 0; t.switchingPresets = true; var delay = 7; var types_equiped = []; for (p in preset) { // only equip the items not already equipped var throne_item = uW.kocThroneItems[p]; types_equiped.push(throne_item.type); if (!throne_item.isEquipped) { var goEquip = function (I2, s) { return function () { Tabs.throneOrganizer.equipItem(I2, s); }; } setTimeout(goEquip(throne_item, presetIndex), c * delay * 1000); // have to wait at least 5 seconds between switches c++; } } var equipped_items = Seed.throne.slotEquip[presetIndex]; var counter = equipped_items.length; var items_to_unequip = []; for (i = 0; i < counter; i++) { var throne_item = uW.kocThroneItems[equipped_items[i]]; var idx = types_equiped.indexOf(throne_item.type); if (idx == -1) { //item in equipped items is not found among the types that were equipped, so unequip it var goUnequip = function (I2, s) { return function () { Tabs.throneOrganizer.unequipItem(I2, s); }; } setTimeout(goUnequip(throne_item, presetIndex), c * delay * 1000); // have to wait at least 5 seconds between switches c++; } } setTimeout(function () { t.switchingPresets = false; alert("preset #" + presetIndex + " loaded from tagged preset") }, (c * (delay * 1000)) + 1000); }, copyPresetTags: function (sourcePresetNumber, destinationPresetNumber, presetName) { var pSource = getThronePresetObject(parseInt(sourcePresetNumber)); var pDestination = getThronePresetObject(parseInt(destinationPresetNumber)); for (var p in pDestination) delete pDestination[p]; for (var p in pSource) pDestination[p] = true; STrChOThronePresetData.presetNames[destinationPresetNumber] = presetName + " (copy)"; SAVESTrChOThronePresetData(); }, addPresetTags: function (presetIndex) { //presetIndex should be passed in as base 0 to index into the presetTaggedItems array var t = Tabs.thronePresets; var preset = getThronePresetObject(parseInt(presetIndex)); var equipped_items = Seed.throne.slotEquip[parseInt(presetIndex)]; for (var p in preset) delete preset[p]; for (ei = 0; ei < equipped_items.length; ei++) { var throneId = equipped_items[ei]; preset[throneId] = true; $("#throneInventoryItem" + throneId).prepend("
    "); SAVESTrChOThronePresetData(); } t.paintTags(); }, clearPresetTags: function (presetIndex) { var preset = getThronePresetObject(parseInt(presetIndex)); for (var p in preset) { delete preset[p]; $("#throneInventoryItem" + p).children(".presetBorderThrone").remove(); SAVESTrChOThronePresetData(); } }, removeTagItem: function (itemId) { if (STrChOThronePresetData.taggedItems[itemId]) { delete STrChOThronePresetData.taggedItems[itemId]; $("#throneInventoryItem" + itemId).children(".tagBorderThrone").remove(); SAVESTrChOThronePresetData(); } }, addTagItem: function (itemId) { STrChOThronePresetData.taggedItems[itemId] = true; $("#throneInventoryItem" + itemId).prepend("
    "); SAVESTrChOThronePresetData(); }, addAllTagItems: function() { var t = Tabs.thronePresets; t.clearAllTagItems(); for (trId in uW.kocThroneItems) { STrChOThronePresetData.taggedItems[trId] = true; $("#throneInventoryItem" + trId).prepend("
    "); } SAVESTrChOThronePresetData(); }, clearAllTagItems: function () { var taggedReverse = []; for (k in STrChOThronePresetData.taggedItems) taggedReverse.push(k); var len = taggedReverse.length; while (len--) { var trID = taggedReverse[len]; delete STrChOThronePresetData.taggedItems[trID]; $("#throneInventoryItem" + trID).children(".tagBorderThrone").remove(); SAVESTrChOThronePresetData(); } }, clearAllPresetTagItems: function () { if (!confirm('Are you sure you want to clear all preset tag items?')) return; var presetCount = getObjectCollectionCount(Seed.throne.slotEquip) + 1; for (i = 1; i < presetCount; i++) { document.getElementById('STrChOThronePresetName' + i).value = "undefined"; STrChOThronePresetData.presetNames[i] = "undefined"; var preset = getThronePresetObject(i); for (var p in preset) { delete preset[p]; $("#throneInventoryItem" + p).children(".presetBorderThrone").remove(); SAVESTrChOThronePresetData(); } } }, setBreakStatus: function() { var t = Tabs.thronePresets; var remaining = t.broke_count - t.broke_items; var m = "Items Remaining: " + remaining; m += "
    Time Remaining: " + (remaining * (t.delay/1000)) + " Seconds"; document.getElementById('STrChOThroneBreakCounter').innerHTML = m; }, } Tabs.thronePreview = { tabOrder: 109, tabLabel: 'PREVIEW', tabColor: 'red', tabHeader: 'THRONE ROOM PREVIEW', equipingPreview: false, init: function (div) { var t = Tabs.thronePreview; t.mydiv = div; }, hide: function () {}, show: function () { var t = Tabs.thronePreview; var presetSlots = getObjectCollectionCount(Seed.throne.slotEquip); var presetsTagList = ""; for (i = 1; i < presetSlots + 1; i++) { presetsTagList += ''; } var m = '
    ' + t.tabHeader + '
    '; m += '
    '; m += ''; m += ''; m += ''; m += ''; m += '
    '; m += '  ||  '; m += ' '; m += ' '; m += '
    '; m += '  ||  '; m += ''; m += ''; m += ''; m += '
    '; m += ' Slot   (5 sec/card load)'; m += '
    '; m += 'NOTE: Server will update new slot design, but a refresh will be required to update client side'; m += '
    '; m += ' Slot   '; m += '
    '; m += ' Preset Tag   '; m += '
    '; m += ' Preset Tag   '; m += '
    '; m += ' Effect   '; m += '
    '; m += '
     PREVIEW STATS 
    '; m += '
    '; m += ''; m += ''; m += '
    '; m += '
    '; m += '
    '; m += '
    '; m += '
     PREVIEW CARDS 
    '; m += '
    '; m += ''; m += ''; for (idx = 0; idx < throneCardTypes.length; idx++) { if (idx % 3 == 0) m += ''; m += ''; } m += ''; m += '
    '; m += '
    '; m += ''; m += ''; m += ''; m += ''; m += '
    ' + throneCardTypes[idx].toUpperCase() + '
    '; m += '
    '; m += '
    '; m += '
    '; m += '
    '; t.mydiv.innerHTML = '
    ' + m + '
    '; for (throneId in uW.kocThroneItems) { var throneItem = uW.kocThroneItems[throneId]; var throneType = throneItem.type; var elemSelect = document.getElementById('STrChOThronePreviewValue' + throneType); elemSelect.options.add(new Option(throneItem.name, throneId)); if (STrChOThronePresetData.previewThrone[throneId]) { elemSelect.value = throneId; var throneCard = BuildThroneCard(throneItem); document.getElementById('STrChOThronePreviewCard' + throneType).innerHTML = throneCard; } } for (idx = 0; idx < throneCardTypes.length; idx++) { document.getElementById('STrChOThronePreviewCard' + throneCardTypes[idx]).addEventListener('click', function(A) { A.stopPropagation(); var throneType = this.id.split('STrChOThronePreviewCard')[1]; var STrChOPreviewValue = document.getElementById('STrChOThronePreviewValue' + throneType); var throneId = STrChOPreviewValue.value; var throneItem = uW.kocThroneItems[throneId]; if (!throneItem || throneItem ==0) return; CardContextMenu(this, throneItem, true); }, false); document.getElementById('STrChOThronePreviewValue' + throneCardTypes[idx]).addEventListener('change', function() { var throne_Type = this.id.split('STrChOThronePreviewValue')[1]; var trId = this.value; t.loadThronePreviewCard(trId, throne_Type); }, false); document.getElementById('STrChOThronePreviewValue' + throneCardTypes[idx]).addEventListener('keyup', function() { var throne_Type = this.id.split('STrChOThronePreviewValue')[1]; var trId = this.value; t.loadThronePreviewCard(trId, throne_Type); }, false); } var header = document.getElementsByClassName('STrChOHeader'); for (var head=0;head 0) { if (isBuff && EffectedCards[thisCard.type][0].total > thisCard.total) continue; if (!isBuff && EffectedCards[thisCard.type][0].total < thisCard.total) continue; EffectedCards[thisCard.type][0] = thisCard; } else { EffectedCards[thisCard.type].push(thisCard); } } } t.resetPreview(); for (tct = 0; tct < throneCardTypes.length; tct++) { if (EffectedCards[throneCardTypes[tct]].length > 0) { var thisCard = EffectedCards[throneCardTypes[tct]][0]; t.loadThronePreviewCard(thisCard.id, thisCard.type); } } SAVESTrChOThronePresetData(); }, false); document.getElementById('STrChOThronePreviewLoadPresetTag').addEventListener('click', function () { var presetNum = document.getElementById('STrChOThronePreviewLoadPresetTagValue').value; var presetTag = getThronePresetObject(parseInt(presetNum)); t.resetPreview(); for (var p in presetTag) STrChOThronePresetData.previewThrone[p] = true; SAVESTrChOThronePresetData(); t.show(); }, false); document.getElementById('STrChOThronePreviewEquip').addEventListener('click', function () { var t = Tabs.thronePreview; var presetIndex = document.getElementById('STrChOThronePreviewEquipValue').value; if (t.equipingPreview) { alert("still equipping"); return; } if (getObjectCollectionCount(STrChOThronePresetData.previewThrone) == 0) return; var c = 0; t.equipingPreview = true; var delay = 7; var types_equiped = []; var goEquip = function (I2, s) { return function () { Tabs.throneOrganizer.equipItem(I2, s); }; } for (var trId in STrChOThronePresetData.previewThrone) { var throne_item = uW.kocThroneItems[trId]; if (throne_item == null || !throne_item) continue; setTimeout(goEquip(throne_item, presetIndex), c * delay * 1000); // have to wait at least 5 seconds between switches c++; } setTimeout(function () { t.equipingPreview = false; alert("equipping to slot " + presetIndex + " from PREVIEW complete") }, (c * (delay * 1000)) + 1000); }, false); }, loadThronePreviewCard: function(throneId, throneType) { var t = Tabs.thronePreview; var throneCard = ''; if (throneId != 0) { var throneItem = uW.kocThroneItems[throneId]; if (!throneItem || throneItem ==0) { throneCard = ''; } else { throneCard = BuildThroneCard(throneItem); } } document.getElementById('STrChOThronePreviewCard' + throneType).innerHTML = throneCard; document.getElementById('STrChOThronePreviewValue' + throneType).value = throneId; for (pId in STrChOThronePresetData.previewThrone) { var throne_item = uW.kocThroneItems[pId]; if (throne_item == null || !throne_item) continue; if (throne_item.type == throneType) { delete STrChOThronePresetData.previewThrone[pId]; break; } } if (throneId != 0) STrChOThronePresetData.previewThrone[throneId] = true SAVESTrChOThronePresetData(); document.getElementById('STrChOThronePreviewDetails').innerHTML = t.getPreviewThroneDetails(); }, getPreviewThroneDetails: function () { var t = Tabs.thronePreview; var previewPreset = []; for (var trId in STrChOThronePresetData.previewThrone) previewPreset.push(trId); var stringPreviewThrone = GenerateThronePresetEffectsString(previewPreset, true); if (stringPreviewThrone == "") { stringPreviewThrone = "No Stats To Preview"; } else { stringPreviewThrone = "PREVIEW STATS:\n" + stringPreviewThrone; } return stringPreviewThrone; }, postPreviewThroneDetails: function () { var t = Tabs.thronePreview; var previewPreset = []; for (var trId in STrChOThronePresetData.previewThrone) previewPreset.push(trId); var stringPreviewThrone = GenerateThronePresetEffectsString(previewPreset, true); if (stringPreviewThrone == "") { return; } else { var table = stringPreviewThrone.split("
    "); stringPreviewThrone = table.join("||"); stringPreviewThrone = stringPreviewThrone.replace("
    ", ":::. |TR PREVIEW STATS:||"); stringPreviewThrone = stringPreviewThrone.replace("
    ", ""); sendChat(stringPreviewThrone); } return; }, resetPreview: function () { var t = Tabs.thronePreview; for (trId in STrChOThronePresetData.previewThrone) delete STrChOThronePresetData.previewThrone[trId]; SAVESTrChOThronePresetData(); for (idx = 0; idx < throneCardTypes.length; idx++) { document.getElementById('STrChOThronePreviewCard' + throneCardTypes[idx]).innerHTML = ""; document.getElementById('STrChOThronePreviewValue' + throneCardTypes[idx]).value = 0; } document.getElementById('STrChOThronePreviewDetails').innerHTML = t.getPreviewThroneDetails(); }, } Tabs.throneCompare = { tabOrder: 110, tabLabel: 'COMPARE', tabColor: 'red', tabHeader: 'THRONE ROOM COMPARE', init: function (div) { var t = Tabs.throneCompare; t.mydiv = div; var m = '
    ' + t.tabHeader + '
    '; m += '
    '; m += '
    '; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += '
    CARD 1CARD 2
    '; m += 'Item Type:'; m += ''; m += 'Item Type:'; m += '
    '; m += 'Throne Item:
    '; m += '
    '; m += 'Throne Item:
    '; m += '
    '; m += '
    '; m += '
    '; m += '
    '; m += '
    '; m += '
    '; m += '
    '; t.mydiv.innerHTML = '
    ' + m + '
    '; document.getElementById('STrChOThroneCompareId1').addEventListener('change', function () { t.loadCard(this, 'STrChOThroneCompareCard1'); }, false); document.getElementById('STrChOThroneCompareId2').addEventListener('change', function () { t.loadCard(this, 'STrChOThroneCompareCard2'); }, false); document.getElementById('STrChOThroneCompareId1').addEventListener('keyup', function () { t.loadCard(this, 'STrChOThroneCompareCard1'); }, false); document.getElementById('STrChOThroneCompareId2').addEventListener('keyup', function () { t.loadCard(this, 'STrChOThroneCompareCard2'); }, false); document.getElementById('STrChOThroneCompareType1').addEventListener('change', function () { t.filterItems(this, 'STrChOThroneCompareId1', 'STrChOThroneCompareCard1'); }, false); document.getElementById('STrChOThroneCompareType2').addEventListener('change', function () { t.filterItems(this, 'STrChOThroneCompareId2', 'STrChOThroneCompareCard2'); }, false); document.getElementById('STrChOThroneCompareType1').addEventListener('keyup', function () { t.filterItems(this, 'STrChOThroneCompareId1', 'STrChOThroneCompareCard1'); }, false); document.getElementById('STrChOThroneCompareType2').addEventListener('keyup', function () { t.filterItems(this, 'STrChOThroneCompareId2', 'STrChOThroneCompareCard2'); }, false); }, sendToCompare: function (Id) { var t = Tabs.throneCompare; var throneItem = uW.kocThroneItems[Id]; var card1 = document.getElementById('STrChOThroneCompareId1'); var card2 = document.getElementById('STrChOThroneCompareId2'); var obj = ''; if (card1.value == 0) obj = '1'; else if (card2.value == 0) obj = '2'; else obj = '1'; document.getElementById('STrChOThroneCompareType' + obj).value = throneItem.type; t.filterItems(document.getElementById('STrChOThroneCompareType' + obj), ('STrChOThroneCompareId' + obj), ('STrChOThroneCompareCard' + obj)); document.getElementById('STrChOThroneCompareId' + obj).value = Id; t.loadCard(document.getElementById('STrChOThroneCompareId' + obj), ('STrChOThroneCompareCard' + obj)); }, loadCard: function (objectItem, objectName) { var div = document.getElementById(objectName); if (objectItem.value == 0) div.innerHTML = ''; else div.innerHTML = BuildThroneCard(uW.kocThroneItems[objectItem.value]); }, filterItems: function (objectItem, objectIdName, objectName) { document.getElementById(objectName).innerHTML = ''; var select = document.getElementById(objectIdName); select.value = 0; var m = ''; if (objectItem.value == 0) { for (var throneId in uW.kocThroneItems) { m += ''; } } else { for (var throneId in uW.kocThroneItems) { if (uW.kocThroneItems[throneId].type == objectItem.value) m += ''; } } select.innerHTML = m; }, hide: function () {}, show: function () {}, } Tabs.throneUniques = { tabOrder: 111, tabLabel: 'UNIQUES', tabColor: 'red', tabHeader: 'THRONE ROOM UNIQUES', UniqueItems : null, selectedCard: 0, selectedType: 0, selectedLevel: 1, init: function (div) { var t = Tabs.throneUniques; t.mydiv = div; t.UniqueItems = CM.WorldSettings.getSettingAsObject("TR_UNIQUE_ITEMS"); for (k in t.UniqueItems) { var throne_item = t.UniqueItems[k]; if (parseInt(throne_item.Id) < 29000) delete t.UniqueItems[k]; if (parseInt(throne_item.Id) == 30262 || parseInt(throne_item.Id) == 30264 || parseInt(throne_item.Id) == 30266) { throne_item.Name = throne_item.Name + ' ('+uW.g_js_strings.commonstr[CM.CHAMPION.getFactionClasses(throne_item.Faction)].toLowerCase()+')';}; if (parseInt(throne_item.Id) == 30261 || parseInt(throne_item.Id) == 30263 || parseInt(throne_item.Id) == 30265) { throne_item.Name = throne_item.Name + ' ('+uW.g_js_strings.commonstr[CM.CHAMPION.getFactionClasses(throne_item.Faction)].toLowerCase()+')';}; if (parseInt(throne_item.Id) == 30230 || parseInt(throne_item.Id) == 30240 || parseInt(throne_item.Id) == 30250) { throne_item.Name = throne_item.Name + ' ('+uW.g_js_strings.commonstr[CM.CHAMPION.getFactionClasses(throne_item.Faction)].toLowerCase()+')';}; if (parseInt(throne_item.Id) == 30231 || parseInt(throne_item.Id) == 30241 || parseInt(throne_item.Id) == 30251) { throne_item.Name = throne_item.Name + ' ('+uW.g_js_strings.commonstr[CM.CHAMPION.getFactionClasses(throne_item.Faction)].toLowerCase()+')';}; } var m = '
    ' + t.tabHeader + '
    '; m += '
    '; m += '
    '; m += ''; m += ''; m += ''; m += ''; m += '
    Item Type:
    Throne Item:
    Level:
    '; m += '
    '; t.mydiv.innerHTML = '
    ' + m + '
    '; document.getElementById('STrChOThroneUniqueType').addEventListener('change', function () { t.selectedType = document.getElementById('STrChOThroneUniqueType').value; t.selectedCard = 0; t.FilterUniques(); document.getElementById('STrChOThroneUniqueCard').innerHTML = ''; }, false); document.getElementById('STrChOThroneUnique').addEventListener('change', function () { t.selectedCard = document.getElementById('STrChOThroneUnique').value; if (t.selectedCard != 0) t.SwitchUnique(); }, false); document.getElementById('STrChOThroneUniqueLevel').addEventListener('change', function () { t.selectedLevel = document.getElementById('STrChOThroneUniqueLevel').value; if (t.selectedCard != 0) t.SwitchUnique(); }, false); }, hide: function () {}, show: function () {}, FilterUniques: function (cardType) { var t = Tabs.throneUniques; var throneList = document.getElementById('STrChOThroneUnique'); throneList.options.length = 0; var throneOption = document.createElement('option'); throneOption.text = '--Items--'; throneOption.value = 0; throneList.add(throneOption); for (k in t.UniqueItems) { var throne_item = t.UniqueItems[k]; if (throne_item == null || !throne_item) continue; if (throneCardTypes[throne_item.Type-1] == t.selectedType || t.selectedType == 0) { var throneOption = document.createElement('option'); throneOption.text = throne_item.Name; throneOption.value = k; throneList.add(throneOption); } } }, SwitchUnique: function () { var t = Tabs.throneUniques; var div = document.getElementById('STrChOThroneUniqueCard'); var m = ConvertUniqueAndBuildThroneCard(t.selectedCard, t.selectedLevel); m += t.GetUniqueInventory(t.selectedCard); div.innerHTML = m; var STrChOThroneUseUnique = document.getElementById('STrChOThroneUseUnique'); if (!STrChOThroneUseUnique) return; STrChOThroneUseUnique.addEventListener('click', function() { var uniqueId = this.getAttribute('uid'); var uniqueCount = parseInt(document.getElementById('STrChOThroneUniqueCount').innerHTML); uniqueCount--; document.getElementById('STrChOThroneUniqueCount').innerHTML = uniqueCount; CM.ItemController.use(uniqueId); }, false); }, GetUniqueInventory: function (uniqueId) { var m = '
    Throne Room
    '; var throneitems = {}; for (throneId in uW.kocThroneItems) { var throneItem = uW.kocThroneItems[throneId]; if (throneItem.unique == uniqueId) { if (throneitems[throneItem.level]) { throneitems[throneItem.level]++; } else { throneitems[throneItem.level] = 1; } } } var gotitem = false; for (lvl in throneitems) { gotitem = true; m += 'You have ' + throneitems[lvl] + ' at level ' + lvl + '
    '; } if (!gotitem) m += 'You have none in your throne room.
    '; m += '
    Inventory
    '; var inventory = Seed.items['i' + uniqueId]; m += 'You have
    ' + (inventory ? inventory : '0') + '
    in your inventory.'; if ((inventory?inventory:0) != 0) m += '
    Add To Throne Room'; return m; }, } Tabs.throneCaps = { tabOrder: 112, tabLabel: 'CAPS', tabColor: 'red', tabHeader: 'THRONE ROOM CAPS', init: function (div) { var t = Tabs.throneCaps; t.mydiv = div; var m = '
    ' + t.tabHeader + '
    '; m += '
    '; m += ''; m += ''; m += '
    BoostMaxMin
    '; m += '
    '; m += '
    '; m += ''; for (var boost in CM.thronestats.boosts) { var cap = CM.thronestats.boosts[boost]; m += ''; m += ''; m += ''; m += ''; m += ''; } m += '
    ' + cap.BoostName + '' + cap.Max + ((cap.CapType == "percent") ? '%' : '') + '' + ((cap.Min == "none") ? 'None' : cap.Min + '%') + '
    '; m += '
    '; t.mydiv.innerHTML = '
    ' + m + '
    '; }, hide: function () {}, show: function () {}, } Tabs.champUpgrader = { tabOrder: 200, tabLabel: 'UPGRADER', tabColor: 'brown', tabHeader: 'CHAMP HALL UPGRADER', myDiv: null, repairId: 0, repairEnd: 0, timerH: null, clearTimerH: null, speedup: 0, upgradePath: { 0: { maxLev: 2, nextQual: 2 }, 1: { maxLev: 2, nextQual: 2 }, 2: { maxLev: 3, nextQual: 4 }, 3: { maxLev: 3, nextQual: 4 }, 4: { maxLev: 4, nextQual: 5 } }, init: function (div) { var t = Tabs.champUpgrader; t.mydiv = div; var m = '
    ' + t.tabHeader + '
    '; m += '
    '; m += '
    '; m += ''; m += ''; if (STrChOChampUpgradeData.active) { m += ''; } else { m += ''; } m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += '
    Upgrade 1 At A Time



    '; m += '
    '; m += '
     SPEED UPS 
    '; m += '
    '; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += '
    Only use hourglass for levels '; m += ' and higher
    Only use hourglass for qualities '; m += ' and higher
    ' + STrChOHourGlassName[1] + ' (
    ' : '>') + uW.ksoItems[1].count + '
    )
    ' + STrChOHourGlassName[2] + ' (
    ' : '>') + uW.ksoItems[2].count + '
    )
    ' + STrChOHourGlassName[3] + ' (
    ' : '>') + uW.ksoItems[3].count + '
    )
    ' + STrChOHourGlassName[4] + ' (
    ' : '>') + uW.ksoItems[4].count + '
    )
    ' + STrChOHourGlassName[5] + ' (
    ' : '>') + uW.ksoItems[5].count + '
    )
    ' + STrChOHourGlassName[6] + ' (
    ' : '>') + uW.ksoItems[6].count + '
    )
    ' + STrChOHourGlassName[7] + ' (
    ' : '>') + uW.ksoItems[7].count + '
    )
    ' + STrChOHourGlassName[8] + ' (
    ' : '>') + uW.ksoItems[8].count + '
    )
    '; m += '
    Override hourglasses by using '; m += ' every time
    '; m += '
    '; m += '
     BOOST ITEMS 
    '; m += '
    '; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ""; m += ""; m += ''; m += ''; m += ''; m += ""; m += ""; m += '
    Lesser Orb of Metallurgy (
    ' + uW.ksoItems[21001].count + '
    )
    Greater Orb of Metallurgy (
    ' + uW.ksoItems[21002].count + '
    )
    Quality and higher
    Journeyman Smith's Token (
    " + uW.ksoItems[21051].count + "
    )
    Smith's Token (
    " + uW.ksoItems[21052].count + "
    )
    Level and higher
    Expert Smith's Token (
    " + uW.ksoItems[21058].count + "
    )
    "; m += ""; m += "
    '; m += ' Use Auto Forged Upgrade When Min Level '; m += ' & Max Level '; m += ''; m += '
    '; m += '
    '; m += '
     UPGRADE ITEMS 
    '; m += '
    '; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += '
    Enhance All Quality To Quality   
    Upgrade All Cards Less To Level   
    Upgrade All Level To Level   
    Item:  '; m += 'Action:  '; m += '
     '; m += ''; m += '
    '; m += '
    '; m += '
    UPGRADE LIST
    '; m += ''; m += ''; m += ''; m += '
    '; m += '
    '; m += '
    '; m += '
    '; m += '
    '; m += '
    '; m += '
    '; t.mydiv.innerHTML = '
    ' + m + '
    '; document.getElementById('STrChOChampUpgraderSaveSettings').addEventListener('click', function () { SaveSettingsToFile(STrChOChampUpgradeData); }, false); document.getElementById('STrChOChampUpgraderLoadSettings').addEventListener('click', function () { var loader = document.getElementById('STrChOSettingsFile'); loader.addEventListener('change', function () { LoadSettingsFromFile(STrChOChampUpgradeData, Tabs.champUpgrader); }, false); loader.click(); }, false); t.refreshAetherDisplay(); var header = document.getElementsByClassName('STrChOHeader'); for (var head=0;head= high_level) return; for (ChampId in uW.kocChampionItems) { var ChampItem = uW.kocChampionItems[ChampId]; if (ChampItem.rarity == low_level) { var qItem = new QueueItem(); qItem.item = ChampId; qItem.action = "enhance" qItem.level = high_level STrChOChampQueueData.list.push(qItem); } } SAVESTrChOChampQueueData(); t.buildChampQueueDisplay(); }, false); document.getElementById('STrChOChampUpgradeAddAllLevelMax').addEventListener('click', function () { var high_level = parseInt(document.getElementById('STrChOChampUpgradeAddAllLevelMaxTo').value); for (ChampId in uW.kocChampionItems) { var ChampItem = uW.kocChampionItems[ChampId]; if (ChampItem.level < high_level) { var qItem = new QueueItem(); qItem.item = ChampId; qItem.action = "upgrade" qItem.level = high_level STrChOChampQueueData.list.push(qItem); } } SAVESTrChOChampQueueData(); t.buildChampQueueDisplay(); }, false); document.getElementById('STrChOChampUpgradeAddAllLevel').addEventListener('click', function () { var low_level = parseInt(document.getElementById('STrChOChampUpgradeAllLevel').value); var high_level = parseInt(document.getElementById('STrChOChampUpgradeAllLevelTo').value); if (low_level >= high_level) return; for (ChampId in uW.kocChampionItems) { var ChampItem = uW.kocChampionItems[ChampId]; if (ChampItem.level == low_level) { var qItem = new QueueItem(); qItem.item = ChampId; qItem.action = "upgrade" qItem.level = high_level STrChOChampQueueData.list.push(qItem); } } SAVESTrChOChampQueueData(); t.buildChampQueueDisplay(); }, false); if (STrChOChampUpgradeData.active) t.setStatus("Loading ...."); else t.setStatus("Powered Off"); t.startTimer(); t.buildChampLevelWidget(); t.buildChampQueueDisplay(); document.getElementById('STrChOChampAction').addEventListener('change', function () { t.buildChampLevelWidget(); }, false); Tabs.champPresets.paintTags(); }, startTimer: function () { var t = Tabs.champUpgrader; var delay = 2 + Math.random() * 8; if (Seed.queue_champion == null) { for (champId in uW.kocChampionItems) { var champItem = uW.kocChampionItems[champId]; if (champItem.status == CM.CHAMPION.STATUS_REPAIRING_ENHANCE || champItem.status == CM.CHAMPION.STATUS_REPAIRING_UPGRADE) { Seed.queue_champion = {}; Seed.queue_champion.start = parseInt(champItem.start); Seed.queue_champion.end = parseInt(champItem.eta); Seed.queue_champion.itemId = champItem.equipmentId; break; } } } if (Seed.queue_champion != null && Seed.queue_champion.end != null) { var repairTimeLeft = Seed.queue_champion.end - unixTime(); t.repairEnd = Seed.queue_champion.end; t.repairId = Seed.queue_champion.itemId; var n = new Date(t.repairEnd * 1000); t.setStatus("Waiting until " + n.toLocaleTimeString() + " for repair to complete. Item: " + uW.kocChampionItems[t.repairId].name); if (STrChOChampUpgradeData.useAH || STrChOChampUpgradeData.useGH || STrChOChampUpgradeData.useKH || STrChOChampUpgradeData.useMH || STrChOChampUpgradeData.useSH || STrChOChampUpgradeData.useWH || STrChOChampUpgradeData.useDH || STrChOChampUpgradeData.useEH || (STrChOChampUpgradeData.overrideSpeedUp && STrChOChampUpgradeData.useSpeedUp > 0)) { var champItem = uW.kocChampionItems[t.repairId]; var STrChOChampQuality = champItem.rarity; var STrChOChampLevel = champItem.level; var useThoseSpeedups = true; if (STrChOChampUpgradeData.hourglassQualitySpecific && STrChOChampQuality < STrChOChampUpgradeData.hourglassQuality) useThoseSpeedups = false; if (STrChOChampUpgradeData.hourglassLevelSpecific && STrChOChampLevel < STrChOChampUpgradeData.hourglassLevel) useThoseSpeedups = false; if (STrChOChampUpgradeData.overrideSpeedUp) useThoseSpeedups = true; if (useThoseSpeedups) { t.doingSpeedup = true; setTimeout(function () { t.doSpeedup(); }, 2000); } } setTimeout(t.clearRepair, (repairTimeLeft + 1) * 5000); if (repairTimeLeft > 0) delay += repairTimeLeft; } if (t.timerH == null) t.timerH = setTimeout(t.doAction, delay * 1000); }, hide: function () {}, refreshAetherDisplay : function () { document.getElementById('STrChOChampAetherDisplay').innerHTML = displayCityAstone(); }, show: function () { var t = Tabs.champUpgrader; t.startTimer(); t.refreshAetherDisplay(); t.buildChampQueueDisplay(); }, doAction: function () { var t = Tabs.champUpgrader; if (STrChOChampRepairData.active) { t.setStatus('Waiting for repair tab to finish...'); return; } var retryTime = STrChOGeneralOptions.retryInterval; try { // check if repair is done var ti = t.clearRepair(); if (ti <= 0) { // repair is done if (STrChOChampQueueData.oneItem || (STrChOChampQueueData.doingRepairs == true)) { for (queueItems in STrChOChampQueueData.list) { var qItem = STrChOChampQueueData.list[queueItems]; if (!qItem) continue; var champItem = uW.kocChampionItems[qItem.item]; if ((champItem == null) || (STrChOChampQueueData.list[queueItems].status == "complete")) continue; if (champItem.status == CM.CHAMPION.STATUS_BROKEN_UPGRADE || champItem.status == CM.CHAMPION.STATUS_BROKEN_ENHANCE) { t.doRepair(champItem.equipmentId); clearTimeout(t.timerH); t.timerH = setTimeout(t.doAction, retryTime * 1000); return; } else if (STrChOChampQueueData.oneItem) { break; } } //} } // all repairs complete STrChOChampQueueData.doingRepairs = false; // set the index t.selectNext(); SAVESTrChOChampQueueData(); // if we reach the end of the queue, start repair cycle if (STrChOChampQueueData.index < 0) { t.setStatus("Reached end of queue.") t.setResult(""); if (!STrChOChampUpgradeData.active) t.setStatus("Powered Off"); STrChOChampQueueData.doingRepairs = true; SAVESTrChOChampQueueData(); clearTimeout(t.timerH); t.timerH = setTimeout(t.doAction, retryTime * 1000); return; } // upgrade/enhance next item var qItem = STrChOChampQueueData.list[STrChOChampQueueData.index]; if (qItem) { if (qItem.action == "enhance") t.doEnhance(qItem.item); else t.doUpgrade(+qItem.item, false); } } else { // come back after repair is complete retryTime = ti + 5; var n = new Date(t.repairEnd * 1000); t.setStatus("Waiting until " + n.toLocaleTimeString() + " for repair to complete. Item: " + uW.kocChampionItems[t.repairId].name); if (STrChOChampUpgradeData.useSH || STrChOChampUpgradeData.useKH || STrChOChampUpgradeData.useGH || STrChOChampUpgradeData.useMH || STrChOChampUpgradeData.useAH || STrChOChampUpgradeData.useWH || STrChOChampUpgradeData.useDH || STrChOChampUpgradeData.useEH || (STrChOChampUpgradeData.overrideSpeedUp && STrChOChampUpgradeData.useSpeedUp > 0)) { var champItem = uW.kocChampionItems[t.repairId]; var STrChOChampQuality = champItem.rarity; var STrChOChampLevel = champItem.level; var useThoseSpeedups = true; if (STrChOChampUpgradeData.hourglassQualitySpecific && STrChOChampQuality < STrChOChampUpgradeData.hourglassQuality) useThoseSpeedups = false; if (STrChOChampUpgradeData.hourglassLevelSpecific && STrChOChampLevel < STrChOChampUpgradeData.hourglassLevel) useThoseSpeedups = false; if (STrChOChampUpgradeData.overrideSpeedUp) useThoseSpeedups = true; if (useThoseSpeedups) { t.doingSpeedup = true; setTimeout(function () { t.doSpeedup(); }, 2000); } retryTime = 1; } } //CM.ChampView.renderInventory(uW.kocChampionItems); } catch (e) { } // recycle clearTimeout(t.timerH); t.timerH = setTimeout(t.doAction, retryTime * 1000); }, doSpeedup: function () { var t = Tabs.champUpgrader; var endTime = t.repairEnd; var startTime = unixTime(); var secondsForRepair = endTime - startTime; var divId = ""; t.speedup = 0; if (secondsForRepair > 0 && STrChOChampUpgradeData.overrideSpeedUp && STrChOChampUpgradeData.useSpeedUp > 0) { t.speedup = STrChOChampUpgradeData.useSpeedUp; } else { if (t.speedup == 0 && secondsForRepair >= HOURGLASSES_TIME_MIN_THRESHOLD.day25 && STrChOChampUpgradeData.useEH && uW.ksoItems[8].count > 0) { t.speedup = 8; } if (t.speedup == 0 && secondsForRepair >= HOURGLASSES_TIME_MIN_THRESHOLD.hour24 && STrChOChampUpgradeData.useDH && uW.ksoItems[7].count > 0) { t.speedup = 7; } if (t.speedup == 0 && secondsForRepair >= HOURGLASSES_TIME_MIN_THRESHOLD.hour15 && STrChOChampUpgradeData.useWH && uW.ksoItems[6].count > 0) { t.speedup = 6; } if (t.speedup == 0 && secondsForRepair >= HOURGLASSES_TIME_MIN_THRESHOLD.hour8 && STrChOChampUpgradeData.useAH && uW.ksoItems[5].count > 0) { t.speedup = 5; } if (t.speedup == 0 && secondsForRepair >= HOURGLASSES_TIME_MIN_THRESHOLD.hour25 && STrChOChampUpgradeData.useMH && uW.ksoItems[4].count > 0) { t.speedup = 4; } if (t.speedup == 0 && secondsForRepair >= HOURGLASSES_TIME_MIN_THRESHOLD.hour1 && STrChOChampUpgradeData.useGH && uW.ksoItems[3].count > 0) { t.speedup = 3; } if (t.speedup == 0 && secondsForRepair >= HOURGLASSES_TIME_MIN_THRESHOLD.minute15 && STrChOChampUpgradeData.useKH && uW.ksoItems[2].count > 0) { t.speedup = 2; } if (t.speedup == 0 && secondsForRepair >= HOURGLASSES_TIME_MIN_THRESHOLD.minute1 && STrChOChampUpgradeData.useSH && uW.ksoItems[1].count > 0) { t.speedup = 1; } } switch (t.speedup) { case "1": case 1: secondsForRepair -= HOURGLASSES_TIME.minute1; divId = 'STrChOChampUseSHLabel'; break; case "2": case 2: secondsForRepair -= HOURGLASSES_TIME.minute15; divId = 'STrChOChampUseKHLabel'; break; case "3": case 3: secondsForRepair -= HOURGLASSES_TIME.hour1; divId = 'STrChOChampUseGHLabel'; break; case "4": case 4: secondsForRepair -= HOURGLASSES_TIME.hour25; divId = 'STrChOChampUseMHLabel'; break; case "5": case 5: secondsForRepair -= HOURGLASSES_TIME.hour8; divId = 'STrChOChampUseAHLabel'; break; case "6": case 6: secondsForRepair -= HOURGLASSES_TIME.hour15; divId = 'STrChOChampUseWHLabel'; break; case "7": case 7: secondsForRepair -= HOURGLASSES_TIME.hour24; divId = 'STrChOChampUseDHLabel'; break; case "8": case 8: secondsForRepair -= HOURGLASSES_TIME.day25; divId = 'STrChOChampUseEHLabel'; break; } if (t.speedup != 0) { t.setResult('Used ' + uW.ksoItems[t.speedup].name); var divCount = uW.ksoItems[t.speedup].count - 1; var divSpeedups = document.getElementById(divId); divSpeedups.innerHTML = divCount; uW.modal_speedup_apply("champion", t.speedup, t.repairId); if (secondsForRepair <= 0) { secondsForRepair = 0; endTime = startTime; t.clearTimerH = setTimeout(t.clearRepair, 1000); t.buildChampQueueDisplay(); } else { endTime = unixTime() + secondsForRepair; t.repairEnd = endTime; var n = new Date(t.repairEnd * 1000); var item = uW.kocChampionItems[t.repairId]; t.setStatus("Repair begun ... Repair will be complete at " + n.toLocaleTimeString() + ". Item: " + item.name); t.clearTimerH = setTimeout(t.clearRepair, secondsForRepair * 1000); t.buildChampQueueDisplay(); } t.repairEnd = endTime; setTimeout(function () { t.doSpeedup(); }, 1000); } }, selectNext: function () { if (STrChOChampQueueData.index >= STrChOChampQueueData.list.length) STrChOChampQueueData.index = 0; if (STrChOChampQueueData.index < 0) STrChOChampQueueData.index = 0; // for single item mode, always start from the top if (STrChOChampQueueData.oneItem) STrChOChampQueueData.index = 0; var l = STrChOChampQueueData.list.length; for (i = STrChOChampQueueData.index; i < l; i++) { var item = STrChOChampQueueData.list[i]; if (!item) continue; var champItem = uW.kocChampionItems[item.item]; if ((STrChOChampQueueData.list[i].status != "complete") && (champItem != null) && !(champItem.status == CM.CHAMPION.STATUS_BROKEN_ENHANCE || champItem.status == CM.CHAMPION.STATUS_BROKEN_UPGRADE)) { if (((item.action == "enhance") && (item.level <= champItem.rarity)) || ((item.action == "upgrade") && (item.level <= champItem.level))) { item.status = "complete"; } else { STrChOChampQueueData.index = i; return; } } } // if we get here, the queue is complete STrChOChampQueueData.index = -1; }, doEnhance: function (eItemId) { var t = Tabs.champUpgrader; try { if (STrChOChampUpgradeData.active == false || eItemId == 0) { t.setStatus("Powered Off"); return; } var champItem = uW.kocChampionItems[eItemId]; if (!champItem) return; if (champItem.status == CM.CHAMPION.STATUS_BROKEN_ENHANCE || champItem.status == CM.CHAMPION.STATUS_BROKEN_UPGRADE) { // repair and then try again later t.doRepair(eItemId); return; } var num_city = pickAetherUseCity(); if (num_city < 0) { t.setStatus("Not enough aetherstones to enhance. Minimum of " + STrChOGeneralOptions.minStones + " needed. Waiting for more ..."); return; } var z = CM.WorldSettings.getSettingAsObject("CE_ENHANCE_AETHERSTONE_MAP"); var w = z[parseInt(champItem.rarity) + 1].Aetherstones; if (w > parseInt(Seed.resources["city" + Seed.cities[num_city][0]]["rec5"][0])) { t.setStatus("Not enough aetherstones to enhance."); return; } var qI = STrChOChampQueueData.list[STrChOChampQueueData.index]; if (qI) { qI.triesTotal++; qI.triesThis++; } var chanceItem = 0; var useDiv = ''; if (STrChOChampUpgradeData.active && STrChOChampQueueData.index != -1 && STrChOChampUpgradeData.useQuality <= champItem.rarity) { if (STrChOChampUpgradeData.useLOM) { if (Seed.items['i21001'] > 0) { chanceItem = 21001; useDiv = 'STrChOChampUseLOMLabel'; } } if (STrChOChampUpgradeData.useGOM) { if (Seed.items['i21002'] > 0) { chanceItem = 21002; useDiv = 'STrChOChampUseGOMLabel'; } } //if (buffItemId) CM.InventoryView.removeItemFromInventory(buffItemId); } if (useDiv != '') document.getElementById(useDiv).innerHTML = uW.ksoItems[chanceItem].count; var params = uW.Object.clone(ajfx); params.action = '4'; params.cityId = Seed.cities[num_city][0]; params.eid = eItemId; params.chanceItem = chanceItem; params.aetherstones = w; params.gems = 0; t.setStatus("Sending enhance request"); new AjaxRequest(uW.g_ajaxpath + 'ajax/ceEquipmentManagerAjax.php' + uW.g_ajaxsuffix, { method: "post", parameters: params, loading: true, onSuccess: function (transport) { try { var rslt = eval("(" + transport.responseText + ")"); if (rslt.ok) { Seed.resources["city" + Seed.cities[num_city][0]]["rec5"][0] = Seed.resources["city" + Seed.cities[num_city][0]]["rec5"][0] - rslt.aetherstones; if (rslt.gems > 0) { ActionLog('Upgrader accidentally spent gems! Upgrader turned off'); t.setStatus("Error ... shutting down"); STrChOChampUpgradeData.active = false; SAVESTrChOChampUpgradeData(); } if (rslt.itemConsumed.itemId != "0") uW.ksoItems[rslt.itemConsumed.itemId].subtract() Seed.player.might += rslt.mightGain; document.getElementById('topnav_might').innerHTML = Seed.player.might; if (champItem.rarity != parseInt(rslt.rarity)) { STrChOChampUpgradeStats.enhanceSuccess[champItem.rarity][champItem.level]++; SAVESTrChOChampUpgradeStats(); champItem.rarity = rslt.rarity; champItem.name = champItem.createName(); t.show(); t.setResult("Enhance successful. " + addCommas(rslt.aetherstones) + " aetherstones used."); t.refreshAetherDisplay(); t.setStatus("Attempting next action"); CM.sounds.play("ch_success_build"); // update the cost line var qItem = STrChOChampQueueData.list[STrChOChampQueueData.index]; if (qItem) { var now = new Date(); qItem.lastUpgrade = "Enhanced to " + champCardQualities[champItem.rarity] + " " + now.toDateString().substring(3, 10) + " " + now.toTimeString().substring(0, 8) + " in " + qItem.triesThis + " attempts"; if (!qItem.upgrades) qItem.upgrades = []; qItem.upgrades.push(qItem.lastUpgrade); var msg = 'Enhanced ' + uW.kocChampionItems[eItemId].name + ' [ ' + eItemId + '] to quality ' + rslt.rarity + " in " + qItem.triesThis + " attempts. " + qItem.triesTotal + " total attempts for this item."; if (STrChOGeneralOptions.whisperToMe) sendChat("/" + Seed.player.name + ' ' + msg); if (STrChOGeneralOptions.sendToInbox) sendComposedMail(Seed.player.name, 'CHAMPION: Enhance Success: ' + uW.kocChampionItems[eItemId].name, msg); SuccessLog(msg); if (qItem.level <= champItem.rarity) { qItem.status = "complete"; STrChOChampUpgradeData.newUpgradeState = 2; } else { var now = new Date(); qItem.status = "Partially enhanced"; qItem.triesLast = qItem.triesThis; qItem.triesThis = 0; if (STrChOChampUpgradeData.newUpgradeState != 2) STrChOChampUpgradeData.newUpgradeState = 1; } SAVESTrChOChampUpgradeData(); setUpgradeColor(); } SAVESTrChOChampQueueData(); t.buildChampQueueDisplay(); clearTimeout(Tabs.champUpgrader.timerH); t.timerH = setTimeout(t.doAction, 10 * 1000); } else { STrChOChampUpgradeStats.enhanceFailure[champItem.rarity][champItem.level]++; SAVESTrChOChampUpgradeStats(); ActionLog('Enhance failed Champion item ' + uW.kocChampionItems[eItemId].name); if (rslt.broken == "yes") { champItem.status = CM.CHAMPION.STATUS_BROKEN_ENHANCE; } champItem.name = champItem.createName(); t.setResult("Enhance failed. " + addCommas(rslt.aetherstones) + " aetherstones used"); t.refreshAetherDisplay(); var qItem = STrChOChampQueueData.list[STrChOChampQueueData.index]; if (qItem) if (qItem.status == "not started") qItem.status = "started"; SAVESTrChOChampQueueData(); t.buildChampQueueDisplay(); clearTimeout(t.timerH); t.timerH = setTimeout(t.doAction, 10 * 1000); } } else { if (rslt.feedback) t.setStatus(rslt.feedback); else t.setStatus("Unable to enhance at this time ... waiting for next cycle"); } } catch (e) { } return; }, onFailure: function (rst) { t.setStatus("Unable to send enhance request. Waiting for next cycle"); return; } }); } catch (e) { } return; }, doUpgrade: function (uItemId, bypass) { var t = Tabs.champUpgrader; var champItem = uW.kocChampionItems[uItemId]; if (uItemId == 0 || champItem == null) { t.setStatus("Item not found."); return; } if ((STrChOChampUpgradeData.active == false) && (bypass != true)) { t.setStatus("Powered Off"); return; } if (bypass == true && t.deleting != true) { // delete cycle has been canceled. Don't upgrade this item return; } if (champItem.status == CM.CHAMPION.STATUS_BROKEN_UPGRADE || champItem.status == CM.CHAMPION.STATUS_BROKEN_ENHANCE) { // repair and then try again later t.doRepair(uItemId); return; } if (champItem.status == CM.CHAMPION.STATUS_REPAIRING_ENHANCE || champItem.status == CM.CHAMPION.STATUS_REPAIRING_UPGRADE) { t.setStatus("Item is still being repaired"); return; } var num_city = pickAetherUseCity(); if (num_city < 0) { t.setStatus("Not enough aetherstones to upgrade. Minimum of " + STrChOGeneralOptions.minStones + " needed. Waiting for more ..."); return; } var z = CM.WorldSettings.getSettingAsObject("CE_UPGRADE_AETHERSTONE_MAP"); var w = z[parseInt(champItem.level) + 1].Aetherstones; if (w > Seed.resources["city" + Seed.cities[num_city][0]]["rec5"][0]) { t.setStatus("Not enough aetherstones to upgrade."); return; } if (bypass != true) { var qI = STrChOChampQueueData.list[STrChOChampQueueData.index]; if (qI) { qI.triesTotal++; qI.triesThis++; } t.setStatus("Sending upgrade request ..."); } var chanceItem = 0; var useDiv = ''; if (STrChOChampUpgradeData.active && STrChOChampQueueData.index != -1 && STrChOChampUpgradeData.useLevel <= champItem.level) { if (STrChOChampUpgradeData.useET) { if (Seed.items['i21058'] > 0) { chanceItem = 21058; useDiv = 'STrChOChampUseETLabel'; } } if (STrChOChampUpgradeData.useST) { if (Seed.items['i21052'] > 0) { chanceItem = 21052; useDiv = 'STrChOChampUseSTLabel'; } } if (STrChOChampUpgradeData.useJT) { if (Seed.items['i21051'] > 0) { chanceItem = 21051; useDiv = 'STrChOChampUseJTLabel'; } } } if (STrChOChampUpgradeData.useAutoTokens) { if (STrChOChampUpgradeData.useAutoTokensMin <= STrChOChampUpgradeData.useAutoTokensMax) { var champLevel = champItem.level; if (champLevel >= STrChOChampUpgradeData.useAutoTokensMin && champLevel < STrChOChampUpgradeData.useAutoTokensMax) { var nextForgedID = getNextAvailableForged(champItem); if (nextForgedID != 0) { chanceItem = nextForgedID; ActionLog('Using ' + uW.ksoItems[chanceItem].name + ' on item: ' + champItem.name); } } } } if (useDiv != '') document.getElementById(useDiv).innerHTML = uW.ksoItems[chanceItem].count; var params = uW.Object.clone(ajfx); params.action = '5'; params.cityId = Seed.cities[num_city][0]; params.eid = uItemId; params.chanceItem = chanceItem; params.aetherstones = w; params.gems = 0; new AjaxRequest(uW.g_ajaxpath + "ajax/ceEquipmentManagerAjax.php" + uW.g_ajaxsuffix, { method: "post", parameters: params, loading: true, onSuccess: function (transport) { try { var rslt = eval("(" + transport.responseText + ")"); if (rslt.ok) { Seed.resources["city" + Seed.cities[num_city][0]]["rec5"][0] = Seed.resources["city" + Seed.cities[num_city][0]]["rec5"][0] - parseInt(rslt.aetherstones); if (rslt.gems > 0) { t.setStatus("Error .... Shutting down."); ActionLog('Upgrader accidentally spent gems! Upgrader turned off'); STrChOChampUpgradeData.active = false; SAVESTrChOChampUpgradeData(); } if (rslt.itemConsumed.itemId != "0") uW.ksoItems[rslt.itemConsumed.itemId].subtract() Seed.player.might += rslt.mightGain; document.getElementById('topnav_might').innerHTML = Seed.player.might; if (parseInt(rslt.level) != champItem.level) { STrChOChampUpgradeStats.upgradeSuccess[champItem.rarity][champItem.level]++; SAVESTrChOChampUpgradeStats(); champItem.level = rslt.level; champItem.name = champItem.createName(); if (bypass != true) { t.show(); t.setResult("Upgrade successful. " + addCommas(rslt.aetherstones) + " aetherstones used."); t.refreshAetherDisplay(); t.setStatus("Attempting next upgrade"); CM.sounds.play("ch_success_build"); var qItem = STrChOChampQueueData.list[STrChOChampQueueData.index]; if (qItem) { var now = new Date(); qItem.lastUpgrade = "Upgraded to +" + champItem.level + " " + now.toDateString().substring(3, 10) + " " + now.toTimeString().substring(0, 8) + " in " + qItem.triesThis + " attempts"; if (!qItem.upgrades) qItem.upgrades = []; qItem.upgrades.push(qItem.lastUpgrade); var msg = 'Upgraded ' + uW.kocChampionItems[uItemId].name + ' [' + uItemId + '] to level ' + rslt.level + " in " + qItem.triesThis + " attempts. " + qItem.triesTotal + " total attempts for this item."; if (STrChOGeneralOptions.whisperToMe) sendChat("/" + Seed.player.name + ' ' + msg); if (STrChOGeneralOptions.sendToInbox) sendComposedMail(Seed.player.name, 'CHAMPION: Upgrade Success : ' + uW.kocChampionItems[uItemId].name, msg); SuccessLog(msg); if (qItem.level <= champItem.level) { qItem.status = "complete"; STrChOChampUpgradeData.newUpgradeState = 2; } else { var now = new Date(); qItem.status = "Partially upgraded"; qItem.triesLast = qItem.triesThis; qItem.triesThis = 0; if (STrChOChampUpgradeData.newUpgradeState != 2) STrChOChampUpgradeData.newUpgradeState = 1; } SAVESTrChOChampUpgradeData(); setUpgradeColor(); } SAVESTrChOChampQueueData(); t.buildChampQueueDisplay(); clearTimeout(t.timerH); t.timerH = setTimeout(t.doAction, 10 * 1000); } } else { STrChOChampUpgradeStats.upgradeFailure[champItem.rarity][champItem.level]++; SAVESTrChOChampUpgradeStats(); ActionLog('Upgrade failed Champion item ' + uW.kocChampionItems[uItemId].name); if (rslt.broken == "yes") champItem.status = CM.CHAMPION.STATUS_BROKEN_UPGRADE; champItem.name = champItem.createName(); if (bypass != true) { if (rslt.feedback) { t.setResult(rslt.feedback); } else { t.setResult("Upgrade failed. " + addCommas(rslt.aetherstones) + " aetherstones used"); t.refreshAetherDisplay(); } var qItem = STrChOChampQueueData.list[STrChOChampQueueData.index]; if (qItem.status == "not started") qItem.status = "started"; SAVESTrChOChampQueueData(); t.buildChampQueueDisplay(); clearTimeout(t.timerH); t.timerH = setTimeout(t.doAction, 10 * 1000); } } return; } else { if (bypass != true) { t.setResult(rslt.feedback); } } } catch (e) { } return; }, onFailure: function (rrr) { t.setStatus("Unable to transmitt upgrade request. Waiting for next cycle."); return; } }); return; }, doRepair: function (rItemId) { var t = Tabs.champUpgrader; var params = uW.Object.clone(ajfx); if (!STrChOChampUpgradeData.active || rItemId == 0 || uW.kocChampionItems[rItemId] == null) { t.setStatus("Powered Off"); return; //repair is turned off } var theItem = uW.kocChampionItems[rItemId]; params.action = "6"; params.eid = rItemId; params.cityId = uW.currentcityid; params.gems = 0; new AjaxRequest(uW.g_ajaxpath + "ajax/ceEquipmentManagerAjax.php" + uW.g_ajaxsuffix, { method: "post", parameters: params, loading: true, onSuccess: function (transport) { var rslt = eval("(" + transport.responseText + ")"); if (rslt.ok) { var item = uW.kocChampionItems[rslt.equipmentId]; ActionLog('Starting repair for Champion item ' + item.name); if (!Seed.queue_champion) Seed.queue_champion = {}; Seed.queue_champion.itemId = rslt.equipmentId; Seed.queue_champion.start = parseInt(rslt.start); Seed.queue_champion.end = parseInt(rslt.eta); t.repairId = parseInt(rslt.equipmentId); t.repairEnd = rslt.eta; var n = new Date(t.repairEnd * 1000); t.setStatus("Repair begun ... Repair will be complete at " + n.toLocaleTimeString() + ". Item: " + item.name); var x = rslt.eta - unixTime(); t.clearTimerH = setTimeout(t.clearRepair, (x + 1) * 1000); if (item.status == CM.CHAMPION.STATUS_BROKEN_ENHANCE) item.status = CM.CHAMPION.STATUS_REPAIRING_ENHANCE; else item.status = CM.CHAMPION.STATUS_REPAIRING_UPGRADE; t.buildChampQueueDisplay(); } else { // regrab the end times in case this is caused by a manual repair if (Seed.queue_champion && Seed.queue_champion.end && Seed.queue_champion.itemId) { t.repairEnd = Seed.queue_champion.end; t.repairId = Seed.queue_champion.itemId; } if (feedback.index("There is one equipment in repairing queue") > 0) { // item is still be repaired. return; } if (rslt.feedback) { t.setStatus(rslt.feedback); uW.kocChampionItems[rItemId].status = CM.CHAMPION.STATUS_INACTIVE; t.clearRepair(); } } return; }, onFailure: function (ttt) { // this usually means a repair is in progress (such as a manual repair). Grab the seed data (if possible) if (Seed.queue_champion && Seed.queue_champion.end) { t.repairEnd = Seed.queue_champion.end; t.repairId = Seed.queue_champion.itemId; } return; } }); return; }, clearRepair: function () { //logit("clear repair"); var t = Tabs.champUpgrader; var timeUntilDone = 0; if (t.repairEnd == 0) { return timeUntilDone; } timeUntilDone = t.repairEnd - unixTime(); if (timeUntilDone <= 0) { if (t.repairId != 0 && uW.kocChampionItems[t.repairId] != null) { if (uW.kocChampionItems[t.repairId].status != CM.CHAMPION.STATUS_INACTIVE || uW.kocChampionItems[t.repairId].status != CM.CHAMPION.STATUS_ACTIVE) { t.setStatus("Repair time complete."); } uW.kocChampionItems[t.repairId].status = CM.CHAMPION.STATUS_INACTIVE; t.repairId = 0; t.show(); } } return timeUntilDone; }, addUpgradeItem: function (champId) { var t = Tabs.champUpgrader; var qItem = new QueueItem(); qItem.item = champId; qItem.action = "upgrade"; qItem.level = STrChOMaxChampLevel; STrChOChampQueueData.list.push(qItem); SAVESTrChOChampQueueData(); //document.getElementById('champInventoryItem' + champId).className = 'STrChOBlueBorder'; t.buildChampQueueDisplay(); }, addEnhanceItem: function (champId) { var t = Tabs.champUpgrader; var qItem = new QueueItem(); qItem.item = champId; qItem.action = "enhance"; qItem.level = STrChOMaxChampQuality; STrChOChampQueueData.list.push(qItem); SAVESTrChOChampQueueData(); //document.getElementById('champInventoryItem' + champId).className = 'STrChOYellowBorder'; t.buildChampQueueDisplay(); }, addBothChampItem: function (champId) { var t = Tabs.champUpgrader; var champItem = uW.kocChampionItems[champId]; if (champItem == null || !champItem) return; var qual = +champItem.rarity; var lev = +champItem.level; if (qual >= STrChOMaxChampQuality) return; var maxLev = null; var nextQual = null; var qItem = null; while (qual < STrChOMaxChampQuality) { maxLev = t.upgradePath[qual].maxLev; nextQual = t.upgradePath[qual].nextQual; if (lev < maxLev) { qItem = new QueueItem(); qItem.item = champId; qItem.action = "upgrade"; qItem.level = maxLev; STrChOChampQueueData.list.push(qItem); //document.getElementById('champInventoryItem' + champId).className = 'STrChOBlueBorder'; } qItem = new QueueItem(); qItem.item = champId; qItem.action = "enhance"; qItem.level = nextQual; STrChOChampQueueData.list.push(qItem); //document.getElementById('champInventoryItem' + champId).className = 'STrChOYellowBorder'; lev = maxLev; qual = nextQual; } SAVESTrChOChampQueueData(); t.buildChampQueueDisplay(); }, addChampQueue: function () { var t = Tabs.champUpgrader; var action = document.getElementById('STrChOChampAction').value; if (action == "both") { t.addBothChampItem(document.getElementById('STrChOChampUpgradeList').value); return; } var qItem = new QueueItem(); qItem.item = document.getElementById('STrChOChampUpgradeList').value; qItem.action = document.getElementById('STrChOChampAction').value; qItem.level = document.getElementById('STrChOChampMaxLevel').value; if (qItem.item == 0) return; STrChOChampQueueData.list.push(qItem); SAVESTrChOChampQueueData(); t.buildChampQueueDisplay(); }, buildChampLevelWidget: function () { var t = Tabs.champUpgrader; var m; var STrChOChampAction = document.getElementById('STrChOChampAction'); if (STrChOChampAction.value == "enhance") { m = ' Max: '; } else if (STrChOChampAction.value == "upgrade") { m = ' Max: '; } else { m = ' - '; } document.getElementById('STrChOChampMaxDiv').innerHTML = m; if (STrChOChampAction.value == "enhance") { document.getElementById('STrChOChampMaxLevel').value = STrChOMaxChampQuality; } else if (STrChOChampAction.value == "upgrade") { document.getElementById('STrChOChampMaxLevel').value = STrChOMaxChampLevel; } }, buildChampQueueDisplay: function () { var t = Tabs.champUpgrader; var STrChOChampQDiv = document.getElementById('STrChOChampQDiv'); var m = ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; for (var queueIndex = 0; queueIndex < STrChOChampQueueData.list.length; queueIndex++) { var queueItem = STrChOChampQueueData.list[queueIndex]; if (!queueItem) continue; var champItem = uW.kocChampionItems[queueItem.item]; var champCardName = "Unknown / Item removed"; var champId = 0; if (champItem) { champCardName = champItem.name; champId = champItem.id; } m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; } m += '
    RemoveOrderStatusItemActionMaxStatus/Last Upgrade/Attempts
    ' + champCardName + '
    ' + queueItem.action + ''; if (queueItem.action == "enhance") { m += '
    '; } else { m += '
    '; } m += '
    ' + queueItem.status + ' / '; if (queueItem.lastUpgrade) m += queueItem.lastUpgrade; m += ' / ' + queueItem.triesThis + ' tries this level, ' + queueItem.triesTotal + ' tries total'; m += '
    '; STrChOChampQDiv.innerHTML = m; for (var queueIndex = 0; queueIndex < STrChOChampQueueData.list.length; queueIndex++) { var queueItem = STrChOChampQueueData.list[queueIndex]; if (!queueItem) continue; var champItem = uW.kocChampionItems[queueItem.item]; document.getElementById('STrChOChampQueueRemove' + queueIndex).setAttribute('v1', queueIndex); document.getElementById('STrChOChampQueueRemove' + queueIndex).addEventListener('click', function () { var qIndex = this.getAttribute('v1'); t.deleteQueueItem(qIndex); }, false); document.getElementById('STrChOChampUpRow' + queueIndex).setAttribute('v1', queueIndex); document.getElementById('STrChOChampUpRow' + queueIndex).addEventListener('click', function () { var qIndex = this.getAttribute('v1'); t.moveUpRow(qIndex); }, false); document.getElementById('STrChOChampDownRow' + queueIndex).setAttribute('v1', queueIndex); document.getElementById('STrChOChampDownRow' + queueIndex).addEventListener('click', function () { var qIndex = this.getAttribute('v1'); t.moveDownRow(qIndex); }, false); document.getElementById('STrChOChampChangeLevel' + queueIndex).setAttribute('v1', queueIndex); document.getElementById('STrChOChampChangeLevel' + queueIndex).addEventListener('change', function () { var qIndex = this.getAttribute('v1'); var itemLevel = this.value; t.changeLevel(qIndex, itemLevel); }, false); if (!champItem || !(champItem.equipmentId)) { document.getElementById('STrChOChampState' + queueIndex).innerHTML = '
    ??
    '; } else if (queueItem.status == "complete") { document.getElementById('STrChOChampState' + queueIndex).className = 'STrChOSuccess'; } else if (champItem.status == CM.CHAMPION.STATUS_BROKEN_UPGRADE || champItem.status == CM.CHAMPION.STATUS_BROKEN_ENHANCE) { document.getElementById('STrChOChampState' + queueIndex).className = 'STrChOBroken'; } else if (champItem.status == CM.CHAMPION.STATUS_REPAIRING_UPGRADE || champItem.status == CM.CHAMPION.STATUS_REPAIRING_ENHANCE) { document.getElementById('STrChOChampState' + queueIndex).className = 'STrChOHammer'; } else { document.getElementById('STrChOChampState' + queueIndex).innerHTML = '
    '; } } }, deleteQueueItem: function (index) { // delete an item from the queue var t = Tabs.champUpgrader; STrChOChampQueueData.list.splice(index, 1); if (index > STrChOChampQueueData.index) STrChOChampQueueData.index--; SAVESTrChOChampQueueData(); t.buildChampQueueDisplay(); }, moveUpRow: function (index) { if (index < 1) return; var t = Tabs.champUpgrader; var qItem = STrChOChampQueueData.list.splice(index, 1); STrChOChampQueueData.list.splice(index - 1, 0, qItem[0]); if (index == STrChOChampQueueData.index) STrChOChampQueueData.index--; else if (STrChOChampQueueData.index == index - 1) STrChOChampQueueData.index++; SAVESTrChOChampQueueData(); t.buildChampQueueDisplay(); }, moveDownRow: function (index) { if (index > (STrChOChampQueueData.list.length - 2)) return; var t = Tabs.champUpgrader; var qItem = STrChOChampQueueData.list.splice(index, 1); STrChOChampQueueData.list.splice(index + 1, 0, qItem[0]); if (index == STrChOChampQueueData.index) STrChOChampQueueData.index++; else if (STrChOChampQueueData.index == index + 1) STrChOChampQueueData.index--; SAVESTrChOChampQueueData(); t.buildChampQueueDisplay(); }, changeLevel: function (index, level) { var t = Tabs.champUpgrader; var queueItem = STrChOChampQueueData.list[index]; if (!queueItem) return; queueItem.level = level; if (queueItem.status == "complete") queueItem.status = "started"; SAVESTrChOChampQueueData(); t.buildChampQueueDisplay(); }, setStatus: function (s) { document.getElementById('STrChOChampUpgradeStatus').innerHTML = '
    ' + s + '
    '; }, setResult: function (s) { document.getElementById('STrChOChampLastResult').innerHTML = '
    ' + s + '
    '; }, togglePower: function (obj) { var t = Tabs.champUpgrader; if (!STrChOChampUpgradeData.active && STrChOChampRepairData.active) { alert('You must disable repair tab first'); return; } var btn = document.getElementById('STrChOChampUpgradePower'); if (STrChOChampUpgradeData.active) { STrChOChampUpgradeData.active = false; btn.value = 'Upgrader = OFF'; t.setStatus('Powered Off'); t.setResult(''); } else { STrChOChampUpgradeData.active = true; btn.value = "Upgrader = ON"; t.setStatus("Powered On"); t.setResult(""); } if (!STrChOChampUpgradeData.active) { } SAVESTrChOChampUpgradeData(); }, } Tabs.champSalvager = { tabOrder: 201, tabLabel: 'SALVAGER', tabColor: 'brown', tabHeader: 'CHAMP HALL SALVAGER', timer : null, city : null, cityNum : 0, delItems : [], rowNum : 0, sTimer : null, delTimer : null, upgradeProfit: true, init: function (div) { var t = Tabs.champSalvager; t.mydiv = div; var m = '
    ' + t.tabHeader + '
    '; m += '
    '; m += '
    '; m += ''; m += ''; if (STrChOChampSalvageData.active) { m += ''; } else { m += ''; } m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += '
    '; m += 'Keep All: '; m += '
    Keep First Items


    '; m += '
    '; m += '
     SIMPLE RULES 
    '; m += '
    '; m += ''; m += ''; m += ''; m += '
    '; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += '
    Define Champ Items To Keep:
    Faction:
    Card Type:
    '; m += '
    '; m += ''; m += ''; m += ''; m += '
    '; m += '
    '; m += '
    '; //end of STrChOSection m += '
     ADVANCED RULES 
    '; m += '
    '; m += ''; m += ''; m += ''; m += '
    '; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += '
    Define Champ Items To Keep:
    Faction:
    Card Type:
    '; m += '
    '; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += '
    ROW 1ROW 2ROW 3ROW 4ROW 5
    '; m += '
    '; m += '
    '; //end of STrChOSection m += '
     RULES LIST 
    '; m += '
    '; m += ''; m += ''; m += ''; m += ''; m += ''; m += '
    '; m += 'Sort By Card Type: '; m += '
    '; m += 'Salvager Will Keep Items Matching These Rules'; m += '
    '; m += '
    '; m += ''; m += ''; m += ''; m += ''; m += ''; m += '
         '; m += '' m += ''; m += ''; m += ''; m += '
    '; m += '
    '; m += '
    '; m += '
    '; m += '
    '; m += '
    '; m += '
    '; m += '
    '; //end of STrChOSection m += '
    '; t.mydiv.innerHTML = '
    ' + m + '
    '; var header = document.getElementsByClassName('STrChOHeader'); for (var head=0;head CM.thronestats.upgrade[1]["Stones"]); t.start(); }, setAdvancedStatsToAny: function() { for (var r = 1; r < STrChOQualityCount; r++) { var row = document.getElementById('STrChOChampRow' + r + 'Advanced'); row.options.add(new Option("none","none")); for (i = 0; i < champItemEffects.length; i++) { var effectName = uW.g_js_strings.effects["name_" + champItemEffects[i]]; row.options.add(new Option(effectName, effectName)); } } }, clearAdvancedStats: function() { for (var i = 1; i < STrChOQualityCount; i++) { var row = document.getElementById('STrChOChampRow' + i + 'Advanced'); row.innerHTML = ""; } }, filterAdvancedStats: function(cardtype) { var t = Tabs.champSalvager; cardtype = cardtype || "any"; if (cardtype == "any") { t.setAdvancedStatsToAny(); return; } document.getElementById("STrChOChampRow1Advanced").options.add(new Option("none", "none")); document.getElementById("STrChOChampRow2Advanced").options.add(new Option("none", "none")); document.getElementById("STrChOChampRow3Advanced").options.add(new Option("none", "none")); document.getElementById("STrChOChampRow4Advanced").options.add(new Option("none", "none")); document.getElementById("STrChOChampRow5Advanced").options.add(new Option("none", "none")); for (i = 0; i < champItemEffects.length; i++) { var effectName = uW.g_js_strings.effects["name_" + champItemEffects[i]]; var eff = champItemEffects[i]; if (STrChOChampStatsGrid[cardtype][1][eff]) { document.getElementById("STrChOChampRow1Advanced").options.add(new Option(effectName, effectName)); } if (STrChOChampStatsGrid[cardtype][2][eff]) { document.getElementById("STrChOChampRow2Advanced").options.add(new Option(effectName, effectName)); } if (STrChOChampStatsGrid[cardtype][3][eff]) { document.getElementById("STrChOChampRow3Advanced").options.add(new Option(effectName, effectName)); } if (STrChOChampStatsGrid[cardtype][4][eff]) { document.getElementById("STrChOChampRow4Advanced").options.add(new Option(effectName, effectName)); } if (STrChOChampStatsGrid[cardtype][5][eff]) { document.getElementById("STrChOChampRow5Advanced").options.add(new Option(effectName, effectName)); } } }, hide: function () {}, show: function () { var t = Tabs.champSalvager; t.displayNumberSalvaged(); }, tripOdometer : function() { var t = Tabs.champSalvager; STrChOChampSalvageData.numSalvagedItems2 = 0; var now = new Date(); STrChOChampSalvageData.since = now.valueOf(); SAVESTrChOChampSalvageData(); t.show(); }, displayNumberSalvaged : function () { var t = Tabs.champSalvager; var since = ""; var rate = ""; var now = new Date(); if (!STrChOChampSalvageData.since) STrChOChampSalvageData.since = now.valueOf(); var sinceD = new Date(STrChOChampSalvageData.since); since = sinceD.toDateString().substring(3,10) + " " + sinceD.toLocaleTimeString(); var duration = now.valueOf() - STrChOChampSalvageData.since +1; duration = duration / 1000.0; rate = " (" + addCommas(Math.round(STrChOChampSalvageData.numSalvagedItems2 / duration * 86400)) + " per day)"; var m = '
    ' + addCommas(STrChOChampSalvageData.numSalvagedItems); m += ' items salvaged, ' + addCommas(STrChOChampSalvageData.numSalvagedItems2); m += ' items since ' + since + rate + '
    '; document.getElementById('STrChOChampNumSalv').innerHTML = m; document.getElementById('STrChOChampTripOdometer').addEventListener('click', function () { t.tripOdometer(); }, false); }, createRow : function() { var t = Tabs.champSalvager; var table = document.getElementById('STrChOChampConditionTable'); var rowCount = table.rows.length; var row = table.insertRow(rowCount-1); var rowId = "r" + t.rowNum; t.rowNum++; row.id = rowId; var h = " "; h += " "; h += " "; h += " "; h += " Slots: "; h += " 1"; h += " 2"; h += " 3"; h += " 4"; h += " 5"; h += ""; row.innerHTML = h; var effects = []; for (i = 0; i < champItemEffects.length; i++) { var effectName = uW.g_js_strings.effects["name_" + champItemEffects[i]]; effectName = effectName.split(" Debuff")[0]; if (effects.indexOf(effectName) < 0) effects.push(effectName); } var select = document.getElementById(rowId + "ChampsSel3"); for (index in effects) { select.options.add(new Option(effects[index], effects[index])); } var c = row.insertCell(5); //TODO // var btn = document.createElement("BUTTON"); // btn.className = 'STrChOButton'; // btn.value = 'X'; // btn.addEventListener('click', function () { t.removeRow(row); }, false); // c.append(btn); var btn = $(""); $(btn).click( function () { t.removeRow(row);}); $(c).append( btn ); }, setSalvageLevel : function(level) { STrChOChampSalvageData.minQuality = level; SAVESTrChOChampSalvageData(); }, createAdvancedRule: function() { var t = Tabs.champSalvager; t.readAdvancedRows(); t.buildChampRuleDisplay(); }, createRule : function() { var t = Tabs.champSalvager; t.readRows(); t.buildChampRuleDisplay(); }, buildChampRuleDisplay : function () { var t = Tabs.champSalvager; function innerRuleDisplay(dataset) { var innerM = ""; for (i = 0; i < dataset.length; i++) { var rule = dataset[i]; innerM += ''; innerM += "
    "; innerM += (rule.advancedrule ? 'Advanced Rule:
    ' : 'Simple Rule:
    '); innerM += " Type: " + rule.type; innerM += " Faction: " + rule.faction; for (ii = 0; ii < rule.conditions.length; ii++) { var condition = rule.conditions[ii]; if (ii ==0 ) innerM += "
    Item"; else innerM += "
    and"; if (condition.mustHave != "false") innerM += " must have "; else innerM += " must NOT have "; innerM += condition.number + "x "; innerM += condition.effect + " "; if (condition.buffType == "b") innerM += "buff "; else if (condition.buffType == "d") innerM += "debuff "; else innerM += "buff or debuff "; innerM += " in slot(s): "; for (j = 0; j < condition.slots.length; j++) { if (condition.slots[j] ) innerM += (j+1) + " "; } } innerM += '
    '; innerM += ''; innerM += '
    '; innerM += ''; innerM += ''; innerM += ''; } return innerM; } var rd = document.getElementById('STrChOChampRuleDisplay'); var sortType = document.getElementById('STrChOChampSalvageSortCard').value; if (sortType != "0") { var sortedDataSet = []; for (var k = 0; k < STrChOChampSalvageData.ruleSet.length; k++) { if (sortType == STrChOChampSalvageData.ruleSet[k].type) { sortedDataSet.unshift(STrChOChampSalvageData.ruleSet[k]); }else { sortedDataSet.push(STrChOChampSalvageData.ruleSet[k]); } } rd.innerHTML = '' + innerRuleDisplay(sortedDataSet); for (var j=0; j < sortedDataSet.length; j++) { document.getElementById('STrChOChampDelRule' +j).v1 = j; document.getElementById('STrChOChampEditRule' +j).v1 = j; document.getElementById('STrChOChampDelRule' +j).addEventListener ('click', function() { t.deleteRule(this.v1, sortedDataSet);}, false); document.getElementById('STrChOChampEditRule' +j).addEventListener ('click', function() { t.editRule(this.v1, sortedDataSet);}, false); } } else { rd.innerHTML = '
    ' + innerRuleDisplay(STrChOChampSalvageData.ruleSet); for (var j=0; j < STrChOChampSalvageData.ruleSet.length; j++) { document.getElementById('STrChOChampDelRule' +j).v1 = j; document.getElementById('STrChOChampEditRule' +j).v1 = j; document.getElementById('STrChOChampDelRule' +j).addEventListener ('click', function() { t.deleteRule(this.v1, STrChOChampSalvageData.ruleSet);}, false); document.getElementById('STrChOChampEditRule' +j).addEventListener ('click', function() { t.editRule(this.v1, STrChOChampSalvageData.ruleSet);}, false); } } }, editRule : function(ruleIndex, sortedData) { var t = Tabs.champSalvager; var rule = sortedData[ruleIndex]; var divExpander = null; if (rule.advancedrule) divExpander = document.getElementById('STrChOChampAdvancedRule'); else divExpander = document.getElementById('STrChOChampSimpleRule'); divExpander.click(); if (divExpander.childNodes[0].src == STrChORightArrow) divExpander.click(); if (rule.advancedrule) { document.getElementById('STrChOChampFactionTypeAdvanced').value = rule.faction; document.getElementById('STrChOChampCardTypeAdvanced').value = rule.type; t.clearAdvancedStats(); if (rule.type == 'any') t.setAdvancedStatsToAny(); else t.filterAdvancedStats(rule.type); for (row = 0; row < rule.conditions.length; row++) { var condition = rule.conditions[row]; var slotNumber = 0; for (s = 0; s < condition.slots.length; s++) { if (condition.slots[s]) slotNumber = s+1; } var cell = document.getElementById('STrChOChampRow' + slotNumber + 'Advanced'); var STrChOEffect = condition.effect; if (condition.buffType == 'd') STrChOEffect += ' Debuff'; cell.value = STrChOEffect; } } else { document.getElementById('STrChOChampFactionType').value = rule.faction; document.getElementById('STrChOChampCardType').value = rule.type; var STrChOChampConditionTable = document.getElementById('STrChOChampConditionTable'); while (STrChOChampConditionTable.rows.length > 1) STrChOChampConditionTable.deleteRow(0); for (row = 0; row < rule.conditions.length; row++) { var condition = rule.conditions[row]; t.createRow(); STrChOChampConditionTable = document.getElementById('STrChOChampConditionTable'); STrChOChampConditionTable.rows[row].cells[0].children[0].value = condition.mustHave; STrChOChampConditionTable.rows[row].cells[1].children[0].value = condition.number; STrChOChampConditionTable.rows[row].cells[2].children[0].value = condition.effect; STrChOChampConditionTable.rows[row].cells[3].children[0].value = condition.buffType; var slotCells = STrChOChampConditionTable.rows[row].cells[4]; for (s = 0; s < condition.slots.length; s++) { if (condition.slots[s]) slotCells.children[s].checked = true; else slotCells.children[s].checked = false; } } } t.deleteRule(ruleIndex, sortedData); }, // delete a rule from the ruleset deleteRule : function(ruleIndex, sortedData) { var t = Tabs.champSalvager; sortedData.splice(ruleIndex,1); var newDataSet = []; for (var i = 0; i < STrChOChampSalvageData.ruleSet.length; i++) { for (var i2 = 0; i2 < sortedData.length; i2++) { if (STrChOChampSalvageData.ruleSet[i] == sortedData[i2]) { newDataSet.push(STrChOChampSalvageData.ruleSet[i]); break; } } } STrChOChampSalvageData.ruleSet = newDataSet; SAVESTrChOChampSalvageData(); t.buildChampRuleDisplay(); }, togglePower: function(obj){ var t = Tabs.champSalvager; if (STrChOChampSalvageData.active) { var btn = document.getElementById('STrChOChampSalvagerPower'); STrChOChampSalvageData.active = false; btn.value = "Salvager = OFF"; clearInterval(t.sTimer); clearInterval(t.delTimer); t.delItems = []; t.deleting = false; } else { STrChOChampSalvageData.active = true; var btn = document.getElementById('STrChOChampSalvagerPower'); btn.value = "Salvager = ON"; t.doSalvage(); t.start(); } SAVESTrChOChampSalvageData(); }, readAdvancedRows: function () { var t = Tabs.champSalvager; var cType = document.getElementById('STrChOChampCardTypeAdvanced').value; var faction = document.getElementById('STrChOChampFactionTypeAdvanced').value; var row1 = document.getElementById("STrChOChampRow1Advanced"); var row2 = document.getElementById("STrChOChampRow2Advanced"); var row3 = document.getElementById("STrChOChampRow3Advanced"); var row4 = document.getElementById("STrChOChampRow4Advanced"); var row5 = document.getElementById("STrChOChampRow5Advanced"); var conditions = []; for (var i = 1; i < STrChOQualityCount; i++) { var row = document.getElementById("STrChOChampRow" + i + "Advanced"); if (row.selectedIndex == 0) continue; var slots = []; for (var slotChecker = 1; slotChecker < STrChOQualityCount; slotChecker++) { slots.push(slotChecker==i); } var effectName = row.options[row.selectedIndex].value; var buffDebuff = "b"; if (effectName.indexOf(" Debuff") != -1) buffDebuff = "d"; var effectName = effectName.split(" Debuff")[0]; var c = new ChampCondition(true, 1, effectName, buffDebuff, slots); conditions.push(c); } if ( conditions.length > 0 ) { var rule1 = new ChampRule(cType, faction, conditions, true); t.addRule(rule1); } }, readRows : function() { var t = Tabs.champSalvager; var table = document.getElementById('STrChOChampConditionTable'); var rowCount = table.rows.length; var cType = document.getElementById('STrChOChampCardType').value; var faction = document.getElementById('STrChOChampFactionType').value; var conditions = []; for (i=0; i < table.rows.length; i++) { var row = table.rows[i]; if (row.id) { var s1 = document.getElementById(row.id + "ChampsSel1"); var s2 = document.getElementById(row.id + "ChampsSel2"); var s3 = document.getElementById(row.id + "ChampsSel3"); var s4 = document.getElementById(row.id + "ChampsSel4"); var slots = []; for (j =1; j <= 5; j++) { var ch = document.getElementById(row.id + "ChampsSlot" + j); slots.push(ch.checked); } var c = new ChampCondition(s1.value, s2.value, s3.value, s4.value, slots ); conditions.push(c); } } var rule1 = new ChampRule(cType, faction, conditions, false); t.addRule(rule1); }, removeRow : function(row) { var table = document.getElementById('STrChOChampConditionTable'); for (i=0; i < table.rows.length ; i++ ) { if (table.rows[i] == row) { table.deleteRow(i); break; } } }, // add a new rule addRule : function(rule) { STrChOChampSalvageData.ruleSet.unshift(rule); SAVESTrChOChampSalvageData(); }, start : function() { var t = Tabs.champSalvager; if(STrChOChampSalvageData.active) t.sTimer = setInterval(t.doSalvage, 1*60*1000); }, // do the actual discard of champion items doSalvage : function() { var t = Tabs.champSalvager; if(!STrChOChampSalvageData.active) { t.deleting = false; return; } if (t.deleting == true) return; t.deleting = true; t.setStatus('Salvaging items'); t.delItems = t.buildList(false); if (t.delItems.length > 0) { // upgrade items from +0 to +1 first t.upgradeAndDelete(); } else { // give enough time for the last delete to finish setTimeout( function () { t.deleting = false; t.setStatus('No items to salvage. Waiting for next cycle.'); }, 3000); } }, // Create the list of items to delete. // If 'test' is set to true, then broken/equipted items are included. buildList : function(test){ var t = Tabs.champSalvager; var champSaveNum = STrChOChampSalvageData.champSaveNum; var countItem = 0; var retList = []; for (k in uW.kocChampionItems) { var champ_item = uW.kocChampionItems[k]; countItem++; if (champ_item.level !=0) continue; // ignore these things if (champ_item.unique > 0) continue; // in test mode, include these items // These items are at risk if they are repaired or unequiped. if (test != true) if (champ_item.equippedTo) continue; // keep the first X items if ( countItem <= champSaveNum) continue; // keep things w/ at least minQuality if (champ_item.rarity >= STrChOChampSalvageData.minQuality) continue; // check the rules if (t.applyRules(champ_item.equipmentId)) { if (STrChOChampSalvageData.upgradeAutoFind) { var found = false; for (var i = 0; i < STrChOChampQueueData.list.length; i++) { var qItem = STrChOChampQueueData.list[i]; if (qItem.item != champ_item.equipmentId) continue; found = true; break; } if (!found) { ActionLog('Item: ' + champ_item.name + ' found and added to auto upgrade'); Tabs.champUpgrader.addUpgradeItem(champ_item.equipmentId); } } continue; } // passes all tests retList.push(champ_item.equipmentId); } return retList; }, // put out a status message on the chSavlStatus div setStatus : function(msg) { document.getElementById('STrChOChampSalvageStatus').innerHTML = msg; }, // returns true if the item should be saved and not salvaged applyRules : function(id) { var t = Tabs.champSalvager; for (r in STrChOChampSalvageData.ruleSet) { var rule = STrChOChampSalvageData.ruleSet[r]; if ( rule.ChampApplyRule(id)) return true; } return false; }, upgradeAndDelete : function () { // update items to +1 before deleting var t = Tabs.champSalvager; if(!STrChOChampSalvageData.active || t.delItems.length == 0) { t.deleting = false; return; } var id = +t.delItems[0]; t.delTimer = setTimeout( function () {t.doDelete(id)}, 4000); // delete the item }, removeItem : function (id, cityId, numStones) { var item = uW.kocChampionItems[id]; if (!item) return; var c = +(Seed.resources["city" + cityId]["rec5"][0]); delete uW.kocChampionItems[id]; }, doDelete : function(id) { var t = Tabs.champSalvager; if(!STrChOChampSalvageData.active || !t.deleting) { t.deleting = false; return; } var item = uW.kocChampionItems[id]; if (item) t.setStatus('Salvaging ' + item.name); SalvageChampItem(id); }, } Tabs.champRepair = { tabOrder: 202, tabLabel: 'REPAIR', tabColor: 'brown', tabHeader: 'CHAMP HALL REPAIR', repairId: 0, repairEnd: 0, timerH: null, clearTimerH: null, init: function (div) { var t = Tabs.champRepair; t.mydiv = div; var m = '
    ' + t.tabHeader + '
    '; m += '
    '; m += '
    '; m += '
    '; m += ''; if (STrChOChampRepairData.active) { m += ''; } else { m += ''; } m += ''; m += ''; m += ''; m += ''; m += ''; m += '



    '; m += ''; m += '
     SPEED UPS 
    '; m += '
    '; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += '
    Only use hourglass for levels '; m += ' and higher
    Only use hourglass for qualities '; m += ' and higher
    ' + STrChOHourGlassName[1] + ' (
    ' : '>') + uW.ksoItems[1].count + '
    )
    ' + STrChOHourGlassName[2] + ' (
    ' : '>') + uW.ksoItems[2].count + '
    )
    ' + STrChOHourGlassName[3] + ' (
    ' : '>') + uW.ksoItems[3].count + '
    )
    ' + STrChOHourGlassName[4] + ' (
    ' : '>') + uW.ksoItems[4].count + '
    )
    ' + STrChOHourGlassName[5] + ' (
    ' : '>') + uW.ksoItems[5].count + '
    )
    ' + STrChOHourGlassName[6] + ' (
    ' : '>') + uW.ksoItems[6].count + '
    )
    ' + STrChOHourGlassName[7] + ' (
    ' : '>') + uW.ksoItems[7].count + '
    )
    ' + STrChOHourGlassName[8] + ' (
    ' : '>') + uW.ksoItems[8].count + '
    )
    '; m += '
    Override hourglasses by using '; m += ' every time
    '; m += '
    '; m += '
     REPAIR ITEMS 
    '; m += '
    '; m += ''; m += ''; m += '"; m += ''; m += '
    Queue By Level:  
    Queue By Preset Tag:  
    Item:   
    '; m += '
    '; m += '
     REPAIR LIST 
    '; m += '
    '; m += ''; m += ''; m += ''; m += '
    '; m += '
    '; m += '
    '; m += '
    '; m += '
    '; m += '
    '; m += ''; t.mydiv.innerHTML = '
    ' + m + '
    '; document.getElementById('STrChOChampRepairSaveSettings').addEventListener('click', function () { SaveSettingsToFile(STrChOChampRepairData); }, false); document.getElementById('STrChOChampRepairLoadSettings').addEventListener('click', function () { var loader = document.getElementById('STrChOSettingsFile'); loader.addEventListener('change', function () { LoadSettingsFromFile(STrChOChampRepairData, Tabs.champRepair); }, false); loader.click(); }, false); var header = document.getElementsByClassName('STrChOHeader'); for (var head=0;head 0) { var chId = STrChOChampRepairData.items.pop(); var champItem = uW.kocChampionItems[chId]; if (champItem == null || !champItem) continue; if (champItem.status == CM.CHAMPION.STATUS_BROKEN_UPGRADE || champItem.status == CM.CHAMPION.STATUS_BROKEN_ENHANCE) temp.push(chId); } while (temp.length > 0) STrChOChampRepairData.items.push(temp.pop()); STrChOChampRepairData.index = 0 SAVESTrChOChampRepairData(); t.populateChampRepairListBox(); t.buildChampRepairDisplay(); }, false); document.getElementById('STrChOChampRepairAdd').addEventListener('click', function () { t.addQueue(); }, false); document.getElementById('STrChOChampRepairAddAll').addEventListener('click', function () { t.addAllQueue(); }, false); document.getElementById('STrChOChampRepairRefresh').addEventListener('click', function () { t.populateChampRepairListBox(); }, false); if (STrChOChampRepairData.active) t.setStatus('Loading...'); else t.setStatus('Powered Off'); var d = 2 + Math.random() * 8; if (Seed.queue_champion == null) { for (chId in uW.kocChampionItems) { var champItem = uW.kocChampionItems[chId]; if (champItem.status == CM.CHAMPION.STATUS_REPAIRING_ENHANCE || champItem.status == CM.CHAMPION.STATUS_REPAIRING_UPGRADE) { Seed.queue_champion = {}; Seed.queue_champion.start = parseInt(champItem.start); Seed.queue_champion.end = parseInt(champItem.eta); Seed.queue_champion.itemId = champItem.equipmentId; break; } } } if (Seed.queue_champion != null && Seed.queue_champion.end != null) { var repairTimeLeft = Seed.queue_champion.end - unixTime(); t.repairEnd = Seed.queue_champion.end; t.repairId = Seed.queue_champion.itemId; var n = new Date(t.repairEnd * 1000); t.setStatus("Waiting until " + n.toLocaleTimeString() + " for repair to complete. Item: " + uW.kocChampionItems[t.repairId].name); if (STrChOChampRepairData.useAH || STrChOChampRepairData.useGH || STrChOChampRepairData.useKH || STrChOChampRepairData.useMH || STrChOChampRepairData.useSH || STrChOChampRepairData.useWH || STrChOChampRepairData.useDH || STrChOChampRepairData.useEH || (STrChOChampRepairData.overrideSpeedUp && STrChOChampRepairData.useSpeedUp > 0)) { var champItem = uW.kocChampionItems[t.repairId]; var chQuality = champItem.rarity; var chLevel = champItem.level; var useThoseSpeedups = true; if (STrChOChampRepairData.hourglassQualitySpecific && chQuality < STrChOChampRepairData.hourglassQuality) useThoseSpeedups = false; if (STrChOChampRepairData.hourglassLevelSpecific && chLevel < STrChOChampRepairData.hourglassLevel) useThoseSpeedups = false; if (STrChOChampRepairData.overrideSpeedUp) useThoseSpeedups = true; if (useThoseSpeedups) { t.doingSpeedup = true; setTimeout(function () { t.doSpeedup(); }, 2000); } } setTimeout(t.clearRepair, (repairTimeLeft + 1) * 5000); if (repairTimeLeft > 0) d += repairTimeLeft; } t.populateChampRepairListBox(); t.buildChampRepairDisplay(); if (t.timerH == null) t.timerH = setTimeout(t.doAction, d * 1000); }, hide: function () {}, refreshAetherDisplay : function () { document.getElementById('STrChOChampRepairAetherDisplay').innerHTML = displayCityAstone(); }, show: function () { var t = Tabs.champRepair; t.refreshAetherDisplay(); t.populateChampRepairListBox(); t.buildChampRepairDisplay(); }, deleteQueue: function () { var t = Tabs.champRepair STrChOChampRepairData.items = []; SAVESTrChOChampRepairData(); t.populateChampRepairListBox(); t.buildChampRepairDisplay(); }, doSpeedup: function () { var t = Tabs.champRepair; var endTime = t.repairEnd; var startTime = unixTime(); var secondsForRepair = endTime - startTime; var divId = ""; t.speedup = 0; if (secondsForRepair > 0 && STrChOChampRepairData.overrideSpeedUp && STrChOChampRepairData.useSpeedUp > 0) { t.speedup = STrChOChampRepairData.useSpeedUp; } else { if (t.speedup == 0 && secondsForRepair >= HOURGLASSES_TIME_MIN_THRESHOLD.day25 && STrChOChampRepairData.useAH && uW.ksoItems[8].count > 0) { t.speedup = 8; } if (t.speedup == 0 && secondsForRepair >= HOURGLASSES_TIME_MIN_THRESHOLD.hour24 && STrChOChampRepairData.useAH && uW.ksoItems[7].count > 0) { t.speedup = 7; } if (t.speedup == 0 && secondsForRepair >= HOURGLASSES_TIME_MIN_THRESHOLD.hour15 && STrChOChampRepairData.useAH && uW.ksoItems[6].count > 0) { t.speedup = 6; } if (t.speedup == 0 && secondsForRepair >= HOURGLASSES_TIME_MIN_THRESHOLD.hour8 && STrChOChampRepairData.useAH && uW.ksoItems[5].count > 0) { t.speedup = 5; } if (t.speedup == 0 && secondsForRepair >= HOURGLASSES_TIME_MIN_THRESHOLD.hour25 && STrChOChampRepairData.useMH && uW.ksoItems[4].count > 0) { t.speedup = 4; } if (t.speedup == 0 && secondsForRepair >= HOURGLASSES_TIME_MIN_THRESHOLD.hour1 && STrChOChampRepairData.useGH && uW.ksoItems[3].count > 0) { t.speedup = 3; } if (t.speedup == 0 && secondsForRepair >= HOURGLASSES_TIME_MIN_THRESHOLD.minute15 && STrChOChampRepairData.useKH && uW.ksoItems[2].count > 0) { t.speedup = 2; } if (t.speedup == 0 && secondsForRepair >= HOURGLASSES_TIME_MIN_THRESHOLD.minute1 && STrChOChampRepairData.useSH && uW.ksoItems[1].count > 0) { t.speedup = 1; } } switch (t.speedup) { case "1": case 1: secondsForRepair -= HOURGLASSES_TIME.minute1; divId = 'STrChOChampRepairUseSHLabel'; break; case "2": case 2: secondsForRepair -= HOURGLASSES_TIME.minute15; divId = 'STrChOChampRepairUseKHLabel'; break; case "3": case 3: secondsForRepair -= HOURGLASSES_TIME.hour1; divId = 'STrChOChampRepairUseGHLabel'; break; case "4": case 4: secondsForRepair -= HOURGLASSES_TIME.hour25; divId = 'STrChOChampRepairUseMHLabel'; break; case "5": case 5: secondsForRepair -= HOURGLASSES_TIME.hour8; divId = 'STrChOChampRepairUseAHLabel'; break; case "6": case 6: secondsForRepair -= HOURGLASSES_TIME.hour15; divId = 'STrChOChampRepairUseWHLabel'; break; case "7": case 7: secondsForRepair -= HOURGLASSES_TIME.hour24; divId = 'STrChOChampRepairUseDHLabel'; break; case "8": case 8: secondsForRepair -= HOURGLASSES_TIME.day25; divId = 'STrChOChampRepairUseEHLabel'; break; } if (t.speedup != 0) { t.setResult('Used ' + uW.ksoItems[t.speedup].name); var divCount = uW.ksoItems[t.speedup].count - 1; var divSpeedups = document.getElementById(divId); divSpeedups.innerHTML = divCount; uW.modal_speedup_apply("champion", t.speedup, t.repairId); if (secondsForRepair <= 0) { secondsForRepair = 0; endTime = startTime; t.clearTimerH = setTimeout(t.clearRepair, 1000); } else { endTime = unixTime() + secondsForRepair; t.repairEnd = endTime; var n = new Date(t.repairEnd * 1000); var champItem = uW.kocChampionItems[t.repairId]; if (champItem) { t.setStatus("Repair begun ... Repair will be complete at " + n.toLocaleTimeString() + ". Item: " + champItem.name); t.clearTimerH = setTimeout(t.clearRepair, secondsForRepair * 1000); } } t.buildChampRepairDisplay(); t.repairEnd = endTime; setTimeout(function () { t.doSpeedup(); }, 1000); } }, selectNext: function () { var l = STrChOChampRepairData.items.length; for (i = 0; i < l; i++) { var champItem = uW.kocChampionItems[STrChOChampRepairData.items[i]]; if (champItem == null || !champItem) continue; if ((champItem != null) && (champItem.status == CM.CHAMPION.STATUS_BROKEN_ENHANCE || champItem.status == CM.CHAMPION.STATUS_BROKEN_UPGRADE)) { STrChOChampRepairData.index = i; SAVESTrChOChampRepairData(); return; } } // if we get here, the queue is complete STrChOChampRepairData.index = -1; SAVESTrChOChampRepairData(); }, doAction: function () { var t = Tabs.champRepair; t.populateChampRepairListBox(); if (STrChOChampUpgradeData.active) { t.setStatus('Waiting for upgrade tab to finish...'); if (STrChOChampRepairData.active) t.togglePower(); return; } if (!STrChOChampRepairData.active) { t.setStatus("Powered Off"); return; } else { var retryTime = STrChOGeneralOptions.retryInterval; try { // check if repair is done var ti = t.clearRepair(); if (ti <= 0) { // repair is done t.selectNext(); if (STrChOChampRepairData.index < 0) { t.setStatus("Reached end of queue.") t.setResult(""); SAVESTrChOChampRepairData(); } else { var champItem = uW.kocChampionItems[STrChOChampRepairData.items[STrChOChampRepairData.index]]; if (champItem) { t.repairId = champItem.equipmentId; t.doRepair(champItem.equipmentId); } } } else { // come back after repair is complete retryTime = ti + 5; var n = new Date(t.repairEnd * 1000); t.setStatus("Waiting until " + n.toLocaleTimeString() + " for repair to complete. Item: " + uW.kocChampionItems[t.repairId].name); if (STrChOChampRepairData.useSH || STrChOChampRepairData.useKH || STrChOChampRepairData.useGH || STrChOChampRepairData.useMH || STrChOChampRepairData.useAH || STrChOChampRepairData.useWH || STrChOChampRepairData.useDH || STrChOChampRepairData.useEH || (STrChOChampRepairData.overrideSpeedUp && STrChOChampRepairData.useSpeedUp > 0)) { var champItem = uW.kocChampionItems[t.repairId]; var STrChOChampQuality = champItem.rarity; var STrChOChampLevel = champItem.level; var useThoseSpeedups = true; if (STrChOChampRepairData.hourglassQualitySpecific && STrChOChampQuality < STrChOChampRepairData.hourglassQuality) useThoseSpeedups = false; if (STrChOChampRepairData.hourglassLevelSpecific && STrChOChampLevel < STrChOChampRepairData.hourglassLevel) useThoseSpeedups = false; if (STrChOChampRepairData.overrideSpeedUp) useThoseSpeedups = true; if (useThoseSpeedups) { t.doingSpeedup = true; setTimeout(function () { t.doSpeedup(); }, 2000); } retryTime = 1; } } } catch (e) { } // recycle clearTimeout(t.timerH); t.timerH = setTimeout(t.doAction, retryTime * 1000); t.buildChampRepairDisplay(); } }, addQueue: function (Id) { var t = Tabs.champRepair; if (Id == null) { var chId = document.getElementById('STrChOChampRepairList').value; } else { var chId = Id; } if (chId == 0) return; var item_count = STrChOChampRepairData.items.length; if (item_count > 0) { for (var item_index = 0; item_index < item_count; item_index++) { if (chId == STrChOChampRepairData.items[item_index]) return; } } STrChOChampRepairData.items.push(chId); SAVESTrChOChampRepairData(); t.populateChampRepairListBox(); t.buildChampRepairDisplay(); }, addAllQueue: function () { var t = Tabs.champRepair; for (chId in uW.kocChampionItems) { var champItem = uW.kocChampionItems[chId]; if (champItem == null || !champItem) continue; if (champItem.status == CM.CHAMPION.STATUS_BROKEN_UPGRADE || champItem.status == CM.CHAMPION.STATUS_BROKEN_ENHANCE) { t.addQueue(chId); } } }, populateChampRepairListBox: function () { var repairList = document.getElementById('STrChOChampRepairList'); var m = ''; var item_count = STrChOChampRepairData.items.length; for (chId in uW.kocChampionItems) { var champItem = uW.kocChampionItems[chId]; if (champItem == null || !champItem) continue; if (champItem.status != CM.CHAMPION.STATUS_BROKEN_ENHANCE && champItem.status != CM.CHAMPION.STATUS_BROKEN_UPGRADE) continue; //item not broken, move on var foundIt = false; for (var item_index = 0; item_index < item_count; item_index++) { if (chId == STrChOChampRepairData.items[item_index]) { foundIt = true; break; } } if (!foundIt) { var optionText = champItem.name; m += ''; } } repairList.innerHTML = m; }, deleteRepairItem: function (index) { // delete an item from the queue var t = Tabs.champRepair; STrChOChampRepairData.items.splice(index, 1); SAVESTrChOChampRepairData(); t.populateChampRepairListBox(); t.buildChampRepairDisplay(); }, moveRepairUpRow: function (index) { if (index < 1) return; var t = Tabs.champRepair; var q = STrChOChampRepairData.items.splice(index, 1); STrChOChampRepairData.items.splice(index - 1, 0, q); if (index == STrChOChampRepairData.index) STrChOChampRepairData.index--; else if (STrChOChampRepairData.index == index - 1) STrChOChampRepairData.index++; SAVESTrChOChampRepairData(); t.buildChampRepairDisplay(); }, moveRepairDownRow: function (index) { if (index > (STrChOChampRepairData.items.length - 2)) return; var t = Tabs.champRepair; var q = STrChOChampRepairData.items.splice(index, 1); STrChOChampRepairData.items.splice(index + 1, 0, q); if (i == STrChOChampRepairData.index) STrChOChampRepairData.index++; else if (STrChOChampRepairData.index == i + 1) STrChOChampRepairData.index--; SAVESTrChOChampRepairData(); t.buildChampRepairDisplay(); }, setStatus: function (s) { document.getElementById('STrChOChampRepairStatus').innerHTML = "
    " + s + "
    "; }, setResult: function (s) { document.getElementById('STrChOChampRepairLastResult').innerHTML = "
    " + s + "
    "; }, togglePower: function (obj) { var t = Tabs.champRepair; var STrChOChampRepairPower = document.getElementById('STrChOChampRepairPower'); if (STrChOChampRepairData.active) { STrChOChampRepairData.active = false; STrChOChampRepairPower.value = "Repair = OFF"; t.setStatus("Powered Off"); t.setResult(""); } else { STrChOChampRepairData.active = true; STrChOChampRepairPower.value = "Repair = ON"; t.setStatus("Power On"); t.setResult(""); STrChOChampUpgradeData.active = false; SAVESTrChOChampUpgradeData(); t.doAction(); } if (!STrChOChampRepairData.active) { } SAVESTrChOChampRepairData(); }, clearRepair: function () { var t = Tabs.champRepair; var timeUntilDone = 0; if (t.repairEnd == 0) { return timeUntilDone; } timeUntilDone = t.repairEnd - unixTime(); if (timeUntilDone <= 0) { if (t.repairId != 0 && uW.kocChampionItems[t.repairId] != null) { if (uW.kocChampionItems[t.repairId].status != CM.CHAMPION.STATUS_INACTIVE || uW.kocChampionItems[t.repairId].status != CM.CHAMPION.STATUS_ACTIVE) { t.setStatus("Repair time complete."); document.getElementById('STrChOChampRepairState' + t.repairId).className = 'STrChOSuccess'; } else { } t.repairId = 0; } } return timeUntilDone; }, doRepair: function (rItemId) { var t = Tabs.champRepair; var params = uW.Object.clone(ajfx); if (STrChOChampRepairData.active == false || rItemId == 0 || uW.kocChampionItems[rItemId] == null) return; var theItem = uW.kocChampionItems[rItemId]; params.action = "6"; params.eid = rItemId; params.cityId = uW.currentcityid; params.gems = 0; new AjaxRequest(uW.g_ajaxpath + "ajax/ceEquipmentManagerAjax.php" + uW.g_ajaxsuffix, { method: "post", parameters: params, loading: true, onSuccess: function (transport) { var rslt = eval("(" + transport.responseText + ")"); if (rslt.ok) { var item = uW.kocChampionItems[rslt.equipmentId]; ActionLog('Starting repair for Champion item ' + item.name); if (!Seed.queue_champion) Seed.queue_champion = {}; Seed.queue_champion.itemId = rslt.equipmentId; Seed.queue_champion.start = parseInt(rslt.start); Seed.queue_champion.end = parseInt(rslt.eta); t.repairId = parseInt(rslt.equipmentId); t.repairEnd = rslt.eta; var n = new Date(t.repairEnd * 1000); t.setStatus("Repair begun ... Repair will be complete at " + n.toLocaleTimeString() + ". Item: " + item.name); var x = rslt.eta - unixTime(); t.clearTimerH = setTimeout(t.clearRepair, (x + 1) * 1000); if (item.status == CM.CHAMPION.STATUS_BROKEN_ENHANCE) item.status = CM.CHAMPION.STATUS_REPAIRING_ENHANCE; else item.status = CM.CHAMPION.STATUS_REPAIRING_UPGRADE; t.buildChampRepairDisplay(); } else { // regrab the end times in case this is caused by a manual repair if (Seed.queue_champion && Seed.queue_champion.end && Seed.queue_champion.itemId) { t.repairEnd = Seed.queue_champion.end; t.repairId = Seed.queue_champion.itemId; } if (feedback.index("There is one equipment in repairing queue") > 0) return; // item is still be repaired if (rslt.feedback) { t.setStatus(rslt.feedback); uW.kocChampionItems[rItemId].status = CM.CHAMPION.STATUS_INACTIVE; t.clearRepair(); } } return; }, onFailure: function (ttt) { // this usually means a repair is in progress (such as a manualrepair). Grab the seed data (if possible) if (Seed.queue_champion && Seed.queue_champion.end) { t.repairEnd = Seed.queue_champion.end; t.repairId = Seed.queue_champion.itemId; } return; } }); return; }, buildChampRepairDisplay: function () { var t = Tabs.champRepair; STrChOChampRepairQDiv = document.getElementById('STrChOChampRepairQDiv'); var m = ''; var item_count = STrChOChampRepairData.items.length; //TODO //var totalRepairTime = t.calcRepairTime(); //if (totalRepairTime > 0) $("#trRepair").append(""); m += ''; if (item_count > 0) { for (var item_index = 0; item_index < item_count; item_index++) { var chId = STrChOChampRepairData.items[item_index]; if (chId == null) { t.deleteRepairItem(item_index); return; } var champItem = uW.kocChampionItems[chId]; if (champItem == null || !champItem) { t.deleteRepairItem(item_index); return; } m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; } m += '
    Total Repair Time (" + item_count + " items): " + repairTimeToText(totalRepairTime) + "
    RemoveReorderStatusItem
    ' + champItem.name + '
    '; STrChOChampRepairQDiv.innerHTML = m; for (var item_index = 0; item_index < item_count; item_index++) { var chId = STrChOChampRepairData.items[item_index]; var champItem = uW.kocChampionItems[chId]; if (champItem == null || !champItem) continue; document.getElementById('STrChOChampRepairRemove' + chId).setAttribute('v1', item_index); document.getElementById('STrChOChampRepairRemove' + chId).addEventListener('click', function () { var qIndex = this.getAttribute('v1'); t.deleteRepairItem(qIndex); }, false); document.getElementById('STrChOChampRepairUpRow' + chId).setAttribute('v1', item_index); document.getElementById('STrChOChampRepairUpRow' + chId).addEventListener('click', function () { var qIndex = this.getAttribute('v1'); t.moveRepairUpRow(qIndex); }, false); document.getElementById('STrChOChampRepairDownRow' + chId).setAttribute('v1', item_index); document.getElementById('STrChOChampRepairDownRow' + chId).addEventListener('click', function () { var qIndex = this.getAttribute('v1'); t.moveRepairDownRow(qIndex); }, false); var champItem = uW.kocChampionItems[chId]; if (!champItem || !(champItem.equipmentId)) { document.getElementById('STrChOChampRepairState' + chId).innerHTML = '
    ??
    '; } else if (champItem.status == CM.CHAMPION.STATUS_ACTIVE) { document.getElementById('STrChOChampRepairState' + chId).className = 'STrChOSuccess'; } else if (champItem.status == CM.CHAMPION.STATUS_BROKEN_UPGRADE || champItem.status == CM.CHAMPION.STATUS_BROKEN_ENHANCE) { document.getElementById('STrChOChampRepairState' + chId).className = 'STrChOBroken'; } else if (champItem.status == CM.CHAMPION.STATUS_REPAIRING_UPGRADE || champItem.status == CM.CHAMPION.STATUS_REPAIRING_ENHANCE) { document.getElementById('STrChOChampRepairState' + chId).className = 'STrChOHammer'; } else { document.getElementById('STrChOChampRepairState' + chId).innerHTML = '
    '; } } } else { m += ''; STrChOChampRepairQDiv.innerHTML = m; } }, } Tabs.champOrganizer = { tabOrder: 203, tabLabel: 'ORGANIZER', tabColor: 'brown', tabHeader: 'CHAMP HALL ORGANIZER', champItemLists: [], sortEffect: "none", buffType: "both", panelId: -1, panelType: "upgrade", panelNextLevel: 2, switchingPresets: false, init: function (div) { var t = Tabs.champOrganizer; t.mydiv = div; t.sortEffect = STrChOChampUpgradeData.effectSelected; t.buffType = STrChOChampUpgradeData.buffSelected; var m = '
    ' + t.tabHeader + '
    '; m += '
    '; m += ''; m += ''; m += ''; m += '
    You Have
    Champ Cards
    '; m += 'Sort: '; m += ''; m += ' Include Inactive '; m += ' Ignore Broken'; m += '
    '; m += '
    '; m += '
    '; m += '
     CARD FILTER 
    '; m += '
    '; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += '
    '; m += 'Filter By Effects: '; m += ''; m += '

    FactionQualityLevel
    '; for (var fact = 0; fact < STrChOFactions.length; fact++) m += '' + STrChOFactions[fact].capitalizeFirstLetter() + '
    '; m += '
    '; for (var qual = 0; qual < champCardQualities.length; qual++) m += '' + champCardQualities[qual].capitalizeFirstLetter() + '
    '; m += '
    '; for (lvl = 0; lvl <= STrChOMaxChampLevel; lvl++) { m += '' + lvl + '
    '; } m += '
    '; m += '
    '; m += '
    '; m += '
    '; for (champItemCardType in champItemNames) { m += '
     ' + champItemNames[champItemCardType].toUpperCase() + ' 
    '; m += '
    '; } t.mydiv.innerHTML = '
    ' + m + '
    '; var champOrganizers = document.getElementsByClassName('STrChOChampOrganizer'); for (var champOrg=0; champOrg < champOrganizers.length; champOrg++) { champOrganizers[champOrg].addEventListener('click', function () { var imgs = this.childNodes; if (imgs[0].src == STrChODownArrow) { imgs[0].src = STrChORightArrow imgs[2].src = STrChORightArrow } else { imgs[0].src = STrChODownArrow imgs[2].src = STrChODownArrow } var section = this.nextSibling; if (section.className != 'STrChOChampOrganizerSection') return; if (section.style.display == 'block') section.style.display = 'none'; else section.style.display = 'block'; }, false); } var header = document.getElementsByClassName('STrChOHeader'); for (var head=0;head 0) t.champItemLists[champtype].unshift(champItem); else t.champItemLists[champtype].push(champItem); } t.sortChampOrganizerLists(); }, sortChampOrganizerLists: function () { var t = Tabs.champOrganizer; STrChOChampUpgradeData.sortInactive = document.getElementById('STrChOChampSortInactive') == null ? false : document.getElementById('STrChOChampSortInactive').checked; for (i = 0; i < t.champItemLists.length; i++) { if (!t.champItemLists[i]) continue; t.champItemLists[i].sort(function (item1, item2) { return t.sortChampOrganizerValue(item2) - t.sortChampOrganizerValue(item1); }); } }, sortChampOrganizerValue: function (item) { var t = Tabs.champOrganizer; var retValue = 0.0; for (e in item.effects) { try { var N = item.effects[e]; var id = item.effects[e].id; var effect = ""; var quality = item.rarity; effect = uW.g_js_strings.effects["name_" + id]; var S = champTiers; var P = id + "," + N.tier; var tier = S[P]; var base = tier.Base || 0; var growth = tier.Growth || 0; var level = item.level || 0; // slot number var B = +e; if (B > quality && !STrChOChampUpgradeData.sortInactive) { return +retValue; } var percent = +(base + ((level * level + level) * growth * 0.5)); if ((effect == (t.sortEffect + " Debuff")) && (t.sortType != "buff")) { retValue -= percent; } else if (effect == t.sortEffect && t.sortType != "debuff") { retValue += percent; } } catch (e) { } } return +retValue; }, paintChampTables: function () { var t = Tabs.champOrganizer; for (champItemTypeValue in t.champItemLists) { var m = ''; var divCards = document.getElementById('STrChOChampCardSection' + champItemNames[champItemTypeValue]); if (!divCards) continue; divCards.innerHTML = "
    "; for (idx = 0; idx < t.champItemLists[champItemTypeValue].length; idx++) { var champItem = t.champItemLists[champItemTypeValue][idx]; m += ''; } m += '
    '; m += BuildChampCard(champItem); m += '
    '; divCards.innerHTML = '
    ' + m + '
    '; } var STrChOCards = document.getElementsByClassName('STrChOChampCard'); for (idx = 0; idx < STrChOCards.length; idx++) { STrChOCards[idx].addEventListener('click', function (A) { A.stopPropagation(); var champId = this.id.split('STrChOChampCard')[1]; var champItem = uW.kocChampionItems[champId]; var STrChOCard = document.getElementById('STrChOChampCard' + champId); CardContextMenu(this, champItem, true); },false); } }, show: function () { var t= Tabs.champOrganizer; if (document.getElementById('STrChOCountChampCards') != null) document.getElementById('STrChOCountChampCards').innerHTML = countHowManyChampCards(); t.createChampItemList(); t.paintChampTables(); }, showNextChampLevel: function () { var t = Tabs.champOrganizer; if (t.panelNextLevel + 1 > STrChOMaxChampLevel) return; var elemStatTitle = document.getElementsByClassName('upgEnhStatsTitle')[1]; t.panelNextLevel++; elemStatTitle.innerHTML = "Level " + t.panelNextLevel + (t.panelNextLevel == STrChOMaxChampLevel ? "" : " (Next)"); var elemStatBody = document.getElementById('upgEnhStatsBodyTarget'); var elemStatItems = elemStatBody.getElementsByTagName("li"); var champ_item = uW.kocChampionItems[t.panelId]; for (var elemIndex = 0; elemIndex < elemStatItems.length; ++elemIndex) { var elemItem = elemStatItems[elemIndex]; var slotNumber = elemIndex + 1; var effectLine = champ_item.effects[slotNumber]; var effect = CM.ChampionManager.getEffect(effectLine, t.panelNextLevel); elemItem.innerHTML = effect.name + " " + effect.amount; } }, } Tabs.champEnhStats = { tabOrder: 204, tabLabel: 'ENH STATS', tabColor: 'brown', tabHeader: 'CHAMP HALL ENHANCEMENT STATS', init: function (div) { var t = Tabs.champEnhStats; t.mydiv = div; t.buildChampEnhStatsDisplay(); }, hide: function () {}, buildChampEnhStatsDisplay: function () { var t = Tabs.champEnhStats; var m = '
    ' + t.tabHeader + '
    '; m += '
    '; m += ''; m += ''; m += ''; for (qual = 0; qual <= STrChOMaxChampQuality; qual++) m += ''; m += ''; var st = [0, 0, 0, 0, 0, 0]; var ft = [0, 0, 0, 0, 0, 0]; for (lvl = 0; lvl <= STrChOMaxChampLevel; lvl++) { m += ''; m += ''; for (qual = 0; qual < (STrChOMaxChampQuality+1); qual++) { if (STrChOChampUpgradeStats.enhanceSuccess[qual][lvl] == null) STrChOChampUpgradeStats.enhanceSuccess[qual][lvl] = 0; if (STrChOChampUpgradeStats.enhanceFailure[qual][lvl] == null) STrChOChampUpgradeStats.enhanceFailure[qual][lvl] = 0; st[qual] += STrChOChampUpgradeStats.enhanceSuccess[qual][lvl]; ft[qual] += STrChOChampUpgradeStats.enhanceFailure[qual][lvl]; m += ''; } m += ''; } m += ''; for (qual = 0; qual < (STrChOMaxChampQuality+1); qual++) m += ''; m += ''; m += ''; for (qual = 0; qual < (STrChOMaxChampQuality+1); qual++) { m += ''; } m += ''; m += '
    Enhancing Numbers (successes/failures)
    ' + champCardQualities[qual].capitalizeFirstLetter() + ' 
    '; if (lvl != 0) m += '+'; m += lvl + '' + STrChOChampUpgradeStats.enhanceSuccess[qual][lvl] + ' / ' + STrChOChampUpgradeStats.enhanceFailure[qual][lvl] + '
    Totals: ' + st[qual] + ' / ' + ft[qual] + '
    Percents: '; if ((st[qual] + ft[qual]) == 0) m += "--"; else { var perc = (100 * st[qual] / (st[qual] + ft[qual])); m += perc.toFixed(2) + '%'; } m += '
    '; m += '
    '; m += '
    '; t.mydiv.innerHTML = '
    ' + m + '
    '; document.getElementById('STrChOChampEnhStatsClear').addEventListener('click', function () { var t = Tabs.champEnhStats; for (lvl = 0; lvl <= STrChOMaxChampLevel; lvl++) { for (qual = 0; qual < (STrChOMaxChampQuality+1); qual++) { STrChOChampUpgradeStats.enhanceSuccess[qual][lvl] = null; STrChOChampUpgradeStats.enhanceFailure[qual][lvl] = null; } } SAVESTrChOChampUpgradeStats(); t.buildChampEnhStatsDisplay(); }, false); }, show: function () { var t = Tabs.champEnhStats; t.buildChampEnhStatsDisplay(); }, } Tabs.champUpgStats = { tabOrder: 205, tabLabel: 'UPG STATS', tabColor: 'brown', tabHeader: 'CHAMP HALL UPGRADE STATS', init: function (div) { var t = Tabs.champUpgStats; t.mydiv = div; t.buildChampUpgStatsDisplay(); }, hide: function () {}, buildChampUpgStatsDisplay: function () { var t = Tabs.champUpgStats; var m = '
    ' + t.tabHeader + '
    '; m += '
    '; m += ''; m += ''; m += ''; for (lvl = 0; lvl < STrChOMaxChampLevel; lvl++) m += ''; m += ''; var st = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ]; //TODO: increase when game increases max champ levels (currently 45) var ft = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ]; for (qual = 0; qual <= STrChOMaxChampQuality; qual++) { m += ''; for (lvl = 0; lvl < STrChOMaxChampLevel; lvl++) { if (STrChOChampUpgradeStats.upgradeSuccess[qual][lvl] == null || isNaN(STrChOChampUpgradeStats.upgradeSuccess[qual][lvl])) STrChOChampUpgradeStats.upgradeSuccess[qual][lvl] = 0; if (STrChOChampUpgradeStats.upgradeFailure[qual][lvl] == null || isNaN(STrChOChampUpgradeStats.upgradeFailure[qual][lvl])) STrChOChampUpgradeStats.upgradeFailure[qual][lvl] = 0; st[lvl] += STrChOChampUpgradeStats.upgradeSuccess[qual][lvl]; ft[lvl] += STrChOChampUpgradeStats.upgradeFailure[qual][lvl]; m += ''; } m += ''; } m += ''; for (lvl = 0; lvl < STrChOMaxChampLevel; lvl++) m += ''; m += ''; m += ''; for (lvl = 0; lvl < STrChOMaxChampLevel; lvl++) { m += ''; } m += ''; m += '
    Upgrading Numbers (successes/failures)
     +' + (lvl + 1) + ' 
    ' + champCardQualities[qual].capitalizeFirstLetter() + ''; m += STrChOChampUpgradeStats.upgradeSuccess[qual][lvl] + ' / ' + STrChOChampUpgradeStats.upgradeFailure[qual][lvl]; m += '
    Totals: ' + st[lvl] + " / " + ft[lvl] + '
    Percents: '; if ((st[lvl] + ft[lvl]) == 0) m += '--'; else { var perc = (100 * st[lvl] / (st[lvl] + ft[lvl])); m += perc.toFixed(2) + '%'; } m += '
    '; m += '
    '; m += '
    '; t.mydiv.innerHTML = '
    ' + m + '
    '; document.getElementById('STrChOChampUpgStatsClear').addEventListener('click', function () { var t = Tabs.champUpgStats; for (lvl = 0; lvl <= STrChOMaxChampLevel; lvl++) { for (qual = 0; qual < (STrChOMaxChampQuality+1); qual++) { STrChOChampUpgradeStats.upgradeSuccess[qual][lvl] = null; STrChOChampUpgradeStats.upgradeFailure[qual][lvl] = null; } } SAVESTrChOChampUpgradeStats(); t.buildChampUpgStatsDisplay() }, false); }, show: function () { var t = Tabs.champUpgStats; t.buildChampUpgStatsDisplay(); }, } Tabs.champPresets = { tabOrder: 206, tabLabel: 'PRESETS', tabColor: 'brown', tabHeader: 'CHAMP HALL PRESETS', broke_items: 0, broke_count: 0, delay: 2000, init: function (div) { var t = Tabs.champPresets; t.mydiv = div; }, hide: function () {}, refreshBrokeMightDisplay: function () { document.getElementById('STrChOChampMightBroke').innerHTML = getChampBrokeMight(); }, show: function () { var t = Tabs.champPresets; var m = '
    ' + t.tabHeader + '
    '; m += '
    '; m += ''; m += ''; m += ''; m += ''; m += '
    Preset Color: '; m += '   General Color: '; m += '   Active Color: (Requires Refresh)
    '; m += '  '; m += '  '; m += '  '; //m += ''; m += '
    '; m += 'Show Might on Posts'; m += '   Show Preset Name on Posts'; m += '
    '; m += '
     PRESET NAMING 
    '; m += '
    '; m += ''; if (STrChOMaxChampions == 0) { m += ''; } else { var presetsList = ""; for (var i = 1; i < STrChOMaxChampions + 1; i++) { presetsList += ''; } for (var i = 1; i < STrChOMaxChampions+1; i++) { var thisChampion = Seed.champion.champions[i-1]; m += ''; m += ''; m += ''; if (thisChampion.name == "") { m += ''; } else { m += ''; } m += ''; m += ''; m += ''; if (getChampPresetTagCount(i) != 0) { m += ''; m += ''; } else { m += ''; } } m += '
    No Champions
    Champ ' + i + ':' + thisChampion.name + ':'; } m += '
    '; m += '
    '; m += '
     CHAMP HALL BREAKING 
    '; m += '
    '; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; // m += ''; // m += ''; // m += ''; // m += ''; m += '
    You have 0 champ hall might broken
    Exclude Tagged Presets
    Exclude Regular Tagged
    Break Items Level or Higher
    Break Items Level or Lower
    (all options above will reset after refresh)

    Break Equiped Throne Room Only
    Break Tagged Preset Only
    Break Throne Might
    '; m += '
    '; m += '
    '; t.mydiv.innerHTML = '
    ' + m + '
    '; document.getElementById('STrChOChampPresetsSaveSettings').addEventListener('click', function () { SaveSettingsToFile(STrChOChampPresetData); }, false); document.getElementById('STrChOChampPresetsLoadSettings').addEventListener('click', function () { var loader = document.getElementById('STrChOSettingsFile'); loader.addEventListener('change', function () { LoadSettingsFromFile(STrChOChampPresetData, Tabs.champPresets); }, false); loader.click(); }, false); var header = document.getElementsByClassName('STrChOHeader'); for (var head=0;head breakLevelHigh) continue; allTaggedPresets.push(champId); } } } } var champToBreak = []; for (chId in uW.kocChampionItems) { var champ_item = uW.kocChampionItems[chId]; if (champ_item == null || !champ_item) continue; if (champ_item.status != 1) continue;//card broken? if (excludeTags && STrChOChampPresetData.taggedItems[chId]) continue; if (allTaggedPresets.indexOf(chId) != -1) continue; if (champ_item.level == STrChOMaxChampLevel) continue; if (champ_item.level < breakLevelLow || champ_item.level > breakLevelHigh) continue; champToBreak.push(chId); } delete allTaggedPresets; if (champToBreak.length == 0) { alert('No champ items to break'); return; } t.broke_count = champToBreak.length; t.setBreakStatus(); t.broke_items = 0; for (var i = 0; i < champToBreak.length; i++) { //loop through all the champ items to be broke var citytobreakfrom = 0; //start at the first city {the index is 0-based} var champ_item = uW.kocChampionItems[champToBreak[i]]; //get the next champ item in the collection var curr_level = champ_item.level; //get the current level of the champ item var champ_id = champ_item.equipmentId; //get the champ item id if (curr_level == STrChOMaxChampLevel) continue; //if for some reason a card at the max level makes it through the list then continue to the next in the list var z = CM.WorldSettings.getSettingAsObject("CE_UPGRADE_AETHERSTONE_MAP"); var cost_to_upgrade = z[curr_level + 1].Aetherstones; //get the cost of stones to upgrade to the next level while (citytobreakfrom < 8) { //loop through all the 8 cities checking for astone to upgrade for the break feature stones_in_city = parseInt(Seed.resources["city" + Seed.cities[citytobreakfrom][0]]["rec5"][0]); //get the astone count for the city if (cost_to_upgrade + STrChOBreakBuffer <= stones_in_city) break; //if you have the astone in the city then stop searching cities and do the upgrade citytobreakfrom = citytobreakfrom + 1; //search to the next city in the loop } if (citytobreakfrom == 8) continue; //if you make it to 8, then you've exhausted all the cities astone search for this champ item, move to the next one var city = Seed.cities[citytobreakfrom][0]; setTimeout( (function(cy, id, uc) { return function () { upgradeIt(cy, id, uc); } }) (city, champ_id, cost_to_upgrade), (i+1) * t.delay); } setTimeout(function() { var t = Tabs.champPresets; if (t.broke_items == 0) { alert('No Items broken.'); } else { alert('Breaking CH complete. ' + t.broke_items + ' Champ items were broken. Page will now refresh.'); RefreshCamelot(); } }, champToBreak.length * t.delay + t.delay); }, false); document.getElementById('STrChOChampClearAllPresetTags').addEventListener('click', function () { t.clearAllPresetTagItems(); t.show(); document.getElementById('STrChOChampPresetNaming').click(); }, false); document.getElementById('STrChOChampSaveAllPresetTags').addEventListener('click', function () { for (i = 1; i < STrChOMaxChampions + 1; i++) { t.addPresetTags(i); } t.show(); document.getElementById('STrChOChampPresetNaming').click(); }, false); document.getElementById('STrChOChampClearTags').addEventListener('click', function () { t.removeAllTagItems(); }, false); document.getElementById('STrChOChampActiveColor').addEventListener('change', function () { STrChOChampPresetData.activeColor = document.getElementById('STrChOChampActiveColor').value; SAVESTrChOChampPresetData(); }, false); document.getElementById('STrChOChampPresetColor').addEventListener('change', function () { STrChOChampPresetData.presetColor = document.getElementById('STrChOChampPresetColor').value; SAVESTrChOChampPresetData(); }, false); document.getElementById('STrChOChampTagColor').addEventListener('change', function () { STrChOChampPresetData.tagColor = document.getElementById('STrChOChampTagColor').value; SAVESTrChOChampPresetData(); }, false); var STrChOChampPresetSave = document.getElementsByClassName('STrChOChampPresetSave'); for (var idx=0;idx 0) { for (ei = 0; ei < el; ei++) { var chId = equipped_items[ei]; setTimeout(unequipLoop(chId), c * 2000); c += 1; } } var preset = getChampPresetObject(parseInt(presetIndex)); for (var p in preset) { setTimeout(equipLoop(p), c * 2000); c += 1; } setTimeout(function () { alert("all champ items equipped") }, c * 2000 + 2000); }, copyPresetTags: function (sourcePresetNumber, destinationPresetNumber, presetName) { var pSource = getChampPresetObject(parseInt(sourcePresetNumber)); var pDestination = getChampPresetObject(parseInt(destinationPresetNumber)); for (var p in pDestination) delete pDestination[p]; for (var p in pSource) pDestination[p] = true; STrChOChampPresetData.presetNames[destinationPresetNumber-1] = presetName + " (copy)"; SAVESTrChOChampPresetData(); }, addPresetTags: function (presetIndex) { //presetIndex should be passed in as base 1 to index into the presetTaggedItems array var t = Tabs.champPresets; var preset = getChampPresetObject(parseInt(presetIndex)); var championID = Seed.champion.champions[presetIndex-1].championId;// = 11007 var equipped_items = []; for (chId in uW.kocChampionItems) { if (uW.kocChampionItems[chId].equippedTo != championID) continue; equipped_items.push(chId); } if ( equipped_items.length == 0 ) return; for (var p in preset) delete preset[p]; for (ei = 0; ei < equipped_items.length; ei++) { var chId = equipped_items[ei]; preset[chId] = true; SAVESTrChOChampPresetData(); } t.paintTags(); }, paintTags: function () { for (ii in uW.kocChampionItems) { $("div#" + ii + ".champItem").children(".ioverlay").children(".tagBorderChamp").remove(); $("div#" + ii + ".champItem").children(".ioverlay").children(".presetBorderChamp").remove(); $("div#" + ii + ".champItem").children(".ioverlay").children(".activeBorderChamp").remove(); if ( STrChOChampPresetData.taggedItems[ii] ) { $("div#" + ii + ".champItem").children(".ioverlay").prepend("
    "); } $("div#" + ii + ".equipSelected ").children(".ioverlay").prepend("
    "); if ( STrChOChampPresetData.taggedItems01[ii] || STrChOChampPresetData.taggedItems02[ii] || STrChOChampPresetData.taggedItems03[ii] || STrChOChampPresetData.taggedItems04[ii] ) { $("div#" + ii + ".champItem").children(".ioverlay").prepend("
    "); } } $("#itemInvetory div").removeClass('STrChOBlueBorder'); $("#itemInvetory div").removeClass('STrChOYellowBorder'); for (ii in STrChOChampQueueData.list) { var list_item = STrChOChampQueueData.list[ii]; if (!list_item) continue; if (list_item.status != "complete") { var id = list_item.item; if (list_item.action == "upgrade") $("div#" + id + ".champItem").addClass('STrChOBlueBorder'); if (list_item.action == "enhance") $("div#" + id + ".champItem").addClass('STrChOYellowBorder'); } } }, removeAllTagItems: function () { var t = Tabs.champPresets; var taggedReverse = []; for (k in STrChOChampPresetData.taggedItems) taggedReverse.push(k); var len = taggedReverse.length; while (len--) { var chID = taggedReverse[len]; delete STrChOChampPresetData.taggedItems[chID]; } SAVESTrChOChampPresetData(); t.paintTags(); }, removeTagItem: function (itemId) { var t = Tabs.champPresets; if (STrChOChampPresetData.taggedItems[itemId]) { delete STrChOChampPresetData.taggedItems[itemId]; SAVESTrChOChampPresetData(); } t.paintTags(); }, addAllTagItems: function () { var t = Tabs.champPresets; t.removeAllTagItems(); for (chId in uW.kocChampionItems) { STrChOChampPresetData.taggedItems[chId] = true; } SAVESTrChOChampPresetData(); t.paintTags(); }, addTagItem: function (itemId) { var t = Tabs.champPresets; STrChOChampPresetData.taggedItems[itemId] = true; SAVESTrChOChampPresetData(); t.paintTags(); }, } Tabs.champPreview = { tabOrder: 207, tabLabel: 'PREVIEW', tabColor: 'brown', tabHeader: 'CHAMP HALL PREVIEW', champItemNamesForPreview: {1: 'weapon', 2: 'chest', 3: 'helm', 4: 'boots', 5: 'shield', 6: 'ring1', 7: 'ring2', 8: 'pendant', 9: 'cloak'}, champItemTypesForPreview: {'weapon': 1, 'chest': 2, 'helm':3, 'boots':4, 'shield': 5, 'ring1': 6, 'ring2': 7, 'pendant': 8, 'cloak': 9}, lastRing1: 0, lastRing2: 0, init: function (div) { var t = Tabs.champPreview; t.mydiv = div; }, hide: function () {}, show: function () { var t = Tabs.champPreview; var presetsTagList = ""; if (STrChOMaxChampions != 0) { for (var i = 1; i < STrChOMaxChampions + 1; i++) { presetsTagList += ''; } } var m = '
    ' + t.tabHeader + '
    '; m += '
    '; m += ''; m += ''; m += ''; m += ''; m += ''; m += '
    '; m += '  ||  '; // m += '(5 sec per card to load)  ||  '; m += ' '; m += ' '; m += '
    '; m += '  ||  '; m += ''; m += ''; m += ''; m += '
    '; m += '   '; m += '
    '; m += ' Preset Tag   '; m += '
    '; m += ' Preset Tag   '; m += '
    '; m += '
     PREVIEW STATS 
    '; m += '
    '; m += ''; m += ''; m += '
    '; m += '
    '; m += '
    '; m += '
    '; m += '
     PREVIEW CARDS 
    '; m += '
    '; m += ''; m += ''; var idx = 0; for (var itemIdx in t.champItemNamesForPreview) { if (idx % 3 == 0) m += ''; m += ''; idx += 1; } m += ''; m += '
    '; m += ''; m += ''; m += ''; m += ''; m += '
    ' + t.champItemNamesForPreview[itemIdx].toUpperCase() + '
    '; m += ''; m += '
    '; m += '
    '; m += '
    '; m += '
    '; t.mydiv.innerHTML = '
    ' + m + '
    '; var header = document.getElementsByClassName('STrChOHeader'); for (var head=0;head 0 ) ExportChampToExcel(true); else alert('Nothing To Export'); }, false); document.getElementById('STrChOChampPreviewPost').addEventListener('click', function () { if (STrChOChampPresetData.previewChamp.length == 0) return; t.postPreviewChampDetails(); }, false); document.getElementById('STrChOChampPreviewExport').addEventListener('click', function() { uriContent = 'data:application/octet-stream,' + encodeURIComponent(JSON.stringify(STrChOChampPresetData.previewChamp)); newWindow = window.open(uriContent, 'file.txt'); }, false); document.getElementById('STrChOChampPreviewExportLoad').addEventListener('click', function () { var fileInput = document.getElementById("STrChOChampPreviewExportLoadItem"); var files = fileInput.files; if (files.length==0) { alert('Please Select A File'); return; } var file = files[0]; var reader = new FileReader(); reader.onload = function (e) { var output = e.target.result; STrChOChampPresetData.previewChamp = JSON.parse(output); SAVESTrChOChampPresetData(); t.show(); alert('Preview Champ Now Loaded From File'); }; reader.readAsText(file); }, false); document.getElementById('STrChOChampPreviewLoadPresetTag').addEventListener('click', function () { var presetNum = document.getElementById('STrChOChampPreviewLoadPresetTagValue').value; var presetTag = getChampPresetObject(parseInt(presetNum)); t.resetPreview(); for (var p in presetTag) t.loadChampPreviewCard(p)//STrChOChampPresetData.previewChamp[p] = true; }, false); document.getElementById('STrChOChampPreviewCopyTo').addEventListener('click', function () { var presetNum = document.getElementById('STrChOChampPreviewCopyToValue').value; var presetTag = getChampPresetObject(parseInt(presetNum)); for (var p in presetTag) delete presetTag[p]; for (var idx = 0; idx < STrChOChampPresetData.previewChamp.length; idx++) { presetTag[STrChOChampPresetData.previewChamp[idx]] = true; } STrChOChampPresetData.presetNames[presetNum] = "PREVIEW"; document.getElementById('STrChOChampPresetName' + presetNum).value = "PREVIEW"; SAVESTrChOChampPresetData(); t.show(); }, false); document.getElementById('STrChOChampPreviewLoadPreset').addEventListener('click', function () { var t = Tabs.champPreview; var presetIndex = document.getElementById('STrChOChampPreviewLoadPresetValue').value; var championID = Seed.champion.champions[presetIndex-1].championId;// = 11007 var equipped_items = []; for (chId in uW.kocChampionItems) { if (uW.kocChampionItems[chId].equippedTo != championID) continue; equipped_items.push(chId); } var el = equipped_items.length; if (el > 0) { for (ei = 0; ei < el; ei++) { var chId = equipped_items[ei]; champItem = uW.kocChampionItems[chId]; t.loadChampPreviewCard(chId); } } }, false); }, buildChampPreviewValueDisplay: function () { var t = Tabs.champPreview; var elemSelect = null; for (var champType in t.champItemNamesForPreview) { //fill the default selection "--Items--" elemSelect = document.getElementById('STrChOChampPreviewValue' + t.champItemNamesForPreview[champType]); elemSelect.innerHTML = ''; elemSelect.options.add(new Option('--Items--', '0')); } for (var champId in uW.kocChampionItems) { //fill with all the champ cards var champItem = uW.kocChampionItems[champId]; if (champItem.type == 6) { elemSelect = document.getElementById('STrChOChampPreviewValuering1'); elemSelect.options.add(new Option(champItem.name, champId)); elemSelect = document.getElementById('STrChOChampPreviewValuering2'); elemSelect.options.add(new Option(champItem.name, champId)); } else { elemSelect = document.getElementById('STrChOChampPreviewValue' + t.champItemNamesForPreview[champItem.type]); elemSelect.options.add(new Option(champItem.name, champId)); } } for (var idx = 0; idx < STrChOChampPresetData.previewChamp.length; idx++) { //select and display the champion cards in the preview preset if (STrChOChampPresetData.previewChamp[idx] != 0) { var champItem = uW.kocChampionItems[STrChOChampPresetData.previewChamp[idx]]; if (champItem == null || !champItem) { STrChOChampPresetData.previewChamp[idx] = 0; SAVESTrChOChampPresetData(); continue; } if (idx == STrChORing1) t.lastRing1 = STrChOChampPresetData.previewChamp[idx]; if (idx == STrChORing2) t.lastRing2 = STrChOChampPresetData.previewChamp[idx]; var champCard = BuildChampCard(champItem); document.getElementById('STrChOChampPreviewValue' + t.champItemNamesForPreview[idx]).value = STrChOChampPresetData.previewChamp[idx]; document.getElementById('STrChOChampPreviewCard' + t.champItemNamesForPreview[idx]).innerHTML = champCard; } } }, postPreviewChampDetails: function () { var t = Tabs.champPreview; var previewPreset = []; for (var idx = 0; idx < STrChOChampPresetData.previewChamp.length; idx++) { if (STrChOChampPresetData.previewChamp[idx] != 0) previewPreset.push(STrChOChampPresetData.previewChamp[idx]); } var stringPreviewChamp = GenerateChampPresetEffectsString(previewPreset, true); if (stringPreviewChamp == "") { return; } else { var table = stringPreviewChamp.split("
    "); stringPreviewChamp = table.join("||"); stringPreviewChamp = stringPreviewChamp.replace("
    ", ":::. |CHAMP PREVIEW STATS:||"); stringPreviewChamp = stringPreviewChamp.replace("
    ", ""); stringPreviewChamp = stringPreviewChamp.replace("","").replace("","").replace("","").replace("","").replace("","").replace("","").replace("","").replace("",""); sendChat(stringPreviewChamp); } return; }, resetPreview: function () { var t = Tabs.champPreview; for (var idx = 0; idx < STrChOChampPresetData.previewChamp.length; idx++) STrChOChampPresetData.previewChamp[idx] = 0; SAVESTrChOChampPresetData(); for (var champType in t.champItemNamesForPreview) { document.getElementById('STrChOChampPreviewValue' + t.champItemNamesForPreview[champType]).value = 0; document.getElementById('STrChOChampPreviewCard' + t.champItemNamesForPreview[champType]).innerHTML = ''; } document.getElementById('STrChOChampPreviewDetails').innerHTML = t.getPreviewChampDetails(); }, clearChampPreviewCard: function(champId) { var t = Tabs.champPreview; for (var idx = 0; idx < STrChOChampPresetData.previewChamp.length; idx++) if (STrChOChampPresetData.previewChamp[idx] == champId) { STrChOChampPresetData.previewChamp[idx] = 0; SAVESTrChOChampPresetData(); for (var item in t.champItemTypesForPreview) { if (document.getElementById('STrChOChampPreviewValue' + item).value == champId) { document.getElementById('STrChOChampPreviewValue' + item).value = 0; document.getElementById('STrChOChampPreviewCard' + item).innerHTML = ''; if (item == 'ring1') t.lastRing1 = 0; if (item == 'ring2') t.lastRing2 = 0; if (item == 'ring1' || item == 'ring2') { var elemSelect = document.getElementById('STrChOChampPreviewValuering1'); for (var i = 0; i < elemSelect.length; i++) if (elemSelect.options[i].value == champId) $(elemSelect).remove(i); elemSelect = document.getElementById('STrChOChampPreviewValuering2'); for (var i = 0; i < elemSelect.length; i++) if (elemSelect.options[i].value == champId) $(elemSelect).remove(i); } else { var elemSelect = document.getElementById('STrChOChampPreviewValue' + item); for (var i = 0; i < elemSelect.length; i++) if (elemSelect.options[i].value == champId) $(elemSelect).remove(i); } return; } } return; } }, loadChampPreviewCard: function(champId, champTypeName) { var t = Tabs.champPreview; if (typeof(champTypeName) == 'undefined') champTypeName = ''; if (champId == 0 && champTypeName == "") return; var t = Tabs.champPreview; var champCard = ''; if (champId == 0) { document.getElementById('STrChOChampPreviewCard' + champTypeName).innerHTML = champCard; document.getElementById('STrChOChampPreviewValue' + champTypeName).value = champId; STrChOChampPresetData.previewChamp[t.champItemTypesForPreview[champTypeName]] = champId; } else { //champ id is NOT 0, so load the champ var champItem = uW.kocChampionItems[champId]; if (!champItem || champItem ==0) return; champCard = BuildChampCard(champItem); if (champTypeName != "") { //champ type name is known if (champTypeName == 'ring1') { if (document.getElementById('STrChOChampPreviewValuering2').value == champId) { document.getElementById('STrChOChampPreviewValuering1').value = t.lastRing1; } else { document.getElementById('STrChOChampPreviewCardring1').innerHTML = champCard; document.getElementById('STrChOChampPreviewValuering1').value = champId; STrChOChampPresetData.previewChamp[t.champItemTypesForPreview[champTypeName]] = champId; t.lastRing1 = champId; } } else if (champTypeName == 'ring2') { if (document.getElementById('STrChOChampPreviewValuering1').value == champId) { document.getElementById('STrChOChampPreviewValuering2').value = t.lastRing2; } else { document.getElementById('STrChOChampPreviewCardring2').innerHTML = champCard; document.getElementById('STrChOChampPreviewValuering2').value = champId; STrChOChampPresetData.previewChamp[t.champItemTypesForPreview[champTypeName]] = champId; t.lastRing2 = champId; } } else { document.getElementById('STrChOChampPreviewCard' + champTypeName).innerHTML = champCard; document.getElementById('STrChOChampPreviewValue' + champTypeName).value = champId; STrChOChampPresetData.previewChamp[t.champItemTypesForPreview[champTypeName]] = champId; } } else { //champ type name is not known so we get it from the champ.type if (champItem.type != 6) { //champ is not a ring champTypeName = t.champItemNamesForPreview[champItem.type]; document.getElementById('STrChOChampPreviewCard' + champTypeName).innerHTML = champCard; document.getElementById('STrChOChampPreviewValue' + champTypeName).value = champId; STrChOChampPresetData.previewChamp[t.champItemTypesForPreview[champTypeName]] = champId; } else { //most of the time this is coming from the "Send to Preview" option from the context menu if (document.getElementById('STrChOChampPreviewValuering1').value == champId) return; if (document.getElementById('STrChOChampPreviewValuering2').value == champId) return; if (document.getElementById('STrChOChampPreviewValuering1').value == 0) { //if ring1 is empty load it here document.getElementById('STrChOChampPreviewValuering1').value = champId; document.getElementById('STrChOChampPreviewCardring1').innerHTML = champCard; STrChOChampPresetData.previewChamp[t.champItemTypesForPreview['ring1']] = champId; t.lastRing1 = champId; } else if (document.getElementById('STrChOChampPreviewValuering2').value == 0) { //if ring1 was full and ring2 is empty load it here document.getElementById('STrChOChampPreviewValuering2').value = champId; document.getElementById('STrChOChampPreviewCardring2').innerHTML = champCard; STrChOChampPresetData.previewChamp[t.champItemTypesForPreview['ring2']] = champId; t.lastRing2 = champId; } else { //if both ring1 and ring2 are full, overwrite ring1 document.getElementById('STrChOChampPreviewValuering1').value = champId; document.getElementById('STrChOChampPreviewCardring1').innerHTML = champCard; STrChOChampPresetData.previewChamp[t.champItemTypesForPreview['ring1']] = champId; t.lastRing1 = champId; } } } } SAVESTrChOChampPresetData(); document.getElementById('STrChOChampPreviewDetails').innerHTML = t.getPreviewChampDetails(); }, getPreviewChampDetails: function () { var t = Tabs.champPreview; var previewPreset = []; for (var idx = 0; idx < STrChOChampPresetData.previewChamp.length; idx++) if (STrChOChampPresetData.previewChamp[idx] != 0) previewPreset.push(STrChOChampPresetData.previewChamp[idx]); var stringPreviewChamp = GenerateChampPresetEffectsString(previewPreset, true);//GenerateThronePresetEffectsString(previewPreset); if (stringPreviewChamp == "") { stringPreviewChamp = "No Stats To Preview"; } else { stringPreviewChamp = "PREVIEW STATS:\n" + stringPreviewChamp; } return stringPreviewChamp; }, } Tabs.champCompare = { tabOrder: 208, tabLabel: 'COMPARE', tabColor: 'brown', tabHeader: 'CHAMP HALL COMPARE', init: function (div) { var t = Tabs.champCompare; t.mydiv = div; var m = '
    ' + t.tabHeader + '
    '; m += '
    '; m += '
    '; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += '
    CARD 1CARD 2
    '; m += 'Item Type:'; m += ''; m += 'Item Type:'; m += '
    '; m += 'Champ Item:
    '; m += '
    '; m += 'Champ Item:
    '; m += '
    '; m += '
    '; m += '
    '; m += '
    '; m += '
    '; m += '
    '; m += '
    '; t.mydiv.innerHTML = '
    ' + m + '
    '; document.getElementById('STrChOChampCompareId1').addEventListener('change', function () { t.loadCard(this, 'STrChOChampCompareCard1'); }, false); document.getElementById('STrChOChampCompareId2').addEventListener('change', function () { t.loadCard(this, 'STrChOChampCompareCard2'); }, false); document.getElementById('STrChOChampCompareId1').addEventListener('keyup', function () { t.loadCard(this, 'STrChOChampCompareCard1'); }, false); document.getElementById('STrChOChampCompareId2').addEventListener('keyup', function () { t.loadCard(this, 'STrChOChampCompareCard2'); }, false); document.getElementById('STrChOChampCompareType1').addEventListener('change', function () { t.filterItems(this, 'STrChOChampCompareId1', 'STrChOChampCompareCard1'); }, false); document.getElementById('STrChOChampCompareType2').addEventListener('change', function () { t.filterItems(this, 'STrChOChampCompareId2', 'STrChOChampCompareCard2'); }, false); document.getElementById('STrChOChampCompareType1').addEventListener('keyup', function () { t.filterItems(this, 'STrChOChampCompareId1', 'STrChOChampCompareCard1'); }, false); document.getElementById('STrChOChampCompareType2').addEventListener('keyup', function () { t.filterItems(this, 'STrChOChampCompareId2', 'STrChOChampCompareCard2'); }, false); }, sendToCompare: function (Id) { var t = Tabs.champCompare; var champItem = uW.kocChampionItems[Id]; var card1 = document.getElementById('STrChOChampCompareId1'); var card2 = document.getElementById('STrChOChampCompareId2'); var obj = ''; if (card1.value == 0) obj = '1'; else if (card2.value == 0) obj = '2'; else obj = '1'; document.getElementById('STrChOChampCompareType' + obj).value = champItem.type; t.filterItems(document.getElementById('STrChOChampCompareType' + obj), ('STrChOChampCompareId' + obj), ('STrChOChampCompareCard' + obj)); document.getElementById('STrChOChampCompareId' + obj).value = Id; t.loadCard(document.getElementById('STrChOChampCompareId' + obj), ('STrChOChampCompareCard' + obj)); }, loadCard: function (objectItem, objectName) { var div = document.getElementById(objectName); if (objectItem.value == 0) div.innerHTML = ''; else div.innerHTML = BuildChampCard(uW.kocChampionItems[objectItem.value]); }, filterItems: function (objectItem, objectIdName, objectName) { document.getElementById(objectName).innerHTML = ''; var select = document.getElementById(objectIdName); select.value = 0; var m = ''; if (objectItem.value == 0) { for (var champId in uW.kocChampionItems) { m += ''; } } else { for (var champId in uW.kocChampionItems) { if (uW.kocChampionItems[champId].type == objectItem.value) m += ''; } } select.innerHTML = m; }, hide: function () {}, show: function () {}, } Tabs.champUniques = { tabOrder: 209, tabLabel: 'UNIQUES', tabColor: 'brown', tabHeader: 'CHAMP HALL UNIQUES', UniqueItems : null, selectedCard: 0, selectedType: 0, selectedLevel: 1, init: function (div) { var t = Tabs.champUniques; t.mydiv = div; var UniqueItems = {}; eval(GM_getResourceText("champion_uniques")); t.UniqueItems = UniqueItems; var m = '
    ' + t.tabHeader + '
    '; m += '
    '; m += '
    '; m += ''; m += ''; m += ''; m += ''; m += '
    Item Type:
    Champ Item:
    Level:
    '; m += '
    '; t.mydiv.innerHTML = '
    ' + m + '
    '; document.getElementById('STrChOChampUniqueType').addEventListener('change', function () { t.selectedType = document.getElementById('STrChOChampUniqueType').value; t.selectedCard = 0; t.FilterUniques(); document.getElementById('STrChOChampUniqueCard').innerHTML = ''; }, false); document.getElementById('STrChOChampUnique').addEventListener('change', function () { t.selectedCard = document.getElementById('STrChOChampUnique').value; if (t.selectedCard != 0) t.SwitchUnique(); }, false); document.getElementById('STrChOChampUniqueLevel').addEventListener('change', function () { t.selectedLevel = document.getElementById('STrChOChampUniqueLevel').value; if (t.selectedCard != 0) t.SwitchUnique(); }, false); }, hide: function () {}, show: function () {}, FilterUniques: function (cardType) { var t = Tabs.champUniques; var champList = document.getElementById('STrChOChampUnique'); champList.options.length = 0; var champOption = document.createElement('option'); champOption.text = '--Items--'; champOption.value = 0; champList.add(champOption); for (Id in t.UniqueItems) { var champItem = t.UniqueItems[Id]; if (champItem == null || !champItem) continue; if (champItem.Type == t.selectedType || t.selectedType == 0) { var champOption = document.createElement('option'); champOption.text = champItem.Name; champOption.value = Id; champList.add(champOption); } } }, SwitchUnique: function () { var t = Tabs.champUniques; var div = document.getElementById('STrChOChampUniqueCard'); var m = ConvertUniqueAndBuildChampCard(t.selectedCard, t.selectedLevel); m += t.GetUniqueInventory(t.selectedCard); div.innerHTML = m; var STrChOChampUseUnique = document.getElementById('STrChOChampUseUnique'); if (!STrChOChampUseUnique) return; STrChOChampUseUnique.addEventListener('click', function() { var uniqueId = this.getAttribute('uid'); var uniqueCount = parseInt(document.getElementById('STrChOChampUniqueCount').innerHTML); uniqueCount--; document.getElementById('STrChOChampUniqueCount').innerHTML = uniqueCount; CM.ItemController.use(uniqueId); }, false); }, GetUniqueInventory: function (uniqueId) { var m = '
    Champ Hall
    '; var champitems = {}; for (champId in uW.kocChampionItems) { var champItem = uW.kocChampionItems[champId]; if (champItem.unique == uniqueId) { if (champitems[champItem.level]) { champitems[champItem.level]++; } else { champitems[champItem.level] = 1; } } } var gotitem = false; for (lvl in champitems) { gotitem = true; m += 'You have '+champitems[lvl]+' at level '+lvl+'
    '; } if (!gotitem) m += 'You have none in your throne room.
    '; m += '
    Inventory
    '; var inventory = Seed.items['i'+uniqueId]; m += 'You have
    '+(inventory?inventory:'0')+'
    in your inventory.'; if ((inventory?inventory:0) != 0) m += '
    Add To Champ Hall'; return m; }, } Tabs.STrChOLog = { tabOrder: 300, tabLabel: 'LOGS', tabColor: 'blue', tabHeader: 'LOGGING RECORDS', init: function (div) { var t = Tabs.STrChOLog; t.mydiv = div; //t.buildLogDisplay(); }, hide: function () {}, show: function () { var t = Tabs.STrChOLog; t.buildLogDisplay(); }, buildLogDisplay: function () { var t = Tabs.STrChOLog; var m = '
    ' + t.tabHeader + '
    '; m += '
    '; m += '  Max Log Entries Per Section       '; m += ''; m += '
    '; m += '
     SUCCESS LOG 
    '; m += '
    '; m += ''; if (STrChOLogData.successLog.length == 0) { m += ''; } else { m += ''; for (logIndex=0; logIndex < STrChOLogData.successLog.length; logIndex++) { var logVar = STrChOLogData.successLog[logIndex]; var logDate = logVar.split(",")[0]; var logMsg = logVar.split(",")[1]; m += ''; m += ''; m += ''; m += ''; } } m += '
    NO LOG DATA
    ' + logDate + '' + logMsg + '
    '; m += '
    '; m += '
     ACTION LOG 
    '; m += '
    '; m += ''; if (STrChOLogData.actionLog.length == 0) { m += ''; } else { m += ''; for (logIndex=0; logIndex < STrChOLogData.actionLog.length; logIndex++) { var logVar = STrChOLogData.actionLog[logIndex]; var logDate = logVar.split(",")[0]; var logMsg = logVar.split(",")[1]; m += ''; m += ''; m += ''; m += ''; } } m += '
    NO LOG DATA
    ' + logDate + '' + logMsg + '
    '; m += '
    '; m += '
     SALVAGE LOG 
    '; m += '
    '; m += ''; if (STrChOLogData.salvageLog.length == 0) { m += ''; } else { m += ''; for (logIndex=0; logIndex < STrChOLogData.salvageLog.length; logIndex++) { var logVar = STrChOLogData.salvageLog[logIndex]; var logDate = logVar.split(",")[0]; var logMsg = logVar.split(",")[1]; m += ''; m += ''; m += ''; m += ''; } } m += '
    NO LOG DATA
    ' + logDate + '' + logMsg + '
    '; m += '
    '; t.mydiv.innerHTML = '
    ' + m + '
    '; var header = document.getElementsByClassName('STrChOHeader'); for (var head=0;head= STrChOLogData.maxEntries) STrChOLogData.successLog.pop(); } else if (logValue == logValues.SALVAGE) { while (STrChOLogData.salvageLog.length >= STrChOLogData.maxEntries) STrChOLogData.salvageLog.pop(); } else if (logValue == logValues.ACTION) { while (STrChOLogData.actionLog.length >= STrChOLogData.maxEntries) STrChOLogData.actionLog.pop(); } else return; }, addLogEntry: function (logValue, msg) { var t = Tabs.STrChOLog; if (logValue == logValues.SUCCESS) { if (STrChOLogData.successLog.length >= STrChOLogData.maxEntries) t.removeLogEntry(logValue); STrChOLogData.successLog.unshift(t.createTimeStamp() + "," + msg); } else if (logValue == logValues.SALVAGE) { if (STrChOLogData.salvageLog.length >= STrChOLogData.maxEntries) t.removeLogEntry(logValue); STrChOLogData.salvageLog.unshift(t.createTimeStamp() + "," + msg); } else if (logValue == logValues.ACTION) { if (STrChOLogData.actionLog.length >= STrChOLogData.maxEntries) t.removeLogEntry(logValue); STrChOLogData.actionLog.unshift(t.createTimeStamp() + "," + msg); } else return; SAVESTrChOLogData(); }, createTimeStamp: function () { var d = new Date(); var ts = d.toDateString().substring(3,10) + " " + d.toTimeString().substring(0,8); return ts; }, } Tabs.STrChOOptions = { tabOrder: 301, tabLabel: 'OPTIONS', tabColor: 'blue', tabHeader: 'STrChO OPTIONS', init: function (div) { var t = Tabs.STrChOOptions; t.mydiv = div; var m = '
    ' + t.tabHeader + '
    '; m += ''; m += ''; m += ' '; m += ' '; m += '
    Disable Failure Animation (Big Red X)
    Enable Draggable Throne Room Items
    Show Jewels Icon In Throne Room Inventory
    '; m += '
     SALVAGER OPTIONS 
    '; m += '
    '; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += '
    Put Aetherstones:
    When Full, Put Aetherstones In Any City.
            Maximum Number Of Aetherstones:
            Overflow Method:
    Load Throne Room Salvager Settings From Domain Number:
    Load Champ Hall Salvager Settings From Domain Number:
    Upgrade Items To +1 Before Deleting.
            Maximum Quality: (Throne Room Only)
    Upgrade Items To +1 On Manual Delete. (Throne Room Only)
    Add Items To Throne Upgrader Automatically When A Rule Is Matched
    Add Items To Champ Upgrader Automatically When A Rule Is Matched
    '; m += '
    '; m += '
     ENHANCE/UPGRADE OPTIONS 
    '; m += '
    '; m += ''; m += ''; m += ''; m += ''; m += ''; m += ' '; m += ''; m += ' '; m += ' '; m += ''; m += ' '; m += ' '; m += ''; m += ' '; m += ' '; //m += ' '; m += ' '; m += ' '; m += ' '; m += ' '; m += ' '; m += '
    Use Aetherstones:
    Retry interval (seconds):
    When Full, Use Aetherstones From Any City.
            Minimum Number Of Aetherstones:
    Whisper Myself Successful Upgrades/Enhancements
    Send To Inbox Successful Upgrades/Enhancements
    Disable Manual Upgrades If Less Than Aetherstone
    Prevent Automatic Upgrade Token Selection (Throne Room Only)
    Remove Master & Lucky Tokens From Upgrade Panel (Throne Room Only)
    Remove All Other Tokens From Upgrade Panel (Not LLT Or Stones) (Throne Room Only)
    Use Next Masters On Manual Upgrade (Overrides Above 2 Options If Checked, Throne Room Only)
    Remove Forged Tokens From Upgrade Panel (Champ Hall Only)
    Remove All Other Tokens From Upgrade Panel (Champ Hall Only)
    Use Next Forged On Manual Upgrade (Overrides Above 2 Options If Checked, Champ Hall Only)
    Add Button For Combined Upgrade/Enhancement (Throne Room Only)
    Remove Salvage Button When Item Is Equipped In Any Slot
    Remove Mass Salvage Button
    Remove Forced Salvage Button (Throne Room Only)
    Remove Salvage Button For 1st Throne Room Items
    Remove Salvage Button For 1st Champion Items
    '; m += '
    '; t.mydiv.innerHTML = '
    ' + m + '
    '; document.getElementById('STrChOOptionsSaveSettings').addEventListener('click', function () { SaveSettingsToFile(STrChOGeneralOptions); }, false); document.getElementById('STrChOOptionsLoadSettings').addEventListener('click', function () { var loader = document.getElementById('STrChOSettingsFile'); loader.addEventListener('change', function () { LoadSettingsFromFile(STrChOGeneralOptions, Tabs.STrChOOptions); }, false); loader.click(); }, false); var header = document.getElementsByClassName('STrChOHeader'); for (var head=0;head'; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += '
    EffectsQuality
    '; for (fx=0;fx' + t.jewelEffects[fx] + '
    '; } m += '
    '; for (jwl=0;jwl' + String(STrChOJewelQualities[jwl]).capitalizeFirstLetter() + '
    '; } m += '
    Buff  Debuff
    '; m += '
     JEWEL INVENTORY 
    '; m += '
    '; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += '
    EffectQualityTypeAmountIn Stock
    '; m += '
    '; m += ''; m += ''; m += ''; m += '
    '; m += '
    '; m += '
    '; m += ' (new jewels found may take a couple seconds to add to total)     Total:
    '; m += '
    '; t.mydiv.innerHTML = '
    ' + m + '
    '; var header = document.getElementsByClassName('STrChOHeader'); for (var head=0;head 0) buffed = false; var effect = CM.ThroneController.getEffectName(jewel_item.id); var qty = CM.ThroneController.getJewelQuantity(jewel_item); var qualityName = CM.ThroneController.jewelQualityName(jewel_item.quality); var tmpEffect = CM.ThroneController.getEffectName(jewel_item.id); tmpEffect = tmpEffect.split(' ').join(''); tmpEffect = tmpEffect.split('.').join(''); if (!(document.getElementById('STrChOJewelEffect' + tmpEffect).checked)) continue; if (!(document.getElementById('STrChOJewelQuality' + qualityName).checked)) continue; if (!(document.getElementById('STrChOJewelBuff' + buffed).checked)) continue; inv += '' + effect + ''; inv += '' + qualityName + ''; inv += '' + (buffed ? 'Buff ' : 'Debuff') + ''; inv += '' + amt + '%'; inv += '' + qty + ''; } var jwl_inv = document.getElementById('STrChOJewelInventory').tBodies[0]; jwl_inv.innerHTML = inv; var jwl_total = document.getElementById('STrChOJewelTotal'); jwl_total.innerHTML = t.totalInventroy; }, buildJewelList: function () { var t = Tabs.STrChOJewels; t.inventoryList = []; t.totalInventroy = 0; for (var jwl=0;jwl'; m += ''; m += ''; m += ''; m += '
    '; // m += '      '; //m += '      '; m += '
    In Hounour Of

    Mark Branscombe (TCO)

    Phil Cazz (MadMaxx)

    That Paved The Way For Organizers Like This Thanks Guys !!!
    '; m += '
    '; m += '
     WHATS NEW 
    '; m += '
    '; m += ''; m += NewsItemRow('2020'); m += NewsItemRow('Spawn STrChO (Throne And Champ Organizer)'); m += '
    '; m += '
    '; m += ''; m += '
    '; m += ''; t.mydiv.innerHTML = '
    ' + m + '
    '; var header = document.getElementsByClassName('STrChOHeader'); for (var head=0;head'; m += '
    '; m += '';//cellpadding=0 cellspacing=0 width=100%>'; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += ''; m += '
    STrChO (Throne And Champ Organizer)
    Demon Spawn koc bot
    Tampermonkey
    Throne Room Spreadsheet
    Google Translator for Firefox
    Tab Reloader for Chrome
    Tab Reloader for Firefox
    '; m += '
    '; m += '
     TUTORIAL LINKS 
    '; m += '
    '; m += ''; m += ''; m += ''; m += '
    '; m += 'Preview/Preset/Repair Tabs Tutorial'; m += '
    '; m += 'Throne Organizer-Preview Tutorial'; m += '
    '; m += '
    '; t.mydiv.innerHTML = '
    ' + m + '
    '; var STrChOLinkClick = function() { var id = this.getAttribute("id"); var linkNumber = id.split("STrChOLink")[1]; var divLinkName = 'STrChOLink' + linkNumber + 'data'; var divLink = document.getElementById(divLinkName); var hidden = (divLink.style.display == "none"); var links = document.getElementsByClassName("STrChOLinkData"); for (i = 1; i < links.length + 1; i++) { document.getElementById('STrChOLink' + i + 'data').style.display = "none"; } if (hidden) { divLink.style.display = "block"; } else { divLink.style.display = "none"; } }; var STrChOLinksClass = document.getElementsByClassName("STrChOLinksClass"); for(var i = 0; i < STrChOLinksClass.length; i++){ STrChOLinksClass[i].addEventListener('click', STrChOLinkClick, false); }; var header = document.getElementsByClassName('STrChOHeader'); for (var head=0;head'; m += '
    '; m +='Hi there, thanks for taking the time to consider donating. I never ask for handouts, although a thank you is nice. And sometimes a monetary thank you is nicer.'; m +='Because it lets me continue working on the KoC script. You may or may not spend a few dollars on gems in support of the game you love. Maybe you can send a '; m +='little our way and support the coders who make your life a bit easier by automating it? If you would like to donate, please press the donate button'; m +='below and I will be a very happy coder! All donations are processed through PayPal on my behalf. Thanks again for your support, without people like you, I would lose interest in this game'; m += '
    '; m += '
    '; m += ''; m += '
    '; t.mydiv.innerHTML = '
    ' + m + '
    '; document.getElementById('STrChOPayPalLink').setAttribute('href', 'https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=CB2MLZCP8FPE8'); document.getElementById('STrChOPayPalLink').setAttribute('target', '_blank'); document.getElementById('STrChOPayPalImage').setAttribute('src', 'https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif'); document.getElementById('STrChOPayPalImage').setAttribute('alt', 'donate'); }, hide: function () {}, show: function () {}, } /***********************************************************************************************************************************************************************************/ function QueueItem() { //class definition for upgrade queue items this.item = 0; this.action = "upgrade"; this.level = 1; this.status = "not started"; this.triesTotal = 0; this.triesThis = 0; this.triesLast = 0; this.lastUpgrade = "none"; this.upgrades = []; } function ThroneRule(type, faction, conditions, advancedrule) { //class definition for rules and conditions this.type = type; this.faction = faction; this.advancedrule = advancedrule; if (conditions) this.conditions = conditions; else this.conditions = []; this.ThroneAddCondition = ThroneAddCondition; this.ThroneApplyRule = ThroneApplyRule; } function ThroneCloneRule(rule) { this.type = rule.type; this.faction = rule.faction; this.advancedrule = rule.advancedrule; this.conditions = []; if (rule.conditions) this.conditions = rule.conditions; this.ThroneAddCondition = ThroneAddCondition; this.ThroneApplyRule = ThroneApplyRule; } function ThroneAddCondition(c) { this.conditions.push(c); } function ThroneApplyRule(id) { var ThroneItem = uW.kocThroneItems[id]; if (this.type != 'any' && (this.type != ThroneItem.type)) return false; if (this.faction != 'any' && (this.faction != ThroneItem.faction)) return false; for (r in this.conditions) { if (!this.conditions[r].ThroneCheckCondition(id)) return false; } return true; } function ThroneCondition(mustHave, number, effect, buffType, slots ) { this.mustHave = mustHave; this.number = number; this.effect = effect; this.buffType = buffType; this.slots = slots; this.ThroneCheckCondition = ThroneCheckCondition; } function ThroneCheckCondition(id) { var numberFound = 0; var effectsFound = false; // get card var ThroneItem = uW.kocThroneItems[id]; if (!ThroneItem) return false; // for loop for stat // count up occurances for (i in ThroneItem.effects) { var CardEffect = CM.thronestats.effects[ThroneItem.effects[i].id][1]; var slotid = i.split("slot")[1]; if (!this.slots[slotid-1]) continue; var eff = this.effect + " "; if (CardEffect.indexOf(" Debuff") < 0) CardEffect += " "; if (!CardEffect.startsWith(eff)) continue; // special rule for Chance to Find Items if ( (CardEffect == "Chance to Find Items ") && (CardEffect != eff ) ) continue; // If we do not care about buff/debuff then we are done if (this.buffType == "e") { numberFound++; } else { // Does the description end with a Debuff if (CardEffect.endsWith(" Debuff")) { // Are we looking for a debuff if (this.buffType == "d") numberFound++; } else { if (this.buffType == "b") numberFound++; } } } if ( numberFound >= this.number) effectsFound = true; if (this.mustHave != "false") return effectsFound; else return (!effectsFound); } function ChampRule(type, faction, conditions, advancedrule) { //class definition for rules and conditions this.type = type; this.faction = faction; this.advancedrule = advancedrule; if (conditions) this.conditions = conditions; else this.conditions = []; this.ChampAddCondition = ChampAddCondition; this.ChampApplyRule = ChampApplyRule; } function ChampCloneRule(rule) { this.type = rule.type; this.faction = rule.faction; this.advancedrule = rule.advancedrule; this.conditions = []; if (rule.conditions) this.conditions = rule.conditions; this.ChampAddCondition = ChampAddCondition; this.ChampApplyRule = ChampApplyRule; } function ChampAddCondition(c) { this.conditions.push(c); } function ChampApplyRule(id) { var champItem = uW.kocChampionItems[id]; if (this.type != "any" && (champItemTypes[this.type] != champItem.type)) return false; if (this.faction != "any" && (this.faction != champItem.faction)) return false; for (r in this.conditions) { if (!this.conditions[r].ChampCheckCondition(id)) return false; } return true; } function ChampCondition(mustHave, number, effect, buffType, slots ) { this.mustHave = mustHave; this.number = number; this.effect = effect; this.buffType = buffType; this.slots = slots; this.ChampCheckCondition = ChampCheckCondition; } function ChampCheckCondition(id) { var numberFound = 0; var effectsFound = false; // get card var champItem = uW.kocChampionItems[id]; if (!champItem) return false; // for loop for stat // count up occurances for (i in champItem.effects) { var id = champItem.effects[i].id; var card_effect = ""; card_effect = uW.g_js_strings.effects["name_" + id]; var slotid = +i; if (!this.slots[slotid-1]) continue; var eff = this.effect + " "; if (card_effect.indexOf(" Debuff") < 0) card_effect += " "; if (!card_effect.startsWith(eff)) continue; // If we do not care about buff/debuff then we are done if (this.buffType == "e") { numberFound++; } else { // Does the description end with a Debuff if (card_effect.endsWith(" Debuff")) { // Are we looking for a debuff if (this.buffType == "d") { numberFound++; } } else { if (this.buffType == "b") { numberFound++; } } } } if ( numberFound >= this.number) { effectsFound = true; } if (this.mustHave != "false") return effectsFound; else return (!effectsFound); } function ReplaceToolTips() { var TToldF = CM.ThroneView.boostsTooltip; var ThroneToolTip = function (L, E, K) { var J = new Array(); var slot = L.innerHTML; slot = slot.replace("","").replace("","").trim(); if (L.id == "maparea_boosts_throneroom") slot = Seed.throne.activeSlot; J.push("
    Throne Room:
    "); J.push("(" + STrChOThronePresetData.presetNames[slot] + ")"); J.push("
    "); var equipped_items = Seed.throne.slotEquip[slot]; if (equipped_items.length > 0) { J.push(GenerateThronePresetEffectsString(equipped_items, true)); } else { J.push("
    This Preset has no Items equipped
    "); } J.push("
    "); if (L.id == "maparea_boosts_throneroom") { uW.showTooltip(J.join(""), L, E, K) } else { uW.Tooltip.show(E, J.join(""), [10, 10], null) } } CM.ThroneView.boostsTooltip = ThroneToolTip; } function alterChampHall() { function addNewHover() { $(".Champion div[hover_id]").unbind("hover").hover(function () { if ($(this).hasClass("edit_container") && $(this).attr("champion_idx")) { $(".mini_tooltip").remove(); $(".tooltip").remove(); var champSlot = $(this).attr("champion_idx"); var topVal = parseInt(champSlot) * 100 + 47; var leftVal = 150; champSlot++; var champId = getChampID(champSlot); var D = []; for (var chId in uW.kocChampionItems) if (uW.kocChampionItems[chId].equippedTo == champId) D.push(chId); var champStats = GenerateChampPresetEffectsString(D, false); champStats = champStats.split('||').join('
    '); D = []; D.push("Champ Hall Slot #" + champSlot); D.push(getChampName(champSlot)); if (STrChOChampPresetData.showChampName) D.push("(" + STrChOChampPresetData.presetNames[champSlot-1] + ")"); if (STrChOChampPresetData.showChampMight) D.push(getChampMight()); D.push(champStats); var champText = D.join('
    '); $(".Champion").append('
    ' + champText + "
    "); $(this).append('
    ') this.addEventListener('mouseout', function () { $(".mini_tooltip").remove(); $(".tooltip").remove(); }); } }); } function addPostChamp() { var button_sizes = '38px'; var assign_button = document.getElementsByClassName('assign_city')[0]; assign_button.style.width = button_sizes; assign_button.className += ' divNoWrap'; assign_button.parentElement.className += ' divNoWrap'; if (!document.getElementById('STrChOHideShow')) { var STrChO_button = document.createElement('div'); STrChO_button.className = 'buttonv2 brown divNoWrap'; STrChO_button.innerHTML = 'STrChO'; STrChO_button.id = 'STrChOHideShow'; STrChO_button.style.width = button_sizes; assign_button.parentElement.appendChild(STrChO_button); STrChO_button.addEventListener('click', function () { eventHideShow(); }, false); } if (!document.getElementById('STrChOPostChamp')) { var post_button = document.createElement('div'); post_button.className = 'buttonv2 red divNoWrap'; post_button.innerHTML = 'POST'; post_button.id = 'STrChOPostChamp'; post_button.style.width = button_sizes; assign_button.parentElement.appendChild(post_button); post_button.addEventListener('click', function () { var champDiv = document.getElementsByClassName('name active')[0]; var champClass = champDiv.className; var champIndex = parseInt(champClass.replace(' name active', '').replace('name', '')); postChampSlot(champIndex+1); }, false); } } function addMenus() { $(".champItem").click(function (A) { CardContextMenu(this, uW.kocChampionItems[this.id], false); }); } function addBorders() { Tabs.champPresets.paintTags(); var dv = document.getElementById('STrChOChampMight') if (!dv) { var modContainers = document.getElementsByClassName("cmModalContainer Champion"); if (modContainers == null || !modContainers) return; var modContainer = modContainers[0]; if (modContainer == null || !modContainer) return; var elem = modContainer.getElementsByClassName("primarytitlebar")[0]; dv = document.createElement('div'); dv.id = "STrChOChampMight"; dv.style.whiteSpace='nowrap'; dv.style.position='absolute'; dv.style.overflow='visible'; dv.style.top = '15px'; dv.style.left = '435px'; dv.style.zIndex=2005; elem.insertBefore(dv, elem.childNodes[1].nextSibling); } dv.innerHTML = getChampMight(); } var oldOpen = CM.ChampionModalController.open; CM.ChampionModalController.open = function (j) { oldOpen(j); addBorders(); addPostChamp(); addNewHover(); } var rfi = CM.ChampionModalView.renderFilteredItems; CM.ChampionModalView.renderFilteredItems = function () { rfi(); addMenus(); addBorders(); } var rdr = CM.ChampionModalView.render; CM.ChampionModalView.render = function (ab,aa) { rdr(ab,aa); addMenus(); addBorders(); addPostChamp(); addNewHover(); } var oldUpgEnh = CM.ChampionModalView.renderUpgEnh; CM.ChampionModalView.renderUpgEnh = function (ag, aa) { oldUpgEnh(ag, aa); var NextClick = document.getElementById('upgEnhStatsTarget'); var t = Tabs.champOrganizer; t.panelId = ag; //this is the champ item ID t.panelNextLevel = uW.kocChampionItems[ag].level + 1; NextClick.removeEventListener("click", t.showNextChampLevel); var Locked = document.getElementById('chLockedStatIcon'); if (Locked != null) return; NextClick.addEventListener("click", t.showNextChampLevel); var champUpgTab = document.getElementById('champUpgTab'); if (!champUpgTab) return; var clearForgedTokens = function () { // remove options for tokens var removeItems = [ uW.ksoItems[21093].name, //45s uW.ksoItems[21092].name, //44s uW.ksoItems[21091].name, //43s uW.ksoItems[21090].name, //42s uW.ksoItems[21089].name, //41s uW.ksoItems[21088].name, //40s uW.ksoItems[21087].name, //39s uW.ksoItems[21086].name, //38s uW.ksoItems[21085].name, //37s uW.ksoItems[21084].name, //36s uW.ksoItems[21083].name, //35s uW.ksoItems[21082].name, //34s uW.ksoItems[21081].name, //33s uW.ksoItems[21080].name, //32s uW.ksoItems[21079].name, //31s uW.ksoItems[21078].name, //30s uW.ksoItems[21077].name, //29s uW.ksoItems[21076].name, //28s uW.ksoItems[21075].name, //27s uW.ksoItems[21074].name, //26s uW.ksoItems[21073].name, //25s uW.ksoItems[21072].name, //24s uW.ksoItems[21071].name, //23s uW.ksoItems[21070].name, //22s uW.ksoItems[21069].name, //21s uW.ksoItems[21068].name, //20s uW.ksoItems[21067].name, //19s uW.ksoItems[21066].name, //18s uW.ksoItems[21065].name, //17s uW.ksoItems[21064].name, //16s uW.ksoItems[21063].name, //15s uW.ksoItems[21062].name, //14s uW.ksoItems[21061].name, //13s uW.ksoItems[21060].name, //12s uW.ksoItems[21059].name, //11s uW.ksoItems[21055].name, //10s uW.ksoItems[21054].name, //9s uW.ksoItems[21057].name, //8s uW.ksoItems[21053].name, //7s uW.ksoItems[21056].name //6s ]; $(document.querySelector("#upgEnhBuffSelect")).children("option").each(function () { if ($.inArray($(this).text(), removeItems) > -1) $(this).remove(); }); } var clearOtherForgedTokens = function () { // remove options for tokens var removeItems = [uW.ksoItems[21051].name, // Journeyman Smith's Token uW.ksoItems[21052].name, // Smith's Token uW.ksoItems[21058].name // Expert Smith's Token ]; $(document.querySelector("#upgEnhBuffSelect")).children("option").each(function () { if ($.inArray($(this).text(), removeItems) > -1) $(this).remove(); }); } if (champUpgTab.className == 'upgEnhTab active') { if (STrChOGeneralOptions.useForgedTokens) autoSelectForged(); if (STrChOGeneralOptions.removeForgedTokens && !STrChOGeneralOptions.useForgedTokens) clearForgedTokens(); if (STrChOGeneralOptions.removeOtherForgedTokens && !STrChOGeneralOptions.useForgedTokens) clearOtherForgedTokens(); } } }; var ThroneOldRenderMenu = CM.ContextualMenuThrone.renderMenu; function installThroneHandlerFunctions() { // add some new functionality here ... var oldThroneRenderPanel = CM.ThronePanelView.renderPanel; var newThroneRenderPanel = function (v1, v2) { oldThroneRenderPanel(v1, v2); // save off this data ... Tabs.throneOrganizer.panelId = v2.id; Tabs.throneOrganizer.panelType = v1; Tabs.throneOrganizer.panelNextLevel = 2; var clearMasterTokens = function () { // remove options for tokens var removeItems = [uW.ksoItems[20012].name, // +3 master uW.ksoItems[20013].name, // +5 master uW.ksoItems[20014].name, // +7 uW.ksoItems[20015].name, // +9 uW.ksoItems[20016].name, // +10 uW.ksoItems[20017].name, // +11 uW.ksoItems[20018].name, // +12 uW.ksoItems[20020].name, // +13 uW.ksoItems[20021].name, // +14 uW.ksoItems[20023].name, // +15 uW.ksoItems[20024].name, // +16 uW.ksoItems[20025].name, // +17 uW.ksoItems[20026].name, // +18 uW.ksoItems[20027].name, // +19 uW.ksoItems[20028].name, // +20 uW.ksoItems[20029].name, // +21 uW.ksoItems[20030].name, // +22 uW.ksoItems[20031].name, // +23 uW.ksoItems[20032].name, // +24 uW.ksoItems[20033].name, // +25 uW.ksoItems[20034].name, // +26 uW.ksoItems[20035].name, // +27 uW.ksoItems[20036].name, // +28 uW.ksoItems[20037].name, // +29 uW.ksoItems[20038].name, // +30 uW.ksoItems[20039].name, // +31 uW.ksoItems[20040].name, // +32 master uW.ksoItems[20041].name, // +33master uW.ksoItems[20042].name, // +34 uW.ksoItems[20043].name, // +35 uW.ksoItems[20044].name, // +36 uW.ksoItems[20045].name, // +37 uW.ksoItems[20046].name, // +38 uW.ksoItems[20047].name, // +39 uW.ksoItems[20048].name, // +40 uW.ksoItems[20049].name, // +41 uW.ksoItems[20050].name, // +42 uW.ksoItems[20051].name, // +43 uW.ksoItems[20052].name, // +44 uW.ksoItems[20053].name, // +45 uW.ksoItems[20054].name, // +46 uW.ksoItems[20055].name, // +47 uW.ksoItems[20056].name, // +48 uW.ksoItems[20057].name, // +49 uW.ksoItems[20058].name, // +50 uW.ksoItems[20059].name, // +51 uW.ksoItems[20060].name // +52 ]; $(document.querySelector("#buffDropDown")).children("option").each(function () { if ($.inArray($(this).text(), removeItems) > -1) $(this).remove(); }); $(document.querySelector("#thronePanelBuffIcon")).removeClass().addClass('icon').addClass('i0'); if (!STrChOGeneralOptions.useMastersTokens) $(document.querySelector("#thronePanelBuffPrice")).children("span.items").html(''); } var clearOtherTokens = function () { // remove options for tokens var removeItems = [uW.ksoItems[20006].name, // lucky token uW.ksoItems[20007].name, // common master uW.ksoItems[20008].name, // uncommon uW.ksoItems[20009].name, // rare uW.ksoItems[20010].name, // epic uW.ksoItems[20011].name, // wondrous uW.ksoItems[20019].name, // super lucky token uW.ksoItems[20022].name, // apprentice token uW.ksoItems[20101].name, //Fortune's Token +19 uW.ksoItems[20102].name, //Opportunity's Token +19 uW.ksoItems[20103].name, //Prospector's Token +19 uW.ksoItems[20104].name, //Fortune's Token +20 uW.ksoItems[20105].name, //Opportunity's Token +20 uW.ksoItems[20106].name, //Prospector's Token +20 uW.ksoItems[20107].name, //Fortune's Token +21 uW.ksoItems[20108].name, //Opportunity's Token +21 uW.ksoItems[20109].name, //Prospector's Token +21 uW.ksoItems[20110].name, //Fortune's Token +22 uW.ksoItems[20111].name, //Opportunity's Token +22 uW.ksoItems[20112].name, //Prospector's Token +22 uW.ksoItems[20113].name, //Fortune's Token +23 uW.ksoItems[20114].name, //Opportunity's Token +23 uW.ksoItems[20115].name, //Prospector's Token +23 uW.ksoItems[20116].name, //Fortune's Token +24 uW.ksoItems[20117].name, //Opportunity's Token +24 uW.ksoItems[20118].name, //Prospector's Token +24 uW.ksoItems[20119].name, //Fortune's Token +25 uW.ksoItems[20120].name, //Opportunity's Token +25 uW.ksoItems[20121].name, //Prospector's Token +25 uW.ksoItems[20122].name, //Fortune's Token +26 uW.ksoItems[20123].name, //Opportunity's Token +26 uW.ksoItems[20124].name, //Prospector's Token +26 uW.ksoItems[20125].name, //Fortune's Token +27 uW.ksoItems[20126].name, //Opportunity's Token +27 uW.ksoItems[20127].name, //Prospector's Token +27 uW.ksoItems[20128].name, //Fortune's Token +28 uW.ksoItems[20129].name, //Opportunity's Token +28 uW.ksoItems[20130].name, //Prospector's Token +28 uW.ksoItems[20131].name, //Fortune's Token +29 uW.ksoItems[20132].name, //Opportunity's Token +29 uW.ksoItems[20133].name, //Prospector's Token +29 uW.ksoItems[20134].name, //Fortune's Token +30 uW.ksoItems[20135].name, //Opportunity's Token +30 uW.ksoItems[20136].name, //Prospector's Token +30 uW.ksoItems[20137].name, //Fortune's Token +31 uW.ksoItems[20138].name, //Opportunity's Token +31 uW.ksoItems[20139].name, //Prospector's Token +31 uW.ksoItems[20140].name, //Fortune's Token +32 uW.ksoItems[20141].name, //Opportunity's Token +32 uW.ksoItems[20142].name, //Prospector's Token +32 uW.ksoItems[20143].name, //Fortune's Token +33 uW.ksoItems[20144].name, //Opportunity's Token +33 uW.ksoItems[20145].name, //Prospector's Token +33 uW.ksoItems[20146].name, //Fortune's Token +34 uW.ksoItems[20147].name, //Opportunity's Token +34 uW.ksoItems[20148].name, //Prospector's Token +34 uW.ksoItems[20149].name, //Fortune's Token +35 uW.ksoItems[20150].name, //Opportunity's Token +35 uW.ksoItems[20151].name, //Prospector's Token +35 uW.ksoItems[20152].name, //Fortune's Token +36 uW.ksoItems[20153].name, //Opportunity's Token +36 uW.ksoItems[20154].name, //Prospector's Token +36 uW.ksoItems[20155].name, //Fortune's Token +37 uW.ksoItems[20156].name, //Opportunity's Token +37 uW.ksoItems[20157].name, //Prospector's Token +37 uW.ksoItems[20158].name, //Fortune's Token +38 uW.ksoItems[20159].name, //Opportunity's Token +38 uW.ksoItems[20160].name, //Prospector's Token +38 uW.ksoItems[20161].name, //Fortune's Token +39 uW.ksoItems[20162].name, //Opportunity's Token +39 uW.ksoItems[20163].name, //Prospector's Token +39 uW.ksoItems[20164].name, //Fortune's Token +40 uW.ksoItems[20165].name, //Opportunity's Token +40 uW.ksoItems[20166].name, //Prospector's Token +40 uW.ksoItems[20167].name, //Fortune's Token +41 uW.ksoItems[20168].name, //Opportunity's Token +41 uW.ksoItems[20169].name, //Prospector's Token +41 uW.ksoItems[20170].name, //Fortune's Token +42 uW.ksoItems[20171].name, //Opportunity's Token +42 uW.ksoItems[20172].name, //Prospector's Token +42 uW.ksoItems[20173].name, //Fortune's Token +43 uW.ksoItems[20174].name, //Opportunity's Token +43 uW.ksoItems[20175].name, //Prospector's Token +43 uW.ksoItems[20176].name, //Fortune's Token +44 uW.ksoItems[20177].name, //Opportunity's Token +44 uW.ksoItems[20178].name, //Prospector's Token +44 uW.ksoItems[20179].name, //Fortune's Token +45 uW.ksoItems[20180].name, //Opportunity's Token +45 uW.ksoItems[20181].name, //Prospector's Token +45 uW.ksoItems[20182].name, //Fortune's Token +46 uW.ksoItems[20183].name, //Opportunity's Token +46 uW.ksoItems[20184].name, //Prospector's Token +46 uW.ksoItems[20185].name, //Fortune's Token +47 uW.ksoItems[20186].name, //Opportunity's Token +47 uW.ksoItems[20187].name, //Prospector's Token +47 uW.ksoItems[20188].name, //Fortune's Token +48 uW.ksoItems[20189].name, //Opportunity's Token +48 uW.ksoItems[20190].name, //Prospector's Token +48 uW.ksoItems[20191].name, //Fortune's Token +49 uW.ksoItems[20192].name, //Opportunity's Token +49 uW.ksoItems[20193].name, //Prospector's Token +49 uW.ksoItems[20194].name, //Fortune's Token +50 uW.ksoItems[20195].name, //Opportunity's Token +50 uW.ksoItems[20196].name, //Prospector's Token +50 uW.ksoItems[20197].name, //Fortune's Token +51 uW.ksoItems[20198].name, //Opportunity's Token +51 uW.ksoItems[20199].name //Prospector's Token +51 ]; $(document.querySelector("#buffDropDown")).children("option").each(function () { if ($.inArray($(this).text(), removeItems) > -1) $(this).remove(); }); $(document.querySelector("#thronePanelBuffIcon")).removeClass().addClass('icon').addClass('i0'); if (!STrChOGeneralOptions.useMastersTokens) $(document.querySelector("#thronePanelBuffPrice")).children("span.items").html(''); } var doUpdradeChecks = function () { if (STrChOGeneralOptions.useMastersTokens) autoSelectMasters(); //v2.id is the throneItemID if (!STrChOGeneralOptions.useMastersTokens && STrChOGeneralOptions.removeMastersTokens) clearMasterTokens(); if (!STrChOGeneralOptions.useMastersTokens && STrChOGeneralOptions.removeOtherTokens) clearOtherTokens(); if (!STrChOGeneralOptions.useMastersTokens && STrChOGeneralOptions.buffsOff) unselectToken(); if (STrChOGeneralOptions.safetyOn) throneSafetyCheck(); } var doEnhanceChecks = function () { if (!STrChOGeneralOptions.useMastersTokens && STrChOGeneralOptions.buffsOff) unselectToken(); if (STrChOGeneralOptions.safetyOn) throneSafetyCheck(); } var addTabButtonChecks = function () { // register some callbacks when the buttons are pushed var pc = document.querySelector('#thronePanelContainer'); $(pc).find("div.navigation ul").children("li.upgrade").click(function() { doUpdradeChecks(); addTabButtonChecks(); }); $(pc).find("div.navigation ul").children("li.enhance").click(function() { doEnhanceChecks(); addTabButtonChecks(); }); $(pc).find("div.navigation ul").children("li.jewel").click(function() { addTabButtonChecks(); }); } if (v1 == "upgrade") doUpdradeChecks(); if (v1 == "enhance") doEnhanceChecks(); addTabButtonChecks(); } // hook up to the new function CM.ThronePanelView.renderPanel = newThroneRenderPanel; var oldAddJewel = CM.ThroneController.addJewel; //fixes the issue with adding/removing jewels and having it get stuck with the spinney var newAddJewel = function (aj, ai) { oldAddJewel(aj, ai); CM.ThronePanelView.removeSpinny(); } CM.ThroneController.addJewel = newAddJewel; var oldRemoveJewel = CM.ThroneController.removeJewel; var newRemoveJewel = function (ak, ai) { oldRemoveJewel(ak, ai); CM.ThronePanelView.removeSpinny(); } CM.ThroneController.removeJewel = newRemoveJewel; // override the salvageItem function to allow upgrade to +1 first var oldSalvageItem = CM.ThroneController.salvageItem; var newSalvageItem = function (item) { if ( STrChOThroneSalvageData.upgradeManual ) { if (item && item.quality <= STrChOThroneSalvageData.upgradeFirstQual && item.level==0 ) { var status = Tabs.throneSalvager.deleting; Tabs.throneSalvager.deleting = true; Tabs.throneUpgrader.doUpgrade(item.id,true); Tabs.throneSalvager.deleting = status; } } oldSalvageItem(item); }; CM.ThroneController.salvageItem = newSalvageItem; var oldRenderInventory = CM.ThroneView.renderInventory; var newRenderInventory = function(l) { oldRenderInventory(l); $("ul#throneInventoryList > li > div").removeClass('STrChOBlueBorder'); $("ul#throneInventoryList > li > div").removeClass('STrChOYellowBorder'); for (ii in STrChOThroneQueueData.list) { var list_item = STrChOThroneQueueData.list[ii]; if (!list_item) continue; if (list_item.status != "complete") { var id = list_item.item; if (list_item.action == "upgrade") $("div#throneInventoryItem" + id).addClass('STrChOBlueBorder'); if (list_item.action == "enhance") $("div#throneInventoryItem" + id).addClass('STrChOYellowBorder'); } } Tabs.thronePresets.paintTags(); } CM.ThroneView.renderInventory = newRenderInventory; var oldOpenThrone = CM.ThroneView.openThrone; var newOpenThrone = function (F) { oldOpenThrone(F); STrChOSwapTile = null; if (STrChOGeneralOptions.draggableThroneItems) { $("#advisorContainer").draggable(); $("#heroContainer").draggable(); $("#chairContainer").draggable(); $("#candelabrumContainer").draggable(); $("#tableContainer").draggable(); $("#windowContainer").draggable(); $("#bannerContainer").draggable(); $("#trophyContainer").draggable(); $("#statueContainer").draggable(); $("#petContainer").draggable(); $("#tapestryContainer").draggable(); $("#pillarContainer").draggable(); } Tabs.throneSalvager.updateThroneMenu(); Tabs.throneUpgrader.updateThroneMenu(); Tabs.throneRepair.updateThroneMenu(); Tabs.throneSorter.updateThroneMenu(); $("ul#throneInventoryList > li > div").removeClass('STrChOBlueBorder'); $("ul#throneInventoryList > li > div").removeClass('STrChOYellowBorder'); for (ii in STrChOThroneQueueData.list) { var list_item = STrChOThroneQueueData.list[ii]; if (!list_item) continue; if (list_item.status != "complete") { var id = list_item.item; if (list_item.action == "upgrade") $("div#throneInventoryItem" + id).addClass('STrChOBlueBorder'); if (list_item.action == "enhance") $("div#throneInventoryItem" + id).addClass('STrChOYellowBorder'); } } Tabs.thronePresets.paintTags(); //these next few lines expands the throne inventory list var h = 564; var el1 = document.getElementById('throneStatList'); if (el1) { h=h-el1.clientHeight; } $("ul#throneInventoryList").css('height', h+'px'); $("div#throneInventoryContainer").css('height', h+'px'); if (STrChOGeneralOptions.throneSorter) { if (STrChOThroneSorter.length == 0) resetThroneSorter(); sortThroneSorter(false); } } CM.ThroneView.openThrone = newOpenThrone; CM.ContextualMenuThrone.renderMenu = CardContextMenu; } function STrChOThroneSorterEventListener(obj) { var throneId = obj.id.split('throneInventoryItem')[1]; var throneItem = uW.kocThroneItems[throneId]; if (STrChOSwapTile == null) { //this means i haven't clicked the first tile to swap yet, so set it and wait for the second to swap with STrChOSwapTile = throneId $(obj).prepend("
    "); } else { if (throneId == STrChOSwapTile) { $('#throneInventoryItem' + STrChOSwapTile).children(".swapBorderThrone").remove(); STrChOSwapTile = null; return; } $('#throneInventoryItem' + STrChOSwapTile).children(".swapBorderThrone").remove(); var fromTile = document.getElementById('throneInventoryItem' + STrChOSwapTile); var fromTilePosition = 0; var child = fromTile; while( (child = child.previousSibling) != null ) fromTilePosition++; var toTile = document.getElementById('throneInventoryItem' + throneId); var toTilePosition = 0; child = obj; while( (child = child.previousSibling) != null ) toTilePosition++; var fromParent = fromTile.parentElement; var toParent = toTile.parentElement; var fromDelete = fromParent.children[fromTilePosition]; var toDelete = toParent.children[toTilePosition]; if (fromParent != toParent) { //simple swap $(fromDelete).remove(); $(toDelete).remove(); fromParent.insertBefore(toTile, fromParent.childNodes[fromTilePosition]); toParent.insertBefore(fromTile, toParent.childNodes[toTilePosition]); } else { //little more tricky var newRow = []; for (var idx = 0; idx < fromParent.children.length; idx++) { if (idx == fromTilePosition) { newRow.unshift(toTile); } else if (idx == toTilePosition) { newRow.unshift(fromTile); } else { newRow.unshift(fromParent.children[idx]); } } while (fromParent.hasChildNodes()) fromParent.removeChild(fromParent.lastChild); while (newRow.length > 0) fromParent.appendChild(newRow.pop()); } STrChOSwapTile = null; setThroneSorter(false); SAVESTrChOThroneSorter(); } } function resetThroneSorter() { STrChOThroneSorter = []; counter = 0; for (var throneId in uW.kocThroneItems) { STrChOThroneSorter.push(throneId); counter++; if (counter == STrChOMaxThroneCards) break; } SAVESTrChOThroneSorter(); } function sortThroneSorter(fromOrganizer) { //you should never really call this function from the sorter tab because it won't do anything if (STrChOThroneSorter.length == 0) resetThroneSorter(); var reorder = []; if (!fromOrganizer) { //store all the TILES in the sorter array and remove them from inventory for (var idx = 0; idx < STrChOThroneSorter.length; idx++) { var throneTile = document.getElementById('throneInventoryItem' + STrChOThroneSorter[idx]); if (!throneTile) continue; reorder.unshift(throneTile); $(throneTile).remove(); } //check for any remaining TILES and store them temp and remove from inventory var throneInventoryList = document.getElementById('throneInventoryList'); var throneRows = throneInventoryList.getElementsByClassName('active'); for (var row = 0; row < throneRows.length; row++) { var throneRow = throneRows[row]; if (throneRow.children.length > 0) { for (var c = 0; c < throneRow.children.length; c++) { var throneTile = throneRow.children[c]; if (!throneTile) continue; reorder.unshift(throneTile); } while (throneRow.firstChild) throneRow.removeChild(throneRow.firstChild); } } //by now, ALL TILES should be in the reorder array, time to put them back up on the display var throneInventoryList = document.getElementById('throneInventoryList'); var throneRows = throneInventoryList.getElementsByClassName('active'); for (var row = 0; row < throneRows.length; row++) { var throneRow = throneRows[row]; for (var c = 0; c < 5; c++) { var throneTile = reorder.pop(); if (!throneTile) continue; throneTile.addEventListener('contextmenu', function(evt) { evt.preventDefault(); STrChOThroneSorterEventListener(this); }, false); throneRow.appendChild(throneTile); } } setThroneSorter(fromOrganizer); } } function setThroneSorter(fromOrganizer) { if (STrChOThroneSorter.length == 0) resetThroneSorter(); var reorder = []; var notIn = []; if (fromOrganizer) { var STrChOThroneSorterInventoryList = document.getElementById('STrChOThroneSorterInventoryList'); var throneRows = STrChOThroneSorterInventoryList.getElementsByClassName('active'); for (var row = 0; row < throneRows.length; row++) { var throneRow = throneRows[row]; if (throneRow.children.length > 0) { for (var col = 0; col < throneRow.children.length; col++) { var throneDiv = throneRow.children[col]; if (!throneDiv) continue; var cellId = throneDiv.id; var throneId = cellId.split('STrChOThroneSorterInventoryIcon')[1]; if (STrChOThroneSorter.indexOf(throneId) == -1) { notIn.unshift(throneId); } else { reorder.unshift(throneId); } } } } } else { var throneInventoryList = document.getElementById('throneInventoryList'); var throneRows = throneInventoryList.getElementsByClassName('active'); for (var row = 0; row < throneRows.length; row++) { var throneRow = throneRows[row]; if (throneRow.children.length > 0) { for (var col = 0; col < throneRow.children.length; col++) { var cellId = throneRow.children[col].id; var throneId = cellId.split('throneInventoryItem')[1]; if (STrChOThroneSorter.indexOf(throneId) == -1) { notIn.unshift(throneId); } else { reorder.unshift(throneId); } } } } } STrChOThroneSorter = []; while (reorder.length > 0) STrChOThroneSorter.push(reorder.pop()); while (notIn.length > 0) STrChOThroneSorter.push(notIn.pop()); } function isUndefined(obj) { if (typeof(obj) == 'undefined') return true; else return false; } function indexOfChampCard(Id) { var counter = 0; for (var champId in uW.kocChampionItems) { counter += 1; if (champId == Id) return counter; } return counter; } function indexOfThroneCard(Id) { var counter = 0; for (var throneId in uW.kocThroneItems) { counter += 1; if (throneId == Id) return counter; } return counter; } function countHowManyThroneCards() { var counter = 0; for (var throneId in uW.kocThroneItems) counter ++; return counter; } function countHowManyChampCards() { var counter = 0; for (var champId in uW.kocChampionItems) counter++; return counter; } function countHowManyThroneSlots(Id) { var presetSlots = getObjectCollectionCount(Seed.throne.slotEquip); var counter = 0; for (var slot = 1; slot < presetSlots + 1; slot++) { var throneItems = Seed.throne.slotEquip[slot]; for (itemIdx = 0; itemIdx < throneItems.length; itemIdx++) if (Id == throneItems[itemIdx]) counter++; } return counter; } function howManyThroneSlots(Id) { var presetSlots = getObjectCollectionCount(Seed.throne.slotEquip); var presetSlotsFound = []; var presetSlotMsg = ''; for (var slot = 1; slot < presetSlots + 1; slot++) { var throneItems = Seed.throne.slotEquip[slot]; for (itemIdx = 0; itemIdx < throneItems.length; itemIdx++) { if (Id == throneItems[itemIdx]) { if (presetSlotsFound.length % 8 == 0) { presetSlotsFound.push('
    ' + slot); } else { presetSlotsFound.push(slot); } } } } if (presetSlotsFound.length > 0) { presetSlotMsg = 'Card Found In The
    Following Preset Slots:' + presetSlotsFound.join(', '); } else { presetSlotMsg = 'Not In Any Presets'; } return presetSlotMsg; } function whichChampSlot(Id) { var presetSlotMsg = ''; var champItem = uW.kocChampionItems[Id]; var championId = champItem.equippedTo; for (var i = 1; i < STrChOMaxChampions+1; i++) { var thisChampion = Seed.champion.champions[i-1]; if (thisChampion.championId == championId) { presetSlotMsg = 'Item Equipped To
    Champ In Slot ' + i + '
    Name: ' + thisChampion.name; break; } } return presetSlotMsg; } var CardContextMenu = function (tileDiv, theItem, fromOrganizer) { if (typeof(fromOrganizer) == 'undefined') fromOrganizer = false; if (theItem == null) { ThroneOldRenderMenu(tileDiv, theItem); return; } var lastMenuItem = null; var throneItem = theItem; var champItem = theItem; var isThrone = (typeof(champItem.equipmentId) == 'undefined'); var hasJewel = false; var cmContainerOpen = (document.getElementsByClassName('cmModalContainer').length == 1 ? true : false); var itemIndex = 0; var isBroken = false; var isRepairing = false; var isRepairAll = false; var itemId = null; var itemLevel = 0; var presetSlot = 1; var championId = Seed.champion.champions[presetSlot-1].championId; var presetTagCount = 0; var howManyMessage = ''; var inPresets = false; if (isThrone) { if (!fromOrganizer) ThroneOldRenderMenu(tileDiv, theItem); if (throneItem.jewel) { if (throneItem.jewel.valid) hasJewel = true; } //hasJewel = throneItem.jewel.valid; isBroken = throneItem.isBroken presetSlot = Seed.throne.activeSlot; isRepairAll = isAnyThroneBroke(); presetTagCount = getThronePresetTagCount(presetSlot); itemId = throneItem.id; itemIndex = indexOfThroneCard(itemId); itemLevel = throneItem.level; howManyMessage = howManyThroneSlots(itemId); if (countHowManyThroneSlots(itemId) > 0) inPresets = true; } else { isBroken = (champItem.status == CM.CHAMPION.STATUS_BROKEN_UPGRADE || champItem.status == CM.CHAMPION.STATUS_BROKEN_ENHANCE); isRepairing = (champItem.status == CM.CHAMPION.STATUS_REPAIRING_ENHANCE || champItem.status == CM.CHAMPION.STATUS_REPAIRING_UPGRADE); if (!fromOrganizer) { for (i = 0; i < STrChOMaxChampions; i++) { var champClass = $(".champion_states").children(".name" + i).attr('class'); if ( champClass.indexOf("active") == -1) continue; presetSlot = i + 1; break; } } isRepairAll = isAnyChampBroke(); presetTagCount = getChampPresetTagCount(presetSlot); itemId = champItem.equipmentId; itemIndex = indexOfChampCard(itemId); itemLevel = champItem.level; howManyMessage = whichChampSlot(itemId); if (howManyMessage != '') { inPresets = true; } else { howManyMessage = 'Not Equipped'; } } if (!fromOrganizer) { uW.removeTooltip(); uW.Tooltip.hide(); } function ContextMenuExpandCollapse(menuItem, isExpanding) { var menuSubItemClass = menuItem.id + "_SubItem"; var SubItems = document.getElementsByClassName(menuSubItemClass); for (var idx = 0; idx < SubItems.length; idx++) { var menuSubItem = SubItems[idx]; if (isExpanding) menuSubItem.className = menuSubItem.className.replace('STrChOContextHidden', 'STrChOContextVisible'); else menuSubItem.className = menuSubItem.className.replace('STrChOContextVisible', 'STrChOContextHidden'); } } var STrChOContextMenu = document.getElementById("contextMenu"); if (STrChOContextMenu) { while (STrChOContextMenu.hasChildNodes()) STrChOContextMenu.removeChild(STrChOContextMenu.lastChild); } else { STrChOContextMenu = document.createElement('div'); STrChOContextMenu.addEventListener('mouseleave', function () { $(this).remove(); }, false); } if (isThrone) STrChOContextMenu.innerHTML = throneItem.type.capitalizeFirstLetter() + '+' + itemLevel; //throneItem.name.replace(/ /g, '
    '); else STrChOContextMenu.innerHTML = champItemNames[champItem.type].capitalizeFirstLetter() + '+' + itemLevel; //champItem.name.replace(/ /g, '
    '); STrChOContextMenu.className = 'STrChOContextMenu'; var STrChOContextMenuUpgrading = document.createElement('div'); STrChOContextMenuUpgrading.className = 'STrChOContextMenuItem STrChOBrown'; STrChOContextMenuUpgrading.innerHTML = 'UPGRADING'; STrChOContextMenuUpgrading.id = 'STrChOContextMenuUpgrading'; STrChOContextMenuUpgrading.addEventListener('click', function(A) { A.stopPropagation(); if (lastMenuItem == this) { ContextMenuExpandCollapse(this, false); lastMenuItem = null; return; } if (lastMenuItem == null) lastMenuItem = this; if (lastMenuItem.id != this.id) ContextMenuExpandCollapse(lastMenuItem, false); ContextMenuExpandCollapse(this, true); lastMenuItem = this; }, false); STrChOContextMenu.appendChild(STrChOContextMenuUpgrading); var STrChOContextMenuUpgrading_AutoUpg = document.createElement('div'); STrChOContextMenuUpgrading_AutoUpg.className = 'STrChOContextMenuSubItem STrChOContextHidden STrChOBlue STrChOContextMenuUpgrading_SubItem'; STrChOContextMenuUpgrading_AutoUpg.innerHTML = 'Auto Upgrade'; if ( (isThrone && throneItem.level < STrChOMaxThroneLevel) || (!isThrone && champItem.level < STrChOMaxChampLevel) ) { STrChOContextMenuUpgrading_AutoUpg.addEventListener('click', function(A) { A.stopPropagation(); if (isThrone) Tabs.throneUpgrader.addUpgradeItem(itemId); else Tabs.champUpgrader.addUpgradeItem(itemId); $(STrChOContextMenu).remove(); }, false); } else { STrChOContextMenuUpgrading_AutoUpg.className += ' STrChODisabled'; } STrChOContextMenu.appendChild(STrChOContextMenuUpgrading_AutoUpg); var STrChOContextMenuUpgrading_Upgrade = document.createElement('div'); STrChOContextMenuUpgrading_Upgrade.className = 'STrChOContextMenuSubItem STrChOContextHidden STrChOBlue STrChOContextMenuUpgrading_SubItem'; STrChOContextMenuUpgrading_Upgrade.innerHTML = 'Upgrade'; if ( ( (isThrone && throneItem.level < STrChOMaxThroneLevel) || (!isThrone && champItem.level < STrChOMaxChampLevel) ) && !isBroken ) { STrChOContextMenuUpgrading_Upgrade.addEventListener('click', function(A) { A.stopPropagation(); if (isThrone) { if (!cmContainerOpen) CM.ThroneView.openThrone(); CM.ThronePanelView.renderPanel("upgrade", throneItem) } else { if (!cmContainerOpen) CM.ChampionModalController.open(); CM.ChampionModalView.upgEnhSlideIn(itemId, "upg"); } $(STrChOContextMenu).remove(); }, false); } else { STrChOContextMenuUpgrading_Upgrade.className += ' STrChODisabled'; } STrChOContextMenu.appendChild(STrChOContextMenuUpgrading_Upgrade); var STrChOContextMenuEnhancing = document.createElement('div'); STrChOContextMenuEnhancing.className = 'STrChOContextMenuItem STrChOBrown'; STrChOContextMenuEnhancing.innerHTML = 'ENHANCING'; STrChOContextMenuEnhancing.id = 'STrChOContextMenuEnhancing'; STrChOContextMenuEnhancing.addEventListener('click', function(A) { if (lastMenuItem == this) { ContextMenuExpandCollapse(this, false); lastMenuItem = null; return; } A.stopPropagation(); if (lastMenuItem == null) lastMenuItem = this; if (lastMenuItem.id != this.id) ContextMenuExpandCollapse(lastMenuItem, false); ContextMenuExpandCollapse(this, true); lastMenuItem = this; }, false); STrChOContextMenu.appendChild(STrChOContextMenuEnhancing); var STrChOContextMenuEnhancing_AutoEnh = document.createElement('div'); STrChOContextMenuEnhancing_AutoEnh.className = 'STrChOContextMenuSubItem STrChOContextHidden STrChOBlue STrChOContextMenuEnhancing_SubItem'; STrChOContextMenuEnhancing_AutoEnh.innerHTML = 'Auto Enhance'; if ( (isThrone && throneItem.quality < STrChOMaxThroneQuality) || (!isThrone && champItem.rarity < STrChOMaxChampQuality) ) { STrChOContextMenuEnhancing_AutoEnh.addEventListener('click', function(A) { A.stopPropagation(); if (isThrone) Tabs.throneUpgrader.addEnhanceItem(itemId); else Tabs.champUpgrader.addEnhanceItem(itemId); $(STrChOContextMenu).remove(); }, false); } else { STrChOContextMenuEnhancing_AutoEnh.className += ' STrChODisabled'; } STrChOContextMenu.appendChild(STrChOContextMenuEnhancing_AutoEnh); var STrChOContextMenuEnhancing_Enhance = document.createElement('div'); STrChOContextMenuEnhancing_Enhance.className = 'STrChOContextMenuSubItem STrChOContextHidden STrChOBlue STrChOContextMenuEnhancing_SubItem'; STrChOContextMenuEnhancing_Enhance.innerHTML = 'Enhance'; if (!fromOrganizer) { if ( ( (isThrone && throneItem.quality < STrChOMaxThroneQuality) || (!isThrone && champItem.rarity < STrChOMaxChampQuality) ) && !isBroken ) { STrChOContextMenuEnhancing_Enhance.addEventListener('click', function(A) { A.stopPropagation(); if (isThrone) { if (!cmContainerOpen) CM.ThroneView.openThrone(); CM.ThronePanelView.renderPanel("enhance", throneItem) } else { if (!cmContainerOpen) CM.ChampionModalController.open(); CM.ChampionModalView.upgEnhSlideIn(itemId, "enh"); } $(STrChOContextMenu).remove(); }, false); } else { STrChOContextMenuEnhancing_Enhance.className += ' STrChODisabled'; } } else { STrChOContextMenuEnhancing_Enhance.className += ' STrChODisabled'; } STrChOContextMenu.appendChild(STrChOContextMenuEnhancing_Enhance); var STrChOContextMenuEnhancing_Jewel = document.createElement('div'); STrChOContextMenuEnhancing_Jewel.className = 'STrChOContextMenuSubItem STrChOContextHidden STrChOBlue STrChOContextMenuEnhancing_SubItem'; STrChOContextMenuEnhancing_Jewel.innerHTML = 'Jewel'; if (isThrone && !isBroken) { STrChOContextMenuEnhancing_Jewel.addEventListener('click', function(A) { A.stopPropagation(); if (!cmContainerOpen) CM.ThroneView.openThrone(); CM.ThronePanelView.renderPanel("jewel", throneItem) $(STrChOContextMenu).remove(); }, false); } else { STrChOContextMenuEnhancing_Jewel.className += ' STrChODisabled'; } STrChOContextMenu.appendChild(STrChOContextMenuEnhancing_Jewel); var STrChOContextMenuEquipping = document.createElement('div'); STrChOContextMenuEquipping.className = 'STrChOContextMenuItem STrChOBrown'; STrChOContextMenuEquipping.innerHTML = 'EQUIPPING'; STrChOContextMenuEquipping.id = 'STrChOContextMenuEquipping'; STrChOContextMenuEquipping.addEventListener('click', function(A) { if (lastMenuItem == this) { ContextMenuExpandCollapse(this, false); lastMenuItem = null; return; } A.stopPropagation(); if (lastMenuItem == null) lastMenuItem = this; if (lastMenuItem.id != this.id) ContextMenuExpandCollapse(lastMenuItem, false); ContextMenuExpandCollapse(this, true); lastMenuItem = this; }, false); STrChOContextMenu.appendChild(STrChOContextMenuEquipping); var STrChOContextMenuEquipping_Equip = document.createElement('div'); STrChOContextMenuEquipping_Equip.className = 'STrChOContextMenuSubItem STrChOContextHidden STrChOGreen STrChOContextMenuEquipping_SubItem'; STrChOContextMenuEquipping_Equip.innerHTML = 'Equip'; if (!isBroken) { if ( (!throneItem.isEquipped && isThrone) || (!isThrone && champItem.equippedTo != championId) ) { STrChOContextMenuEquipping_Equip.addEventListener('click', function(A) { A.stopPropagation(); if (isThrone) CM.ThroneController.equipItem(throneItem); else Tabs.champPresets.equipItem(itemId); //CM.ChampionManager.equipItem(chId); $(STrChOContextMenu).remove(); }, false); } else { STrChOContextMenuEquipping_Equip.className += ' STrChODisabled'; } } else { STrChOContextMenuEquipping_Equip.className += ' STrChODisabled'; } STrChOContextMenu.appendChild(STrChOContextMenuEquipping_Equip); var STrChOContextMenuEquipping_Unequip = document.createElement('div'); STrChOContextMenuEquipping_Unequip.className = 'STrChOContextMenuSubItem STrChOContextHidden STrChOGreen STrChOContextMenuEquipping_SubItem'; STrChOContextMenuEquipping_Unequip.innerHTML = 'Unequip'; if (!isBroken) { if ( (throneItem.isEquipped && isThrone) || (!isThrone && champItem.equippedTo != 0) ) { STrChOContextMenuEquipping_Unequip.addEventListener('click', function(A) { A.stopPropagation(); if (isThrone) CM.ThroneController.unequipItem(throneItem); else Tabs.champPresets.unequipItem(itemId); //CM.ChampionManager.unequipItem(itemId); $(STrChOContextMenu).remove(); }, false); } else { STrChOContextMenuEquipping_Unequip.className += ' STrChODisabled'; } } else { STrChOContextMenuEquipping_Unequip.className += ' STrChODisabled'; } STrChOContextMenu.appendChild(STrChOContextMenuEquipping_Unequip); var STrChOContextMenuEquipping_UnequipAll = document.createElement('div'); STrChOContextMenuEquipping_UnequipAll.className = 'STrChOContextMenuSubItem STrChOContextHidden STrChOGreen STrChOContextMenuEquipping_SubItem'; STrChOContextMenuEquipping_UnequipAll.innerHTML = 'Unequip All'; STrChOContextMenuEquipping_UnequipAll.addEventListener('click', function(A) { A.stopPropagation(); if (isThrone) Tabs.thronePresets.unequipAllItems(presetSlot); else Tabs.champPresets.unequipAllItems(presetSlot); $(STrChOContextMenu).remove(); }, false); STrChOContextMenu.appendChild(STrChOContextMenuEquipping_UnequipAll); var STrChOContextMenuRepair = document.createElement('div'); STrChOContextMenuRepair.className = 'STrChOContextMenuItem STrChOBrown'; STrChOContextMenuRepair.innerHTML = 'REPAIR'; STrChOContextMenuRepair.id = 'STrChOContextMenuRepair'; STrChOContextMenuRepair.addEventListener('click', function(A) { if (lastMenuItem == this) { ContextMenuExpandCollapse(this, false); lastMenuItem = null; return; } A.stopPropagation(); if (lastMenuItem == null) lastMenuItem = this; if (lastMenuItem.id != this.id) ContextMenuExpandCollapse(lastMenuItem, false); ContextMenuExpandCollapse(this, true); lastMenuItem = this; }, false); STrChOContextMenu.appendChild(STrChOContextMenuRepair); var STrChOContextMenuRepair_Repair = document.createElement('div'); STrChOContextMenuRepair_Repair.className = 'STrChOContextMenuSubItem STrChOContextHidden STrChOBlue STrChOContextMenuRepair_SubItem'; STrChOContextMenuRepair_Repair.innerHTML = 'Repair Card'; if (isBroken || (isRepairing && !isThrone) ) { STrChOContextMenuRepair_Repair.addEventListener('click', function(A) { A.stopPropagation(); if (isThrone) CM.ThronePanelView.renderBroken(throneItem); else CM.ChampionPanelView.renderBroken(champItem); $(STrChOContextMenu).remove(); }, false); } else { STrChOContextMenuRepair_Repair.className += ' STrChODisabled'; } STrChOContextMenu.appendChild(STrChOContextMenuRepair_Repair); var STrChOContextMenuRepair_AutoRepair = document.createElement('div'); STrChOContextMenuRepair_AutoRepair.className = 'STrChOContextMenuSubItem STrChOContextHidden STrChOBlue STrChOContextMenuRepair_SubItem'; STrChOContextMenuRepair_AutoRepair.innerHTML = 'Auto Repair'; if (isBroken) { STrChOContextMenuRepair_AutoRepair.addEventListener('click', function(A) { A.stopPropagation(); if (isThrone) { Tabs.throneRepair.addQueue(itemId); Tabs.throneRepair.buildThroneRepairDisplay(); } else { Tabs.champRepair.addQueue(itemId); Tabs.champRepair.buildChampRepairDisplay(); } $(STrChOContextMenu).remove(); }, false); } else { STrChOContextMenuRepair_AutoRepair.className += ' STrChODisabled'; } STrChOContextMenu.appendChild(STrChOContextMenuRepair_AutoRepair); var STrChOContextMenuRepair_AutoRepairAll = document.createElement('div'); STrChOContextMenuRepair_AutoRepairAll.className = 'STrChOContextMenuSubItem STrChOContextHidden STrChOBlue STrChOContextMenuRepair_SubItem'; STrChOContextMenuRepair_AutoRepairAll.innerHTML = 'Auto Repair All'; if (isRepairAll) { STrChOContextMenuRepair_AutoRepairAll.addEventListener('click', function(A) { A.stopPropagation(); if (isThrone) { Tabs.throneRepair.addAllQueue(); Tabs.throneRepair.buildThroneRepairDisplay(); } else { Tabs.champRepair.addAllQueue(); Tabs.champRepair.buildChampRepairDisplay(); } $(STrChOContextMenu).remove(); }, false); } else { STrChOContextMenuRepair_AutoRepairAll.className += ' STrChODisabled'; } STrChOContextMenu.appendChild(STrChOContextMenuRepair_AutoRepairAll); var STrChOContextMenuSalvaging = document.createElement('div'); STrChOContextMenuSalvaging.className = 'STrChOContextMenuItem STrChOBrown'; STrChOContextMenuSalvaging.innerHTML = 'SALVAGING'; STrChOContextMenuSalvaging.id = 'STrChOContextMenuSalvaging'; STrChOContextMenuSalvaging.addEventListener('click', function(A) { if (lastMenuItem == this) { ContextMenuExpandCollapse(this, false); lastMenuItem = null; return; } A.stopPropagation(); if (lastMenuItem == null) lastMenuItem = this; if (lastMenuItem.id != this.id) ContextMenuExpandCollapse(lastMenuItem, false); ContextMenuExpandCollapse(this, true); lastMenuItem = this; }, false); STrChOContextMenu.appendChild(STrChOContextMenuSalvaging); var STrChOContextMenuSalvaging_Salvage = document.createElement('div'); STrChOContextMenuSalvaging_Salvage.className = 'STrChOContextMenuSubItem STrChOContextHidden STrChOBlue STrChOContextMenuSalvaging_SubItem'; STrChOContextMenuSalvaging_Salvage.innerHTML = 'Salvage'; if (!isBroken) { if (!(inPresets && STrChOGeneralOptions.noEquippedSalvage)) { if (((!STrChOGeneralOptions.throneSalvageSafety) || (STrChOGeneralOptions.throneSalvageSafety && itemIndex > STrChOGeneralOptions.throneSalvageSafetyNum)) || ((!STrChOGeneralOptions.champSalvageSafety) || (STrChOGeneralOptions.champSalvageSafety && itemIndex > STrChOGeneralOptions.champSalvageSafetyNum))) { if (!isThrone || (isThrone && !hasJewel)) { STrChOContextMenuSalvaging_Salvage.addEventListener('click', function(A) { A.stopPropagation(); if (confirm('Are you sure you want to salvage this item?')) { if (isThrone) { SalvageThroneItem(itemId); } else { SalvageChampItem(itemId); if (cmContainerOpen) CM.ChampionModalController.open() Tabs.champPreview.clearChampPreviewCard(itemId); Tabs.champOrganizer.paintChampTables(); } } $(STrChOContextMenu).remove(); }, false); } else { STrChOContextMenuSalvaging_Salvage.className += ' STrChODisabled'; } } else { STrChOContextMenuSalvaging_Salvage.className += ' STrChODisabled'; } } else { STrChOContextMenuSalvaging_Salvage.className += ' STrChODisabled'; } } else { STrChOContextMenuSalvaging_Salvage.className += ' STrChODisabled'; } STrChOContextMenu.appendChild(STrChOContextMenuSalvaging_Salvage); var STrChOContextMenuSalvaging_Forced = document.createElement('div'); STrChOContextMenuSalvaging_Forced.className = 'STrChOContextMenuSubItem STrChOContextHidden STrChOBlue STrChOContextMenuSalvaging_SubItem'; STrChOContextMenuSalvaging_Forced.innerHTML = 'Forced Salvage'; if (!isBroken && isThrone && hasJewel && !STrChOGeneralOptions.noForcedSalvage) { if (!(inPresets && STrChOGeneralOptions.noEquippedSalvage)) { STrChOContextMenuSalvaging_Forced.addEventListener('click', function(A) { A.stopPropagation(); if (confirm('Are you sure you want to forced salvage this item?')) Tabs.throneSalvager.forceSalvage(itemId); $(STrChOContextMenu).remove(); }, false); } else { STrChOContextMenuSalvaging_Forced.className += ' STrChODisabled'; } } else { STrChOContextMenuSalvaging_Forced.className += ' STrChODisabled'; } STrChOContextMenu.appendChild(STrChOContextMenuSalvaging_Forced); var STrChOContextMenuSalvaging_Mass = document.createElement('div'); STrChOContextMenuSalvaging_Mass.className = 'STrChOContextMenuSubItem STrChOContextHidden STrChOBlue STrChOContextMenuSalvaging_SubItem'; STrChOContextMenuSalvaging_Mass.innerHTML = 'Mass Salvage'; if (!STrChOGeneralOptions.noMassSalvage) { STrChOContextMenuSalvaging_Mass.addEventListener('click', function(A) { A.stopPropagation(); if (isThrone) CM.ThroneView.renderMassSalvage(); else CM.ChampionModalView.renderMassSalvage(); $(STrChOContextMenu).remove(); }, false); } else { STrChOContextMenuSalvaging_Mass.className += ' STrChODisabled'; } STrChOContextMenu.appendChild(STrChOContextMenuSalvaging_Mass); var STrChOContextMenuStats = document.createElement('div'); STrChOContextMenuStats.className = 'STrChOContextMenuItem STrChOBrown'; STrChOContextMenuStats.innerHTML = 'STATS'; STrChOContextMenuStats.id = 'STrChOContextMenuStats'; STrChOContextMenuStats.addEventListener('click', function(A) { if (lastMenuItem == this) { ContextMenuExpandCollapse(this, false); lastMenuItem = null; return; } A.stopPropagation(); if (lastMenuItem == null) lastMenuItem = this; if (lastMenuItem.id != this.id) ContextMenuExpandCollapse(lastMenuItem, false); ContextMenuExpandCollapse(this, true); lastMenuItem = this; }, false); STrChOContextMenu.appendChild(STrChOContextMenuStats); var STrChOContextMenuStats_Copy = document.createElement('div'); STrChOContextMenuStats_Copy.className = 'STrChOContextMenuSubItem STrChOContextHidden STrChORed STrChOContextMenuStats_SubItem'; STrChOContextMenuStats_Copy.innerHTML = 'Copy Stats'; STrChOContextMenuStats_Copy.addEventListener('click', function(A) { A.stopPropagation(); if (isThrone) { var displayText = getThroneItemStats(itemId, " "); if (displayText != "") window.prompt("Copy to clipboard: Ctrl+C", displayText); } else { var displayText = getChampItemStats(itemId, " "); if (displayText != "") window.prompt("Copy to clipboard: Ctrl+C", displayText); } $(STrChOContextMenu).remove(); }, false); STrChOContextMenu.appendChild(STrChOContextMenuStats_Copy); var STrChOContextMenuStats_Post = document.createElement('div'); STrChOContextMenuStats_Post.className = 'STrChOContextMenuSubItem STrChOContextHidden STrChORed STrChOContextMenuStats_SubItem'; STrChOContextMenuStats_Post.innerHTML = 'Post Stats'; STrChOContextMenuStats_Post.addEventListener('click', function(A) { A.stopPropagation(); if (isThrone) sendChat(getThroneItemStats(itemId, '||')); else sendChat(getChampItemStats(itemId, '||')); $(STrChOContextMenu).remove(); }, false); STrChOContextMenu.appendChild(STrChOContextMenuStats_Post); var STrChOContextMenuStats_Export = document.createElement('div'); STrChOContextMenuStats_Export.className = 'STrChOContextMenuSubItem STrChOContextHidden STrChORed STrChOContextMenuStats_SubItem'; STrChOContextMenuStats_Export.innerHTML = 'Export Cards'; STrChOContextMenuStats_Export.addEventListener('click', function(A) { A.stopPropagation(); if (isThrone) ExportThroneToExcel(false); else ExportChampToExcel(false); $(STrChOContextMenu).remove(); }, false); STrChOContextMenu.appendChild(STrChOContextMenuStats_Export); var STrChOContextMenuStats_Compare = document.createElement('div'); STrChOContextMenuStats_Compare.className = 'STrChOContextMenuSubItem STrChOContextHidden STrChORed STrChOContextMenuStats_SubItem'; STrChOContextMenuStats_Compare.innerHTML = 'Send To Compare'; STrChOContextMenuStats_Compare.addEventListener('click', function(A) { A.stopPropagation(); if (isThrone) Tabs.throneCompare.sendToCompare(itemId); else Tabs.champCompare.sendToCompare(itemId); $(STrChOContextMenu).remove(); }, false); STrChOContextMenu.appendChild(STrChOContextMenuStats_Compare); var STrChOContextMenuPresets = document.createElement('div'); STrChOContextMenuPresets.className = 'STrChOContextMenuItem STrChOBrown'; STrChOContextMenuPresets.innerHTML = 'PRESETS'; STrChOContextMenuPresets.id = 'STrChOContextMenuPresets'; STrChOContextMenuPresets.addEventListener('click', function(A) { if (lastMenuItem == this) { ContextMenuExpandCollapse(this, false); lastMenuItem = null; return; } A.stopPropagation(); if (lastMenuItem == null) lastMenuItem = this; if (lastMenuItem.id != this.id) ContextMenuExpandCollapse(lastMenuItem, false); ContextMenuExpandCollapse(this, true); lastMenuItem = this; }, false); STrChOContextMenu.appendChild(STrChOContextMenuPresets); var STrChOContextMenuPresets_EquipPreset = document.createElement('div'); STrChOContextMenuPresets_EquipPreset.className = 'STrChOContextMenuSubItem STrChOContextHidden STrChORed STrChOContextMenuPresets_SubItem'; STrChOContextMenuPresets_EquipPreset.innerHTML = 'Equip Tag #' + presetSlot; if (presetTagCount != 0) { STrChOContextMenuPresets_EquipPreset.addEventListener('click', function(A) { A.stopPropagation(); if (isThrone) Tabs.thronePresets.equipPresetTags(presetSlot); else Tabs.champPresets.equipPresetTags(presetSlot); $(STrChOContextMenu).remove(); }, false); } else { STrChOContextMenuPresets_EquipPreset.className += ' STrChODisabled'; } STrChOContextMenu.appendChild(STrChOContextMenuPresets_EquipPreset); var STrChOContextMenuPresets_ClearPreset = document.createElement('div'); STrChOContextMenuPresets_ClearPreset.className = 'STrChOContextMenuSubItem STrChOContextHidden STrChORed STrChOContextMenuPresets_SubItem'; STrChOContextMenuPresets_ClearPreset.innerHTML = 'Clear Tag #' + presetSlot; if (presetTagCount != 0) { STrChOContextMenuPresets_ClearPreset.addEventListener('click', function(A) { A.stopPropagation(); if (isThrone) { Tabs.thronePresets.clearPresetTags(presetSlot); Tabs.thronePresets.paintTags(); } else { Tabs.champPresets.clearPresetTags(presetSlot); Tabs.champPresets.paintTags(); } $(STrChOContextMenu).remove(); }, false); } else { STrChOContextMenuPresets_ClearPreset.className += ' STrChODisabled'; } STrChOContextMenu.appendChild(STrChOContextMenuPresets_ClearPreset); var STrChOContextMenuPresets_SavePreset = document.createElement('div'); STrChOContextMenuPresets_SavePreset.className = 'STrChOContextMenuSubItem STrChOContextHidden STrChORed STrChOContextMenuPresets_SubItem'; STrChOContextMenuPresets_SavePreset.innerHTML = 'Save Tag #' + presetSlot; STrChOContextMenuPresets_SavePreset.addEventListener('click', function(A) { A.stopPropagation(); if (isThrone) { Tabs.thronePresets.addPresetTags(presetSlot); Tabs.thronePresets.paintTags(); } else { Tabs.champPresets.addPresetTags(presetSlot); Tabs.champPresets.paintTags(); } $(STrChOContextMenu).remove(); }, false); STrChOContextMenu.appendChild(STrChOContextMenuPresets_SavePreset); var STrChOContextMenuPresets_LoadToPreview = document.createElement('div'); STrChOContextMenuPresets_LoadToPreview.className = 'STrChOContextMenuSubItem STrChOContextHidden STrChORed STrChOContextMenuPresets_SubItem'; STrChOContextMenuPresets_LoadToPreview.innerHTML = 'Send To Preview'; STrChOContextMenuPresets_LoadToPreview.addEventListener('click', function(A) { A.stopPropagation(); if (isThrone) { Tabs.thronePreview.loadThronePreviewCard(itemId, throneItem.type); //Tabs.thronePreview.buildThronePreviewValueDisplay(); } else { Tabs.champPreview.loadChampPreviewCard(itemId); Tabs.champPreview.buildChampPreviewValueDisplay(); } $(STrChOContextMenu).remove(); }, false); STrChOContextMenu.appendChild(STrChOContextMenuPresets_LoadToPreview); var STrChOContextMenuTagging = document.createElement('div'); STrChOContextMenuTagging.className = 'STrChOContextMenuItem STrChOBrown'; STrChOContextMenuTagging.innerHTML = 'TAGGING'; STrChOContextMenuTagging.id = 'STrChOContextMenuTagging'; STrChOContextMenuTagging.addEventListener('click', function(A) { if (lastMenuItem == this) { ContextMenuExpandCollapse(this, false); lastMenuItem = null; return; } A.stopPropagation(); if (lastMenuItem == null) lastMenuItem = this; if (lastMenuItem.id != this.id) ContextMenuExpandCollapse(lastMenuItem, false); ContextMenuExpandCollapse(this, true); lastMenuItem = this; }, false); STrChOContextMenu.appendChild(STrChOContextMenuTagging); var STrChOContextMenuTagging_TagItem = document.createElement('div'); STrChOContextMenuTagging_TagItem.className = 'STrChOContextMenuSubItem STrChOContextHidden STrChOGreen STrChOContextMenuTagging_SubItem'; STrChOContextMenuTagging_TagItem.innerHTML = 'Tag Item'; if ( (!STrChOThronePresetData.taggedItems[itemId] && isThrone) || (!STrChOChampPresetData.taggedItems[itemId] && !isThrone) ) { STrChOContextMenuTagging_TagItem.addEventListener('click', function(A) { A.stopPropagation(); if (isThrone) { Tabs.thronePresets.addTagItem(itemId); Tabs.thronePresets.paintTags(); } else { Tabs.champPresets.addTagItem(itemId); Tabs.champPresets.paintTags(); } $(STrChOContextMenu).remove(); }, false); } else { STrChOContextMenuTagging_TagItem.className += ' STrChODisabled'; } STrChOContextMenu.appendChild(STrChOContextMenuTagging_TagItem); var STrChOContextMenuTagging_RemoveTag = document.createElement('div'); STrChOContextMenuTagging_RemoveTag.className = 'STrChOContextMenuSubItem STrChOContextHidden STrChOGreen STrChOContextMenuTagging_SubItem'; STrChOContextMenuTagging_RemoveTag.innerHTML = 'Remove Tag'; if ( (STrChOThronePresetData.taggedItems[itemId] && isThrone) || (STrChOChampPresetData.taggedItems[itemId] && !isThrone) ) { STrChOContextMenuTagging_RemoveTag.addEventListener('click', function(A) { A.stopPropagation(); if (isThrone) { Tabs.thronePresets.removeTagItem(itemId); Tabs.thronePresets.paintTags(); } else { Tabs.champPresets.removeTagItem(itemId); Tabs.champPresets.paintTags(); } $(STrChOContextMenu).remove(); }, false); } else { STrChOContextMenuTagging_RemoveTag.className += ' STrChODisabled'; } STrChOContextMenu.appendChild(STrChOContextMenuTagging_RemoveTag); var STrChOContextMenuTagging_TagItemAll = document.createElement('div'); STrChOContextMenuTagging_TagItemAll.className = 'STrChOContextMenuSubItem STrChOContextHidden STrChOGreen STrChOContextMenuTagging_SubItem'; STrChOContextMenuTagging_TagItemAll.innerHTML = 'Tag All'; STrChOContextMenuTagging_TagItemAll.addEventListener('click', function(A) { A.stopPropagation(); if (isThrone) { Tabs.thronePresets.addAllTagItems(); Tabs.thronePresets.paintTags(); } else { Tabs.champPresets.addAllTagItems(); Tabs.champPresets.paintTags(); } $(STrChOContextMenu).remove(); }, false); STrChOContextMenu.appendChild(STrChOContextMenuTagging_TagItemAll); var STrChOContextMenuTagging_RemoveTagAll = document.createElement('div'); STrChOContextMenuTagging_RemoveTagAll.className = 'STrChOContextMenuSubItem STrChOContextHidden STrChOGreen STrChOContextMenuTagging_SubItem'; STrChOContextMenuTagging_RemoveTagAll.innerHTML = 'Remove All Tags'; if ( (isThrone && getObjectCollectionCount(STrChOThronePresetData.taggedItems) > 0) || (!isThrone && getObjectCollectionCount(STrChOChampPresetData.taggedItems) > 0) ) { STrChOContextMenuTagging_RemoveTagAll.addEventListener('click', function(A) { A.stopPropagation(); if (isThrone) { Tabs.thronePresets.clearAllTagItems(); Tabs.thronePresets.paintTags(); } else { Tabs.champPresets.removeAllTagItems(); Tabs.champPresets.paintTags(); } $(STrChOContextMenu).remove(); }, false); } else { STrChOContextMenuTagging_RemoveTagAll.className += ' STrChODisabled'; } STrChOContextMenu.appendChild(STrChOContextMenuTagging_RemoveTagAll); var STrChOContextMenuCardInfo = document.createElement('div'); STrChOContextMenuCardInfo.innerHTML = howManyMessage; STrChOContextMenu.appendChild(STrChOContextMenuCardInfo); if (fromOrganizer) tileDiv.insertBefore(STrChOContextMenu, tileDiv.firstChild); } var sectionOpener = function() { var imgs = this.childNodes; if (imgs[0].src == STrChODownArrow) { imgs[0].src = STrChORightArrow imgs[2].src = STrChORightArrow } else { imgs[0].src = STrChODownArrow imgs[2].src = STrChODownArrow } var section = this.nextSibling; if (section.className != "STrChOSection") return; var sections = document.getElementsByClassName('STrChOSection'); for (var sect=0;sect750){ that.coordBoxX.style.backgroundColor = '#ff8888'; return; } if (isNaN(y) || y<0 || y>750){ that.coordBoxY.style.backgroundColor = '#ff8888'; return; } that.coordBoxX.style.backgroundColor = '#ffffff'; that.coordBoxY.style.backgroundColor = '#ffffff'; if (that.notify != null) that.notify (null, x, y); } return false; } this.coordBoxX = eX; this.coordBoxY = eY; var bh = new CboxHandler(this); eX.maxLength=8; eY.maxLength=3; eX.style.width='2em'; eY.style.width='2em'; eX.addEventListener('change', bh.eventChange, false); eY.addEventListener('change', bh.eventChange, false); } this.selectBut = selectBut; this.bindToXYboxes = bindToXYboxes; this.coordBoxX = null; this.coordBoxY = null; this.id = id; this.dispName = dispName; this.prefixLen = id.length+1; this.notify = notify; this.selected = null; this.city = null; var m = ''; for (var i=0; i < Cities.cities.length; i++) m += ''; if (dispName) m += '   '; span.innerHTML = m; var handler = new CcityButHandler(this); for (var i=0; i < Cities.cities.length; i++) document.getElementById (id+'_'+i).addEventListener('click', handler.clickedCityBut, false); if (selbut != null) this.selectBut(selbut); }; function upgradeIt(citynum, chId, cost) { var t = Tabs.champPresets; var params = uW.Object.clone(ajfx); params.action = '5'; params.cityId = citynum; params.eid = chId; params.chanceItem = 0; params.aetherstones = cost; params.gems = 0; new AjaxRequest(uW.g_ajaxpath + "ajax/ceEquipmentManagerAjax.php" + uW.g_ajaxsuffix, { method: "post", parameters: params, loading: true, onSuccess: function (transport) { try { var rslt = eval("(" + transport.responseText + ")"); if (rslt.ok) { t.broke_items += 1; t.setBreakStatus(); Seed.resources["city" + citynum]["rec5"][0] = Seed.resources["city" + citynum]["rec5"][0] - parseInt(rslt.aetherstones); if (rslt.updateSeed) uW.update_seed(rslt.updateSeed); } if (rslt.gems > 0) { alert("UNEXPECTED ERROR: 'BREAK CH' accidentally spent gems.... Refreshing to stop the feature now!"); ActionLog('BREAK CH accidentally spent gems! Stopping now!'); RefreshCamelot(); return false; } } catch (e) { } }, onFailure: function (rrr) { } }); return true; } function repairTimeToText(total_time) { var secondsInMinutes = 60; var secondsInHours = 3600; var secondsInDays = 43200; var totalDays = 0; var totalHours = 0; var totalMinutes = 0; if (total_time > secondsInDays) { totalDays = (total_time - (total_time % secondsInDays)) / secondsInDays; total_time = total_time % secondsInDays; } if (total_time > secondsInHours) { totalHours = (total_time - (total_time % secondsInHours)) / secondsInHours; total_time = total_time % secondsInHours; } if (total_time > secondsInMinutes) { totalMinutes = (total_time - (total_time % secondsInMinutes)) / secondsInMinutes; total_time = total_time % secondsInMinutes; } var totalSeconds = total_time; return (totalDays + " Days " + totalHours + " Hours " + totalMinutes + " Minutes " + totalSeconds + " Seconds"); }; function ExportChampPresetToExcel(presetNumber) { var headers = [ "ID", "NAME", "FACTION", "QUALITY", "TYPE", "LEVEL", "MIGHT", "ROW 1", "ROW 2", "ROW 3", "ROW 4", "ROW 5"]; var ExcelTable = document.createElement('table'); var ExcelBody = document.createElement('tbody'); var ExcelRow = document.createElement('tr'); var ExcelColumn = ""; for (i = 0; i < headers.length; i++) { ExcelColumn = document.createElement('th'); ExcelColumn.appendChild(document.createTextNode(headers[i])); ExcelRow.appendChild(ExcelColumn); } ExcelBody.appendChild(ExcelRow); var columns = []; var preset = getChampPresetObject(parseInt(presetNumber)); for (chId in preset) { var champ_item = uW.kocChampionItems[chId]; if (!champ_item) continue; columns = []; columns.push(chId); columns.push(champ_item.name); columns.push(CM.CHAMPION.getFactionClasses(champ_item.faction)); if (champ_item.unique) { columns.push("unique"); } else { columns.push(CM.CHAMPION.getRarityClasses(champ_item.rarity)); } columns.push(CM.CHAMPION.getEquipmentNames(champ_item.type)); columns.push(champ_item.level); columns.push(champ_item.might); for (var slotNumber = 1; slotNumber < STrChOMaxChampQuality + 1; slotNumber++) { var effectLine = champ_item.effects[slotNumber]; var effect = CM.ChampionManager.getEffect(effectLine, champ_item.level); columns.push(effect.amount + " " + effect.name); } columns.reverse(); ExcelRow = document.createElement('tr'); while (columns.length > 0) { ExcelColumn = document.createElement('td'); ExcelColumn.appendChild(document.createTextNode(columns.pop())); ExcelRow.appendChild(ExcelColumn); } ExcelBody.appendChild(ExcelRow); } ExcelTable.appendChild(ExcelBody); window.open('data:application/vnd.ms-excel,' + encodeURIComponent(ExcelTable.outerHTML)); } function ExportChampToExcel(preview) { var headers = [ "ID", "NAME", "FACTION", "QUALITY", "TYPE", "LEVEL", "MIGHT", "ROW 1", "ROW 2", "ROW 3", "ROW 4", "ROW 5"]; var ExcelTable = document.createElement('table'); var ExcelBody = document.createElement('tbody'); var ExcelRow = document.createElement('tr'); var ExcelColumn = ""; for (i = 0; i < headers.length; i++) { ExcelColumn = document.createElement('th'); ExcelColumn.appendChild(document.createTextNode(headers[i])); ExcelRow.appendChild(ExcelColumn); } ExcelBody.appendChild(ExcelRow); var columns = []; for (chId in uW.kocChampionItems) { if (preview && STrChOChampPresetData.previewChamp.indexOf(chId) == -1 ) continue; var champ_item = uW.kocChampionItems[chId]; if (!champ_item) continue; columns = []; columns.push(chId); columns.push(champ_item.name); columns.push(CM.CHAMPION.getFactionClasses(champ_item.faction)); if (champ_item.unique) { columns.push("unique"); } else { columns.push(CM.CHAMPION.getRarityClasses(champ_item.rarity)); } columns.push(CM.CHAMPION.getEquipmentNames(champ_item.type)); columns.push(champ_item.level); columns.push(champ_item.might); for (var slotNumber = 1; slotNumber < STrChOMaxChampQuality + 1; slotNumber++) { var effectLine = champ_item.effects[slotNumber]; var effect = CM.ChampionManager.getEffect(effectLine, champ_item.level); columns.push(effect.amount + " " + effect.name); } columns.reverse(); ExcelRow = document.createElement('tr'); while (columns.length > 0) { ExcelColumn = document.createElement('td'); ExcelColumn.appendChild(document.createTextNode(columns.pop())); ExcelRow.appendChild(ExcelColumn); } ExcelBody.appendChild(ExcelRow); } ExcelTable.appendChild(ExcelBody); window.open('data:application/vnd.ms-excel,' + encodeURIComponent(ExcelTable.outerHTML)); }; function ExportThronePresetToExcel(presetNumber) { var headers = [ "ID", "NAME", "FACTION", "QUALITY", "TYPE", "LEVEL", "MIGHT", "JEWEL", "ROW 1", "ROW 2", "ROW 3", "ROW 4", "ROW 5", "ROW 6"]; var ExcelTable = document.createElement('table'); var ExcelBody = document.createElement('tbody'); var ExcelRow = document.createElement('tr'); var ExcelColumn = ""; for (i = 0; i < headers.length; i++) { ExcelColumn = document.createElement('th'); ExcelColumn.appendChild(document.createTextNode(headers[i])); ExcelRow.appendChild(ExcelColumn); } ExcelBody.appendChild(ExcelRow); var columns = []; var preset = getThronePresetObject(parseInt(presetNumber)); for (trId in preset) { var throne_item = uW.kocThroneItems[trId]; if (!throne_item) continue; columns = []; columns.push(trId); columns.push(throne_item.name); columns.push(throne_item.faction); columns.push(throne_item.quality); columns.push(throne_item.type); columns.push(throne_item.level); columns.push(CM.ThroneView.getMightBonus(throne_item)); if (throne_item.jewel.valid) { var jewel_item = throne_item.jewel; var qlty = CM.thronestats.jewelGrowthLimit[jewel_item.quality]; var amt = CM.ThroneController.getEffectAmount(jewel_item, qlty); var jewelName = CM.ThroneController.jewelName(jewel_item); if (amt == 0) jewelName = "none"; columns.push(jewelName); } else { columns.push("none"); } for (var O in throne_item["effects"]) { var slotNumber = +(O.split("slot")[1]); var id = throne_item["effects"]["slot" + slotNumber]["id"]; var tier = parseInt(throne_item["effects"]["slot" + slotNumber]["tier"]); var level = throne_item.level; p = CM.thronestats.tiers[id][tier]; var effectName = CM.thronestats["effects"][id]["1"]; while (!p && (tier > 0)) { tier--; p = CM.thronestats.tiers[id][tier]; } if (!p) continue; // can't find stats for tier if (slotNumber == 6) { JewelQuality = throne_item["effects"]["slot" + slotNumber].quality; GrowthLimit = CM.thronestats.jewelGrowthLimit[JewelQuality]; if (GrowthLimit <= level) level = GrowthLimit } var Current = p.base + ((level * level + level) * p.growth * 0.5); columns.push(Current + "% " + effectName); } columns.reverse(); ExcelRow = document.createElement('tr'); while (columns.length > 0) { ExcelColumn = document.createElement('td'); ExcelColumn.appendChild(document.createTextNode(columns.pop())); ExcelRow.appendChild(ExcelColumn); } ExcelBody.appendChild(ExcelRow); } ExcelTable.appendChild(ExcelBody); window.open('data:application/vnd.ms-excel,' + encodeURIComponent(ExcelTable.outerHTML)); }; function getThroneMight() { var totMight = 0; for (trId in uW.kocThroneItems) { var throne_item = uW.kocThroneItems[trId]; if (throne_item == null || !throne_item) continue; totMight += CM.ThroneView.getMightBonus(throne_item); } return addCommas(totMight); }; function postThroneSlot( slot ) { var throneStats = GenerateThronePresetEffectsString(Seed.throne.slotEquip[slot], false); var D = []; D.push("Throne Room Slot #" + slot); if (STrChOThronePresetData.showThroneName) D.push("(" + STrChOThronePresetData.presetNames[slot] + ")"); if (STrChOThronePresetData.showThroneMight) D.push("TR Might: " + getThroneMight()); D.push(throneStats); sendChat(":::. |" + D.join("||")); }; function postThronePreset( presetIndex ) { var trP = getThronePresetObject(parseInt(presetIndex)); var D = []; for (var p in trP) D.push(p); var throneStats = GenerateThronePresetEffectsString(D, false); D = []; D.push("Throne Room Tag #" + presetIndex); if (STrChOThronePresetData.showThroneName) D.push("(" + STrChOThronePresetData.presetNames[presetIndex] + ")"); if (STrChOThronePresetData.showThroneMight) D.push("TR Might: " + getThroneMight()); D.push(throneStats); sendChat(":::. |" + D.join("||")); }; function GenerateThronePresetEffectsString(presetObject, htmlEffects ) { var J = new Array(); var Effects = []; for (var effect in CM.thronestats.effects) Effects[effect] = 0; var counter = presetObject.length; var items = []; for (i = 0; i < counter; i++) items.push(presetObject[i]); while (items.length > 0) { var throne_item = uW.kocThroneItems[items.pop()]; if (throne_item == null || !throne_item) continue; for (var O in throne_item["effects"]) { var slotNumber = +(O.split("slot")[1]); var id = throne_item["effects"]["slot" + slotNumber]["id"]; var tier = parseInt(throne_item["effects"]["slot" + slotNumber]["tier"]); var level = throne_item.level; p = CM.thronestats.tiers[id][tier]; while (!p && (tier > 0)) { tier--; p = CM.thronestats.tiers[id][tier]; } if (!p) continue; // can't find stats for tier if (slotNumber == 6) { JewelQuality = throne_item["effects"]["slot" + slotNumber].quality; GrowthLimit = CM.thronestats.jewelGrowthLimit[JewelQuality]; if (GrowthLimit <= level) level = GrowthLimit } var Current = p.base + ((level * level + level) * p.growth * 0.5); if (slotNumber <= parseInt(throne_item.quality)) Effects[id] += Current; } } for (effect in Effects) { if (Effects[effect] && (Effects[effect] != 0) && CM.thronestats["effects"][effect]) { var effectName = CM.thronestats["effects"][effect]["1"]; if (htmlEffects == true) { J.push("
    " + (Math.round(Effects[effect] * 100) / 100) + '% ' + effectName + "
    "); } else { J.push((Math.round(Effects[effect] * 100) / 100) + '% ' + effectName); } } } if (htmlEffects == true) { return J.join(""); } else { return J.join("||"); } }; function getObjectCollectionCount( objColl ) { var c = 0; for (var k in objColl) { c++; } return c; }; function getChampPresetTagCount(presetIndex) { switch(presetIndex) { case 1: return getObjectCollectionCount(STrChOChampPresetData.taggedItems01); break; case 2: return getObjectCollectionCount(STrChOChampPresetData.taggedItems02); break; case 3: return getObjectCollectionCount(STrChOChampPresetData.taggedItems03); break; case 4: return getObjectCollectionCount(STrChOChampPresetData.taggedItems04); break; } return 0; }; function getThronePresetTagCount(presetIndex) { switch(presetIndex) { case 1: return getObjectCollectionCount(STrChOThronePresetData.taggedItems01); break; case 2: return getObjectCollectionCount(STrChOThronePresetData.taggedItems02); break; case 3: return getObjectCollectionCount(STrChOThronePresetData.taggedItems03); break; case 4: return getObjectCollectionCount(STrChOThronePresetData.taggedItems04); break; case 5: return getObjectCollectionCount(STrChOThronePresetData.taggedItems05); break; case 6: return getObjectCollectionCount(STrChOThronePresetData.taggedItems06); break; case 7: return getObjectCollectionCount(STrChOThronePresetData.taggedItems07); break; case 8: return getObjectCollectionCount(STrChOThronePresetData.taggedItems08); break; case 9: return getObjectCollectionCount(STrChOThronePresetData.taggedItems09); break; case 10: return getObjectCollectionCount(STrChOThronePresetData.taggedItems10); break; case 11: return getObjectCollectionCount(STrChOThronePresetData.taggedItems11); break; case 12: return getObjectCollectionCount(STrChOThronePresetData.taggedItems12); break; case 13: return getObjectCollectionCount(STrChOThronePresetData.taggedItems13); break; case 14: return getObjectCollectionCount(STrChOThronePresetData.taggedItems14); break; case 15: return getObjectCollectionCount(STrChOThronePresetData.taggedItems15); break; case 16: return getObjectCollectionCount(STrChOThronePresetData.taggedItems16); break; case 17: return getObjectCollectionCount(STrChOThronePresetData.taggedItems17); break; case 18: return getObjectCollectionCount(STrChOThronePresetData.taggedItems18); break; case 19: return getObjectCollectionCount(STrChOThronePresetData.taggedItems19); break; case 20: return getObjectCollectionCount(STrChOThronePresetData.taggedItems20); break; case 21: return getObjectCollectionCount(STrChOThronePresetData.taggedItems21); break; case 22: return getObjectCollectionCount(STrChOThronePresetData.taggedItems22); break; case 23: return getObjectCollectionCount(STrChOThronePresetData.taggedItems23); break; case 24: return getObjectCollectionCount(STrChOThronePresetData.taggedItems24); break; }; return 0; }; function getThronePresetObject(presetIndex) { switch(presetIndex) { case 1: return STrChOThronePresetData.taggedItems01; break; case 2: return STrChOThronePresetData.taggedItems02; break; case 3: return STrChOThronePresetData.taggedItems03; break; case 4: return STrChOThronePresetData.taggedItems04; break; case 5: return STrChOThronePresetData.taggedItems05; break; case 6: return STrChOThronePresetData.taggedItems06; break; case 7: return STrChOThronePresetData.taggedItems07; break; case 8: return STrChOThronePresetData.taggedItems08; break; case 9: return STrChOThronePresetData.taggedItems09; break; case 10: return STrChOThronePresetData.taggedItems10; break; case 11: return STrChOThronePresetData.taggedItems11; break; case 12: return STrChOThronePresetData.taggedItems12; break; case 13: return STrChOThronePresetData.taggedItems13; break; case 14: return STrChOThronePresetData.taggedItems14; break; case 15: return STrChOThronePresetData.taggedItems15; break; case 16: return STrChOThronePresetData.taggedItems16; break; case 17: return STrChOThronePresetData.taggedItems17; break; case 18: return STrChOThronePresetData.taggedItems18; break; case 19: return STrChOThronePresetData.taggedItems19; break; case 20: return STrChOThronePresetData.taggedItems20; break; case 21: return STrChOThronePresetData.taggedItems21; break; case 22: return STrChOThronePresetData.taggedItems22; break; case 23: return STrChOThronePresetData.taggedItems23; break; case 24: return STrChOThronePresetData.taggedItems24; break; }; return null; }; function getChampPresetObject(presetIndex) { switch(presetIndex) { case 1: return STrChOChampPresetData.taggedItems01; break; case 2: return STrChOChampPresetData.taggedItems02; break; case 3: return STrChOChampPresetData.taggedItems03; break; case 4: return STrChOChampPresetData.taggedItems04; break; }; return null; }; function logit (msg) { var now = new Date(); GM_log (getServerId() +' @ '+ now.toTimeString().substring (0,8) +'.' + now.getMilliseconds() +': '+ msg); }; function addCommas(nStr){ nStr += ''; var x = nStr.split('.'); var x1 = x[0]; var x2 = x.length > 1 ? '.' + x[1] : ''; var rgx = /(\d+)(\d{3})/; while (rgx.test(x1)) { x1 = x1.replace(rgx, '$1' + ',' + '$2'); } return x1 + x2; }; function setCities(){ Cities.numCities = Seed.cities.length; Cities.cities = []; Cities.byID = {}; for (i=0; i 0) ? "Unique" : CM.CHAMPION.getRarityClasses(champ_item.rarity); D.push("Quality: " + quality); D.push("Type: " + uW.g_js_strings.champ[CM.CHAMPION.getEquipmentNames(champ_item.type)]); D.push("Level: " + champ_item.level); D.push("Might: " + champ_item.might); for (var slotNumber = 1; slotNumber < STrChOMaxChampQuality + 1; slotNumber++) { var effectLine = champ_item.effects[slotNumber]; var effect = CM.ChampionManager.getEffect(effectLine, champ_item.level); D.push("Row " + slotNumber + ": " + effect.amount + " " + effect.name); } var cText = D.join(separater); if (separater == "||") cText = ":::. |" + cText; return cText; } function getThroneItemStats(trId, separater) { separater = separater || " "; var throne_item = uW.kocThroneItems[trId]; if (throne_item == null || !throne_item) return ""; var D = []; D.push(throne_item.name); D.push("Faction: " + throne_item.faction); D.push("Quality: " + throne_item.createPrefix()); D.push("Type: " + throne_item.type); D.push("Level: " + throne_item.level); D.push("Might: " + CM.ThroneView.getMightBonus(throne_item)); for (slot in throne_item.effects) { try { var N = throne_item.effects[slot]; effect = CM.thronestats.effects[N.id]; tier = CM.thronestats.tiers[N.id][N.tier]; if (!tier) tier = CM.thronestats.tiers[N.id][N.tier - 1]; var base = tier.base || 0; var level = throne_item.level || 0; var growth = tier.growth || 0; if (slot == 'slot6') { //if it has a slot 6, it automatically has a jewel JewelQuality = throne_item["effects"]['slot6'].quality; GrowthLimit = CM.thronestats.jewelGrowthLimit[JewelQuality]; if (GrowthLimit <= level) level = GrowthLimit } percent = +(base + ((level * level + level) * growth * 0.5)); var wholeNumber = false; if (Math.round(parseFloat(percent)) == parseFloat(percent)) wholeNumber = true; percent = (percent > 0) ? "+" + percent : +percent; if (wholeNumber) percent = parseFloat(percent) .toFixed(0); else percent = parseFloat(percent).toFixed(2); css = (slot % 2 === 0) ? "even" : "odd"; B = +(slot.split("slot")[1]); effect[1] = effect[1]; D.push("Row " + B + ": " + percent + "% " + effect[1]); } catch (e) { } } var cText = D.join(separater); if (separater == "||") cText = ":::. |" + cText; return cText; } function displayCityAstone() { var city = pickAetherUseCity(); var m = ''; if (city == -1) { m = '
    No Aetherstone Available
    '; } else { var aether = parseInt(Seed.resources["city" + Seed.cities[city][0]]["rec5"][0]); m = '
    AETHER: City #' + (city + 1) + ' = ' + addCommas(aether) + '
    '; } return m; }; function pickAetherUseCity() { if (parseInt(Seed.resources["city" + Seed.cities[STrChOGeneralOptions.usedCityNum][0]]["rec5"][0]) >= STrChOGeneralOptions.minStones) return STrChOGeneralOptions.usedCityNum; if (STrChOGeneralOptions.usedAnyCity) { for (i = 0; i < Seed.cities.length; i++) { if (parseInt(Seed.resources["city" + Seed.cities[i][0]]["rec5"][0]) >= STrChOGeneralOptions.minStones) return i; } } return -1; }; function getThroneBrokeMight() { var totMight = 0; for (trId in uW.kocThroneItems) { var throne_item = uW.kocThroneItems[trId]; if (throne_item == null || !throne_item) continue; if (throne_item.isBroken) totMight += CM.ThroneView.getMightBonus(throne_item); } return "You have " + addCommas(totMight) + " in broken throne might"; }; function contentEval(source) { // Check for function input. if ('function' == typeof source) { // Execute this function with no arguments, by adding parentheses. // One set around the function, required for valid syntax, and a // second empty set calls the surrounded function. source = '(' + source + ')();' } // Create a script node holding this source code. var script = document.createElement('script'); script.setAttribute("type", "application/javascript"); script.textContent = source; // Insert the script node into the page, so it will run, and immediately // remove it to clean up. document.body.appendChild(script); document.body.removeChild(script); }; function addWatchFunctions() { // object.watch if (!Object.prototype.multiWatch) { Object.defineProperty(Object.prototype, "multiWatch", { enumerable: false, configurable: true, writable: false, value: function (prop, watcher) { var obj = this, oldval = this[prop], newval = oldval, getter = function () { return newval; }, setter = function (val) { oldval = newval; for (var f=0; f < obj.watchers[prop].length; f++) { obj.watchers[prop][f](prop, oldval, val); } newval = val; return newval; }; if (delete obj[prop]) { // can't watch constants Object.defineProperty(this, prop, { get: getter, set: setter, enumerable: true, configurable: true }); if (!obj.watchers) obj.watchers = {}; if (!obj.watchers[prop]) obj.watchers[prop] = []; // check for duplicates for (var i=0; i < obj.watchers[prop].length; i++){ if(obj.watchers[prop][i] === watcher){ return; } } //obj.watchers[prop].push( eval(watcher)); //add the new watcher in the watchers array obj.watchers[prop].push(watcher); } } }); } // object.unwatch if (!Object.prototype.multiUnwatch) { Object.defineProperty(Object.prototype, "multiUnwatch", { enumerable: false, configurable: true, writable: false, value: function (prop, watcher) { var obj = this; // if a watcher is supplied, just remove it if(arguments.length == 2) { for(var i=0; i < obj.watchers[prop].length; i++){ var w = obj.watchers[prop][i]; if(w == watcher) { obj.watchers[prop].splice(i, 1); } } } else { obj.watchers[prop] = []; } if (obj.watchers[prop].length == 0 ) { delete obj.watchers[prop]; var val = this[prop]; delete this[prop]; // remove accessors this[prop] = val; } } }); } } function matTypeof (v){ if (typeof (v) == 'object') { if (!v) return 'null'; else if (v.constructor.toString().indexOf("Array")>=0 && typeof(v.splice)=='function') return 'array'; else return 'object'; } return typeof (v); }; function inspect(obj, maxLevels, level, doFunctions){ var str = '', type, msg; if(level == null) level = 0; if(maxLevels == null) maxLevels = 1; if(maxLevels < 1) return 'Inspect Error: Levels number must be > 0'; if(obj == null) return 'ERROR: Object is NULL\n'; var indent = ''; for (var i=0; ispan").css('color', '#FFFF66'); else if (STrChOThroneUpgradeData.newUpgradeState == 1) $("#STrChOTab>span").css('color', 'cyan'); else if (STrChOThroneUpgradeData.newUpgradeState == 2) $("#STrChOTab>span").css('color', 'red'); }; function sendChat (msg){ //Simple method, as if it were typed in thru DOM document.getElementById('mod_comm_input').value = msg; uW.Chat.sendChat (); }; function sendComposedMail (sendTo, subject, msg) { var params = uW.Object.clone(ajfx); params.emailTo = sendTo; params.subject = subject; params.message = msg; params.requestType = "COMPOSED_MAIL"; new AjaxRequest(uW.g_ajaxpath + "ajax/getEmail.php" + uW.g_ajaxsuffix, { method:"post", parameters:params, onSuccess:function(message){ }, onFailure:function(){ } }) }; function unixTime () { return parseInt (new Date().getTime() / 1000) + uW.g_timeoff; }; function parseIntNan (n){ x = parseInt(n, 10); if (isNaN(x)) return 0; return x; }; function implodeUrlArgs (obj){ var a = []; for (var k in obj) a.push (k +'='+ encodeURI(obj[k]) ); return a.join ('&'); }; function addUrlArgs (url, args){ if (!args) return url; if (url.indexOf('?') < 0) url += '?'; else if (url.substr(url.length-1) != '&') url += '&'; if (matTypeof(args == 'object')) return url + implodeUrlArgs (args); return url + args; }; var myServerId = null; //example: https://www150.kingdomsofcamelot.com function getServerId() { if (myServerId == null){ var m=/^[a-zA-Z]+([0-9]+)\./.exec(document.location.hostname); if (m) myServerId = m[1]; else myServerId = '??'; } return myServerId; }; var withAnim = null; if (CM && CM.ThronePanelView) withAnim = CM.ThronePanelView.statusAnim; function noAnim(result) { if (result == "success") { var isChamp = true; var champUpgEnhContainer = document.getElementById('champUpgEnhContainer'); if (!champUpgEnhContainer || champUpgEnhContainer == null) isChamp = false; var msg = "Manual"; if (isChamp) { var attempt_type = document.getElementById('upgEnhButton'); msg += ' ' + attempt_type.innerHTML.replace('--', '').trim() + ' successful. Item:'; var upgEnhTitle = document.getElementById('upgEnhTitle'); msg += ' ' + upgEnhTitle.innerHTML; } else { var thronePanelItemRequirementsContainer = document.getElementById('thronePanelItemRequirementsContainer'); attempt_type = thronePanelItemRequirementsContainer.getElementsByClassName('gemButtonv2')[0]; msg += ' ' + attempt_type.innerHTML + ' successful. Item:'; var thronePanelName = document.getElementById('thronePanelName'); msg += ' ' + thronePanelName.innerHTML; } SuccessLog(msg); //if (!OrganizerDisableSuccessCheck) { if (withAnim) withAnim(result); //} else { // unsafeWindow.cm.ThroneView.renderInventory(unsafeWindow.kocThroneItems); //} } //$("div.thronePanelItemContainer").append("
    " + result + "
    "); } function autoSelectForged() { var ChampID = 0; ChampID = Tabs.champOrganizer.panelId; var champItem = uW.kocChampionItems[ChampID]; var nextForgedID = getNextAvailableForged(champItem); if (nextForgedID != 0) { var selected_index = 0; $(document.querySelector("#upgEnhBuffSelect")).children("option").each(function () { if ( $(this).text() == uW.ksoItems[nextForgedID].name ) { selected_index = $(this).val(); return false; } }); $('#upgEnhBuffSelect').val(selected_index).change(); CM.ChampionModalView.renderCosts(); CM.ChampionUpgEnhManager.calcCosts(); if (selected_index > 0) { var upgEnhCostNum = document.getElementsByClassName('upgEnhCostNum')[1]; $(upgEnhCostNum).text(uW.ksoItems[nextForgedID].count + "/1"); $(upgEnhCostNum).css('opacity', 1); var upgEnhCostIconItem = document.getElementById('upgEnhCostIconItem'); upgEnhCostIconItem.className = 'upgEnhCostIcon i' + nextForgedID; } } // not needed as champ have a built in safety already, unlike throne // if (STrChOGeneralOptions.safetyOn) { // setTimeout(function() { // safetyCheck(); // }, 2000); // } } //var champSafetyCheck = function () { // var sel = document.getElementById('upgEnhCostSelect'); // $(sel).remove(1); // if (champCheckAstoneLevel()) { // $(document.getElementById('upgEnhButton')).click(function() { // champCheckAstoneLevel(); // champSafetyCheck(); // }); // } //} //var champCheckAstoneLevel = function () { // var stones = parseInt(Seed.resources["city" + unsafeWindow.currentcityid]["rec5"][0]); // if (stones < STrChOGeneralOptions.safetyLimit || isNaN(stones) ) { // champDisableUpgradeButton(); // return false; // } else { // return true; // } //} //var champDisableUpgradeButton = function() { // var container = document.querySelector('#upgEnhBody'); // $(container).chilren('div.gemButtonv2').remove(); // var an = $(''); // an.addClass('gemButtonv2 gray'); // an.html('Low A-Stone'); // $(container).append(an); //} function autoSelectMasters() { var ThroneID = 0; ThroneID = Tabs.throneOrganizer.panelId; var throneItem = uW.kocThroneItems[ThroneID]; var nextMastersID = 0; nextMastersID = getNextAvailableMasters(throneItem); if (nextMastersID == 0) { unselectToken(); } else { var selected_index = 0; $(document.querySelector("#buffDropDown")).children("option").each(function () { if ( $(this).text() == uW.ksoItems[nextMastersID].name ) { selected_index = $(this).val(); return false; } }); $('#buffDropDown').val(selected_index).change(); if (selected_index > 0) { var thronePanelBuffPrice = document.getElementById('thronePanelBuffPrice'); thronePanelBuffPrice.innerHTML = '' + uW.ksoItems[nextMastersID].count + '/1'; var thronePanelBuffIcon = document.getElementById('thronePanelBuffIcon'); thronePanelBuffIcon.className = 'icon mastersToken i' + nextMastersID; thronePanelBuffIcon.style.backgroundImage = "url('"+gameurl+"img/items/70/masters_token_bg.png')"; thronePanelBuffIcon.innerHTML = '
    ' + STrChOTokenText[nextMastersID] + '
    '; } } if (STrChOGeneralOptions.safetyOn) { setTimeout(function() { throneSafetyCheck(); }, 2000); } } var throneSafetyCheck = function () { // var sel = document.getElementById("costDropDown"); // remove the gem option // $(sel).remove(1); if (throneCheckAstoneLevel()) { // see if we have enough a-stone $(document.querySelector("#thronePanelItemRequirementsContainer")).children("a.gemButtonv2").click(function () { // every time the button is pushed, check the levels throneCheckAstoneLevel(); throneSafetyCheck(); }); } } var throneCheckAstoneLevel = function () { // check limit var stones = parseInt(Seed.resources["city" + uW.currentcityid]["rec5"][0]); if (stones < STrChOGeneralOptions.safetyLimit || isNaN(stones) ) { throneDisableUpgradeButton(); return false; } else { return true; } } var throneDisableUpgradeButton = function () { // change the appearance var container = document.querySelector('#thronePanelItemRequirementsContainer'); $(container).children("a.gemButtonv2").remove(); var an = $("
    "); an.addClass("gemButtonv2 gray"); an.html("Low A-Stone"); $(container).append(an); } function getMastersText(ksoID) { switch(ksoID) { case 20060: return "LII"; //52T case 20059: return "LI"; case 20058: return "L"; case 20057: return "XLIX"; case 20056: return "XLVIII"; case 20055: return "XLVII"; case 20054: return "XLVI"; //46T case 20053: return "XLV"; case 20052: return "XLIV"; case 20051: return "XLIII"; case 20050: return "XLII"; case 20049: return "XLI"; case 20048: return "XL"; case 20047: return "XXXIX"; case 20046: return "XXXVIII"; case 20045: return "XXXVII"; case 20044: return "XXXVI"; case 20043: return "XXXV"; case 20042: return "XXXIV"; case 20041: return "XXXIII"; case 20040: return "XXXII"; //32t case 20039: return "XXXI"; case 20038: return "XXX"; case 20037: return "XXIX"; case 20036: return "XXVIII"; case 20035: return "XXVII"; case 20034: return "XXVI"; case 20033: return "XXV"; case 20032: return "XXIV"; case 20031: return "XXIII"; case 20030: return "XXII"; case 20029: return "XXI"; case 20028: return "XX"; case 20027: return "XIX"; case 20026: return "XVIII"; case 20025: return "XVII"; case 20024: return "XVI"; case 20023: return "XV"; case 20021: return "XIV"; case 20020: return "XIII"; case 20018: return "XII"; case 20017: return "XI"; case 20016: return "X"; case 20015: return "IX"; case 20014: return "VII"; case 20013: return "V"; case 20012: return "III"; default: return ""; } } var buffChanged = false; function unselectToken() { //TODO // if the user manually selected a buff, leave it alone if (!buffChanged) { // set the pull down to nothing when first displayed $(document.querySelector("#buffDropDown")).val(0); // set the pull down to nothing when first displayed $(document.querySelector("#costDropDown")).val(0); // remove the icon .... $(document.querySelector("#thronePanelBuffIcon")).removeClass().addClass('icon').addClass('i0'); $(document.querySelector("#thronePanelBuffPrice")).children("span.items").html(''); // install an action to track when a buff is selected $(document.querySelector("#buffDropDown")).change(function () { buffChanged = true; }); // install an action to track when a buff is selected $(document.querySelector("#costDropDown")).change(function () { buffChanged = true; }); // reset once the dialog is closed $(".throneContainer").children("div.close").click(function () { buffChanged = false; }); } } function getNextAvailableForged(champItem) { var curCode = 0; if (uW.ksoItems[21093].count > 0 && champItem.level <= 44) curCode = 21093; //45s if (uW.ksoItems[21092].count > 0 && champItem.level <= 43) curCode = 21092; //44s if (uW.ksoItems[21091].count > 0 && champItem.level <= 42) curCode = 21091; //43s if (uW.ksoItems[21090].count > 0 && champItem.level <= 41) curCode = 21090; //42s if (uW.ksoItems[21089].count > 0 && champItem.level <= 40) curCode = 21089; //41s if (uW.ksoItems[21088].count > 0 && champItem.level <= 39) curCode = 21088; //40s if (uW.ksoItems[21087].count > 0 && champItem.level <= 38) curCode = 21087; //39s if (uW.ksoItems[21086].count > 0 && champItem.level <= 37) curCode = 21086; //38s if (uW.ksoItems[21085].count > 0 && champItem.level <= 36) curCode = 21085; //37s if (uW.ksoItems[21084].count > 0 && champItem.level <= 35) curCode = 21084; //36s if (uW.ksoItems[21083].count > 0 && champItem.level <= 34) curCode = 21083; //35s if (uW.ksoItems[21082].count > 0 && champItem.level <= 33) curCode = 21082; //34s if (uW.ksoItems[21081].count > 0 && champItem.level <= 32) curCode = 21081; //33s if (uW.ksoItems[21080].count > 0 && champItem.level <= 31) curCode = 21080; //32s if (uW.ksoItems[21079].count > 0 && champItem.level <= 30) curCode = 21079; //31s if (uW.ksoItems[21078].count > 0 && champItem.level <= 29) curCode = 21078; //30s if (uW.ksoItems[21077].count > 0 && champItem.level <= 28) curCode = 21077; //29s if (uW.ksoItems[21076].count > 0 && champItem.level <= 27) curCode = 21076; //28s if (uW.ksoItems[21075].count > 0 && champItem.level <= 26) curCode = 21075; //27s if (uW.ksoItems[21074].count > 0 && champItem.level <= 25) curCode = 21074; //26s if (uW.ksoItems[21073].count > 0 && champItem.level <= 24) curCode = 21073; //25s if (uW.ksoItems[21072].count > 0 && champItem.level <= 23) curCode = 21072; //24s///////////// if (uW.ksoItems[21071].count > 0 && champItem.level <= 22) curCode = 21071; //23s if (uW.ksoItems[21070].count > 0 && champItem.level <= 21) curCode = 21070; //22s if (uW.ksoItems[21069].count > 0 && champItem.level <= 20) curCode = 21069; //21s if (uW.ksoItems[21068].count > 0 && champItem.level <= 19) curCode = 21068; //20s if (uW.ksoItems[21067].count > 0 && champItem.level <= 18) curCode = 21067; //19s if (uW.ksoItems[21066].count > 0 && champItem.level <= 17) curCode = 21066; //18s if (uW.ksoItems[21065].count > 0 && champItem.level <= 16) curCode = 21065; //17s if (uW.ksoItems[21064].count > 0 && champItem.level <= 15) curCode = 21064; //16s if (uW.ksoItems[21063].count > 0 && champItem.level <= 14) curCode = 21063; //15s if (uW.ksoItems[21062].count > 0 && champItem.level <= 13) curCode = 21062; //14s if (uW.ksoItems[21061].count > 0 && champItem.level <= 12) curCode = 21061; //13s if (uW.ksoItems[21060].count > 0 && champItem.level <= 11) curCode = 21060; //12s if (uW.ksoItems[21059].count > 0 && champItem.level <= 10) curCode = 21059; //11s if (uW.ksoItems[21055].count > 0 && champItem.level <= 9) curCode = 21055; //10s if (uW.ksoItems[21054].count > 0 && champItem.level <= 8) curCode = 21054; //9s if (uW.ksoItems[21057].count > 0 && champItem.level <= 7) curCode = 21057; //8s if (uW.ksoItems[21053].count > 0 && champItem.level <= 6) curCode = 21053; //7s if (uW.ksoItems[21056].count > 0 && champItem.level <= 5) curCode = 21056; //6s return curCode; } function getNextAvailableMasters(throneItem) { var curCode = 0; if (uW.ksoItems[20060].count > 0 && throneItem.level <= 51) curCode = 20060; // +52master if (uW.ksoItems[20059].count > 0 && throneItem.level <= 50) curCode = 20059; // +51 if (uW.ksoItems[20058].count > 0 && throneItem.level <= 49) curCode = 20058; // +50 if (uW.ksoItems[20059].count > 0 && throneItem.level <= 48) curCode = 20057; // +49 if (uW.ksoItems[20056].count > 0 && throneItem.level <= 47) curCode = 20056; // +48 if (uW.ksoItems[20055].count > 0 && throneItem.level <= 46) curCode = 20055; // +47 if (uW.ksoItems[20054].count > 0 && throneItem.level <= 45) curCode = 20054; // +46 if (uW.ksoItems[20053].count > 0 && throneItem.level <= 44) curCode = 20053; // +45 if (uW.ksoItems[20052].count > 0 && throneItem.level <= 43) curCode = 20052; // +44 if (uW.ksoItems[20051].count > 0 && throneItem.level <= 42) curCode = 20051; // +43 if (uW.ksoItems[20050].count > 0 && throneItem.level <= 41) curCode = 20050; // +42 if (uW.ksoItems[20049].count > 0 && throneItem.level <= 40) curCode = 20049; // +41 if (uW.ksoItems[20048].count > 0 && throneItem.level <= 39) curCode = 20048; // +40 if (uW.ksoItems[20047].count > 0 && throneItem.level <= 38) curCode = 20047; // +39 if (uW.ksoItems[20046].count > 0 && throneItem.level <= 37) curCode = 20046; // +38 if (uW.ksoItems[20045].count > 0 && throneItem.level <= 36) curCode = 20045; // +37 if (uW.ksoItems[20044].count > 0 && throneItem.level <= 35) curCode = 20044; // +36 if (uW.ksoItems[20043].count > 0 && throneItem.level <= 34) curCode = 20042; // +35 if (uW.ksoItems[20042].count > 0 && throneItem.level <= 33) curCode = 20042; // +34 if (uW.ksoItems[20041].count > 0 && throneItem.level <= 32) curCode = 20041; // +33 if (uW.ksoItems[20040].count > 0 && throneItem.level <= 31) curCode = 20040; // +32 if (uW.ksoItems[20039].count > 0 && throneItem.level <= 30) curCode = 20039; // +31 if (uW.ksoItems[20038].count > 0 && throneItem.level <= 29) curCode = 20038; //30s if (uW.ksoItems[20037].count > 0 && throneItem.level <= 28) curCode = 20037; //29s if (uW.ksoItems[20036].count > 0 && throneItem.level <= 27) curCode = 20036; //28s if (uW.ksoItems[20035].count > 0 && throneItem.level <= 26) curCode = 20035; //27s if (uW.ksoItems[20034].count > 0 && throneItem.level <= 25) curCode = 20034; //26s if (uW.ksoItems[20033].count > 0 && throneItem.level <= 24) curCode = 20033; //25s if (uW.ksoItems[20032].count > 0 && throneItem.level <= 23) curCode = 20032; //24s if (uW.ksoItems[20031].count > 0 && throneItem.level <= 22) curCode = 20031; //23s if (uW.ksoItems[20030].count > 0 && throneItem.level <= 21) curCode = 20030; //22s if (uW.ksoItems[20029].count > 0 && throneItem.level <= 20) curCode = 20029; //21s if (uW.ksoItems[20028].count > 0 && throneItem.level <= 19) curCode = 20028; //20s if (uW.ksoItems[20027].count > 0 && throneItem.level <= 18) curCode = 20027; //19s if (uW.ksoItems[20026].count > 0 && throneItem.level <= 17) curCode = 20026; //18s if (uW.ksoItems[20025].count > 0 && throneItem.level <= 16) curCode = 20025; //17s if (uW.ksoItems[20024].count > 0 && throneItem.level <= 15) curCode = 20024; //16s if (uW.ksoItems[20023].count > 0 && throneItem.level <= 14) curCode = 20023; //15s if (uW.ksoItems[20021].count > 0 && throneItem.level <= 13) curCode = 20021; //14s if (uW.ksoItems[20020].count > 0 && throneItem.level <= 12) curCode = 20020; //13s if (uW.ksoItems[20018].count > 0 && throneItem.level <= 11) curCode = 20018; //12s if (uW.ksoItems[20017].count > 0 && throneItem.level <= 10) curCode = 20017; //11s if (uW.ksoItems[20016].count > 0 && throneItem.level <= 9) curCode = 20016; //10s if (uW.ksoItems[20015].count > 0 && throneItem.level <= 8) curCode = 20015; //9s if (uW.ksoItems[20015].count > 0 && throneItem.level <= 7) curCode = 20015; //9s if (uW.ksoItems[20014].count > 0 && throneItem.level <= 6) curCode = 20014; //7s if (uW.ksoItems[20014].count > 0 && throneItem.level <= 5) curCode = 20014; //7s if (uW.ksoItems[20013].count > 0 && throneItem.level <= 4) curCode = 20013; //5s if (uW.ksoItems[20013].count > 0 && throneItem.level <= 3) curCode = 20013; //5s if (uW.ksoItems[20012].count > 0 && throneItem.level <= 2) curCode = 20012; //3s if (uW.ksoItems[20012].count > 0 && throneItem.level <= 1) curCode = 20012; //3s return curCode; } function disableAnimation(disable) { if (disable) { // override the success failure animations CM.ThronePanelView.statusAnim = noAnim; } else { if (withAnim) CM.ThronePanelView.statusAnim = withAnim; } }; function getChampName( presetIndex ) { //presetIndex is 1 based but needs to be 0 based for champ name so we will minus 1 var thisChampion = Seed.champion.champions[presetIndex-1]; return thisChampion.name; }; function getChampID( presetIndex ) { //presetIndex is 1 based but needs to be 0 based for champ name so we will minus 1 var thisChampion = Seed.champion.champions[presetIndex-1]; return thisChampion.championId; }; function postChampSlot ( slot ) { var champId = getChampID(slot); var D = []; for (var chId in uW.kocChampionItems) if (uW.kocChampionItems[chId].equippedTo == champId) D.push(chId); var champStats = GenerateChampPresetEffectsString(D, false); D = []; D.push("Champ Hall Slot #" + slot); D.push(getChampName(slot)); if (STrChOChampPresetData.showChampName) D.push("(" + STrChOChampPresetData.presetNames[slot-1] + ")"); if (STrChOChampPresetData.showChampMight) D.push(getChampMight()); D.push(champStats); sendChat(":::. |" + D.join("||")); }; function postChampPreset ( presetIndex ) { var chP = getChampPresetObject(parseInt(presetIndex)); var D = []; for (var p in chP) D.push(p); var champStats = GenerateChampPresetEffectsString(D, false); D = []; D.push("Champ Hall Tag #" + presetIndex); D.push(getChampName(presetIndex)); if (STrChOChampPresetData.showChampName) D.push("(" + STrChOChampPresetData.presetNames[presetIndex-1] + ")"); if (STrChOChampPresetData.showChampMight) D.push(getChampMight()); D.push(champStats); sendChat(":::. |" + D.join("||")); }; function getChampMight() { var totMight = 0; for (chId in uW.kocChampionItems) { var champ_item = uW.kocChampionItems[chId]; var q = champ_item.rarity; if (champ_item.unique != 0) q -= 1; var l = champ_item.level; totMight += CM.thronestats.mightByQuality[q].Might + CM.thronestats.mightByLevel[l].Might; } return "Approx Might: " + addCommas(totMight); }; function GenerateChampPresetEffectsString( presetObject, htmlEffects ) { var ChampStats = []; var TroopStats = []; for (var eff in CM.thronestats.effects) TroopStats[eff] = 0; //base stats for champ with no items ChampStats[201] = 30; ChampStats[202] = 0; ChampStats[203] = 7; ChampStats[204] = 27; ChampStats[205] = 27; ChampStats[206] = 60; ChampStats[207] = 4; ChampStats[208] = 3; ChampStats[209] = 3; var counter = presetObject.length; var items = []; for (i = 0; i < counter; i++) items.push(presetObject[i]); var SetBonus = {}; for (var y in items) { // calculate unique set bonuses var champ_item = uW.kocChampionItems[items[y]]; if (champ_item == null || !champ_item) continue; for (var O in champ_item["effects"]) { var effectLine = champ_item["effects"][O]; var id = effectLine["id"]; if (id >= 300) { var effect = CM.ChampionManager.getEffect(effectLine, champ_item.level); if (!SetBonus[champ_item.set]) { SetBonus[champ_item.set] = 0; } SetBonus[champ_item.set] += effect.amount; } } } while (items.length > 0) { var champ_item = uW.kocChampionItems[items.pop()]; if (champ_item == null || !champ_item) continue; for (var O in champ_item["effects"]) { var effectLine = champ_item["effects"][O]; var id = effectLine["id"]; var effect = CM.ChampionManager.getEffect(effectLine, champ_item.level); var bonus = 0; if (id<300) bonus = SetBonus[champ_item.set] || 0; if (id >= 200) { if (!ChampStats[id]) { ChampStats[id] = 0; } ChampStats[id] += effect.amount + (effect.amount*bonus); } else { TroopStats[id] += effect.amount; } } } var J = new Array(); if (htmlEffects) { J.push("
    CHAMP STATS
    "); } else { J.push("CHAMP STATS"); } for (stat in ChampStats) { var effectName = uW.g_js_strings.effects["name_"+ stat]; if (ChampStats[stat] && ChampStats[stat] != 0) { if (stat>= 300) { str = 'Inc. Bonus '+effectName.split(" equipment")[0]; var champvalue = +((ChampStats[stat]*100).toFixed(2))+"%"; if (htmlEffects) { J.push("
      " + str + " " + champvalue + "
    "); } else { J.push("  " + str + " " + champvalue); } } else { if (htmlEffects) { J.push("
      " + effectName + " " + ChampStats[stat].toFixed(2) + "
    "); } else { J.push("  " + effectName + " " + ChampStats[stat].toFixed(2)); } } } } if (htmlEffects) { J.push("
    TROOP STATS
    "); } else { J.push("TROOP STATS"); } for (stat in TroopStats) { var effectName = CM.thronestats.effects[stat][1]; if (TroopStats[stat] && TroopStats[stat] != 0) { if (htmlEffects) { J.push("
      " + effectName + " " + (Math.round(TroopStats[stat]*100)/100) + "
    "); } else { J.push("  " + effectName + " " + (Math.round(TroopStats[stat]*100)/100)); } } } if (htmlEffects) { return J.join(""); } else { return J.join("||"); } } function getChampBrokeMight() { var totMight = 0; for (chId in uW.kocChampionItems) { var champ_item = uW.kocChampionItems[chId]; if (champ_item.status == 1) continue; var q = champ_item.rarity; if (champ_item.unique != 0) q -= 1; var l = champ_item.level; totMight += CM.thronestats.mightByQuality[q].Might + CM.thronestats.mightByLevel[l].Might; } return "You have approx " + addCommas(totMight) + " in broken champ might"; }; function ChampLoadDomainSalvageData(domainId) { var t = Tabs.champSalvager; s = GM_getValue('STrChOChampSalvageData_'+ domainId + uW.tvuid); if (s==null) { alert("Unable to find data from domain: " + domainId); return; } if (s != null){ opts = JSON2.parse (s); for (k in opts){ if (matTypeof(opts[k]) == 'object') for (kk in opts[k]) STrChOChampSalvageData[k][kk] = opts[k][kk]; else STrChOChampSalvageData[k] = opts[k]; } } // recreate the objects w/ functions for (k in STrChOChampSalvageData.ruleSet) { var r = STrChOChampSalvageData.ruleSet[k]; var rule = new ChampRule(r.type, r.faction, r.conditions, r.advancedrule); for (j in rule.conditions) { rule.conditions[j].ChampCheckCondition = ChampCheckCondition; } STrChOChampSalvageData.ruleSet[k] = rule; } // turn off STrChOChampSalvageData.active = false; clearInterval(t.sTimer); clearInterval(t.delTimer); t.deleting = false; SAVESTrChOChampSalvageData(); alert('Salvage settings loaded from domain ' + domainId); t.buildChampRuleDisplay(); }; function ThroneLoadDomainSalvageData(domainId) { var t = Tabs.throneSalvager; s = GM_getValue ('STrChOThroneSalvageData_'+ domainId + uW.tvuid); if (s==null) { alert("Unable to find data from domain: " + domainId); return; } if (s != null){ opts = JSON2.parse (s); for (k in opts){ if (matTypeof(opts[k]) == 'object') for (kk in opts[k]) STrChOThroneSalvageData[k][kk] = opts[k][kk]; else STrChOThroneSalvageData[k] = opts[k]; } } // recreate the objects w/ functions for (k in STrChOThroneSalvageData.ruleSet) { var r = STrChOThroneSalvageData.ruleSet[k]; var rule = new ThroneRule(r.type, r.faction, r.conditions, r.advancedrule); for (j in rule.conditions) { rule.conditions[j].ThroneCheckCondition = ThroneCheckCondition; } STrChOThroneSalvageData.ruleSet[k] = rule; } // turn off STrChOThroneSalvageData.active = false; clearInterval(t.sTimer); clearInterval(t.delTimer); t.deleting = false; SAVESTrChOThroneSalvageData(); alert('Salvage settings loaded from domain ' + domainId); t.buildThroneRuleDisplay(); }; function secondsToTime(seconds) { if (seconds == 0) return "Complete"; var remainderSeconds = seconds % 60; seconds = seconds - remainderSeconds; var remainderMinutes = seconds / 60; return (remainderMinutes + 'm ' + remainderSeconds + 's'); }; function onUnload (){ if (uW.STrChOLoaded) { if (mainPop) { var pos = mainPop.getLocation(); STrChOGeneralOptions.xPos = pos.x; STrChOGeneralOptions.yPos = pos.y; //STrChOGeneralOptions.xPos = mainPop.getLocation.x; //STrChOGeneralOptions.yPos = mainPop.getLocation.y; SAVESTrChOGeneralOptions(); } } }; function RefreshCamelot() { //This piece of code was taken from KoC Power BOT. All credit goes to them for this piece. Thanks guys/gals! var serverId = getServerId(); var goto = window.location.protocol + '//apps.facebook.com/kingdomsofcamelot/?s=' + serverId; if (document.URL.match(/standalone=1/i)) { goto = window.location.protocol + '//www.kabam.com/games/kingdoms-of-camelot/play?s=' + serverId; }; setTimeout (function (){window.top.location = goto;}, 0); }; // emulate protoype's Ajax.Request ... function AjaxRequest (url, opts) { //emulate protoype's Ajax.Request ... var headers = { 'X-Requested-With': 'XMLHttpRequest', 'X-Prototype-Version': '1.6.1', 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*' }; var ajax = null; if (window.XMLHttpRequest) ajax=new XMLHttpRequest(); else ajax=new ActiveXObject("Microsoft.XMLHTTP"); if (opts.method==null || opts.method=='') method = 'GET'; else method = opts.method.toUpperCase(); if (method == 'POST'){ headers['Content-type'] = 'application/x-www-form-urlencoded; charset=UTF-8'; } else if (method == 'GET'){ addUrlArgs (url, opts.parameters); } ajax.onreadystatechange = function(){ // ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; states 0-4 if (ajax.readyState==4) { if (ajax.status >= 200 && ajax.status < 305) if (opts.onSuccess) opts.onSuccess(ajax); else if (opts.onFailure) opts.onFailure(ajax); } else { if (opts.onChange) opts.onChange (ajax); } } ajax.open(method, url, true); // always async! for (var k in headers) ajax.setRequestHeader (k, headers[k]); if (matTypeof(opts.requestHeaders)=='object') for (var k in opts.requestHeaders) ajax.setRequestHeader (k, opts.requestHeaders[k]); if (method == 'POST'){ var a = []; for (k in opts.parameters){ if(matTypeof(opts.parameters[k]) == 'object') for(var h in opts.parameters[k]) a.push (k+'['+h+'] ='+ opts.parameters[k][h] ); else a.push (k +'='+ opts.parameters[k] ); } ajax.send (a.join ('&')); } else { ajax.send(); } }; function MyAjaxRequest (url, o, noRetryX) { if (DEBUG_TRACE) logit (" 0 myAjaxRequest: "+ url +"\n" + inspect (o, 2, 1)); var opts = uW.Object.clone(o); var wasSuccess = o.onSuccess; var wasFailure = o.onFailure; var retry = 0; var delay = 10; var noRetry = noRetry===true?true:false; opts.onSuccess = mySuccess; opts.onFailure = myFailure; new AjaxRequest(url, opts); return; function myRetry(){ ++retry; new AjaxRequest(url, opts); delay = delay * 2.25; } function myFailure(){ var o = {}; o.ok = false; o.errorMsg = "AJAX Communication Failure"; wasFailure (o); } function mySuccess (msg){ var rslt = eval("(" + msg.responseText + ")"); if (!rslt) { logit("Message error: " + inspect(msg,3,1)); return; } var x; if (window.EmulateAjaxError){ rslt.ok = false; rslt.error_code=8; } if (rslt.ok){ if (rslt.updateSeed) uW.update_seed(rslt.updateSeed); wasSuccess (rslt); return; } rslt.errorMsg = uW.printLocalError((rslt.error_code || null), (rslt.msg || null), (rslt.feedback || null)); if (!noRetry && (rslt.error_code==0 || rslt.error_code==8 || rslt.error_code==1 || rslt.error_code==3)){ dialogRetry (inspect(rslt.errorMsg), delay, function(){myRetry()}, function(){wasSuccess (rslt)}, rslt.error_code); } else { wasSuccess (rslt); } } }; function ExportThroneToExcel(isPreview) { var headers = [ "ID", "NAME", "FACTION", "QUALITY", "TYPE", "LEVEL", "MIGHT", "JEWEL", "ROW 1", "ROW 2", "ROW 3", "ROW 4", "ROW 5", "ROW 6"]; var ExcelTable = document.createElement('table'); var ExcelBody = document.createElement('tbody'); var ExcelRow = document.createElement('tr'); var ExcelColumn = ""; for (i = 0; i < headers.length; i++) { ExcelColumn = document.createElement('th'); ExcelColumn.appendChild(document.createTextNode(headers[i])); ExcelRow.appendChild(ExcelColumn); } ExcelBody.appendChild(ExcelRow); var columns = []; for (trId in uW.kocThroneItems) { if (isPreview && !STrChOThronePresetData.previewThrone[trId]) continue; var throne_item = uW.kocThroneItems[trId]; if (!throne_item) continue; columns = []; columns.push(trId); columns.push(throne_item.name); columns.push(throne_item.faction); columns.push(throne_item.quality); columns.push(throne_item.type); columns.push(throne_item.level); columns.push(CM.ThroneView.getMightBonus(throne_item)); if (throne_item.jewel != null) { if (throne_item.jewel.valid) { var jewel_item = throne_item.jewel; var qlty = CM.thronestats.jewelGrowthLimit[jewel_item.quality]; var amt = CM.ThroneController.getEffectAmount(jewel_item, qlty); var jewelName = CM.ThroneController.jewelName(jewel_item); if (amt == 0) jewelName = "none"; columns.push(jewelName); } else { columns.push("none"); } } else { columns.push("none"); } for (var O in throne_item["effects"]) { var slotNumber = +(O.split("slot")[1]); var id = throne_item["effects"]["slot" + slotNumber]["id"]; var tier = parseInt(throne_item["effects"]["slot" + slotNumber]["tier"]); var level = throne_item.level; p = CM.thronestats.tiers[id][tier]; var effectName = CM.thronestats["effects"][id]["1"]; while (!p && (tier > 0)) { tier--; p = CM.thronestats.tiers[id][tier]; } if (!p) continue; // can't find stats for tier if (slotNumber == 6) { JewelQuality = throne_item["effects"]["slot" + slotNumber].quality; GrowthLimit = CM.thronestats.jewelGrowthLimit[JewelQuality]; if (GrowthLimit <= level) level = GrowthLimit } var Current = p.base + ((level * level + level) * p.growth * 0.5); columns.push(Current + "% " + effectName); } columns.reverse(); ExcelRow = document.createElement('tr'); while (columns.length > 0) { ExcelColumn = document.createElement('td'); ExcelColumn.appendChild(document.createTextNode(columns.pop())); ExcelRow.appendChild(ExcelColumn); } ExcelBody.appendChild(ExcelRow); } ExcelTable.appendChild(ExcelBody); window.open('data:application/vnd.ms-excel,' + encodeURIComponent(ExcelTable.outerHTML)); } function ConvertUniqueAndBuildChampCard (champId, lvl) { var t = Tabs.champUniques; var ChampCard = {}; ChampCard = t.UniqueItems[champId]; ChampCard.id = ChampCard.Id; ChampCard.name = ChampCard.Name; if (ChampCard.Faction != 0) { ChampCard.faction = ChampCard.Faction; ChampCard.type = ChampCard.Type; } else { ChampCard.faction = 'unknown'; ChampCard.type = 'unknown'; ChampCard.unknown = true; } ChampCard.unique = ChampCard.id; ChampCard.level = parseInt(lvl); ChampCard.rarity = 5; ChampCard.createPrefix = function () { return ""; }; ChampCard.createSuffix = function () { return ""; }; ChampCard.effects = {}; var effects = eval(ChampCard.Effects); var slot = 0; for (k in effects) { slot++ ChampCard.effects["slot"+slot] = {}; ChampCard.effects["slot"+slot].id = effects[k].type; ChampCard.effects["slot"+slot].tier = effects[k].tier; } return BuildChampCard(ChampCard); }; function ConvertUniqueAndBuildThroneCard(throneID, lvl) { var t = Tabs.throneUniques; var ThroneCard = {}; ThroneCard = t.UniqueItems[throneID]; ThroneCard.id = ThroneCard.Id; ThroneCard.name = ThroneCard.Name; ThroneCard.faction = uW.g_js_strings.commonstr[CM.CHAMPION.getFactionClasses(ThroneCard.Faction)].toLowerCase(); ThroneCard.type = throneCardTypes[parseInt(ThroneCard.Type)-1].toLowerCase(); ThroneCard.unique = ThroneCard.id; ThroneCard.level = parseInt(lvl); ThroneCard.quality = STrChOMaxThroneQuality; ThroneCard.createPrefix = function () { return ""; }; ThroneCard.createSuffix = function () { return ""; }; ThroneCard.effects = {}; var effects = eval(ThroneCard.Effects); var slot = 0; for (k in effects) { slot++ ThroneCard.effects["slot"+slot] = {}; ThroneCard.effects["slot"+slot].id = effects[k].type; ThroneCard.effects["slot"+slot].tier = effects[k].tier; if (slot==6) { ThroneCard.effects["slot"+slot].quality = 5; // assume bright jewel ThroneCard.effects["slot"+slot].fromJewel = true; ThroneCard.jewel = {}; ThroneCard.jewel.valid = true; ThroneCard.jewel.id = ThroneCard.effects["slot"+slot].id; ThroneCard.jewel.quality = 5; // assume bright jewel ThroneCard.jewel.tier = ThroneCard.effects["slot"+slot].tier; ThroneCard.jewel.fromJewel = true; ThroneCard.jewel.gift = false; ThroneCard.jewel.quantity = 1; } } return BuildThroneCard(ThroneCard); }; function BuildChampCard(champItem) { var D = []; if (champItem == null) { D.push('
    '); D.push('
    '); return D.join(''); } D.push('
    '); D.push('
    '); D.push('
    '); var champName = champItem.name; champName = champName.replace(champItem.createPrefix(), ''); champName = champName.replace('Chest Armor of', 'Chest Of'); champName = champName.trim(); D.push('
    '); if (champItem.status == CM.CHAMPION.STATUS_BROKEN_UPGRADE || champItem.status == CM.CHAMPION.STATUS_BROKEN_ENHANCE) D.push('BROKEN
    '); D.push(champName); D.push('
    '); D.push('
    '); var uniquestyle = ""; if (champItem.unique != 0) uniquestyle = "background:transparent url('" + IMGURL +"champion_hall/unique_" + champItemUniqueNames[champItem.type] + "_" + STrChOFactions[champItem.faction-1] + "_70x70_" + champItem.unique + ".png'); top left no-repeat; background-size: cover;"; D.push('
    '); D.push('
      '); D.push('
    • Faction: ' + STrChOFactions[champItem.faction-1] + '
    • '); D.push('
    • Quality: ' + champCardQualities[champItem.rarity] + '
    • '); D.push('
    • Might: ' + (champItem.might > 0 ? champItem.might : '') + '
    • '); D.push('
    '); D.push('
    '); D.push('
      '); for (var ef in champItem["effects"]) { var effectLine = champItem["effects"][ef]; var effect = CM.ChampionManager.getEffect(effectLine, champItem.level); D.push('
    • ' + effect.amount + ' ' + uW.g_js_strings.effects["name_" + effect.id ] + '
    • '); } D.push('
    '); D.push('
    '); D.push('
    '); D.push('
    '); D.push(''); return D.join(''); }; function BuildThroneCard(throneItem) { var D = []; var w = CM.thronestats.mightByQuality; var z = CM.thronestats.mightByLevel; if (throneItem == null) { D.push('
    '); D.push('
    '); return D.join(''); } D.push('
    '); D.push('
    '); D.push('
    '); var throneName = throneItem.name; throneName = throneName.replace(throneItem.createPrefix(), ''); throneName = throneName.trim(); D.push('
    '); if (throneItem.isBroken) D.push('BROKEN
    '); D.push(throneName + (throneItem.unique ? ' +' + throneItem.level : '')); D.push('
    '); D.push('
    '); var uniquestyle = ''; if (throneItem.unique > 29000) { uniquestyle = "background:transparent url('"+gameurl+"img/throne/icons/70/"+throneItem.faction+"_"+throneItem.type+"_unique_"+throneItem.unique + ".png'); top left no-repeat; background-size: 70px 70px;"; if (throneItem.unique == 30262 || throneItem.unique == 30264 || throneItem.unique == 30266) { uniquestyle = "background:transparent url('"+gameurl+"img/throne/icons/70/christmas_advisor_normal_1.png'); top left no-repeat; background-size: 70px 70px;";}; if (throneItem.unique == 30261 || throneItem.unique == 30263 || throneItem.unique == 30265) { uniquestyle = "background:transparent url('"+gameurl+"img/throne/icons/70/christmas_candelabrum_normal_1.png'); top left no-repeat; background-size: 70px 70px;";}; if (throneItem.unique == 30230 || throneItem.unique == 30240 || throneItem.unique == 30250) { uniquestyle = "background:transparent url('"+gameurl+"img/throne/icons/70/halloween_table_normal_1.png'); top left no-repeat; background-size: 70px 70px;";}; if (throneItem.unique == 30231 || throneItem.unique == 30241 || throneItem.unique == 30251) { uniquestyle = "background:transparent url('"+gameurl+"img/throne/icons/70/halloween_chair_normal_1.png'); top left no-repeat; background-size: 70px 70px;";}; } D.push('
    '); D.push('
      '); D.push('
    • Faction: ' + throneItem.faction + '
    • '); D.push('
    • Quality: ' + throneItem.createPrefix() + '
    • '); //D.push('
    • ' + uW.g_js_strings.commonstr.type + ': ' + throneItem.type + '
    • '); //D.push('
    • ' + uW.g_js_strings.commonstr.level + ': ' + throneItem.level + '
    • '); D.push('
    • Might: ' + CM.ThroneView.getMightBonus(throneItem) + '
    • '); var hasJewel = false; if (throneItem.jewel) { if (throneItem.jewel.valid) hasJewel = true; } D.push('
    • Jewel: ' + (!hasJewel ? 'None' : STrChOJewelQualities[throneItem.jewel.quality-1]) + '
    • '); D.push('
    '); D.push('
    '); D.push('
      '); for (slot in throneItem.effects) { try { var N = throneItem.effects[slot]; effect = CM.thronestats.effects[N.id]; tier = CM.thronestats.tiers[N.id][N.tier]; if (!tier) tier = CM.thronestats.tiers[N.id][N.tier - 1]; var base = tier.base || 0; var level = throneItem.level; var growth = tier.growth || 0; if (slot == 'slot6') { //if it has a slot 6, it automatically has a jewel JewelQuality = throneItem['effects']['slot6'].quality; GrowthLimit = CM.thronestats.jewelGrowthLimit[JewelQuality]; if (GrowthLimit <= level) level = GrowthLimit } percent = +(base + ((level * level + level) * growth * 0.5)); var wholeNumber = false; if (Math.round(parseFloat(percent)) == parseFloat(percent)) wholeNumber = true; percent = (percent > 0) ? "+" + percent : +percent; if (wholeNumber) percent = parseFloat(percent).toFixed(0); else percent = parseFloat(percent).toFixed(2); css = (slot % 2 === 0) ? 'even' : 'odd'; B = +(slot.split("slot")[1]); if (B <= throneItem.quality) { D.push('
    • ' + percent + '% ' + effect[1] + '
    • '); } else { D.push('
    • ' + percent + '% ' + effect[1] + '
    • '); } } catch (e) { } } D.push('
    '); D.push('
    '); D.push('
    '); D.push('
    '); D.push(''); return D.join(''); }; function NewsItemRow(msg) { var m = '•'; m += msg; m += ''; return m; }; function pickAetherSalvageCity() { if (parseInt(Seed.resources["city" + Seed.cities[STrChOGeneralOptions.salvageCityNum][0]]["rec5"][0]) <= STrChOGeneralOptions.maxStones) return STrChOGeneralOptions.salvageCityNum; var ind = -1; var lowest = 16000000; if (STrChOGeneralOptions.salvageAnyCity) { for (i = 0; i < Seed.cities.length; i++) { if (STrChOGeneralOptions.overflow == "lowest") { // put in the city w/ the lowest number of a-stone if (parseInt(Seed.resources["city" + Seed.cities[i][0]]["rec5"][0]) < lowest) { ind = i; lowest = +Seed.resources["city" + Seed.cities[ind][0]]["rec5"][0]; } } else { // put in the first city with low stones if (parseInt(Seed.resources["city" + Seed.cities[i][0]]["rec5"][0]) <= STrChOGeneralOptions.maxStones) { return i; } } } } return ind; }; function SalvageChampItem(id) { var t = Tabs.champSalvager; var params = uW.Object.clone(ajfx); var num_city = pickAetherSalvageCity(); if ( num_city < 0) { num_city = +STrChOGeneralOptions.salvageCityNum; t.setStatus("All cities are (nearly) full of aetherstone"); } params.action = "8"; params.eids = id; params.cityId = Seed.cities[num_city][0]; new AjaxRequest(uW.g_ajaxpath + "ajax/ceEquipmentManagerAjax.php" + uW.g_ajaxsuffix, { method: "post", parameters: params, loading: true, onSuccess: function (transport) { try { var rslt = eval("(" + transport.responseText + ")"); var champ_item = uW.kocChampionItems[id]; if(rslt.ok == true) { var eid = rslt.equipmentIds[0]; champ_item = uW.kocChampionItems[eid]; if (champ_item) SalvageLog('Deleted Champion item '+ champ_item.name); STrChOChampSalvageData.numSalvagedItems++; STrChOChampSalvageData.numSalvagedItems2++; SAVESTrChOChampSalvageData(); if (champ_item) { STrChOChampSalvageData.numSalvaged[champ_item.rarity]++; SAVESTrChOChampSalvageData(); t.removeItem(eid , Seed.cities[num_city][0], parseInt(rslt.aetherstones)); } t.displayNumberSalvaged(); } else { //logit("rslt: " + inspect(rslt,3,1)); if (champ_item) t.setStatus('Unable to salvage item ' + champ_item.name); } var idx = t.delItems.indexOf(id); if (idx >=0) { t.delItems.splice(idx,1); // Remove item from array regardless // of success. Catch on next refresh } if (t.delItems.length > 0) { // Check if the array is empty t.upgradeAndDelete(); } else { t.deleting = false; t.setStatus('Salvaging complete. Waiting for next cycle.'); return; } } catch (e) { t.deleting = false; } }, onFailure: function () { t.delIems = []; t.deleting = false; //if (uW.kocChampionItems[id] ) logit("salvage failed for item " + unsafeWindow.kocChampionItems[id].name ); return; } }); } function ThroneUpdateTimerDisplay () { if (!document.getElementById('STrChOTimerDisplay')) return; var t = Tabs.throneUpgrader; var timeUntilDone = 0; if (t.repairEnd != 0) timeUntilDone = t.repairEnd - unixTime(); if (timeUntilDone > 0) document.getElementById('STrChOTimerDisplay').innerHTML = ' ' + rectime(timeUntilDone); else document.getElementById('STrChOTimerDisplay').innerHTML = 'DONE'; } function rectime(secs) { var min = Math.floor((secs)/60); var sec = Math.ceil(secs - (min * 60)); if (sec < 10) {sec = "0" + sec;} return min + ':' + sec; } function getThroneImage(item) { var img = ''; if (item.unique == 30262 || item.unique == 30264 || item.unique == 30266) { img = "https://rycamelot1-a.akamaihd.net/fb/e2/src/img/throne/icons/70/christmas_advisor_normal_1.png"; } else if (item.unique == 30261 || item.unique == 30263 || item.unique == 30265) { img = "https://rycamelot1-a.akamaihd.net/fb/e2/src/img/throne/icons/70/christmas_candelabrum_normal_1.png"; } else if (item.unique == 30230 || item.unique == 30240 || item.unique == 30250) { img = "https://rycamelot1-a.akamaihd.net/fb/e2/src/img/throne/icons/70/halloween_table_normal_1.png"; } else if (item.unique == 30231 || item.unique == 30241 || item.unique == 30251) { img = "https://rycamelot1-a.akamaihd.net/fb/e2/src/img/throne/icons/70/halloween_chair_normal_1.png"; } else if (item.unique > 0) { img = "https://rycamelot1-a.akamaihd.net/fb/e2/src/img/throne/icons/30/" + item.faction + "/" + item.faction + "_" + item.type + "_unique_normal_" + item.unique + ".png"; } else { img = "https://rycamelot1-a.akamaihd.net/fb/e2/src/img/throne/icons/30/" + item.faction + "/" + item.faction + "_" + item.type + "_normal_1_" + item.quality + ".png"; } if (item.isBroken) img = "https://rycamelot1-a.akamaihd.net/fb/e2/src/img/throne/modal/sm_fail_overlay.png"; return img; } function SalvageThroneItem(id) { var t = Tabs.throneSalvager; var params = uW.Object.clone(ajfx); var num_city = pickAetherSalvageCity(); if (num_city < 0) { num_city = +STrChOGeneralOptions.salvageCityNum; t.setStatus("All cities are (nearly) full of aetherstone"); } params.ctrl = 'throneRoom\\ThroneRoomServiceAjax'; params.action = 'salvage'; params.itemId = id; params.cityId = Seed.cities[num_city][0]; new AjaxRequest(uW.g_ajaxpath + "ajax/_dispatch53.php" + uW.g_ajaxsuffix, { method: "post", parameters: params, loading: true, onSuccess: function (transport) { try { var rslt = eval("(" + transport.responseText + ")"); var throne_item = uW.kocThroneItems[id]; if (rslt.ok) { if (throne_item) SalvageLog('Deleted Throne Room item ' + throne_item.name); STrChOThroneSalvageData.numSalvagedItems++; STrChOThroneSalvageData.numSalvagedItems2++; SAVESTrChOThroneSalvageData(); if (throne_item) { STrChOThroneSalvageData.numSalvaged[throne_item.quality]++; SAVESTrChOThroneSalvageData(); Tabs.throneSalvager.removeItem(id, Seed.cities[num_city][0], rslt.aetherstones); } Tabs.throneSalvager.displayNumberSalvaged(); var sidx = STrChOThroneSalvageData.upgradedToDelete.indexOf(id); if (sidx >= 0) { STrChOThroneSalvageData.upgradedToDelete.splice(sidx, 1); // Remove item from array SAVESTrChOThroneSalvageData(); } if (STrChOGeneralOptions.throneSorter) { var cmContainerOpen = (document.getElementsByClassName('cmModalContainer').length == 1 ? true : false); sortThroneSorter(!cmContainerOpen); setThroneSorter(!cmContainerOpen); SAVESTrChOThroneSorter(); } } else { if (throne_item) Tabs.throneSalvager.setStatus('Unable to salvage item ' + throne_item.name); CM.ThroneView.renderInventory(uW.kocThroneItems); } var idx = t.delItems.indexOf(id); if (idx >= 0) t.delItems.splice(idx, 1); // Remove item from array regardless of success. Catch on next refresh if (t.delItems.length > 0) { // Check if the array is empty t.upgradeAndDelete(); } else { t.deleting = false; t.setStatus('Salvaging complete. Waiting for next cycle.'); return; } } catch (e) { t.deleting = false; } }, onFailure: function () { t.delIems = []; t.deleting = false; CM.ThroneView.renderInventory(uW.kocThroneItems); return; } }); }; function ThroneAttachTab() { uW.hideShow = eventHideShow; uW.execSalvager = Tabs.throneSalvager.togglePower; uW.execUpgrader = Tabs.throneUpgrader.togglePower; uW.execRepair = Tabs.throneRepair.togglePower; uW.execSorter = Tabs.throneSorter.togglePower; uW.clickNextThroneLevel = Tabs.throneOrganizer.showNextThroneLevel; var str = ThroneTemplates.mainThrone.replace( '
  • #{stats}
  • ', '
  • #{stats}
  • ' + '
  • STrChO
  • ' + '
  • Sorter ' + (STrChOGeneralOptions.throneSorter ? 'ON' : 'OFF') + '
  • ' + '
  • Repair ' + (STrChOThroneRepairData.active ? 'ON' : 'OFF') + '
  • ' + '
  • Upgrader ' + (STrChOThroneUpgradeData.active ? 'ON' : 'OFF') + '
  • ' + '
  • Salvager ' + (STrChOThroneSalvageData.active ? 'ON' : 'OFF') + '
  • ' + '
  • Done
  • '); str = str.replace( '
    ', '
    '); //str = str.replace( '
  • #{inventory}
  • ', '
  • #{inventory}
  • '); ThroneTemplates.mainThrone = str; ThroneTemplates.throneInfo = ThroneTemplates.throneInfo.replace ( '
    ', '
    '); ThroneTemplates.mainThrone = ThroneTemplates.mainThrone.replace ( '
    ', '
    '); ThroneTemplates.thronePanel = ThroneTemplates.thronePanel.replace( '
    ', '
    '); ThroneTemplates.thronePanel = ThroneTemplates.thronePanel.replace( '
    ', '
    '); ThroneTemplates.mainThrone = ThroneTemplates.mainThrone.replace( '
      ', '
        '); GM_addStyle( "div#throneMainContainer div#throneInfoContainer div.infoContainer div.statContainer div.stats > ul {height: 345px }"); function postThroneStats() { postThroneSlot(Seed.throne.activeSlot); } uW.postThroneStats = postThroneStats; } function SAVESTrChOGlobalOptions() { setTimeout(function () { GM_setValue('STrChOGlobalOptions_' + uW.tvuid, JSON2.stringify(STrChOGlobalOptions)); }, 0); } function SAVESTrChOGeneralOptions() { setTimeout(function () { GM_setValue('STrChOGeneralOptions_' + getServerId() + uW.tvuid, JSON2.stringify(STrChOGeneralOptions)); }, 0); } function SAVESTrChOLogData() { setTimeout(function () { GM_setValue('STrChOLogData_' + getServerId() + uW.tvuid, JSON2.stringify(STrChOLogData)); }, 0); } function SAVESTrChOThroneUpgradeStats() { setTimeout(function () { GM_setValue('STrChOThroneUpgradeStats_' + getServerId() + uW.tvuid, JSON2.stringify(STrChOThroneUpgradeStats)); }, 0); } function SAVESTrChOThroneUpgradeData() { setTimeout(function () { GM_setValue('STrChOThroneUpgradeData_' + getServerId() + uW.tvuid, JSON2.stringify(STrChOThroneUpgradeData)); }, 0); } function SAVESTrChOThroneQueueData() { setTimeout(function () { GM_setValue('STrChOThroneQueueData_' + getServerId() + uW.tvuid, JSON2.stringify(STrChOThroneQueueData)); }, 0); } function SAVESTrChOThronePresetData() { setTimeout(function () { GM_setValue('STrChOThronePresetData_' + getServerId() + uW.tvuid, JSON2.stringify(STrChOThronePresetData)); }, 0); uW.STrChOPresetNames = STrChOThronePresetData.presetNames; } function SAVESTrChOThroneRepairData() { setTimeout(function () { GM_setValue('STrChOThroneRepairData_' + getServerId() + uW.tvuid, JSON2.stringify(STrChOThroneRepairData)); }, 0); } function SAVESTrChOThroneSalvageData() { setTimeout(function () { GM_setValue('STrChOThroneSalvageData_' + getServerId() + uW.tvuid, JSON2.stringify(STrChOThroneSalvageData)); }, 0); } function SAVESTrChOChampUpgradeStats() { setTimeout(function () { GM_setValue('STrChOChampUpgradeStats_' + getServerId() + uW.tvuid, JSON2.stringify(STrChOChampUpgradeStats)); }, 0); } function SAVESTrChOChampUpgradeData() { setTimeout(function () { GM_setValue('STrChOChampUpgradeData_' + getServerId() + uW.tvuid, JSON2.stringify(STrChOChampUpgradeData)); }, 0); } function SAVESTrChOChampQueueData() { setTimeout(function () { GM_setValue('STrChOChampQueueData_' + getServerId() + uW.tvuid, JSON2.stringify(STrChOChampQueueData)); }, 0); } function SAVESTrChOChampPresetData() { setTimeout(function () { GM_setValue('STrChOChampPresetData_' + getServerId() + uW.tvuid, JSON2.stringify(STrChOChampPresetData)); }, 0); } function SAVESTrChOChampRepairData() { setTimeout(function () { GM_setValue('STrChOChampRepairData_' + getServerId() + uW.tvuid, JSON2.stringify(STrChOChampRepairData)); }, 0); } function SAVESTrChOChampSalvageData() { setTimeout(function () { GM_setValue('STrChOChampSalvageData_' + getServerId() + uW.tvuid, JSON2.stringify(STrChOChampSalvageData)); }, 0); } function SAVESTrChOThroneSorter() { setTimeout(function () { GM_setValue('STrChOThroneSorter_' + getServerId() + uW.tvuid, JSON2.stringify(STrChOThroneSorter)); }, 0); } function LOADSTrChOGlobalOptions() { var s = GM_getValue('STrChOGlobalOptions_' + uW.tvuid); if (s != null) STrChOGlobalOptions = JSON2.parse(s); } function LOADSTrChOGeneralOptions() { var s = GM_getValue('STrChOGeneralOptions_' + getServerId() + uW.tvuid); if (s != null) STrChOGeneralOptions = JSON2.parse(s); } function LOADSTrChOLogData() { var s = GM_getValue('STrChOLogData_' + getServerId() + uW.tvuid); if (s != null) { opts = JSON2.parse(s); for (k in opts) { if (matTypeof(opts[k]) == 'object') for (kk in opts[k]) STrChOLogData[k][kk] = opts[k][kk]; else STrChOLogData[k] = opts[k]; } } } function LOADSTrChOThroneUpgradeStats() { var s = GM_getValue('STrChOThroneUpgradeStats_' + getServerId() + uW.tvuid); if (s != null) { opts = JSON2.parse(s); for (k in opts) { if (matTypeof(opts[k]) == 'object') for (kk in opts[k]) STrChOThroneUpgradeStats[k][kk] = opts[k][kk]; else STrChOThroneUpgradeStats[k] = opts[k]; } } } function LOADSTrChOThronePresetData() { var s = GM_getValue('STrChOThronePresetData_'+ getServerId() + uW.tvuid); if (s != null){ opts = JSON2.parse (s); for (k in opts){ if (matTypeof(opts[k]) == 'object') for (kk in opts[k]) STrChOThronePresetData[k][kk] = opts[k][kk]; else STrChOThronePresetData[k] = opts[k]; } } // for (var i in STrChOThronePresetData.previewThrone) { // var throne_item = uW.kocThroneItems[i]; // if (throne_item == null || !throne_item) delete STrChOThronePresetData.previewThrone[i]; // } uW.STrChOPresetNames = STrChOThronePresetData.presetNames; } function LOADSTrChOThroneSalvageData() { var s = GM_getValue('STrChOThroneSalvageData_' + getServerId() + uW.tvuid); if (s != null) { opts = JSON2.parse(s); for (k in opts) { if (matTypeof(opts[k]) == 'object') for (kk in opts[k]) STrChOThroneSalvageData[k][kk] = opts[k][kk]; else STrChOThroneSalvageData[k] = opts[k]; } } for (k in STrChOThroneSalvageData.ruleSet) { var r = STrChOThroneSalvageData.ruleSet[k]; var rule = new ThroneRule(r.type, r.faction, r.conditions, r.advancedrule); for (j in rule.conditions) { rule.conditions[j].ThroneCheckCondition = ThroneCheckCondition; } STrChOThroneSalvageData.ruleSet[k] = rule; } } function LOADSTrChOThroneUpgradeData() { var s = GM_getValue('STrChOThroneUpgradeData_' + getServerId() + uW.tvuid); if (s != null) { opts = JSON2.parse(s); for (k in opts) { if (matTypeof(opts[k]) == 'object') for (kk in opts[k]) STrChOThroneUpgradeData[k][kk] = opts[k][kk]; else STrChOThroneUpgradeData[k] = opts[k]; } } } function LOADSTrChOThroneRepairData() { var s = GM_getValue('STrChOThroneRepairData_' + getServerId() + uW.tvuid); if (s != null) { opts = JSON2.parse(s); for (k in opts) { if (matTypeof(opts[k]) == 'object') for (kk in opts[k]) STrChOThroneRepairData[k][kk] = opts[k][kk]; else STrChOThroneRepairData[k] = opts[k]; } } } function LOADSTrChOThroneQueueData() { var s = GM_getValue('STrChOThroneQueueData_' + getServerId() + uW.tvuid); if (s != null) { opts = JSON2.parse(s); for (k in opts) { if (matTypeof(opts[k]) == 'object') for (kk in opts[k]) STrChOThroneQueueData[k][kk] = opts[k][kk]; else STrChOThroneQueueData[k] = opts[k]; } } } function LOADSTrChOChampUpgradeStats() { var s = GM_getValue('STrChOChampUpgradeStats_' + getServerId() + uW.tvuid); if (s != null) { opts = JSON2.parse(s); for (k in opts) { if (matTypeof(opts[k]) == 'object') for (kk in opts[k]) STrChOChampUpgradeStats[k][kk] = opts[k][kk]; else STrChOChampUpgradeStats[k] = opts[k]; } } } function LOADSTrChOChampPresetData() { var s = GM_getValue('STrChOChampPresetData_'+ getServerId() + uW.tvuid); if (s != null){ opts = JSON2.parse (s); for (k in opts){ if (matTypeof(opts[k]) == 'object') for (kk in opts[k]) STrChOChampPresetData[k][kk] = opts[k][kk]; else STrChOChampPresetData[k] = opts[k]; } } } function LOADSTrChOChampSalvageData() { var s = GM_getValue('STrChOChampSalvageData_' + getServerId() + uW.tvuid); if (s != null) { opts = JSON2.parse(s); for (k in opts) { if (matTypeof(opts[k]) == 'object') for (kk in opts[k]) STrChOChampSalvageData[k][kk] = opts[k][kk]; else STrChOChampSalvageData[k] = opts[k]; } } for (k in STrChOChampSalvageData.ruleSet) { var r = STrChOChampSalvageData.ruleSet[k]; var rule = new ChampRule(r.type, r.faction, r.conditions, r.advancedrule); for (j in rule.conditions) rule.conditions[j].ChampCheckCondition = ChampCheckCondition; STrChOChampSalvageData.ruleSet[k] = rule; } } function LOADSTrChOChampUpgradeData() { var s = GM_getValue('STrChOChampUpgradeData_' + getServerId() + uW.tvuid); if (s != null) { opts = JSON2.parse(s); for (k in opts) { if (matTypeof(opts[k]) == 'object') for (kk in opts[k]) STrChOChampUpgradeData[k][kk] = opts[k][kk]; else STrChOChampUpgradeData[k] = opts[k]; } } } function LOADSTrChOChampRepairData() { var s = GM_getValue('STrChOChampRepairData_' + getServerId() + uW.tvuid); if (s != null) { opts = JSON2.parse(s); for (k in opts) { if (matTypeof(opts[k]) == 'object') for (kk in opts[k]) STrChOChampRepairData[k][kk] = opts[k][kk]; else STrChOChampRepairData[k] = opts[k]; } } } function LOADSTrChOChampQueueData() { var s = GM_getValue('STrChOChampQueueData_' + getServerId() + uW.tvuid); if (s != null) { opts = JSON2.parse(s); for (k in opts) { if (matTypeof(opts[k]) == 'object') for (kk in opts[k]) STrChOChampQueueData[k][kk] = opts[k][kk]; else STrChOChampQueueData[k] = opts[k]; } } } function LOADSTrChOThroneSorter() { var s = GM_getValue('STrChOThroneSorter_' + getServerId() + uW.tvuid); if (s != null) { opts = JSON2.parse(s); for (k in opts) { if (matTypeof(opts[k]) == 'object') for (kk in opts[k]) STrChOThroneSorter[k][kk] = opts[k][kk]; else STrChOThroneSorter[k] = opts[k]; } } } function LOADallData() { LOADSTrChOChampPresetData(); LOADSTrChOChampQueueData(); LOADSTrChOChampRepairData(); LOADSTrChOChampSalvageData(); LOADSTrChOChampUpgradeData(); LOADSTrChOChampUpgradeStats(); LOADSTrChOGeneralOptions(); LOADSTrChOGlobalOptions(); LOADSTrChOLogData(); LOADSTrChOThronePresetData(); LOADSTrChOThroneQueueData(); LOADSTrChOThroneRepairData(); LOADSTrChOThroneSalvageData(); LOADSTrChOThroneUpgradeData(); LOADSTrChOThroneUpgradeStats(); LOADSTrChOThroneSorter(); } function SAVEallData() { SAVESTrChOChampPresetData(); SAVESTrChOChampQueueData(); SAVESTrChOChampRepairData(); SAVESTrChOChampSalvageData(); SAVESTrChOChampUpgradeData(); SAVESTrChOChampUpgradeStats(); SAVESTrChOGeneralOptions(); SAVESTrChOGlobalOptions(); SAVESTrChOLogData(); SAVESTrChOThronePresetData(); SAVESTrChOThroneQueueData(); SAVESTrChOThroneRepairData(); SAVESTrChOThroneSalvageData(); SAVESTrChOThroneUpgradeData(); SAVESTrChOThroneUpgradeStats(); SAVESTrChOThroneSorter(); } function SaveSettingsToFile(objSettings) { var uriContent = 'data:application/octet-stream,' + encodeURIComponent(JSON2.stringify(objSettings)); var newWindow = window.open(uriContent, 'file.txt'); } function LoadSettingsFromFile(objSettings, objTab) { var fileInput = document.getElementById("STrChOSettingsFile"); var files = fileInput.files; if (files.length == 0) { alert('Failed To Select A File'); return; } var file = files[0]; var reader = new FileReader(); reader.onload = function (e) { var output = e.target.result; if (output != null) { opts = JSON2.parse(output); for (k in opts) { if (matTypeof(opts[k]) == 'object') { for (kk in opts[k]) objSettings[k][kk] = opts[k][kk]; } else { objSettings[k] = opts[k]; } } SAVEallData(); objTab.show(); } }; reader.readAsText(file); } function SuccessLog(msg) { var t = Tabs.STrChOLog; msg = msg.replace(',', '\,'); t.addLogEntry(logValues.SUCCESS, msg); t.show(); } function ActionLog(msg) { var t = Tabs.STrChOLog; msg = msg.replace(',', '\,'); t.addLogEntry(logValues.ACTION, msg); t.show(); } function SalvageLog(msg) { var t = Tabs.STrChOLog; msg = msg.replace(',', '\,'); t.addLogEntry(logValues.SALVAGE, msg); t.show(); } if (document.location.toString().match('src/main_src.php')) ScriptStartup();