// // ==UserScript== // // @name IkaTweaks // @description Improvements for Ikariam // @version 2.1 // @author Yvonne P. // @license MIT; https://opensource.org/licenses/MIT // @icon http://de.ikariam.gameforge.com/favicon.ico // @namespace YveOne // @include /^https?:\/\/s\d+-\w+\.ikariam\.gameforge\.com.*?$/ // @run-at document-start // // @downloadURL none // ==/UserScript== // /* jshint esversion: 6 */ /* global $ */ /* global ikariam */ /* global ajax */ /* global GM_info */ /* global dataSetForView */ /* global LocalizationStrings */ (function(window){ "use strict"; var jshintUnused; //-------------------------------------------------------------------------------------------------- // CONSTANTS const _LINKS_ = { OnePiece : 'http://www.iconarchive.com/show/one-piece-character-icons-by-crountch.html', GreasyFork : 'https://greasyfork.org/de/scripts/401313-ikatweaks', OpenUserJS : 'https://openuserjs.org/scripts/YveOne/IkaTweaks', GitHubRepo : 'https://github.com/YveOne/Userscript-IkaTweaks', }; // CONSTANTS //-------------------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------------------- // SYSTEM FUNCTIONS function forEach(obj, func) {for(var k in obj){if(obj.hasOwnProperty(k)){func(obj[k],k,obj);}}} function jsonDecode(str, dflt) {var obj=null;try{obj=JSON.parse(str);}catch(e){}return((obj!==null)?obj:dflt);} function injectCSS(cssText) {var el=document.createElement('style');el.setAttribute('type','text/css');if(el.styleSheet){el.styleSheet.cssText=cssText;}else{el.appendChild(document.createTextNode(cssText));}document.querySelector('head').appendChild(el);return el;} function hookFunction(obj, fn, cb) {(function(of){obj[fn]=function(){var ret=of.apply(this,arguments);cb.apply(this,[ret,of,arguments]);return ret;};}(obj[fn]));} function waitFor(cond, func, tOut, sleep) {sleep=sleep||33;var tEnd=tOut?(new Date()).getTime()+tOut:null;var ret,w4=function(){ret=cond();if(ret){return func(ret);}if(tEnd && tEnd<(new Date()).getTime()){return func(false);}setTimeout(w4,sleep);};w4();} function removeElement(el) {try{return el.parentNode.removeChild(el);}catch(e){}return null;} // v3 (c) Yvonne P. function LocalStorageHandler(tag) { var data = JSON.parse(localStorage.getItem(tag)) || { storedKeys : {}, }; function dataUnset(k1) { if(data) { var s = {}; forEach(data.storedKeys, (_, k2) => { if (k1 !== k2) { s[k2] = data.storedKeys[k2]; } }); data.storedKeys = s; localStorage.setItem(tag, JSON.stringify(data)); } } function dataSet(k) { if (data) { data.storedKeys[tag] = (new Date()).getTime(); data.storedKeys[k] = (new Date()).getTime(); localStorage.setItem(tag, JSON.stringify(data)); } } this.drop = function(key) { key = tag+key; localStorage.removeItem(key); dataUnset(key); return (typeof localStorage.getItem(key) == 'undefined'); }; this.save = function(key, val) { key = tag+key; localStorage.setItem(key, val); dataSet(key); return (localStorage.getItem(key) == val); }; this.load = function(key, dflt) { key = tag+key; var v = localStorage.getItem(key); return (v!==null ) ? v : dflt; }; this.data = function() { return JSON.parse(JSON.stringify(data)); }; this.clear = function(t) { var b = true; if (typeof t == 'string') { var s = [t]; forEach(data.storedKeys, (_, k) => { s.push(' "'+k+'"'); }); b = confirm(s.join("\n")); } if (b) { forEach(data.storedKeys, (_, k) => { localStorage.removeItem(k); }); data = null; return true; } return false; }; } // v2 (c) Yvonne P. function EasyTemplates() { var that = this; var tplList = {}; var regExpParseHtml = new RegExp('\\{[a-zA-Z0-9_]+\\}', 'gi'); this.set = function(id, html) { tplList[id] = html; }; this.get = function(id, data) { id = id || ''; return (tplList[id]) ? that.parse(tplList[id], data) : 'Template "'+id+'" not found'; }; this.getEach = function(arr, func) { var ret = []; var keys = Object.keys(arr); while(keys.length) { var k = keys.shift(); var a = func(k, arr[k]); if(a) ret.push(that.get.apply(null, a)); } return ret.join(''); }; this.parse = function(html, data) { html = html || ''; data = data || {}; return html.replace(regExpParseHtml, function(x){ var y = data[x.substr(1, x.length-2)]; return (y!==null && typeof y!='undefined') ? y : x; }); }; } // v3 (c) Yvonne P. function LanguageHandler(useLocal, baseLocal) { var str = {}; var ctr = {}; var als = {}; function get(k) { return (typeof str[k]=='string') ? str[k] : k; } function set(c, l, n) { if (c instanceof Array) { while(c.length) { set(c.shift(), n); } return; } if (als[c] == useLocal) { c = als[c]; } ctr[c] = l; if (c == baseLocal) { forEach(n, (v, k) => { if (v !== null) { str[k] = (typeof str[k]=='string') ? str[k] : v.toString(); } }); } else { if (c == useLocal) { forEach(n, (v, k) => { if (v !== null) { str[k] = v.toString(); } }); } } } var ret = function() { if(arguments.length==1) return get.apply(null, arguments); if(arguments.length==3) return set.apply(null, arguments); return str; }; ret.codes = function() { return JSON.parse(JSON.stringify(ctr)); }; ret.alias = function(a, b) { als[a] = b; }; ret.local = function() { return useLocal; }; return ret; } const TPL = new EasyTemplates(); const LS = new LocalStorageHandler('IkaTweaks_'); const LANG = LanguageHandler(LS.load('LANG', location.hostname.match(/s\d+\-(\w+)\.ikariam\.gameforge\.com/i)[1]), 'en'); // SYSTEM FUNCTIONS //-------------------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------------------- // HTML: Select DropDown TPL.set('SelectContainer', `
`); TPL.set('SelectOption', ` `); function SelectDropDown(selectId, size, options, selected) { this.val = function() { return $(`#js_${selectId}Options`).val(); }; this.tpl = function() { return TPL.get('SelectContainer', { selectSize : size, selectId : selectId, selectOptions : TPL.getEach(options, function(c, n){ return ['SelectOption', { value : c, text : n, selected: (selected == c) ? 'selected="selected"' : '', }]; }), }); }; } // HTML: Select DropDown //-------------------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------------------- // IkaTweaks CORE const IkaTweaks = {}; (function(IkaTweaks){ var enabledModules = jsonDecode(LS.load('modules'), {}); var definedModules = {}; var sidebarButtons = []; function loadModule(modId) { var modData = jsonDecode(LS.load(modId), {}); definedModules[modId].func(modData, function() { LS.save(modId, JSON.stringify(modData)); }); } IkaTweaks.injectCSS = function(css, cb, sl) { sl = sl || 33; waitFor(function(){ return document.querySelector('head'); }, function(){ (cb||function(){})(injectCSS(css)); }, 2000, sl); }; const mainViewIcon = 'https://raw.githubusercontent.com/YveOne/Userscript-IkaTweaks/master/images/mainViewIcon.png'; IkaTweaks.injectCSS(` #IkaTweaks_sidebar1 .centerButton .button {width:200px;margin:2px 0px;} #IkaTweaks_sidebar2 .centerButton .button {width:200px;margin:2px 0px;} #IkaTweaks_c:before, #UpdateChecker_c:before { content: url('${mainViewIcon}'); } /** extend h3 header **/ .contentBox01h .header.hidden { overflow: hidden; height: 0px; padding-top: 7px; } /** fix research window list **/ ol.research_type { width: 220px !important; } /** fix city select **/ .dropdownContainer.city_select li.last-child { background-position: left -142px !important; padding-bottom: 3px; } .dropdownContainer.city_select li.last-child:hover{ background-position: left -196px !important; } /** increase view top padding from 10 to 20, looks better **/ #container .mainContentBox .mainContent { padding-top: 20px !important; } /** fix h4 width, margin on right side **/ #container .satisfaction_overview .sub_header, #container .notices h4 { margin: 0 3.5px 0 3px; } /** fix townhall view div right margin **/ #townHall .population_graph { margin: 0 3.5px 0 3px; } /** fix scrollbar x position **/ #container .scroller { background-position-x: -1px !important; } /** fix scroll window margin top **/ #container .mainContentBox .mainContentScroll { margin-top: -0.5px; } /** fix scroll area margin right to parent view window **/ #container .scroll_area { margin-right: 3px; } #container .scroll_area.scroll_disabled { margin-right: 0px; } `); IkaTweaks.setModule = function(modId, modFunc) { if(typeof enabledModules[modId] == 'undefined') enabledModules[modId] = false; definedModules[modId] = { name: `{str_${modId}_name}`, info: `{str_${modId}_info}`, func: modFunc, }; if(enabledModules[modId]) { loadModule(modId); } IkaTweaks.injectCSS(` #${modId}_c:before { content: url('${mainViewIcon}'); } `); }; IkaTweaks.addSidebarButton = function(btnText, btnFunc, useTop) { sidebarButtons.push({text:btnText,func:btnFunc,useTop:useTop}); }; IkaTweaks.changeHTML = function(id, html, cb) { waitFor(function(){ try{return ikariam.controller;}catch(e){} return false; }, function(n){ if(!n || n===null) return; if(n.ajaxResponder===null){n.ajaxResponder=ikariam.getClass(ajax.Responder);} html = TPL.get('IkaTweaksFrame', { version : GM_info.script.version, mainview: html, buttons1: TPL.getEach(sidebarButtons, function(i, btn){ if(!btn.useTop) return null; return ['IkaTweaksSidebar_button', { btnId: 'IkaTweaksSidebar_button'+i, btnText: btn.text }]; }), buttons2: TPL.getEach(sidebarButtons, function(i, btn){ if(btn.useTop) return null; return ['IkaTweaksSidebar_button', { btnId: 'IkaTweaksSidebar_button'+i, btnText: btn.text }]; }), }); html = TPL.parse(html, LANG()); n.ajaxResponder.changeHTML([id,html], true); setTimeout(ikariam.controller.adjustSizes, 1000); var sidebarButtonsLength = sidebarButtons.length; for(var i=0; i

