NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Lifeform Suggestions // @namespace none // @version 2024-10-10 // @description Give you red if missing minimum level, orange: continue to upgrade, green: not usefull to continue upgrade. // @author KreK00 // @match https://*.ogame.gameforge.com/game/index.php*component=lfbuildings* // @icon data:image/png;base64,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 // @grant GM_addStyle // @grant GM_getValue // @grant GM_setValue // @grant GM_xmlhttpRequest // @require https://code.jquery.com/jquery-3.7.1.min.js // @license MIT // @updateURL https://openuserjs.org/meta/KreK93/Lifeform_Upgrade_Suggestions.meta.js // @downloadURL https://openuserjs.org/install/KreK93/Lifeform_Upgrade_Suggestions.user.js // ==/UserScript== /* ----------------------------------- [ DISCLAIMER ] -------------------------------------- */ /* THIS TOOL HAS NOT BEEN PUBLISHED ON OGAME ORIGIN YET, SO TECHNICALLY IT IS ILLEGAL TO USE */ /* ------------------------------- [ USE AT YOUR OWN RISK ] --------------------------------- */ /* [ Based on RiV work ] */ (function () { 'use strict'; window.addEventListener('load', function () { var quarters = "" var farm = "" var school = "" var highschool = "" // SEARCH TYPE OF LIFEFORM const header = document.querySelector('header[data-anchor="technologyDetails"]'); const backgroundStyle = header.style.background; const urlMatch = backgroundStyle.match(/url\(['"]?(.*?)['"]?\)/); if (urlMatch) { const imageUrl = urlMatch[1]; const fileName = imageUrl.split('/').pop(); const nameWithoutExtension = fileName.split('.')[0]; // ROCKTAL if (nameWithoutExtension === "rocktal") { document.querySelector("div[id=technologies]").querySelector("h3").innerText += " - Rock`tal"; if (document.querySelector(".icons")) { const iconItems = document.querySelector(".icons").getElementsByTagName("li"); if (iconItems.length > 0) { const levels = { quarters: { element: iconItems[0].querySelector(".level"), max: 74 }, farm: { element: iconItems[1].querySelector(".level"), max: 78 }, school: { element: iconItems[3].querySelector(".level"), max: 16 }, highSchool: { element: iconItems[4].querySelector(".level"), max: 11 }, megalith: { element: iconItems[7].querySelector(".level"), max: 10 }, MRC: { element: iconItems[10].querySelector(".level"), max: 5 } }; // Funzione per impostare i valori massimi e aggiornare il display const updateLevelDisplay = (levelKey) => { const level = levels[levelKey]; const currentLevel = parseInt(level.element.innerText); // Crea un nuovo elemento span per il massimo const maxSpan = document.createElement("span"); maxSpan.style.color = "#9285df"; maxSpan.style.fontWeight = "bold"; // Aggiorna il display if (currentLevel >= level.max) { level.element.style.color = "green"; // Colore verde per livello massimo level.element.style.fontWeight = "bold"; maxSpan.style.display = "none"; } else { level.element.style.color = "#3486eb"; // Colore blu maxSpan.textContent = ` (${level.max})`; // Mostra livello massimo } // Append maxSpan all'elemento del livello level.element.appendChild(maxSpan); }; // Aggiorna i livelli per tutte le strutture Object.keys(levels).forEach(updateLevelDisplay); } } } else if (nameWithoutExtension == "humans") { document.querySelector("div[id=technologies]").querySelector("h3").innerText += " - Humans" if (document.querySelector(".icons")) { const iconItems = document.querySelector(".icons").getElementsByTagName("li"); if (iconItems.length > 0) { const levels = { quarters: { element: iconItems[0].querySelector(".level"), max: 74 }, farm: { element: iconItems[1].querySelector(".level"), max: 68 }, school: { element: iconItems[3].querySelector(".level"), max: 15 }, highSchool: { element: iconItems[4].querySelector(".level"), max: 10 }, food: { element: iconItems[6].querySelector(".level"), max: 42 }, skyscraper: { element: iconItems[8].querySelector(".level"), max: 28 }, biolab: { element: iconItems[9].querySelector(".level"), max: 27 } }; // Funzione per impostare i valori massimi e aggiornare il display const updateLevelDisplay = (levelKey) => { const level = levels[levelKey]; const currentLevel = parseInt(level.element.innerText); // Crea un nuovo elemento span per il massimo const maxSpan = document.createElement("span"); maxSpan.style.color = "#9285df"; maxSpan.style.fontWeight = "bold"; // Aggiorna il display if (currentLevel >= level.max) { level.element.style.color = "green"; // Colore verde per livello massimo level.element.style.fontWeight = "bold"; maxSpan.style.display = "none"; } else { level.element.style.color = "#3486eb"; // Colore blu maxSpan.textContent = ` (${level.max})`; // Mostra livello massimo } // Append maxSpan all'elemento del livello level.element.appendChild(maxSpan); }; // Aggiorna i livelli per tutte le strutture Object.keys(levels).forEach(updateLevelDisplay); } } } else if (nameWithoutExtension == "mecha") { document.querySelector("div[id=technologies]").querySelector("h3").innerText += " - Mecha" if (document.querySelector(".icons")) { const iconItems = document.querySelector(".icons").getElementsByTagName("li"); if (iconItems.length > 0) { const levels = { quarters: { element: iconItems[0].querySelector(".level"), max: 72 }, farm: { element: iconItems[1].querySelector(".level"), max: 83 }, school: { element: iconItems[3].querySelector(".level"), max: 14 }, highSchool: { element: iconItems[4].querySelector(".level"), max: 9 }, micro: { element: iconItems[7].querySelector(".level"), max: 30 }, PAH: { element: iconItems[8].querySelector(".level"), max: 22 }, }; // Funzione per impostare i valori massimi e aggiornare il display const updateLevelDisplay = (levelKey) => { const level = levels[levelKey]; const currentLevel = parseInt(level.element.innerText); // Crea un nuovo elemento span per il massimo const maxSpan = document.createElement("span"); maxSpan.style.color = "#9285df"; maxSpan.style.fontWeight = "bold"; // Aggiorna il display if (currentLevel >= level.max) { level.element.style.color = "green"; // Colore verde per livello massimo level.element.style.fontWeight = "bold"; maxSpan.style.display = "none"; } else { level.element.style.color = "#3486eb"; // Colore blu maxSpan.textContent = ` (${level.max})`; // Mostra livello massimo } // Append maxSpan all'elemento del livello level.element.appendChild(maxSpan); }; // Aggiorna i livelli per tutte le strutture Object.keys(levels).forEach(updateLevelDisplay); } } } else if (nameWithoutExtension == "kaelesh") { document.querySelector("div[id=technologies]").querySelector("h3").innerText += " - Kaelesh" if (document.querySelector(".icons")) { const iconItems = document.querySelector(".icons").getElementsByTagName("li"); if (iconItems.length > 0) { const levels = { quarters: { element: iconItems[0].querySelector(".level"), max: 72 }, farm: { element: iconItems[1].querySelector(".level"), max: 74 }, school: { element: iconItems[3].querySelector(".level"), max: 13 }, highSchool: { element: iconItems[4].querySelector(".level"), max: 9 }, antimatter: { element: iconItems[5].querySelector(".level"), max: 22 }, Chrysalis: { element: iconItems[7].querySelector(".level"), max: 40 }, Psionic: { element: iconItems[9].querySelector(".level"), max: 11 } }; // Funzione per impostare i valori massimi e aggiornare il display const updateLevelDisplay = (levelKey) => { const level = levels[levelKey]; const currentLevel = parseInt(level.element.innerText); // Crea un nuovo elemento span per il massimo const maxSpan = document.createElement("span"); maxSpan.style.color = "#9285df"; maxSpan.style.fontWeight = "bold"; // Aggiorna il display if (currentLevel >= level.max) { level.element.style.color = "green"; // Colore verde per livello massimo level.element.style.fontWeight = "bold"; maxSpan.style.display = "none"; } else { level.element.style.color = "#3486eb"; // Colore blu maxSpan.textContent = ` (${level.max})`; // Mostra livello massimo } // Append maxSpan all'elemento del livello level.element.appendChild(maxSpan); }; // Aggiorna i livelli per tutte le strutture Object.keys(levels).forEach(updateLevelDisplay); } } } } else { console.log("[LifeformStyle] unable to get LF data."); } }, false); })();