您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Reference Tab
此脚本不应直接安装,它是供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.greasyfork.icu/scripts/399274/787111/Reference.js
/***Reference Tab***/ Tabs.Reference = { tabOrder: 1120, tabLabel: 'Reference', unitsaccuracy: [], z: null, keyz: null, myDiv: null, UniqueTRItems : null, UniqueCHItems : null, MultiFaction : [30230,30231,30240,30241,30250,30251,30261,30262,30263,30264,30265,30266], TechBoosts : {1:0.1,2:0.1,3:0.1,4:0.1,5:0.1,6:0,8:0.05,9:0.05,10:0.1,11:0.1,12:0.05,13:0.05,14:0.1,15:0.05,16:0.1,17:0.01}, BritonTechBoosts : {1:0.05,2:0.01,3:0.05,4:0.05,5:0.02,6:0.02}, JewelQuality: [], chSorted : false, chSortArray : [], trSorted : false, trSortArray : [], GloryResetTime : 0, init: function (div) { var t = Tabs.Reference; uWExportFunction('btShowAccuracyPop',Tabs.Reference.AccuracyPop); t.z = CM.WorldSettings.getSettingAsObject("UNIT_ACCURACY_MODIFIER"); t.keyz = uW.Object.keys(uWCloneInto(t.z)); // accuracy matrix only has certain troops and defences t.unitsaccuracy = []; for (var ui=0;ui<t.keyz.length;ui++) { if (t.keyz[ui]) { var i = CM.UNIT_TYPES[t.keyz[ui]]; if (i==null) { if (t.keyz[ui]=="FORTIFICATION_TYPE_ARCHERTOWER") { i = 53; } else if (t.keyz[ui]=="FORTIFICATION_TYPE_GREEK_FIRE") { i = 63; } else if (t.keyz[ui]=="VIRTUAL_UNIT_TYPE_DEFENSIVE_TOWER") { i = 100; } else if (t.keyz[ui]=="VIRTUAL_UNIT_TYPE_DEFENSIVE_TOWER_REDOUBT") { i = 99; } else { i = 0; } // no idea what this is, but we need it in the array } t.unitsaccuracy.push(i); } } for (var J=0;J<=4;J++) { t.JewelQuality.push(uW.g_js_strings.jewel["quality_"+J]); } var UniqueItems = {}; eval(GM_getResourceText("champion_uniques")); t.UniqueCHItems = JSON.parse(JSON.stringify(UniqueItems)); for (var i=28001;i<29000;i++) { if (!uW.itemlist['i'+i]) continue; if (!t.UniqueCHItems[i]) { t.UniqueCHItems[i] = {Id:i,Name:uW.itemlist['i'+i].name, Effects:[],Faction:0,Type:0}; } var CHCard = t.BuildChampCard(i,0); uW.ksoItems[i].description = t.DisplayCHCard(CHCard,false); } UniqueItems = {}; UniqueItems = CM.WorldSettings.getSettingAsObject("TR_UNIQUE_ITEMS"); for (var k in UniqueItems) { var throne_item = UniqueItems[k]; if (parseInt(throne_item.Id) < 29000) delete UniqueItems[k]; throne_item.Name = uW.itemlist["i"+throne_item.Id].name; if (t.MultiFaction.indexOf(parseInt(throne_item.Id))!=-1) { throne_item.Name = throne_item.Name + ' ('+uW.g_js_strings.commonstr[cardFaction[throne_item.Faction-1]]+')'; } } t.UniqueTRItems = JSON.parse(JSON.stringify(UniqueItems)); for (var i in t.UniqueTRItems) { if (!uW.itemlist['i'+i]) continue; var TRCard = t.BuildThroneCard(i,1); uW.ksoItems[i].description = t.DisplayTRCard(TRCard,false); } t.myDiv = div; var ag = ByCl('avatarGlory')[0]; if (ag) { ag.addEventListener('mouseover',t.checkGloryReset,false); t.checkGloryReset(); } }, checkGloryReset : function () { var t = Tabs.Reference; var now = unixTime(); var ag = ByCl('avatarGlory')[0]; if (ag) { if (t.GloryResetTime < now) { var params = uW.Object.clone(uW.g_ajaxparams); params.perPage = 10; params.type = "glory"; params.page = 'X'; new MyAjaxRequest(uW.g_ajaxpath + "ajax/getUserLeaderboard.php" + uW.g_ajaxsuffix, { method: "post", parameters: params, onSuccess: function (rslt) { if (rslt.gloryResetTime) { t.GloryResetTime = rslt.gloryResetTime; ag.title = tx('Glory resets in '+timestr(t.GloryResetTime-now)); } }, }); } else { ag.title = tx('Glory resets in '+timestr(t.GloryResetTime-now)); } } }, show: function () { var t = Tabs.Reference; var troopa, troopb; dt = new Date(); dt.setTime(Seed.player.datejoinUnixTime * 1000); m = '<div>'; m += '<div class="divHeader" align="center">'+tx('REFERENCE SECTION')+'</div>'; m += '<div align="center">'; m += '<table align=center>'; m += '<TR><TD class=xtab> </td><td align=right class=xtab>'+uW.g_js_strings.commonstr.nametx+':</td><td class=xtab><b>'+Seed.player.name+'</b></td><td class=xtab align=right>'+uW.g_js_strings.commonstr.alliance+':</td><td class=xtab><b>'+getMyAlliance()[1]+'</b></td></tr>'; m += '<TR><TD class=xtab> </td><td align=right class=xtab>'+tx("UID")+':</td><td class=xtab><b>'+uW.tvuid+'</b></td><td align=right class=xtab>'+tx('FBUID')+':</td><td class=xtab><b>'+uW.user_id+'</b></td></tr>'; m += '<TR><TD class=xtab> </td><td align=right class=xtab>'+uW.g_js_strings.commonstr.domain+':</td><td class=xtab><b>'+uW.domainName+'</b></td><td class=xtab align=right>'+tx('Playing Since')+':</td><td class=xtab><b>'+dt.toLocaleDateString()+'</b></td></tr>'; m += '<TR><TD class=xtab> </td><td align=right class=xtab>'+tx('Camelot Version')+':</td><td class=xtab><b>'+anticd.getKOCversion()+'</b></td><td class=xtab align=right>'+tx('PowerBot+ Version')+':</td><td class=xtab><b>'+Version+'</b></td></tr>'; m += '<TR><TD class=xtab> </td><td align=right class=xtab>'+tx('Browser')+':</td><td class=xtab><b>'+FFVersion.Browser+' '+FFVersion.Version+'</b></td><td class=xtab align=right>'+GMVersion.Handler+':</td><td class=xtab><b>'+GMVersion.Version+'</b></td></tr>'; m += '</table><br></div>'; // links m += '<a id=btLinkLink class=divLink ><div class="divHeader" align="left"><img id=btLinkArrow height="10" src="'+RightArrow+'"> '+tx('USEFUL LINKS')+'</div></a>'; m += '<div id=btLink class=divHide>'; m += '<TABLE align=center cellpadding=1 cellspacing=0>'; m += '<TR><TD class=xtabHD width="300px">'+tx('Scripts')+'</td><TD class=xtabHD width="300px">'+tx('Information sites')+'</td></tr>'; m += '<TR><TD class=xtab><a class=xlink href="https://www.facebook.com/PowerBotPlus" target="_blank">'+tx('Power Bot Plus (Facebook Page)')+'</a></td>'; m += '<TD class=xtab><a class=xlink href="http://www.slideshare.net/Aderik/documents" target="_blank">'+tx('Aderik\'s Tutorials')+'</a></td></tr>'; m += '<TR><TD class=xtab><a class=xlink href="https://greasyfork.org/en/scripts/889-koc-additional-throne-monitor" target="_blank">'+tx('Additional Throne Monitor (Greasyfork)')+'</a></td>'; m += '<TD class=xtab><a class=xlink href="https://www.facebook.com/groups/SolarsKOCinfoPage/" target="_blank">'+tx('KOC Information (Facebook Group)')+'</a></td></tr>'; m += '<TR><TD class=xtab><a class=xlink href="https://addons.mozilla.org/en-US/firefox/addon/greasemonkey/versions/?page=1#version-1.15.1-signed" target="_blank">'+tx('Greasemonkey (Version 1.15)')+'</a></td>'; m += '<TD class=xtab><a class=xlink href="https://www.facebook.com/groups/1467954843521680/" target="_blank">'+tx('Elements of KOC (Facebook Group)')+'</a></td></tr>'; m += '<TR><TD class=xtab><a class=xlink href="http://tampermonkey.net/" target="_blank">Tampermonkey (Chrome, Opera, Safari etc)</a></td>'; m += '<TD class=xtab><a class=xlink href="http://basickoc.weebly.com/" target="_blank">'+tx('KOC Basics')+'</a></td></tr>'; m += '<TR><TD class=xtab><a class=xlink href="https://addons.mozilla.org/en-US/firefox/addon/violentmonkey/" target="_blank">ViolentMonkey (Firefox)</a></td>'; m += '<TD class=xtab><a class=xlink href="http://koc.wikia.com/wiki/" target="_blank">'+tx('KofC Wiki')+'</a></td></tr>'; m += '<TR><TD class=xtab><a class=xlink href="https://addons.mozilla.org/en/firefox/addon/scriptish/versions/" target="_blank">Scriptish</a></td>'; m += '<TD class=xtab><a class=xlink href="http://f89kocguide.weebly.com/" target="_blank">'+tx('F89 Unofficial KOC Guide')+'</a></td></tr>'; m += '<TR><TD class=xtab><a class=xlink href="https://chrome.google.com/webstore/detail/clean-on-refresh/moogoheinbbibflghkinbcmgkncleoid" target="_blank">'+tx('Clean on Refresh (Chrome)')+'</a></td>'; m += '<TD class=xtab><a class=xlink href="http://koc.weezeewig.com/index.sjs?f=ListServers" target="_blank">'+tx('KofC Mapper')+'</a></td></tr>'; m += '</table><BR></div>'; // map m += '<a id=btMapLink class=divLink ><div class="divHeader" align="left"><img id=btMapArrow height="10" src="'+RightArrow+'"> '+tx('MAP')+'</div></a>'; m += '<div id=btMap class=divHide>'; m += '<BR><TABLE align=center cellpadding=1 cellspacing=0>'; m += '<TR><TD colspan=2 class=xtab align=left><DIV id=ptProvMap style="height:' + provMapCoords.imgHeight + 'px; width:' + provMapCoords.imgWidth + 'px; background-repeat:no-repeat; background-image:url(\'' + URL_PROVINCE_MAP + '\')"></div></td></tr>'; m += '<TR><TD colspan=2 class=xtab align=center><DIV style="color:#000;font-size:14px; border: 1px solid; background-color:white; margin:20px 3px 3px 0px; padding:4px" id=ptdistout> </div></td></tr>'; m += '<TR><TD class=xtab align=left><B>'+tx('First Location')+': </b></td><TD class=xtab> X: <INPUT id=calcX type=text\> Y: <INPUT id=calcY type=text\> '+tx('Or, choose city')+': <SPAN id=ptloc1></span></td></tr>'; m += '<TR><TD class=xtab align=left><B>'+tx('Second Location')+': </b></td><TD class=xtab> X: <INPUT id=calcX2 type=text\> Y: <INPUT id=calcY2 type=text\> '+tx('Or, choose city')+': <SPAN id=ptloc2></span></td></tr></table>'; m += '<br></div>'; // unit information var rownum = 1; m += '<a id=btUnitInfoLink class=divLink ><div class="divHeader" align="left"><img id=btUnitInfoArrow height="10" src="'+RightArrow+'"> '+tx('UNIT INFORMATION')+'</div></a>'; m += '<div id=btUnitInfo class=divHide>'; var u = '<TABLE align=center cellpadding=1 cellspacing=0>'; var ch = '<TR align=center><TD class=xtab></td><TD class=xtab></td><TD class=xtabHL colspan=8><B>'+tx('Base Stats')+'</b></td><TD class=xtabHL colspan=5><B>'+tx('Cost to Build')+'</b></td><TD class=xtabHL><B>'+tx('Upkeep')+'</b></td></tr>\ <TR valign=bottom align=right><TD class=xtab></td><TD class=xtab></td><TD class=xtabHL>'+uW.g_js_strings.commonstr.might+'</td><TD class=xtabH>'+uW.g_js_strings.commonstr.life+'</td><TD class=xtabH>'+uW.g_js_strings.commonstr.atk+'</td><TD class=xtabH>'+tx('Def')+'</td><TD class=xtabH>'+uW.g_js_strings.commonstr.speed+'</td><TD class=xtabH>'+uW.g_js_strings.commonstr.range+'</td><TD class=xtabH>'+uW.g_js_strings.modal_barracks_train.load+'</td><TD class=xtabH>'+tx('Spell')+'</td>\ <TD class=xtabHL>'+uW.g_js_strings.commonstr.food+'</td><TD class=xtabH>'+uW.g_js_strings.commonstr.wood+'</td><TD class=xtabH>'+uW.g_js_strings.commonstr.stone+'</td><TD class=xtabH>'+uW.g_js_strings.commonstr.ore+'</td><TD class=xtabH>'+tx('Pop')+'</td><TD class=xtabHL>'+uW.g_js_strings.commonstr.food+'</td></tr>\ <TR style="height:1px;"><TD style="padding:0px; spacing:0px; height:1px; border-color:black; border-width: 1px; border-style: none none solid none" colspan=16></td></tr>'; u += ch; for (var ui in CM.UNIT_TYPES) { i = CM.UNIT_TYPES[ui]; if (++rownum % 2) { rsty = 'evenRow'; } else { rsty = 'oddRow'; } cost = uW.unitcost['unt' + i]; // NAME, Food, Wood, Stone, Ore, ?, IdlePop, Time stats = uW.unitstats['unt' + i]; // Life, Attack, Defense, Speed, Range, Load, Might, SpellPower food = uW.unitupkeeps[i]; might = uW.unitmight['unt' + i]; u += '<TR class="'+rsty+'" align=right><TD class=xtab align=left><B>'+TroopImage(i,"vertical-align:middle;")+cost[0].substr(0,20)+'</b></td><TD class=xtab align=right>'+capitalize(CM.unitFrontendType[i])+'</td>'; u += '<TD class=xtabL>'+might+'</td><TD class=xtab>'+stats[0]+'</td><TD class=xtab>'+stats[1]+'</td><TD class=xtab>'+stats[2]+'</td><TD class=xtab>'+stats[3]+'</td><TD class=xtab>'+stats[4]+'</td><TD class=xtab>'+stats[5]+'</td><TD class=xtab>'+(stats[7]?stats[7]:"")+'</td>'; if (!CM.BarracksUnitsTypeMap.isUnitType(i, "rare")) { u+= '<TD class=xtabL>'+cost[1]+'</td><TD class=xtab>'+cost[2]+'</td><TD class=xtab>'+cost[3]+'</td><TD class=xtab>'+cost[4]+'</td><TD class=xtab>'+cost[6]+'</td>'; } else { u+= '<TD colspan=5 class=xtabL align=center><span style="opacity:0.6;"><i>'+uW.g_js_strings.modal_openBarracks.rarettl+'</i></span></td>'; } u += '<TD class=xtabL>'+food+'</td></tr>'; } u += '<TR class=xtabLine><TD colspan=16 class=xtabLine></td></tr>'; u += ch; for (var k in uW.fortcost) { if (++rownum % 2) { rsty = 'evenRow'; } else { rsty = 'oddRow'; } cost = uW.fortcost[k]; // NAME, Food, Wood, Stone, Ore, ?, IdlePop, Time fi = k.substring(3); stats = uW.fortstats['unt' + fi]; // Life, Attack, Defense, Speed, Range, Space food = 0; might = fortmight['f' + fi]; var name = cost[0].replace(tx('Defensive'), ''); name = name.replace(tx('Wall-Mounted'), ''); var dtype = tx('Field'); if (fi < 60 || fi==63) { dtype = tx('Wall'); } u += '<TR class="'+rsty+'" align=right><TD align=left class=xtab><B>'+TroopImage(fi,"vertical-align:middle;")+name+'</b></td><TD class=xtab>'+dtype+'</td><TD class=xtabL>'+might+'</td>\ <TD class=xtab>'+stats[0]+'</td><TD class=xtab>'+stats[1]+'</td><TD class=xtab>'+stats[2]+'</td><TD class=xtab>'+stats[3]+'</td>\ <TD class=xtab>'+stats[4]+'</td><TD class=xtab>'+stats[5]+'</td><TD class=xtab>'+(stats[7]?stats[7]:"")+'</td><TD class=xtabL>'+cost[1]+'</td><TD class=xtab>'+cost[2]+'</td>\ <TD class=xtab>'+cost[3]+'</td><TD class=xtab>'+cost[4]+'</td><TD class=xtab>'+(cost[6]||'')+'</td><TD class=xtabL> </td></tr>'; } u += '<TR class=xtabLine><TD colspan=16 class=xtabLine></td></tr>'; m += u + '</table><BR></div>'; // research var rownum = 1; m += '<a id=btResearchInfoLink class=divLink ><div class="divHeader" align="left"><img id=btResearchInfoArrow height="10" src="'+RightArrow+'"> '+tx('RESEARCH LEVELS')+'</div></a>'; m += '<div id=btResearchInfo class=divHide>'; m += '<TABLE width=95% align=center class=xtab><TR valign=top align=center><td><table class=xtab border=1px cellpadding=2 cellspacing=0><TR valign=top align=left><td><b>'+uW.g_js_strings.commonstr.research+'</b></td><td align=center><b>'+uW.g_js_strings.commonstr.level+'</b></td><td align=right><b>'+tx('Bonus')+'</b></td></tr>'; for (var i in uW.techcost) { if (++rownum % 2) { rsty = 'evenRow'; } else { rsty = 'oddRow'; } var csty = '<span>'; var ui = i.split("tch")[1]; if (Seed.tech[i] == uW.Research.Methods.maxLevel(ui, 1)) csty = '<span style="color:#080">'; if (Seed.tech[i] == 0) csty = '<span style="color:#800">'; m += '<tr class="'+rsty+'"><TD style="width:150px;" title="'+uW.techcost[i][10]+'">' + uW.techcost[i][0] + '</td><TD align=center style="width:50px; max-width:150px;">'+csty+Seed.tech[i]+'</span></td><TD align=right style="width:50px; max-width:150px;">'+csty+(t.TechBoosts[ui]!=0?parseInt(parseIntNan(Seed.tech[i])*t.TechBoosts[ui]*100)+'%':'')+'</span></td></tr>'; } m += '</table></td>'; m += '<td><table class=xtab border=1px cellpadding=2 cellspacing=0><TR valign=top align=left><td><b>'+tx('Briton Research')+'</b></td><td align=center><b>'+uW.g_js_strings.commonstr.level+'</b></td><td align=right><b>'+tx('Bonus')+'</b></td></tr>'; rownum = 1; for (var i in uW.techcost2) { if (++rownum % 2) { rsty = 'evenRow'; } else { rsty = 'oddRow'; } var csty = '<span>'; var ui = i.split("tch")[1]; if (Seed.tech2[i] == uW.Research.Methods.maxLevel(ui, 2)) csty = '<span style="color:#080">'; if (Seed.tech2[i] == 0) csty = '<span style="color:#800">'; m += '<tr class="'+rsty+'"><TD style="width:150px;" title="'+uW.techcost2[i][10]+'">' + uW.techcost2[i][0] + '</td><TD align=center style="width:50px; max-width:150px;">'+csty+Seed.tech2[i]+'</span></td><TD align=right style="width:50px; max-width:150px;">'+csty+(t.BritonTechBoosts[ui]!=0?parseInt(parseIntNan(Seed.tech2[i])*t.BritonTechBoosts[ui]*100)+'%':'')+'</span></td></tr>'; m += '</td></tr>'; } m += '</table></td></tr></table></div>'; // tr Caps m += '<a id=btRefCapsLink class=divLink ><div class="divHeader" align="left"><img id=btRefCapsArrow height="10" src="'+RightArrow+'"> '+tx('THRONE ROOM CAPS')+'</div></a>'; m += '<div id=btRefCaps class=divHide>'; var caps = '<br><TABLE class=xtab align=center border=1px cellspacing=0 cellpadding=2>'; caps += '<TR><TD width="200px"><B>'+tx('Effect Name')+'</b></td><TD width="50px"><B>'+uW.g_js_strings.commonstr.max+'</b></td><TD width="50px"><B>'+tx('Min')+'</b></td><TD style="border:0;width:10px"> </td><TD width="200px"><B>'+tx('Effect Name')+'</b></td><TD width="50px"><B>'+uW.g_js_strings.commonstr.max+'</b></td><TD width="50px"><B>'+tx('Min')+'</b></td></tr>'; var boosts = []; for (var k in uW.cm.thronestats.boosts) { if (uW.cm.thronestats.boosts[k].BoostName) { boosts.push(uW.cm.thronestats.boosts[k]); } } boosts.sort(function(a, b){ return a.BoostName > b.BoostName}); var counter = 0; var rownum = 0; caps += '<TR class=oddRow>'; for (var k in boosts) { counter++ var boost = boosts[k] if (boost.BoostName) { caps += '<TD>'+boost.BoostName+'</td><TD>'+boost.Max+'<SPAN id=capmaxPerc_'+k+'></span></div></td><TD>'+boost.Min+'<SPAN id=capminPerc_'+k+'></span></div>'; if (counter % 2 == 0) { if (++rownum % 2) { rsty = 'evenRow'; } else { rsty = 'oddRow'; } caps += '<TR class="'+rsty+'">'; } else { caps += '</td><TD style="border:0">'; } } } m += caps + '</table><br></div>'; // ch Caps m += '<a id=btRefChCapsLink class=divLink ><div class="divHeader" align="left"><img id=btRefChCapsArrow height="10" src="'+RightArrow+'"> '+tx('CHAMPION HALL CAPS')+'</div></a>'; m += '<div id=btRefChCaps class=divHide>'; var caps = '<br><TABLE class=xtab align=center border=1px cellspacing=0 cellpadding=2>'; caps += '<TR><TD width="200px"><B>'+tx('Effect Name')+'</b></td><TD width="50px"><B>'+uW.g_js_strings.commonstr.max+'</b></td><TD width="50px"><B>'+tx('Min')+'</b></td><TD style="border:0;width:10px"> </td><TD width="200px"><B>'+tx('Effect Name')+'</b></td><TD width="50px"><B>'+uW.g_js_strings.commonstr.max+'</b></td><TD width="50px"><B>'+tx('Min')+'</b></td></tr>'; var boosts = []; for (var k in CE_EFFECT_TIERS) { if (CE_EFFECT_TIERS[k].Id_Tier && (CE_EFFECT_TIERS[k].Max != 0 || CE_EFFECT_TIERS[k].Min !=0)) { effsplit=CE_EFFECT_TIERS[k]["Id_Tier"].split(","); if (effsplit[1]==1) { // caps are at tier 1 (?) var boost = {}; boost.BoostName = CM.ChampionManager.getEffectName(effsplit[0]); boost.Effect = effsplit[0]; boost.Max = CE_EFFECT_TIERS[k].Max; boost.Min = CE_EFFECT_TIERS[k].Min; boosts.push(boost); } } } boosts.sort(function(a, b){ return a.BoostName > b.BoostName}); var counter = 0; var rownum = 0; caps += '<TR class=oddRow>'; for (var k in boosts) { counter++ var boost = boosts[k] if (boost.BoostName) { caps += '<TD>'+boost.BoostName+'</td><TD>'+boost.Max+'<SPAN id=chcapmaxPerc_'+k+'></span></div></td><TD>'+boost.Min+'<SPAN id=chcapminPerc_'+k+'></span></div>'; if (counter % 2 == 0) { if (++rownum % 2) { rsty = 'evenRow'; } else { rsty = 'oddRow'; } caps += '<TR class="'+rsty+'">'; } else { caps += '</td><TD style="border:0">'; } } } m += caps + '</table><br></div>'; // glory icons m += '<a id=btRefIconsLink class=divLink ><div class="divHeader" align="left"><img id=btRefIconsArrow height="10" src="'+RightArrow+'"> '+tx('GLORY ICONS')+'</div></a>'; m += '<div id=btRefIcons class=divHide>'; var icons = '<br><TABLE class=xtab align=center style="background:'+Options.Colors.Panel+';border:2px;">'; icons += '<TR><TD width="50px" align=right><B>'+tx('Icon')+'</b></td><TD width="200px"><B>'+uW.g_js_strings.commonstr.glory+'</b></td><TD style="border:0;width:10px"> </td><TD width="50px" align=right><B>'+tx('Icon')+'</b></td><TD width="200px"><B>'+uW.g_js_strings.commonstr.glory+'</b></td></tr><TR>'; var iconarray = []; for (var k in Seed.gloryChatMapping) { iconarray.push(k); } var counter = 0; for (var k=0;k<iconarray.length;k++) { counter++ var start = addCommas(iconarray[k]); if (k<iconarray.length-1) { var end = ' - '+addCommas(iconarray[k+1]-1); } else { var end = ' +'; } icons += '<TD align=right><img src="'+IMGURL+'chat_'+Seed.gloryChatMapping[iconarray[k]]+'.png"></td><TD>'+start+end+'</td>'; if (counter % 2 == 0) { icons += '</tr><TR>'; } else { icons += '<TD style="border:0"> </td>'; } } m += icons + '</tr></table><br></div>'; // throne uniques m += '<a id=btRefTRUniqueLink class=divLink ><div class="divHeader" align="left"><img id=btRefTRUniqueArrow height="10" src="'+RightArrow+'"> '+tx('UNIQUE THRONE ROOM CARDS')+'</div></a>'; m += '<div id=btRefTRUnique class=divHide></div>'; // champ uniques m += '<a id=btRefCHUniqueLink class=divLink ><div class="divHeader" align="left"><img id=btRefCHUniqueArrow height="10" src="'+RightArrow+'"> '+tx('UNIQUE CHAMPION CARDS')+'</div></a>'; m += '<div id=btRefCHUnique class=divHide></div>'; // accuracy m += '<a id=btRefAccuracyLink class=divLink ><div class="divHeader" align="left"><img id=btRefAccuracyArrow height="10" src="'+RightArrow+'"> '+tx('ACCURACY MATRIX')+'</div></a>'; m += '<div id=btRefAccuracy class=divHide>'; m += '<DIV style="padding-top:4px;max-height:750px;overflow-y:scroll;width:'+GlobalOptions.btWinSize.x+'px";overflow-x:scroll;">'+strButton8(tx('Show Full Table'), 'onclick="btShowAccuracyPop();"'); m += t.BuildAccuracyTable()+'</div><br></div></br>'; t.myDiv.innerHTML = m; t.PaintTRUniques(ById('btRefTRUnique')); t.PaintCHUniques(ById('btRefCHUnique')); if (!OpenDiv["Reference"]) { OpenDiv["Reference"] = ""; } if (OpenDiv["Reference"] != "") { var LastOpenDiv = OpenDiv["Reference"]; OpenDiv["Reference"] = ""; ToggleMainDivDisplay("Reference",100,GlobalOptions.btWinSize.x,LastOpenDiv,true); } ById('btRefCapsLink').addEventListener ('click', function () {ToggleMainDivDisplay("Reference",100,GlobalOptions.btWinSize.x,"btRefCaps",true)}, false); ById('btRefChCapsLink').addEventListener ('click', function () {ToggleMainDivDisplay("Reference",100,GlobalOptions.btWinSize.x,"btRefChCaps",true)}, false); ById('btRefTRUniqueLink').addEventListener ('click', function () {ToggleMainDivDisplay("Reference",100,GlobalOptions.btWinSize.x,"btRefTRUnique",true)}, false); ById('btRefCHUniqueLink').addEventListener ('click', function () {ToggleMainDivDisplay("Reference",100,GlobalOptions.btWinSize.x,"btRefCHUnique",true)}, false); ById('btRefAccuracyLink').addEventListener ('click', function () {ToggleMainDivDisplay("Reference",100,GlobalOptions.btWinSize.x,"btRefAccuracy",true)}, false); ById('btRefIconsLink').addEventListener ('click', function () {ToggleMainDivDisplay("Reference",100,GlobalOptions.btWinSize.x,"btRefIcons",true)}, false); ById('btUnitInfoLink').addEventListener ('click', function () {ToggleMainDivDisplay("Reference",100,GlobalOptions.btWinSize.x,"btUnitInfo",true)}, false); ById('btResearchInfoLink').addEventListener ('click', function () {ToggleMainDivDisplay("Reference",100,GlobalOptions.btWinSize.x,"btResearchInfo",true)}, false); ById('btLinkLink').addEventListener ('click', function () {ToggleMainDivDisplay("Reference",100,GlobalOptions.btWinSize.x,"btLink",true)}, false); ById('btMapLink').addEventListener ('click', function () {ToggleMainDivDisplay("Reference",100,GlobalOptions.btWinSize.x,"btMap",true)}, false); for (var k in boosts) { var boost = boosts[k] if (boost.CapType == "percent") { if (boost.Max != "none") { ById('capmaxPerc_' + k).innerHTML = '%'; } if (boost.Min != "none") { ById('capminPerc_' + k).innerHTML = '%'; } } } for (var c = 0; c < Cities.numCities; c++) PlotCityImage(c, ById('ptProvMap')); if (Seed.allianceHQ) { PlotAllianceHQ(ById('ptProvMap'),[]); } new CdispCityPicker('ptloc1', ById('ptloc1'), true, t.eventLocChanged).bindToXYboxes(ById('calcX'), ById('calcY')); new CdispCityPicker('ptloc2', ById('ptloc2'), true, t.eventLocChanged).bindToXYboxes(ById('calcX2'), ById('calcY2')); t.eventLocChanged(Cities.cities[0], Cities.cities[0].x, Cities.cities[0].y); }, AccuracyPop: function () { var t = Tabs.Reference; var helpText = '<div>'+t.BuildAccuracyTable()+'<br> </div>'; var pop = new CPopup ('BotAccuracy', 0, 0, 800, 800, true); pop.centerMe (mainPop.getMainDiv()); pop.getMainDiv().innerHTML = helpText; pop.getTopDiv().innerHTML = '<CENTER><B>'+tx("Accuracy Matrix")+'</b></center>'; pop.show (true); ResetFrameSize('BotAccuracy',800,800); }, BuildAccuracyTable: function () { var t = Tabs.Reference; var main = '<TABLE cellpadding=0 cellspacing=0 align=left><TR>'; main += '<TD class=xtab></td><TD align=center colspan='+ (t.unitsaccuracy.length+1) +' class=xtab><b>'+uW.g_js_strings.commonstr.target+'</b></td></tr>'; main += '<TR><TD class=xtabHD> </td>'; for (var iu=0;iu<t.unitsaccuracy.length;iu++) { var u = t.unitsaccuracy[iu]; if (u!=0) { if (u==99) main += '<TD width=30 class=xtabHD align=center><img style="vertical-align:middle;" src="'+IMGURL+'units/redoubt_30.jpg" title="'+uW.buildingcost.bdg31[0]+'" width=30></td>'; else if (u==100) main += '<TD width=30 class=xtabHD align=center><img style="vertical-align:middle;" src="'+IMGURL+'units/tower_30.jpg" title="'+uW.buildingcost.bdg30[0]+'" width=30></td>'; else { main += '<TD width=30 class=xtabHD align=center>' + TroopImageBig(u) + '</td>'; } } } main += '</tr>'; var r = 0; for (var ui=0;ui<t.unitsaccuracy.length;ui++) { var u = t.unitsaccuracy[ui]; if (u != 0) { if (++r % 2) { rowClass = 'evenRow'; } else { rowClass = 'oddRow'; } main += '<TR class="'+rowClass+'">'; if (u<51) { main += '<TD class=xtab align=right><b>' + uW.unitcost['unt'+u][0] + '</b></td>'; } else { if (u==99) rowtext = uW.g_js_strings.redoubt.redoubt else if (u==100) rowtext = uW.g_js_strings.tower.towerName else { var rowtext = uW.fortcost['frt'+u][0]; if (u==53) { rowtext = tx('Crossbows'); } // "Wall Mounted Crossbows" is pointlessly long! } main += '<TD class=xtab align=right><b>' + rowtext + '</b></td>'; } troopa = t.keyz[ui]; for (var uj=0;uj<t.unitsaccuracy.length;uj++) { var cellstyle = ''; if (ui==uj) { cellstyle = 'style="background: rgba(0,0,0,0.10);"'; } troopb = t.keyz[uj]; if (!t.z[troopa] || !t.z[troopa][troopb]) main += '<TD class=xtab align=center '+cellstyle+'>??</td>'; else main += '<TD class=xtab align=center '+cellstyle+'>' + t.z[troopa][troopb] + '</td>'; } main += '</tr>'; } } main += '</table>'; return main; }, plotMapImg: function (markNum, eMap, x, y) { var t = Tabs.Reference; var xplot = parseInt((provMapCoords.mapWidth * x) / 750); var yplot = parseInt((provMapCoords.mapHeight * y) / 750); if (ById('plotmap_' + markNum) == null) { var ce = document.createElement('div'); ce.style.background = 'black'; ce.id = 'plotmap_' + markNum; ce.style.opacity = '1.0'; ce.style.position = 'relative'; ce.style.display = 'block'; ce.style.width = '16px'; ce.style.height = '16px'; ce.style.border = '1px solid #fff'; ce.style.color = 'white'; ce.style.textAlign = 'center'; } else { ce = ById('plotmap_' + markNum); } ce.style.top = (yplot + provMapCoords.topMargin - ((Cities.numCities + markNum) * 16) - 8) + 'px'; ce.style.left = (xplot + provMapCoords.leftMargin - 8) + 'px'; ce.title = "("+x+','+y+')'; eMap.appendChild(ce); ce.innerHTML = (markNum + 1) + ''; }, eventLocChanged: function (city, x, y) { var t = Tabs.Reference; var x1 = parseInt(ById('calcX').value); var y1 = parseInt(ById('calcY').value); if (!isNaN(x1) && !isNaN(y1)) { t.plotMapImg(0, ById('ptProvMap'), x1, y1); } var x2 = parseInt(ById('calcX2').value); var y2 = parseInt(ById('calcY2').value); if (!isNaN(x2) && !isNaN(y2)) { t.plotMapImg(1, ById('ptProvMap'), x2, y2); } if (!isNaN(x1) && !isNaN(y1) && !isNaN(x2) && !isNaN(y2)) { var m = tx('The distance from')+' ' + x1 + ',' + y1 + ' '+tx('to')+' ' + x2 + ',' + y2 + ' '+tx('is')+': <B>' + distance(x1, y1, x2, y2).toFixed(2) + '</b>'; ById('ptdistout').innerHTML = m; } }, PaintTRUniques: function (div) { var t = Tabs.Reference; var maxlevel = CM.MAX_MASTERS_TOKEN_LEVEL; var selectedCard1 = 0; var selectedCard2 = 0; var selectedType1 = 0; var selectedType2 = 0; uWExportFunction('pbrefreshuniques', Tabs.Reference.GetInventory); t.trSortArray = []; for (var k in t.UniqueTRItems) { t.trSortArray.push(t.UniqueTRItems[k]); } if (t.trSorted) { t.trSortArray.sort(function(a, b){ if (a.Name<b.Name) return -1; if (a.Name>b.Name) return 1; return 0; }); } var m = '<div align=center style="height:480px;overflow-y:auto;">'; m += '<TABLE width=90% class=xtabBR>'; m += '<tr align=center><td width=50%/></td><td width=50%/><div align=right><INPUT id=bttrUniqueSort type=checkbox '+(t.trSorted?"CHECKED" : "")+'/> '+tx("Sort Alphabetically")+'</div></td></tr>'; m += '<tr><td><div style="max-width:100%;"><b>'+uW.g_js_strings.commonstr.type+': </b><select id="bttrUniqueType1">'; m += '<option value="0">-- '+tx('ALL')+' --</option>'; for (var type_index = 0; type_index < trTypes.length; ++type_index) { m += '<option value="' + trTypes[type_index] + '">' + uW.g_js_strings.throneRoom[trTypes[type_index]] + '</option>'; } m += '</select></div></td>'; m += '<td><div style="max-width:100%;"><b>'+uW.g_js_strings.commonstr.type+': </b><select id="bttrUniqueType2">'; m += '<option value="0">-- '+tx('ALL')+' --</option>'; for (var type_index = 0; type_index < trTypes.length; ++type_index) { m += '<option value="' + trTypes[type_index] + '">' + uW.g_js_strings.throneRoom[trTypes[type_index]] + '</option>'; } m += '</select></div></td>'; m += '<tr><td><div style="max-width:100%;"><b>'+uW.g_js_strings.commonstr.item+': </b><select id="bttrUnique1">'; m += '<option value="0">-- '+uW.g_js_strings.commonstr.items+' --</option>'; for (var k=0;k<t.trSortArray.length;k++) { var throne_item = t.trSortArray[k]; if (throne_item == null || !throne_item) continue; var style = ''; if (throne_item.Faction == 0) style = 'style="color:#aaa;"'; m += '<option '+style+' value="' + throne_item.Id + '">' + throne_item.Name + ' </option>'; } m += '</select></div></td>'; m += '<td><div style="max-width:100%;"><b>'+uW.g_js_strings.commonstr.item+': </b><select id="bttrUnique2">'; m += '<option value="0">-- '+uW.g_js_strings.commonstr.items+' --</option>'; for (var k=0;k<t.trSortArray.length;k++) { var throne_item = t.trSortArray[k]; if (throne_item == null || !throne_item) continue; var style = ''; if (throne_item.Faction == 0) style = 'style="color:#aaa;"'; m += '<option '+style+' value="' + throne_item.Id + '">' + throne_item.Name + ' </option>'; } m += '</select></div></td>'; m += '<tr><td><div style="max-width:100%;"><b>'+uW.g_js_strings.commonstr.level+': </b><select id="bttrUniqueLevel1">'; m += '<option value="1" selected>1</option>'; for (var type_index = 2; type_index < maxlevel + 1; ++type_index) { m += '<option value="' + type_index + '">' + type_index + '</option>'; } m += '</select></div></td>'; m += '<td><div style="max-width:100%;"><b>'+uW.g_js_strings.commonstr.level+': </b><select id="bttrUniqueLevel2">'; m += '<option value="1" selected>1</option>'; for (var type_index = 2; type_index < maxlevel + 1; ++type_index) { m += '<option value="' + type_index + '">' + type_index + '</option>'; } m += '</select></div></td></tr>'; m += '<tr>'; m += '<td id="bttrUniqueItem1" style="overflow: visible; width: auto; height: auto;"/>'; m += '<td id="bttrUniqueItem2" style="overflow: visible; width: auto; height: auto;"/>'; m += '</tr>'; m += '<tr>'; m += '<td id="bttrUniqueInv1" style="overflow: visible; width: auto; height: auto;"/>'; m += '<td id="bttrUniqueInv2" style="overflow: visible; width: auto; height: auto;"/>'; m += '</tr>'; m += '</TABLE>'; m += '</div>'; div.innerHTML = m; ById('bttrUniqueSort').addEventListener('click', function (e) { t.trSorted = e.target.checked; t.PaintTRUniques(div); },false) jQuery("#bttrUniqueType1").change(function () { var trType = ById('bttrUniqueType1').value; var trList = ById('bttrUnique1'); if (selectedType1 != trType && trType != 0) { selectedCard1 = 0; } jQuery("#bttrUnique1").empty(); var trOption = document.createElement('option'); trOption.text = '-- '+uW.g_js_strings.commonstr.items+' --'; trOption.value = 0; trList.add(trOption); for (var k=0;k<t.trSortArray.length;k++) { var throne_item = t.trSortArray[k]; if (throne_item == null || !throne_item) continue; if (trTypes[parseInt(throne_item.Type)-1] == trType || trType == 0) { var trOption = document.createElement('option'); trOption.text = throne_item.Name; trOption.value = throne_item.Id; trList.add(trOption); } } if (selectedCard1 != 0) { jQuery("#bttrUnique1").val(selectedCard1); } }); jQuery("#bttrUniqueType2").change(function () { var trType = ById('bttrUniqueType2').value; var trList = ById('bttrUnique2'); if (selectedType2 != trType && trType != 0) { selectedCard2 = 0; } jQuery("#bttrUnique2").empty(); var trOption = document.createElement('option'); trOption.text = '-- '+uW.g_js_strings.commonstr.items+' --'; trOption.value = 0; trList.add(trOption); for (var k=0;k<t.trSortArray.length;k++) { var throne_item = t.trSortArray[k]; if (throne_item == null || !throne_item) continue; if (trTypes[parseInt(throne_item.Type)-1] == trType || trType == 0) { var trOption = document.createElement('option'); trOption.text = throne_item.Name; trOption.value = throne_item.Id; trList.add(trOption); } } if (selectedCard2 != 0) { jQuery("#bttrUnique2").val(selectedCard2); } }); jQuery("#bttrUnique1").change(function () { changeUnique1(this); }); jQuery("#bttrUnique1").keyup(function (event) { changeUnique1(this); }); function changeUnique1(thisObj) { var trID = jQuery(thisObj).val(); var trDisplay = ById('bttrUniqueItem1'); var trLevel = ById('bttrUniqueLevel1'); selectedCard1 = 0; ConvertToCard(trID,trDisplay,trLevel); t.GetInventory(trID,'bttrUniqueInv1'); selectedCard1 = trID; selectedType1 = trTypes[parseInt(t.UniqueTRItems[trID].Type)-1]; } jQuery("#bttrUnique2").change(function () { changeUnique2(this); }); jQuery("#bttrUnique2").keyup(function (event) { changeUnique2(this); }); function changeUnique2(thisObj) { var trID = jQuery(thisObj).val(); var trDisplay = ById('bttrUniqueItem2'); var trLevel = ById('bttrUniqueLevel2'); selectedCard2 = 0; ConvertToCard(trID,trDisplay,trLevel); t.GetInventory(trID,'bttrUniqueInv2'); selectedCard2 = trID; selectedType2 = trTypes[parseInt(t.UniqueTRItems[trID].Type)-1]; } jQuery("#bttrUniqueLevel1").keyup(function (event) { changeLevel1(); }); jQuery("#bttrUniqueLevel1").change(function () { changeLevel1(); }); function changeLevel1() { if (selectedCard1 != 0) { var trID = selectedCard1; var trDisplay = ById('bttrUniqueItem1'); var trLevel = ById('bttrUniqueLevel1'); trDisplay.innerHTML = ''; ConvertToCard(trID,trDisplay,trLevel); } } jQuery("#bttrUniqueLevel2").keyup(function (event) { changeLevel2(); }); jQuery("#bttrUniqueLevel2").change(function () { changeLevel2(); }); function changeLevel2() { if (selectedCard2 != 0) { var trID = selectedCard2; var trDisplay = ById('bttrUniqueItem2'); var trLevel = ById('bttrUniqueLevel2'); trDisplay.innerHTML = ''; ConvertToCard(trID,trDisplay,trLevel); } } function ConvertToCard (trID,div,lvl) { div.innerHTML = ''; var TRCard = t.BuildThroneCard(trID,parseIntNan(lvl.value)); div.innerHTML = t.DisplayTRCard(TRCard,true); }; }, BuildThroneCard : function (trID,lvl) { var t = Tabs.Reference; var TRCard = {}; TRCard = t.UniqueTRItems[trID]; TRCard.id = TRCard.Id; TRCard.name = uW.itemlist["i"+trID].name; if (TRCard.Faction != 0) { TRCard.faction = cardFaction[TRCard.Faction-1]; TRCard.type = trTypes[parseInt(TRCard.Type)-1].toLowerCase(); } else { TRCard.faction = 'unknown'; TRCard.type = 'unknown'; TRCard.unknown = true; } TRCard.unique = TRCard.id; TRCard.level = lvl; TRCard.quality = 6; TRCard.createPrefix = function () { return ""; }; TRCard.createSuffix = function () { return ""; }; TRCard.effects = {}; var effects = eval(TRCard.Effects); var slot = 0; for (var k in effects) { slot++ TRCard.effects["slot"+slot] = {}; TRCard.effects["slot"+slot].id = effects[k].type; TRCard.effects["slot"+slot].tier = effects[k].tier; if (slot==6) { var qual = 5; // assume bright jewel if (UniqueJewels && UniqueJewels.hasOwnProperty(TRCard.id)) { // some uniques don't have bright jewels... qual = UniqueJewels[TRCard.id]; } TRCard.effects["slot"+slot].quality = qual; TRCard.effects["slot"+slot].fromJewel = true; TRCard.jewel = {}; TRCard.jewel.valid = true; TRCard.jewel.id = TRCard.effects["slot"+slot].id; TRCard.jewel.quality = qual; TRCard.jewel.tier = TRCard.effects["slot"+slot].tier; TRCard.jewel.fromJewel = true; TRCard.jewel.gift = false; TRCard.jewel.quantity = 1; } } return TRCard; }, GetInventory : function (trID,div) { var t = Tabs.Reference; div.innerHTML = ''; var m = '<br><b>'+uW.g_js_strings.commonstr.throneroom+'</b><br>'; var tritem = {}; for (var k in uW.kocThroneItems) { var throne_item = uW.kocThroneItems[k]; if (throne_item.unique == trID) { if (tritem[throne_item.level]) {tritem[throne_item.level]++} else {tritem[throne_item.level] = 1;} } } var gotitem = false; for (var l in tritem) { gotitem = true; m += tx('You have')+' '+tritem[l]+' '+tx('at level')+' '+l+'<br>'; } if (!gotitem) m += tx('You have none in your throne room')+'.<br>'; else { //if (t.UniqueTRItems[trID].Faction == 0) { m += '<a class=xlink id=pbgenstats'+trID+'>Generate Stats</a><br>'; //} } m += '<br><b>'+uW.g_js_strings.commonstr.inventory+'</b><br>'; var inv = uW.seed.items['i'+trID]; m += tx('You have')+' '+(inv?inv:uW.g_js_strings.commonstr.none)+' '+tx('in your inventory')+'.'; if ((inv?inv:0) != 0 && !gotitem) { m += '<br><a class=xlink onClick="cm.ItemController.use(\''+trID+'\');setTimeout(function(){pbrefreshuniques('+trID+',\''+div+'\')},2000);">'+tx('Add to Throne Room')+'</a>'; } ById(div).innerHTML = m; if (ById('pbgenstats'+trID)) { ById('pbgenstats'+trID).addEventListener('click',function () { window.prompt(tx("Copy to clipboard: Ctrl+C"), GenerateStats(trID)); } , false); } function GenerateStats(trID) { for (var k in uW.kocThroneItems) { var throne_item = uW.kocThroneItems[k]; if (throne_item.unique == trID) { var Results = 'UniqueItems["'+trID+'"] = {Id:'+trID+',Name:"'+throne_item.name+'", Effects:['; var firsteffect = true; for (var e in throne_item.effects) { if (!firsteffect) Results += ','; Results += '{type:'+throne_item.effects[e].id+',tier:'+throne_item.effects[e].tier+'}'; firsteffect = false; } Results += '],Faction:'+(cardFaction.indexOf(throne_item.faction)+1)+',Type:'+(trTypes.indexOf(throne_item.type)+1)+'};'; break; } } return Results; } }, DisplayTRCard : function (throne_item,Links,ScaleFactor) { var t = Tabs.Reference; var D = []; if (throne_item == null) { D.push("<div>"); D.push("</div>"); return D.join(""); } if (!ScaleFactor) { ScaleFactor = 1; } var CardWidth = Math.floor(200*ScaleFactor); var BigFont = Math.floor(14*ScaleFactor); var ImageSize = Math.floor(70*ScaleFactor); var SmallFont = Math.floor(11*ScaleFactor); var E = []; // copy to clip/post to chat array D.push("<div style='overflow: hidden; position: relative; left: 0px; top: 0px;'>"); D.push(" <div id='throneInventoryItemTooltip'>"); D.push("<div class='section' style='overflow:visible;width:"+CardWidth+"px;' id='idsection'>"); D.push(" <div class='title " + throne_item.createPrefix().toLowerCase() + "' style='color:#3F2300;text-transform:capitalize;font-size:"+BigFont+"px;'> "); D.push(throne_item.name + (throne_item.unique ? " +" + throne_item.level : "")); D.push(" </div> "); D.push(" <div class='description'> "); var uniquestyle = ""; if (throne_item.isBroken) { uniquestyle = 'width:'+ImageSize+'px;height:'+ImageSize+'px;background:transparent url('+BrokenIcon+'); top left no-repeat; background-size:'+ImageSize+'px '+ImageSize+'px;'; } else { if (throne_item.unique > 29000) { uniquestyle = 'width:'+ImageSize+'px;height:'+ImageSize+'px;background:transparent url('+IMGURL+'throne/icons/70/'+throne_item.faction+'_'+throne_item.type+'_unique_'+throne_item.unique + '.png); top left no-repeat; background-size:'+ImageSize+'px '+ImageSize+'px;'; if (throne_item.unique == 30262 || throne_item.unique == 30264 || throne_item.unique == 30266) { uniquestyle = 'width:'+ImageSize+'px;height:'+ImageSize+'px;background:transparent url('+IMGURL+'throne/icons/70/christmas_advisor_normal_1.png); top left no-repeat; background-size:'+ImageSize+'px '+ImageSize+'px;'; } if (throne_item.unique == 30261 || throne_item.unique == 30263 || throne_item.unique == 30265) { uniquestyle = 'width:'+ImageSize+'px;height:'+ImageSize+'px;background:transparent url('+IMGURL+'throne/icons/70/christmas_candelabrum_normal_1.png); top left no-repeat; background-size:'+ImageSize+'px '+ImageSize+'px;'; } if (throne_item.unique == 30230 || throne_item.unique == 30240 || throne_item.unique == 30250) { uniquestyle = 'width:'+ImageSize+'px;height:'+ImageSize+'px;background:transparent url('+IMGURL+'throne/icons/70/halloween_table_normal_1.png); top left no-repeat; background-size:'+ImageSize+'px '+ImageSize+'px;'; } if (throne_item.unique == 30231 || throne_item.unique == 30241 || throne_item.unique == 30251) { uniquestyle = 'width:'+ImageSize+'px;height:'+ImageSize+'px;background:transparent url('+IMGURL+'throne/icons/70/halloween_chair_normal_1.png); top left no-repeat; background-size:'+ImageSize+'px '+ImageSize+'px;'; } } else { uniquestyle = 'width:'+ImageSize+'px;height:'+ImageSize+'px;background:transparent url('+IMGURL+'throne/icons/70/'+throne_item.faction+'_'+throne_item.type+'_normal_1_'+throne_item.quality+'.png); top left no-repeat; background-size:'+ImageSize+'px '+ImageSize+'px;'; } } D.push("<div class='portrait " + throne_item.faction + " " + throne_item.type + "' style='"+uniquestyle+"'> </div> "); D.push("<ul style='margin-top:0px;'>"); D.push("<li style='float:none;margin:0px;font-size:"+SmallFont+"px;'> " + uW.g_js_strings.commonstr.faction + ": " + uW.g_js_strings.commonstr[throne_item.faction] + "</li>"); D.push("<li style='float:none;margin:0px;font-size:"+SmallFont+"px;'> " + uW.g_js_strings.commonstr.quality + ": " + CardQuality(throne_item.quality,throne_item.unique) + "</li>"); D.push("<li style='float:none;margin:0px;font-size:"+SmallFont+"px;'> " + uW.g_js_strings.commonstr.type + ": " + uW.g_js_strings.throneRoom[throne_item.type] + "</li>"); D.push("<li style='float:none;margin:0px;font-size:"+SmallFont+"px;'> " + uW.g_js_strings.commonstr.level + ": " + throne_item.level + "</li>"); D.push("<li style='float:none;margin:0px;font-size:"+SmallFont+"px;'> " + uW.g_js_strings.commonstr.might + ": " + CardMight(throne_item) + "</li>"); if (throne_item.jewel && throne_item.jewel.valid) { D.push("<li style='float:none;margin:0px;font-size:"+SmallFont+"px;'> " + uW.g_js_strings.commonstr.jewel + ": " + t.JewelQuality[throne_item.jewel.quality-1] + "</li>"); } D.push("</ul>"); D.push(" </div> "); D.push(" <ul> "); E.push(throne_item.name.replace(/\'/g, "") + (throne_item.unique ? " +" + throne_item.level : "")); E.push(uW.g_js_strings.commonstr.faction + ": " + uW.g_js_strings.commonstr[throne_item.faction]); E.push(uW.g_js_strings.commonstr.quality + ": " + CardQuality(throne_item.quality,throne_item.unique)); E.push(uW.g_js_strings.commonstr.type + ": " + uW.g_js_strings.throneRoom[throne_item.type]); // E.push(uW.g_js_strings.commonstr.level + ": " + throne_item.level); E.push(uW.g_js_strings.commonstr.might + ": " + CardMight(throne_item)); if (throne_item.jewel && throne_item.jewel.valid) { E.push(uW.g_js_strings.commonstr.jewel + ": " + t.JewelQuality[throne_item.jewel.quality-1]); } if (throne_item.unknown) { if (Links) { D.push(" <li style='font-size:"+BigFont+"px;' class='effect'><center>"+tx("Unknown")+"</center></li> "); D.push(" <li style='font-size:"+BigFont+"px;' class='effect'><div style='font-size:"+SmallFont+"px;'><center>"+tx("If you have one in your Throne Room please click the 'Generate Stats' link below and send the results to the script developer")+".</center></div></li>"); } } else { for (var slot in throne_item.effects) { try { var N = throne_item.effects[slot]; tier = parseInt(N.tier); effect = getThroneEffectName(N.id,tier); p = uW.cm.thronestats.tiers[N.id][tier]; while (!p && (tier > 0)) { tier--; p = uW.cm.thronestats.tiers[N.id][tier]; } if (!p) continue; // can't find stats for tier var base = +p.base || 0; var level = +throne_item.level || 0; var growth = +p.growth || 0; if (slot == 'slot6') { //if it has a slot 6, it automatically has a jewel JewelQuality = throne_item["effects"]['slot6'].quality; GrowthLimit = uW.cm.thronestats.jewelGrowthLimit[JewelQuality]; if (GrowthLimit <= level) level = GrowthLimit } percent = Number(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]); percent = (percent > 0) ? "+" + percent : percent; if (B <= throne_item.quality) { D.push(" <li class='effect " + css + "' style='float:none;margin:0px;font-size:"+BigFont+"px;'> " + percent + "% " + effect + " </li> "); } else { D.push(" <li class='effect disabled " + css + "' style='float:none;margin:0px;font-size:"+BigFont+"px;'> " + percent + "% " + effect + " </li> "); } E.push("Row " + B + ": " + percent + "% " + effect); } catch (e) { } } } D.push(" </ul> "); D.push(" </div> "); D.push(" </ul> "); D.push(" </div> "); D.push(" </div> "); var cText = ":::. |" + E.join('||'); var clipText = E.join(' '); if (Links) { D.push('<table width="210" class=xtab><tr><td><a class=xlink onClick="window.prompt(\''+tx("Copy to clipboard: Ctrl+C")+'\', \''+clipText+'\');">'+tx("Copy to Clipboard")+'</a></td><td align=right><a class=xlink onClick="Chat.sendChat(\''+cText+'\')">'+tx("Post to Chat")+'</a></td></tr></table>'); } return D.join(""); }, PaintCHUniques: function (div) { var t = Tabs.Reference; var maxlevel = CM.CHAMPION.MAX_LEVELS; var itemTypes = { weapon: 0, chest: 1, helm: 2, boots: 3, shield: 4, ring: 5, pendant: 7, cloak: 8 }; var selectedCard1 = 0; var selectedCard2 = 0; var selectedType1 = 0; var selectedType2 = 0; uWExportFunction('pbrefreshchuniques', Tabs.Reference.GetCHInventory); t.chSortArray = []; for (var k in t.UniqueCHItems) { t.chSortArray.push(t.UniqueCHItems[k]); } if (t.chSorted) { t.chSortArray.sort(function(a, b){ var x=a.Set-b.Set; var y=0; if (a.name<b.name) y=-1; if (a.name>b.name) y=1; return (x==0)?y:x; }); } var m = '<div align=center style="height:480px;overflow-y:auto;">'; m += '<TABLE width=90% class=xtabBR>'; m += '<tr align=center><td width=50%/></td><td width=50%/><div align=right><INPUT id=btchUniqueSort type=checkbox '+(t.chSorted?"CHECKED" : "")+'/> '+tx("Sort by Champion Set")+'</div></td></tr>'; m += '<tr><td><div style="max-width:100%;"><b>'+uW.g_js_strings.commonstr.type+': </b><select id="btchUniqueType1">'; m += '<option value="0">-- '+tx('ALL')+' --</option>'; for (var type in itemTypes) { m += '<option value="' + type + '">' + uW.g_js_strings.champ[type] + '</option>'; } m += '</select></div></td>'; m += '<td><div style="max-width:100%;"><b>'+uW.g_js_strings.commonstr.type+': </b><select id="btchUniqueType2">'; m += '<option value="0">-- '+tx('ALL')+' --</option>'; for (var type in itemTypes) { m += '<option value="' + type + '">' + uW.g_js_strings.champ[type] + '</option>'; } m += '</select></div></td>'; m += '<tr><td><div style="max-width:100%;"><b>'+uW.g_js_strings.commonstr.item+': </b><select id="btchUnique1">'; m += '<option value="0">-- '+uW.g_js_strings.commonstr.items+' --</option>'; for (var k=0;k<t.chSortArray.length;k++) { var champ_item = t.chSortArray[k]; if (champ_item == null || !champ_item) continue; var style = ''; if (champ_item.Faction == 0) style = 'style="color:#aaa;"'; m += '<option '+style+' value="' + champ_item.Id + '">' + uW.itemlist["i"+champ_item.Id].name + ' </option>'; } m += '</select></div></td>'; m += '<td><div style="max-width:100%;"><b>'+uW.g_js_strings.commonstr.item+': </b><select id="btchUnique2">'; m += '<option value="0">-- '+uW.g_js_strings.commonstr.items+' --</option>'; for (var k=0;k<t.chSortArray.length;k++) { var champ_item = t.chSortArray[k]; if (champ_item == null || !champ_item) continue; var style = ''; if (champ_item.Faction == 0) style = 'style="color:#aaa;"'; m += '<option '+style+' value="' + champ_item.Id + '">' + uW.itemlist["i"+champ_item.Id].name + ' </option>'; } m += '</select></div></td>'; m += '<tr><td><div style="max-width:100%;"><b>'+uW.g_js_strings.commonstr.level+': </b><select id="btchUniqueLevel1">'; m += '<option value="0" selected>0</option>'; for (var type_index = 1; type_index < maxlevel + 1; ++type_index) { m += '<option value="' + type_index + '">' + type_index + '</option>'; } m += '</select></div></td>'; m += '<td><div style="max-width:100%;"><b>'+uW.g_js_strings.commonstr.level+': </b><select id="btchUniqueLevel2">'; m += '<option value="0" selected>0</option>'; for (var type_index = 1; type_index < maxlevel + 1; ++type_index) { m += '<option value="' + type_index + '">' + type_index + '</option>'; } m += '</select></div></td></tr>'; m += '<tr>'; m += '<td id="btchUniqueItem1" style="overflow: visible; width: auto; height: auto;"/>'; m += '<td id="btchUniqueItem2" style="overflow: visible; width: auto; height: auto;"/>'; m += '</tr>'; m += '<tr>'; m += '<td id="btchUniqueInv1" style="overflow: visible; width: auto; height: auto;"/>'; m += '<td id="btchUniqueInv2" style="overflow: visible; width: auto; height: auto;"/>'; m += '</tr>'; m += '</TABLE>'; m += '</div>'; div.innerHTML = m; ById('btchUniqueSort').addEventListener('click', function (e) { t.chSorted = e.target.checked; t.PaintCHUniques(div); },false) jQuery("#btchUniqueType1").change(function () { var chType = ById('btchUniqueType1').value; var chList = ById('btchUnique1'); if (selectedType1 != chType && chType != 0) { selectedCard1 = 0; } jQuery("#btchUnique1").empty(); var chOption = document.createElement('option'); chOption.text = '-- '+uW.g_js_strings.commonstr.items+' --'; chOption.value = 0; chList.add(chOption); for (var k=0;k<t.chSortArray.length;k++) { var champ_item = t.chSortArray[k]; if (champ_item == null || !champ_item) continue; if (chTypeStrings[parseInt(champ_item.Type)-1] == chType || chType == 0) { var chOption = document.createElement('option'); chOption.text = uW.itemlist["i"+champ_item.Id].name; chOption.value = champ_item.Id; if (champ_item.Faction == 0) chOption.style = 'color:#aaa;'; chList.add(chOption); } } if (selectedCard1 != 0) { jQuery("#btchUnique1").val(selectedCard1); } }); jQuery("#btchUniqueType2").change(function () { var chType = ById('btchUniqueType2').value; var chList = ById('btchUnique2'); if (selectedType2 != chType && chType != 0) { selectedCard2 = 0; } jQuery("#btchUnique2").empty(); var chOption = document.createElement('option'); chOption.text = '-- '+uW.g_js_strings.commonstr.items+' --'; chOption.value = 0; chList.add(chOption); for (var k=0;k<t.chSortArray.length;k++) { var champ_item = t.chSortArray[k]; if (champ_item == null || !champ_item) continue; if (chTypeStrings[parseInt(champ_item.Type)-1] == chType || chType == 0) { var chOption = document.createElement('option'); chOption.text = uW.itemlist["i"+champ_item.Id].name; chOption.value = champ_item.Id; if (champ_item.Faction == 0) chOption.style = 'color:#aaa;'; chList.add(chOption); } } if (selectedCard2 != 0) { jQuery("#btchUnique2").val(selectedCard2); } }); jQuery("#btchUnique1").change(function () { changeUnique1(this); }); jQuery("#btchUnique1").keyup(function (event) { changeUnique1(this); }); function changeUnique1(thisObj) { var chID = jQuery(thisObj).val(); var chDisplay = ById('btchUniqueItem1'); var chLevel = ById('btchUniqueLevel1'); selectedCard1 = 0; ConvertToCard(chID,chDisplay,chLevel); t.GetCHInventory(chID,'btchUniqueInv1'); selectedCard1 = chID; selectedType1 = chTypeStrings[parseInt(t.UniqueCHItems[chID].Type)-1]; } jQuery("#btchUnique2").change(function () { changeUnique2(this); }); jQuery("#btchUnique2").keyup(function (event) { changeUnique2(this); }); function changeUnique2(thisObj) { var chID = jQuery(thisObj).val(); var chDisplay = ById('btchUniqueItem2'); var chLevel = ById('btchUniqueLevel2'); selectedCard2 = 0; ConvertToCard(chID,chDisplay,chLevel); t.GetCHInventory(chID,'btchUniqueInv2'); selectedCard2 = chID; selectedType2 = chTypeStrings[parseInt(t.UniqueCHItems[chID].Type)-1]; } jQuery("#btchUniqueLevel1").keyup(function (event) { changeLevel1(); }); jQuery("#btchUniqueLevel1").change(function () { changeLevel1(); }); function changeLevel1() { if (selectedCard1 != 0) { var chID = selectedCard1; var chDisplay = ById('btchUniqueItem1'); var chLevel = ById('btchUniqueLevel1'); chDisplay.innerHTML = ''; ConvertToCard(chID,chDisplay,chLevel); } } jQuery("#btchUniqueLevel2").keyup(function (event) { changeLevel2(); }); jQuery("#btchUniqueLevel2").change(function () { changeLevel2(); }); function changeLevel2() { if (selectedCard2 != 0) { var chID = selectedCard2; var chDisplay = ById('btchUniqueItem2'); var chLevel = ById('btchUniqueLevel2'); chDisplay.innerHTML = ''; ConvertToCard(chID,chDisplay,chLevel); } } function ConvertToCard (chID,div,lvl) { div.innerHTML = ''; var CHCard = t.BuildChampCard(chID,parseIntNan(lvl.value)); div.innerHTML = t.DisplayCHCard(CHCard,true); }; }, BuildChampCard : function (chID,lvl) { var t = Tabs.Reference; var CHCard = {}; CHCard = t.UniqueCHItems[chID]; CHCard.uniqueCompare = true; CHCard.id = CHCard.Id; CHCard.name = uW.itemlist["i"+chID].name; if (CHCard.Faction != 0) { CHCard.faction = CHCard.Faction; CHCard.type = CHCard.Type; } else { CHCard.unknown = true; } CHCard.unique = CHCard.id; CHCard.level = lvl; CHCard.rarity = 5; CHCard.createPrefix = function () { return ""; }; CHCard.createSuffix = function () { return ""; }; CHCard.effects = {}; var effects = eval(CHCard.Effects); var slot = 0; for (var k in effects) { slot++ CHCard.effects["slot"+slot] = {}; CHCard.effects["slot"+slot].id = effects[k].type; CHCard.effects["slot"+slot].tier = effects[k].tier; } return CHCard; }, isBroken : function(champ_item) { if (champ_item.status) { return (champ_item.status < 0 || champ_item.status == 2 || champ_item.status == 3); } }, GetCHInventory : function (chID,div) { var t = Tabs.Reference; div.innerHTML = ''; var m = '<br><b>'+uW.g_js_strings.champ.title+'</b><br>'; var chitem = {}; for (var k in uW.kocChampionItems) { var champ_item = uW.kocChampionItems[k]; if (champ_item.unique == chID) { if (chitem[champ_item.level]) {chitem[champ_item.level]++} else {chitem[champ_item.level] = 1;} } } var gotitem = false; for (var l in chitem) { gotitem = true; m += tx('You have')+' '+chitem[l]+' '+tx('at level')+' '+l+'<br>'; } if (!gotitem) m += tx('You have none in your champion hall')+'.<br>'; else { if (t.UniqueCHItems[chID].Faction == 0) { m += '<a class=xlink id=pbgenchstats'+chID+'>Generate Stats</a><br>'; } } m += '<br><b>'+uW.g_js_strings.commonstr.inventory+'</b><br>'; var inv = uW.seed.items['i'+chID]; m += tx('You have')+' '+(inv?inv:uW.g_js_strings.commonstr.none)+' '+tx('in your inventory')+'.'; if ((inv?inv:0) != 0) { m += '<br><a class=xlink onClick="cm.ItemController.use(\''+chID+'\');setTimeout(function(){pbrefreshchuniques('+chID+',\''+div+'\')},2000);">'+tx('Add to Champion Hall')+'</a>'; } ById(div).innerHTML = m; if (ById('pbgenchstats'+chID)) { ById('pbgenchstats'+chID).addEventListener('click',function () { window.prompt(tx("Copy to clipboard: Ctrl+C"), GenerateStats(chID)); } , false); } function GenerateStats(chID) { for (var k in uW.kocChampionItems) { var champ_item = uW.kocChampionItems[k]; if (champ_item.unique == chID) { var Results = 'UniqueItems["'+chID+'"] = {Id:'+chID+',Name:"'+champ_item.subtype+'", Effects:['; var firsteffect = true; for (var e in champ_item.effects) { if (!firsteffect) Results += ','; Results += '{type:'+champ_item.effects[e].id+',tier:'+champ_item.effects[e].tier+'}'; firsteffect = false; } Results += '],Faction:'+champ_item.faction+',Type:'+champ_item.type+',Set:'+champ_item.set+'};'; break; } } return Results; } }, DisplayCHCard : function (champ_item,Links,ScaleFactor,showChamp) { var t = Tabs.Reference; var D = []; if (champ_item == null) { D.push("<div>"); D.push("</div>"); return D.join(""); } if (!ScaleFactor) { ScaleFactor = 1; } var CardWidth = Math.floor(220*ScaleFactor); var BigFont = Math.floor(14*ScaleFactor); var ImageSize = Math.floor(70*ScaleFactor); var SmallFont = Math.floor(12*ScaleFactor); if (champ_item.rarity) champ_item.quality = parseIntNan(champ_item.rarity); if (!champ_item.Type) champ_item.Type = parseIntNan(champ_item.type); var E = []; // copy to clip/post to chat array D.push("<div style='overflow: hidden; position: relative; left: 0px; top: 0px;'>"); D.push("<div id='throneInventoryItemTooltip'>"); D.push("<div class='section' style='overflow:visible;background:#E7E3D6;width:"+CardWidth+"px;color:#3f2300;' id='idsection'>"); D.push("<div class='title " + champ_item.createPrefix().toLowerCase() + "' style='text-transform:capitalize;background:#E7E3D6;border-bottom:2px solid #A4753A;font-size:"+BigFont+"px;'> "); D.push(champ_item.name + (champ_item.uniqueCompare ? " +" + champ_item.level : "")); D.push("</div>"); D.push("<div class='description' style='border-bottom:2px solid #A4753A;'>"); var uniquestyle = ""; if (t.isBroken(champ_item)) { uniquestyle = 'width:'+ImageSize+'px;height:'+ImageSize+'px;background:transparent url('+BrokenIcon+'); top left no-repeat; background-size:'+ImageSize+'px '+ImageSize+'px;'; } else { if (champ_item.unique != 0) { uniquestyle = 'width:'+ImageSize+'px;height:'+ImageSize+'px;background:transparent url('+IMGURL+'champion_hall/unique_'+champUniqueImageTypes[champ_item.Type-1]+'_'+cardFaction[champ_item.faction-1]+'_70x70_'+champ_item.unique + '.png); top left no-repeat; background-size:'+ImageSize+'px '+ImageSize+'px;'; } else { uniquestyle = 'width:'+ImageSize+'px;height:'+ImageSize+'px;background:transparent url('+IMGURL+'champion_hall/'+cardQuality[champ_item.rarity].toLowerCase()+'_'+champImageTypes[champ_item.Type-1]+'_'+cardFaction[champ_item.faction-1]+'_70x70.png); top left no-repeat; background-size:'+ImageSize+'px '+ImageSize+'px;'; } } D.push("<div class='portrait " + champ_item.faction + " " + champ_item.type + "' style='border:none;margin-left:3px;margin-top:8px;"+uniquestyle+"'> </div> "); D.push("<ul>"); D.push("<li style='float:none;margin:0px;color:#A4753A;font-size:"+SmallFont+"px;'> " + uW.g_js_strings.commonstr.faction + ": " + (champ_item.unknown?"Unknown":uW.g_js_strings.commonstr[cardFaction[champ_item.faction-1]]) + "</li>"); D.push("<li style='float:none;margin:0px;color:#A4753A;font-size:"+SmallFont+"px;'> " + uW.g_js_strings.commonstr.quality + ": " + CardQuality(champ_item.rarity,champ_item.unique) + "</li>"); D.push("<li style='float:none;margin:0px;color:#A4753A;font-size:"+SmallFont+"px;'> " + uW.g_js_strings.commonstr.type + ": " + (champ_item.unknown?"Unknown":uW.g_js_strings.champ[chTypeStrings[champ_item.type-1]]) + "</li>"); D.push("<li style='float:none;margin:0px;color:#A4753A;font-size:"+SmallFont+"px;'> " + uW.g_js_strings.commonstr.level + ": " + champ_item.level + "</li>"); D.push("<li style='float:none;margin:0px;color:#A4753A;font-size:"+SmallFont+"px;'> " + uW.g_js_strings.commonstr.might + ": " + CardMight(champ_item,true) + "</li>"); if (showChamp && champ_item.equippedTo) { for (var y in Seed.champion.champions) { var chkchamp = Seed.champion.champions[y]; if (chkchamp.championId && chkchamp.championId==champ_item.equippedTo) { D.push("<li style='float:none;margin:0px;color:#A4753A;font-size:"+SmallFont+"px;'> " + tx('Equipped') + ": " + chkchamp.name + "</li>"); break; } } } D.push("</ul>"); D.push("</div>"); D.push("<ul>"); E.push(champ_item.name.replace(/\'/g, "") + (champ_item.uniqueCompare ? " +" + champ_item.level : "")); E.push(uW.g_js_strings.commonstr.faction + ": " + (champ_item.unknown?"Unknown":uW.g_js_strings.commonstr[cardFaction[champ_item.faction-1]])); E.push(uW.g_js_strings.commonstr.quality + ": " + CardQuality(champ_item.rarity,champ_item.unique)); E.push(uW.g_js_strings.commonstr.type + ": " + (champ_item.unknown?"Unknown":uW.g_js_strings.commonstr[cardFaction[champ_item.faction-1]])); // E.push(uW.g_js_strings.commonstr.level + ": " + champ_item.level); E.push(uW.g_js_strings.commonstr.might + ": " + CardMight(champ_item,true)); if (champ_item.unknown) { if (Links) { D.push(" <li style='font-size:"+BigFont+"px;' class='effect'><center>"+tx("Unknown")+"</center></li> "); D.push(" <li style='font-size:"+BigFont+"px;' class='effect'><div style='font-size:"+SmallFont+"px;'><center>"+tx("If you have one in your Champions Hall please click the 'Generate Stats' link below and send the results to the script developer")+".</center></div></li>"); } } else { for (var slot in champ_item.effects) { try { var N = champ_item.effects[slot]; effect = uW.g_js_strings.effects["name_"+N.id]; tier = parseInt(N.tier); p = ChampionStatTiers[N.id][tier]; while (!p && (tier > 0)) { tier--; p = ChampionStatTiers[N.id][tier]; } if (!p) continue; // can't find stats for tier var base = +p.base || 0; var level = +champ_item.level || 0; var growth = +p.growth || 0; percent = Number(base + ((level * level + level) * growth * 0.5)); if (N.id>=300) { percent = Number(base + (level * growth)); if (N.id<400) percent = percent*100; } 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) B = slot; percent = (N.id>=300)?percent+'%':percent; if (B <= champ_item.rarity) { if (N.id < 200) { D.push(" <li title='tier "+tier+"' class='effect " + css + "' style='float:none;margin:0px;color: #1751A5;font-size:"+BigFont+"px;'> " + percent + " " + effect + " </li> "); } else { if (N.id >= 400) { D.push(" <li title='tier "+tier+"' class='effect " + css + "' style='float:none;margin:0px;color: #f80;font-size:"+BigFont+"px;'> " + percent + " " + effect + " </li> "); } else { if (N.id >= 300) { D.push(" <li title='tier "+tier+"' class='effect " + css + "' style='float:none;margin:0px;color: #808;font-size:"+BigFont+"px;'> " + percent + " " + effect + " </li> "); } else { D.push(" <li title='tier "+tier+"' class='effect " + css + "' style='float:none;margin:0px;font-size:"+BigFont+"px;'> " + percent + " " + effect + " </li> "); } } } } else { D.push(" <li title='tier "+tier+"' class='effect disabled " + css + "' style='float:none;margin:0px;font-size:"+BigFont+"px;'> " + percent + " " + effect + " </li> "); } E.push("Row " + B + ": " + percent + " " + effect); } catch (e) { } } } D.push(" </ul> "); D.push(" </div> "); D.push(" </ul> "); D.push(" </div> "); D.push(" </div> "); var cText = ":::. |" + E.join('||'); var clipText = E.join(' '); if (Links) { D.push('<table width="210" class=xtab><tr><td><a class=xlink onClick="window.prompt(\''+tx("Copy to clipboard: Ctrl+C")+'\', \''+clipText+'\');">'+tx("Copy to Clipboard")+'</a></td><td align=right><a class=xlink onClick="Chat.sendChat(\''+cText+'\')">'+tx("Post to Chat")+'</a></td></tr></table>'); } return D.join(""); }, }