{str_IkaTweaks} {version}

{buttons1}

{str_modules}

{buttons2}
{mainview} `); TPL.set('IkaTweaksSidebar_button', ` `); TPL.set('IkaTweaksMainview_tabbedWindow', `

{str_IkaTweaks_menu}

{mainviewContent}
`); TPL.set('IkaTweaksMainview_modulesWindow', `

{str_IkaTweaks_tabModules}

{modulesTR}
{str_enabled} {str_name} {str_description}
`); TPL.set('IkaTweaksMainview_tabbedWindow_modulesTR', ` {modName} {modInfo} `); TPL.set('IkaTweaksMainview_aboutWindow', `
{select}

{str_IkaTweaks_aboutHeader}

{str_ClearStorageInfo}

{str_IkaTweaks_creditsHeader}

{str_IkaTweaks_aboutCredit1}
{str_IkaTweaks_aboutCredit2}
`); var showSettingsWindow, showAboutWindow, tutorialHintInterval; showSettingsWindow = function(){ IkaTweaks.changeHTML('IkaTweaks', TPL.get('IkaTweaksMainview_tabbedWindow', { mainviewContent: TPL.get('IkaTweaksMainview_modulesWindow', { modulesTR: TPL.getEach(definedModules, function(modId){ return ['IkaTweaksMainview_tabbedWindow_modulesTR', { modId : modId, modName : definedModules[modId].name, modInfo : definedModules[modId].info, checked : enabledModules[modId] ? 'checked="checked"' : '', }]; }), }), }), function(){ $('#IkaTweaks_modulesTable tr').not(':even').addClass('alt'); ikariam.controller.replaceCheckboxes(); $('#js_tab_IkaTweaksMainview_modulesWindow').addClass('selected'); $('#js_tab_IkaTweaksMainview_modulesWindow').click(showSettingsWindow); $('#js_tab_IkaTweaksMainview_aboutWindow').click(showAboutWindow); $('#js_IkaTweaks_saveModulesButton').click(function(){ var l = {}; forEach(definedModules, (_, modId) => { l[modId] = $('#IkaTweaksMainview_modulesCheckbox'+modId+'Img').hasClass('checked'); }); enabledModules = l; LS.save('modules', JSON.stringify(enabledModules)); LS.save('reopenSettingWindow', '1'); location.reload(); }); if(document.getElementById('js_IkaTweaks_tutorialArrow')) { clearInterval(tutorialHintInterval); LS.save('tutorialDone', '1'); $('#js_IkaTweaks_tutorialArrow').fadeOut(); } }); }; showAboutWindow = function(){ var LangSelect = new SelectDropDown('IkaTweaks_Languages', 175, LANG.codes(), LANG.local()); IkaTweaks.changeHTML('IkaTweaks', TPL.get('IkaTweaksMainview_tabbedWindow', { mainviewContent: TPL.get('IkaTweaksMainview_aboutWindow', { select : LangSelect.tpl(), }), }), function(){ ikariam.controller.replaceDropdownMenus(); $('#js_tab_IkaTweaksMainview_aboutWindow').addClass('selected'); $('#js_tab_IkaTweaksMainview_modulesWindow').click(showSettingsWindow); $('#js_tab_IkaTweaksMainview_aboutWindow').click(showAboutWindow); $('#js_IkaTweaks_saveLanguageButton').click(function(){ LS.save('LANG', LangSelect.val()); LS.save('reopenSettingWindow', '1'); location.reload(); }); $('#js_IkaTweaks_clearStorageButton').click(function(){ if(LS.clear()) { LS.save('reopenSettingWindow', '1'); location.reload(); } }); $('#js_IkaTweaks_openGreasyForkButton').attr({ 'href': _LINKS_.GreasyFork, 'target': '_blank', }); $('#js_IkaTweaks_openOpenUserJSButton').attr({ 'href': _LINKS_.OpenUserJS, 'target': '_blank', }); $('#js_IkaTweaks_openGitHubRepoButton').attr({ 'href': _LINKS_.GitHubRepo, 'target': '_blank', }); $('#myEmail').attr('style', 'position:absolute;width:82px;height:14px;display:inline-block;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFIAAAAOCAYAAAC8YEsXAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADP0lEQVR42mL8//8/wyigHAAEEAuMEaor8A7KTAfi1WSYFQrEaUDsCsRKUH4nCfrLgdgFiI2h/LNAvAfNjA4oXQHEu4F4FpluJQRAYSFEwK8zQYzVlz+A1QEEEAuSpCDUgWfJtPws1GPIHiYWnIEG4Cxo4DFAI6MDGriuSGIwMIsCtxICgkT4tRPZnwABxISmACR5D8qeCY0ZEF6FpEYJ6nGYeAc0EAShtDHU8y7QVAaLQZieu1A+DOyG0oxQM8qhZtyDRqwSkjnIwBhJfSia+2YiqUF2qxKeFAZTV44lp9yFysEC7h56bgMIICYcBq+CZtNOKA5FMuQMUqAbI2VJF6gedKAENQ8Wi2eRIgYW8CbQADWGqlFCss8VRwpPg9opiOb5NKg5sAi/h2TmGSLc14EWwB3Q4qMTas8qbAEGEECMsMoGWEb+h6YKWCzsQco6yA46g6QOBP5DUw5MnxCSZWFYyktjJDNWIZWFIDFlqD1K0FQA47/DYu47qJmr0dTC3CMIDWgTNLeaoBUJHWjqkN13Buq2CixyYPOAZSSYDRBAuFLkPaij/0MxrAIAWfgeTe17AuXJPaj+d1CzkFOFCzQw0qAOvoekB5kWJGD+PaSUyICUAo2R/PAfyU70FHkPrfxDlitH0n8GlyMAAghf1t4DjSVGpJrxHhZPESqYO5BSJCNaakY24z2anntI2YtQpTILGpBpSGrfQ/3AiIRNsLQk3qP5QQlNrgKLGRgAIICY8DgOlrWRC/PVaLVyBxE1nyCecuoeUkCFIqWAciSxVdAmGT7QCbUnDSmgZqFVeOVQu5WwRAKyOuQycDVSZQqT243NAQABxITHYbCs3QH1lBJS+QRL7ml4mgcuUIfDPPkfWpa9RypvVkPN6oRG3F0kPiwQYeWsEhFNEuTIPgtNTR1I/qiARl45tKjBpg45Z1RAzTsDlXPBFakAAYSrsiGUVSsIFOCkNn73IHkSWzHjQqCBPFAAXtkABBATFkcbE9CcBk05q6CB8J7ChrEJNMXeRTJ3FVIqEMRVLg0gMEZvBgEEEBNaeUCsx1cjlS+UppR70LaiMlLPiAGpsnPFkVIHA4CHGUAAMY4OWlAHAAQYAH37+Z/ovMxFAAAAAElFTkSuQmCC);'); $('#myEmail').after(''); $('#creditUrl1').attr({ 'href': _LINKS_.OnePiece, 'target': '_blank', }).html(_LINKS_.OnePiece); }); }; waitFor(function(){ return (typeof $ != 'undefined'); }, function(jQ){ if(!jQ) return; $('#GF_toolbar ul li.options').after($('
  • ').append($('',{ 'id' : 'IkaTweaksToolbarButton', 'click': function(){ showSettingsWindow();return false; }, 'href' : '#', 'class': 'noViewParameters', 'title': 'IkaTweaks', 'text' : 'IkaTweaks' }))); if(!LS.load('tutorialDone')) { var e=20; var arrow = $('
    ').attr({ 'id': 'js_IkaTweaks_tutorialArrow', 'class': 'aniArrow', 'style': 'top:'+e+'px;display:block;', }).appendTo($('#IkaTweaksToolbarButton'))[0]; var arrowCounter=0; tutorialHintInterval = setInterval(function(){ arrow.style.top = (e+(Math.sin(++arrowCounter/15)*10))+'px'; }, 10); } if(LS.load('reopenSettingWindow')) { LS.drop('reopenSettingWindow'); showSettingsWindow(); } }, 3000, 333); IkaTweaks.addSidebarButton('{str_IkaTweaks_menu}', showSettingsWindow, true); })(IkaTweaks); // IkaTweaks CORE //-------------------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------------------- // MODULE: CityListing IkaTweaks.setModule('CityListing', function(modData, modDataSave){ if(typeof modData.hideCoords == 'undefined') modData.hideCoords = false; if(typeof modData.showTradegoods == 'undefined') modData.showTradegoods = true; if(typeof modData.highlightSelected == 'undefined') modData.highlightSelected = true; if(typeof modData.sortList == 'undefined') modData.sortList = true; if(typeof modData.sortedList == 'undefined') modData.sortedList = []; if(typeof modData.sortEverywhere == 'undefined') modData.sortEverywhere = false; // afterI = after what child ele append others? // chields = {cityId:listEle, cityId:listEle, ...} function sortElementChilds(parent, childs, afterI, altRows) { var sortedList = modData.sortedList.slice(0), ch; while(sortedList.length) { ch = childs[sortedList.pop()]; // from last, to fist if(ch) { // remove element from DOM and append again at top parent.children().eq(afterI).before(ch); } } if(altRows) { sortedList = modData.sortedList.slice(0); var alt = false; while(sortedList.length) { ch = childs[sortedList.shift()]; // but now from first to last if(ch) { ch.removeClass('alt'); if(alt) { ch.addClass('alt'); } alt = !alt; } } } } var tradegoodImagesCache = {}; var tradegoodImagePaths = { '1': '/skin/resources/icon_wine.png', '2': '/skin/resources/icon_marble.png', '3': '/skin/resources/icon_glass.png', '4': '/skin/resources/icon_sulfur.png' }; function getTradegoodImage(k, cityId, tradegood) { var cacheKey = k+cityId; var img = tradegoodImagesCache[cacheKey] || $(''); tradegoodImagesCache[cacheKey] = img; img.attr({ 'class': 'citySelectTradegoodIcon', 'src': tradegoodImagePaths[tradegood] || '', }); return img; } function updateCitySelect_appendTradegoods() { var relatedCityData = ikariam.model.relatedCityData, relatedCity = relatedCityData[relatedCityData.selectedCity]; $('#js_citySelectContainer span').append(getTradegoodImage('span', relatedCity.id, relatedCity.tradegood)); var citySelectUl = $('#dropDown_js_citySelectContainer ul'); citySelectUl.addClass('width'+citySelectUl.width()); forEach(relatedCityData, (relatedCity, cityKey) => { if (relatedCity && relatedCity.relationship == 'ownCity') { $('#dropDown_js_citySelectContainer li[selectvalue="'+relatedCity.id+'"]').append(getTradegoodImage('li', relatedCity.id, relatedCity.tradegood)); } }); } function updateCitySelect_highlightSelected() { var relatedCityData = ikariam.model.relatedCityData, relatedCity = relatedCityData[relatedCityData.selectedCity]; $('#dropDown_js_citySelectContainer li[selectvalue="'+relatedCity.id+'"]').addClass('active'); } function updateCitySelect_hideCoords() { var aSpan = $('#js_citySelectContainer span a'); aSpan.text(aSpan.text().replace(/\[\d+\:\d+\]\s+/, '')); var aLi = $('#dropDown_js_citySelectContainer li a'); aLi.each(function(){ $(this).text($(this).text().replace(/\[\d+\:\d+\]\s+/, '')); }); } function updateCitySelect_sort() { var parent = $('#dropDown_js_citySelectContainer ul'); var childs = {}; $('#dropDown_js_citySelectContainer ul li').each(function(i){ childs[$(this).attr('selectvalue').match(/\d+/)] = $(this); }); sortElementChilds(parent, childs, 0); // refresh classes for :first and :last (function(li){ li.removeClass('first-child'); li.removeClass('last-child'); li.first().addClass('first-child'); li.last().addClass('last-child'); })(parent.children()); } function updateCitySelect() { if(modData.showTradegoods) updateCitySelect_appendTradegoods(); if(modData.highlightSelected) updateCitySelect_highlightSelected(); if(modData.hideCoords) updateCitySelect_hideCoords(); if(modData.sortList) updateCitySelect_sort(); } function changeViewUpdate() { if(!(modData.sortList && modData.sortEverywhere)) return; var unsortedIds = []; forEach(ikariam.model.relatedCityData, (relatedCity, cityKey) => { if (relatedCity && relatedCity.relationship == 'ownCity') { unsortedIds.push(relatedCity.id); } }); var parent, childs = {}; if(document.getElementById('palace_c')) { parent = $('#palace_c table:eq(1) tbody'); parent.find('tr:gt(0)').each(function(i){ childs[unsortedIds[i]] = $(this); }); return sortElementChilds(parent, childs, 1, true); } if(document.getElementById('palaceColony_c')) { parent = $('#palaceColony_c table:eq(0) tbody'); parent.find('tr').each(function(i){ childs[unsortedIds[i]] = $(this); }); return sortElementChilds(parent, childs, 0); } if(document.getElementById('culturalPossessions_assign_c')) { parent = $('#culturalPossessions_assign_c ul:eq(1)'); parent.find('li').each(function(i){ childs[unsortedIds[i]] = $(this); }); return sortElementChilds(parent, childs, 0); } if(document.getElementById('finances_c')) { parent = $('#finances_c table:eq(1) tbody'); parent.find('tr:gt(0)').each(function(i){ childs[unsortedIds[i]] = $(this); }); return sortElementChilds(parent, childs, 1, true); } if(document.getElementById('port_c')) { parent = $('#port_c ul.cities'); parent.find('li').each(function(i){ childs[$(this).attr('id').match(/\d+/)] = $(this); }); return sortElementChilds(parent, childs, 0); } } waitFor(function(){ try{ jshintUnused = ikariam.backgroundView.updateCityDropdownMenu; jshintUnused = ikariam.model.relatedCityData; return true; }catch(e){} return false; }, function(ret){ if(!ret) return; hookFunction(ikariam.backgroundView, 'updateCityDropdownMenu', updateCitySelect); updateCitySelect(); }, 5000, 33); var hookChangeView = function() { if(!(modData.sortList && modData.sortEverywhere)) return; hookChangeView = function(){}; waitFor(function(){ try{return ikariam.controller;}catch(e){} return false; }, function(n){ if(!n || n===null) return; if(n.ajaxResponder===null){n.ajaxResponder=ikariam.getClass(ajax.Responder);} hookFunction(n.ajaxResponder, 'changeView', changeViewUpdate); changeViewUpdate(); }, 5000, 33); }; hookChangeView(); IkaTweaks.injectCSS(` img.citySelectTradegoodIcon {width:15px;height:12px;position:absolute;margin-top:5px;} ul.width177 img.citySelectTradegoodIcon {left:138px;} ul.width158 img.citySelectTradegoodIcon {left:138px;} #js_citySelectContainer span img.citySelectTradegoodIcon {left:146px;width:20px;height:16px;} #js_citySelectContainer span a {display:inline;} .dropdownContainer.city_select li.active{font-weight:bold;} #CityListing_sortingList button {cursor:pointer;display:inline-block;border:none;width:17px;height:17px;} #CityListing_sortingList button.up {background:url(/skin/friends/button17_up.png) no-repeat center 0px;} #CityListing_sortingList button.down {background:url(/skin/friends/button17_down.png) no-repeat center 0px;} `); TPL.set('CityListing_settingsWindow', `

    {str_CityListing_name}

    {settingsTR}
    `); TPL.set('CityListing_settingTR', ` {text} `); TPL.set('CityListing_settingListTR', ` {text}
    {subTR}
    `); IkaTweaks.addSidebarButton('{str_CityListing_name}', function(){ var checkboxes = { hideCoords : modData.hideCoords, showTradegoods : modData.showTradegoods, highlightSelected : modData.highlightSelected, sortList : modData.sortList, }; var checkboxes2 = { sortEverywhere : modData.sortEverywhere, }; IkaTweaks.changeHTML('CityListing', TPL.get('CityListing_settingsWindow', { settingsTR: TPL.getEach(checkboxes, function(k, checked){ switch(k) { case 'sortList': return ['CityListing_settingListTR', { id : k, text : '{str_CityListing_'+k+'}', checked : (checked) ? 'checked="checked"' : '', subTR : TPL.getEach(checkboxes2, function(k, checked){ return ['CityListing_settingTR', { id : k, text : '{str_CityListing_'+k+'}', checked : (checked) ? 'checked="checked"' : '', }]; }), }]; default: return ['CityListing_settingTR', { id : k, text : '{str_CityListing_'+k+'}', checked : (checked) ? 'checked="checked"' : '', }]; } }), }), function(){ $('#CityListing_settingTable tr').not(':even').addClass('alt'); var CityListing_sortingList = $('#CityListing_sortingList'); ikariam.controller.replaceCheckboxes(); var relatedCity, relatedCityData = ikariam.model.relatedCityData; // add current ids of moddata var newSortedList = []; while (modData.sortedList.length) { relatedCity = relatedCityData['city_'+modData.sortedList.shift()]; if (relatedCity && relatedCity.relationship == 'ownCity') { if (newSortedList.indexOf(relatedCity.id) == -1) { newSortedList.push(relatedCity.id); } } } // add missing ownCity ids of relatedCityData forEach(relatedCityData, (relatedCity, cityKey) => { if (relatedCity && relatedCity.relationship == 'ownCity') { if (newSortedList.indexOf(relatedCity.id) == -1) { newSortedList.push(relatedCity.id); } } }); function onClickSortUp(that) { var tr = $(this).closest('tr'); // jshint ignore:line var ch = CityListing_sortingList.children(); if(tr[0] === ch.first()[0]) ch.last().after(tr); else tr.prev().before(tr); } function onClickSortDown() { var tr = $(this).closest('tr'); // jshint ignore:line var ch = CityListing_sortingList.children(); if(tr[0] === ch.last()[0]) ch.first().before(tr); else tr.next().after(tr); } // fill #CityListing_sortingList while(newSortedList.length) { var cityId = newSortedList.shift(); modData.sortedList.push(cityId); CityListing_sortingList.append($('', {cityId:cityId}) .append($('') .append($('
    `); TPL.set('CustomTowns_settingTR', ` {text} `); TPL.set('CustomTowns_settingCustomBackgroundTR', ` {text} {customBackgroundSelect} `); var showSettingsWindow; showSettingsWindow = function() { var checkboxes = { hideCapitalBackground : modData.hideCapitalBackground, hidePirateFortress : modData.hidePirateFortress, hideLockedPosition : modData.hideLockedPosition, hideWalkers : modData.hideWalkers, NoAnimPointerEvents : modData.NoAnimPointerEvents, customBackgroundEnabled : modData.customBackgroundEnabled, hideDailyTasks : modData.hideDailyTasks, hideRegistrationGifts : modData.hideRegistrationGifts, hideFlyingShop : modData.hideFlyingShop, hideAmbrosiaFountain : modData.hideAmbrosiaFountain, }; var customBackgroundList = new Array(CITY_BACKGROUNDS_COUNT).fill(null).map((v, i)=>(i)); IkaTweaks.changeHTML('CustomTowns', TPL.get('CustomTowns_settingsWindow', { settingsTR: TPL.getEach(checkboxes, function(modDataId, checked){ switch(modDataId) { case 'customBackgroundEnabled': return ['CustomTowns_settingCustomBackgroundTR', { id : modDataId, text : '{str_CustomTowns_customBackground}', checked : (checked) ? 'checked="checked"' : '', customBackgroundSelect : TPL.get('SelectContainer', { selectSize : '95', selectId : 'CustomTowns_customBackgroundSelect', selectOptions : TPL.getEach(customBackgroundList, function(i, _){ i = parseInt(i); return ['SelectOption', { value : i, text : i+1, selected: (modData.customBackground == i) ? 'selected="selected"' : '', }]; }), }), }]; default: return ['CustomTowns_settingTR', { id : modDataId, text : '{str_CustomTowns_'+modDataId+'}', checked : (checked) ? 'checked="checked"' : '', }]; } }), }), function(){ $('#CustomTowns_settingsTable tr').not(':even').addClass('alt'); ikariam.controller.replaceCheckboxes(); $('#js_tab_CustomTowns_settingsWindow').addClass('selected'); $('#js_CustomTowns_saveSettingsButton').click(function(){ forEach(checkboxes, (_, k) => { modData[k] = $('#CustomTowns_settingCheckbox'+k+'Img').hasClass('checked'); }); modData.customBackground = parseInt($('#js_CustomTowns_customBackgroundSelectOptions').val()); modDataSave(); updateObjectsCSS(); }); }); }; IkaTweaks.addSidebarButton('{str_CustomTowns_name}', showSettingsWindow); }); // MODULE: CustomTowns //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // MODULE: TweakResources IkaTweaks.setModule('TweakResources', function(modData, modDataSave){ if(typeof modData.showMissing == 'undefined') modData.showMissing = true; if(typeof modData.showRemaining == 'undefined') modData.showRemaining = false; TPL.set('TweakResources_settingsWindow', `

    {str_TweakResources_name}

    {settingsTR}
    `); TPL.set('TweakResources_settingTR', ` {text} `); function changeViewUpdate() { var res = { 'wood':'resource', 'wine':'1', 'marble':'2', 'glass':'3', 'sulfur':'4', }; $('#buildingUpgrade ul.resources li').each(function(i){ var t=$(this); forEach(res, (v, k) => { if (t.hasClass(k)) { var req = parseInt(t.html().replace(/\D+/g,'')); var cur = ikariam.model.currentResources[v]; var lft = req-cur; if (lft>0) { if (modData.showMissing) { t.addClass('red bold').css({'line-height':'initial'}); t.append('-'+ikariam.model.shortenValue(lft,6)+''); } } else { if(modData.showRemaining) { t.css({'line-height':'initial'}); t.append('+'+ikariam.model.shortenValue(lft*-1,6)+''); } } return; } }); }); } waitFor(function(){ try{return ikariam.controller;}catch(e){} return false; }, function(n){ if(!n || n===null) return; if(n.ajaxResponder===null){n.ajaxResponder=ikariam.getClass(ajax.Responder);} hookFunction(n.ajaxResponder, 'changeView', changeViewUpdate); changeViewUpdate(); }, 5000, 33); IkaTweaks.addSidebarButton('{str_TweakResources_name}', function(){ var checkboxes = { showMissing : modData.showMissing, showRemaining : modData.showRemaining, }; IkaTweaks.changeHTML('TweakResources', TPL.get('TweakResources_settingsWindow', { settingsTR: TPL.getEach(checkboxes, function(modDataId, checked){ return ['TweakResources_settingTR', { id : modDataId, text : '{str_TweakResources_'+modDataId+'}', checked : (checked) ? 'checked="checked"' : '', }]; }), }), function(){ $('#TweakResources_settingsTable tr').not(':even').addClass('alt'); ikariam.controller.replaceCheckboxes(); $('#js_TweakResources_saveSettingsButton').click(function(){ forEach(checkboxes, (_, k) => { modData[k] = $('#TweakResources_settingCheckbox'+k+'Img').hasClass('checked'); }); modDataSave(); }); }); }); }); // MODULE: TweakResources //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // MODULE: UpdateChecker IkaTweaks.setModule('UpdateChecker', function(modData, modDataSave){ TPL.set('UpdateChecker_window', `

    {str_TweakResources_name}

    {str_UpdateChecker_lastResult}: {lastResult}
    {str_UpdateChecker_HowDoesThisWork}
    `); var showWindow, showWindowAndList=false; var nowMajor, nowMinor; var newMajor, newMinor, lastCheckResult = '-'; (function(v){ nowMajor = parseInt(v[0]); nowMinor = parseInt(v[1]); })(GM_info.script.version.match(/\d+/g)); function checkImage(cb) { var image = new Image(); image.onload = function(){ newMajor = image.width-1; newMinor = image.height-1; var newAvailable = (newMajor>nowMajor)||(newMajor==nowMajor&&newMinor>nowMinor); if(newAvailable) { lastCheckResult = '{str_UpdateChecker_newVersionAvailable}: v'+newMajor+'.'+newMinor; } else { lastCheckResult = '{str_UpdateChecker_versionUpToDate}'; } cb(newAvailable); }; image.onerror = function(){ alert('IkaTweaks-UpdateChecker:\nFailed checking version :('); }; //image.src = 'https://github.com/YveOne/Userscript-IkaTweaks/blob/master/versions/versionImage.gif?raw=true'; image.src = 'https://raw.githubusercontent.com/YveOne/Userscript-IkaTweaks/master/versions/versionImage.gif'; } function listVersions(cb) { var table = $('#IkaTweaksUpdateChecker_table'); var curMajor = nowMajor; var curMinor = nowMinor+1; function loop() { if(curMajor>newMajor) { $('#IkaTweaksUpdateChecker_table tr').not(':even').addClass('alt'); $('#IkaTweaksUpdateChecker_linksBox').show(); ikariam.controller.adjustSizes(); return cb(); } var image = new Image(); image.onload = function(){ table.append($('').append($('').append(image))); curMinor++; loop(); }; image.onerror = function(){ curMajor++; curMinor=0; loop(); }; //image.src = 'https://github.com/YveOne/Userscript-IkaTweaks/blob/master/versions/version'+curMajor+'.'+curMinor+'.png?raw=true'; image.src = 'https://raw.githubusercontent.com/YveOne/Userscript-IkaTweaks/master/versions/version'+curMajor+'.'+curMinor+'.png'; } loop(); } showWindow = function(){ IkaTweaks.changeHTML('UpdateChecker', TPL.get('UpdateChecker_window', { lastResult: lastCheckResult, }), function(){ $('#js_IkaTweaks_openGreasyForkButton').attr({ 'href': _LINKS_.GreasyFork, 'target': '_blank', }); $('#js_IkaTweaks_openOpenUserJSButton').attr({ 'href': _LINKS_.OpenUserJS, 'target': '_blank', }); $('#js_IkaTweaks_openGitHubRepoButton').attr({ 'href': _LINKS_.GitHubRepo, 'target': '_blank', }); $('#IkaTweaksUpdateChecker_forceButton').click(function(){ $('#IkaTweaksUpdateChecker_forceButton').attr('disabled', 'disabled'); checkImage(function(newAvailable){ if(newAvailable) showWindowAndList = true; showWindow(); }); }); if (showWindowAndList) { showWindowAndList = false; listVersions(function(){}); } }); }; IkaTweaks.addSidebarButton('{str_UpdateChecker_name}', showWindow); }); // MODULE: UpdateChecker //----------------------------------------------------------------------------- LANG.alias('us', 'en'); LANG('en', 'English', { 'str_IkaTweaks' : 'IkaTweaks', 'str_IkaTweaks_menu' : 'IkaTweaks Menu', 'str_IkaTweaks_tabModules' : 'Modules', 'str_IkaTweaks_tabAbout' : 'About & Credits', 'str_modules' : 'Modules', 'str_enabled' : 'Enabled', 'str_name' : 'Name', 'str_description' : 'Description', 'str_save' : 'Save', 'str_saveLanguage' : 'Save language', 'str_IkaTweaks_aboutHeader' : 'About', 'str_IkaTweaks_creditsHeader' : 'Credits', 'str_ClearStorageText' : 'Clear LocalStorage', 'str_ClearStorageInfo' : 'Here you can delete all saved data for IkaTweaks out of your Browser', 'str_ToGreasyForkText' : 'IkaTweaks @ Greasy Fork', 'str_ToOpenUserJSText' : 'IkaTweaks @ OpenUserJS', 'str_ToGitHubRepoText' : 'IkaTweaks @ GitHub', 'str_IkaTweaks_aboutText2' : 'Questions, ideas, bugs or complaints? Email me at or visit me at: ', 'str_IkaTweaks_aboutCredit1': 'The used OnePiece images can be found on:
    ', 'str_IkaTweaks_aboutCredit2': 'Thanks to xarisgr for greek translation', // -- CityListing 'str_CityListing_name' : 'City Listing', 'str_CityListing_info' : 'Extends your city dropdown menu', 'str_CityListing_hideCoords' : 'Hide Coords', 'str_CityListing_showTradegoods' : 'Show Tradegoods', 'str_CityListing_highlightSelected' : 'Highlight selected city', 'str_CityListing_sortList' : 'Use custom sorting', 'str_CityListing_sortEverywhere' : 'Use custom sorting everywhere (palace, museum, ...)', // -- ChangeAdvisors 'str_ChangeAdvisors_name' : 'Change Advisors', 'str_ChangeAdvisors_info' : 'Change appearance of your advisors', 'str_ChangeAdvisors_hideButtons' : 'Hide premium buttons', 'str_ChangeAdvisors_replaceAdvisors' : 'Replace advisors', 'str_ChangeAdvisors_cities' : 'Cities', 'str_ChangeAdvisors_military' : 'Military', 'str_ChangeAdvisors_research' : 'Research', 'str_ChangeAdvisors_diplomacy' : 'Diplomacy', 'str_ChangeAdvisors_maleMayor' : 'Mayor', 'str_ChangeAdvisors_maleMayorPremium' : 'Mayor (premium)', 'str_ChangeAdvisors_maleGeneral' : 'General', 'str_ChangeAdvisors_maleGeneralPremium' : 'General (premium)', 'str_ChangeAdvisors_maleScientist' : 'Scientist', 'str_ChangeAdvisors_maleScientistPremium' : 'Scientist (premium)', 'str_ChangeAdvisors_maleDiplomat' : 'Diplomat', 'str_ChangeAdvisors_maleDiplomatPremium' : 'Diplomat (premium)', 'str_ChangeAdvisors_onePieceLuffy' : 'Monkey D. Luffy (One Piece)', 'str_ChangeAdvisors_onePieceZoro' : 'Roronoa Zoro (One Piece)', 'str_ChangeAdvisors_onePieceUsopp' : 'Usopp (One Piece)', 'str_ChangeAdvisors_onePieceNami' : 'Nami (One Piece)', 'str_ChangeAdvisors_barbarianMayor' : 'Barbarian mayor', 'str_ChangeAdvisors_barbarianMayorPremium' : 'Barbarian mayor (premium)', 'str_ChangeAdvisors_barbarianGeneral' : 'Barbarian general', 'str_ChangeAdvisors_barbarianGeneralPremium' : 'Barbarian general (premium)', 'str_ChangeAdvisors_barbarianScientist' : 'Barbarian scientist', 'str_ChangeAdvisors_barbarianScientistPremium' : 'Barbarian scientist (premium)', 'str_ChangeAdvisors_barbarianDiplomat' : 'Barbarian diplomat', 'str_ChangeAdvisors_barbarianDiplomatPremium' : 'Barbarian diplomat (premium)', 'str_ChangeAdvisors_femaleMayor' : 'Female mayor', 'str_ChangeAdvisors_femaleMayorPremium' : 'Female mayor (premium)', 'str_ChangeAdvisors_femaleGeneral' : 'Female general', 'str_ChangeAdvisors_femaleGeneralPremium' : 'Female general (premium)', 'str_ChangeAdvisors_femaleScientist' : 'Female scientist', 'str_ChangeAdvisors_femaleScientistPremium' : 'Female scientist (premium)', 'str_ChangeAdvisors_femaleDiplomat' : 'Female diplomat', 'str_ChangeAdvisors_femaleDiplomatPremium' : 'Female diplomat (premium)', // -- AntiAds 'str_AntiAds_name' : 'Anti Premium', 'str_AntiAds_info' : 'Hide annoying stuff', 'str_AntiAds_hideSpeedUpButton' : 'Hide speedup button', 'str_AntiAds_hideAdvertising' : 'Hide advertising', 'str_AntiAds_hideHappyHour' : 'Hide happy hour countdown', 'str_AntiAds_hideOfferBox' : 'Hide offer box in windows', 'str_AntiAds_hideSlotResourceShop' : 'Hide expandable slot "Resource Shop"', 'str_AntiAds_hideSlotPremiumTrader' : 'Hide expandable slot "Premium Trader"', 'str_AntiAds_hideAmbrosiaDonateForm' : 'Hide "Donate ambrosia" in sidebar', 'str_AntiAds_hideMsgArchiveButtons' : 'Hide message archive buttons', 'str_AntiAds_hideBarracksDummiesBox' : 'Hide premium dummy box in barracks', // -- MoveBuildings 'str_MoveBuildings_name' : 'Move Buildings', 'str_MoveBuildings_info' : 'Change positions of your buildings', 'str_MoveBuildings_SavePositions' : 'Save positions', 'str_MoveBuildings_DragDropHint' : '(Change positions by drag&drop them onto each other)', // -- CustomTowns 'str_CustomTowns_name' : 'Customize Towns', 'str_CustomTowns_info' : 'Hide premium buildings or re-position your town buildings', 'str_CustomTowns_tabSettings' : 'Towns', 'str_CustomTowns_tabPositions' : 'Building positions', 'str_CustomTowns_customPositionsDisabled' : 'Enable custom building positions first', 'str_CustomTowns_confirmSaveChanged' : 'Save changed positions?', 'str_CustomTowns_hideCapitalBackground' : 'No custom background for capital', 'str_CustomTowns_hidePirateFortress' : 'Hide pirate fortress', 'str_CustomTowns_hideLockedPosition' : 'Hide locked position', 'str_CustomTowns_hideWalkers' : 'Hide walkers', 'str_CustomTowns_NoAnimPointerEvents' : 'Ignore mouse events for animations/walkers (will disable walker bubbles)', 'str_CustomTowns_restrictedPosition' : 'Can\'t be placed there', 'str_CustomTowns_useCustomPositions' : 'Use custom building positions', 'str_CustomTowns_customBackground' : 'Custom background for all towns', 'str_CustomTowns_hideDailyTasks' : 'Hide daily tasks', 'str_CustomTowns_hideRegistrationGifts' : 'Hide registration gifts', 'str_CustomTowns_hideFlyingShop' : 'Hide flying premium shop', 'str_CustomTowns_hideAmbrosiaFountain' : 'Hide ambrosia fountain', // -- TweakResource 'str_TweakResources_name' : 'Resources', 'str_TweakResources_info' : 'Shows missing/remaining resources', 'str_TweakResources_showMissing' : 'Show missing resources', 'str_TweakResources_showRemaining' : 'Show remaining resources', // -- Updatechecker 'str_UpdateChecker_name' : 'UpdateChecker', 'str_UpdateChecker_info' : 'Check for new version of IkaTweaks', 'str_UpdateChecker_forceNow' : 'Check now', 'str_UpdateChecker_lastResult' : 'Last result', 'str_UpdateChecker_newVersionAvailable' : 'New version available', 'str_UpdateChecker_versionUpToDate' : 'Version is up to date', 'str_UpdateChecker_HowDoesThisWork' : 'How does this work: For your own safety IkaTweaks does NOT load any extern scripts but a tiny image from GitHub. With its weight and height it will be checked if a new version is available or not ;)', 'str_UpdateChecker_linksHeader' : 'Here you will get always the newest version:', }); LANG('de', 'Deutsch', { 'str_IkaTweaks' : 'IkaTweaks', 'str_IkaTweaks_menu' : 'IkaTweaks Menü', 'str_IkaTweaks_tabModules' : 'Module', 'str_IkaTweaks_tabAbout' : 'Info & Credits', 'str_modules' : 'Module', 'str_enabled' : 'Aktiviert', 'str_name' : 'Name', 'str_description' : 'Beschreibung', 'str_save' : 'Speichern', 'str_saveLanguage' : 'Sprache speichern', 'str_IkaTweaks_aboutHeader' : 'Info', 'str_IkaTweaks_creditsHeader' : 'Credits', 'str_ClearStorageText' : 'LocalStorage leeren', 'str_ClearStorageInfo' : 'Hier können die gespeicherten Daten für IkaTweaks aus dem Browser gelöscht werden.', 'str_ToGreasyForkText' : 'IkaTweaks @ Greasy Fork', 'str_ToOpenUserJSText' : 'IkaTweaks @ OpenUserJS', 'str_ToGitHubRepoText' : 'IkaTweaks @ GitHub', 'str_IkaTweaks_aboutText2' : 'Fragen, Ideen, Fehler gefunden oder eine Beschwerde? Einfach eine Email an oder besuche mich auf: ', 'str_IkaTweaks_aboutCredit1': 'Die hier benutzten OnePiece Bilder sind von: ', 'str_IkaTweaks_aboutCredit2': null, // -- CityListing 'str_CityListing_name' : 'Städteliste', 'str_CityListing_info' : 'Erweitert das Dropdown-Menü für die Städte', 'str_CityListing_hideCoords' : 'Keine Koordinaten', 'str_CityListing_showTradegoods' : 'Zeige Luxusgüter', 'str_CityListing_highlightSelected' : 'Ausgewählte Stadt hervorheben', 'str_CityListing_sortList' : 'Eigene Reihenfolge', 'str_CityListing_sortEverywhere' : 'Eigene Reihenfolge überall benutzen (Palast, Museum, ...)', // -- ChangeAdvisors 'str_ChangeAdvisors_name' : 'Berater ändern', 'str_ChangeAdvisors_info' : 'Ändert das Aussehen der Berater', 'str_ChangeAdvisors_hideButtons' : 'Verstecke Premium-Buttons', 'str_ChangeAdvisors_replaceAdvisors' : 'Berater ersetzen', 'str_ChangeAdvisors_cities' : 'Städte', 'str_ChangeAdvisors_military' : 'Militär', 'str_ChangeAdvisors_research' : 'Forschung', 'str_ChangeAdvisors_diplomacy' : 'Diplomatie', 'str_ChangeAdvisors_maleMayor' : 'Bürgermeister', 'str_ChangeAdvisors_maleMayorPremium' : 'Bürgermeister (Premium)', 'str_ChangeAdvisors_maleGeneral' : 'General', 'str_ChangeAdvisors_maleGeneralPremium' : 'General (Premium)', 'str_ChangeAdvisors_maleScientist' : 'Wissenschaftler', 'str_ChangeAdvisors_maleScientistPremium' : 'Wissenschaftler (Premium)', 'str_ChangeAdvisors_maleDiplomat' : 'Diplomat', 'str_ChangeAdvisors_maleDiplomatPremium' : 'Diplomat (Premium)', 'str_ChangeAdvisors_onePieceLuffy' : 'Monkey D. Ruffy (One Piece)', 'str_ChangeAdvisors_onePieceZoro' : 'Lorenor Zorro (One Piece)', 'str_ChangeAdvisors_onePieceUsopp' : 'Lysop (One Piece)', 'str_ChangeAdvisors_onePieceNami' : 'Nami (One Piece)', 'str_ChangeAdvisors_barbarianMayor' : 'Barbaren-Bürgermeister', 'str_ChangeAdvisors_barbarianMayorPremium' : 'Barbaren-Bürgermeister (Premium)', 'str_ChangeAdvisors_barbarianGeneral' : 'Barbaren-General', 'str_ChangeAdvisors_barbarianGeneralPremium' : 'Barbaren-General (Premium)', 'str_ChangeAdvisors_barbarianScientist' : 'Barbaren-Wissenschaftler', 'str_ChangeAdvisors_barbarianScientistPremium' : 'Barbaren-Wissenschaftler (Premium)', 'str_ChangeAdvisors_barbarianDiplomat' : 'Barbaren-Diplomatin', 'str_ChangeAdvisors_barbarianDiplomatPremium' : 'Barbaren-Diplomatin (Premium)', 'str_ChangeAdvisors_femaleMayor' : 'Bürgermeisterin', 'str_ChangeAdvisors_femaleMayorPremium' : 'Bürgermeisterin (Premium)', 'str_ChangeAdvisors_femaleGeneral' : 'Generalin', 'str_ChangeAdvisors_femaleGeneralPremium' : 'Generalin (Premium)', 'str_ChangeAdvisors_femaleScientist' : 'Wissenschaftlerin', 'str_ChangeAdvisors_femaleScientistPremium' : 'Wissenschaftlerin (Premium)', 'str_ChangeAdvisors_femaleDiplomat' : 'Diplomatin', 'str_ChangeAdvisors_femaleDiplomatPremium' : 'Diplomatin (Premium)', // -- AntiAds 'str_AntiAds_name' : 'Anti Werbung', 'str_AntiAds_info' : 'Verstecke nervige Sachen', 'str_AntiAds_hideSpeedUpButton' : 'Verstecke SpeedUp-Button', 'str_AntiAds_hideAdvertising' : 'Verstecke Werbung', 'str_AntiAds_hideHappyHour' : 'Verstecke Happy-Hour Countdown', 'str_AntiAds_hideOfferBox' : 'Verstecke Angebote-Box im Fenster', 'str_AntiAds_hideSlotResourceShop' : 'Verstecke Slot "Rohstoffe holen"', 'str_AntiAds_hideSlotPremiumTrader' : 'Verstecke Slot "Premium-Händler"', 'str_AntiAds_hideAmbrosiaDonateForm' : 'Verstecke "Ambrosia spenden" in der Seitenleiste', 'str_AntiAds_hideMsgArchiveButtons' : 'Verstecke Nachrichten-Archivieren-Buttons', 'str_AntiAds_hideBarracksDummiesBox' : 'Verstecke Premium-Dummy-Box in der Kaserne', // -- MoveBuildings 'str_MoveBuildings_name' : 'Gebäude versetzen', 'str_MoveBuildings_info' : 'Ändere die Positionen deiner Gebäude', 'str_MoveBuildings_SavePositions' : 'Positionen speichern', 'str_MoveBuildings_DragDropHint' : '(Ändere die Positionen der Gebäude per Drag&Drop)', // -- CustomTowns 'str_CustomTowns_name' : 'Städte anpassen', 'str_CustomTowns_info' : 'Verstecke Premium-Objekte oder positionier Gebäude neu', 'str_CustomTowns_tabSettings' : 'Städte', 'str_CustomTowns_tabPositions' : 'Gebäude-Positionen', 'str_CustomTowns_customPositionsDisabled' : 'Aktiviere zuerst die Option "Eigene Gebäude-Positionen"', 'str_CustomTowns_confirmSaveChanged' : 'Geänderte Positionen speichern?', 'str_CustomTowns_hideCapitalBackground' : 'Kein eigener Hintergrund für Hauptstadt', 'str_CustomTowns_hidePirateFortress' : 'Verstecke Piratenfestung', 'str_CustomTowns_hideLockedPosition' : 'Verstecke gesperrten Bauplatz', 'str_CustomTowns_hideWalkers' : 'Verstecke Wanderer', 'str_CustomTowns_NoAnimPointerEvents' : 'Ignoriere Maus-Events für Animationen/Walker (deaktiviert Sprechblasen)', 'str_CustomTowns_restrictedPosition' : 'Kann dort nicht platziert werden', 'str_CustomTowns_useCustomPositions' : 'Eigene Gebäude-Positionen', 'str_CustomTowns_customBackground' : 'Benutzerdefinierter Hintergrund für alle Städte', 'str_CustomTowns_hideDailyTasks' : 'Verstecke tägliche Aufgaben', 'str_CustomTowns_hideRegistrationGifts' : 'Verstecke tägliche Geschenke', 'str_CustomTowns_hideFlyingShop' : 'Verstecke fliegendes Premium-Schiff', 'str_CustomTowns_hideAmbrosiaFountain' : 'Verstecke Ambrosiabrunnen', // -- TweakResource 'str_TweakResources_name' : 'Ressourcen', 'str_TweakResources_info' : 'Lässt Dir fehlende Ressourcen anzeigen', 'str_TweakResources_showMissing' : 'Fehlende Ressourcen anzeigen', 'str_TweakResources_showRemaining' : 'Verbleibende Ressourcen anzeigen', // -- Updatechecker 'str_UpdateChecker_name' : 'UpdateChecker', 'str_UpdateChecker_info' : 'Sucht nach neuen IkaTweaks-Versionen', 'str_UpdateChecker_forceNow' : 'Überprüfen', 'str_UpdateChecker_lastResult' : 'Letztes Ergebnis', 'str_UpdateChecker_newVersionAvailable' : 'Neue Version verfügbar', 'str_UpdateChecker_versionUpToDate' : 'Version ist aktuell', 'str_UpdateChecker_HowDoesThisWork' : 'Wie dies funktioniert: IkaTweaks lädt zu Deiner eigenen Sicherheit kein externes Script, sondern ein kleines Bild von GitHub, mit dessen Breite und Höhe überprüft wird ob eine neue Version verfügbar ist ;)', 'str_UpdateChecker_linksHeader' : 'Die neuste Version gibt es immer hier:', }); LANG('gr', 'ελληνικά', { 'str_IkaTweaks' : 'IkaTweaks', 'str_IkaTweaks_menu' : 'IkaTweaks Μενού', 'str_IkaTweaks_tabModules' : 'Ενότητες', 'str_IkaTweaks_tabAbout' : 'Δημιουργοί', 'str_modules' : 'Ενότητες', 'str_enabled' : 'Ενεργοποίηση', 'str_name' : 'Όνομασία', 'str_description' : 'Περιγραφή', 'str_save' : null, 'str_saveLanguage' : 'Επιλογή Γλώσσας', 'str_IkaTweaks_aboutHeader' : 'Σχετικά με', 'str_IkaTweaks_creditsHeader' : 'Ευχαριστίες', 'str_ClearStorageText' : 'Εκκαθάριση προσωρινής μνήμης', 'str_ClearStorageInfo' : 'Διαγραφή Δεδομένων IkaTweaks απο το πρόγραμμα περιήγησης', 'str_ToGreasyForkText' : 'IkaTweaks @ Greasy Fork', 'str_ToOpenUserJSText' : 'IkaTweaks @ OpenUserJS', 'str_ToGitHubRepoText' : 'IkaTweaks @ GitHub', 'str_IkaTweaks_aboutText2' : 'Για οποιαδήποτε Προτάσεις,ιδέες.προβλήματα? Email η επισκεφτείτε στο: ', 'str_IkaTweaks_aboutCredit1': 'Οι εικόνες OnePiece που χρησιμοποιούνται μπορούν να βρεθούν στο: ', 'str_IkaTweaks_aboutCredit2': null, // -- CityListing 'str_CityListing_name' : null, 'str_CityListing_info' : 'Επεκτείνει το αναπτυσσόμενο μενού της πόλης σας', 'str_CityListing_hideCoords' : 'Απόκρυψη Coords', 'str_CityListing_showTradegoods' : 'Δείξε τα ανταλάξιμα προιόντα σου', 'str_CityListing_highlightSelected' : 'Επισημάνετε την επιλεγμένη πόλη', 'str_CityListing_sortList' : 'Προσαρμοσμένη ταξινόμηση', 'str_CityListing_sortEverywhere' : null, // -- ChangeAdvisors 'str_ChangeAdvisors_name' : null, 'str_ChangeAdvisors_info' : 'Αλλαγή εμφάνισης συμβούλων', 'str_ChangeAdvisors_hideButtons' : null, 'str_ChangeAdvisors_replaceAdvisors' : 'Αντικατάσταση Συμβούλων', 'str_ChangeAdvisors_cities' : 'Πόλεις', 'str_ChangeAdvisors_military' : 'Στρατός', 'str_ChangeAdvisors_research' : 'Έρευνα', 'str_ChangeAdvisors_diplomacy' : 'Διπλωματία', 'str_ChangeAdvisors_maleMayor' : 'Δήμαρχος', 'str_ChangeAdvisors_maleMayorPremium' : 'Δήμαρχος (premium)', 'str_ChangeAdvisors_maleGeneral' : 'Γενικά', 'str_ChangeAdvisors_maleGeneralPremium' : 'Γενικά (premium)', 'str_ChangeAdvisors_maleScientist' : 'Επιστήμονες', 'str_ChangeAdvisors_maleScientistPremium' : 'Επιστήμονες (premium)', 'str_ChangeAdvisors_maleDiplomat' : 'Διπλωμάτης', 'str_ChangeAdvisors_maleDiplomatPremium' : 'Διπλωμάτης (premium)', 'str_ChangeAdvisors_onePieceLuffy' : 'Monkey D. Luffy (Ένα τεμάχιο)', 'str_ChangeAdvisors_onePieceZoro' : 'Roronoa Zoro (Ένα τεμάχιο)', 'str_ChangeAdvisors_onePieceUsopp' : 'Usopp (Ένα τεμάχιο)', 'str_ChangeAdvisors_onePieceNami' : 'Nami (Ένα τεμάχιο)', 'str_ChangeAdvisors_barbarianMayor' : null, 'str_ChangeAdvisors_barbarianMayorPremium' : null, 'str_ChangeAdvisors_barbarianGeneral' : null, 'str_ChangeAdvisors_barbarianGeneralPremium' : null, 'str_ChangeAdvisors_barbarianScientist' : null, 'str_ChangeAdvisors_barbarianScientistPremium' : null, 'str_ChangeAdvisors_barbarianDiplomat' : null, 'str_ChangeAdvisors_barbarianDiplomatPremium' : null, 'str_ChangeAdvisors_femaleMayor' : null, 'str_ChangeAdvisors_femaleMayorPremium' : null, 'str_ChangeAdvisors_femaleGeneral' : null, 'str_ChangeAdvisors_femaleGeneralPremium' : null, 'str_ChangeAdvisors_femaleScientist' : null, 'str_ChangeAdvisors_femaleScientistPremium' : null, 'str_ChangeAdvisors_femaleDiplomat' : null, 'str_ChangeAdvisors_femaleDiplomatPremium' : null, // -- AntiAds 'str_AntiAds_name' : null, 'str_AntiAds_info' : null, 'str_AntiAds_hideSpeedUpButton' : null, 'str_AntiAds_hideAdvertising' : null, 'str_AntiAds_hideHappyHour' : null, 'str_AntiAds_hideOfferBox' : null, 'str_AntiAds_hideSlotResourceShop' : null, 'str_AntiAds_hideSlotPremiumTrader' : null, 'str_AntiAds_hideAmbrosiaDonateForm' : null, 'str_AntiAds_hideMsgArchiveButtons' : null, 'str_AntiAds_hideBarracksDummiesBox' : null, // -- MoveBuildings 'str_MoveBuildings_name' : null, 'str_MoveBuildings_info' : null, 'str_MoveBuildings_SavePositions' : 'Αποθήκευση', 'str_MoveBuildings_DragDropHint' : '(Άλλαξε θέση by drag&drop μεταξύ των κτιρίων)', // -- CustomTowns 'str_CustomTowns_name' : 'Προσαρμοσμένες Πόλεις', 'str_CustomTowns_info' : 'Κρύψε η μετακίνησε τα κτίρια της πόλης σου', 'str_CustomTowns_tabSettings' : 'Πόλεις', 'str_CustomTowns_tabPositions' : 'Κτίρια', 'str_CustomTowns_customPositionsDisabled' : 'Ενεργοποιήσε πρώτα τις προσαρμοσμένες θέσεις', 'str_CustomTowns_confirmSaveChanged' : 'Αποθήκευση αλλαγμένων θέσεων?', 'str_CustomTowns_hideCapitalBackground' : null, 'str_CustomTowns_hidePirateFortress' : 'Απόκρυψη κτιρίου Πειρατών', 'str_CustomTowns_hideLockedPosition' : null, 'str_CustomTowns_hideWalkers' : null, 'str_CustomTowns_NoAnimPointerEvents' : null, 'str_CustomTowns_restrictedPosition' : 'Δέν μπορείς να τοποθετήσεις εδώ', 'str_CustomTowns_useCustomPositions' : 'Προσαρμοσμένες θέσεις κτιρίου', 'str_CustomTowns_customBackground' : null, 'str_CustomTowns_hideDailyTasks' : 'Απόκρυψη καθημερινών εργασιών', 'str_CustomTowns_hideRegistrationGifts' : null, 'str_CustomTowns_hideFlyingShop' : 'Απόκρυψη ιπτάμενο κατάστημα', 'str_CustomTowns_hideAmbrosiaFountain' : 'Απενεργοποίηση νέων επιλογών αγοράς Αμβροσίας', // -- TweakResource 'str_TweakResources_name' : 'Πόροι', 'str_TweakResources_info' : 'Εμφάνιση χαμένων πόρων', 'str_TweakResources_showMissing' : 'Εμφάνιση ελειπών πόρων', 'str_TweakResources_showRemaining' : null, // -- Updatechecker 'str_UpdateChecker_name' : 'Έλεγχος ενημέρωσης', 'str_UpdateChecker_info' : 'Ελεγχος ενημέρωσης για το IkaTweaks', 'str_UpdateChecker_forceNow' : 'Έλεγχος τώρα', 'str_UpdateChecker_lastResult' : 'Τελευταίο αποτέλεσμα', 'str_UpdateChecker_newVersionAvailable' : 'Νέα διαθέσιμη έκδοση', 'str_UpdateChecker_versionUpToDate' : 'Δέν υπάρχει νέα έκδοση', 'str_UpdateChecker_HowDoesThisWork' : 'Πώς λειτουργεί: Για τη δική σας ασφάλεια, το IkaTweaks δεν φορτώνει εξωτερικά σενάρια αλλά μια μικροσκοπική εικόνα από το GitHub . Και θα ελέγχει για νέα διαθέσιμη έκδοση;)', 'str_UpdateChecker_linksHeader' : 'Εδώ θα υπάρχει μόνο η τελευταία ενημέρωση:', }); })(window);