NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name OGLight Ninja // @namespace https://openuserjs.org/users/obame-tbot // @version 2.3.4 // @description OGLight script for OGame // @author nullNaN, Tralla // @license MIT // @copyright 2021, nullNaN, Tralla // @match https://*.ogame.gameforge.com/game/* // @match https://*.ogame.ninja/bots/*/browser/html/* // @match http://127.0.0.1:*/game/* // @match http://localhost:*/game/* // @updateURL https://openuserjs.org/meta/obame-tbot/OGLight.meta.js // @grant GM_addStyle // @run-at document-start // ==/UserScript== let redirect = localStorage.getItem('ogl-redirect'); if(redirect && redirect.indexOf('https') > -1) { localStorage.setItem('ogl-redirect', false); window.location.href = redirect; } // goodbye tooltips function goodbyeTipped() { if(typeof Tipped !== 'undefined') { for(let [key] of Object.entries(Tipped)) { Tipped[key] = function() { return false; } } } else requestAnimationFrame(() => goodbyeTipped()); } GM_addStyle(` /*@import url('https://fonts.googleapis.com/css?family=Material+Icons');*/ @font-face { font-family:'Material Icons'; font-style:normal; font-weight:400; src:local('Material Icons'), local('MaterialIcons-Regular'), url('data:font/woff2;base64,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'); } .icon:not(.sprite):not(.resource), .material-icons, .close-tooltip, .ogl-0, .ogl-harvest, .ogl-sideLock { transform:rotate(0.03deg); font-family:'Material Icons' !important; font-weight:normal !important; font-style:normal !important; font-size:inherit !important; line-height:inherit !important; letter-spacing:normal; text-transform:none; display:inline-block; white-space:nowrap; word-wrap:normal; direction:ltr; -webkit-font-feature-settings:'liga'; -webkit-font-smoothing:antialiased; } `); class OGLight { constructor() { this.rawURL = new URL(window.location.href); this.page = this.rawURL.searchParams.get('component') || this.rawURL.searchParams.get('page'); this.mode = this.rawURL.searchParams.get('oglMode') || 0; // 0=default; 1=transpo; 2=lock; 3=autoHarvest; 4=raid; 5=linkedMoon; this.ecoSpeed = document.querySelector('head meta[name="ogame-universe-speed"]').getAttribute('content'); this.fleetSpeed = document.querySelector('head meta[name="ogame-universe-speed-fleet"]').getAttribute('content'); this.planetList = document.querySelectorAll('.smallplanet'); this.isMobile = ('ontouchstart' in document.documentElement); this.universe = window.location.host.replace(/\D/g,''); this.highlighted = false; this.tooltipList = {}; this.keyboardActionsList = {}; this.spyList = []; this.spyId = []; // current planet this.current = {}; this.current.planet = (document.querySelector('.smallplanet .active') || document.querySelector('.smallplanet .planetlink')).parentNode; this.current.coords = this.current.planet.querySelector('.planet-koords').textContent.slice(1, -1); this.current.hasMoon = this.current.planet.querySelector('.moonlink') ? true : false; this.current.isMoon = this.current.hasMoon && this.current.planet.querySelector('.moonlink.active') ? true : false; this.current.name = this.current.isMoon ? 'Moon' : this.current.planet.querySelector('.smallplanet .planet-name').textContent; this.current.resources = { "metal" : Math.floor(document.querySelector(`#resources_metal`).getAttribute('data-raw')), "crystal" : Math.floor(document.querySelector(`#resources_crystal`).getAttribute('data-raw')), "deut" : Math.floor(document.querySelector(`#resources_deuterium`).getAttribute('data-raw')), } // get data & init default values this.json = JSON.parse(localStorage.getItem('ogl-data')) || {}; this.json.techs = this.json.techs || {}; this.json.ptFret = this.json.ptFret || 5000; this.json.gtFret = this.json.gtFret || 25000; this.json.pfFret = this.json.pfFret || 10000; this.json.autoHarvest = this.json.autoHarvest || ['0:0:0', 3]; this.json.myMines = this.json.myMines || {}; this.json.myActivities = this.json.myActivities || {}; this.json.sideStalk = this.json.sideStalk || false; this.json.markers = this.json.markers || {}; this.json.locked = this.json.locked || {}; this.json.targetTabs = this.json.targetTabs || {g:1, s:0}; this.json.spyProbes = this.json.spyProbes || 5; this.json.jumpGateTimers = this.json.jumpGateTimers || {}; this.json.myEmpire = this.json.myEmpire || {}; this.json.lastScoreCheck = this.json.lastScoreCheck || 0; this.json.topScore = this.json.topScore || 1; // user options this.json.options = this.json.options || {}; this.json.options.fret = this.json.options.fret || 202; this.json.options.harvestMission = this.json.options.harvestMission || 3; this.json.options.spyFilter = this.json.options.spyFilter || '$'; this.json.options.rvalLimit = this.json.options.rvalLimit || 400000 * this.ecoSpeed; this.json.options.headerDisabled = this.json.options.headerDisabled || {}; this.json.options.spyTableEnable = this.json.options.spyTableEnable === false ? false : true; this.json.options.compactViewEnable = this.json.options.compactViewEnable === false ? false : true; this.json.options.autoDeleteEnable = this.json.options.autoDeleteEnable === true ? true : false; this.json.options.kept = this.json.options.kept || [0,0,0]; this.json.options.hiddenTargets = this.json.options.hiddenTargets || {}; this.json.options.empireMode = this.json.options.empireMode || 0; this.json.options.expeType = this.json.options.expeType || 202; this.json.options.expeSubType = this.json.options.expeSubType || 0; this.json.options.expeRatio = this.json.options.expeRatio || 0; this.json.options.nextTarget = this.json.options.nextTarget || '0:0:0'; this.json.options.draggable = this.json.options.draggable || {}; this.json.options.panelMode = this.json.options.panelMode || 0; this.gameLang = document.querySelector('meta[name="ogame-language"]').getAttribute('content'); this.separatorLangType = ['en', 'us'].includes(this.gameLang) ? 1 : 0; goodbyeTipped(); this.start(); } start() { if(this.page == 'fleetdispatch') { fleetDispatcher.apiTechData.forEach(tech => this.json.techs[tech[0]] = tech[1]); this.json.ptFret = fleetDispatcher.fleetHelper.shipsData[202].baseCargoCapacity; this.json.gtFret = fleetDispatcher.fleetHelper.shipsData[203].baseCargoCapacity; this.json.pfFret = fleetDispatcher.fleetHelper.shipsData[219].baseCargoCapacity; this.json.playerClass = fleetDispatcher.apiCommonData[1][1]; this.saveData(); this.current.resources = { metal: fleetDispatcher.metalOnPlanet, crystal: fleetDispatcher.crystalOnPlanet, deut: fleetDispatcher.deuteriumOnPlanet, } } for(let coords in this.json.markers) { if(typeof this.json.markers[coords] == 'string') { this.json.markers[coords] = {color:this.json.markers[coords]}; } } this.saveData(); this.sideOptions(); this.neededCargo(); this.keepResources(); this.checkTop(); this.empire(); this.harvest(); this.autoHarvest(); this.expedition(); this.quickPlanetList(); this.timers(); this.marker(); this.targetList(); this.sideStalk(); this.checkDebris(); this.spyTable(true); this.lock(); this.sideLock(); this.calcResOnPlanet(); // util. this.missingEnergy(); this.minesLevel(); this.highlightTarget(); this.toggleImage(); this.checkInputs(); this.keyboardActions(); this.betterTooltip(); this.utilities(); this.loopUtilities(); this.checkResources(); this.checkStorage(); this.jumpGateTimer(); this.checkShipsOnPlanet(); this.draggableItems(); return unsafeWindow.ogl = true; } sideOptions() { let harvestOptions = this.createDOM('div', {'class':'ogl-harvestOptions'}); let container = document.querySelector('#myPlanets') || document.querySelector('#myWorlds'); container.prepend(harvestOptions); let syncOption = harvestOptions.appendChild(this.createDOM('div', {'class':'ogl-option ogl-syncOption tooltipLeft', 'title':this.getTranslatedText(0)}, '<i class="material-icons">settings</i>')); syncOption.addEventListener('click', () => this.importExport()); harvestOptions.appendChild(this.createDOM('a', {'class':'ogl-option ogl-targetIcon tooltipLeft', 'title':this.getTranslatedText(1)}, '<i class="material-icons">adjust</i>')); // switch between PT/GT let cargo = harvestOptions.appendChild(this.createDOM('div', {'class':'ogl-option ogl-defaultCargo'}, this.getTranslatedText(15))); let cargoChoice = this.createDOM('div', {'class':'ogl-shipPicker'}, ''); let scChoice = cargoChoice.appendChild(this.createDOM('div', {'class':'ogl-shipIcon ogl-202'})); let lcChoice = cargoChoice.appendChild(this.createDOM('div', {'class':'ogl-shipIcon ogl-203'})); let pfChoice = cargoChoice.appendChild(this.createDOM('div', {'class':'ogl-shipIcon ogl-219'})); if(this.json.options.fret == 202) { cargo.innerHTML = this.getTranslatedText(15); scChoice.classList.add('ogl-active'); } else if(this.json.options.fret == 203) { cargo.innerHTML = this.getTranslatedText(16); lcChoice.classList.add('ogl-active'); } else if(this.json.options.fret == 219) { cargo.innerHTML = this.getTranslatedText(30); pfChoice.classList.add('ogl-active'); } let updateDefaultShip = shipID => { this.json.options.fret = shipID; this.saveData(); document.location.reload(); } scChoice.addEventListener('click', () => { updateDefaultShip(202) }); lcChoice.addEventListener('click', () => { updateDefaultShip(203) }); pfChoice.addEventListener('click', () => { updateDefaultShip(219) }); cargo.addEventListener('mouseover', () => this.tooltip(cargo, cargoChoice, false, false, 50)); // switch between statio/transpo let mission = harvestOptions.appendChild(this.createDOM('div', {'class':'ogl-option ogl-harvestMission tooltipLeft', 'title':this.getTranslatedText(3)}, '<i class="material-icons">keyboard_tab</i>')); if(this.json.options.harvestMission == 3) { mission.classList.add('ogl-transpoIcon'); mission.innerHTML = '<i class="material-icons">swap_horiz</i>'; } mission.addEventListener('click', () => { let oldMission = this.json.options.harvestMission; this.json.options.harvestMission = this.json.options.harvestMission == 3 ? 4 : 3; this.saveData(); window.location.href = window.location.href.replace(`&mission=${oldMission}`, `&mission=${this.json.options.harvestMission}`); }); // harvest from planets let autoHarvestPlanet = harvestOptions.appendChild(this.createDOM('div', {'class':'ogl-option ogl-autoHarvest ogl-autoHarvestPlanet tooltipLeft', 'title':this.getTranslatedText(4)}, '<i class="material-icons">all_inclusive</i>')); if(this.mode == 3 || this.mode == 5) autoHarvestPlanet.classList.add('ogl-active'); autoHarvestPlanet.addEventListener('click', () => { this.openPlanetList(planet => { this.json.autoHarvest = [planet.galaxy + ':' + planet.system + ':' + planet.position, planet.type]; this.saveData(); let link = `?page=ingame&component=fleetdispatch&galaxy=${planet.galaxy}&system=${planet.system }&position=${planet.position}&type=${planet.type}&mission=${this.json.options.harvestMission}&oglMode=3`; if (window.location.href.indexOf('https') > -1) { window.location.href = 'https://' + window.location.host + window.location.pathname + link; } else { window.location.href = 'http://' + window.location.host + window.location.pathname + link; } }, true); }); let updatePanel = (sender, mode) => { this.json.options.panelMode = mode; this.saveData(); document.querySelector('.ogl-panel.ogl-active').classList.remove('ogl-active'); sender.classList.add('ogl-active'); document.querySelector('#rechts').setAttribute('data-panel', this.json.options.panelMode); } let panelOptions = this.createDOM('div', {'class':'ogl-panelOptions'}); container.insertBefore(panelOptions, document.querySelector('#planetList')); let defaultView = panelOptions.appendChild(this.createDOM('div', {'class':'ogl-panel tooltipLeft', 'title':this.getTranslatedText(64)}, '<i class="material-icons">public</i>')); defaultView.addEventListener('click', () => updatePanel(defaultView, 0)); if(this.json.options.panelMode == 0) defaultView.classList.add('ogl-active'); let resView = panelOptions.appendChild(this.createDOM('div', {'class':'ogl-panel tooltipLeft', 'title':this.getTranslatedText(65)}, '<i class="material-icons">account_balance</i>')); resView.addEventListener('click', () => updatePanel(resView, 1)); if(this.json.options.panelMode == 1) resView.classList.add('ogl-active'); let prodView = panelOptions.appendChild(this.createDOM('div', {'class':'ogl-panel tooltipLeft', 'title':this.getTranslatedText(66)}, '<i class="material-icons">equalizer</i>')); prodView.addEventListener('click', () => updatePanel(prodView, 2)); if(this.json.options.panelMode == 2) prodView.classList.add('ogl-active'); /*let targetView = panelOptions.appendChild(this.createDOM('div', {'class':'ogl-panel tooltipLeft', 'title':this.getTranslatedText(67)}, '<i class="material-icons">gps_fixed</i>')); targetView.addEventListener('click', () => updatePanel(targetView, 3)); if(this.json.options.panelMode == 3) targetView.classList.add('ogl-active');*/ document.querySelector('#rechts').setAttribute('data-panel', this.json.options.panelMode); } neededCargo() { if(this.page == 'fleetdispatch') { let min = { metal : Math.max(0, fleetDispatcher.metalOnPlanet - this.json.options.kept[0]), crystal : Math.max(0, fleetDispatcher.crystalOnPlanet - this.json.options.kept[1]), deut : Math.max(0, fleetDispatcher.deuteriumOnPlanet - this.json.options.kept[2]) } let total = min.metal + min.crystal + min.deut; document.querySelectorAll('.technology[data-technology]').forEach(ship => { let shipID = ship.getAttribute('data-technology'); if(shipID == '202' || shipID == '203' || shipID == '219') { let amount = this.calcNeededShips({'fret':shipID, 'resources':total}); let span = this.createDOM('span', {class:'ogl-needed'}, amount.toLocaleString('de-DE')); ship.querySelector('span.icon').appendChild(span); // add needed buttons span.addEventListener('click', event => { event.preventDefault(); event.stopPropagation(); this.selectShips(shipID, amount); }); } if(ship.getAttribute('data-status') == 'off') return; let delta = ship.querySelector('span.icon').appendChild(this.createDOM('span', {class:'ogl-deltaFleet'}, '<i class="material-icons">fiber_smart_record</i>')); delta.addEventListener('click', event => { let selected = ship.querySelector('input').value.replace(/\./g, '') || 0; let amount = parseInt(ship.querySelector('.amount').getAttribute('data-value')); amount = amount - selected; event.preventDefault(); event.stopPropagation(); this.selectShips(shipID, amount); }); }); let empty = document.querySelector('#fleetdispatchcomponent #warning h3'); if(empty) { empty.textContent = ''; let grid = empty.appendChild(this.createDOM('div', {'class':'ogl-emptyGrid'})); [202,203,219].forEach(shipID => { let amount = this.calcNeededShips({'fret':shipID, 'resources':total}); let div = grid.appendChild(this.createDOM('div', {'class':'ogl-emptyShip'})); div.appendChild(this.createDOM('div', {'class':'ogl-shipIcon ogl-'+shipID})); div.appendChild(this.createDOM('span', {}, amount.toLocaleString('de-DE'))); }); } } } fillFret(params) { params = params || {}; if(params.resources) { let min = { metal: Math.min(params.resources.metal, this.current.resources.metal), crystal: Math.min(params.resources.crystal, this.current.resources.crystal), deut: Math.min(params.resources.deut, this.current.resources.deut - fleetDispatcher.getConsumption()), } let capacity = fleetDispatcher.getCargoCapacity(); fleetDispatcher.cargoDeuterium = Math.min(min.deut, capacity); fleetDispatcher.cargoCrystal = Math.min(min.crystal, capacity - fleetDispatcher.cargoDeuterium); fleetDispatcher.cargoMetal = Math.min(min.metal, capacity - fleetDispatcher.cargoDeuterium - fleetDispatcher.cargoCrystal); } } harvest() { if(this.page == 'fleetdispatch') { if(this.mode == 1) { let total = fleetDispatcher.metalOnPlanet + fleetDispatcher.crystalOnPlanet + fleetDispatcher.deuteriumOnPlanet; this.selectShips(this.json.options.fret, this.calcNeededShips({'resources':total})); document.querySelector('#allresources').click(); } } // buttons action on click let btnAction = (event, coords, type) => { event.preventDefault(); event.stopPropagation(); let link = `?page=ingame&component=fleetdispatch&galaxy=${coords[0]}&system=${coords[1] }&position=${coords[2]}&type=${type}&mission=${this.json.options.harvestMission }&oglMode=1`; if (window.location.href.indexOf('https') > -1) { window.location.href = 'https://' + window.location.host + window.location.pathname + link; } else { window.location.href = 'http://' + window.location.host + window.location.pathname + link; } } let lastCoords = 0; let isGroup = false; let countGroup = 0; // planet & moon harvest icons this.planetList.forEach(planet => { let coords = planet.querySelector('.planet-koords').textContent.slice(1, -1).split(':'); if(lastCoords == coords[0] + ':' + coords[1]) { planet.setAttribute('data-multi', countGroup); isGroup = true; } else { if(isGroup) countGroup++; isGroup = false; } lastCoords = coords[0] + ':' + coords[1]; if(this.current.coords != coords.join(':') || this.current.isMoon) { let btn = planet.querySelector('.planetlink').appendChild(this.createDOM('div', {'class':'ogl-harvest tooltip', 'title':this.getTranslatedText(62)})); btn.addEventListener('click', event => btnAction(event, coords, 1)); } let moon = planet.querySelector('.moonlink'); if(moon) { moon.classList.remove('tooltipLeft'); moon.classList.add('tooltipRight'); if(this.current.coords == coords.join(':') && this.current.isMoon) return; let btn = planet.querySelector('.moonlink').appendChild(this.createDOM('div', {'class':'ogl-harvest tooltip', 'title':this.getTranslatedText(62)})); btn.addEventListener('click', event => btnAction(event, coords, 3)); } }); } openPlanetList(callcback, full) { let container = this.createDOM('div', {'class':'ogl-dialogContainer ogl-routine'}, '<h1>'+this.getTranslatedText(10)+'</h1>'); if(full) { let text = this.current.isMoon ? this.getTranslatedText(34) : this.getTranslatedText(31); let sourceType = this.current.isMoon ? 1 : 3; let linkedMoon = container.appendChild(this.createDOM('div', {'class':'ogl-linkedMoon'}, text)); linkedMoon.innerHTML += '<figure class="planetIcon moon"></figure><figure class="planetIcon moon"></figure><figure class="planetIcon moon"></figure>'; linkedMoon.addEventListener('click', () => { let coords = this.current.coords.split(':'); let id; if(this.current.isMoon) { id = new URL(this.current.planet.querySelector('.moonlink').href).searchParams.get('cp'); } else { id = this.current.planet.getAttribute('id').replace('planet-', ''); } let link = `?page=ingame&component=fleetdispatch&galaxy=${coords[0]}&system=${coords[1] }&position=${coords[2]}&type=${sourceType}&mission=${this.json.options.harvestMission}&cp=${id}&oglMode=5`; if (window.location.href.indexOf('https') > -1) { window.location.href = 'https://' + window.location.host + window.location.pathname + link; } else { window.location.href = 'http://' + window.location.host + window.location.pathname + link; } }); } let links = container.appendChild(this.createDOM('div', {'class':'ogl-quickLinks'})); let buildButton = (planet, id, galaxy, system, position, type) => { let data = {'id':id, 'galaxy':galaxy, 'system':system, 'position':position, 'type':type}; let div = links.appendChild(this.createDOM('div')); if(type == 1) div.classList.add('ogl-quickPlanet'); else div.classList.add('ogl-quickMoon'); if((planet == this.current.planet && !this.current.isMoon && type == 1) || (planet == this.current.planet && this.current.isMoon && type == 3)) { div.classList.add('ogl-quickEmpty'); } else { div.addEventListener('click', () => callcback(data)); } return div; } this.planetList.forEach(planet => { let coords = planet.querySelector('.planet-koords').textContent.slice(1, -1).split(':'); // planet let btn = buildButton(planet, new URL(planet.querySelector('.planetlink').href).searchParams.get('cp'), coords[0], coords[1], coords[2], 1); btn.innerHTML = `[${coords.join(':')}] ${planet.querySelector('.planet-name').textContent}`; // moon if(planet.querySelector('.moonlink')) { let btn = buildButton(planet, new URL(planet.querySelector('.moonlink').href).searchParams.get('cp'), coords[0], coords[1], coords[2], 3); btn.innerHTML = '<figure class="planetIcon moon"></figure>'; } else links.appendChild(this.createDOM('div', {'class':'ogl-quickEmpty'})); }); this.popup(false, container); } autoHarvest() { if(this.mode != 3 && this.mode != 5) return; this.planetList.forEach(planet => { let targetCoords = planet.querySelector('.planet-koords').textContent.slice(1, -1).split(':'); if(fleetDispatcher.targetPlanet.galaxy == targetCoords[0] && fleetDispatcher.targetPlanet.system == targetCoords[1] && fleetDispatcher.targetPlanet.position == targetCoords[2]) { if(fleetDispatcher.targetPlanet.type == 1) { planet.querySelector('.planetlink').classList.add('ogl-target'); } else if(planet.querySelector('.moonlink')) { planet.querySelector('.moonlink').classList.add('ogl-target'); } } }); if(this.page == 'fleetdispatch') { let nextElement = this.current.planet.nextElementSibling || document.querySelectorAll('.smallplanet')[0]; if(this.mode == 5) { this.json.autoHarvest = false; } // ignore source if(nextElement.querySelector('.planet-koords').textContent.slice(1, -1) == this.json.autoHarvest[0] && ((!this.current.isMoon && this.json.autoHarvest[1] == 1) || (this.current.isMoon && this.json.autoHarvest[1] == 3))) { nextElement = nextElement.nextElementSibling || document.querySelectorAll('.smallplanet')[0]; } // search for next element for moon to linked planet routine if(this.current.isMoon && this.mode == 5 && !nextElement.querySelector('.moonlink')) { do nextElement = nextElement.nextElementSibling || document.querySelectorAll('.smallplanet')[0]; while(!nextElement.querySelector('.moonlink')); } let destination; let type = 1; let mission = this.json.options.harvestMission; let id = nextElement.getAttribute('id').replace('planet-', ''); if((this.current.isMoon && this.mode == 3) || (this.current.isMoon && this.mode == 5)) { if(nextElement.querySelector('.moonlink')) { id = new URL(nextElement.querySelector('.moonlink').href).searchParams.get('cp'); } } if(this.mode == 3) { destination = this.json.autoHarvest[0].split(':'); type = this.json.autoHarvest[1]; } else if(this.mode == 5) { destination = nextElement.querySelector('.planet-koords').textContent.slice(1, -1).split(':'); if(!this.current.isMoon) type = 3; } let link = `?page=ingame&component=fleetdispatch&galaxy=${destination[0]}&system=${destination[1] }&position=${destination[2]}&type=${type}&mission=${mission}&cp=${id}&oglMode=${this.mode}`; if (window.location.href.indexOf('https') > -1) { link = 'https://' + window.location.host + window.location.pathname + link; } else { link = 'http://' + window.location.host + window.location.pathname + link; } let needed = document.querySelector(`.technology[data-technology="${this.json.options.fret}"] .ogl-needed`); if(needed) needed.click(); this.keyboardActionSkip = link; document.querySelector('#allresources').click(); let pCoords = this.current.isMoon ? this.current.coords+'M' : this.current.coords; let sent = false; let sendFleet = () => { if(sent) return; localStorage.setItem('ogl-redirect', link); sent = true; this.json.myEmpire[pCoords].metal -= fleetDispatcher.cargoMetal; this.json.myEmpire[pCoords].crystal -= fleetDispatcher.cargoCrystal; this.json.myEmpire[pCoords].deut -= fleetDispatcher.cargoDeuterium; this.saveData(); } document.querySelector('#sendFleet').addEventListener('click', () => sendFleet()); document.addEventListener('keydown', event => { if((!document.querySelector('.ui-dialog') || document.querySelector('.ui-dialog').style.display == 'none') && !document.querySelector('.chat_box_textarea:focus')) { if(fleetDispatcher.currentPage == 'fleet3') { let keycode = event.keyCode ? event.keyCode : event.which; if(keycode == 13) sendFleet(); } } }); } } expedition() { if(this.page == 'fleetdispatch') { if(!document.querySelector('#allornone .allornonewrap')) return; let fleetExpe = document.querySelector('#allornone .secondcol').appendChild(this.createDOM('div', {'class':'ogl-prefab tooltip', 'title':'Expedition'})); let mainFleet = document.querySelector('#allornone .secondcol').appendChild(this.createDOM('div', {'class':'tooltip ogl-shipIcon ogl-'+this.json.options.expeType, 'title':this.getTranslatedText(51)})); let subFleet = document.querySelector('#allornone .secondcol').appendChild(this.createDOM('div', {'class':'tooltip ogl-active ogl-shipIcon ogl-'+this.json.options.expeSubType, 'title':this.getTranslatedText(52)})); if(this.json.options.expeType == 202 || this.json.options.expeType == 203 || this.json.options.expeType == 219) { subFleet.classList.remove('ogl-active'); } let ratioDiv = document.querySelector('#allornone .secondcol').appendChild(this.createDOM('div', {'class':'ogl-expeRatio tooltip', 'title':'Ratio'})); let more = ratioDiv.appendChild(this.createDOM('div', {}, '+')); let less = ratioDiv.appendChild(this.createDOM('div', {}, '-')); let count = ratioDiv.appendChild(this.createDOM('div', {}, this.json.options.expeRatio)); mainFleet.addEventListener('click', () => { let container = this.createDOM('div', {'class':'ogl-dialogContainer ogl-shipPicker'}); container.appendChild(this.createDOM('h1', {}, this.getTranslatedText(51))); [202,203,204,205,206,207,211,213,214,215,218,219].forEach(shipID => { let btn = container.appendChild(this.createDOM('div', {'class':'ogl-shipIcon ogl-'+shipID})); btn.addEventListener('click', () => { this.json.options.expeType = shipID; mainFleet.className = 'ogl-shipIcon ogl-' + this.json.options.expeType; if(this.json.options.expeType == 202 || this.json.options.expeType == 203 || this.json.options.expeType == 219) { this.json.options.expeSubType = 0; subFleet.className = 'ogl-shipIcon ogl-' + this.json.options.expeSubType; } else { subFleet.classList.add('ogl-active'); } this.saveData(); document.querySelector('.ogl-dialog .close-tooltip').click(); }); }); this.popup(false, container); }); subFleet.addEventListener('click', () => { if(this.json.options.expeType == 202 || this.json.options.expeType == 203 || this.json.options.expeType == 219) return; let container = this.createDOM('div', {'class':'ogl-dialogContainer ogl-shipPicker'}); container.appendChild(this.createDOM('h1', {}, this.getTranslatedText(52))); [202,203,219,0].forEach(shipID => { let btn = container.appendChild(this.createDOM('div', {'class':'ogl-shipIcon ogl-'+shipID})); if(shipID == 0) btn.classList.add('ogl-active'); btn.addEventListener('click', () => { this.json.options.expeSubType = shipID; subFleet.className = 'ogl-shipIcon ogl-' + this.json.options.expeSubType; this.saveData(); document.querySelector('.ogl-dialog .close-tooltip').click(); if(shipID == 0) { subFleet.classList.add('ogl-active'); } }); }); this.popup(false, container); }); more.addEventListener('click', () => { this.json.options.expeRatio = Math.min(this.json.options.expeRatio * 10 + 1, 20) / 10; count.textContent = this.json.options.expeRatio; this.saveData(); }); less.addEventListener('click', () => { this.json.options.expeRatio = Math.max(this.json.options.expeRatio * 10 - 1, 0) / 10; count.textContent = this.json.options.expeRatio; this.saveData(); }); fleetExpe.addEventListener('click', () => { document.querySelector('#resetall').click(); let mainAmount, subAmount, fillerId = 0; let coords = this.current.coords.split(':'); if(this.json.options.expeType == 202 || this.json.options.expeType == 203 || this.json.options.expeType == 219) { let maxTotal = 0; let minShip = 0; let currentStep = 0; let steps = { 10000 : { 202:273, 203:91, 219:137, max:40000 }, 100000 : { 202:423, 203:141, 219:212, max:500000 }, 1000000 : { 202:423, 203:191, 219:212, max:1200000 }, 5000000 : { 202:423, 203:191, 219:212, max:1800000 }, 25000000 : { 202:573, 203:191, 219:287, max:2400000 }, 50000000 : { 202:723, 203:241, 219:362, max:3000000 }, 75000000 : { 202:873, 203:291, 219:437, max:3600000 }, 100000000 : { 202:1023, 203:341, 219:512, max:4200000 }, 0 : { 202:1223, 203:417, 219:612, max:5000000 }, } if(this.json.topScore < 10000) currentStep = 10000; else if(this.json.topScore < 100000) currentStep = 100000; else if(this.json.topScore < 1000000) currentStep = 1000000; else if(this.json.topScore < 5000000) currentStep = 5000000; else if(this.json.topScore < 25000000) currentStep = 25000000; else if(this.json.topScore < 50000000) currentStep = 50000000; else if(this.json.topScore < 75000000) currentStep = 75000000; else if(this.json.topScore < 100000000) currentStep = 100000000; maxTotal = steps[currentStep]['max']; minShip = steps[currentStep][this.json.options.expeType]; maxTotal = this.json.playerClass == 3 ? maxTotal * 3 * this.ecoSpeed : maxTotal * 2; mainAmount = Math.max(minShip, this.calcNeededShips({'fret':this.json.options.expeType, 'resources':maxTotal})); } else { mainAmount = parseInt(document.querySelector(`.technology[data-technology="${this.json.options.expeType}"] .amount`).getAttribute('data-value')); mainAmount = (Math.floor(mainAmount / (fleetDispatcher.maxExpeditionCount - fleetDispatcher.expeditionCount)) || 0); subAmount = Math.floor(mainAmount * this.json.options.expeRatio); } let prio = [218, 213, 211, 215, 207]; prio.forEach(shipID => { let count = document.querySelector(`.technology[data-technology="${shipID}"] .amount`).getAttribute('data-value'); if(fillerId == 0 && count > 0) fillerId = shipID; }); shipsOnPlanet.forEach(ship => { if(ship.id == this.json.options.expeType) this.selectShips(ship.id, mainAmount); else if(ship.id == this.json.options.expeSubType) this.selectShips(ship.id, subAmount); else if(ship.id == fillerId && this.json.options.expeType != fillerId) this.selectShips(ship.id, 1); else if(ship.id == 210) this.selectShips(ship.id, 1); else if(ship.id == 219 && this.json.options.expeType != 219 && this.json.options.expeSubType != 219) this.selectShips(ship.id, 1); }); fleetDispatcher.targetPlanet.galaxy = coords[0]; fleetDispatcher.targetPlanet.system = coords[1]; fleetDispatcher.targetPlanet.position = 16; fleetDispatcher.targetPlanet.type = 1; fleetDispatcher.targetPlanet.name = '-'; fleetDispatcher.mission = 15; fleetDispatcher.expeditionTime = 1; fleetDispatcher.refresh(); }); } } quickPlanetList() { if(this.page == 'fleetdispatch' && fleetDispatcher) { if(!document.querySelector("#shortcuts .dropdown")) return; let btn = document.querySelector('#shortcuts span').appendChild(this.createDOM('btn', {'class':'ogl-quickBtn'}, '-')); let container = this.createDOM('div', {'class':'ogl-dialogContainer ogl-quickLinks'}); container.addEventListener('click', event => { if(!event.target.href) { event.stopPropagation(); event.preventDefault(); } }); btn.addEventListener('click', () => { this.openPlanetList((planet) => { fleetDispatcher.targetPlanet = planet; fleetDispatcher.refresh(); document.querySelector('.ogl-dialogOverlay').classList.remove('ogl-active'); document.querySelector('#continueToFleet3').focus(); }); }); } } timers() { let now = Date.now(); if(!this.json.myActivities[this.current.coords]) this.json.myActivities[this.current.coords] = [0, 0]; let planetActivity = this.json.myActivities[this.current.coords][0]; let moonActivity = this.json.myActivities[this.current.coords][1]; if(this.current.isMoon) moonActivity = now; else planetActivity = now; this.json.myActivities[this.current.coords] = [planetActivity, moonActivity]; this.saveData(); this.planetList.forEach(planet => { let coords = planet.querySelector('.planet-koords').textContent.slice(1, -1); let timers = this.json.myActivities[coords] || [0,0]; let pTimer = planet.querySelector('.planetlink').appendChild(this.createDOM('div', {'class':'ogl-timer ogl-medium ogl-short', 'data-timer':Math.min(Math.round((now - timers[0]) / 60000), 60)})); this.updateTimer(pTimer); setInterval(() => this.updateTimer(pTimer, true), 60000); if(planet.querySelector('.moonlink')) { let mTimer = planet.querySelector('.moonlink').appendChild(this.createDOM('div', {'class':'ogl-timer ogl-medium ogl-short', 'data-timer':Math.min(Math.round((now - timers[1]) / 60000), 60)})); this.updateTimer(mTimer); setInterval(() => this.updateTimer(mTimer, true), 60000); } }); } updateTimer(element, increment) { let time = parseInt(element.getAttribute('data-timer')); if(time >= 15) element.classList.remove('ogl-short'); if(time >= 30) element.classList.remove('ogl-medium'); if(time >= 60) return; if(increment) { time++; element.setAttribute('data-timer', time); element.title = time; } } minesLevel() { if(this.page == 'supplies' && !this.current.isMoon) { let targetMetal = document.querySelector('.technology.metalMine .targetlevel'); let targetCrystal = document.querySelector('.technology.crystalMine .targetlevel'); let targetDeut = document.querySelector('.technology.deuteriumSynthesizer .targetlevel'); let metal = targetMetal ? '('+targetMetal.getAttribute('data-value')+')' : document.querySelector('.technology.metalMine .level').getAttribute('data-value'); let crystal = targetCrystal ? '('+targetCrystal.getAttribute('data-value')+')' : document.querySelector('.technology.crystalMine .level').getAttribute('data-value'); let deut = targetDeut ? '('+targetDeut.getAttribute('data-value')+')' : document.querySelector('.technology.deuteriumSynthesizer .level').getAttribute('data-value'); this.json.myMines[this.current.coords] = {'metal':metal, 'crystal':crystal, 'deut':deut}; this.saveData(); } } marker() { if(this.page == 'galaxy') { this.FPSLoop('marker'); let galaxytable = document.querySelector('#galaxytable'); if(!galaxytable || galaxytable.classList.contains('ogl-markerReady')) return; galaxytable.classList.add('ogl-markerReady'); // move planets /*document.querySelectorAll('td.microplanet').forEach(planet => { planet.parentNode.insertBefore(planet, planet.parentNode.querySelector('td.moon')); });*/ let coords = document.querySelector('#galaxy_input').value; coords += ':' + document.querySelector('#system_input').value; document.querySelectorAll('#galaxytable tbody .allytag').forEach((element, index) => { let id = coords + ':' + (parseInt(index) + 1); let colors = this.createDOM('div', {'class':'ogl-colors', 'data-coords':id}); element.appendChild(colors); this.addMarkerUI(id, colors); }); document.querySelectorAll('#galaxytable tbody tr').forEach((element, index) => { let id = coords + ':' + (parseInt(index) + 1); if(this.json.markers[id]) { element.classList.add('ogl-marked'); element.setAttribute('data-marked', this.json.markers[id].color); } }); } else if(this.page == 'messages') { document.querySelectorAll('.ogl-colors').forEach(element => { this.addMarkerUI(element.getAttribute('data-coords'), element); }); document.querySelectorAll('.ogl-spyTable tr').forEach((element, index) => { if(index > 0) { let coords = element.querySelector('.ogl-colors').getAttribute('data-coords'); if(this.json.markers[coords]) { element.classList.add('ogl-marked'); element.setAttribute('data-marked', this.json.markers[coords].color); } } }); } } targetList() { let targetIcon = document.querySelector('.ogl-harvestOptions .ogl-targetIcon'); if(!targetIcon.classList.contains('ogl-targetsReady')) { targetIcon.classList.add('ogl-targetsReady'); targetIcon.addEventListener('click', () => this.popup(header, content)); } // popup header let header = this.createDOM('div'); header.innerHTML = '<h1>'+this.getTranslatedText(13)+'</h1>'; ['red', 'yellow', 'green', 'blue', 'violet', 'gray'].forEach(color => { let toggle = this.createDOM('div', {'class':'tooltip ogl-toggle', 'title':this.getTranslatedText(5)}); toggle.setAttribute('data-toggle', color); header.appendChild(toggle); if(!this.json.options.hiddenTargets[color]) toggle.classList.add('ogl-active'); toggle.addEventListener('click', () => { this.json.options.nextTarget = '0:0:0'; this.json.options.hiddenTargets[color] = this.json.options.hiddenTargets[color] ? false : true; this.saveData(); if(this.json.options.hiddenTargets[color]) toggle.classList.remove('ogl-active'); else toggle.classList.add('ogl-active'); content.querySelectorAll(`.ogl-targetItem[data-marked="${color}"]`).forEach(planet => { if(this.json.options.hiddenTargets[color]) planet.classList.add('ogl-colorHidden'); else planet.classList.remove('ogl-colorHidden'); }); checkEmpty(); }); }); header.appendChild(this.createDOM('hr')); // popup content let content = this.createDOM('div', {'class':'ogl-dialogContainer ogl-stalkContainer'}); let galaxyTabList = header.appendChild(this.createDOM('div', {'class':'ogl-tabList ogl-galaxyTabList'})); let systemTabList = header.appendChild(this.createDOM('div', {'class':'ogl-tabList ogl-systemTabList'})); let planetList = content.appendChild(this.createDOM('div', {'class':'ogl-stalkPlanets'})) let checkEmpty = () => { for(let g=1; g<=10; g++) { let children = content.querySelector(`.ogl-targetItem[data-galaxy="${g}"]:not(.ogl-colorHidden)`); if(children) header.querySelector(`.ogl-tab[data-galaxy="${g}"]`).classList.remove('ogl-isEmpty'); else header.querySelector(`.ogl-tab[data-galaxy="${g}"]`).classList.add('ogl-isEmpty'); } for(let s=0; s<step * 10; s+=step) { let children = content.querySelector(`.ogl-targetItem[data-galaxy="${this.json.targetTabs.g}"][data-system="${s}"]:not(.ogl-colorHidden)`); if(children) header.querySelector(`.ogl-tab[data-system="${s}"]`).classList.remove('ogl-isEmpty'); else header.querySelector(`.ogl-tab[data-system="${s}"]`).classList.add('ogl-isEmpty'); } } // cleanup saved coords for(let coords in this.json.markers) { if(this.json.markers[coords] == '') { delete this.json.markers[coords]; } }; // sort coords let keys = Object.keys(this.json.markers).sort((a, b) => { let coordsA = a.split(':').map(x => x.padStart(3, '0')).join(''); let coordsB = b.split(':').map(x => x.padStart(3, '0')).join(''); return coordsA - coordsB; }); let step = 50; // system buttons for(let i=0; i<step * 10; i+=step) { let sTab = systemTabList.appendChild(this.createDOM('div', {'class':'ogl-tab', 'data-system':i}, i)); if(this.json.targetTabs.s == i) sTab.classList.add('ogl-active'); sTab.addEventListener('click', event => { header.querySelectorAll('.ogl-tab[data-system].ogl-active').forEach(e => e.classList.remove('ogl-active')); event.target.classList.add('ogl-active'); content.querySelectorAll(`.ogl-targetItem[data-system]`).forEach(planet => { planet.classList.add('ogl-systemHidden'); if(planet.getAttribute('data-system') == i) { planet.classList.remove('ogl-systemHidden'); } this.json.targetTabs.s = i; }); this.saveData(); }); } // galaxy buttons for(let i=1; i<=10; i++) { let gTab = galaxyTabList.appendChild(this.createDOM('div', {'class':'ogl-tab', 'data-galaxy':i}, 'G'+i)); if(this.json.targetTabs.g == i) gTab.classList.add('ogl-active'); if(this.json.targetTabs.g == 0) gTab.click(); gTab.addEventListener('click', event => { header.querySelectorAll('.ogl-tab[data-galaxy]').forEach(e => e.classList.remove('ogl-active')); event.target.classList.add('ogl-active'); content.querySelectorAll(`.ogl-targetItem[data-galaxy]`).forEach(planet => { planet.classList.add('ogl-galaxyHidden'); if(planet.getAttribute('data-galaxy') == i) { planet.classList.remove('ogl-galaxyHidden'); } }); this.json.targetTabs.g = i; this.saveData(); checkEmpty(); }); } if(!this.json.markers[this.json.options.nextTarget] || this.json.markers[this.json.options.nextTarget].color == 'gray') { this.json.options.nextTarget = '0:0:0'; this.saveData(); } let upcoming = false; // build ui keys.forEach(coords => { if(this.json.markers[coords]) { let splitted = coords.split(':'); let a = this.createDOM('a', {'class':'ogl-marked ogl-targetItem'}, `${coords}`); a.setAttribute('data-marked', this.json.markers[coords].color); a.setAttribute('data-coords', coords); a.setAttribute('data-galaxy', splitted[0]); a.setAttribute('data-system', Math.floor(splitted[1] / step) * step); let atk = a.appendChild(this.createDOM('div', {'class':'icon icon_missile tooltip', 'title':this.getTranslatedText(22)})); let lastAttack = this.json.markers[coords].attacked || 0; if(Date.now() < lastAttack + 6 * 60 * 60 * 1000) atk.classList.add('ogl-hidden'); atk.addEventListener('click', () => { event.preventDefault(); event.stopPropagation(); this.json.markers[coords].attacked = Date.now(); this.saveData(); let needed = this.calcNeededShips({'resources':this.json.options.rvalLimit}); let link = `?page=ingame&component=fleetdispatch&galaxy=${splitted[0]}&system=${splitted[1] }&position=${splitted[2]}&type=1&mission=1&am${this.json.options.fret}=${needed}`; if (window.location.href.indexOf('https') > -1) { link = 'https://' + window.location.host + window.location.pathname + link; } else { link = 'http://' + window.location.host + window.location.pathname + link; } if(event.ctrlKey) window.open(link, '_blank'); else { if(this.page == 'fleetdispatch') { this.selectShips(this.json.options.fret, needed); fleetDispatcher.targetPlanet = {'galaxy':splitted[0], 'system':splitted[1], 'position':splitted[2], 'type':1, 'name':'-'}; fleetDispatcher.mission = 1; fleetDispatcher.refresh(); document.querySelector('.ogl-dialogOverlay').classList.remove('ogl-active'); if(fleetDispatcher.currentPage == 'fleet1' && document.querySelector('#continueToFleet2')) document.querySelector('#continueToFleet2').focus(); else if(fleetDispatcher.currentPage == 'fleet2') document.querySelector('#continueToFleet3').focus(); else document.querySelector('#sendFleet').focus(); } else window.location.href = link; } }); let pin = a.appendChild(this.createDOM('div', {'class':'icon ogl-pin tooltip', 'title':this.getTranslatedText(62)})); pin.addEventListener('click', e => { e.stopPropagation(); this.json.options.nextTarget = coords; this.saveData(); document.location.reload(); }); a.addEventListener('click', () => { let link = `?page=ingame&component=galaxy&galaxy=${splitted[0]}&system=${splitted[1] }&position=${splitted[2]}`; if (window.location.href.indexOf('https') > -1) { link = 'https://' + window.location.host + window.location.pathname + link; } else { link = 'http://' + window.location.host + window.location.pathname + link; } if(event.ctrlKey) window.open(link, '_blank'); else { if(this.page == 'galaxy') { document.querySelector('#galaxy_input').value = splitted[0]; document.querySelector('#system_input').value = splitted[1]; submitForm(); } else window.location.href = link; } }); if(this.json.options.hiddenTargets[this.json.markers[coords].color]) { a.classList.add('ogl-colorHidden'); } if(this.json.targetTabs.g != splitted[0]) { a.classList.add('ogl-galaxyHidden'); } if(this.json.targetTabs.s != Math.floor(splitted[1] / step) * step) { a.classList.add('ogl-systemHidden'); } if(!this.upcomingTarget && upcoming && !a.classList.contains('ogl-colorHidden') && this.json.markers[coords].color != 'gray' && !atk.classList.contains('ogl-hidden')) { this.upcomingTarget = coords; } if(this.json.options.nextTarget == coords) { pin.classList.add('ogl-active'); if(!upcoming) upcoming = true; } planetList.appendChild(a); } }); checkEmpty(); } addMarkerUI(coords, parent) { let div = this.createDOM('div', {'class':'ogl-colorChoice'}); ['red', 'yellow', 'green', 'blue', 'violet', 'gray'].forEach(color => { let circle = div.appendChild(this.createDOM('div', {'data-marker':color})); div.appendChild(circle); if(this.json.markers[coords] && this.json.markers[coords].color == color) { circle.classList.add('ogl-active'); } circle.addEventListener('click', () => { div.querySelectorAll('div[data-marker]').forEach(e => e.classList.remove('ogl-active')); if(this.json.markers[coords] && this.json.markers[coords].color == color) { delete this.json.markers[coords]; parent.closest('tr').removeAttribute('data-marked'); } else { this.json.markers[coords] = this.json.markers[coords] || {}; this.json.markers[coords].color = color; circle.classList.add('ogl-active'); parent.closest('tr').setAttribute('data-marked', color); } document.querySelector('.ogl-tooltip').classList.remove('ogl-active'); document.querySelector('.ogl-targetIcon').classList.remove('ogl-targetsReady'); this.saveData(); this.targetList(); this.sideStalk(); }); }); let eventAction = this.isMobile ? 'touchstart' : 'mouseenter'; parent.addEventListener(eventAction, () => { this.tooltip(parent, div); }); } stalk(sender) { if(this.page == 'galaxy') { sender.classList.add('ogl-stalkReady'); let eventAction = this.isMobile ? 'touchstart' : 'mouseenter'; let galaxyPlayer = {}; galaxyPlayer.id = sender.getAttribute('rel'); let content = document.querySelector('#' + galaxyPlayer.id); galaxyPlayer.name = content.querySelector('h1 span').textContent; galaxyPlayer.rank = content.querySelector('.rank a') ? content.querySelector('.rank a').textContent : '0'; galaxyPlayer.links = {}; galaxyPlayer.planets = []; galaxyPlayer.ready = false; content.querySelectorAll('a').forEach(link => { if(link.href.indexOf('page=highscore') > -1) galaxyPlayer.links.highscore = link.href; else if(link.href.indexOf('page=chat') > -1) galaxyPlayer.links.chat = link.href; else if(link.classList.contains('js_openChat')) galaxyPlayer.links.chat = link.href; else if(link.href.indexOf('component=buddies') > -1) galaxyPlayer.links.buddy = link.href; else if(link.href.indexOf('page=ignorelist') > -1) galaxyPlayer.links.ignore = link.href; }); galaxyPlayer.content = this.createDOM('div'); galaxyPlayer.content.innerHTML = ` <h1>${galaxyPlayer.name} <a href="${galaxyPlayer.links.highscore || ''}" class="ogl-ranking">#${galaxyPlayer.rank || 'b'}</a></h1> <hr> <a href="${galaxyPlayer.links.chat || ''}" class="icon icon_chat sendMail js_openChat" data-playerid="${galaxyPlayer.id}"></a> <a href="${galaxyPlayer.links.buddy || ''}" class="icon icon_user overlay buddyrequest"></a> <a href="${galaxyPlayer.links.ignore || ''}" class="icon icon_against"></a> `; sender.appendChild(this.createDOM('a', {'href':galaxyPlayer.links.highscore || '', 'class':'ogl-ranking'}, ('#' + galaxyPlayer.rank) || 'b')); let date = galaxyPlayer.content.appendChild(this.createDOM('span', {'class':'ogl-right ogl-date'})); galaxyPlayer.content.appendChild(this.createDOM('hr')); let detailRank = galaxyPlayer.content.appendChild(this.createDOM('div', {'class':'ogl-detailRank'})); galaxyPlayer.content.appendChild(this.createDOM('hr')); let list = galaxyPlayer.content.appendChild(this.createDOM('div', {'class':'ogl-stalkPlanets'})); let count = galaxyPlayer.content.appendChild(this.createDOM('div', {'class':'ogl-fullGrid ogl-right'})); let sideStalk = galaxyPlayer.content.appendChild(this.createDOM('a', {'class':'icon ogl-pin'})); sideStalk.addEventListener('click', () => this.sideStalk(galaxyPlayer)); let stats = galaxyPlayer.content.appendChild(this.createDOM('a', {'class':'icon ogl-mmorpgstats'})); stats.addEventListener('click', () => { let lang = ['fr', 'de', 'en', 'es', 'pl', 'it', 'ru', 'ar', 'mx', 'tr', 'fi', 'tw', 'gr', 'br', 'nl', 'hr', 'sk', 'cz', 'ro', 'us', 'pt', 'dk', 'no', 'se', 'si', 'hu', 'jp', 'ba'].indexOf(this.gameLang); let link = `https://www.mmorpg-stat.eu/0_fiche_joueur.php?pays=${lang}&ftr=${galaxyPlayer.id.replace(/\D/g,'')}.dat&univers=_${this.universe}`; window.open(link, '_blank'); }); sender.addEventListener(eventAction, () => { this.tooltip(sender, galaxyPlayer.content, false, {}, 200); if(galaxyPlayer.ready) { list.innerHTML = ''; this.updateStalk(galaxyPlayer).forEach(e => list.appendChild(e)); } else { let http; if (window.location.href.indexOf('https') > -1) { http = this.callAPI('https://' + window.location.host + '/api/playerData.xml?id=' + galaxyPlayer.id.replace(/\D/g,'')); } else { http = this.callAPI('http://' + window.location.host + '/api/playerData.xml?id=' + galaxyPlayer.id.substring(6)); } http.onreadystatechange = () => { if(http.readyState === XMLHttpRequest.DONE && http.status === 200) { let parser = new DOMParser(); let xml = parser.parseFromString(http.responseText, 'text/xml'); galaxyPlayer.planets = []; Array.from(xml.querySelectorAll('planet')).forEach((planet, index) => { let jsonPlanet = {}; jsonPlanet.name = planet.getAttribute('name'); jsonPlanet.coords = planet.getAttribute('coords'); jsonPlanet.hasMoon = planet.querySelector('moon') ? true : false; jsonPlanet.isMain = index == 0 ? true : false; galaxyPlayer.planets.push(jsonPlanet); }); galaxyPlayer.planets.sort((a, b) => { let coordsA = a.coords.split(':').map(x => x.padStart(3, '0')).join(''); let coordsB = b.coords.split(':').map(x => x.padStart(3, '0')).join(''); return coordsA - coordsB; }); list.innerHTML = ''; this.updateStalk(galaxyPlayer).forEach(e => list.appendChild(e)); let timestamp = parseInt(xml.querySelector('playerData').getAttribute('timestamp')); galaxyPlayer.date = date.innerHTML = new Date(timestamp * 1000).toLocaleDateString("fr-FR"); let total = parseInt(xml.querySelector('position[type="0"]').getAttribute('score')); let eco = parseInt(xml.querySelector('position[type="1"]').getAttribute('score')); let tech = parseInt(xml.querySelector('position[type="2"]').getAttribute('score')); let str = parseInt(xml.querySelector('position[type="3"]').getAttribute('score')); let fleetCount = (parseInt(xml.querySelector('position[type="3"]').getAttribute('ships')) || 0); let def = Math.max(str - (total - eco - tech), 0); let fleet = str - def; count.innerHTML = galaxyPlayer.planets.length + ' planet(s)'; detailRank.innerHTML = ` <div title="${this.getTranslatedText(42, true)}"><div class="ogl-totalIcon"></div> ${this.formatToUnits(total)}</div> <div title="${this.getTranslatedText(43, true)}"><div class="ogl-ecoIcon"></div> ${this.formatToUnits(eco)}</div> <div title="${this.getTranslatedText(44, true)}"><div class="ogl-techIcon"></div> ${this.formatToUnits(tech)}</div> <div title="${this.getTranslatedText(45, true)}"><div class="ogl-fleetIcon"></div> ${this.formatToUnits(fleet)}</div> <div title="${this.getTranslatedText(46, true)}"><div class="ogl-defIcon"></div> ${this.formatToUnits(def)}</div> `; galaxyPlayer.ready = true; } } } }); } } updateStalk(galaxyPlayer) { let domArr = []; galaxyPlayer.planets.forEach(planet => { let coords = planet.coords.split(':'); let a = this.createDOM('a'); a.appendChild(this.createDOM('span', {}, planet.coords)); a.setAttribute('data-coords', planet.coords); if(planet.isMain) { a.classList.add('ogl-main'); a.appendChild(this.createDOM('i', {}, 'PM')); } let mIcon = a.appendChild(this.createDOM('div', {'class':'icon ogl-moon'})); a.addEventListener('click', event => { let link = `?page=ingame&component=galaxy&galaxy=${coords[0]}&system=${coords[1] }&position=${coords[2]}`; if (window.location.href.indexOf('https') > -1) { link = 'https://' + window.location.host + window.location.pathname + link; } else { link = 'http://' + window.location.host + window.location.pathname + link; } if(event.ctrlKey) window.open(link, '_blank'); else { if(this.page == 'galaxy') { document.querySelector('#galaxy_input').value = coords[0]; document.querySelector('#system_input').value = coords[1]; submitForm(); this.highlighted = coords.join(':'); } else window.location.href = link; } }); if(planet.hasMoon) { mIcon.classList.add('ogl-active'); } let targeted = this.json.markers[planet.coords]; if(targeted) { a.classList.add('ogl-marked'); a.setAttribute('data-marked', targeted.color); } else { a.classList.remove('ogl-marked'); a.removeAttribute('data-marked'); } domArr.push(a); }); return domArr; } sideStalk(galaxyPlayer) { if(galaxyPlayer) { this.json.sideStalk = JSON.stringify(galaxyPlayer); this.saveData(); } if(this.json.sideStalk) { let sideStalk = document.querySelector('.ogl-sideStalk'); let sidePlayer = galaxyPlayer || JSON.parse(this.json.sideStalk); if(!sideStalk) { sideStalk = document.querySelector('#rechts').appendChild(this.createDOM('div', {'id':'ogl-draggableSideStalk', 'class':'ogl-sideStalk ogl-draggable', 'draggable':'true'})); } sideStalk.innerHTML = ` ${sidePlayer.name} #${sidePlayer.rank} <hr> `; let btn = sideStalk.appendChild(this.createDOM('a', {'class':'close-tooltip'})); btn.addEventListener('click', () => { this.json.sideStalk = false; this.saveData(); sideStalk.remove(); }); document.querySelector('.ogl-sideStalk > div') && document.querySelector('.ogl-sideStalk > div').remove(); let container = sideStalk.appendChild(this.createDOM('div', {'class':'ogl-stalkPlanets'})); this.updateStalk(sidePlayer).forEach(dom => container.appendChild(dom)); container.appendChild(this.createDOM('div', {'class':'ogl-right ogl-date'}, sidePlayer.date)); } } checkDebris() { if(this.page == 'galaxy') { this.FPSLoop('checkDebris'); document.querySelectorAll('.debris').forEach(element => { let debris = element.querySelector('.ListLinks'); if(debris && !debris.classList.contains('ogl-debrisReady')) { debris.classList.add('ogl-debrisReady'); let total = 0; debris.querySelectorAll('.debris-content').forEach(resources => { let value = this.removeNumSeparator(resources.innerText.replace(/(\D*)/, '')); total += parseInt(value); element.querySelector('.debrisField').innerHTML += this.formatToUnits(this.cleanValue(value)) + '<br>'; }); if(total > this.json.options.rvalLimit) { element.classList.add('ogl-active'); } } }); let expeBox = document.querySelector('.expeditionDebrisSlotBox'); if(expeBox && !expeBox.classList.contains('ogl-done')) { let content = expeBox.querySelectorAll('.ListLinks li'); expeBox.classList.add('ogl-done'); let scouts = content[2]; let action = content[3]; let res = [ content[0].textContent.replace(/(\D*)/, ''), content[1].textContent.replace(/(\D*)/, '') ]; expeBox.innerHTML = ` <img src="https://gf1.geo.gfsrv.net/cdnc5/fa3e396b8af2ae31e28ef3b44eca91.gif"> <div> <div class="ogl-metal">${res[0]}</div> <div class="ogl-crystal">${res[1]}</div> </div> <div> <div>${scouts.textContent}</div> <div>${action.outerHTML}</div> </div> `; } } } genTrashsimLink(apiKey) { let coords = this.current.coords.split(':'); let jsonTechs = {"0": [{ planet: { galaxy:coords[0], system:coords[1], position:coords[2], }, class: this.json.playerClass, "research": {} }]}; for(let [key, value] of Object.entries(this.json.techs)) { jsonTechs[0][0].research[key] = {"level":value}; } jsonTechs = btoa(JSON.stringify(jsonTechs)); return 'https://trashsim.universeview.be/' + this.gameLang + '?SR_KEY=' + apiKey + '#prefill=' + jsonTechs; } updateReportTotal(reportList) { if(document.querySelector('.ogl-spyTable') && this.json.options.spyTableEnable) { let container = document.querySelector('.ogl-spyTable .ogl-total'); if(!container) { container = document.querySelector('.ogl-spyTable').appendChild(this.createDOM('div', {'class':'ogl-total'})); } let total = reportList.reduce((prev, cur) => !cur.deleted ? prev + cur.renta : prev + 0, 0); container.innerHTML = `Total : <span>${total.toLocaleString('de-DE')}</span>`; } } buildReportTable(reportList) { document.querySelector('.ogl-spyTable') && document.querySelector('.ogl-spyTable').remove(); let addShipLink = (id, coords, report) => { if(this.json.options.compactViewEnable || this.json.options.fret == id) { let param = `am${id}=${report['s'+id]}`; let link = `?page=ingame&component=fleetdispatch&galaxy=${coords[0]}&system=${coords[1] }&position=${coords[2]}&type=${report.type}&mission=1&${param}&oglMode=4`; let td = this.createDOM('td'); if(this.json.options.fret == id) td.classList.add('ogl-favShip'); if (window.location.href.indexOf('https') > -1) { td.appendChild(this.createDOM('a', {'href':'https://' + window.location.host + window.location.pathname + link}, report['s'+id].toLocaleString('de-DE'))); } else { td.appendChild(this.createDOM('a', {'href':'http://' + window.location.host + window.location.pathname + link}, report['s'+id].toLocaleString('de-DE'))); } return td; } else return false; }; let deleteAction = (report, line) => { document.querySelectorAll(`.ogl-spyTable *[data-msg="${report.id}"]`).forEach(l => l.remove()); line.remove(); report.delete.click(); reportList.splice(reportList.indexOf(report), 1); this.updateReportTotal(reportList); return; } let expandAction = (report, line) => { if(!document.querySelector(`.ogl-sub[data-msg="${report.id}"]`)) { let splittedCoords = report.coords.split(':'); let newTotal = report.renta; let nextElement = line.nextElementSibling; for(let i=2; i<=6; i++) { let newLine = this.createDOM('tr', {'class':'ogl-sub', 'data-msg':report.id}); line.parentNode.insertBefore(newLine, nextElement); newTotal -= newTotal * report.loot / 100; newLine.appendChild(this.createDOM('td', {'class':'ogl-inactive'}, `(${i})`)); newLine.appendChild(this.createDOM('td', {'class':'ogl-inactive'}, '-')); newLine.appendChild(this.createDOM('td', {'class':'ogl-inactive'}, '-')); newLine.appendChild(this.createDOM('td', {'class':'ogl-inactive'}, '-')); newLine.appendChild(this.createDOM('td', {'class':'ogl-inactive'}, '-')); newLine.appendChild(this.createDOM('td', {}, this.formatToUnits(Math.ceil(newTotal)))); newLine.appendChild(this.createDOM('td', {'class':'ogl-inactive'}, '-')); newLine.appendChild(this.createDOM('td', {'class':'ogl-inactive'}, '-')); if(this.json.options.compactViewEnable || this.json.options.fret == 202) { let newPTFret = this.calcNeededShips({'moreFret':true, 'resources':newTotal, 'fret':202}); let newPTLink = `?page=ingame&component=fleetdispatch&galaxy=${splittedCoords[0]}&system=${splittedCoords[1] }&position=${splittedCoords[2]}&type=${report.type}&mission=1&am202=${newPTFret}&oglMode=4`; let newPT = newLine.appendChild(this.createDOM('td')); if (window.location.href.indexOf('https') > -1) { newPT.appendChild(this.createDOM('a', {'href':'https://' + window.location.host + window.location.pathname + newPTLink}, newPTFret.toLocaleString('de-DE'))); } else { newPT.appendChild(this.createDOM('a', {'href':'http://' + window.location.host + window.location.pathname + newPTLink}, newPTFret.toLocaleString('de-DE'))); } } if(this.json.options.compactViewEnable || this.json.options.fret == 203) { let newGTFret = this.calcNeededShips({'moreFret':true, 'resources':newTotal, 'fret':203}); let newGTLink = `?page=ingame&component=fleetdispatch&galaxy=${splittedCoords[0]}&system=${splittedCoords[1] }&position=${splittedCoords[2]}&type=${report.type}&mission=1&am203=${newGTFret}&oglMode=4`; let newGT = newLine.appendChild(this.createDOM('td')); if (window.location.href.indexOf('https') > -1) { newGT.appendChild(this.createDOM('a', {'href':'https://' + window.location.host + window.location.pathname + newGTLink}, newGTFret.toLocaleString('de-DE'))); } else { newGT.appendChild(this.createDOM('a', {'href':'http://' + window.location.host + window.location.pathname + newGTLink}, newGTFret.toLocaleString('de-DE'))); } } if(this.json.options.compactViewEnable || this.json.options.fret == 219) { let newPFFret = this.calcNeededShips({'moreFret':true, 'resources':newTotal, 'fret':219}); let newPFLink = `?page=ingame&component=fleetdispatch&galaxy=${splittedCoords[0]}&system=${splittedCoords[1] }&position=${splittedCoords[2]}&type=${report.type}&mission=1&am219=${newPFFret}&oglMode=4`; let newPF = newLine.appendChild(this.createDOM('td')); if (window.location.href.indexOf('https') > -1) { newPF.appendChild(this.createDOM('a', {'href':'https://' + window.location.host + window.location.pathname + newPFLink}, newPFFret.toLocaleString('de-DE'))); } else { newPF.appendChild(this.createDOM('a', {'href':'http://' + window.location.host + window.location.pathname + newPFLink}, newPFFret.toLocaleString('de-DE'))); } } newLine.appendChild(this.createDOM('td', {'class':'ogl-inactive'}, '-')); newLine.appendChild(this.createDOM('td', {'class':'ogl-inactive'}, '-')); } } else { document.querySelectorAll(`.ogl-sub[data-msg="${report.id}"]`).forEach(e => e.remove()); } } let toggleConfig = configId => { if(configId == 0) this.json.options.spyTableEnable = !this.json.options.spyTableEnable; else if(configId == 1) this.json.options.compactViewEnable = !this.json.options.compactViewEnable; else if(configId == 2) this.json.options.autoDeleteEnable = !this.json.options.autoDeleteEnable; this.saveData(); this.buildReportTable(reportList); } let filterAction = filter => { this.json.options.spyFilter = this.json.options.spyFilter == filter ? "REVERSE_" + filter : filter; this.saveData(); this.buildReportTable(reportList); } let deleteNotifAction = () => { document.querySelectorAll('.msg').forEach(e => { if(e.querySelector('.espionageDefText')) e.querySelector('.icon_refuse').click(); }); } //let pagination = document.querySelector('.pagination').cloneNode(true); //document.querySelector('ul.subtabs').after(pagination); let container = this.createDOM('div', {'class':'ogl-spyTable'}) document.querySelector('ul.subtabs').after(container); let config = container.appendChild(this.createDOM('div', {'class':'ogl-tableOptions'})); let enableTable = config.appendChild(this.createDOM('button', {'class':'icon icon_eye ogl-enableTable tooltip', 'title':this.getTranslatedText(8)}, '', () => toggleConfig(0))); if(this.json.options.spyTableEnable) enableTable.classList.add('ogl-active'); let compactView = config.appendChild(this.createDOM('button', {'class':'icon icon_maximize ogl-icon tooltip', 'title':this.getTranslatedText(11)}, '', () => toggleConfig(1))); if(this.json.options.compactViewEnable) compactView.classList.add('ogl-active'); let autoDelete = config.appendChild(this.createDOM('button', {'class':'icon icon_trash ogl-autoDelete tooltip', 'title':this.getTranslatedText(7)}, '', () => toggleConfig(2))); if(this.json.options.autoDeleteEnable) autoDelete.classList.add('ogl-active'); config.appendChild(this.createDOM('button', {'class':'icon ogl-wipe tooltip', 'title':this.getTranslatedText(35)}, '', () => deleteNotifAction(2))); if(!this.json.options.spyTableEnable) return; reportList.sort((a, b) => { if(this.json.options.spyFilter == "$") return b.renta - a.renta; else if(this.json.options.spyFilter == "DATE") return a.deltaDate - b.deltaDate; else if(this.json.options.spyFilter == "COORDS") return a.tmpCoords - b.tmpCoords; else if(this.json.options.spyFilter == "FLEET") return b.fleet - a.fleet; else if(this.json.options.spyFilter == "DEF") return b.defense - a.defense; else if(this.json.options.spyFilter == "REVERSE_$") return a.renta - b.renta; else if(this.json.options.spyFilter == "REVERSE_DATE") return b.deltaDate - a.deltaDate; else if(this.json.options.spyFilter == "REVERSE_COORDS") return b.tmpCoords - a.tmpCoords; else if(this.json.options.spyFilter == "REVERSE_FLEET") return a.fleet - b.fleet; else if(this.json.options.spyFilter == "REVERSE_DEF") return a.defense - b.defense; }); let table = container.appendChild(this.createDOM('table')); let header = table.appendChild(this.createDOM('tr')); header.appendChild(this.createDOM('th', {}, '#')); header.appendChild(this.createDOM('th', this.json.options.spyFilter.indexOf("DATE") > -1 ? {'class':'ogl-filter ogl-active'} : {'class':'ogl-filter'}, 'Date*', () => filterAction('DATE'))); header.appendChild(this.createDOM('th', this.json.options.spyFilter.indexOf("COORDS") > -1 ? {'class':'ogl-filter ogl-active'} : {'class':'ogl-filter'}, 'Coords', () => filterAction('COORDS'))); header.appendChild(this.createDOM('th', {}, '-')); header.appendChild(this.createDOM('th', {}, 'Name+')); header.appendChild(this.createDOM('th', this.json.options.spyFilter.indexOf("$") > -1 ? {'class':'ogl-filter ogl-active'} : {'class':'ogl-filter'}, 'Renta', () => filterAction('$'))); header.appendChild(this.createDOM('th', this.json.options.spyFilter.indexOf("FLEET") > -1 ? {'class':'ogl-filter ogl-active'} : {'class':'ogl-filter'}, 'Fle', () => filterAction('FLEET'))); header.appendChild(this.createDOM('th', this.json.options.spyFilter.indexOf("DEF") > -1 ? {'class':'ogl-filter ogl-active'} : {'class':'ogl-filter'}, 'Def', () => filterAction('DEF'))); if(this.json.options.compactViewEnable || this.json.options.fret == 202) header.appendChild(this.createDOM('th', {'class':'ogl-shipIcon ogl-202'})); if(this.json.options.compactViewEnable || this.json.options.fret == 203) header.appendChild(this.createDOM('th', {'class':'ogl-shipIcon ogl-203'})); if(this.json.options.compactViewEnable || this.json.options.fret == 219) header.appendChild(this.createDOM('th', {'class':'ogl-shipIcon ogl-219'})); header.appendChild(this.createDOM('th', {'class':'ogl-headerColors'}, '-')); header.appendChild(this.createDOM('th', {}, '-')); let spyTableTarget = false; reportList.forEach((report, index) => { if(report.deleted) return; if((this.json.options.autoDeleteEnable && report.fleet == 0 && report.bad)) { report.deleted = true; report.delete.click(); return; } let splittedCoords = report.coords.split(':'); let line = table.appendChild(this.createDOM('tr')); if(report.attacked) line.classList.add('ogl-attacked'); if(report.fleet == 0 && report.defense == 0 && !report.attacked && !spyTableTarget) { spyTableTarget = true; line.setAttribute('data-nexttarget', true); } // index line.appendChild(this.createDOM('td', {}, index + 1)); // date let dateDetail = ` ${report.cleanDate.toLocaleDateString('fr-FR')}<br> ${report.cleanDate.toLocaleTimeString()}<br> Activity : ${report.activity < 0 ? 'N/A' : report.activity} `; let date = line.appendChild(this.createDOM('td', {'class':'tooltipLeft ogl-date', 'title':dateDetail}, report.cleanDate.toLocaleTimeString())); if(report.activity > 0 && report.activity <= 15) date.classList.add('ogl-danger'); else if(report.activity > 0 && report.activity < 60) date.classList.add('ogl-care'); else date.classList.add('ogl-good'); // coords let coords = line.appendChild(this.createDOM('td', {'class':'ogl-coordReport'})); coords.appendChild(this.createDOM('a', {'href':report.coordsLink}, report.coords)); // planet/moon let type = line.appendChild(this.createDOM('td', {'class':'ogl-type'})); if(report.type == 1) type.appendChild(this.createDOM('div', {'class':'icon ogl-planet'})); else type.appendChild(this.createDOM('div', {'class':'icon ogl-moon'})); // playername let name = line.appendChild(this.createDOM('td', {'class':'ogl-name tooltip', 'title':'details'})); name.appendChild(this.createDOM('a', {'class':'msg_action_link overlay', 'href':report.detail}, report.name.substring(0, 6) + '... ' + report.status)); // renta let totalDetail = ` <div class="ogl-metal">M: ${this.formatToUnits(report.metal)}</div> <div class="ogl-crystal">C: ${this.formatToUnits(report.crystal)}</div> <div class="ogl-deut">D: ${this.formatToUnits(report.deut)}</div> <div class="splitLine"></div> TOTAL: ${this.formatToUnits(report.total)} `; let total = line.appendChild(this.createDOM('td', {'class':'tooltipLeft ogl-lootable', 'title':totalDetail}, this.formatToUnits(report.renta))); if(this.json.options.rvalLimit <= Math.round(report.total * report.loot / 100)) total.classList.add('ogl-good'); total.style.background = `linear-gradient(to right, #9c4949 ${report.resRatio[0]}%, #498d9c ${report.resRatio[0]}% , #498d9c ${report.resRatio[0] + report.resRatio[1]}%, #abdeb4 ${report.resRatio[2]}%)`; // fleet let fleet = line.appendChild(this.createDOM('td', {'class':'tooltip', 'title':report.fleet.toLocaleString('de-DE')}, report.fleet > -1 ? this.formatToUnits(report.fleet, 0) : 'N/A')); if(report.fleet > 0 || report.fleet == -1) fleet.classList.add('ogl-danger'); // defense let defense = line.appendChild(this.createDOM('td', {'class':'tooltip', 'title':report.defense.toLocaleString('de-DE')}, report.defense > -1 ? this.formatToUnits(report.defense, 0) : 'N/A')); if(report.defense > 0 || report.defense == -1) defense.classList.add('ogl-danger'); // small cargo let scLink = addShipLink(202, splittedCoords, report); if(scLink) line.appendChild(scLink); // large cargo let lcLink = addShipLink(203, splittedCoords, report); if(lcLink) line.appendChild(lcLink); // pathfinder let pfLink = addShipLink(219, splittedCoords, report); if(pfLink) line.appendChild(pfLink); // colors let colors = line.appendChild(this.createDOM('td')); colors.appendChild(this.createDOM('div', {class:'ogl-colors', 'data-coords':report.coords})); // actions let opt = line.appendChild(this.createDOM('td', {'class':'ogl-spyOptions'})); opt.appendChild(this.createDOM('button', {'class':'icon ogl-simButton'}, 'S', () => report.sim.click())); opt.appendChild(this.createDOM('button', {'class':'icon icon_eye', 'onclick':report.spy})); opt.appendChild(this.createDOM('button', {'class':'icon ogl-expand'}, '', () => expandAction(report, line))); opt.appendChild(this.createDOM('button', {'class':'icon icon_close'}, '', () => deleteAction(report, line))); }); this.updateReportTotal(reportList); this.marker(); } spyTable(firstLoop) { if(this.page == 'fleetdispatch' && this.mode == 4) { let link; if (window.location.href.indexOf('https') > -1) { link = 'https://' + window.location.host + window.location.pathname + '?page=messages'; } else { link = 'http://' + window.location.host + window.location.pathname + '?page=messages'; } document.querySelector('#sendFleet').addEventListener('click', () => { localStorage.setItem('ogl-redirect', link); }); let sent = false; document.addEventListener('keydown', event => { if(!sent && fleetDispatcher.currentPage == 'fleet3') { if((!document.querySelector('.ui-dialog') || document.querySelector('.ui-dialog').style.display == 'none') && !document.querySelector('.chat_box_textarea:focus')) { let keycode = event.keyCode ? event.keyCode : event.which; if(keycode == 13) { localStorage.setItem('ogl-redirect', link); sent = true; } } } }); } if(this.page != 'messages') return; this.FPSLoop('spyTable'); if(!document.querySelector('#tabs-nfFleets[tabindex="0"]')) return; let detail = document.querySelector('.detail_msg'); if(detail && detail.getAttribute('data-message-type') == 10 && !detail.classList.contains('ogl-detailReady')) { let apiKey = this.createDOM('div', {}); apiKey.innerHTML = detail.querySelector('.icon_apikey').getAttribute('title') || detail.querySelector('.icon_apikey').getAttribute('data-title'); apiKey = apiKey.querySelector('input').value; let simButton = detail.querySelector('.msg_actions').appendChild(this.createDOM('div', {'class':'ogl-sim icon_nf'}, 'S')); simButton.addEventListener('click', () => window.open(this.genTrashsimLink(apiKey), '_blank')); detail.classList.add('ogl-detailReady'); } let reportList = []; let updated = false; document.querySelectorAll('#fleetsTab .msg:not([data-table="true"])').forEach(msg => { msg.setAttribute('data-table', "true"); if(msg.querySelectorAll('.compacting').length < 1 || document.querySelector('#subtabs-nfFleetTrash.ui-tabs-active')) return; updated = true; let data = msg.querySelectorAll('.compacting'); let rawDate = msg.querySelector('.msg_date').textContent.split(/\.| /g); let cleanDate = new Date(`${rawDate[2]}/${rawDate[1]}/${rawDate[0]} ${rawDate[3]}`); let deltaDate = Date.now() - cleanDate; let mins = deltaDate / 60000; let hours = mins / 60; if(!data[0] || !(/\[.*\]/g).exec(msg.querySelector('.msg_title').innerHTML)) return; let apiKey = this.createDOM('div', {}); apiKey.innerHTML = msg.querySelector('.icon_apikey').getAttribute('title') || msg.querySelector('.icon_apikey').getAttribute('data-title'); apiKey = apiKey.querySelector('input').value; let report = {}; report.id = msg.getAttribute('data-msg-id'); report.apiKey = this.genTrashsimLink(apiKey); report.attacked = msg.querySelector('.icon_attack img'); report.type = msg.querySelector('figure.moon') ? 3 : 1; report.name = data[0].querySelectorAll('span[class^="status"]')[0].textContent.replace(/ /g,'').trim(); report.status = data[0].querySelectorAll('span[class^="status"]')[1].textContent.replace(/ /g,'').trim(); report.spy = msg.querySelector('a[onclick*="sendShipsWithPopup"]').getAttribute('onclick'); report.activity = data[0].querySelectorAll('span.fright')[0].textContent ? parseInt(data[0].querySelectorAll('span.fright')[0].textContent.match(/\d+/)[0]) : -1; report.coords = (/\[.*\]/g).exec(msg.querySelector('.msg_title').innerHTML)[0].slice(1, -1); report.coordsLink = msg.querySelector('.msg_title a').href; report.detail = msg.querySelector('.msg_actions a.fright').href; report.delete = msg.querySelector('.msg_head .fright a .icon_refuse'); report.fleet = data[4].querySelectorAll('span').length > 0 ? this.cleanValue(data[4].querySelectorAll('span.ctn')[0].textContent.replace(/(\D*)/, '').split(' ')[0]) : -1; report.defense = data[4].querySelectorAll('span').length > 1 ? this.cleanValue(data[4].querySelectorAll('span.ctn')[1].textContent.replace(/(\D*)/, '').split(' ')[0]) : -1; report.deltaDate = deltaDate; report.cleanDate = cleanDate; report.date = hours < 1 ? Math.floor(mins)+' min' : Math.floor(hours)+'h'; report.loot = data[3].querySelector('.ctn').textContent.replace(/(\D*)/, '').replace(/%/, ''); report.metal = this.cleanValue(data[2].querySelectorAll('.resspan')[0].textContent.replace(/(\D*)/, '')); report.crystal = this.cleanValue(data[2].querySelectorAll('.resspan')[1].textContent.replace(/(\D*)/, '')); report.deut = this.cleanValue(data[2].querySelectorAll('.resspan')[2].textContent.replace(/(\D*)/, '')); report.total = report.metal + report.crystal + report.deut; report.renta = Math.round(report.total * report.loot / 100); report.s202 = this.calcNeededShips({'moreFret':true, 'fret':202, 'resources':Math.ceil(report.total * report.loot / 100)}); report.s203 = this.calcNeededShips({'moreFret':true, 'fret':203, 'resources':Math.ceil(report.total * report.loot / 100)}); report.s219 = this.calcNeededShips({'moreFret':true, 'fret':219, 'resources':Math.ceil(report.total * report.loot / 100)}); report.bad = report.total * report.loot / 100 < this.json.options.rvalLimit ? true : false; report.deleted = false; let resRatio = [report.total/report.metal, report.total/report.crystal, report.total/report.deut]; report.resRatio = resRatio.map(x => Math.round(1/x*100)); report.tmpCoords = report.coords.split(':'); report.tmpCoords = report.tmpCoords.map(x => x.padStart(3, '0')); report.tmpCoords = report.tmpCoords.join(''); report.sim = msg.querySelector('.msg_actions').appendChild(this.createDOM('div', {'class':'ogl-sim icon_nf'}, 'S')); report.sim.addEventListener('click', () => window.open(report.apiKey, '_blank')); reportList.push(report); }); if(updated) { this.buildReportTable(reportList); } if(document.querySelector('.ogl-spyTable')) { if(!document.querySelector('#subtabs-nfFleet20.ui-tabs-active') || document.querySelector('#subtabs-nfFleetTrash.ui-tabs-active')) { document.querySelector('.ogl-spyTable').classList.add('ogl-hidden'); } else { document.querySelector('.ogl-spyTable').classList.remove('ogl-hidden'); } } if(firstLoop) { let sent = false; document.addEventListener('keyup', event => { let tab = document.querySelector('#subtabs-nfFleet20') || document.querySelector('#subtabs-nfCommunication11'); if(!tab || sent || !tab.classList.contains('ui-tabs-active') || !document.querySelector('.pagination') || !document.querySelector('.ogl-spyTable')) return; if(document.querySelector('tr[data-nexttarget="true"]')) { if((!document.querySelector('.ui-dialog') || document.querySelector('.ui-dialog').style.display == 'none') && !document.querySelector('.chat_box_textarea:focus')) { let keycode = event.keyCode ? event.keyCode : event.which; if(keycode == 13) { sent = true; document.querySelector('tr[data-nexttarget="true"] .ogl-favShip a').click(); } } } }); } } lock() { let pages = ['supplies', 'research', 'facilities', 'shipyard', 'defenses'] if(pages.includes(this.page)) { this.FPSLoop('lock'); let data; let detail = document.querySelector('#technologydetails'); let tech = {}; tech.onMoon = this.current.isMoon; if(this.json.locked[this.current.coords]) { data = JSON.parse(this.json.locked[this.current.coords]); if(data.onMoon == tech.onMoon) { if(data.isShip) { if(data.metal <= 0 && data.crystal <= 0 && data.deut <= 0) { this.json.locked[this.current.coords] = ''; this.saveData(); } } else { let techDom = document.querySelector(`#technologies .technology[data-technology="${data.id}"]`); if(techDom) { let finished = parseInt(techDom.querySelector('.level').getAttribute('data-value')) >= data.level; let started = techDom.querySelector('.targetlevel') ? parseInt(techDom.querySelector('.targetlevel').getAttribute('data-value')) >= data.level : false; if(started || finished) { this.json.locked[this.current.coords] = ''; this.saveData(); } } } } } if(!detail || detail.classList.contains('ogl-detailReady')) return; detail.classList.add('ogl-detailReady'); let m = detail.querySelector('.costs .metal'); let c = detail.querySelector('.costs .crystal'); let d = detail.querySelector('.costs .deuterium'); tech.id = detail.getAttribute('data-technology-id'); tech.metal = m ? parseInt(m.getAttribute('data-value')) + 5 : 0; tech.crystal = c ? parseInt(c.getAttribute('data-value')) + 5 : 0; tech.deut = d ? parseInt(d.getAttribute('data-value')) + 5 : 0; tech.name = detail.querySelector('h3').textContent; let btn = detail.querySelector('.sprite_large').appendChild(this.createDOM('button', {'class':'ogl-lock'})); btn.appendChild(this.createDOM('div', {'class':'icon icon_lock'})); let lvl = btn.appendChild(this.createDOM('div')); if(data) { lvl.innerHTML = `<span>${data.name}</span> (${data.level})`; btn.classList.add('ogl-active'); } btn.addEventListener('click', () => { if(data && data.id == tech.id) { this.json.locked[this.current.coords] = ''; } else { tech.page = this.page; if(this.page != 'shipyard' && this.page != 'defenses') { tech.level = parseInt(detail.querySelector('.level').getAttribute('data-value')); tech.metal = Math.max(0, tech.metal - parseInt(this.removeNumSeparator(document.querySelector('#resources_metal').textContent))); tech.crystal = Math.max(0, tech.crystal - parseInt(this.removeNumSeparator(document.querySelector('#resources_crystal').textContent))); tech.deut = Math.max(0, tech.deut - parseInt(this.removeNumSeparator(document.querySelector('#resources_deuterium').textContent))); } else { if(!document.querySelector('#build_amount')) return; tech.level = parseInt(document.querySelector('#build_amount').value || 0); ['metal', 'crystal', 'deut'].forEach(res => { let val = 0; if(detail.querySelector('.costs .resource.'+res.replace('deut', 'deuterium'))) { val = detail.querySelector('.costs .resource.'+res.replace('deut', 'deuterium')).getAttribute('data-total'); val = val - parseInt(this.removeNumSeparator(document.querySelector('#resources_'+res.replace('deut', 'deuterium')).textContent)); } tech[res] = Math.max(0, val); }); tech.isShip = true; } this.json.locked[this.current.coords] = JSON.stringify(tech); if(tech.isShip) { if(tech.metal <= 0 && tech.crystal <= 0 && tech.deut <= 0) { this.json.locked[this.current.coords] = ''; } } } detail.classList.remove('ogl-detailReady'); btn.remove(); this.saveData(); this.sideLock(); }); } } sideLock() { document.querySelectorAll('.ogl-sideLock').forEach(e => e.remove()); this.planetList.forEach(planet => { let coords = planet.querySelector('.planet-koords').textContent.slice(1, -1); let splittedCoords = coords.split(':'); if(this.json.locked[coords]) { let data = JSON.parse(this.json.locked[coords]); let btn = planet.appendChild(this.createDOM('div', {'class':'ogl-sideLock tooltip tooltipRight'})); btn.title = ` ${data.name} (${data.level}) <div class="splitLine"></div> M: ${this.formatToUnits(Math.max(0, data.metal - 5))}<br> C: ${this.formatToUnits(Math.max(0, data.crystal - 5))}<br> D: ${this.formatToUnits(Math.max(0, data.deut - 5))} `; if(data.metal <= 0 && data.crystal <= 0 && data.deut <= 0) { btn.classList.add('ogl-active'); if(data.isShip) { btn.classList.add('ogl-hidden'); btn.remove(); } } btn && btn.addEventListener('click', () => { let link; let type = planet.querySelector('.moonlink') && !planet.querySelector('.moonlink.active') ? 3 : 1; if(data.metal <= 0 && data.crystal <= 0 && data.deut <= 0) { let cp; if(data.onMoon == 3) cp = new URL(planet.querySelector('.moonlink').href).searchParams.get('cp'); else cp = new URL(planet.querySelector('.planetlink').href).searchParams.get('cp'); link = `?page=ingame&component=${data.page || 'supplies'}&cp=${cp}`; } else { link = `?page=ingame&component=fleetdispatch&galaxy=${splittedCoords[0]}&system=${splittedCoords[1] }&position=${splittedCoords[2]}&type=${type}&mission=${this.json.options.harvestMission}&oglMode=2`; } if (window.location.href.indexOf('https') > -1) { window.location.href = 'https://' + window.location.host + window.location.pathname + link; } else { window.location.href = 'http://' + window.location.host + window.location.pathname + link; } }); /*let destCoords = [ this.rawURL.searchParams.get(`galaxy`) || 0, this.rawURL.searchParams.get(`system`) || 0, this.rawURL.searchParams.get(`position`) || 0, ].join(':'); if(this.mode == 2 && coords == destCoords && btn) { btn.classList.add('ogl-sideLockFilled'); }*/ } }); if(this.page == 'fleetdispatch' && this.mode == 2) { if(fleetDispatcher) { let coords = fleetDispatcher.targetPlanet.galaxy + ':' + fleetDispatcher.targetPlanet.system + ':' + fleetDispatcher.targetPlanet.position; if(this.json.locked[coords]) { let data = JSON.parse(this.json.locked[coords]); let metal = Math.min(data.metal, fleetDispatcher.metalOnPlanet); let crystal = Math.min(data.crystal, fleetDispatcher.crystalOnPlanet); let deut = Math.min(data.deut, fleetDispatcher.deuteriumOnPlanet); let total = metal + crystal + deut; this.selectShips(this.json.options.fret, this.calcNeededShips({'resources':total})); this.fillFret({'resources':{'metal':metal, 'crystal':crystal, 'deut':deut}}); console.log(data) let sent = false; let sendAction = () => { data.metal = Math.max(0, data.metal - fleetDispatcher.cargoMetal); data.crystal = Math.max(0, data.crystal - fleetDispatcher.cargoCrystal); data.deut = Math.max(0, data.deut - fleetDispatcher.cargoDeuterium); this.json.locked[coords] = JSON.stringify(data); this.saveData(); sent = true; }; document.addEventListener('keydown', event => { if((!document.querySelector('.ui-dialog') || document.querySelector('.ui-dialog').style.display == 'none') && !document.querySelector('.chat_box_textarea:focus')) { if(!sent && fleetDispatcher.currentPage == 'fleet3') { let keycode = event.keyCode ? event.keyCode : event.which; if(keycode == 13) sendAction(); } } }); document.querySelector('#sendFleet').addEventListener('click', () => { if(!sent) sendAction(); }); } } } } missingEnergy() { if(this.page == 'supplies' && !this.current.isMoon) { this.FPSLoop('missingEnergy'); let detail = document.querySelector('#technologydetails'); if(!detail || detail.classList.contains('ogl-energyReady') || !detail.querySelector('.level') || parseInt(detail.getAttribute('data-technology-id')) > 3) return; detail.classList.add('ogl-energyReady'); let node = detail.querySelector('.additional_energy_consumption span.value'); let neededEnergy = parseInt(node.getAttribute('data-value')); let currentEnergy = parseInt(this.removeNumSeparator(document.querySelector('#resources_energy').textContent)); let totalEnergy = currentEnergy - neededEnergy; let span = node.appendChild(this.createDOM('span', {}, ` (${totalEnergy.toLocaleString('de-DE')})`)); totalEnergy > 0 ? span.classList.add('bonus') : span.classList.add('overmark'); } } calcResOnPlanet() { document.querySelectorAll('.smallplanet .ogl-metal, .smallplanet .ogl-crystal, .smallplanet .ogl-deut').forEach(e => e.remove()); document.querySelector('.ogl-panelTotalRes') && document.querySelector('.ogl-panelTotalRes').remove(); document.querySelector('.ogl-panelTotalProd') && document.querySelector('.ogl-panelTotalProd').remove(); let updateRes = (id) => { let updatedValues = [0,0,0]; if(this.json.myEmpire[id] && this.json.myEmpire[id].timer) { let deltaTime = Math.floor((Date.now() - this.json.myEmpire[id].timer) / 1000); ['metal', 'crystal', 'deut'].forEach((type, index) => { updatedValues[index] = Math.floor(this.json.myEmpire[id][type] + (this.json.myEmpire[id]['prod'+type.charAt(0).toUpperCase() + type.substring(1)] * deltaTime)); }); } return updatedValues; } let totalRes = [0,0,0]; let totalProd = [0,0,0]; this.planetList.forEach(planet => { let coords = planet.querySelector('.planet-koords').textContent.slice(1, -1); let pRes = updateRes(coords); let mRes = 0; if(planet.querySelector('.moonlink')) mRes = updateRes(coords+'M'); ['metal', 'crystal', 'deut'].forEach((type, index) => { planet.querySelector('.planetlink').appendChild(this.createDOM('div', {'class':`ogl-${type} ogl-stored`}, this.formatToUnits(pRes[index], 2))); totalRes[index] += pRes[index]; if(mRes) { planet.querySelector('.moonlink').appendChild(this.createDOM('div', {'class':`ogl-${type} ogl-stored`}, this.formatToUnits(mRes[index], 0))); totalRes[index] += mRes[index]; } let pProd = 0; if(this.json.myEmpire[coords]) { pProd = this.json.myEmpire[coords]['prod'+type.charAt(0).toUpperCase() + type.substring(1)] * 3600 * 24; totalProd[index] += pProd; } planet.querySelector('.planetlink').appendChild(this.createDOM('div', {'class':`ogl-${type} ogl-prod`}, `+${this.formatToUnits(pProd, 2)}`)); if(this.json.myMines[coords]) planet.querySelector('.planetlink').appendChild(this.createDOM('div', {'class':`ogl-${type} ogl-mineLvl`}, `${this.json.myMines[coords][type]}`)); }); }); let tResDiv = this.createDOM('div', {'class':'ogl-panelTotalRes'}); document.querySelector('#planetList').parentNode.appendChild(tResDiv); tResDiv.appendChild(this.createDOM('div', {'class':'ogl-sumIcon'}, '<span class="material-icons">functions</span>')); ['metal', 'crystal', 'deut'].forEach((type, index) => tResDiv.appendChild(this.createDOM('div', {'class':`ogl-${type}`}, this.formatToUnits(totalRes[index])))); let tProdDiv = this.createDOM('div', {'class':'ogl-panelTotalProd'}); document.querySelector('#planetList').parentNode.appendChild(tProdDiv); tProdDiv.appendChild(this.createDOM('div', {'class':'ogl-sumIcon'}, '<span class="material-icons">functions</span>')); ['metal', 'crystal', 'deut'].forEach((type, index) => tProdDiv.appendChild(this.createDOM('div', {'class':`ogl-${type}`}, '+'+this.formatToUnits(totalProd[index])))); setTimeout(() => this.calcResOnPlanet(), 5000); } empire(mode) { let reload = mode; if(mode || mode == 0) this.json.options.empireMode = mode; else mode = this.json.options.empireMode; let now = Date.now(); let id = this.current.isMoon ? this.current.coords+'M' : this.current.coords; // store data ['metal', 'crystal', 'deut'].forEach(type => { let currentValue = this.current.resources[type]; let target = document.querySelector(`#${type.replace('deut', 'deuterium')}_box`); let data = target.getAttribute('title') || target.getAttribute('data-title'); let splitted = data.replace(/\./g, '').match(/\d+/g); this.json.myEmpire[id] = this.json.myEmpire[id] || {}; this.json.myEmpire[id].timer = now; this.json.myEmpire[id].name = this.current.name; this.json.myEmpire[id][type] = currentValue; this.json.myEmpire[id]['prod' + type.charAt(0).toUpperCase() + type.substring(1)] = (splitted[2] / 3600).toFixed(2); this.saveData(); }); // display data if(this.page == 'movement') { let container = document.querySelector('.ogl-empireContainer') || this.createDOM('div', {'class':'ogl-empireContainer'}); container.textContent = ''; for(let i=0; i<3; i++) { let textId = 47 + i; let btn = container.appendChild(this.createDOM('button', {'class':'ogl-empireMode'}, this.getTranslatedText(textId))); btn.addEventListener('click', () => this.empire(i)); if(mode == i) btn.classList.add('ogl-active'); } let empireDiv = container.appendChild(this.createDOM('div', {'class':'ogl-empire'})); let resources = {}; let totalFly = {'metal':0, 'crystal':0, 'deut':0}; document.querySelectorAll('.fleetDetails').forEach(line => { let mission = line.getAttribute('data-mission-type'); let back = line.getAttribute('data-return-flight'); let route = line.querySelector('.route a'); let rel = route.getAttribute('rel'); let destination; let tr; if(line.getAttribute('data-fleet')) { let tmp = document.createElement('div'); tmp.innerHTML = line.getAttribute('data-fleet'); tr = tmp; } else { tr = document.querySelector('#' + rel); line.setAttribute('data-fleet', tr.outerHTML); } tr = tr.querySelectorAll('tr'); if(back != 1 && (mission == 3 || mission == 4 || mission == 7)) { destination = line.querySelector('.destinationCoords').textContent.slice(1, -1); if(line.querySelector('.destinationPlanet figure.moon')) destination += 'M'; } else { destination = line.querySelector('.originCoords').textContent.slice(1, -1); if(line.querySelector('.originPlanet figure.moon')) destination += 'M'; } let metal = parseInt(this.removeNumSeparator(tr[tr.length-3].querySelector('.value').textContent.trim(), true)); let crystal = parseInt(this.removeNumSeparator(tr[tr.length-2].querySelector('.value').textContent.trim(), true)); let deut = parseInt(this.removeNumSeparator(tr[tr.length-1].querySelector('.value').textContent.trim(), true)); resources[destination] = resources[destination] || {'metal':0, 'crystal':0, 'deut':0}; resources[destination].metal += metal; resources[destination].crystal += crystal; resources[destination].deut += deut; totalFly.metal += metal; totalFly.crystal += crystal; totalFly.deut += deut; }); let total = [0, 0, 0]; let prodTotal = [0, 0, 0]; let addLine = (line, planet, link) => { let title = planet.indexOf('M') > -1 ? 'Moon' : `${this.json.myEmpire[planet].name}<br>[${planet}]`; let name = line.appendChild(this.createDOM('div', {}, title)); let prod = line.appendChild(this.createDOM('div')); name.addEventListener('click', () => window.location.href = link); if(this.json.myEmpire[planet].timer) { let deltaTime = Math.floor((Date.now() - this.json.myEmpire[planet].timer) / 1000); ['metal', 'crystal', 'deut'].forEach((type, index) => { let updatedValue = 0; if(mode == 0 || mode == 2) { updatedValue = Math.floor(this.json.myEmpire[planet][type] + (this.json.myEmpire[planet]['prod'+type.charAt(0).toUpperCase() + type.substring(1)] * deltaTime)); } if((mode == 1 || mode == 2) && resources[planet]) { updatedValue += resources[planet][type]; } total[index] += updatedValue; prodTotal[index] += this.json.myEmpire[planet]['prod'+type.charAt(0).toUpperCase() + type.substring(1)] * 86400; prod.innerHTML += `<div class="ogl-${type}">`+updatedValue.toLocaleString('de-DE')+'</div>'; }); } else { ['metal', 'crystal', 'deut'].forEach((type, index) => { prod.innerHTML += `<div class="ogl-${type}">?</div>`; }); } } this.planetList.forEach(planet => { let coords = planet.querySelector('.planet-koords').textContent.slice(1, -1); let line = empireDiv.appendChild(this.createDOM('div', {'class':'ogl-empireLine'})); if(!this.json.myEmpire[coords]) { this.json.myEmpire[coords] = { name: '???', metal: 0, crystal: 0, deut: 0, } } addLine(line, coords, planet.querySelector('.planetlink').getAttribute('href')); if(planet.querySelector('.moonlink')) { if(!this.json.myEmpire[coords+'M']) { this.json.myEmpire[coords+'M'] = { metal: 0, crystal: 0, deut: 0, } } addLine(line, coords+'M', planet.querySelector('.moonlink').getAttribute('href')); } }); let totalDiv = empireDiv.appendChild(this.createDOM('div', {'class':'ogl-empireTotal ogl-fullGrid'})); totalDiv.innerHTML = `<h3>Total (+prod/24h)</h3><hr> <div class="ogl-metal"><b>${total[0].toLocaleString('de-DE')}</b> (+${this.formatToUnits(prodTotal[0], 0)})</div> <div class="ogl-crystal"><b>${total[1].toLocaleString('de-DE')}</b> (+${this.formatToUnits(prodTotal[1], 0)})</div> <div class="ogl-deut"><b>${total[2].toLocaleString('de-DE')}</b> (+${this.formatToUnits(prodTotal[2], 0)})</div>`; if(!reload && reload != 0) { this.addKeyboardAction('o', this.getTranslatedText(41), () => { this.empire(this.json.options.empireMode); let overlay = document.querySelector('.ogl-dialogOverlay.ogl-active'); if(overlay) overlay.click(); else this.popup(false, container); }); } } } highlightTarget() { if(this.page == 'galaxy') { this.FPSLoop('highlightTarget'); if(document.querySelector('#galaxyLoading').style.display != 'none') return; let coords; if(this.highlighted) { coords = this.highlighted.split(':'); } else { coords = [ this.rawURL.searchParams.get(`galaxy`) || 0, this.rawURL.searchParams.get(`system`) || 0, this.rawURL.searchParams.get(`position`) || 0, ]; coords.join(':'); } if(document.querySelector('#galaxy_input').value == coords[0] && document.querySelector('#system_input').value == coords[1]) { let target = document.querySelectorAll('#galaxytable tbody tr')[parseInt(coords[2])-1]; if(target) target.classList.add('ogl-highlighted'); } document.querySelectorAll('a[data-coords]').forEach(a => { let hCoords = a.getAttribute('data-coords').split(':'); if(document.querySelector('#galaxy_input').value == hCoords[0] && document.querySelector('#system_input').value == hCoords[1]) { a.classList.add('ogl-active'); } else { a.classList.remove('ogl-active'); } }); } } toggleImage() { let btn = this.createDOM('a', {'class':'toggleHeader'}); let wrapper = document.querySelector('#supplies header, #facilities header, #research header, #defense header, #shipyard header'); if(wrapper) wrapper.appendChild(btn); btn.addEventListener('click', () => { this.json.options.headerDisabled[this.page] = this.json.options.headerDisabled[this.page] ? false : true; this.saveData(); if(this.json.options.headerDisabled[this.page]) { document.querySelector('.maincontent header').classList.add('ogl-shortHeader'); } else { document.querySelector('.maincontent header').classList.remove('ogl-shortHeader'); } }); if(this.json.options.headerDisabled[this.page]) { document.querySelector('.maincontent header').classList.add('ogl-shortHeader'); } } keepResources() { if(this.page == 'fleetdispatch') { fleetDispatcher.metalOnPlanet = Math.max(0, this.current.resources.metal - this.json.options.kept[0]); fleetDispatcher.crystalOnPlanet = Math.max(0, this.current.resources.crystal - this.json.options.kept[1]); fleetDispatcher.deuteriumOnPlanet = Math.max(0, this.current.resources.deut - this.json.options.kept[2]); fleetDispatcher.refresh(); document.querySelectorAll('#resources .res').forEach((element, index) => { let div = element.appendChild(this.createDOM('div', {'class':'ogl-keepRes tooltip', 'title':this.getTranslatedText(12)}, '<i class="material-icons">attach_money</i>')); let container = this.createDOM('div', {'class':'ogl-dialogContainer ogl-keptResources'}); container.appendChild(this.createDOM('h1', {}, this.getTranslatedText(25))); container.appendChild(this.createDOM('hr')); let input = container.appendChild(this.createDOM('input', {'type':'text', 'class':'ogl-formatInput'})); container.appendChild(this.createDOM('hr')); let button = container.appendChild(this.createDOM('button', {'class':'btn_blue'}, 'OK')); if(this.json.options.kept[index]) div.classList.add('ogl-active'); container.addEventListener('click', event => { event.preventDefault(); event.stopPropagation(); }); div.addEventListener('click', () => { input.value = this.json.options.kept[index]; this.popup(false, container); }); button.addEventListener('click', () => { this.json.options.kept[index] = parseInt(this.removeNumSeparator(input.value, true)); this.saveData(); document.location.reload(); }); }); } } checkResources(params) { if(this.page != 'fleetdispatch') return; params = params || {}; this.FPSLoop('checkResources', params); if(fleetDispatcher.currentPage == 'fleet1') { if(fleetDispatcher.cargoMetal > 0 || fleetDispatcher.cargoCrystal > 0 || fleetDispatcher.cargoDeuterium > 0) { params.loop = true; params.resources = {'metal':fleetDispatcher.cargoMetal, 'crystal':fleetDispatcher.cargoCrystal, 'deut':fleetDispatcher.cargoDeuterium}; } } else if(fleetDispatcher.currentPage == 'fleet2') { if(params.loop) { params.loop = false; this.fillFret({'resources':params.resources}); } } else if(fleetDispatcher.currentPage == 'fleet3') { let max = this.current.resources.deut - this.json.options.kept[2] - fleetDispatcher.getConsumption(); if(fleetDispatcher.cargoDeuterium > max) { fleetDispatcher.cargoDeuterium = Math.max(0, max); fleetDispatcher.refresh(); } } } checkInputs() { this.FPSLoop('checkInputs'); if(this.page == 'fleetdispatch') { document.querySelectorAll('.technology input').forEach(i => i.classList.add('ogl-formatInput')); } document.querySelectorAll('input.ogl-formatInput').forEach(input => { if(input.value) { input.value = input.value.toLowerCase().replace(/m/g, '000000').replace(/k/g, '000'); input.value = parseInt(this.removeNumSeparator(input.value, true)).toLocaleString('de-DE'); } }); } checkStorage() { if(this.current.isMoon) return; let getData = box => { let data = box.getAttribute('title') || box.getAttribute('data-title'); let splitted = data.replace(/\./g, '').match(/\d+/g); let timeLeft = splitted[2] > 0 ? Math.floor((splitted[1] - splitted[0]) / splitted[2]) || 0 : 0; let day = Math.floor(timeLeft / 24); let hour = Math.floor(timeLeft % 24); box.querySelector('.resourceIcon').appendChild(this.createDOM('div', {'class':'ogl-resTimeLeft'}, day + 'j ' + hour + 'h')); } ['metal', 'crystal', 'deut'].forEach(type => { let target = document.querySelector(`#${type.replace('deut', 'deuterium')}_box`); target.querySelector('.value').classList.add('ogl-' + type); getData(target); }); } jumpGateTimer() { let self = this; jumpgateDone = function(data) { var data = $.parseJSON(data); if(data["status"]) { planet = data["targetMoon"]; $('.overlayDiv').dialog('destroy'); let originCoords = self.current.coords; let originLevel = self.current.planet.querySelector('.moonlink').getAttribute('data-jumpgatelevel'); let originTimer = (0.25*Math.pow(originLevel,2)-7.57*originLevel+67.34)/self.fleetSpeed * 60000; let destinationCoords = document.querySelector(`.moonlink[href*="${jumpGateTargetId}"]`).parentNode.querySelector('.planet-koords').textContent.slice(1, -1); let destinationLevel = document.querySelector(`.moonlink[href*="${jumpGateTargetId}"]`).getAttribute('data-jumpgatelevel'); let destinationTimer = (0.25*Math.pow(destinationLevel,2)-7.57*destinationLevel+67.34)/self.fleetSpeed * 60000; let now = Date.now(); self.json.jumpGateTimers[originCoords] = now + originTimer; self.json.jumpGateTimers[destinationCoords] = now + destinationTimer; self.saveData(); } errorBoxAsArray(data["errorbox"]); if (typeof data.newToken != 'undefined') { setNewTokenData(data.newToken); } } this.planetList.forEach(planet => { let coords = planet.querySelector('.planet-koords').textContent.slice(1, -1); if(this.json.jumpGateTimers[coords] && this.json.jumpGateTimers[coords] > Date.now()) { let updateTimer = () => new Date(this.json.jumpGateTimers[coords] - (Date.now() + 3600000)).toLocaleTimeString().substr(3); let timer = updateTimer(); let div = planet.appendChild(this.createDOM('div', {'class':'ogl-jumpGateTimer'}, timer)); let interval = setInterval(() => { if(this.json.jumpGateTimers[coords] <= Date.now()) clearInterval(interval); else div.textContent = updateTimer(); }, 1000); } }); } checkShipsOnPlanet() { if(this.page != 'fleetdispatch' || document.querySelector('#fleet1 #warning')) return; let shipsId = [202,203,204,205,206,207,211,213,214,215,218,219]; let url = new URLSearchParams(window.location.search); shipsId.forEach(shipID => { let required = parseInt(url.get('am'+shipID)) || 0; let amount = parseInt(document.querySelector(`.technology[data-technology="${shipID}"] .amount`).getAttribute('data-value')); if(amount < required) { document.querySelector(`.technology[data-technology="${shipID}"]`).classList.add('ogl-notEnough'); } }); } checkTop() { if(this.json.lastScoreCheck < Date.now() - 86400000) { let parser = new DOMParser(); let http = new XMLHttpRequest(); if (window.location.href.indexOf('https') > -1) { http.open('GET', 'https://' + window.location.host + '/api/serverData.xml'); } else { http.open('GET', 'http://' + window.location.host + '/api/serverData.xml'); } http.send(); http.onreadystatechange = () => { if(http.readyState === XMLHttpRequest.DONE && http.status === 200) { let xml = parser.parseFromString(http.responseText, 'text/xml'); this.json.topScore = parseInt(xml.querySelector('topScore').innerHTML); this.json.lastScoreCheck = Date.now(); this.saveData(); } } } } draggableItems() { document.querySelectorAll('.ogl-draggable').forEach(e => { let id = e.getAttribute('id'); this.json.options.draggable[id] = this.json.options.draggable[id] || {'x':0, 'y':0}; this.saveData(); e.style.left = this.json.options.draggable[id].x + 'px'; e.style.top = this.json.options.draggable[id].y + 'px'; document.body.addEventListener('dragover', event => event.preventDefault()); e.addEventListener('dragstart', event => { let x = this.json.options.draggable[id].x - event.clientX; let y = this.json.options.draggable[id].y - event.clientY; event.dataTransfer.setData("text/plain", `${x},${y}`); }, false); document.body.addEventListener('drop', event => { let offset = event.dataTransfer.getData("text/plain").split(','); let x = event.clientX + parseInt(offset[0],10); let y = event.clientY + parseInt(offset[1],10); this.json.options.draggable[id] = {'x':x, 'y':y}; this.saveData(); e.style.left = this.json.options.draggable[id].x + 'px'; e.style.top = this.json.options.draggable[id].y + 'px'; event.preventDefault(); }, false); }); } selectShips(shipID, amount) { if(this.page == 'fleetdispatch') { fleetDispatcher.shipsOnPlanet.forEach(ship => { if(ship.id == shipID) { if(amount > ship.number) { amount = ship.number; document.querySelector(`.technology[data-technology="${ship.id}"]`).classList.add('ogl-notEnough'); } fleetDispatcher.selectShip(parseInt(shipID), parseInt(amount)); fleetDispatcher.refresh(); if(document.querySelector('#continueToFleet2')) document.querySelector('#continueToFleet2').focus(); } }); } return amount; } preselectShips() { if(this.page == 'fleetdispatch') { fleetDispatcher.shipsOnPlanet.forEach(ship => { let param = this.rawURL.searchParams.get(`am${ship.id}`); if(param) { this.selectShips(ship.id, param); } }); } } calcNeededShips(options) { options = options || {}; // get resources let resources = [this.removeNumSeparator(document.querySelector('#resources_metal').textContent), this.removeNumSeparator(document.querySelector('#resources_crystal').textContent), this.removeNumSeparator(document.querySelector('#resources_deuterium').textContent)]; resources = resources.reduce((a, b) => parseInt(a) + parseInt(b)); if(options.resources || options.resources == 0) resources = options.resources; let type = options.fret || this.json.options.fret; let fret; if(type == 202) { fret = this.json.ptFret; } else if(type == 203) { fret = this.json.gtFret; } else if(type == 219) { fret = this.json.pfFret; } let total = resources / fret; if(options.moreFret) total *= 107 / 100; return Math.ceil(total); } calcAvailableFret(shipAmount) { let fret = this.json.options.fret == 203 ? this.json.gtFret : this.json.ptFret; return shipAmount * fret; } saveData() { localStorage.setItem('ogl-data', JSON.stringify(this.json)); } createDOM(element, options, content, clickCallback) { let e = document.createElement(element); for(var key in options) { e.setAttribute(key, options[key]); } if(content || content == 0) e.innerHTML = content; if(clickCallback) { e.addEventListener('click', () => clickCallback()); } return e; } formatToUnits(value, forced) { let precision; if(value == 0 || forced == 0 || value < 1000) precision = 0; else if(value < 1000000 || forced == 1) precision = 1; else if(value < 1000000000 || forced == 2) precision = 2; else precision = 3; if(isNaN(value)) return value; const abbrev = ['', 'k', 'M', 'Md', 't']; const unrangifiedOrder = Math.floor(Math.log10(Math.abs(value)) / 3); const order = Math.max(0, Math.min(unrangifiedOrder, abbrev.length-1)); const suffix = abbrev[order]; return (value / Math.pow(10, order * 3)).toFixed(precision) + suffix; } formatFromUnits(value) { value = value.toLowerCase(); value = value.replace(/m/g, '000000').replace(/k/g, '000'); return value; } cleanValue(value) { if(this.separatorLangType == 0) { if(value.indexOf('Md') > -1) { if(value.indexOf(',') == -1) { value = value.replace('Md', '.000Md'); } value = value.replace(/\Md/g, '').replace(/\,/g, '.'); value = value.split('.'); value[1] = value[1].padEnd(9, '0'); value = value.join(); value = value.replace(/\,/g, ''); } else if(value.indexOf('M') > -1) { if(value.indexOf(',') == -1) { value = value.replace('M', '.000M'); } value = value.replace(/\M/g, '').replace(/\,/g, '.'); value = value.split('.'); value[1] = value[1].padEnd(6, '0'); value = value.join(); value = value.replace(/\,/g, ''); } else { value = value.replace(/\./g, ''); } } else { if(value.indexOf('Md') > -1) { if(value.indexOf('.') == -1) { value = value.replace('Md', '.000Md'); } value = value.replace(/\Md/g, '').replace(/\,/g, '.'); value = value.split('.'); value[1] = value[1].padEnd(9, '0'); value = value.join(); value = value.replace(/\,/g, ''); } else if(value.indexOf('Mn') > -1) { if(value.indexOf('.') == -1) { value = value.replace('Mn', '.000Mn'); } value = value.replace(/\Mn/g, '').replace(/\,/g, '.'); value = value.split('.'); value[1] = value[1].padEnd(6, '0'); value = value.join(); value = value.replace(/\,/g, ''); } else { value = value.replace(/\./g, ''); } } return parseInt(value); } addStyle(option, style) { if(option != 'disabled') { GM_addStyle(style); } } callAPI(url) { let http = new XMLHttpRequest(); http.open('GET', url); http.send(); return http; } removeNumSeparator(str, forced) { if(this.separatorLangType == 0 || forced) { return str.replace(/\./g, ''); } else { return str.replace(/\,/g, ''); } } addKeyboardAction(key, text, callback) { this.keyboardActionsList[key] = callback; if(!document.querySelector('.ogl-tipsList')) { let container; if(this.page == 'movement') container = document.querySelector('#movement .fleetStatus'); else if(this.page == 'fleetdispatch') container = document.querySelector('#allornone') || document.querySelector('#fleet1 #warning'); else if(this.page == 'galaxy') container = document.querySelector('#galaxycomponent'); else return; container.appendChild(this.createDOM('div', {'class':'ogl-tipsList'})); } let tip = document.querySelector('.ogl-tipsList').appendChild(this.createDOM('div', {'class':'ogl-tips'}, text)); tip.appendChild(this.createDOM('div', {'class':'ogl-keyboard'}, key.toUpperCase())); tip.addEventListener('click', () => callback()); } keyboardActions() { if(this.page == 'fleetdispatch') { let sent = false; let sendAction = () => { if(!this.selectUpcomingTarget) return; this.json.markers[this.json.options.nextTarget].attacked = Date.now(); this.json.options.nextTarget = this.upcomingTarget || ''; this.saveData(); }; document.addEventListener('keydown', event => { if((!document.querySelector('.ui-dialog') || document.querySelector('.ui-dialog').style.display == 'none') && !document.querySelector('.chat_box_textarea:focus')) { if(!sent && fleetDispatcher.currentPage == 'fleet3') { let keycode = event.keyCode ? event.keyCode : event.which; if(keycode == 13) sendAction(); } } }); document.querySelector('#sendFleet').addEventListener('click', () => { if(!sent) sendAction(); }); } let actionSkip = () => { if(this.mode == 3 || this.mode == 5) { window.location.href = this.keyboardActionSkip; return; } let nextElement = this.current.planet.nextElementSibling || document.querySelectorAll('.smallplanet')[0]; if(this.current.isMoon && !nextElement.querySelector('.moonlink')) { do nextElement = nextElement.nextElementSibling || document.querySelectorAll('.smallplanet')[0]; while(!nextElement.querySelector('.moonlink')); } let cp; if(this.current.isMoon) cp = new URL(nextElement.querySelector('.moonlink').href).searchParams.get('cp'); else cp = new URL(nextElement.querySelector('.planetlink').href).searchParams.get('cp'); let url = new URL(window.location.href); url.searchParams.delete('cp'); url.searchParams.set('cp', cp); window.location.href = url.href; } let actionAll = () => { if(fleetDispatcher.currentPage == 'fleet1') document.querySelector('#sendall').click(); else if(fleetDispatcher.currentPage == 'fleet3') document.querySelector('#allresources').click(); } let actionExpe = shipID => { let main = this.json.options.expeType; let sub = this.json.options.expeSubType; this.json.options.expeType = shipID; this.json.options.expeSubType = 0; document.querySelector('.ogl-prefab').click(); this.json.options.expeType = main; this.json.options.expeSubType = sub; } let actionFastGhosting = () => { document.querySelector('#sendall').click(); document.querySelector('#allresources').click(); let coords = this.current.coords.split(':'); fleetDispatcher.targetPlanet.galaxy = coords[0]; fleetDispatcher.targetPlanet.system = coords[1]; fleetDispatcher.targetPlanet.position = coords[2]; fleetDispatcher.targetPlanet.type = 2; fleetDispatcher.targetPlanet.name = '-'; fleetDispatcher.mission = 8; fleetDispatcher.refresh(); } let actionTarget = () => { let coords = this.json.options.nextTarget.split(':'); this.selectShips(this.json.options.fret, this.calcNeededShips({'resources':this.json.options.rvalLimit})); fleetDispatcher.targetPlanet.galaxy = coords[0]; fleetDispatcher.targetPlanet.system = coords[1]; fleetDispatcher.targetPlanet.position = coords[2]; fleetDispatcher.targetPlanet.type = 1; fleetDispatcher.targetPlanet.name = '-'; fleetDispatcher.mission = 1; fleetDispatcher.refresh(); this.selectUpcomingTarget = true; } if(this.page == 'fleetdispatch' && document.querySelector('#allornone')) { this.addKeyboardAction('a', this.getTranslatedText(32), actionAll); this.addKeyboardAction('n', this.getTranslatedText(39), () => document.querySelector('#resetall').click()); this.addKeyboardAction('r', this.getTranslatedText(38), () => document.querySelectorAll('.ogl-deltaFleet').forEach(e => e.click())); this.addKeyboardAction('e', this.getTranslatedText(36), () => document.querySelector('.ogl-prefab').click()); this.addKeyboardAction('s', this.getTranslatedText(59), () => actionExpe(202)); this.addKeyboardAction('l', this.getTranslatedText(37), () => actionExpe(203)); this.addKeyboardAction('o', this.current.isMoon ? this.getTranslatedText(40) : this.getTranslatedText(9), actionSkip); this.addKeyboardAction('g', this.getTranslatedText(60), () => actionFastGhosting()); if(this.json.options.nextTarget != '0:0:0') this.addKeyboardAction('t', this.getTranslatedText(61) + ` [${this.json.options.nextTarget}]`, () => actionTarget()); } else if(this.page == 'fleetdispatch' && document.querySelector('#fleet1 #warning')) { this.addKeyboardAction('o', this.current.isMoon ? this.getTranslatedText(40) : this.getTranslatedText(9), actionSkip); } else if(this.page == 'galaxy') { this.addKeyboardAction('z', this.getTranslatedText(54), () => submitOnKey(38)); this.addKeyboardAction('s', this.getTranslatedText(53), () => submitOnKey(40)); this.addKeyboardAction('q', this.getTranslatedText(55), () => submitOnKey(37)); this.addKeyboardAction('d', this.getTranslatedText(56), () => submitOnKey(39)); } document.addEventListener('keydown', event => { for(const key in this.keyboardActionsList) { let keycode = event.keyCode ? event.keyCode : event.which; if((!document.querySelector('.ui-dialog') || document.querySelector('.ui-dialog').style.display == 'none') && !document.querySelector('.chat_box_textarea:focus')) { if(key.toUpperCase() == String.fromCharCode(keycode)) this.keyboardActionsList[key](); } } }); } FPSLoop(callbackAsString, params) { setTimeout(() => { requestAnimationFrame(() => this[callbackAsString](params)); }, 1000 / 20); } tooltip(sender, content, autoHide, side, timer) { side = side || {}; timer = timer || 200; let tooltip = document.querySelector('.ogl-tooltip'); document.querySelector('.ogl-tooltip > div') && document.querySelector('.ogl-tooltip > div').remove(); let close = document.querySelector('.close-tooltip'); let oldSender = document.querySelector('.ogl-senderActive'); oldSender && oldSender.classList.remove('ogl-senderActive'); sender.classList.add('ogl-senderActive'); if(!tooltip) { tooltip = document.body.appendChild(this.createDOM('div', {'class':'ogl-tooltip tpd-tooltip'})); close = tooltip.appendChild(this.createDOM('a', {'class':'close-tooltip'})); close.addEventListener('click', () => tooltip.classList.remove('ogl-active')); document.body.addEventListener('click', event => { if(!event.target.getAttribute('rel') && !event.target.closest('.tooltipRel') && !event.target.classList.contains('ogl-colors') && !tooltip.contains(event.target) && !event.target.classList.contains('ogl-senderActive')) { tooltip.classList.remove('ogl-active'); } }); document.body.addEventListener('scroll', () => tooltip.classList.remove('ogl-active')); } // remove old tooltip classes if(sender != this.oldSender) tooltip.classList.remove('ogl-active'); tooltip.classList.remove('ogl-autoHide'); tooltip.classList.remove('ogl-tooltipLeft'); tooltip.classList.remove('ogl-tooltipRight'); tooltip.classList.remove('ogl-tooltipBottom'); this.oldSender = sender; // tooltip position let rect = sender.getBoundingClientRect(); let win = sender.ownerDocument.defaultView; let position = { x:rect.left + win.pageXOffset, y:rect.top + win.pageYOffset }; if(side.left) { tooltip.classList.add('ogl-tooltipLeft'); position.y -= 20; position.y += rect.height / 2; } else if(side.right) { tooltip.classList.add('ogl-tooltipRight'); position.x += rect.width; position.y -= 20; position.y += rect.height / 2; } else if(side.bottom) { tooltip.classList.add('ogl-tooltipBottom'); position.x += rect.width / 2; position.y += rect.height; } else { position.x += rect.width / 2; } if(sender.classList.contains('tooltipOffsetX')) { position.x += 42; } if(autoHide) { tooltip.classList.add('ogl-autoHide'); } content.querySelectorAll('.tooltip').forEach(e => { e.classList.remove('tooltip'); }); // display tooltip tooltip.appendChild(content); tooltip.style.top = position.y + 'px'; tooltip.style.left = position.x + 'px'; this.tooltipTimer = setTimeout(() => tooltip.classList.add('ogl-active'), timer); if(!sender.classList.contains('ogl-tooltipInit')) { sender.classList.add('ogl-tooltipInit'); sender.addEventListener('mouseleave', event => { if(autoHide) { tooltip.classList.remove('ogl-active'); } clearTimeout(this.tooltipTimer); }); } return tooltip; } popup(header, content) { let overlay = document.querySelector('.ogl-dialogOverlay'); if(!overlay) { overlay = document.body.appendChild(this.createDOM('div', {'class':'ogl-dialogOverlay'})); overlay.addEventListener('click', event => overlay.classList.remove('ogl-active')); } let dialog = overlay.querySelector('.ogl-dialog'); if(!dialog) { dialog = overlay.appendChild(this.createDOM('div', {'class':'ogl-dialog'})); let close = dialog.appendChild(this.createDOM('div', {'class':'close-tooltip'})); close.addEventListener('click', () => overlay.classList.remove('ogl-active')); dialog.addEventListener('click', event => { event.preventDefault(); event.stopPropagation(); }); } let top = dialog.querySelector('header') || dialog.appendChild(this.createDOM('header')); let body = dialog.querySelector('.ogl-dialogContent') || dialog.appendChild(this.createDOM('div', {'class':'ogl-dialogContent'})); top.innerHTML = ''; body.innerHTML = ''; if(header) { top.appendChild(header); } if(content) { body.appendChild(content); } overlay.classList.add('ogl-active'); } betterTooltip() { this.FPSLoop('betterTooltip'); let eventAction = this.isMobile ? 'touchstart' : 'mouseenter'; if(this.page == 'galaxy') { // tooltipRel galaxy document.querySelectorAll('.tooltipRel').forEach(sender => { if(sender.getAttribute('rel').indexOf('player') == 0) { if(!sender.classList.contains('ogl-stalkReady')) { this.stalk(sender); } } }); if(document.querySelector('#galaxytable:not(.ogl-ready)')) { document.querySelector('#galaxytable').classList.add('ogl-ready'); document.querySelector('.ogl-tooltip') && document.querySelector('.ogl-tooltip').classList.remove('ogl-active'); this.tooltipList = {}; } } document.querySelectorAll('.tooltip, .tooltipLeft, .tooltipRight, .tooltipBottom, .tooltipClose, .tooltipHTML, .tooltipRel, .tooltipCustom').forEach(sender => { if(!sender.classList.contains('ogl-tooltipReady') && !sender.classList.contains('ogl-stalkReady') && !sender.classList.contains('activity')) { sender.classList.add('ogl-tooltipReady'); sender.addEventListener(eventAction, () => { let content; let appendMode = false; if(sender.classList.contains('tooltipRel')) { let id = '#' + sender.getAttribute('rel'); if(id == '#demolition_costs_tooltip_oneTimeelement' && document.querySelector(id)) this.tooltipList[id] = document.querySelector(id); this.tooltipList[id] = this.tooltipList[id] || document.querySelector(id); content = this.tooltipList[id]; appendMode = true; } else { content = sender.getAttribute('data-title'); } if(!content) { content = sender.getAttribute('title'); if(!content) return; sender.setAttribute('data-title', content); } if(content.style && content.style.display == 'none') { content.style.display = 'block'; } sender.removeAttribute('title'); if(sender.classList.contains('tooltipHTML')) { content = content.replace('|', '<hr>'); } if(sender.classList.contains('planetlink')) { sender.classList.remove('tooltipLeft'); sender.classList.add('tooltipRight'); sender.classList.add('tooltipOffsetX'); } if(sender.parentNode.getAttribute('id') == 'playerName') { sender.classList.remove('tooltip'); sender.classList.add('tooltipBottom'); } if(sender.getAttribute('id') && sender.getAttribute('id').indexOf('route_') == 0) { sender.classList.add('tooltipRight'); } if(sender.classList.contains('resource_list_el')) { sender.classList.remove('tooltipCustom'); } let div = this.createDOM('div'); appendMode ? div.appendChild(content) : div.innerHTML = content; let side = {}; side.left = sender.classList.contains('tooltipLeft'); side.right = sender.classList.contains('tooltipRight'); side.bottom = sender.classList.contains('tooltipBottom'); let autoHide = true; if(sender.classList.contains('tooltipClose') || sender.classList.contains('tooltipCustom')) { autoHide = false; } this.tooltip(sender, div, autoHide, side); }); } }); } utilities() { // fix top tooltips document.querySelectorAll('#resources .tooltipHTML, #commandercomponent .tooltipHTML').forEach(e => { e.classList.add('tooltipBottom'); }); if(this.page == 'fleetdispatch') { // speed slider document.querySelector('.steps').addEventListener('click', () => { document.querySelector('#continueToFleet3').focus(); }); document.querySelector('#speedPercentage').classList.add('ogl-hidden'); let slider = this.createDOM('div', {'class':'ogl-fleetSpeed'}); document.querySelector('#fleetBriefingPart1').appendChild(slider); let steps = this.json.playerClass == 2 ? .5 : 1; for(let i=steps; i<=10; i+=steps) { let step = slider.appendChild(this.createDOM('div', {'data-step':i}, i*10)); if(fleetDispatcher.speedPercent == i) step.classList.add('ogl-active'); } slider.addEventListener('click', event => { if(this.mode == 1 || this.mode == 3) document.querySelector('#allresources').click(); slider.querySelectorAll('div').forEach(e => e.classList.remove('ogl-active')); event.target.classList.add('ogl-active'); fleetDispatcher.speedPercent = event.target.getAttribute('data-step'); fleetDispatcher.refresh(); document.querySelector('#continueToFleet3').focus(); }); slider.addEventListener('mouseover', event => { fleetDispatcher.speedPercent = event.target.getAttribute('data-step'); fleetDispatcher.refresh(); }); slider.addEventListener('mouseout', event => { fleetDispatcher.speedPercent = slider.querySelector('.ogl-active').getAttribute('data-step'); fleetDispatcher.refresh(); }); // ship infos let data = fleetDispatcher.fleetHelper.shipsData; for(let id in data) { let infos = ` <div class="ogl-fleetInfo"> ${data[id].name} <hr> <div><span>Fret</span>${data[id].cargoCapacity.toLocaleString('de-DE')}</div> <div><span>${this.getTranslatedText(19)}</span>${data[id].speed.toLocaleString('de-DE')}</div> <div><span>Conso</span>${data[id].fuelConsumption.toLocaleString('de-DE')}</div> </div> `; let ship = document.querySelector(`.technology[data-technology="${id}"]`); if(ship) { ship.setAttribute('data-title', infos); ship.removeAttribute('title'); } } document.addEventListener('keydown', event => { let valid = false; if((!document.querySelector('.ui-dialog') || document.querySelector('.ui-dialog').style.display == 'none') && !document.querySelector('.chat_box_textarea:focus')) { valid = true; } // preselect fleet if(fleetDispatcher.currentPage == 'fleet1') { if(fleetDispatcher.shipsToSend.length == 0) { let keycode = event.keyCode ? event.keyCode : event.which; if(keycode == 13 && valid) { let needed = document.querySelector(`.technology[data-technology="${this.json.options.fret}"] .ogl-needed`); if(needed) needed.click(); } } } // preselect associated moon/planet if(fleetDispatcher.currentPage == 'fleet2' && fleetDispatcher.currentPlanet.galaxy == fleetDispatcher.targetPlanet.galaxy && fleetDispatcher.currentPlanet.system == fleetDispatcher.targetPlanet.system && fleetDispatcher.currentPlanet.position == fleetDispatcher.targetPlanet.position && fleetDispatcher.currentPlanet.type == fleetDispatcher.targetPlanet.type) { let keycode = event.keyCode ? event.keyCode : event.which; if(keycode == 13 && valid) { fleetDispatcher.targetPlanet.type = fleetDispatcher.targetPlanet.type == 1 ? 3 : 1; if(!fleetDispatcher.mission) fleetDispatcher.mission = this.json.options.harvestMission; fleetDispatcher.refresh(); } } }); if(document.querySelector('#continueToFleet2')) document.querySelector('#continueToFleet2').focus(); } if(this.page == 'movement') { document.querySelectorAll('.fleetDetails').forEach(fleet => { if(!fleet.querySelector('.reversal')) return; let back = fleet.querySelector('.reversal a').title || fleet.querySelector('.reversal a').getAttribute('data-title'); let splitted = back.split('|')[1].replace('<br>', '/').replace(/:|\./g, '/').split('/'); let backDate = { 'year':splitted[2], 'month':splitted[1], 'day':splitted[0], 'h':splitted[3], 'm':splitted[4], 's':splitted[5], } let baseBack = new Date(backDate.year, backDate.month, backDate.day, backDate.h, backDate.m, backDate.s).getTime(); let baseTime = Date.now(); let currentTime = Date.now(); let content = fleet.querySelector('.starStreak').appendChild(this.createDOM('div', {'class':'ogl-backTimer'})); let updateTimer = () => { currentTime = Date.now(); let newTimestamp = baseBack + (currentTime - baseTime) * 2; let date = new Date(newTimestamp); content.innerHTML = `<div>${date.toLocaleDateString('fr-FR')}</div><div>${date.toLocaleTimeString()}</div>`; } updateTimer(); setInterval(() => updateTimer(), 300); }); } // display the date when the building/tech/ship/def end document.querySelectorAll('#buildingCountdown, #researchCountdown, #shipyardCountdown2').forEach(timer => { let timeLeft = 0; if(timer.getAttribute('id') == 'buildingCountdown') { timeLeft = restTimebuilding * 1000; } else if(timer.getAttribute('id') == 'researchCountdown') { timeLeft = restTimeresearch * 1000; } else if(timer.getAttribute('id') == 'shipyardCountdown2') { timeLeft = restTimeship2 * 1000; } let newDate = new Date(Date.now() + timeLeft); timer.parentNode.appendChild(this.createDOM('div', {'class':'ogl-buildingTimeLeft', 'data-time':timeLeft}, `<span>${newDate.toLocaleDateString('fr-FR')}</span> - ${newDate.toLocaleTimeString().slice(0,-3)}`)); }); } loopUtilities() { this.FPSLoop('loopUtilities'); if(this.page == 'fleetdispatch') { if(!fleetDispatcher.mission && fleetDispatcher.currentPage == 'fleet3') { // select expedition mission if(!fleetDispatcher.mission && fleetDispatcher.targetPlanet.position == 16) { fleetDispatcher.mission = 15; fleetDispatcher.expeditionTime = 1; } // select unique mission available if(!fleetDispatcher.mission && document.querySelectorAll('#missions .on').length == 1) { document.querySelectorAll('#missions .on')[0].querySelector('a').click(); } fleetDispatcher.refresh(); } // add fret on fleet1 if(fleetDispatcher.currentPage == 'fleet1' && document.querySelector('#civilships')) { let div = document.querySelector('#civilships .ogl-fret'); if(!div) { div = document.querySelector('#civilships').appendChild(this.createDOM('div', {'class':'ogl-fret tooltip', 'title':this.getTranslatedText(57)})); div.addEventListener('click', () => { let wantedFret = prompt(this.getTranslatedText(58, true), '10k'); if(wantedFret) { let amount = this.calcNeededShips({'resources':this.formatFromUnits(wantedFret)}); this.selectShips(this.json.options.fret, amount); }; }); } let capacity = fleetDispatcher.getCargoCapacity(); if(this.oldCapacity == null || this.oldCapacity != capacity) { this.oldCapacity = capacity; let currentFret = capacity.toLocaleString('de-DE'); let neededFret = (fleetDispatcher.metalOnPlanet + fleetDispatcher.crystalOnPlanet + fleetDispatcher.deuteriumOnPlanet).toLocaleString('de-DE'); let totalFret = 0; fleetDispatcher.shipsOnPlanet.forEach(s => { totalFret += s.baseCargoCapacity * s.number; }); totalFret = totalFret.toLocaleString('de-DE'); div.innerHTML = ` <div>${this.getTranslatedText(27)}: <b>${neededFret}</b></div> <div>${this.getTranslatedText(28)}: <b>${totalFret}</b></div> <div>${this.getTranslatedText(29)}: <b>${currentFret}</b></div> `; } } } if(this.page == 'galaxy') { if(document.querySelector('a[onclick*="sendShips"')) { let ships = document.querySelector('a[onclick*="sendShips"').getAttribute('onclick').match(/\d+/g).map(Number); if(ships[0] == 6) this.json.spyProbes = ships[5]; } } // display build time if(this.page == 'shipyard' || this.page == 'defenses') { let detail = document.querySelector('#technologydetails'); if(detail && detail.querySelector('#build_amount')) { if(!detail.querySelector('.ogl-buildTime')) { let baseTime = detail.querySelector('time').getAttribute('datetime').replace('PT', ''); let totalTime = 0; let indexArr = baseTime.match(/\D+/g).map(String); let valueArr = baseTime.match(/\d+/g).map(Number); valueArr.forEach((value, index) => { if(indexArr[index] == "DT") totalTime += value * 86400; if(indexArr[index] == "H") totalTime += value * 3600; if(indexArr[index] == "M") totalTime += value * 60; if(indexArr[index] == "S") totalTime += value; }); let buildTime = detail.querySelector('.information').appendChild(this.createDOM('div', {'class':'ogl-buildTime'}, '<span>-</span>')); // officer fix detail.querySelector('#build_amount').setAttribute('onkeyup', 'checkIntInput(this, 1, 99999);event.stopPropagation();'); let updateTime = () => { setTimeout(() => { let timestamp = Date.now() + totalTime * detail.querySelector('#build_amount').value * 1000; if(document.querySelector('#shipyardCountdown2 + .ogl-buildingTimeLeft')) { timestamp = parseInt(document.querySelector('#shipyardCountdown2 + .ogl-buildingTimeLeft').getAttribute('data-time')) + timestamp; } timestamp = new Date(timestamp); let newDate = `${timestamp.toLocaleDateString('fr-FR')} - <span>${timestamp.toLocaleTimeString()}</span>`; buildTime.innerHTML = newDate; detail.querySelectorAll('.costs li').forEach(res => { let resValue = res.getAttribute('data-value') * Math.max(detail.querySelector('#build_amount').value, 1); if((res.classList.contains('metal') && this.current.resources.metal >= resValue) || (res.classList.contains('crystal') && this.current.resources.crystal >= resValue) || (res.classList.contains('deuterium') && this.current.resources.deut >= resValue)) { res.classList.add('ogl-active'); res.classList.remove('ogl-noMoney'); } else { res.classList.remove('ogl-active'); res.classList.add('ogl-noMoney'); } res.setAttribute('data-total', resValue); res.textContent = this.formatToUnits(resValue); }); }, 200); } detail.querySelector('.maximum') && detail.querySelector('.maximum').addEventListener('click', () => updateTime()); detail.querySelector('#build_amount').addEventListener('keyup', () => updateTime()); } } } // add jumpgate reverse selection button if(document.querySelector('#jumpgateForm') && !document.querySelector('#jumpgateForm').classList.contains('ogl-ready')) { document.querySelector('#jumpgateForm').classList.add('ogl-ready'); document.querySelectorAll('#jumpgateForm .ship_txt_row:not(.tdInactive)').forEach(ship => { ship.style.position = 'relative'; let delta = ship.appendChild(this.createDOM('div',{'class':'ogl-deltaFleet'}, '<i class="material-icons">fiber_smart_record</i>')); delta.addEventListener('click', event => { let input = ship.nextElementSibling.querySelector('input'); let selected = input.value.replace(/\./g, '') || 0; let amount = parseInt(input.getAttribute('rel')); input.value = amount - selected; }); }); } } getTranslatedText(id, raw) { let text = { 0 : [ "Gestion des données", "Manage data", "Διαχείριση δεδομένων", ], 1 : [ "Ouvrir la liste de cibles", "Open targets list", "Λίστα στόχων", ], 2 : [ "Alterne entre PT et GT comme type de vaisseaux à utilser pour les envois de ressources", "Switch between SC and LC as default ship to use for transporting resources", "Εναλλαγή μεταξύ μικρών(SC) και μεγάλων μεταγωγικών(LC) ως προεπιλεγμένου πλοίου για τη μεταφορά πόρων", ], 3 : [ "Alterne entre transport et stationnement comme type de mission à utiliser pour les rapatriements", "Switch between transport and deployment as default mission to use for transporting resources", "Εναλλαγή μεταξύ μεταφοράς και παράταξης ως προεπιλεγμένης αποστολής που χρησιμοποιείται για τη μεταφορά πόρων", ], 4 : [ "Rapatrie les ressources vers la planète/lune ciblée", "Send resources to the target planet/moon", "Αποστολή πόρων στον στόχο πλανήτη/φεγγάρι", ], 5 : [ "Afficher/masquer les cibles", "Show ignored targets", "Εμφάνιση αγνοουμένων στόχων", ], 6 : [ "Rentabilité minimale d'une cible pour être considéré comme intéressante", "Minimal target rentability to be considered as interesting", "To ελάχιστo κέρδος του στόχου που πρέπει να θεωρείται ενδιαφέρον", ], 7 : [ "Active/désactive la suppression automatique des rapports inintéréssants", "Toggle automatic removal of low rentability reports", "Εναλλαγή αυτόματης κατάργησης αναφορών χαμηλής απόδοσης", ], 8 : [ "Active/désactive le tableau d'espionnage", "Toggle spy table", "Εναλλαγή πίνακα κατασκοπείας", ], 9 : [ "Planète suivante", "Next planet", "Next planet", ], 10 : [ "Envoyer vers...", "Send to...", "Αποστολή σε..." ], 11 : [ "Active/désactive la vue compacte", "Toggle compact view", "Εναλλαγή συμπαγούς προβολής", ], 12 : [ "Quantité de ressources à laisser ici", "Amount of resources that stays here", "Ποσό πόρων που θα μένει εδώ", ], 13 : [ "Liste des cibles", "Targets list", "Λίστα στόχων", ], 14 : [ "Aucun résultat trouvé", "No data found", "Δε βρέθηκαν δεδομένα", ], 15 : [ "PT", "SC", "SC", ], 16 : [ "GT", "LC", "LC", ], 17 : [ "Epingler ces données", "Pin this data", "Καρφίτσωμα δεδομένων", ], 18 : [ "Ressources en vol", "In flight resources", "Πόροι σε πτήση", ], 19 : [ "Vit.", "Speed", "Ταχύτητα", ], 20 : [ "Espionner la planète", "Spy planet", "Κατασκοπεία πλανήτη", ], 21 : [ "Espionner la lune", "Spy moon", "Κατασκοπεία φεγγαριού", ], 22 : [ "Attaquer la planète", "Attack planet", "Επίθεση σε πλανήτη", ], 23 : [ "Technologie hyperespace", "Hyperspace technology", "Υπερδιαστημική Τεχνολογία", ], 24 : [ "Seuil rentabilité (RVal)", "Rentability threshold (RVal)", "Rentability threshold (RVal)", ], 25 : [ "Quantité de ressources à garder", "Resources amount to keep", "Πόροι που πρέπει να κρατηθούν", ], 26 : [ "Rappel", "Recall", "Ανάκληση", ], 27 : [ "Frêt nécessaire", "Required capacity", "Απαιτούμενη χωρητικότητα", ], 28 : [ "Frêt max.", "Maximum capacity", "Μέγιστη χωρητικότητα", ], 29 : [ "Frêt actuel", "Current capacity", "Τρέχουσα χωρητικότητα", ], 30 : [ "EC", "PF", "PF", ], 31 : [ "Lunes associées", "Linked moons", "Συνδεδεμένα φεγγάρια", ], 32 : [ "Tous les vaisseaux", "Select all ships", "Επιλογή όλων των πλοίων", ], 33 : [ "Toutes les ressources", "Select all resources", "Επιλογή όλων των πόρων", ], 34 : [ "Planètes associées", "Linked planets", "Συνδεδεμένοι πλανήτες", ], 35 : [ "Supprimer les rapports d'espionnage contre moi", "Delete spy reports against me", "Διαγραφή των εναντίων μου κατασκοπευτικών αναφορών", ], 36 : [ "Expédition", "Expedition", "Expedition", ], 37 : [ "Expédition GT", "LC expedition", "LC expedition", ], 38 : [ "Inverser la selection", "Reverse selection", "Reverse selection", ], 39 : [ "Effacer la selection", "Reset selection", "Reset selection", ], 40 : [ "Lune suivante", "Next moon", "Next moon", ], 41 : [ "Ressources disponibles", "Available resources", "Available resources", ], 42 : [ "Points totaux", "Total points", "Total points", ], 43 : [ "Points éco", "Economy points", "Economy points", ], 44 : [ "Points tech", "Research points", "Research points", ], 45 : [ "Points flotte", "Fleet points", "Fleet points", ], 46 : [ "Points défense", "Defense points", "Defense points", ], 47 : [ "Disponible", "Available", "Available", ], 48 : [ "En vol", "In flight", "In flight", ], 49 : [ "Cumulé", "Full", "Full", ], 50 : [ "Configuration des expéditions", "Expeditions configuration", "Expeditions configuration", ], 51 : [ "Vaisseaux principaux", "Main ships", "Main ships", ], 52 : [ "Vaisseaux optionnels", "Optionnal ships", "Optionnal ships", ], 53 : [ "Galaxie précédente", "Previous galaxy", "Previous galaxy", ], 54 : [ "Galaxie suivante", "Next galaxy", "Next galaxy", ], 55 : [ "Système précédent", "Previous system", "Previous system", ], 56 : [ "Système suivant", "Next system", "Next system", ], 57 : [ "Cliquer pour sélectionner une valeur", "Click to select a value", "Click to select a value", ], 58 : [ "Frêt souhaîté", "Desired capacity", "Desired capacity", ], 59 : [ "Expédition PT", "SC expedition", "SC expedition", ], 60 : [ "Ghost rapide", "Fast ghosting", "Fast ghosting", ], 61 : [ "Cible", "Target", "Target", ], 62 : [ "Envoyer des ressources", "Send resources", "Send resources", ], 63 : [ "Définir le point de départ des pillages", "Set starting point", "Set starting point", ], 64 : [ "Vue par défaut", "Default view", "Default view", ], 65 : [ "Vue ressources", "Resources view", "Resources view", ], 66 : [ "Vue production (24h)", "Production view (24h)", "Production view (24h)", ], 67 : [ "Vue cibles", "Targets view", "Targets view", ], } let line = 1; if(this.gameLang == 'fr') line = 0; else if(this.gameLang == 'gr') line = 2; if(raw) return text[id][line]; else return '<span class="ogl-translated">'+text[id][line]+'</span>'; } importExport() { let container = this.createDOM('div', {'class':'ogl-dialogContainer ogl-importExport'}, '<h1>'+this.getTranslatedText(0, true)+'</h1>'); let text = container.appendChild(this.createDOM('textarea', {}, JSON.stringify(this.json))); text.addEventListener('click', () => text.select()); let header = this.createDOM('div', {'class':'ogl-mainTitle'}, `<h1>OGLight <b>(v${GM_info.script.version})</b></h1>`); // limit option container.appendChild(this.createDOM('hr')); container.appendChild(this.createDOM('span', {}, this.getTranslatedText(24, true))); let rvalInput = container.appendChild(this.createDOM('input', {'type':'text', 'class':'ogl-rvalInput ogl-formatInput tooltip', 'value':this.json.options.rvalLimit, 'title':this.getTranslatedText(6)})); container.appendChild(this.createDOM('hr')); container.appendChild(this.createDOM('span', {}, this.getTranslatedText(23, true))); container.appendChild(this.createDOM('span', {'class':'ogl-right'}, this.json.techs[114] || '?')); container.appendChild(this.createDOM('hr')); container.appendChild(this.createDOM('span', {}, 'Universe speed')); container.appendChild(this.createDOM('span', {'class':'ogl-right'}, `x${this.ecoSpeed}x${this.fleetSpeed}`)); container.appendChild(this.createDOM('hr')); container.appendChild(this.createDOM('span', {}, 'Universe top 1')); container.appendChild(this.createDOM('span', {'class':'ogl-right'}, this.formatToUnits(this.json.topScore)+' pts')); container.appendChild(this.createDOM('hr')); let importBtn = container.appendChild(this.createDOM('button', {'class':'btn_blue'}, 'Save')); importBtn.addEventListener('click', () => { this.json = JSON.parse(text.value); this.json.options.rvalLimit = parseInt(this.removeNumSeparator(rvalInput.value, true)); this.saveData(); document.location.reload(); }); let resetBtn = container.appendChild(this.createDOM('button', {'class':'btn_blue ogl-btn_red'}, 'Reset')); resetBtn.addEventListener('click', () => { let reset = confirm("Voulez vous vraiment supprimer les données d'OGLight ?"); if(reset) { this.json = {}; this.saveData(); document.location.reload(); } }); container.appendChild(this.createDOM('div', {'class':'clearfloat'})); this.popup(header, container); } } window.addEventListener ("DOMContentLoaded", () => { let oglight = new OGLight(); }); GM_addStyle(` :root { --main:#375879; --mainLight:#466c92; --hover:#9c6809; --hoverLight:#de991c; --active:#8e1b70; --activeLight:#ab2e8c; /* todo */ /* ultra(default) > medium > low */ --quality:url('//gf3.geo.gfsrv.net/cdn53/7a9861be0c38bf7de05a57c56d73cf.jpg'); /*--quality:url(https://i.imgur.com/nyR3GWA.jpg); --quality:url(https://i.imgur.com/PZSbneY.jpg);*/ } /* RIGHT MENU ------------------------------- */ #rechts { margin-top:-57px; } #countColonies { background:linear-gradient(to right, #1c2b38 45%, #090e13) !important; box-shadow:inset 0 11px rgba(255,255,255,.05), 0 0 0 1px; border-radius:0 0 4px 4px; font-size:10px; height:auto !important; line-height:22px !important; margin:0 !important; } #countColonies { color:transparent !important; } #countColonies p { text-align:left !important; text-indent:5px; } #countColonies span { color:#6f9fc8; } #countColonies p { cursor:pointer; } #countColonies p:hover:after { color:var(--hoverLight); } .smallplanet { border-radius:0 !important; display:grid; grid-gap:3px; grid-template-columns:auto 39px; height:auto !important; font-size:10px; margin:0 0 3px 0!important; position:relative !important; width:100% !important; } .smallplanet * { box-sizing:border-box; color:inherit !important; font-size:inherit !important; font-weight:normal !important; } .smallplanet img { background:#284563; border-radius:50% !important; box-shadow:0 0 0 1px #000 !important; height:14px; left:5px !important; margin:0 !important; position:absolute !important; top:12px !important; width:14px; z-index:2; } .smallplanet .planetlink, .smallplanet .moonlink { background:linear-gradient(to right, #1c2b38 45%, #090e13); background-position:0 !important; border:none !important; border-radius:4px; box-shadow:inset 0 1px rgba(255,255,255,.07), inset 0 13px rgba(255,255,255,0.03), inset 0 100px rgba(0,0,0,.15), 0 0 0 1px #000; height:39px !important; overflow:hidden; position:relative !important; z-index:1; } .smallplanet .planetlink.ogl-target, .smallplanet .moonlink.ogl-target { border:1px dashed #fff !important; } .smallplanet .planetlink { border-right:1px solid #000; left:0 !important; text-align:left; top:0 !important; } .smallplanet .moonlink { background:linear-gradient(to right, #1c2b38 -15px, #090e13); bottom:0 !important; color:#9e945b !important; left:0 !important; text-align:left; top:auto !important; } .smallplanet .planetlink:hover, .smallplanet .moonlink:hover { background:linear-gradient(to right, var(--hover), #090e13); z-index:10; } .smallplanet .planetlink.active, .smallplanet .moonlink.active { background:linear-gradient(to right, var(--active), #090e13); } .smallplanet .planetlink img { height:16px; top:11px !important; transition:top .2s; width:16px; } .smallplanet .moonlink img { filter:grayscale(1); } .planetlink .planet-name { color:#5a7f88 !important; display:inline-block; font-size:10px !important; font-weight:bold !important; left:28px !important; max-width:86px; overflow:hidden; position:absolute !important; text-overflow:ellipsis; top:7px !important; transition:transform .2s, opacity .2s; } .planetlink .planet-koords { bottom:7px !important; color:#e6de7b !important; font-size:9px !important; font-weight:bold !important; left:28px !important; line-height:10px; position:absolute !important; top:auto !important; transition:transform .2s, opacity .2s; } .planetlink .ogl-timer, .moonlink .ogl-timer { background:currentColor; border:1px solid #000; border-radius:50%; color:#cc5656 !important; content:''; height:7px; left:15px; position:absolute; top:22px; width:7px; } .planetlink .ogl-timer { left:16px; top:23px; } .planetlink .ogl-medium, .moonlink .ogl-medium { color:#ce9021 !important; } .planetlink .ogl-short, .moonlink .ogl-short { color:#36bb6c !important; } .planetlink .ogl-harvest, .moonlink .ogl-harvest { background:#19222b; border-radius:5px 0 0 0; bottom:0; color:rgba(255,255,255,.2) !important; font-size:14px !important; height:16px; right:0 !important; line-height:17px !important; position:absolute; right:auto; text-align:center; text-indent:0px; width:16px; z-index:5; } .planetlink .ogl-harvest:before, .moonlink .ogl-harvest:before { content:'arrow_back'; } .planetlink .ogl-harvest:hover, .moonlink .ogl-harvest:hover { background:var(--hover); color:#fff !important; } .smallplanet .constructionIcon { box-sizing:content-box; left:1px !important; padding:2px 1px; top:0px !important; transform:translateX(-100%); width:14px !important; z-index:10; } .smallplanet .constructionIcon.moon { top:16px !important; } .smallplanet .alert { left:7px !important; top:17px !important; z-index:10; } .smallplanet .alert.moon { left:auto !important; right:17px !important; } #planetList .moonlink img, #planetList .ogl-harvest, #rechts #planetList .ogl-timer:before { opacity:1; transform:translateX(0); transition:transform .2s, opacity .2s; } #rechts[data-panel="1"] #planetList .ogl-harvest, #rechts[data-panel="1"] #planetList .ogl-sideLock, #rechts[data-panel="2"] #planetList .ogl-harvest, #rechts[data-panel="2"] #planetList .ogl-sideLock, #planetList .ogl-timer:before { opacity:0; transform:translateX(5px); } #rechts[data-panel="1"] #planetList .planet-koords, #rechts[data-panel="1"] #planetList .planet-name, #rechts[data-panel="2"] #planetList .planet-koords, #rechts[data-panel="2"] #planetList .planet-name { opacity:0; transform:translateX(-5px); } #rechts[data-panel="1"] #planetList .ogl-timer { background:none; border:none; z-index:10; } #rechts[data-panel="1"] #planetList .ogl-timer:before { color:inherit; content:attr(data-timer)"'"; font-weight:bold; left:-15px; padding:0 1px; position:absolute; text-align:center; text-shadow:0 0 2px #000; top:0; width:23px; } #rechts[data-panel="1"] #planetList .smallplanet { grid-template-columns:auto 40%; } #planetList .ogl-metal, #planetList .ogl-crystal, #planetList .ogl-deut { opacity:0; position:absolute; right:5px; transform:translateX(-5px); transition:transform .2s, opacity .2s; } #planetList .ogl-metal { top:0px; } #planetList .ogl-crystal { top:13px; } #planetList .ogl-deut { top:26px; } #rechts[data-panel="1"] #planetList .ogl-stored, #rechts[data-panel="2"] #planetList .ogl-prod { opacity:1; transform:translateX(0); } #rechts[data-panel="1"] #planetList .smallplanet img { top:6px !important; } .planetlink .ogl-mineLvl { color:#6f8598 !important; font-weight:bold !important; left:32px; text-shadow:1px 1px #000; } #rechts[data-panel="2"] #planetList .planetlink .ogl-mineLvl { opacity:1; } /* GALAXY REDESIGN ------------------------------- */ #galaxytable { background:#0e1115; } #galaxytable tbody { border-spacing:1px; } #galaxytable tbody tr { background:linear-gradient(to left, #090e13, #191d21, #090e13); } #galaxytable tbody tr td { background:none !important; border-radius:0; box-shadow:inset 0 1px rgba(255,255,255,.07), inset 0 15px rgba(255,255,255,.03); outline:1px solid #000; text-shadow:1px 1px #000; filter:brightness(100%) !important; } #galaxytable tbody tr td.planetname { width:160px !important; } #galaxytable tbody tr td.action { width:83px !important; } #galaxytable tbody tr td.moon a { width:38px !important; } #galaxytable tbody tr td .moon_a { background-size:30px !important; width:100% !important; } #galaxytable .playername { padding:0 7px; position:relative; text-align:left; } #galaxytable .playername > a { display:inline-block; } #galaxytable .playername .status_abbr_longinactive { color:#888 !important; } #galaxytable .playername .status_abbr_inactive { color:#c3c3c3 !important; } #galaxytable .playername span { display:inline-block; overflow:hidden; text-overflow:ellipsis; vertical-align:top; max-width:60px; white-space:nowrap; } #galaxytable .allytag { position:relative; } #galaxytable tr[data-marked].debris.ogl-active td { background:#c14529 !important; opacity:1 !important; } #galaxytable .debrisField { background:none !important; color:#fff; font-size:10px; line-height:14px; padding:0; width:100% !important; } #galaxytable tr[class*="filtered_filter"], #galaxytable tr[data-marked="gray"] { background:none; opacity:1 !important; } tr[class*="filtered_filter"] td, tr[data-marked="gray"] td, .ogl-stalkPlanets [data-marked="gray"] { opacity:.2 !important; } #galaxytable .debris.ogl-active { background:#c14529 !important; opacity:1 !important; } #galaxytable tr[data-marked]:not([data-marked="gray"]) { box-shadow:inset 0 50px 0 rgba(0,0,0,.5); } #galaxytable tr[data-marked]:not([data-marked="gray"]) td { opacity:1 !important; } #galaxytable .ogl-highlighted td { border-bottom:1px solid #5a5a5a !important; border-top:1px solid #5a5a5a !important; } #galaxytable .ogl-highlighted td:first-child { border-left:1px solid #5a5a5a !important; } #galaxytable .ogl-highlighted td:last-child { border-right:1px solid #5a5a5a !important; } .ogl-colors { background:linear-gradient(-45deg, #fff, #ab2727, #f3de4c, #28c78d, #1f8ad6, #8e35d2, #fff); background:#212121; border:2px dotted #414f5d; border-radius:50%; box-shadow:inset 0 5px 5px rgba(0,0,0,.7); cursor:pointer; height:16px; position:absolute; top:5px; width:16px; } .ogl-colors:hover { box-shadow:inset 0 50px rgba(255,255,255,.1), inset 0 5px 5px rgba(0,0,0,.7); } div[data-marker], [data-marked] .ogl-colors { background:currentColor; border:2px solid currentColor; border-radius:50%; box-shadow:inset 0 50px rgba(0,0,0,.9); cursor:pointer; height:16px; width:16px; } .ogl-spyTable .ogl-colors { height:16px; left:1px; padding:0; top:2px; width:16px; } .ogl-colorChoice { background:rgba(0,0,0,.5); border-radius:6px; display:grid; grid-gap:10px; grid-template-columns:repeat(2, 1fr); padding:10px; } div[data-marker].ogl-active, [data-marked] .ogl-colors, div[data-marker]:hover { box-shadow:inset 0 50px rgba(0,0,0,.3), inset 0 5px 5px rgba(0,0,0,.3); } [data-marker="red"], [data-marked="red"] .ogl-colors, [data-toggle="red"] { color:#ab2727; } [data-marker="yellow"], [data-marked="yellow"] .ogl-colors, [data-toggle="yellow"] { color:#f3de4c; } [data-marker="green"], [data-marked="green"] .ogl-colors, [data-toggle="green"] { color:#31af9d; } [data-marker="blue"], [data-marked="blue"] .ogl-colors, [data-toggle="blue"] { color:#435f92; } [data-marker="violet"], [data-marked="violet"] .ogl-colors, [data-toggle="violet"] { color:#8e35d2; } [data-marker="gray"], [data-marked="gray"] .ogl-colors, [data-toggle="gray"] { color:#8a8a8a; } .ogl-stalkPlanets [data-marked="red"] { background:#ab2727 !important; } .ogl-stalkPlanets [data-marked="yellow"] { background:#b5a349 !important; } .ogl-stalkPlanets [data-marked="green"] { background:#31af9d !important; } .ogl-stalkPlanets [data-marked="blue"] { background:#435f92 !important; } .ogl-stalkPlanets [data-marked="violet"] { background:#8e35d2 !important; } .ogl-spyTable tr { background:#33333e; } .ogl-spyTable tr[data-marked="red"] { background:#6b3e3f !important; } .ogl-spyTable tr[data-marked="yellow"] { background:#696734 !important; } .ogl-spyTable tr[data-marked="green"] { background:#1d5f5c !important; } .ogl-spyTable tr[data-marked="blue"] { background:#344971 !important; } .ogl-spyTable tr[data-marked="violet"] { background:#5d3d77 !important; } #galaxytable tr[data-marked="red"] { background:linear-gradient(to left, #1a202b, #b13434, #1a202b) !important; } #galaxytable tr[data-marked="yellow"] { background:linear-gradient(to left, #1a202b, #948138, #1a202b) !important; } #galaxytable tr[data-marked="green"] { background:linear-gradient(to left, #1a202b, #24777b, #1a202b) !important; } #galaxytable tr[data-marked="blue"] { background:linear-gradient(to left, #1a202b, #355084, #1a202b) !important; } #galaxytable tr[data-marked="violet"] { background:linear-gradient(to left, #1a202b, #5d2b94, #1a202b) !important; } .ogl-needed { background:#203546; border-radius:0 0 10px 0; font-size:10px; height:20px; line-height:20px; left:0; min-width:68%; padding:0; position:absolute; text-align:center; top:0; user-select:none; } .ogl-deltaFleet { background:#141e26; border-radius:0 0 0 10px; color:#fff; font-size:12px; height:20px; line-height:18px; right:0; padding:0; position:absolute; text-align:center; top:0px; user-select:none; width:26%; } .ogl-needed, .ogl-deltaFleet { display:inline-block; } .ogl-needed:hover, .ogl-deltaFleet:hover { background:var(--hover); } .ogl-spyTable { margin-top:60px; } .ogl-spyTable table { background:#000; border-spacing:1px; font-size:11px; text-align:center; width:100%; } .ogl-total { background:#0a0d0e; border-bottom:4px solid #22313b; color:#fff; margin-bottom:10px; padding:5px 0; text-align:right; width:100%; } .ogl-total span { color:gold; margin-right:5px; } ogl-spyTable { padding:20px; width:100%; } .ogl-spyTable figure { margin-left:3px; vertical-align:sub; } .ogl-spyTable tr:not(:first-child):hover { background:#c56c49 !important; } .ogl-spyTable tr { box-shadow:inset 0 -40px rgba(0,0,0,.5); } .ogl-spyTable td, .ogl-spyTable th { color:#8193a2; height:26px; margin:auto; padding:0 1px; position:relative; } .ogl-spyTable td:last-child, .ogl-spyTable th:last-child { width:72px; } .ogl-spyTable td { height:24px; } .ogl-spyTable th { background:#0a0d0e; color:#d4d4d4; font-size:10px; user-select:none; } .ogl-spyTable .ogl-headerColors { width:20px; } .ogl-spyTable th.ogl-filter { cursor:pointer; } .ogl-spyTable th.ogl-filter:hover { background:var(--hover); color:#fff; } .ogl-spyTable th.ogl-filter.ogl-active { background:var(--active); color:#fff; } .ogl-spyTable th.ogl-filter:after { content:'<>'; display:inline-block; font-family:consolas; font-size:9px; margin-left:3px; transform:rotate(90deg); } .ogl-spyTable .ogl-metal { background:#cab6a9; } .ogl-spyTable .ogl-crystal { background:#406b8a; } .ogl-spyTable .ogl-deut { background:#376f58; } .ogl-spyTable a { color:inherit; font-size:10px; text-decoration:none; } .ogl-spyTable a:hover { color:orange; } .ogl-spyTable tr > *:nth-child(odd) { box-shadow:inset 0 -40px rgba(0,0,0,.2); } .ogl-spyTable .ogl-spyOptions { display:grid; grid-template-columns:repeat(4, 1fr); justify-items:center; padding:0 1px !important; } .ogl-spyTable .ogl-spyOptions .icon:not(.sprite):not(.resource) { border-radius:0 !important; margin-top:4px; } .ogl-spyTable .ogl-attacked td:not(.ogl-colors) { box-shadow:inset 0 0 0 1px rgba(255,255,255,.5); } .ogl-spyTable .ogl-good { color:#73d2af !important; } .ogl-spyTable .ogl-care { color:#d2b62c !important; } .ogl-spyTable .ogl-danger { color:#fb6a6a !important; } .ogl-spyTable .ogl-date { font-size:10px; } .ogl-spyTable .icon.ogl-planet:not(.sprite):not(.resource), .ogl-spyTable .icon.ogl-moon:not(.sprite):not(.resource), .ogl-spyTable .icon.ogl-planet:not(.sprite):not(.resource):hover, .ogl-spyTable .icon.ogl-moon:not(.sprite):not(.resource):hover { background:none !important; bottom:auto !important; box-shadow:none !important; color:inherit !important; line-height:18px !important; position:relative !important; right:auto !important; } .ogl-spyTable .ogl-name { font-size:10px; padding-left:5px; text-align:left; } .ogl-spyTable .ogl-sub { background:linear-gradient(to left, #090e13, #0c1319, #090e13); } .ogl-spyTable .ogl-sub .ogl-inactive { color:rgba(255,255,255,.2); } .ogl-spyTable .ogl-lootable:not(:hover) { background:none !important; } .ogl-spyTable .ogl-lootable:hover { color:#fff !important; } .ogl-spyTable .ogl-attacked { opacity:.9; } .ogl-spyTable .ogl-attacked .ogl-type:after { background:url(/cdn/img/layout/fleet_12x12_hostile.gif); bottom:-2px; content:''; display:block; height:12px; position:absolute; right:-4px; width:12px; zoom:.75; } .ogl-spyTable .ogl-sc, .ogl-spyTable .ogl-lc, .ogl-spyTable .ogl-pf { image-rendering:pixelated; min-width:26px; } .ogl-spyTable .ogl-sc:before, .ogl-spyTable .ogl-lc:before, .ogl-spyTable .ogl-pf:before { background:var(--quality) !important; background-size:550px 825px !important; display:block; content:''; height:26px; left:50%; position:absolute; top:0; transform:translateX(-50%); width:26px; } .ogl-spyTable .ogl-sc:before { background-position:42.1% 51.72% !important; } .ogl-spyTable .ogl-lc:before { background-position:47.36% 51.72% !important; } .ogl-spyTable .ogl-pf:before { background-position:78.94% 51.72% !important; } .ogl-tableOptions { background:#0a0d0e; border-bottom:2px solid #404040; box-sizing:border-box; height:28px; padding:5px; text-align:right; width:100%; } .ogl-tableOptions:before { content:'OGL options:'; margin-right:5px; vertical-align:top; } .ogl-tableOptions > * { float:right !important; } .ogl-tableOptions button { cursor:pointer; margin-left:4px; } .ogl-smallBtn { height:16px !important; line-height:10px !important; min-width:0 !important; padding:0 4px !important; } .ogl-none { background:#000; color:gold; font-size:16px; line-height:30px; text-align:center; width:30px; } .ogl-harvestOptions { background:#141e25; border-bottom:1px solid #000; border-radius:4px 4px 0 0; box-shadow:0 0 0 1px #000; display:grid; grid-gap:6px; grid-template-columns:repeat(5, 1fr); justify-items:center; margin-top:5px; padding:3px; text-align:center; width:141px; } .ogl-option { align-items:center; background:linear-gradient(180deg, #203448, #1d262d, #20384a); border:1px solid #000; border-radius:4px; color:#fff; cursor:pointer; display:flex; font-size:17px; font-weight:normal; height:23px; justify-content:center; overflow:hidden; position:relative; user-select:none; text-decoration:none; text-shadow:1px 1px 2px #000; width:100%; } .ogl-option:after { background:linear-gradient(rgba(255,255,255,.1) 50%, transparent 50%); content:''; display:block; height:100%; left:0; position:absolute; top:0; width:100%; } .ogl-option:hover { color:#fff !important; } .ogl-syncOption { color:#ab53d8; } .ogl-targetIcon { color:#ca4c4c; } .ogl-defaultCargo { color:#e4ce33; } .ogl-harvestMission { color:#43ec77; } .ogl-harvestMission.ogl-transpoIcon { color:#c2f75a; } .ogl-autoHarvest { color:#50deec; } .ogl-syncOption:hover { background:#45185d !important; border-color:#64367d !important; } .ogl-targetIcon:hover { background:#6b0e0e !important; border-color:#7d3232 !important; } .ogl-defaultCargo:hover { background:#866900 !important; border-color:#b99719 !important; } .ogl-defaultCargo span { font-size:11px; font-weight:bold; pointer-events:none; } .ogl-harvestMission:hover { background:#256d45 !important; border-color:#3d9c67 !important; } .ogl-harvestMission.ogl-transpoIcon:hover { background:#56840c !important; border-color:#7bb124 !important; } .ogl-autoHarvest:hover { background:#285371 !important; border-color:#3c759c !important; } .ogl-autoHarvest.ogl-active { border:1px dashed #fff; } .ogl-skipList { background-color:#13181d; box-shadow:inset 0 1px rgba(255,255,255,.05); color:#96a0a2 !important; line-height:24px; outline:1px solid #000; padding:0 5px; position:relative; } .ogl-skipList:nth-child(odd) { background-color:#0d1014; } .ogl-skipList:hover { background:rgba(255, 215, 0, 0.1) !important; color:#e6648e !important; outline:1px solid gold; z-index:10; } .ogl-skipList figure { margin-left:5px; } #galaxytable .ogl-ranking { top:5px; } .ogl-ranking { position:absolute; right:5px; } .ogl-stalkContainer h1 { display:inline-block; margin-right:5px; vertical-align:sub; } .ogl-toggle.ogl-active { box-shadow:inset 0 50px rgba(0,0,0,.3); } .ogl-toggle.ogl-active:before { color:#fff; content:"✓"; display:inline-block; left:0; line-height:16px; text-align:center; top:0; width:100%; } .ogl-toggle:hover { opacity:.7; } .ogl-toggle { background:currentColor; border:2px solid currentColor; border-radius:3px; box-shadow:inset 0 50px rgba(0,0,0,.9); display:inline-block; height:14px; margin-right:5px; vertical-align:middle; width:14px; } .ogl-stalk h1 a, .ogl-ranking { color:#e6648e !important; font-size:10px; } .ogl-stalk h1 a:hover, .ogl-ranking:hover { color:orange !important; text-decoration:underline !important; } .ogl-stalk h1 s { color:#fff; } .ogl-stalkPlanets { display:grid; grid-gap:3px; grid-template-columns:repeat(4, 1fr); } .ogl-tooltip .ogl-stalkPlanets { grid-template-columns:repeat(4, 1fr); } .ogl-sideStalk .ogl-stalkPlanets { max-height:none; } .ogl-stalkPlanets > a { background:#0c0e10; border:1px solid #000; border-radius:4px; box-sizing:border-box; color:#aaa !important; cursor:pointer; display:block; font-size:11px; height:27px; line-height:23px; padding:0 22px 0 8px; position:relative; text-decoration:none !important; text-align:left !important; } .ogl-stalkPlanets > a.ogl-main i { color:gold; font-size:10px; font-style:normal; margin:0 2px 0 4px; } .ogl-stalkPlanets [data-marked]:not([data-marked="gray"]) { box-shadow:inset 0 50px 0 rgba(0,0,0,.6); } .ogl-stalkPlanets > a.ogl-active:before, .ogl-stalkPlanets [data-marked]:not([data-marked="gray"]).ogl-active:before { background:#fff; border-radius:50%; content:''; height:5px; position:absolute; right:-2px; top:-2px; width:5px; } .ogl-stalkPlanets > a:hover { box-shadow:inset 0 100px 0 rgba(0,0,0,.5) !important; color:#fff !important; } .ogl-stalkPlanets.ogl-stalkList a { opacity:1 !important; text-align:center; } .ogl-stalkPlanets .splitLine { grid-column: 1/-1; } .ogl-textRight { text-align:right; } #fleetdispatchcomponent .allornonewrap .secondcol { background:#0d1014; border-radius:5px; display:grid !important; grid-gap:5px; grid-template-columns:repeat(3, 1fr); padding:5px !important; width:107px !important; } #allornone .secondcol .clearfloat { display:none !important; } #allornone .secondcol * { float:none !important; } .ogl-prefab { background:url(https://gf2.geo.gfsrv.net/cdn14/f45a18b5e55d2d38e7bdc3151b1fee.jpg) no-repeat; background-size:calc(36px * 11) !important; background-position:-5px -5px; border:2px solid #223473 !important; border-radius:4px; box-shadow:inset 0 -14px rgba(0,0,0,.15); box-sizing:border-box; cursor:pointer; display:inline-block; height:32px; position:relative; text-shadow:1px 1px 0 rgba(0,0,0,.3); width:32px; z-index:10; } .ogl-prefab:hover { border-color:var(--hoverLight) !important; } .ogl-expeOption { background:#3a62b4; color:#fff; font-size:24px !important; padding:0; } .ogl-expeOption:hover { background:var(--hover); } .ogl-expeLine { grid-column:1/-1; } .ogl-importExport .ogl-rvalInput { cursor:auto !important; float:right; height:14px; line-height:16px; padding:0 4px; text-align:center; width:60px !important; } .ogl-importExport .ogl-right { color:#f5d271; font-size:11px; font-weight:bold; margin-top:0; } .ogl-importExport .btn_blue { float:right; margin-left:5px; } .ogl-quickLinks { box-sizing:border-box; display:grid; grid-gap:1px; grid-template-columns:auto 40px; user-select:none; } .ogl-quickLinked figure, .ogl-quickLinks figure { box-shadow:inset 0 0 4px 1px #090a0c; border-radius:50%; } .ogl-quickLinks > div { background-color:#13181d; box-shadow:inset 0 1px rgba(255,255,255,.05); color:#96a0a2 !important; line-height:24px; outline:1px solid #000; position:relative; } .ogl-quickLinks > .ogl-quickPlanet:nth-of-type(4n+3), .ogl-quickLinks > .ogl-quickPlanet:nth-of-type(4n+3) + div { background-color:#0d1014; } .ogl-quickPlanet { cursor:pointer; font-size:11px; padding:0 8px; } .ogl-quickMoon { cursor:pointer; text-align:center !important; } .ogl-quickEmpty { background-color:#3c1212 !important; opacity:.3; cursor:not-allowed; } .ogl-quickLinked { background-color:#0d1014; box-shadow:inset 0 1px rgba(255,255,255,.05); color:#96a0a2 !important; cursor:pointer; line-height:24px; outline:1px solid #000; padding:0 8px; position:relative; } .ogl-quickLinked figure { position:absolute; right:8px; top:5px; } .ogl-quickPlanet:not(.ogl-quickEmpty):hover, .ogl-quickMoon:not(.ogl-quickEmpty):hover, .ogl-quickLinked:hover { background:var(--hover) !important; color:#fff !important; z-index:10; } .ogl-spacer { margin:14px 0; text-align:center; } #shortcuts .dropdown.planets { display:none !important; } .ogl-quickBtn { background:#1e2c39; border:1px solid #000; border-radius:4px; box-shadow:inset 0 1px 3px rgba(255,255,255,.1), 0 0 10px 3px #192026; box-sizing:border-box; display:block; height:24px; line-height:22px; margin-top:4px; padding:0 4px; position:relative; width:144px; } .ogl-quickBtn:before { background:url("https://gf3.geo.gfsrv.net/cdne1/d03835718066a5a592a6426736e019.png"); background-position:100% -488px; content:''; display:block; height:24px; position:absolute; right:-1px; top:-1px; width:24px; } .ogl-quickBtn:hover { background:#243746; } .ogl-quickBtn:hover:before { background-position:100% -512px; } .maincontent .ogl-shortHeader { height:auto !important; min-height:40px !important; } .maincontent .ogl-shortHeader #slot01 { right:40px !important; } .maincontent .ogl-shortHeader + #technologydetails_wrapper { display:none !important; margin-top:-48px !important; position:relative !important; } .maincontent .ogl-shortHeader + #technologydetails_wrapper.slide-up { display:block !important; } .toggleHeader { background:url("//gf1.geo.gfsrv.net/cdn0b/d55059f8c9bab5ebf9e8a3563f26d1.gif") no-repeat 0 -22px !important; cursor:pointer; height:22px; position:absolute; right:13px; top:8px; width:23px; } .ogl-shortHeader .toggleHeader, .shortHeader .toggleHeader { background:url("//gf1.geo.gfsrv.net/cdn0b/d55059f8c9bab5ebf9e8a3563f26d1.gif") no-repeat 0 0 !important; } .ogl-hidden { display:none !important; } .eventFleet[data-mission-type="1"], .fleetDetails[data-mission-type="1"] { color:#ea463e !important; } .eventFleet[data-mission-type="2"], .fleetDetails[data-mission-type="2"] { color:#ff6046 !important; } .eventFleet[data-mission-type="3"], .fleetDetails[data-mission-type="3"] { color:#76c754 !important; } .eventFleet[data-mission-type="4"], .fleetDetails[data-mission-type="4"] { color:#47c79e !important; } .eventFleet[data-mission-type="5"], .fleetDetails[data-mission-type="5"] { color:#e48d50 !important; } .eventFleet[data-mission-type="6"], .fleetDetails[data-mission-type="6"] { color:#cabe6e !important; } .eventFleet[data-mission-type="7"], .fleetDetails[data-mission-type="7"] { color:#72d9de !important; } .eventFleet[data-mission-type="8"], .fleetDetails[data-mission-type="8"] { color:#6bb786 !important; } .eventFleet[data-mission-type="9"], .fleetDetails[data-mission-type="9"] { color:#fd2e2e !important; } .eventFleet[data-mission-type="15"], .fleetDetails[data-mission-type="15"] { color:#6d98e2 !important; } .eventFleet[data-mission-type="16"], .fleetDetails[data-mission-type="16"] { color:#72c4d4 !important; } #eventContent tbody { outline:1px solid #000; } #eventContent tr { background:#141e26; line-height:18px; } #eventContent tr td { font-size:10px; padding:0; position:relative; vertical-align:middle; } #eventContent tr td * { font-size:inherit !important; vertical-align:inherit !important; } #eventContent tr td *:not(.textBeefy):not(a) { color:inherit; } #eventContent tr td a { text-decoration:none; } #eventContent tr td figure { margin-right:2px; } #eventContent tr td:before { bottom:0; box-shadow:inset 0 -1px rgba(0,0,0,.5), inset 0 1px rgba(255,255,255,.05); display:block; content:''; height:100%; pointer-events:none; position:absolute; width:100%; } #eventContent tr .icon_movement, #eventContent tr .icon_movement_reserve { background-position-y:center; display:table-cell; height:auto; padding:0; } .eventFleet[data-return-flight="true"], .fleetDetails[data-return-flight="1"] { box-shadow:inset 0 150px 0 rgba(0,0,0,.5); } #eventContent td a:hover { color:#73a7c5; } #eventContent tr[data-return-flight="true"] td { opacity:.5; } #eventContent .originFleet span, #eventContent .destFleet span { display:block !important; } .eventFleet .countDown, .eventFleet .arrivalTime { text-align:left; text-indent:5px; } #eventContent .countDown { text-shadow:1px 1px #000; } #movementcomponent { background:#10181f; outline:1px solid #000; padding-bottom:7px; } #movementcomponent .destinationPlanet .tooltip, #movementcomponent .originPlanet .tooltip { color:inherit !important; } .ogl-translated { font-size:11px; } .ogl-keepRes { background:var(--main); border:none; border-radius:2px; box-shadow:0 0 0 1px rgba(0,0,0,.5); color:#fff; float:right; height:11px; line-height:11px; margin-top:1px; padding:0; text-align:center; width:14px; } .ogl-keepRes.ogl-active { background:var(--activeLight); } .ogl-keepRes:hover { background:var(--hoverLight); } .ogl-keptResources input { width:280px; } .res #selectMinMetal, .res #selectMinCrystal, .res #selectMinDeuterium, .res #selectMaxMetal, .res #selectMaxCrystal, .res #selectMaxDeuterium { cursor:pointer; } .ogl-sideStalk { background:linear-gradient(#131d24, #0c1015); left:0; margin-top:15px; outline:1px solid #000; padding:10px; position:relative; top:0; width:127px; } .ogl-sideStalk .close-tooltip { position:absolute; right:3px; top:3px; } .ogl-sideStalk hr { background:rgba(255,255,255,.2); border:none; height:1px; } .ogl-sideStalk h1 a { color:#e6648e !important; font-size:10px; } .ogl-sideStalk .ogl-stalkPlanets { grid-template-columns:repeat(1, 1fr); } .ogl-sideStalk .ogl-stalkPlanets a { width:auto; } .ogl-right { float:right; margin-top:5px; text-align:right; } .ogl-fullGrid { grid-column:1/-1; } .ogl-dialog h1 { grid-column:1/-1; margin-bottom:10px; } .ogl-flyingGrid > div { display:grid; grid-gap:10px; grid-template-columns:repeat(4,1fr); overflow-y:auto; } .ogl-flyingGrid > div > div { background:#0f1317; padding:10px; } .ogl-flyingGrid .ogl-metal span, .ogl-flyingGrid .ogl-crystal span, .ogl-flyingGrid .ogl-deut span { display:inline-block; margin-right:10px; width:20px; } .ogl-flyingGrid .ogl-destination { text-align:center; } .ogl-hiddenTooltip { display:none !important; visibility:hidden !important; z-index:-1 !important; } .ogl-fleetSpeed { background:linear-gradient(to left, #248469, #b9801a, #a72525); border-radius:2px; box-shadow:inset 0 1px rgba(255,255,255,.2), 0 0 0 1px #000; color:#fff; display:grid; grid-template-columns:repeat(10, 1fr); margin-top:23px; text-align:center; } .ogl-fleetSpeed > div { background:#252d3e; box-shadow:inset -2px 0 7px rgba(0, 0, 0, 0.7); cursor:pointer; padding:5px 0; position:relative; transition:all .2s; } .ogl-fleetSpeed > div:hover { opacity:.5; } .ogl-fleetSpeed > div.ogl-active { background:none; opacity:1; } .ogl-tooltip { background:#171d23; border:2px solid #364352; border-radius:7px; box-shadow:0 0 10px #000; display:none; font-size:11px; padding:10px; position:absolute; transform:translateX(-50%) translateY(-100%); max-width:370px; width:fit-content; z-index:100000; } .ogl-tooltip div[style*="display:none;"] { display:block !important; } .ogl-tooltip a { color:cornflowerblue; text-decoration:none; } .ogl-tooltip a:hover { color:orange; } .ogl-tooltip.ogl-active { display:block; } .ogl-tooltip hr, .ogl-dialog hr { background:#364352; border:none; height:1px; } .ogl-tooltip .ogl-date, .ogl-sideStalk .ogl-date { color:#61768e; font-size:10px; } .ogl-tooltip .ogl-pin { position:absolute; right:26px; top:7px; } .ogl-tooltip .ogl-mmorpgstats { position:absolute; right:45px; top:7px; } .ogl-tooltip .ogl-ranking { position:relative !important; right:auto !important; } .ogl-tooltip .icon_chat, .ogl-tooltip .icon_user, .ogl-tooltip .icon_against { margin-right:0px; } .ogl-tooltip .galaxyTooltip { display:block !important; } .ogl-tooltip.ogl-autoHide .close-tooltip { display:none; } .ogl-tooltip.ogl-tooltipLeft { transform:translateX(-100%); } .ogl-tooltip.ogl-tooltipRight { transform:none; } .ogl-tooltip.ogl-tooltipBottom { transform:translateX(-50%); } .ogl-tooltip:after { background:#171d23; border-bottom:2px solid #364352; border-right:2px solid #364352; bottom:-6px; content:''; display:block; height:15px; left:50%; pointer-events:none; position:absolute; transform:translateX(-50%) rotate(45deg); width:15px; z-index:-1; } .ogl-tooltip.ogl-tooltipLeft:after { border:none; border-top:2px solid #364352; border-right:2px solid #364352; bottom:auto; left:auto; top:8px; transform:rotate(45deg); right:-6px; } .ogl-tooltip.ogl-tooltipRight:after { border:none; border-bottom:2px solid #364352; border-left:2px solid #364352; bottom:auto; left:-6px; transform:rotate(45deg); top:8px; } .ogl-tooltip.ogl-tooltipBottom:after { border:none; border-top:2px solid #364352; border-left:2px solid #364352; bottom:auto; left:50%; top:-8px; transform:translateX(-50%) rotate(45deg); } .ogl-listSeparator { background:rgba(255,255,255,.1); font-size:14px; margin-top:5px; padding:5px 0; text-align:center; } .ogl-listSeparator:after { content:'>'; display:inline-block; float:right; font-family:consolas; margin-right:10px; transform:rotate(90deg); } .ogl-dialogOverlay { align-items:center; background:rgba(0,0,0,.7); bottom:0; display:none; justify-content:center; left:0; position:fixed; right:0; top:0; z-index:1000; } .ogl-dialogOverlay.ogl-active { display:flex; } .ogl-dialog { background:#1a222b; border-radius:6px; box-shadow:inset 0 1px 0 rgba(255,255,255,.05); display:inline-flex; overflow:hidden; padding:20px; position:fixed; max-width:800px; } .ogl-dialog .close-tooltip { position:absolute; right:5px; top:5px; } .ogl-dialogContent { max-height:70vh; overflow-y:auto; padding:10px; } .ogl-dialogContent .ogl-stalkPlanets { align-content:start; background:#0d1117; padding:10px; min-height:300px; min-width:467px; } .ogl-dialogContent .ogl-stalkPlanets .ogl-targetItem { box-shadow:inset 0 100px 0 rgba(0,0,0,.8); width:112px; } .ogl-dialogContent .ogl-stalkPlanets .ogl-targetItem .icon { position:absolute !important; right:4px; top:4px; } .ogl-dialogContent .ogl-stalkPlanets .ogl-targetItem .ogl-pin { right:24px; } .ogl-tabList { display:inline-block; vertical-align:top; width:50%; } .ogl-tabList .ogl-tab { background:#334258; border-radius:2px; color:#fff; cursor:pointer; margin-right:2px; margin-bottom:2px; padding:5px 0; text-align:center; } .ogl-tabList .ogl-tab:hover { background:#a95b19; } .ogl-tabList .ogl-tab.ogl-active { background:#a95b19; opacity:1 !important; } .ogl-tab.ogl-isEmpty { opacity:.2; } .ogl-colorHidden, .ogl-galaxyHidden, .ogl-systemHidden { display:none !important; } .ogl-atk { background:#c14d4d; border:6px double #fff; border-radius:50%; bottom:4px; box-sizing:border-box; height:14px; opacity:.2; position:absolute; right:3px; width:14px; } .ogl-atk:hover { background:#cd33ff; border-color:#e39fff; opacity:1; } .ogl-atk.ogl-active { opacity:1; } .ogl-fleetInfo div:nth-of-type(1) { color:#eac612; } .ogl-fleetInfo div:nth-of-type(2) { color:#36c7e8; } .ogl-fleetInfo div:nth-of-type(3) { color:#e979f1; } .ogl-fleetInfo span { display:inline-block; width:50px; } #civilships .ogl-fret { background:#13181d; border:1px solid #000; bottom:5px; color:#9e9e9e; cursor:pointer; font-size:11px; line-height:15px; padding:8px 12px; position:absolute; right:16px; } #civilships .ogl-fret:hover { border-color:var(--hoverLight); } #civilships .ogl-fret b { color:#eac612; float:right; margin-left:20px; } .ogl-lock { background:rgba(0,0,0,.7) !important; color:#fff; display:block; line-height:20px; padding:5px !important; text-align:left; width:100%; } .ogl-lock .icon_lock { margin-right:10px; vertical-align:middle; } .ogl-lock > * { display:inline-block; } .ogl-sideLock { background:none; color:#bb2121 !important; font-size:18px !important; position:absolute !important; right:60px; text-shadow:0 0 4px #000; top:4px; transform:translateX(100%) rotate(0.03deg) !important; z-index:20; } .ogl-sideLock:before { content:'lock_outline'; } .ogl-sideLock.ogl-active { color:#22824d !important; } .ogl-sideLock:hover { color:var(--hoverLight) !important; } /* FLEET INFO TOOTIP ------------------------------- */ table.fleetinfo tr td, table.fleetinfo tr th { padding:2px 5px; } table.fleetinfo tr:nth-child(even) { box-shadow:inset 0 50px rgba(0,0,0,.2); } table.fleetinfo tr:nth-child(odd) { box-shadow:inset 0 50px rgba(0,0,0,.4); } table.fleetinfo tr:nth-last-child(-n+3) .value { /*position:absolute; right:10px;*/ } table.fleetinfo tr:nth-last-child(3), .ogl-metal { color:#c76593 !important; } table.fleetinfo tr:nth-last-child(2), .ogl-crystal { color:#80d4dc !important; } table.fleetinfo tr:nth-last-child(1), .ogl-deut { color:#74e6a0 !important; } /* BTN_BLUE ------------------------------- */ .btn_blue { background:linear-gradient(to top, var(--main) 50%, var(--mainLight) 50%) !important; border:1px solid var(--mainLight) !important; border-radius:2px !important; } .ogl-btn_red { background:#b13131 !important; border:1px solid #de3e3e !important; } .btn_blue:hover { background:linear-gradient(to top, var(--hover) 50%, var(--hoverLight) 50%) !important; border:1px solid var(--hoverLight) !important; } /* ICONS ------------------------------- */ .icon:not(.sprite):not(.resource), .close-tooltip { background:var(--main) !important; border-radius:3px; box-shadow:inset 0 1px rgba(255,255,255,.2), 0 0 0 1px rgba(0,0,0,.3); color:#fff !important; font-size:14px !important; height:16px; line-height:17px !important; position:relative; text-align:center; width:16px; } .icon:not(.sprite):not(.resource):before, .close-tooltip:before { display:block; height:100%; left:0; position:absolute; top:0; width:100%; } .icon.ogl-active:not(.sprite):not(.resource) { background:var(--active) !important; } .icon:not(.sprite):not(.resource):hover { background:var(--hover) !important; } .close-tooltip:hover { background:#822525 !important; } .icon.blank, .icon[style="background: none;"] { visibility:hidden; } .icon.ogl-planet:not(.sprite):not(.resource), .icon.ogl-moon:not(.sprite):not(.resource) { background:#2b3d52 !important; border-radius:4px !important; bottom:2px; color:#080d13 !important; cursor:default; position:absolute !important; right:2px; } .icon.ogl-planet:not(.sprite):not(.resource):hover, .icon.ogl-moon:not(.sprite):not(.resource):hover { background:var(--mainLight) !important; color:#1a2733 !important; } .ogl-stalkPlanets .icon.ogl-moon:not(.sprite):not(.resource) { background:none !important; box-shadow:none !important; color:rgba(0,0,0,.5) !important; bottom:4px; } .ogl-stalkPlanets .icon.ogl-moon.ogl-active:not(.sprite):not(.resource) { color:gold !important; } .icon:not(.sprite):not(.resource).planetMoveIcons.planetMoveInactive, .icon:not(.sprite):not(.resource).planetMoveIcons.planetMoveBreakup, .icon:not(.sprite):not(.resource).colonize-inactive { background:#b12727 !important; } .icon:not(.sprite):not(.resource).planetMoveIcons.planetMoveOk { background:#6d8a15 !important; } .close-tooltip:before { content:'close'; } .icon.icon.allianceMember:before { content:'group'; } .icon.icon_fastforward:before { content:'fast_forward'; } .icon.icon_eye:before { content:'remove_red_eye'; } .icon.icon_close:before { content:'close'; } .icon.icon_maximize:before { content:'zoom_out_map'; } .icon.icon_trash:before { content:'delete'; } .icon.icon_chat:before { content:'comment'; } .icon.icon_user:before { content:'person'; } .icon.icon_missile:before { content:'gps_fixed'; } .icon.icon_against:before { content:'block'; } .icon.icon_reload:before { content:'refresh'; } .icon.icon_restore:before { content:'subdirectory_arrow_left'; } .icon.icon_info:before { content:'info_outline'; } .icon.icon_lock:before { content:'lock_open'; } .icon.icon_warning:before { content:'priority_high'; } .icon.icon_reply:before { content:'keyboard_return'; } .icon.icon_combatunits:before { content:'edit'; } .icon.icon_mail:before { content:'email'; } .ogl-active .icon.icon_lock, .icon.icon_lock.ogl-sideLock { background:#bb2121 !important; } .ogl-active .icon_lock:before, .icon.icon_lock.ogl-sideLock:before { content:'lock_outline'; } .icon.icon_lock.ogl-sideLock.ogl-active { background:#22824d !important; } .ogl-pin, .ogl-mmorpgstats { position:absolute !important; } .ogl-pin:before { content:'place'; } .ogl-mmorpgstats:before { content:'call_made'; } .ogl-wipe:before { content:'delete_sweep' } .ogl-planet:before { content:'language'; } .ogl-moon:before { content:'brightness_2';transform:rotate(20deg) } .ogl-expand:before { content:'expand_more'; } .planetMoveIcons.settings:before { content:'settings'; } .planetMoveIcons.colonize-inactive:before { content:'flag'; } .planetMoveIcons.colonize-active:before { content:'flag'; } .planetMoveIcons.planetMoveDefault:before { content:'flight'; } .planetMoveIcons.planetMoveInactive:before { content:'flight'; } .planetMoveIcons.planetMoveOk:before { content:'flight'; } .planetMoveIcons.planetMoveBreakup:before { content:'flight'; } .cancelMove .icon:before { content:'close'; } .og-sortable.active .icon { margin-left:5px; } .og-sortable.active .icon:before { content:'unfold_more'; } .og-sortable.active.desc .icon:before { content:'keyboard_arrow_down'; } .og-sortable.active.asc .icon:before { content:'keyboard_arrow_up'; } .ogl-simButton.icon:not(.sprite):not(.resource) { font-family:inherit !important; font-size:13px !important; font-weight:bold !important; line-height:15px !important; padding:0 !important; } /* EXPEDITION DEBRIS ------------------------------- */ .expeditionDebrisSlotBox { align-items:center; display:grid; grid-template-columns:20% auto auto auto; } .expeditionDebrisSlotBox li { list-style:none; } .expeditionDebrisSlotBox > img { float:right; justify-self:center; } .expeditionDebrisSlotBox > div { line-height:1.6; text-align:left; } .expeditionDebrisSlotBox a:hover { color:orange; } .ogl-detailRank { background-color:#13181d; display:grid; grid-template-columns:repeat(5, 1fr); line-height:16px; padding:2px 0; } .ogl-detailRank > div { font-size:10px; padding:2px; } .ogl-detailRank > div:nth-child(1) { color:#71b1da; } .ogl-detailRank > div:nth-child(2) { color:#9a9a9a; } .ogl-detailRank > div:nth-child(3) { color:#97ce48; } .ogl-detailRank > div:nth-child(4) { color:#ff8600; } .ogl-detailRank > div:nth-child(5) { color:#cec65d; } .ogl-ecoIcon, .ogl-techIcon, .ogl-fleetIcon, .ogl-totalIcon, .ogl-defIcon { background:url(https://gf3.geo.gfsrv.net/cdne9/1fd57fa51cdb81035382943e635348.gif) no-repeat; background-position:100% 0 !important; background-size:calc(16px * 6) !important; border-radius:3px; box-shadow:0 0 0 1px #000; display:inline-block; float:left; height:16px; image-rendering:crisp-edges; image-rendering:-moz-crisp-edges; image-rendering:-webkit-optimize-contrast; margin-right:3px; vertical-align:middle; width:16px; } .ogl-techIcon { background-position:80% 0 !important; } .ogl-fleetIcon { background-position:60% 0 !important; filter:hue-rotate(27deg) brightness(1.75); } .ogl-defIcon { background-position:60% 0 !important; filter:hue-rotate(67deg) brightness(1.75); } .ogl-totalIcon { background-position:0 0 !important; } .fleetDetails.detailsOpened { height:87px; } .detailsOpened .starStreak { background-color:rgba(0,0,0,.5); height:58px; } .fleetDetails.detailsClosed .ogl-backTimer { display:none; } .ogl-backTimer { border-left:1px solid #000; border-right:1px solid #000; bottom:0; color:#7b7b7b; left:-2px; line-height:18px; padding:0 4px; position:absolute; right:-2px; text-align:center; } .ogl-backTimer div { display:inline-block; } .ogl-backTimer div:nth-child(1) { color:#fff; } .ogl-backTimer div:nth-child(2) { color:gold; font-weight:bold; } .ogl-backTimer div:nth-child(2):before { color:#7b7b7b; content:'-'; margin:0 5px; } .tpd-tooltip:not(.ogl-tooltip) { display:none !important; height:1px !important; overflow:hidden !important; visibility:hidden !important; width:1px !important; z-index:-1000 !important; } #fleet1 .technology .icon { box-shadow:inset 0 20px 20px #000; } #middle { padding-bottom:60px; } #movement .fleetStatus { height:auto; } .ogl-leftOption { padding:5px 10px; position:relative; text-align:left; width:100%; } .ogl-keyboard { background:#cccccc; border:1px solid #d2d2d2; box-shadow:1px 0 1px 0 #797979, 0 2px 0 2px #7b7b7b, 0 2px 0 3px #1f1f1f; border-radius:3px; color:#585858; display:inline-block; font-weight:bold; right:5px; padding:0 4px; position:absolute; text-shadow:0px 1px 0 #dedede; top:2px; } .ogl-tipsList { display:grid; grid-gap:1px 5px; grid-template-columns:repeat(3, 1fr); line-height:16px; width:639px; } #warning .ogl-tipsList { margin-left:17px; } #galaxycomponent .ogl-tipsList { background:#141e26; border:1px solid #000; border-radius:3px; margin-left:11px; padding:10px; width:629px; } .ogl-tips { background:#13181d; border:1px solid #030303; cursor:pointer; margin-top:5px; padding:5px; position:relative; max-width:210px; } .ogl-tips:hover { background:#541d0c; border:1px solid var(--hoverLight); } .resourceIcon { position:relative; } .ogl-resTimeLeft { background:rgba(0,0,0,.8); border-top:1px solid #000; bottom:0; color:#fbd467; display:none; font-size:9px; font-weight:bold; height:100%; line-height:33px; pointer-events:none; position:absolute; width:100%; } #resourcesbarcomponent:hover .ogl-resTimeLeft { display:block; } #allornone .secondcol { background:#0e1014; } #resources .value > span { position:relative; top:2px; } #fleetdispatchcomponent #buttonz #civilships { min-height:300px; } .ogl-routine > div { margin-bottom:10px; } .ogl-linkedMoon { background:#564a1e; box-shadow:inset 0 1px rgba(255, 255, 255, 0.2); color:#fff !important; cursor:pointer; line-height:24px; outline:1px solid #000; padding:0 8px; position:relative; } .ogl-linkedMoon:hover { background:var(--hover); } .ogl-linkedMoon figure { box-shadow:inset 0 0 4px 1px #090a0c; border-radius:50%; float:right !important; margin:4px 0 0 3px; } #technologies_battle h3, #technologies_civil h3, #battleships .header, #civilships .header { display:none; } #battleships { padding:0 0 0 10px; width:430px !important; } #technologies_battle .icons, #technologies_battle .icons ul { padding:0 !important; width:430px !important; } #technologies_civil { right:-14px !important; } #technologies_civil .icons, #technologies_civil .icons ul { padding:0 !important; width:240px !important; } #battleships ul, #civilships ul { padding:0 !important; } .ogl-buildingTimeLeft, .ogl-buildTime { color:#af981e; display:inline-block; margin-top:3px; } #technologydetails .ogl-buildTime { background:#151f29; border-radius:3px 0 3px 3px; bottom:85px; font-size:12px; padding:4px; position:absolute; right:5px; } .ogl-buildingTimeLeft span, .ogl-buildTime span { color:gold; } #fleetdispatchcomponent #allornone .info { display:none; } #planetList { width:147px !important; } .ogl-sim { background:linear-gradient(to top, #1a2027, #2e3948) !important; box-shadow:inset 0 1px 3px #374454; border-radius:5px; color:#9ea5af; cursor:pointer; float:left; font-size:16px; font-weight:bold; line-height:26px; text-align:center; } .ogl-sim:hover { background:linear-gradient(to bottom, #1a2027, #2e3948) !important; box-shadow:inset 0 -1px 3px #374454; } #messages .no_msg { position:relative; margin:0; } /* universeview timers fix ------------------------------- */ .uv-idletimer-timer { border-radius:0 !important; font-size:9px !important; height:10px !important; padding:0 1px !important; opacity:1 !important; top:0 !important; right:0 !important; } .ogl-jumpGateTimer { background:#1b252e; border:1px solid #000; bottom:-1px; color:gold; font-size:9px; padding:1px 2px; position:absolute; right:-2px; transform:translateX(100%); } #jumpgate .ogl-deltaFleet { width:20px; } .ogl-empire { background:rgba(0,0,0,.4); display:grid; font-size:10px; grid-gap:7px; grid-template-columns:repeat(4, 1fr); padding:10px; } .ogl-empireLine { background:#161d27; box-shadow:0 0 4px rgba(0,0,0,.3); display:grid; grid-template-columns:auto auto; position:relative; } .ogl-empireLine > div { padding:10px; } .ogl-empireLine > div:nth-child(odd) { background:#202b38; position:relative; cursor:pointer; } .ogl-empireLine > div:nth-child(odd):hover { background:#541d0c; outline:1px solid var(--hoverLight); z-index:10; } .ogl-empireLine > div:nth-child(3), .ogl-empireLine > div:nth-child(4) { border-top:1px solid #10141a; } .ogl-empireTotal { background:#2b3746; box-shadow:0 0 4px rgba(0,0,0,.3); margin-top:3px; padding:10px; text-align:right; } .ogl-empireContainer > button { background:linear-gradient(to bottom, var(--mainLight) 50%, var(--main) 50%); border-radius:3px 3px 0 0; color:#fff; cursor:pointer; font-size:14px; margin-right:2px; padding:5px 10px; } .ogl-empireContainer > button:hover { background:linear-gradient(to bottom, var(--hoverLight) 50%, var(--hover) 50%); } .ogl-empireContainer > button.ogl-active { background:linear-gradient(to bottom, var(--activeLight) 50%, var(--active) 50%); } #technologydetails .costs > p { visibility:hidden; } #technologydetails .costs li.ogl-active { color:#44ffb1; } #technologydetails .costs li.ogl-noMoney { color:#e62424; } .ogl-shipIcon { background-size:cover !important; border:2px solid #000; border-radius:4px; box-sizing:border-box; height:32px; width:32px; } .ogl-shipIcon.ogl-active { border-color:var(--active) !important; } .ogl-shipIcon.ogl-0 { background:#731a1a; color:#fff; font-size:16px !important; line-height:28px !important; text-align:center; } .ogl-shipIcon.ogl-0:after { content:'close'; } .ogl-shipIcon.ogl-0.ogl-active { background:#1f5a4d; } .ogl-shipIcon.ogl-0.ogl-active:after { content:'create'; } .ogl-shipIcon.ogl-202 { background-image:url(https://gf2.geo.gfsrv.net/cdnd9/60555c3c87b9eb3b5ddf76780b5712.jpg); } .ogl-shipIcon.ogl-203 { background-image:url(https://gf1.geo.gfsrv.net/cdn34/fdbcc505474e3e108d10a3ed4a19f4.jpg); } .ogl-shipIcon.ogl-204 { background-image:url(https://gf2.geo.gfsrv.net/cdnd2/9ed5c1b6aea28fa51f84cdb8cb1e7e.jpg); } .ogl-shipIcon.ogl-205 { background-image:url(https://gf1.geo.gfsrv.net/cdnf1/8266a2cbae5ad630c5fedbdf270f3e.jpg); } .ogl-shipIcon.ogl-206 { background-image:url(https://gf2.geo.gfsrv.net/cdn45/b7ee4f9d556a0f39dae8d2133e05b7.jpg); } .ogl-shipIcon.ogl-207 { background-image:url(https://gf1.geo.gfsrv.net/cdn32/3f4a081f4d15662bed33473db53d5b.jpg); } .ogl-shipIcon.ogl-211 { background-image:url(https://gf1.geo.gfsrv.net/cdnca/4d55a520aed09d0c43e7b962f33e27.jpg); } .ogl-shipIcon.ogl-213 { background-image:url(https://gf3.geo.gfsrv.net/cdn2a/c2b9fedc9c93ef22f2739c49fbac52.jpg); } .ogl-shipIcon.ogl-214 { background-image:url(https://gf3.geo.gfsrv.net/cdn84/155e9e24fc1d34ed4660de8d428f45.jpg); } .ogl-shipIcon.ogl-215 { background-image:url(https://gf3.geo.gfsrv.net/cdn5a/24f511ec14a71e2d83fd750aa0dee2.jpg); } .ogl-shipIcon.ogl-218 { background-image:url(https://gf1.geo.gfsrv.net/cdn39/12d016c8bb0d71e053b901560c17cc.jpg); } .ogl-shipIcon.ogl-219 { background-image:url(https://gf3.geo.gfsrv.net/cdne2/b8d8d18f2baf674acedb7504c7cc83.jpg); } .allornonewrap .secondcol > .ogl-shipIcon:not(.ogl-prefab) { cursor:pointer; } .allornonewrap .secondcol > .ogl-shipIcon:not(.ogl-prefab):hover { border:2px solid var(--hoverLight) !important; opacity:1; } .allornonewrap #sendall, .allornonewrap #resetall { background:#d09200; border:2px solid #cc9213; border-radius:4px; box-shadow:inset 0 -14px rgba(0,0,0,.15); box-sizing:border-box; color:#fff !important; position:relative; height:32px; text-shadow:1px 1px 0 rgba(0,0,0,.3); transform:rotate(0.03deg); width:32px; font-family:'Material Icons' !important; font-weight:normal !important; font-style:normal !important; font-size:inherit !important; line-height:inherit !important; letter-spacing:normal; text-transform:none; display:inline-block; white-space:nowrap; word-wrap:normal; direction:ltr; -webkit-font-feature-settings:'liga'; -webkit-font-smoothing:antialiased; } .allornonewrap #sendall:before, .allornonewrap #resetall:before { content:'double_arrow'; font-size:24px; height:30px; left:0; line-height:30px; position:absolute; text-align:center; top:0; width:30px; } .allornonewrap #resetall { background:#9e1b1b; border-color:#a01414; } .allornonewrap #resetall:before { content:'exposure_zero'; } .allornonewrap #sendall:hover, .allornonewrap #resetall:hover { background:var(--hover); border:2px solid var(--hoverLight); } .allornonewrap .ogl-shipIcon.ogl-active { border-color:#fff; opacity:1 !important; } .allornonewrap .ogl-shipIcon { border-color:#222b33 !important; } tr[data-nexttarget="true"] .ogl-type:after, .ogl-targetItem.ogl-nextTarget:after { background:#fff; border-radius:50%; bottom:2px; content:''; height:5px; position:absolute; right:2px; width:5px; } .sprite, .sprite:before, .sprite:after { background-image:var(--quality); } .ogl-expeRatio { position:relative; } .ogl-expeRatio > div:nth-child(1), .ogl-expeRatio > div:nth-child(2) { background:#222b33; box-shadow:-2px 0 3px rgba(0,0,0,.4); color:#fff; cursor:pointer; font-size:12px; font-weight:bold; height:16px; line-height:16px; margin-left:-12px; position:relative; text-align:center; user-select:none; width:16px; z-index:1; } .ogl-expeRatio > div:nth-child(1):hover, .ogl-expeRatio > div:nth-child(2):hover { background:var(--hover); } .ogl-expeRatio > div:nth-child(1) { border-bottom:none; border-radius:0 4px 0 0; } .ogl-expeRatio > div:nth-child(2) { border-radius:0 0 4px 0; } .ogl-expeRatio > div:nth-child(3) { position:absolute; right:0; top:9px; } .ogl-shipPicker { display:grid; grid-gap:5px; grid-template-columns:repeat(4, 1fr); } .ogl-shipPicker .ogl-shipIcon { border-color:#3d4f63; border-radius:4px !important; cursor:pointer; } .ogl-shipIcon.ogl-0.ogl-active { border-color:#3d4f63 !important; } .ogl-shipPicker .ogl-shipIcon:hover { border-color:var(--hoverLight) !important; } .ogl-emptyGrid { color:#fff; display:grid; font-size:10px; font-weight:normal; float:right; grid-gap:5px; grid-template-columns:repeat(3, auto); margin:0 16px; overflow:hidden; width:fit-content; } .ogl-emptyShip { background:#3c1414; border:1px solid #000; border-radius:3px; display:grid; grid-template-columns:15px auto; line-height:15px; } .ogl-emptyGrid .ogl-shipIcon { border:none !important; border-right:1px solid #000 !important; border-radius:0 !important; height:15px; width:15px; } .ogl-emptyShip span { display:inline-block; padding:0 8px; } #fleetdispatchcomponent #warning p { margin:30px auto 18px auto; } .ogl-notEnough input { background:#ff9797 !important; outline:2px solid #a23939; } #banner_skyscraper { left:1020px !important; } .ogl-draggable { box-shadow:0 0 20px 3px #000; position:relative; touch-action:none; user-select:none; z-index:100; } .smallplanet:not([data-multi]) { margin-top:5px !important; } .smallplanet[data-multi="0"]::before { border:2px solid #ffdb2d; } .smallplanet[data-multi="1"]::before { border:2px solid #8bc34a; } .smallplanet[data-multi="2"]::before { border:2px solid #d24c9c; } .smallplanet[data-multi="3"]::before { border:2px solid #03a9f4; } .smallplanet[data-multi="4"]::before { border:2px solid #f57c00; } .smallplanet[data-multi="5"]::before { border:2px solid #d2d2d2; } .smallplanet[data-multi="6"]::before { border:2px solid #009688; } .smallplanet[data-multi="7"]::before { border:2px solid #d41c1c; } .smallplanet[data-multi="8"]::before { border:2px solid #3f51b5; } .smallplanet[data-multi]::before { border-right:0; content:''; display:block; height:39px; left:-6px; position:absolute; top:-23px; width:3px; } .ogl-mainTitle { padding-right:10px; } .ogl-mainTitle h1 { color:var(--hoverLight); font-size:20px; } .ogl-mainTitle h1 b { color:#fff; font-size:14px; } .ogl-panelOptions { display:grid; grid-gap:4px; grid-template-columns:repeat(7, 1fr); justify-items:center; margin-bottom:5px; padding:4px 5px 0 3px; position:absolute; text-align:center; top:37px; user-select:none; width:139px; } .ogl-panel { color:#6f9fc8; cursor:pointer; font-size:14px; line-height:14px; opacity:.9; text-align:right; text-shadow:1px 1px #000; transition:color .2s, font .2s; width:100%; } .ogl-panel:nth-child(1) { grid-column:-4; } .ogl-panel:hover { color:var(--hoverLight); } .ogl-panel.ogl-active { color:#fff; } .ogl-panelTotalRes, .ogl-panelTotalProd { background:#0d1014; border:1px solid #000; display:none; font-size:12px; padding:4px; text-align:right; } #rechts[data-panel="1"] .ogl-panelTotalRes, #rechts[data-panel="2"] .ogl-panelTotalProd { display:block; } .ogl-sumIcon { float:left; font-size:20px; opacity:.5; } `);