NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name RaidingIncome // @description Raiding Income // @copyright Kalish, 2020 // @namespace http://tampermonkey.net/ // @version 1.0 // @license MIT // @author Kalish // @match https://*.crownofthegods.com/ // @grant none // ==/UserScript== (function() { 'use strict'; const TropaCarga = {Guard:0,Warship:3000,Druid:10,Priestess:10,Horseman:15,Scorpion:0,Sorcerer:5,Ballista:0,Scout:0,Praetor:20,Ranger:10,Arbalist:15,Ram:0,Vanquisher:10,Stinger:1500,Senator:0,Galley:1000,Triari:20}, TropaType = ["Guard","Ballista","Ranger","Triari","Priestess","Vanquisher","Sorcerer", "Scout","Arbalist","Praetor","Horseman","Druid","Ram","Scorpion","Galley","Stinger","Warship"], RaidLoote = [0,400,1000,4500,15000,33000,60000,120000,201000,300000,446000], VelTropas = {Scout:8,Horseman:10,Druid:10,Praetor:10,Arbalist:10,Vanquisher:20,Sorcerer:20,Ranger:20,Triari:20,Priestess:20,Ram:30,Ballista:30,Scorpion:30,Senator:40,Stinger:5,Galley:5,Warship:5}, ResearchValores = [0,1,3,6,10,15,20,25,30,35,40,45,50]; $('#warCounc').append('<button id="CheckResHora" style="right:6%;margin-top:95px;width:150px;height:30px;font-size:12px;position:absolute;" class="regButton greenb">Raiding Income</button>'); function StatusResPorHora() { const SIResPorHora = [" ", " k", " m", " b", " t", " p", " e"]; let ResPorHoraCid,ResPorHora,TotalResPorHora=0,NumRaids=0,NumRaidsCid=0,ResVel,ContResPorHora=new Array(60).fill(0),ContStringPorHora="",tierSI,NContResPorHora=new Array(60).fill(0); fetch("overview/graid.php").then(response => response.json()).then(raids => { raids.a.forEach(city => { ResPorHora=0; city[12].forEach(raid => { ResVel=100; raid[5].forEach(TrRaidando => { if([2,3,4,5,6].includes(TrRaidando.tt)) ResVel = Math.min(ResVel,ResearchValores[cotg.player.research()[8]]); else if([8,9,10,11].includes(TrRaidando.tt)) ResVel = Math.min(ResVel,ResearchValores[cotg.player.research()[9]]); else if([14,15,16].includes(TrRaidando.tt)) ResVel = Math.min(ResVel,ResearchValores[cotg.player.research()[13]]); ResPorHora += (1 > TropaCarga[TropaType[TrRaidando.tt]]*TrRaidando.tv/RaidLoote[raid[2].match(/(?<=l\s).+?(?=\s\()/g)]/(2-raid[2].match(/(?<=\().+?(?=\%)/g)/100)) ? TropaCarga[TropaType[TrRaidando.tt]]*TrRaidando.tv/(Math.sqrt(Math.pow(((raid[8]-raid[8]%65536)/65536-(city[0]-city[0]%65536)/65536),2)+Math.pow((raid[8]%65536-city[0]%65536),2))*VelTropas[TropaType[TrRaidando.tt]]/(1+ResVel/100)*2+120)*60 : RaidLoote[raid[2].match(/(?<=vel\s).+?(?=\s\()/g)]/(2-raid[2].match(/(?<=\().+?(?=\%)/g)/100)/(Math.sqrt(Math.pow(((raid[8]-raid[8]%65536)/65536-(city[0]-city[0]%65536)/65536),2)+Math.pow((raid[8]%65536-city[0]%65536),2))*VelTropas[TropaType[TrRaidando.tt]]/(1+ResVel/100)*2+120)*60; }); NumRaids++; NContResPorHora[Number(city[2].split(" ")[1])]++; if(Number($("#cityDropdownMenu option:selected").val()) == city[0]) NumRaidsCid++; }); ResPorHoraCid = (Number($("#cityDropdownMenu option:selected").val()) == city[0]) ? ResPorHora.toFixed()+" R/h" : ResPorHoraCid; TotalResPorHora += (!isNaN(ResPorHora)) ? ResPorHora: 0; ContResPorHora[Number(city[2].split(" ")[1])] += (!isNaN(ResPorHora)) ? ResPorHora: 0; }); tierSI = Math.log10(TotalResPorHora) / 3 | 0; ResPorHora = (tierSI != 0) ? (TotalResPorHora/Math.pow(10,tierSI*3)).toFixed(2)+SIResPorHora[tierSI]+"R/h" : TotalResPorHora.toFixed(2)+" R/h"; ContResPorHora.forEach((cont,ncont) => { if (cont != 0) { tierSI = Math.log10(cont) / 3 | 0; ContStringPorHora += (tierSI != 0) ? "<p>C"+ncont+" = "+(cont/Math.pow(10,tierSI*3)).toFixed(2)+SIResPorHora[tierSI]+"R/h with "+NContResPorHora[ncont]+" raids ("+Math.round(cont/TotalResPorHora*100)+"%)</p>" : "<p>C"+ncont+" = "+cont.toFixed(2)+" R/h with "+NContResPorHora[ncont]+" raids ("+Math.round(cont/TotalResPorHora*100)+"%)</p>"; } }); $("#RaidPorHoraCheck").html("<p>Total = "+ResPorHora+" with "+NumRaids+" raids</p>"+ContStringPorHora+"<p>Current City ("+$('#cityDropdownMenu option:selected').val()%65536+":"+(Number($('#cityDropdownMenu option:selected').val())-$('#cityDropdownMenu option:selected').val()%65536)/65536+") = "+ResPorHoraCid+" with "+NumRaidsCid+" raids</p>"); $("#CheckResHoraBox").height((ContResPorHora.filter(r => {return r != 0;}).length*20+200)+"px"); }); } $("#CheckResHora").click(() => { if(!$("#CheckResHoraBox").length) { $("body").append(` <div id="CheckResHoraBox" style="width:320px;height:200px;background-color:#E2CBAC;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;border:4px ridge #DAA520;position:absolute;right:100px;top:100px;z-index:1000000;" class="ui-draggable"> <div class="popUpBar ui-draggable-handle" style="margin-top:0px;"> <span class="smallredheading" style="margin-left:10px;margin-top:10px;font-size:x-large;">Resources per hour</span> <button id="councillorXbutton" class="xbutton" onclick="$('#CheckResHoraBox').remove();" style="margin-top:0px;margin-right:10px;"><div id="xbuttondiv"><div><div id="centxbuttondiv"></div></div></div></button></div> <div id="returnbody" class="popUpWindow"><span class="tooltipstered"> <button class="greenb" id="UpdateResPerH" style="border-radius:6px;width:298px;">Update</button> <br/><br/><p id="RaidPorHoraCheck" class="smallredheading" style="color:black;">Analysing...</p></span></div></div>`); $("#CheckResHoraBox").draggable({handle:".popUpBar",containment:"window",scroll: false}).resizable(); $("#UpdateResPerH").click(StatusResPorHora); StatusResPorHora(); }}); })();