NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @version 2.1.2 // @name OGame 5: Imperium Optimise // @autor Sergio Flores Genis (MrGenis) // @collaborator Chewbaka69 // @date 2019-02-14 // @namespace Ogame // @description Generates summary of resources on planets, moons and flights. And Optimise for Ogame UI+++UI and AntiGame // @include *.ogame.gameforge.*/game/* // @icon https://i.imgur.com/UVCIYlt.png // @grant unsafeWindow // @require https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js // @updateURL https://openuserjs.org/meta/Chewbaka69/OGame_Imperio.meta.js // @downloadURL https://openuserjs.org/install/Chewbaka69/OGame_Imperio.user.js // @license MIT // ==/UserScript== var __VERSION__ = '2.1.2'; var UPDATE = '2020-05-15'; /** * changelog : 2.1.0 (2019-02-14) * Fix error and update require * * changelog : 2.0.5 (2017-06-16) * Optimise for other plugin * * changelog : 2.0.1 (2016-06-14) * New code for new format * * changelog : 1.1.9.6 (2016-02-11) * Fix for the style of the moons recusos table. * Add the column to see the number of large cargo ships to move resources. * * changelog : 1.1.9.5bis (2016-02-08) * Page detection was resolved to include in OGAME * * changelog : 1.1.9.5 (2016-01-26) * Correction of the size of icons on planets and moons. * * changelog : 1.1.9.4 (2016-01-19) * Now the planets are ordered based on the coordinates * * changelog : 1.1.9.3 (2015-09-23) * Fixed error recognition "Tampermonkey" (Chrome) * Correction to detect flights not target own planets. */ function initUi(e, t) { ui.inline.costructionAssistant(), ui.inline.shortcodes(e), function(e) { function r(e) { n.classList.contains("selected") ? (t.hide(), n.classList.remove("selected")) : (t.show(), n.classList.add("selected")) } var n = utils.createElement("a", { href: "javascript:void(0);", "class": "menubutton" }); n.innerHTML = '<span class="textLabel">Imperium</span>'; var i = utils.createElement("ul", { id: "menuTableImperium", "class": "leftmenu" }, utils.createElement("li", null, utils.createElement("span", { "class": "menu_icon" }, utils.createElement("div", { "class": "menuImage ogi2" })), n)), s = utils.createElement("div", { style: "float:left" }, i); e.parentElement.insertBefore(s, e.nextSibling), n.onclick = function(e) { r(e), e.preventDefault() } }(document.getElementById("menuTable")); var r = new ui.clazz.ResourcesProduction(e), n = new ui.clazz.ResourcesProductionDetails(e), i = new ui.clazz.ResourcesStellars(e), s = utils.createElement("div", { "class": "credit" }, utils.format("Ogame: Imperium - {0} ", __VERSION__), utils.createElement("span", null, "by MrGenis")); t.container.appendChild(s), t.container.appendChild(r.table), t.container.appendChild(n.table), t.container.appendChild(i.container), document.head.appendChild(ui.css.style()) } var utils; ! function(e) { function t(e, t, r) { return void 0 === r && (r = 0), e.indexOf(t, r) === r } function r(e, t) { var r = new RegExp("(\\d+\\.\\d{" + t + "})(\\d)"), n = e.toString().match(r); return n ? parseFloat(n[1]) : parseFloat(e.toString()) } function n(e) { return e && c(e) ? (e.jquery || (e = jQuery(e)), "" != e.attr("title") ? e.attr("title") : e.data("tipped_restore_title")) : "" } function i(e, t, r) { void 0 === t && (t = "innerHTML"), void 0 === r && (r = null); var n = document.querySelector(e); if (!n) return null; for (var i = t.split("."), s = 0; s < i.length - 1; s++) { if (!n[i[s]]) return null; n = n[i[s]] } return a(n[i[s]], r) } function s(e) { return e ? parseInt(e.replace(/[^\d\-]/g, "")) : null } function a(e, t, r) { if (void 0 === t && (t = null), void 0 === r && (r = 0), !e) return null; if (e = e.toString(), null == t) return s(e); var n = e.match(t); return n ? s(n[r]) : null } function o(e, t) { void 0 === t && (t = {}); for (var r = [], n = 2; n < arguments.length; n++) r[n - 2] = arguments[n]; var i = document.createElement(e); for (var s in t) i.setAttribute(s, t[s]); 1 == r.length && Array.isArray(r[0]) && (r = r[0]); for (var a = 0; a < r.length; a++) { var o = r[a]; c(o) || (o = document.createTextNode(o)), i.appendChild(o) } return i } function l() { for (var e = [], t = 0; t < arguments.length; t++) e[t - 0] = arguments[t]; var r = o("div"); return 1 == e.length && Array.isArray(e[0]) && (e = e[0]), e.forEach(function(e) { c(e) || (e = document.createTextNode(e)), r.appendChild(e) }), r.innerHTML } function u(e) { return e && "[object Function]" == f.toString.call(e) } function c(e) { return "object" == typeof Node ? e instanceof Node : e && "object" == typeof e && "number" == typeof e.nodeType && "string" == typeof e.nodeName } function d(e) { return "object" == typeof HTMLElement ? e instanceof HTMLElement : e && "object" == typeof e && null !== e && 1 === e.nodeType && "string" == typeof e.nodeName } function p(e, t, r) { if (void 0 !== t && null !== t) { for (var n = Object.keys(t), i = 0; i < n.length; i++) e[n[i]] = t[n[i]]; return r ? e : void 0 } } function h(e, t, r, n, i) { void 0 === r && (r = !1), void 0 === n && (n = !1), void 0 === i && (i = !1), Object.defineProperty(e, t, { enumerable: r, writable: n, configurable: i }) } function m(t, r, n, i) { void 0 === r && (r = "_blank"), void 0 === n && (n = {}), void 0 === i && (i = !0); for (var s = "", a = Object.keys(n), o = 0; o < a.length; o++) { var l = a[o], u = n[l]; s += e.format("{0}={1},", l, u) } return e._window.open(t, r, s, i) } var f = {}; e.gmEnable = "function" == typeof GM_getResourceURL, e._window = "undefined" != typeof unsafeWindow ? unsafeWindow : window, e.startWith = t, e.trunc = r, e.getTitle = n, e.getIntByQuery = i, e.parseInteger = s, e.parseIntRx = a, e.createElement = o, e.node2HTMLText = l, e.isFunction = u, e.isNode = c, e.isElement = d, e.joinMaps = p, e.define = h, e.winOpen = m }(utils || (utils = {})); var utils; ! function(e) { function t(e, t, r) { if (void 0 === t && (t = null), void 0 === r && (r = null), !isFinite(this)) return "NaN"; var n = this; if ("o" == e) n = parseInt(this).toString(8); else if ("x" == e) n = parseInt(this).toString(16).toLowerCase(); else if ("X" == e) n = parseInt(this).toString(16).toUpperCase(); else if ("d" == e || !e) { var i = new RegExp("(\\-)?(\\d+)(?:\\.(\\d+))?"), a = this.toString().match(i), o = a[1] || "", l = parseInt(a[2]), u = parseInt(a[3]); if (null != r && r >= 0 && !isNaN(u) && (0 == r ? u = NaN : (u = u.toString().substring(0, r), u += Array(r - u.length + 1).join("0"))), t) { if (t.indexOf(",") > -1 && l.toString().length > 3) { for (var c = "", d = l.toString().split(""), p = 1; d.length > 0; p++) c = d.pop() + c, 3 == p && (p = 0, c = s.strformat.cThousand + c); l = c } t.indexOf("+") > -1 ? this > 0 && (o = "+") : t.indexOf("#") > -1 && this > 0 && (o = " ") } n = o + l + (isNaN(u) ? "" : s.strformat.cDecimal + u) } return n } function r(e, r) { var n = /{(\d+)(\$(\-)?('.)?(\d*)(s|n)([^\s\/]+)?(\/[\.\w]*)?)?}/gm; return e.replace(n, function(e, n, i) { for (var s = [], a = 3; a < arguments.length; a++) s[a - 3] = arguments[a]; if (void 0 === r[n]) return e; if (void 0 === i) return r[n].toString(); s.pop(); var o = r[n], l = { isleft: "-" == s[0], fillchar: (s[1] || " ").charAt(1), filln: parseInt(s[2]) || 0, conversion: (s[3] || "s").toLowerCase(), conversion_data: s[4], from_objet: s[5] || !1 }; try { var u = Array(l.filln + 1).join(l.fillchar); if (l.from_objet) for (var c = l.from_objet.substring(1).split("."); c.length > 0;) o = o[c.shift()]; if ("n" == l.conversion) if (l.conversion_data) { var d = l.conversion_data.match(/(d|o|x|X)?([\+#,)]+)?(?:\.(\d+))?/); d.shift(), o = t.apply(o, d) } else o = o.toString(); else o = o.toString(); var p = o.length; return u = u.substring(p), l.isleft ? o += u : o = u + o, o } catch (h) { console.error("format(): ", e, ", val: ", r[n], " \nparams: ", l, " \n", h) } return e }) } function n(e) { for (var t = [], n = 1; n < arguments.length; n++) t[n - 1] = arguments[n]; return r(e, t) } var i = 1000.1.toLocaleString(), s = { strformat: { cThousand: unsafeWindow.LocalizationStrings.thousandSeperator, cDecimal: i.charAt(i.length - 2) } }; e.format = n }(utils || (utils = {})); var utils; ! function(e) { function t(e, t, r, n) { if (void 0 === n && (n = null), !e.__observable__[t]) { var s = e[t]; delete e[t] && (e.__observable__[t] = i(e, t, s)) } return e.__observable__[t].listeners.push(r), e.__observable__[t].root.push(n), e.__observable__[t].listeners.length } function r(e, t, r) { if (!e.__observable__[t]) return !1; for (var n = e.__observable__[t], i = 0; i < n.listeners.length; i++) if (n.listeners[i] === r) { var s = delete n.listeners[i], a = delete n.root[i]; return s && a } return !1 } function n(t, r, n, i) { var s = r.value; if (s !== n) for (var a = 0; a < r.listeners.length; a++) { var o = r.root[a] || i; setTimeout(function(t, r, i) { try { r.call(i, t, s, n) } catch (a) { var o = e.tracing(a); console.error("ERROR! => Observable#callback", ".\n callback: ", r, ".\n root: ", i, ".\n property: ", t, ".\n values: old: ", s, " -> new: ", n, ".\n", o.toString()) } }, 1, t, r.listeners[a], o), r.value = n } } function i(e, t, r) { var i = { value: r, listeners: [], root: [] }; return Object.defineProperty(e, t, { enumerable: !0, configurable: !0, get: function() { return i.value }, set: function(e) { n(t, i, e, this) } }), i } function s(n, i) { if (!n.__observable__) { var s = {}; n.__observable__ = s, n.observableHash = i || (new Date).getTime().toString(), n.observablesOn = !0, n.listen = function(e, r, n) { return void 0 === n && (n = null), t(this, e, r, n) }, n.remove = function(e, t) { return r(this, e, t) }, e.define(n, "observablesOn", !1, !0, !1), e.define(n, "observableHash", !1), e.define(n, "__observable__"), e.define(n, "listen"), e.define(n, "remove") } return n } e.observable = s }(utils || (utils = {})); var utils; ! function(e) { function t(e) { return new r(e) } var r = function() { function t(e) { this.trace = []; try { this.message = e.message; var t = e.stack.split("\n"); for (var r in t) { if (r == t.length - 1) break; var n = t[r].split("@"), i = n[0]; 0 == i.length && (i = "root"); var s = n[1]; s = s.match(/([\d]+:[\d]+)$/g)[0], this.trace.push({ fnc: i, line: s }) } } catch (a) { console.error("ErrorTracing : ", e.message, e.stack.split("\n"), "\n.", a) } } return t.prototype.toString = function() { for (var t = "Message: " + this.message + "\n", r = 0; r < this.trace.length; r++) t += e.format("{0$-10s} # {1}\n", this.trace[r].line, this.trace[r].fnc); return t }, t }(); e.tracing = t }(utils || (utils = {})); var __extends = this && this.__extends || function(e, t) { function r() { this.constructor = e } for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]); e.prototype = null === t ? Object.create(t) : (r.prototype = t.prototype, new r) }, utils; ! function(e) { function t(e) { return void 0 === e && (e = 0), new a(e) } function r(e) { return void 0 === e && (e = 0), new o(e) } function n(t, r) { return void 0 === t && (t = 0), void 0 === r && (r = null), e.observable(new l(t), r) } function i(t, r) { return void 0 === t && (t = 0), void 0 === r && (r = null), e.observable(new u(t), r) } function s(t, r) { return void 0 === t && (t = 0), void 0 === r && (r = null), e.observable(new c(t), r) } var a = function() { function e(e) { void 0 === e && (e = 0), this.metal = e, this.crystal = e, this.deuterium = e } return e }(), o = function() { function e(e) { void 0 === e && (e = 0), this.metal = e, this.crystal = e, this.deuterium = e, this.energy = e } return e }(), l = function(e) { function t() { e.apply(this, arguments) } return __extends(t, e), t.prototype.reset = function() { this.metal = 0, this.crystal = 0, this.deuterium = 0 }, t }(a), u = function(e) { function t() { e.apply(this, arguments) } return __extends(t, e), t.prototype.reset = function() { this.metal = 0, this.crystal = 0, this.deuterium = 0, this.energy = 0 }, t }(o), c = function() { function e(e) { void 0 === e && (e = 0), this.metal = e, this.crystal = e, this.deuterium = e, this.energy_using = e, this.energy_generate = e, this.energy = e } return e.prototype.reset = function() { this.metal = 0, this.crystal = 0, this.deuterium = 0, this.energy_using = 0, this.energy_generate = 0, this.energy = 0 }, e }(); e.resources3 = t, e.resources4 = r, e.resources3Observable = n, e.resources4Observable = i, e.resourcesProduction = s }(utils || (utils = {})); var utils; ! function(e) { var t; ! function(e) { function t(e, t) { if ("function" != typeof t) throw new TypeError("callback must be a function"); for (var r, n = Object(e), i = n.length >>> 0, s = arguments[1], a = 0; i > a; a++) if (r = n[a], t.call(s, r, a, n)) return r; return null } e.find = t }(t = e.array || (e.array = {})) }(utils || (utils = {})); var game; ! function(e) { var t; ! function(t) { function r(e) { var t = document.getElementsByName("ogame-" + e).item(0); return t.getAttribute("content") } t.keys = { AccountOverviewImage: "OverviewImage", AccountFlightSound: "FlightSound", AccountResearchers: "researchers", StellarTechnologies: "technologies", StellarProduction: "production", ServerLocalization: "ServerLocalization" }, Object.freeze(e.db.keys), utils.define(e.db, "keys", !0); var n = function() { function e(e) { this.mask = "", this.mask = "OGI_" + e, utils.define(this, "mask") } return e.prototype.get = function(e, t) { void 0 === t && (t = 0); var r = localStorage.getItem(this.mask + e) || t; return JSON.parse(r) }, e.prototype.set = function(e, t) { var r = JSON.stringify(t); localStorage.setItem(this.mask + e, r) }, e.prototype.has = function(e) { return null != this.get(e, null) }, e.prototype.remove = function(e) { localStorage.removeItem(this.mask + e) }, e.prototype.getMapKey = function(e, t, r) { void 0 === r && (r = null); var n = this.get(e, "{}"); return n[t] || r }, e.prototype.setMapKey = function(e, t, r) { var n = this.get(e, "{}"); n[t] = r, this.set(e, n) }, e.prototype.hasMapKey = function(e, t) { return null != this.getMapKey(e, t, null) }, e.prototype.removeMapKey = function(e, t) { var r = this.get(e, "{}"); delete r[t], this.set(e, r) }, e }(), i = function(e) { function t() { var t = r("universe"), n = r("player-id"); t = t.split(".", 1)[0].replace("-", "") + "_", t += n + "_", e.call(this, t.toUpperCase()) } return __extends(t, e), t }(n), s = function(e) { function t() { var t = r("universe"); t = t.split(".", 1)[0].replace("-", "") + "_", e.call(this, t.toUpperCase()) } return __extends(t, e), t }(n); t.universe = new s, t.player = new i, utils.define(e.db, "universe"), utils.define(e.db, "player") }(t = e.db || (e.db = {})) }(game || (game = {})); var game; ! function(e) { var t; ! function(e) { function t(e) { return 5e3 * utils.trunc(2.5 * Math.pow(Math.E, 20 * e / 33), 0) } e.storageResource = t; var r; ! function(e) { function t(e, t) { return Math.ceil(t * e * 10 * Math.pow(1.1, e)) } function r(e, t) { return Math.ceil(10 * t * e * Math.pow(1.1, e)) } function n(e, t) { return Math.floor(20 * t * e * Math.pow(1.1, e)) } function i(e, t, r) { return Math.floor(t * r * (20 * e * Math.pow(1.1, e))) } function s(e, t, r, n) { return Math.floor(t * r * (30 * e * Math.pow(1.05 + .01 * n, e))) } function a(e, t, r, n) { var i = Math.floor(e * t * r * Math.floor((n + 140) / 6)); return 0 > i ? 0 : i } e.metal = t, e.crystal = r, e.deuterium = n, e.solar = i, e.fusion = s, e.satellite = a }(r = e.energy || (e.energy = {})) }(t = e.fn || (e.fn = {})) }(game || (game = {})); var game; ! function(e) { var t; ! function(t) { function r(e, t) { void 0 === t && (t = !1); var r = []; e.replace(/[\[\]]/g, "").split(":").forEach(function(e) { r.push(parseInt(e)) }); var n = new a; return n.galaxy = r[0], n.system = r[1], n.planet = r[2], n.ismoon = t, Object.seal(n), n } function n() { var e = utils.resourcesProduction(0); e.metal = utils.getIntByQuery("#resources_metal"), e.crystal = utils.getIntByQuery("#resources_crystal"), e.deuterium = utils.getIntByQuery("#resources_deuterium"), e.energy = utils.getIntByQuery("#resources_energy"); var t = utils.getTitle(document.getElementById("energy_box")).split(/td/g); return e.energy_generate = utils.parseInteger(t[3]), e.energy_generate = utils.parseInteger(t[5]), e } function i(e) { var t = document.getElementsByName("ogame-" + e).item(0); return t.getAttribute("content") } function s() { if (!e.isCurrentPage("resources,station,shipyard,defense,research,fleet1")) return null; var t = {}; try { if (e.isCurrentPage("fleet1")) { for (var r = 0; r < e.ships.IDs.length; r++) t[e.ships.IDs[r]] = 0; var n = document.getElementById("shipsChosen"); if (n) for (var i = n.querySelectorAll("li[id^=button]"), r = 0; r < i.length; r++) { var s = i.item(r), a = utils.parseInteger(s.id), o = utils.parseInteger(s.querySelector(".level").innerText); t[a] = o } } else for (var i = document.getElementById("buttonz").querySelectorAll("[id^=details]"), r = 0; r < i.length; r++) { var l = i.item(r), a = utils.parseInteger(l.getAttribute("ref")), o = utils.parseInteger(l.querySelector(".level").innerText); t[a] = o } } catch (u) { t = null; var c = utils.tracing(u); console.error("ERROR! game.tools.fn#readTechs: ", c.toString()) } return t } var a = function() { function e() { this.ismoon = !1 } return e.prototype.toString = function() { return utils.format("[{0}:{1}:{2}]", this.galaxy, this.system, this.planet) }, Object.defineProperty(e.prototype, "inarray", { get: function() { return [this.galaxy, this.system, this.planet] }, enumerable: !0, configurable: !0 }), e.prototype.compareTo = function(e) { var t = this.galaxy - e.galaxy; return 0 === t && (t = this.system - e.system), 0 === t && (t = this.planet - e.planet), 0 === t && (t = this.ismoon ? 1 : -1), t }, e.prototype.equalsTo = function(e) { return this.galaxy == e.galaxy && this.system == e.system && this.planet == e.planet && this.ismoon == e.ismoon }, e }(); t.parseCoords = r, t.currentResources = n, t.meta = i, t.readTechs = s, t.ResearchersID = [113, 120, 121, 114, 122, 115, 117, 118, 106, 108, 124, 123, 199, 109, 110, 111], function(e) { e[e.METAL = 0] = "METAL", e[e.CRYSTAL = 1] = "CRYSTAL", e[e.DEUTERIUM = 2] = "DEUTERIUM" }(t.Resources3Enum || (t.Resources3Enum = {})); t.Resources3Enum; ! function(e) { e[e.METAL = 0] = "METAL", e[e.CRYSTAL = 1] = "CRYSTAL", e[e.DEUTERIUM = 2] = "DEUTERIUM", e[e.ENERGY = 3] = "ENERGY" }(t.Resources4Enum || (t.Resources4Enum = {})); t.Resources4Enum; ! function() { utils.define(e.utilities, "ResearchersID", !0), utils.define(e.utilities, "Resources3Enum", !0), utils.define(e.utilities, "Resources4Enum", !0), Object.freeze(e.utilities.ResearchersID), Object.freeze(e.utilities.Resources3Enum), Object.freeze(e.utilities.Resources4Enum) }() }(t = e.utilities || (e.utilities = {})) }(game || (game = {})); var game; ! function(e) { e.lang = {}; var t = function() { function t() { this.current = e.utilities.meta("language"), e.lang[this.current] || (this.current = "en") } return t.prototype.t = function(t) { var r = e.lang[this.current], n = t; if (r) try { var i = [t]; for (n = r[i.shift()]; i.length > 0;) n = n[i.shift()] } catch (s) { var a = utils.tracing(s); console.error("Imperium (Lang): ", a.toString()), n = t } return n || (n = t), n }, t }(); e.language = new t }(game || (game = {})); var game; ! function(e) { var t; ! function(t) { function r() { var e; if (u.has(a)) { var t = jQuery.Deferred(); t.resolve(u.get(a)), e = t.promise() } else e = jQuery.ajax({ method: "get", url: "/api/localization.xml", cache: !0, dataType: "json", global: !1, dataFilter: function(e) { var t = { techs: {}, missions: {} }; try { for (var r = jQuery.parseXML(e), n = r.firstChild, i = n.childNodes, s = i.item(0), o = i.item(1), l = 0; l < s.childElementCount; l++) { var c = s.children.item(l); t.techs[c.id] = c.innerHTML } for (var l = 0; l < o.childElementCount; l++) { var c = o.children.item(l); t.missions[c.id] = c.innerHTML } u.set(a, t) } catch (d) { var p = utils.tracing(d); console.error("ERROR! (game.localization) promise => ", p.toString()) } return JSON.stringify(t) } }); return e.done(function(e) { o = e.techs, l = e.missions }), e } function n(e) { return void 0 === e && (e = !1), e && (u.remove(a), o = null, l = null), r() } function i(e) { return o[e] ? o[e] : "TH" + e } function s(e) { return l[e] ? l[e] : "M" + e } var a = e.db.keys.ServerLocalization, o = {}, l = {}, u = e.db.universe; t.load = n, t.technology = i, t.mision = s, t.firstPromise = n() }(t = e.localization || (e.localization = {})) }(game || (game = {})); var game; ! function(e) { var t; ! function(t) { function r() { return jQuery.ajax({ cache: !1, dataType: "json", global: !1, method: "post", url: "/game/index.php?page=traderOverview", data: { ajax: 1, show: "importexport" }, dataFilter: function(e) { for (var t = e.match(/<script\b[^>]*>([\s\S]*?)<\/script>/gm), r = t[0].match(/planetResources=({[\s\S]*?});/gm), n = JSON.parse(r[0].slice(16, -1)), i = {}, s = Object.keys(n), a = 0; a < s.length; a++) { var o = s[a]; i[o] = n[o].input } return JSON.stringify(i) } }) } function n() { return r() } function i() { var e = jQuery.Deferred(function() { return jQuery.ajax({ cache: !1, dataType: "json", global: !1, method: "get", url: "/game/index.php?page=fetchResources", dataFilter: function(e) { var t = null; try { var r = JSON.parse(e), n = utils.resourcesProduction(0); n.metal = r.metal.resources.production, n.crystal = r.crystal.resources.production, n.deuterium = r.deuterium.resources.production, n.energy = r.energy.resources.actual; var i = r.energy.tooltip.replace(/\n/, "").split(/<\s*tr/); return n.energy_generate = utils.parseInteger(i[2]), n.energy_using = utils.parseInteger(i[3]), JSON.stringify(n) } catch (s) { utils.tracing(s); console.error("ERROR! game.resources.production: ", s.toString()) } return t } }).done(function(t) { e.resolve(t) }) }); return e.promise() } function s() { return i() } function a() { var t = jQuery.Deferred(function() { jQuery.ajax({ method: "get", global: !1, dataType: "json", url: "/game/index.php?page=fetchTechs&ajax=1" }).done(function(r) { var n = {}; e.utilities.ResearchersID.forEach(function(e) { n[e] = r[e], delete r[e] }), t.resolve(r, n) }) }); return t.promise() } function o() { return a() } t.resources = n, t.production = s, t.technologies = o }(t = e.request || (e.request = {})) }(game || (game = {})); var game; ! function(e) { var t; ! function(t) { function r(e, t, r) { void 0 === e && (e = 0), void 0 === t && (t = 0), void 0 === r && (r = 0); var n = utils.resources3(0); return n.metal = e, n.crystal = t, n.deuterium = r, Object.freeze(n), n } function n(e) { var t = u[e]; return void 0 === t ? null : t } function i(t) { var r = utils.array.find(e.ships.IDs, function(e) { return t == u[e].name }); return null == r ? null : u[r] } t.IDs = [204, 205, 206, 207, 215, 211, 213, 214, 202, 203, 208, 209, 210, 212], function(e) { e[e.Military = 1] = "Military", e[e.Civil = 2] = "Civil" }(t.Type || (t.Type = {})); t.Type; ! function(e) { e[e.Attack = 1] = "Attack", e[e.ACSAttack = 2] = "ACSAttack", e[e.Transport = 3] = "Transport", e[e.Deployment = 4] = "Deployment", e[e.ACSDefend = 5] = "ACSDefend", e[e.Espionage = 6] = "Espionage", e[e.Colonisation = 7] = "Colonisation", e[e.Recycle = 8] = "Recycle", e[e.MoonDestruction = 9] = "MoonDestruction", e[e.Expedition = 15] = "Expedition" }(t.MissionType || (t.MissionType = {})); t.MissionType; ! function() { utils.define(e.ships, "IDs", !0), utils.define(e.ships, "Type", !0), utils.define(e.ships, "MissionType", !0), Object.freeze(e.ships.IDs), Object.freeze(e.ships.Type), Object.freeze(e.ships.MissionType) }(); var s = { 204: r(3e3, 1e3), 205: r(6e3, 4e3), 206: r(2e4, 7e3, 2e3), 207: r(45e3, 15e3), 215: r(3e4, 4e4, 15e3), 211: r(5e4, 25e3, 15e3), 213: r(6e4, 5e4, 15e3), 214: r(5e6, 4e6, 1e6), 202: r(2e3, 2e3), 203: r(6e3, 6e3), 208: r(1e4, 2e4, 1e4), 209: r(1e4, 6e3, 2e3), 210: r(0, 1e3), 212: r(0, 2e3, 500) }, a = { 204: 50, 205: 100, 206: 800, 207: 1500, 215: 750, 211: 500, 213: 2e3, 214: 1e6, 202: 5e3, 203: 25e3, 208: 7500, 209: 2e4, 210: 0, 212: 0 }, o = { 204: 20, 205: 75, 206: 300, 207: 500, 215: 250, 211: 1e3, 213: 1e3, 214: 1, 202: 20, 203: 50, 208: 1e3, 209: 300, 210: 1, 212: 0 }, l = { 204: 12500, 205: 1e4, 206: 15e3, 207: 1e4, 215: 1e4, 211: 5e3, 213: 5e3, 214: 100, 202: 1e4, 203: 7500, 208: 2500, 209: 2e3, 210: 1e8, 212: 0 }, u = {}, c = function() { function e(e, t) { this.id = e, this.name = t, utils.define(this, "id", !0) } return Object.defineProperty(e.prototype, "cargo", { get: function() { return a[this.id] }, enumerable: !0, configurable: !0 }), Object.defineProperty(e.prototype, "cost", { get: function() { return s[this.id] }, enumerable: !0, configurable: !0 }), Object.defineProperty(e.prototype, "intake", { get: function() { return o[this.id] }, enumerable: !0, configurable: !0 }), e.prototype.speed = function(e, t, r) { var n = l[this.id]; return 202 == this.id ? n + n * (t >= 5 ? .2 * t : .1 * e) : 211 == this.id ? n + n * (r >= 8 ? .3 * r : .2 * t) : 209 == this.id ? n + n * (r >= 15 ? .3 * r : t >= 17 ? .2 * t : .1 * e) : [210, 203, 204].indexOf(this.id) > -1 ? n + .1 * n * e : [206, 205, 208].indexOf(this.id) > -1 ? n + .2 * n * t : [207, 215, 213, 214].indexOf(this.id) > -1 ? n + .3 * n * t : n }, e }(); jQuery.when(e.localization.firstPromise).then(function(t) { e.ships.IDs.forEach(function(e) { u[e] = new c(e, t.techs[e]) }) }), t.getById = n, t.getByName = i }(t = e.ships || (e.ships = {})) }(game || (game = {})); var game; ! function(e) { function t(e) { var t = document.querySelector("meta[name=ogame-" + e + "]"); return t ? t.getAttribute("content") : null } function r(e) { for (var t = e.split(","), r = !1, n = 0; n < t.length && !r; n++) r = t[n].trim() == unsafeWindow.currentPage; return r } e.ajax = jQuery.when(e.localization.firstPromise), e.meta = t, e.playerID = parseInt(t("player-id")), e.currentPlanetID = parseInt(t("planet-id")), e.currentPlanetType = t("planet-type"), e.isCurrentPage = r, function() { utils.define(e, "playerID", !0), utils.define(e, "currentPlanetID", !0), utils.define(e, "currentPlanetType", !0) }() }(game || (game = {})); var account; ! function(e) { var t; ! function(e) { function t(e, t) { void 0 === t && (t = !1), t && game.db.player.remove(e.id); var r = game.utilities.readTechs(), n = e.id, i = game.db.player.has(n), s = null, a = null; game.isCurrentPage("research") && (s = r, r = null); var o = !1, l = null, u = null; return i ? (a = r, game.isCurrentPage("resources") ? o = e.tech(1) !== a[1] || e.tech(2) !== a[2] || e.tech(3) !== a[3] || e.tech(4) !== a[4] || e.tech(12) !== a[12] || e.tech(212) !== a[212] : game.isCurrentPage("shipyard") && (o = e.tech(212) !== a[212]), l = jQuery.Deferred(function(e) { return e.resolve(a, s) }).promise()) : (o = !0, l = game.request.technologies()), u = !o && game.db.player.hasMapKey(n, game.db.keys.StellarProduction) ? jQuery.Deferred(function(e) { return e.resolve(null) }).promise() : game.request.production(), jQuery.when(l, u).always(function(t, r) { //console.info("account.inline.updateStellar#always: ", e.name, " \n", "@ stella :", null !== t[0], " \n", "@ researchers :", null !== t[1], " \n", "@ production :", null !== r) }) }! function(e) { if (game.isCurrentPage("resourceSettings")) { var t = document.getElementsByTagName("form")[0]; t.addEventListener("submit", function() { game.db.player.removeMapKey(e, game.db.keys.StellarProduction) }) } }(game.currentPlanetID), e.updateStellar = t }(t = e.inline || (e.inline = {})) }(account || (account = {})); var account; ! function(e) { function t(e) { var t = game.db.player.get(e.id, !1); t && (utils.joinMaps(e.production, t.production || {}), utils.joinMaps(e.technologies, t.technologies || {}), e.storage.metal = game.fn.storageResource(e.tech(22, NaN)), e.storage.crystal = game.fn.storageResource(e.tech(23, NaN)), e.storage.deuterium = game.fn.storageResource(e.tech(24, NaN))) } function r(e) { var t = {}; t[game.db.keys.StellarTechnologies] = e.technologies, t[game.db.keys.StellarProduction] = e.production, game.db.player.set(e.id, t) } function n(e) { var t = game.request.resources(); t.done(function(t) { for (var r = 0; r < e.all.length; r++) { var n = e.all[r].id; utils.joinMaps(e.all[r].resources, t[n]) } }) } var i = function() { function e(e) { this.id = NaN, this.name = "", this.coords = null, this.isMoon = !1, this.moonID = null, this.tempMin = null, this.technologies = {}, this.id = e, utils.define(this, "id", !0), this.storage = utils.resources3Observable(NaN, this.id + "/Storage"), this.resources = utils.resources3Observable(0, this.id + "/Resources"), this.production = utils.resourcesProduction(NaN, this.id + "/Production") } return e.prototype.tech = function(e, t) { return void 0 === t && (t = 0), "undefined" == typeof this.technologies[e] ? t : this.technologies[e] }, e.prototype.init = function() { t(this) }, e.prototype.save = function() { r(this) }, e }(); e.Stellar = i; var s = function() { function e() { this._stellars = [], this.resources = utils.resources3Observable(0, "StellarResources"), this.resourcesInPlanets = utils.resources3Observable(0, "StellarResourcesPlanets"), this.resourcesInMoons = utils.resources3Observable(0, "StellarResourcesMoons"), this.production = utils.resources4Observable(0, "Production"); var t = function(e, t, r) { isNaN(t) && (t = 0), isNaN(r) && (r = 0), this[e] += r - t }; this.resourcesInPlanets.listen("metal", t, this.resources), this.resourcesInPlanets.listen("crystal", t, this.resources), this.resourcesInPlanets.listen("deuterium", t, this.resources), this.resourcesInMoons.listen("metal", t, this.resources), this.resourcesInMoons.listen("crystal", t, this.resources), this.resourcesInMoons.listen("deuterium", t, this.resources); for (var r = document.getElementById("planetList"), n = r.getElementsByClassName("planetlink"), s = 0; s < n.length; s++) { var a = n.item(s), o = utils.getTitle(a).split(/<br/gi), l = a.querySelector(".planet-koords").textContent, u = utils.parseIntRx(a.href, /cp=(\d+)$/gi), c = new i(u); if (c.name = a.querySelector(".planet-name").textContent, c.coords = game.utilities.parseCoords(l, !1), c.image = a.querySelector("img").src, c.tempMin = utils.parseIntRx(o[2], /(-?\d+)/g, 0), c.resources.listen("metal", t, this.resourcesInPlanets), c.resources.listen("crystal", t, this.resourcesInPlanets), c.resources.listen("deuterium", t, this.resourcesInPlanets), c.production.listen("metal", t, this.production), c.production.listen("crystal", t, this.production), c.production.listen("deuterium", t, this.production), c.production.listen("energy", t, this.production), c.init(), this._stellars.push(c), a = a.parentNode.querySelector(".moonlink")) { o = utils.getTitle(a).split(/<br/gi); var d = utils.parseIntRx(a.href, /cp=(\d+)$/gi), p = new i(d); p.isMoon = !0, p.name = o[0].match(/(.*) \[/gi)[0].slice(3, -1).trim(), p.coords = game.utilities.parseCoords(l, !0), p.image = a.querySelector("img").src, c.moonID = p.id, p.resources.listen("metal", t, this.resourcesInMoons), p.resources.listen("crystal", t, this.resourcesInMoons), p.resources.listen("deuterium", t, this.resourcesInMoons), p.init(), this._stellars.push(p) } } e.sort(this._stellars), this.loadResources() } return Object.defineProperty(e.prototype, "planets", { get: function() { var e = []; for (var t in this._stellars) this._stellars[t].isMoon || e.push(this._stellars[t]); return e }, enumerable: !0, configurable: !0 }), Object.defineProperty(e.prototype, "moons", { get: function() { var e = []; for (var t in this._stellars) this._stellars[t].isMoon && e.push(this._stellars[t]); return e }, enumerable: !0, configurable: !0 }), Object.defineProperty(e.prototype, "all", { get: function() { return this._stellars }, enumerable: !0, configurable: !0 }), Object.defineProperty(e.prototype, "length", { get: function() { return this._stellars.length }, enumerable: !0, configurable: !0 }), e.prototype.byId = function(e) { var t = null; for (var r in this._stellars) if (this._stellars[r].id === e) { t = this._stellars[r]; break } return t }, e.prototype.byCoords = function(e, t) { void 0 === t && (t = !1); var r = game.utilities.parseCoords(e, t), n = t ? this.moons : this.planets, i = null; for (var s in n) if (n[s].coords.equalsTo(r)) { i = n[s]; break } return i }, e.prototype.loadResources = function() { n(this) }, e.sort = function(e, t) { return void 0 === t && (t = !1), e.sort(function(e, r) { if (t) { var n = e.name.toLocaleLowerCase(), i = r.name.toLocaleLowerCase(); return n.localeCompare(i) } return e.coords.compareTo(r.coords) }), e }, e }(); e.StellarCollection = s }(account || (account = {})); var account; ! function(e) { var t = game.db.keys.AccountFlightSound, r = game.db.player, n = function() { function e(e) { this.resources = utils.resources3(0), this.ships = {}, this.originMoon = !1, this.destMoon = !1, this.id = utils.parseIntRx(e.id, /(\d+)/g), this.mission = parseInt(e.dataset.missionType), this.timeArrival = parseInt(e.dataset.arrivalTime), this.endTime = new Date(1e3 * this.timeArrival), this.isDeploy = this.mission == game.ships.MissionType.Deployment, this.isReturn = "true" == e.dataset.returnFlight; var t = e.querySelector("td[class*='icon_movement'] > span"), r = utils.getTitle(t); this.analyzeDetails(r); var n = e.querySelector(".missionFleet > img"); this.icon = n.src; var i = e.querySelector(".coordsOrigin > a").textContent.trim(); this.originMoon = null !== e.querySelector(".originFleet .moon"), this.originCoords = game.utilities.parseCoords(i, this.originMoon); var s = e.querySelector(".destCoords > a").textContent; this.destMoon = null !== e.querySelector(".destFleet .moon"), this.destCoords = game.utilities.parseCoords(s, this.destMoon) } return e.prototype.analyzeDetails = function(e) { var t = e.replace(/[\n]/g, "").split("<th"); if (t[1]) { for (var r = t[1].split("<td"), n = 1; n < r.length - 2; n += 2) { var i = r[n].trim().slice(1, -6), s = game.ships.getByName(i).id, a = utils.parseInteger(r[n + 1]); this.ships[s] = a } t[2] && (r = t[2].split("<td"), this.resources.metal = utils.parseInteger(r[2]), this.resources.crystal = utils.parseInteger(r[4]), this.resources.deuterium = utils.parseInteger(r[6])) } }, e }(), i = function() { function e() { var e = this; this._flight = [], this.resources = utils.resources3Observable(0); var t = document.getElementById("eventboxContent"); t.addEventListener("DOMNodeInserted", function(t) { if (t && t.target) { var r = t.target; "eventListWrap" === r.id && setTimeout(function() { return e.loadFlights() }, 0) } }, !1); var r = document.getElementById("eventContent"); r && setTimeout(function() { return e.loadFlights() }, 0) } return Object.defineProperty(e.prototype, "all", { get: function() { return this._flight }, enumerable: !0, configurable: !0 }), e.prototype.loadFlights = function() { this.resources.reset(); for (var e = document.getElementById("eventContent"), i = e.getElementsByClassName("eventFleet"), s = [], a = [], o = 0; o < i.length; o++) try { var l = i.item(o), u = new n(l); this._flight.push(u), s.push(u.id + ""), a.push(u.id + 1), u.mission == game.ships.MissionType.Expedition && a.push(u.id + 2), -1 == a.indexOf(u.id) && (this.resources.metal += u.resources.metal, this.resources.crystal += u.resources.crystal, this.resources.deuterium += u.resources.deuterium) } catch (c) { var d = utils.tracing(c); console.error("Imperium ERROR!! account.FlightCollection : ", d.toString()) } var p = Object.keys(r.get(t, "{}")); p.forEach(function(e) { -1 == s.indexOf(e) && r.removeMapKey(t, e) }) }, e }(); e.FlightCollection = i }(account || (account = {})); var Stellar = account.Stellar, GameAccount = function() { function e() { this.researchers = {}, this.resources = utils.resources3Observable(0), this.stellars = new account.StellarCollection, this.fligths = new account.FlightCollection, this.researchers = game.db.player.get(game.db.keys.AccountResearchers, "{}"); var e = function(e, t, r) { t = t || 0, r = r || 0, this[e] += r - t }; this.stellars.resources.listen("metal", e, this.resources), this.stellars.resources.listen("crystal", e, this.resources), this.stellars.resources.listen("deuterium", e, this.resources), this.fligths.resources.listen("metal", e, this.resources), this.fligths.resources.listen("crystal", e, this.resources), this.fligths.resources.listen("deuterium", e, this.resources), this.startCurrentStellar() } return Object.defineProperty(e.prototype, "currentStellar", { get: function() { return this.stellars.byId(game.currentPlanetID) }, enumerable: !0, configurable: !0 }), e.prototype.startCurrentStellar = function(e) { var t = this; void 0 === e && (e = !1); var r = account.inline.updateStellar(this.currentStellar, e); return r.done(function(e, r) { null !== e[1] && (utils.joinMaps(t.researchers, e[1]), game.db.player.set(game.db.keys.AccountResearchers, e[1])), null !== e[0] && utils.joinMaps(t.currentStellar.technologies, e[0]), null !== r && utils.joinMaps(t.currentStellar.production, r), t.currentStellar.save(), t.currentStellar.init() }), r }, e }(), ui; ! function(e) { var t = "ogi_implements", r = function() { function e() { this._container = {}, this._keyframes = {}, document.body.classList.add(t), ["https://gist.githubusercontent.com/SergioFloresG/1ce6e2427cf5db4dbd7a416706eab876/raw/6f28353ca5f16f47f1620c745627961050d6ee15/ogimperium.flat.css", "https://gist.githubusercontent.com/SergioFloresG/1ce6e2427cf5db4dbd7a416706eab876/raw/6f28353ca5f16f47f1620c745627961050d6ee15/ogimperium.technology-x40.css"].forEach(function(e, t) { jQuery.get(e, function(e) { var r = utils.createElement("style", { media: "screen", type: "text/css", rel: "stylesheet", name: utils.format("ogi.css-ref{0$'02n}", t) }); r.innerHTML = e, document.head.appendChild(r) }) }) } return e.prototype.add = function(e, t) { return this._container[e] = t, this }, e.prototype.addGroup = function() { for (var e = [], t = 0; t < arguments.length; t++) e[t - 0] = arguments[t]; for (var r = 0; r < e.length; r++) for (var n in e[r]) this.add(n, e[r][n]); return this }, e.prototype.keyframe = function(e, t) { return this._keyframes[e] = t, this }, e.prototype.style = function() { var e = document.createElement("style"); e.type = "text/css", e.setAttribute("name", "ogi.css-injection"); for (var r = Object.keys(this._container); r.length > 0;) { for (var n = r.shift(), i = this._container[n], s = n.split(","), a = 0; a < s.length; a++) s[a] = utils.format(".{0} {1}", t, s[a]); var o = document.createTextNode(s.join(",\n") + "{\n"); for (var l in i) o.appendData(" " + l + ": " + i[l] + ";\n"); o.appendData("}\n"), e.appendChild(o) } for (var u = Object.keys(this._keyframes); u.length > 0;) { for (var c = u.shift(), d = this._keyframes[c], o = document.createTextNode(utils.format("{0}{\n", c)), p = Object.keys(d); p.length > 0;) { var h = p.shift(), m = d[h]; o.appendData(utils.format(" {0} {\n", h)); for (var f = Object.keys(m); f.length > 0;) { var g = f.shift(), b = m[g]; o.appendData(utils.format(" {0}: {1};\n", g, b)) } o.appendData(" }\n") } o.appendData("}\n"), e.appendChild(o) } return e }, e }(); e.css = new r, e.css.addGroup({ "#planet h2 a": { width: "auto !important" }, ".credit": { "text-align": "center", "font-size": "0.9em" }, ".credit > span": { color: "#fd8a1c !important" } }, { ".ogicon": { display: "inline-block" }, ".alert-default": { "background-color": "#59595a", color: "#eaecf6", border: "1px solid #e3e6f3" }, ".alert-success": { "background-color": "#3c763d", color: "#dff0d8", border: "1px solid #d6e9c6" }, ".alert-info": { "background-color": "#31708f", color: "#d9edf7", border: "1px solid #bce8f1" }, ".alert-warning": { "background-color": "#8a6d3b", color: "#fcf8e3", border: "1px solid #faebcc" }, ".alert-danger": { "background-color": "#a94442", color: "#f2dede", border: "1px solid #ebccd1" }, ".align-left": { "text-align": "left" }, ".align-center": { "text-align": "center" }, ".align-right": { "text-align": "right" }, ".bold": { "font-weight": "600" }, ".bold-hard": { "font-weight": "800" }, ".float-right": { "float": "right" }, ".float-left": { "float": "left" }, ".metal": { color: "#c6556c" }, ".crystal": { color: "deepskyblue" }, ".deuterium": { color: "cornflowerblue" }, ".color-blood": { color: "#8A0707" }, ".title": { color: "yellow" }, ".blur": { "-webkit-filter": "blur(4px)", "-moz-filter": "blur(4px)", "-ms-filter": "blur(4px)", "-o-filter": "blur(4px)", filter: "blur(4px)" }, ".technology": { "border-color": "rgba(47,79,79,1)", "border-radius": "5px", "-moz-border-radius": "5px", "-webkit-border-radius": "5px", "border-style": "solid", "border-width": "1px", position: "relative", margin: "2px", cursor: "default", "font-size": "8px" }, ".technology span": { display: "block", position: "absolute", left: "0", width: "40px", bottom: "0", "text-align": "center", "background-color": "rgba(47,79,79,0.75)", "font-weight": "bold", "border-radius": "0 0 4px 4px", "-moz-border-radius": "0 0 4px 4px", "-webkit-border-radius": "0 0 4px 4px" }, "table.ogi th": { "font-size": "1.2em", "font-weight": "bold", "text-align": "right" }, ".ul-vertical": {}, ".ul-vertical > li": { "float": "left", display: "block", width: "100%" } }, { ".resource16": { background: 'url("https://i.imgur.com/fY04Uqv.png") no-repeat', display: "block", width: "24px", height: "16px", margin: "0 5px 0 !important" }, ".resource16.metal": { "background-position": "0 0" }, ".resource16.crystal": { "background-position": "-24px 0" }, ".resource16.deuterium": { "background-position": "-48px 0" }, ".resource16.energy": { "background-position": "-72px 0" }, ".resource16.mo": { "background-position": "-96px 0" } }, { ".animation-rotate360": { "-webkit-animation": "spin 2s linear infinite", "-moz-animation": "spin 2s linear infinite", animation: "spin 2s linear infinite" } }), e.css.keyframe("@-webkit-keyframes spin", { "100% ": { "-webkit-transform": "rotate(360deg)" } }), e.css.keyframe("@keyframes spin", { "100% ": { "-webkit-transform": "rotate(360deg)", transform: "rotate(360deg)" } }), e.css.keyframe("@-moz-keyframes spin", { "100% ": { "-moz-transform": "rotate(360deg)" } }) }(ui || (ui = {})), ui.css.addGroup({ "#menuTableImperium": { margin: "5px 0" }, "#menuTableImperium > li": { "float": "none" }, "#menuTableImperium .menuImage.ogi2": { background: "url(https://i.imgur.com/142a5YN.png) no-repeat" } }, { ".current-stellar img.icon-planet": { "border-radius": "15px", "box-shadow": "0 0 6px 1px #ff9600, 0 0 3px 4px #ff9600 inset" }, ".current-stellar img.icon-moon": { "border-radius": "8px", "box-shadow": "0 0 6px 1px #ff9600, 0 0 3px 4px #ff9600 inset" }, ".current-stellar .koords-stellar, .current-stellar .name-stellar": { "text-shadow": "0 0 3px rgb(153,204,0)", color: "silver !important" } }, { "#ogimperium-view": { "float": "left", position: "relative", width: "670px", overflow: "visible", display: "none" }, "#ogimperium-view .panel": { "background-color": "#0d1014", border: "1px solid #2b3848", "border-top-width": "4px", padding: "6px", margin: "10px 6px 20px" }, "#ogimperium-view table td, #ogimperium-view table th": { padding: "4px" }, "#ogimperium-view table tr.summary td, #ogimperium-view table tr.summary th": { "border-top": "1px dotted #848484" }, "#ogimperium-view table td.label": { color: "grey", "text-align": "left" }, "#ogimperium-view table tr:hover > td, #ogimperium-view table tr.hover > td": { "background-color": "#23282d" } }, { ".resources00-icon, .resources01-icon, .resources02-icon, .defence-icon, .station-icon,.shipyard-icon ": { width: "30px !important", height: "30px !important" }, ".resources00-icon": { "background-repeat": "no-repeat", "background-image": " url('https://i.imgur.com/2Klisqo.png')" }, ".resources01-icon": { "background-repeat": "no-repeat", "background-image": " url('https://i.imgur.com/Ij3fpwv.png')" }, ".resources02-icon": { "background-repeat": "no-repeat", "background-image": " url('https://i.imgur.com/7Mavk31.jpg')" }, ".station-icon ": { "background-repeat": "no-repeat", "background-image": " url('https://i.imgur.com/kbgzBaR.png')" }, ".research-icon": { "background-repeat": "no-repeat", "background-image": " url('https://i.imgur.com/RBgBQKX.png')", width: "50px", height: "50px" }, ".shipyard-icon": { "background-repeat": "no-repeat", "background-image": " url('https://i.imgur.com/OB38ylT.png')" }, ".defence-icon": { "background-repeat": "no-repeat", "background-image": "url('https://i.imgur.com/k5dUBS9.png')" }, ".menu-icon32": { background: " url('https://i.imgur.com/WuayUF0.png') no-repeat", width: "24px", height: "24px", display: "inline-block" }, ".menu-icon32[ref=construction]": { "background-position": " 0 0" }, ".menu-icon32[ref=production]": { "background-position": " -24px 0" }, ".research-icon[ref=106]": { "background-position": " 0 0" }, ".research-icon[ref=108]": { "background-position": " -50px 0" }, ".research-icon[ref=109]": { "background-position": " -100px 0" }, ".research-icon[ref=110]": { "background-position": " -150px 0" }, ".research-icon[ref=111]": { "background-position": " -200px 0" }, ".research-icon[ref=113]": { "background-position": " -250px 0" }, ".research-icon[ref=114]": { "background-position": " -300px 0" }, ".research-icon[ref=115]": { "background-position": " -350px 0" }, ".research-icon[ref=117]": { "background-position": " -400px 0" }, ".research-icon[ref=118]": { "background-position": " -450px 0" }, ".research-icon[ref=120]": { "background-position": " -500px 0" }, ".research-icon[ref=121]": { "background-position": " -550px 0" }, ".research-icon[ref=122]": { "background-position": " -600px 0" }, ".research-icon[ref=123]": { "background-position": " -650px 0" }, ".research-icon[ref=199]": { "background-position": " -700px 0" }, ".research-icon[ref=124]": { "background-position": " -750px 0" }, ".resources01-icon[ref=12]": { "background-position": " 0px 0 " }, ".resources01-icon[ref=1]": { "background-position": " -30px 0 " }, ".resources01-icon[ref=4]": { "background-position": " -60px 0 " }, ".resources01-icon[ref=3]": { "background-position": " -90px 0 " }, ".resources01-icon[ref=2]": { "background-position": " -120px 0 " }, ".resources01-icon[ref=212]": { "background-position": " -150px 0 " }, ".resources02-icon[ref=22]": { "background-position": " 0 0 " }, ".resources02-icon[ref=23]": { "background-position": " -30px 0 " }, ".resources02-icon[ref=24]": { "background-position": " -60px 0 " }, ".resources02-icon[ref=25]": { "background-position": " -90px 0 " }, ".resources02-icon[ref=26]": { "background-position": " -120px 0 " }, ".resources02-icon[ref=27]": { "background-position": " -150px 0 " }, ".station-icon[ref=14]": { "background-position": " 0 0 " }, ".station-icon[ref=31]": { "background-position": " -30px 0 " }, ".station-icon[ref=34]": { "background-position": " -60px 0 " }, ".station-icon[ref=21]": { "background-position": " -90px 0 " }, ".station-icon[ref=15]": { "background-position": " -120px 0 " }, ".station-icon[ref=33]": { "background-position": " -150px 0 " }, ".station-icon[ref=44]": { "background-position": " -180px 0 " }, ".station-icon[ref=41]": { "background-position": " -210px 0 " }, ".station-icon[ref=42]": { "background-position": " -240px 0 " }, ".station-icon[ref=43]": { "background-position": " -270px 0 " } }, { ".techtree_link": { height: "auto", "min-width": 0 }, ".techtree_link .label": { display: "none" }, ".costs_wrap": { "float": "none", position: "absolute" }, ".costs_wrap .costs_info": { height: "auto" }, ".production_info": { position: "absolute", height: "90px", "max-width": "290px", "min-width": "265px", top: "110px" }, ".demolish_link": { top: "162px" }, ".demolish_link .label": { display: "none", left: 0, position: "absolute", right: 0, top: "2px" }, ".production_info .time": { display: "inline-block", "float": "right", "text-align": "right" }, ".enter": { width: "auto", height: "auto", top: "144px", right: "10px" }, ".enter .amount": { margin: "0 0 2px 3px", display: "flex" }, "#costs": { width: "235px", color: "white" }, /*"#costs > li": { "float": "none", width: "235px", height: "17px", display: "inline-block", "text-align": "right", padding: 0, "margin-bottom": "3px" }, "#costs > li .cost": { width: "100px", "float": "left" },*/ "#costs > li .need": { width: "100px", "float": "left" } }, { "#header_text a.ogireset-data": { right: "16px", top: "6px", position: "absolute" } }, { ".uibar_container, .uibar_filllevel": { "background-image": "url(//gf3.geo.gfsrv.net/cdn52/fbe2638880f7c292a43439c0f328ad.png)", "background-repeat": "repeat-x" }, ".uibar_container": { "background-position": "0 -24px", "box-shadow": "0 0 3px #000", width: "auto", height: "2px" }, ".uibar_filllevel": { "box-shadow": "0 0 3px #000", "float": "left", height: "100%" }, ".uibar_fillunder": { "background-position": "0 -16px" }, ".uibar_fillmiddle": { "background-position": "0 -8px" }, ".uibar_fillover": { "background-position": "0 0" } }, { ".uitechnology": {} }, { "#resources-summary": {}, "#resources-summary .resourceIcon": { "float": "right" } }, { "#resources-planets table img.icon-planet": { display: "inline-block", "float": "left", "margin-right": "8px", width: "30px" }, "#resources-planets table img.icon-moon": { display: "inline-block", "float": "left", margin: "0 8px 14px 8px", width: "16px" }, "#resources-planets table .label > b": { display: "flex" }, "#resources-planets table .label .ships": { "float": "right" }, "#resources-planets table .label .koords-stellar": { "font-size": "0.8em" }, "#resources-planets table em.em-storage": { "font-size": "0.75em", color: "dimgray" }, "#resources-planets .btn-details": { background: 'url("//gf2.geo.gfsrv.net/cdn71/fc7a8ede3499a0b19ea17613ff0cb1.gif") no-repeat left top', height: "18px", width: "20px", display: "block" }, "#resources-planets .btn-details.open": { "background-position": "0 -18px" } }, { ".production-details span.tech-lvl": { "font-size": "0.75em", color: "dimgray" }, ".production-details span.tech-lvl::before": { content: '"["' }, ".production-details span.tech-lvl::after": { content: '"]"' } }, { ".details-stellar": { "background-color": "#22313B", "background-repeat": "no-repeat", margin: "0", padding: "0", height: "300px", "font-size": "0.8em" }, ".details-stellar.no-data": { height: "auto", "text-align": "center" }, ".details-stellar .ul-production": { width: "200px" } }); var ui; ! function(e) { var t; ! function(e) { function t(e) { utils.isNode(e) ? this.appendChild(e) : this.innerHTML = e.toString() }! function(e) { e[e.HEAD = 0] = "HEAD", e[e.BODY = 1] = "BODY", e[e.FOOT = 2] = "FOOT" }(e.UiTableIn || (e.UiTableIn = {})); var r = e.UiTableIn, n = function() { function e() { this.table = utils.createElement("table", { width: "100%", "class": "ogi" }), this.thead = this.table.createTHead(), this.tbody = this.table.createTBody(), this.tfoot = this.table.createTFoot() } return e.prototype.addRowIn = function(e, n) { var i = null; if (r.HEAD == e) i = this.thead; else if (r.BODY == e) i = this.tbody; else { if (r.FOOT != e) throw new ReferenceError("Need a valid inkey (head, body or foot)"); i = this.tfoot } var s = i.insertRow(); return n.forEach(function(e) { var r = utils.joinMaps({ type: "td", attributes: {}, fnRender: t }, e, !0); Array.isArray(r.data) || (r.data = [r.data]); var n = utils.createElement(r.type, r.attributes); r.fnRender.apply(n, r.data), s.appendChild(n) }), s }, e.prototype.addRow = function(e, t, r) { for (var n = [], i = 3; i < arguments.length; i++) n[i - 3] = arguments[i]; var s = this.tbody.insertRow(); return e.forEach(function(e, r) { var n = s.insertCell(); if (t && t[r]) { var i = t[r]; if (i) for (var a in i) n.setAttribute(a, i[a]) } utils.isNode(e) ? n.appendChild(e) : utils.isFunction(e) ? e.apply(n) : n.innerHTML = e }), r && (n.unshift(s.childNodes), r.apply(e, n)), s }, e.prototype.addRows = function() { for (var e = [], t = 0; t < arguments.length; t++) e[t - 0] = arguments[t]; for (var r = 0; r < e.length; r++) { var n = n[r], i = Array.prototype.concat.call([n.items, n.cellsAttrs, n.callback], n.args); this.addRow.apply(this, i) } return this }, e }(); e.UiTable = n }(t = e.clazz || (e.clazz = {})) }(ui || (ui = {})); var ui; ! function(e) { var t; ! function(e) { function t(e, t) { return new i(t, e.tech(t)) } var r = utils.createElement, n = "uitechnology technology tooltipRight tooltipHTML", i = function() { function e(e, t) { this.box = r("div", { "class": n }), this._level = 0, this.spanlvl = r("span"), this.box.setAttribute("ref", e.toString()), this.box.appendChild(this.spanlvl), this.level = t, this.box.setAttribute("title", utils.format('{0}|<p align="center">{1$nd,}</p>', game.localization.technology(e), t)) } return Object.defineProperty(e.prototype, "level", { get: function() { return this._level }, set: function(e) { this._level = e, this.spanlvl.innerHTML = unsafeWindow.gfNumberGetHumanReadable (e, 3), 0 >= e ? (this.spanlvl.style.display = "none", this.box.classList.add("off")) : (this.spanlvl.style.display = "block", this.box.classList.remove("off")) }, enumerable: !0, configurable: !0 }), e }(); e.makeIcon = t }(t = e.clazz || (e.clazz = {})) }(ui || (ui = {})); var ui; ! function(e) { var t; ! function(e) { var t = utils.createElement, r = function() { function e(e, r) { void 0 === e && (e = 0), void 0 === r && (r = 1), this._container = t("div", { "class": "uibar_container", "data-amount": "0", "data-capacity": "1" }), this._fill = t("div", { "class": "uibar_filllevel" }), this._container.appendChild(this._fill), this.amount = e, this.capacity = r } return e.prototype.paint = function() { var e = this.amount / this.capacity * 100; e >= 100 && (e = 100), this._fill.style.width = e + "%", this._fill.classList.remove("uibar_fillunder", "uibar_fillmiddle", "uibar_fillover"), e >= 90 && 100 > e ? this._fill.classList.add("uibar_fillmiddle") : e >= 100 ? this._fill.classList.add("uibar_fillover") : this._fill.classList.add("uibar_fillunder") }, Object.defineProperty(e.prototype, "amount", { get: function() { return parseInt(this._container.dataset.amount) }, set: function(e) { this._container.dataset.amount = "" + e, this.paint() }, enumerable: !0, configurable: !0 }), Object.defineProperty(e.prototype, "capacity", { get: function() { return parseInt(this._container.dataset.capacity) }, set: function(e) { this._container.dataset.capacity = "" + e, this.paint() }, enumerable: !0, configurable: !0 }), Object.defineProperty(e.prototype, "container", { get: function() { return this._container }, enumerable: !0, configurable: !0 }), e }(); e.UiBar = r }(t = e.clazz || (e.clazz = {})) }(ui || (ui = {})); var ui; ! function(e) { var t; ! function(t) { var r = utils.createElement, n = function() { function t(e) { this._stellar = e, this.container = utils.createElement("div", { "class": "details-stellar" }); var t = game.db.player.getMapKey(game.db.keys.AccountOverviewImage, e.id); if (t && (this.container.style.backgroundImage = utils.format("url({0})", t)), Object.keys(this._stellar.technologies).length) { var n = this.makeUlResources(); this.container.appendChild(n) } else this.container.appendChild(utils.createElement("p", null, game.language.t("Visit the body to read their information"))), this.container.classList.add("no-data"); this.container.appendChild(r("br", { "class": "clearfloat" })) } return t.prototype.makeUlResources = function() { var t = r("ul", { "class": "ul-vertical ul-production" }); return this._stellar.isMoon || this.buildLiProduction(t), t.appendChild(r("li", null, e.clazz.makeIcon(this._stellar, 22).box)), t.appendChild(r("li", null, e.clazz.makeIcon(this._stellar, 23).box)), t.appendChild(r("li", null, e.clazz.makeIcon(this._stellar, 24).box)), t.appendChild(r("li", null, e.clazz.makeIcon(this._stellar, 4).box)), t.appendChild(r("li", null, e.clazz.makeIcon(this._stellar, 12).box)), t.appendChild(r("li", null, e.clazz.makeIcon(this._stellar, 212).box)), t }, t.prototype.buildLiProduction = function(t) { var n = this, i = function(t, i) { var s = e.clazz.makeIcon(n._stellar, 1), a = Math.round(3600 * n._stellar.production[i]), o = r("div", { "class": "undermark bold" }, utils.format("+{0$n}", unsafeWindow.number_format(a))), l = (n._stellar.storage[i] - n._stellar.resources[i]) / n._stellar.production[i], u = new Date(startServerTime + Math.ceil(1e3 * l) + timeDiff), c = r("div", null, u.toISOString()); return s.box.classList.add("float-right"), r("li", null, s.box, o, c) }; t.appendChild(i(1, "metal")), t.appendChild(i(2, "crystal")), t.appendChild(i(3, "deuterium")) }, t }(); t.DetailsStellar = n }(t = e.clazz || (e.clazz = {})) }(ui || (ui = {})); var ui; ! function(e) { var t; ! function(e) { var t = utils.createElement, r = function() { function r(e) { this.metal_hour = t("span", { "class": "undermark hour" }), this.crystal_hour = t("span", { "class": "undermark hour" }), this.deuterium_hour = t("span", { "class": "undermark hour" }), this.metal_total = t("span", { "class": "metal total" }), this.crystal_total = t("span", { "class": "crystal total" }), this.deuterium_total = t("span", { "class": "deuterium total" }), this.metal_planet = t("span"), this.crystal_planet = t("span"), this.deuterium_planet = t("span"), this.metal_moon = t("span"), this.crystal_moon = t("span"), this.deuterium_moon = t("span"), this.metal_flying = t("span"), this.crystal_flying = t("span"), this.deuterium_flying = t("span"), this.energy_total = t("span", { "class": "energy total" }), this.main = null, this.account = e } return r.prototype.row = function(e, r, n) { for (var i = [], s = 3; s < arguments.length; s++) i[s - 3] = arguments[s]; for (var a = t("tr"), o = [], l = 0; l < e.length; l++) { var u = jQuery("<td/>", r[l]); u.append(e[l]), a.appendChild(u.get(0)), o.push(u.get(0)) } return i.unshift(o), n.apply(e, i), a }, r.prototype.makeTable = function() { var r = this; this.main = t("div", { "class": "panel", id: "resources-summary" }); var n = new e.UiTable, i = n.table; this.main.appendChild(i); var s = this; n.addRowIn(e.UiTableIn.HEAD, [{ type: "th", data: " " }, { type: "th", attributes: { width: 120 }, data: t("div", { "class": "resourceIcon metal" }) }, { type: "th", attributes: { width: 120 }, data: t("div", { "class": "resourceIcon crystal" }) }, { type: "th", attributes: { width: 120 }, data: t("div", { "class": "resourceIcon deuterium" }) }, { type: "th", attributes: { width: 1 }, data: "" }]); var a = n.addRow([game.language.t("Production /h"), this.metal_hour, this.crystal_hour, this.deuterium_hour, ""], [{ "class": "label bold-hard" }, { "class": "bold" }, { "class": "bold" }, { "class": "bold" }, { "class": "bold" }], function(e, t) { var r = this; t.listen("metal", function(e, t, n) { r[1].innerHTML = "+ " + unsafeWindow.number_format(Math.round(3600 * n)) }), t.listen("crystal", function(e, t, n) { r[2].innerHTML = "+ " + unsafeWindow.number_format(Math.round(3600 * n)) }), t.listen("deuterium", function(e, t, n) { r[3].innerHTML = "+ " + unsafeWindow.number_format(Math.round(3600 * n)) }) }, this.account.stellars.production); a.className = "align-right alt", a = n.addRow(["Σ " + game.language.t("Total"), this.metal_total, this.crystal_total, this.deuterium_total, ""], [{ "class": "label bold-hard" }, { "class": "bold" }, { "class": "bold" }, { "class": "bold" }, { "class": "bold" }], function(e, t) { var r = this; t.listen("metal", function(e, t, n) { r[1].innerHTML = unsafeWindow.number_format(n) }), t.listen("crystal", function(e, t, n) { r[2].innerHTML = unsafeWindow.number_format(n) }), t.listen("deuterium", function(e, t, n) { r[3].innerHTML = unsafeWindow.number_format(n) }) }, this.account.resources), a.className = "align-right", function() { var e = function(e, t) { for (var r = s.account.stellars.planets, n = !1, i = 0, a = 0; a < r.length; a++) { var o = r[a].storage[e]; isNaN(o) ? n = !0 : i += o } var l = utils.createElement("i", { style: "font-size:0.75em;color:dimgray;" }, utils.format("/ {0}{1} ", n ? "~" : "", unsafeWindow.number_format(i))); this.appendChild(t), this.appendChild(utils.createElement("br")), this.appendChild(l) }; a = n.addRow([game.language.t("Planets"), function() { e.apply(this, ["metal", s.metal_planet]) }, function() { e.apply(this, ["crystal", s.crystal_planet]) }, function() { e.apply(this, ["deuterium", s.deuterium_planet]) }, ""], [{ "class": "label" }], function(e, t) { t.listen("metal", function(e, t, r) { s.metal_planet.innerHTML = unsafeWindow.number_format(r) }), t.listen("crystal", function(e, t, r) { s.crystal_planet.innerHTML = unsafeWindow.number_format(r) }), t.listen("deuterium", function(e, t, r) { s.deuterium_planet.innerHTML = unsafeWindow.number_format(r) }) }, r.account.stellars.resourcesInPlanets), a.className = "summary align-right alt" }(), a = n.addRow([game.language.t("Moons"), this.metal_moon, this.crystal_moon, this.deuterium_moon, ""], [{ "class": "label" }], function(e, t) { var r = this; t.listen("metal", function(e, t, n) { r[1].innerHTML = unsafeWindow.number_format(n) }), t.listen("crystal", function(e, t, n) { r[2].innerHTML = unsafeWindow.number_format(n) }), t.listen("deuterium", function(e, t, n) { r[3].innerHTML = unsafeWindow.number_format(n) }) }, this.account.stellars.resourcesInMoons), a.className = "align-right", a = n.addRow([game.language.t("Flights"), this.metal_flying, this.crystal_flying, this.deuterium_flying, ""], [{ "class": "label" }], function(e, t) { var r = this; t.listen("metal", function(e, t, n) { r[1].innerHTML = unsafeWindow.number_format(n) }), t.listen("crystal", function(e, t, n) { r[2].innerHTML = unsafeWindow.number_format(n) }), t.listen("deuterium", function(e, t, n) { r[3].innerHTML = unsafeWindow.number_format(n) }) }, this.account.fligths.resources), a.className = "align-right alt" }, Object.defineProperty(r.prototype, "table", { get: function() { return this.main || this.makeTable(), this.main }, enumerable: !0, configurable: !0 }), r }(); e.ResourcesProduction = r }(t = e.clazz || (e.clazz = {})) }(ui || (ui = {})); var ui; ! function(e) { var t; ! function(e) { function t(e, t) { var r = utils.createElement("span"); r.innerHTML = unsafeWindow.number_format(Math.round(3600 * e.production[t])), e.production.listen(t, function(e, t, n) { r.innerHTML = unsafeWindow.number_format(Math.round(3600 * n)) }), this.appendChild(r) } var r = function() { function r(e) { this.main = null, this.account = e } return Object.defineProperty(r.prototype, "table", { get: function() { if (!this.main) { var e = this.makeTable(); this.main = utils.createElement("div", { "class": "panel production-details" }, e) } return this.main }, enumerable: !0, configurable: !0 }), r.prototype.makeTable = function() { var r = new e.UiTable; r.addRowIn(e.UiTableIn.HEAD, [{ type: "th", data: " " }, { type: "th", data: game.language.t("METAL"), attributes: { colspan: 2, width: 120 } }, { type: "th", data: game.language.t("CRYSTAL"), attributes: { colspan: 2, width: 120 } }, { type: "th", data: game.language.t("DEUTERIUM"), attributes: { colspan: 2, width: 120 } }, { type: "th", attributes: { width: 1 }, data: "" }]); var n = !0, i = utils.resources3Observable(0); this.account.stellars.planets.forEach(function(s) { i.metal += s.production.metal, i.crystal += s.production.crystal, i.deuterium += s.production.deuterium; var a = r.addRowIn(e.UiTableIn.BODY, [{ data: s.name, attributes: { "class": "label name-stellar bold" } }, { data: [s, "metal"], fnRender: t, attributes: { width: 90 } }, { data: utils.createElement("span", { "class": "tech-lvl" }, s.tech(1)), attributes: { width: 20 } }, { data: [s, "crystal"], fnRender: t, attributes: { width: 90 } }, { data: utils.createElement("span", { "class": "tech-lvl" }, s.tech(2)), attributes: { width: 20 } }, { data: [s, "deuterium"], fnRender: t, attributes: { width: 90 } }, { data: utils.createElement("span", { "class": "tech-lvl" }, s.tech(3)), attributes: { width: 20 } }, { data: "" }]); a.classList.add("align-right"), n && a.classList.add("alt"), s.id == game.currentPlanetID && a.classList.add("current-stellar"), n = !n }); var s = function(e, t, r) { var n = utils.createElement("span", { "class": "undermark" }); n.innerHTML = unsafeWindow.number_format(Math.round(e[t] * r)), e.listen(t, function(e, t, i) { n.innerHTML = unsafeWindow.number_format(Math.round(i * r)) }), this.appendChild(n) }; return [{ time: 3600, text: "Production per hour:" }, { time: 86400, text: "Daily production:" }, { time: 604800, text: "Weekly production:" }].forEach(function(t) { r.addRowIn(e.UiTableIn.FOOT, [{ data: game.language.t(t.text), attributes: { "class": "label" } }, { data: [i, "metal", t.time], fnRender: s }, { data: "" }, { data: [i, "crystal", t.time], fnRender: s }, { data: "" }, { data: [i, "deuterium", t.time], fnRender: s }, { data: "", attributes: { colspan: 2 } }]).classList.add("align-right") }), r.tfoot.firstElementChild.classList.add("summary"), r.table }, r }(); e.ResourcesProductionDetails = r }(t = e.clazz || (e.clazz = {})) }(ui || (ui = {})); var ui; ! function(e) { var t; ! function(t) { var r = utils.createElement, n = function() { function n(e) { this._container = null, this._account = e } return Object.defineProperty(n.prototype, "container", { get: function() { return this._container || this.initContainer(), this._container }, enumerable: !0, configurable: !0 }), n.prototype.initContainer = function() { var e = this; this._container = r("div", { id: "resources-planets", "class": "panel" }); var n = new t.UiTable; this._container.appendChild(n.table), n.addRow([" ", game.language.t("METAL"), game.language.t("CRYSTAL"), game.language.t("DEUTERIUM"), " "], [null, { width: "120" }, { width: "120" }, { width: "120" }, { width: "1" }]); var i = !0; this._account.stellars.planets.forEach(function(t, r) { var s = e.makeRowPlanet(n, t); if (s.classList.add("align-right"), i && s.classList.add("alt"), game.currentPlanetID == t.id && s.classList.add("current-stellar"), t.moonID) { var a = e._account.stellars.byId(t.moonID); s = e.makeRowMoon(n, a), s.classList.add("align-right"), i && s.classList.add("alt"), game.currentPlanetID == a.id && s.classList.add("current-stellar") } i = !i }), unsafeWindow.initTooltips(this.container), jQuery(this.container).on("click", ".btn-details", function(e) { var t = e.target, r = t.href, n = utils.format("stellar-{0}-details", utils.parseInteger(r)), i = document.getElementById(n); console.info("show details", t, i), t.classList.contains("open") ? (i.style.display = "none", t.classList.remove("open"), changeTooltip(t, game.language.t("more details"))) : (i.style.display = "table-row", t.classList.add("open"), changeTooltip(t, game.language.t("less details"))) }) }, n.prototype.makeRowPlanet = function(e, n) { var i = r("img", { "class": "icon-planet", src: n.image }), s = r("span", { "class": "koords-stellar" }), a = r("b", { "class": "name-stellar" }); r("a", { "class": "btn-details tooltipRight", href: "javascript:void(" + n.id + ");", title: game.language.t("more details") }); s.innerHTML = n.coords.toString(), a.innerHTML = n.name; var o = { metal: r("b"), crystal: r("b"), deuterium: r("b") }, l = { metal: r("em", { "class": "em-storage" }), crystal: r("em", { "class": "em-storage" }), deuterium: r("em", { "class": "em-storage" }) }, u = { metal: new t.UiBar, crystal: new t.UiBar, deuterium: new t.UiBar }, c = function(e, t, r) { var n = parseInt(l[e].dataset.max), i = r / n * 100; o[e].innerHTML = unsafeWindow.number_format(r), o[e].classList.remove("overmark", "middlemark"), l[e].classList.remove("overmark", "middlemark"), i >= 90 && 100 > i ? (o[e].classList.add("middlemark"), l[e].classList.add("middlemark")) : i >= 100 && (o[e].classList.add("overmark"), l[e].classList.add("overmark")), u[e].amount = r }, d = function(e) { var t = r("div"), i = n.storage[e]; return isNaN(i) ? (u[e].capacity = -1, l[e].dataset.max = "-1", l[e].innerHTML = " /~") : (u[e].capacity = i, l[e].dataset.max = "" + i, l[e].innerHTML = " /" + unsafeWindow.gfNumberGetHumanReadable (i, 3)), t.appendChild(o[e]), t.appendChild(l[e]), t.appendChild(u[e].container), t }; return n.resources.listen("metal", c), n.resources.listen("crystal", c), n.resources.listen("deuterium", c), e.addRow([function() { this.appendChild(i), this.appendChild(a), this.appendChild(s) }, d("metal"), d("crystal"), d("deuterium")], [{ "class": "label" }]) }, n.prototype.makeRowMoon = function(e, t) { var n = r("img", { "class": "icon-moon", src: t.image }), i = r("b", { "class": "name-stellar" }); r("a", { "class": "btn-details tooltipRight", href: "javascript:void(" + t.id + ");", title: game.language.t("more details") }); i.innerHTML = t.name; var s = { metal: r("span"), crystal: r("span"), deuterium: r("span") }, a = function(e, t, r) { s[e].innerHTML = unsafeWindow.number_format(r) }; return t.resources.listen("metal", a), t.resources.listen("crystal", a), t.resources.listen("deuterium", a), e.addRow([utils.node2HTMLText(n, i), s.metal, s.crystal, s.deuterium], [{ "class": "label" }]) }, n.prototype.makeRowDetails = function(t, r) { var n = new e.clazz.DetailsStellar(r), i = t.addRow([n.container], [{ colspan: "6", style: "padding:0" }]); return i.id = utils.format("stellar-{0}-details", r.id), i.style.display = "none", i }, n }(); t.ResourcesStellars = n }(t = e.clazz || (e.clazz = {})) }(ui || (ui = {})); var ui; ! function(e) { var t; ! function(e) { function t(e) { ! function(e, t) { if (e) { var r = t.style.backgroundImage.match(/(http.*[\.jpg|\.png|\.gif])/g)[0], n = game.db.player.get(game.db.keys.AccountOverviewImage, "{}"); n[game.currentPlanetID] || (n[game.currentPlanetID] = r, game.db.player.set(game.db.keys.AccountOverviewImage, n)) } }(game.isCurrentPage("overview"), document.getElementById("planet")), function(t) { if (t) { var r = utils.createElement("span", { "class": "flat24 sign-sync" }), n = utils.createElement("a", { "class": "ogireset-data tooltipLeft", href: "javascript:void(0);", title: game.language.t("Refresh data stored of this planet/moon") }, r); t.insertBefore(n, t.firstChild), unsafeWindow.initTooltips(n); var i = !1; n.onclick = function(t) { i || (i = !0, r.classList.add("animation-rotate360"), setTimeout(function() { var t = e.startCurrentStellar(!0); t.fail(function() { r.classList.add("sign-error"), fadeBox(game.language.t("Failed to refresh data of the planet/moon."), !0) }).done(function() { r.classList.add("sign-check"), fadeBox(game.language.t("Data of the planet/moon updated successfully."), !1) }).always(function() { r.classList.remove("animation-rotate360", "sign-sync"), setTimeout(function() { r.classList.remove("sign-check", "sign-error"), r.classList.add("sign-sync"), i = !1 }, 4e3) }) }, 1500)) } } }(document.getElementById("header_text")), function() { setInterval(function() { jQuery.ajax({ url: "/game/index.php?page=fetchEventbox&ajax=1", global: !1, dataType: "text" }).done(reloadEventbox) }, 3e4) }() } e.shortcodes = t }(t = e.inline || (e.inline = {})) }(ui || (ui = {})); var ui; ! function(e) { var t; ! function(t) { function r(e, t, r) { var n = this.need_nodes[e]; n.innerHTML = unsafeWindow.number_format(r), n.classList.remove("undermark", "overmark", "middlemark", "bold"), 0 > r ? n.classList.add("overmark", "bold") : n.classList.add("undermark"); var i = this.cost_nodes[e]; if (i) { var s = this.count * this.cost_base[e]; i.innerHTML = unsafeWindow.number_format(s), i.classList.remove("overmark"), 0 > r && i.classList.add("overmark") } } function n() { var e = document.getElementById("planet"); e && (l || (e.addEventListener("DOMNodeInserted", function(e) { setTimeout(function() { try { if (!r || !r.target) return; if ("content" !== r.target.id) return; var e = r.target, t = utils.getIntByQuery("[name-type]", "value"); o.show(e, t) } catch (r) { var n = utils.tracing(r); console.error("Error => Buildings.run()#timeout @ ", n.toString()) } }, 0) }, !1), l = !0)) } var i = game.utilities.currentResources, s = utils.format, a = function() { function t() { this.need_nodes = {}, this.need_nodes.metal = utils.createElement("div", { "class": "need metal" }), this.need_nodes.crystal = utils.createElement("div", { "class": "need crystal" }), this.need_nodes.deuterium = utils.createElement("div", { "class": "need deuterium" }), this.need_nodes.energy = utils.createElement("div", { "class": "need energy" }), this.bold_maxbuild = utils.createElement("b"), this.cost_base = utils.resources4(0), this.cost_diff = utils.resources4Observable(0), this.cost_diff.listen("metal", r, this), this.cost_diff.listen("crystal", r, this), this.cost_diff.listen("deuterium", r, this), this.cost_diff.listen("energy", r, this), this.cost_n = utils.createElement("i", { style: "color: white;" }) } return t.prototype.updateCost = function() { var e = i(); this.cost_n.innerHTML = s(" ( x{0} )", unsafeWindow.number_format(this.count)), this.cost_diff.metal = e.metal - this.cost_base.metal * this.count, this.cost_diff.crystal = e.crystal - this.cost_base.crystal * this.count, this.cost_diff.deuterium = e.deuterium - this.cost_base.deuterium * this.count, this.cost_diff.energy = e.energy - this.cost_base.energy * this.count; var t = Math.min.apply(null, [Math.abs(e.metal / this.cost_base.metal), Math.abs(e.crystal / this.cost_base.crystal), Math.abs(e.deuterium / this.cost_base.deuterium), Math.abs(e.energy_generate / this.cost_base.energy)]); this.bold_maxbuild.innerHTML = unsafeWindow.number_format(Math.floor(t)) }, t.prototype.show = function(t, r) { var n = this; this.container = t, this.id = r, this.count = 1, this.cost_base.metal = this.cost_base.crystal = 0, this.cost_base.deuterium = this.cost_base.energy = 0, this.cost_nodes = {}, this.input_number = document.getElementById("number"); for (var i = t.querySelectorAll("#costs > li"), s = new e.clazz.UiTable, a = 0; a < i.length; a++) { var o = i.item(a), l = o.querySelector(".resourceIcon"), u = o.querySelector(".cost"), c = null; l.classList.add("resource16"), removeTooltip(o); var d = utils.getTitle(o); o.classList.remove("tooltip"), o.removeAttribute("title"); var p = utils.parseInteger(d); unsafeWindow.initTooltips(o), l.classList.contains("metal") ? (c = this.need_nodes.metal, this.cost_nodes.metal = u, this.cost_base.metal = p) : l.classList.contains("crystal") ? (c = this.need_nodes.crystal, this.cost_nodes.crystal = u, this.cost_base.crystal = p) : l.classList.contains("deuterium") ? (c = this.need_nodes.deuterium, this.cost_nodes.deuterium = u, this.cost_base.deuterium = p) : l.classList.contains("energy") && (c = this.need_nodes.energy, this.cost_nodes.energy = u, this.cost_base.energy = p, o.removeChild(o.querySelector("br"))), c && (c.innerHTML = "0", o.appendChild(c), s.addRow(d.split(" "), [{ "class": "align-right" }, { "class": "align-left", style: "padding-left: 5px" }])) } var h = t.querySelector("#costs"); if (h.classList.add("tooltipLeft"), changeTooltip(h, utils.node2HTMLText(s.table)), t.querySelector(".costs_info").appendChild(this.cost_n), this.input_number) { var m = this.input_number.parentElement.querySelector(".amount"); m.textContent = "max: ", m.appendChild(this.bold_maxbuild), jQuery(this.input_number).on("keyup", function(e) { var t = utils.parseInteger(n.input_number.value); n.count = t || 1, n.updateCost() }).on("focus", function(e) { n.count = 1, n.updateCost() }), this.input_number.setAttribute("autocomplete", "off"), this.count = utils.parseInteger(this.input_number.value) || 1 } this.updateCost() }, t }(), o = new a, l = !1; t.costructionAssistant = n }(t = e.inline || (e.inline = {})) }(ui || (ui = {})); var GameUi = function() { function e(e) { this.isrun = !1, this._account = e, utils.define(this, "_account"), utils.define(this, "isrun", !1, !0, !0), this.container = utils.createElement("div", { id: "ogimperium-view" }) } return e.prototype.show = function(e) { void 0 === e && (e = null), document.getElementById("inhalt").style.display = "none", this.container.style.display = "block", e && e.preventDefault() }, e.prototype.hide = function(e) { void 0 === e && (e = null), document.getElementById("inhalt").style.display = "block", this.container.style.display = "none", e && e.preventDefault() }, e.prototype.run = function() { if (!this.isrun) { initUi(this._account, this); var e = document.getElementById("contentWrapper"); e.insertBefore(this.container, e.firstChild), this.isrun = !0, utils.define(this, "isrun") } }, e }(); void 0 == unsafeWindow.currentPage && (unsafeWindow.currentPage = document.location.href.match(/page=(\w+)/gi)[0]); game.ajax.then(function() { return setTimeout(function() { utils._window.imperium = __VERSION__; try { var e = new GameAccount, t = new GameUi(e); t.run() } catch (r) { var n = utils.tracing(r); console.error("ERROR! (Imperium " + __VERSION__ + " ): ", n.toString()) } }, 10) });