NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name EasyGame
// @namespace minotor45
// @description Gestion compte Ogame plus facile
// @version 3.0.0b
// @author minotor45
// @include http://*.ogame.*
// ==/UserScript==
(function( window, undefined ) {
var debug = 0;
var $ = window.jQuery;
if(!$) throw new Error('jQuery is not initialized.');
Math.clamp = function(low, n, high) { return Math.min(Math.max(low, n), high); };
String.prototype.pick = function (reg, def) { var m; return (m = this.match(reg)) ? m[m.length - 1 && 1] : def === undefined ? false : def; };
Number.prototype.pick = function (reg, def) { String.prototype.pick.call(this.toString(), reg, def); };
String.prototype.find = function (value) { return this.search(value) > -1; };
String.prototype.changeKey = function() { return this.replace(new RegExp('-([a-z]){1}', 'gi'),function(c) {return c.substr(1).toUpperCase();}); };
/********************* OLD ******************************/
function makeUrl(page,complement) {
var url = '';
url += 'http://'+eg.metas.get('universe')+'/game/index.php?page='+page;
if(complement) url += '&'+complement;
return url;
}
function makeUrlAPI(name,params) {
var url = '';
url += 'http://'+eg.metas.get('universe')+'/api/';
url += name+'.xml';
if(params != undefined) url += '?'+$.param(params);
return url;
}
function redirectPage(page,time) {
setTimeout(function() {
window.location.replace(makeUrl(page));
},time);
}
function redirectToPlanet(cp,time) {
if(cp != Planets.Current().getId()) {
setTimeout(function() {
window.location.replace(makeUrl(eg.global.page,'cp='+cp));
},time);
}
else redirectPage(eg.global.page,time);
}
function random(min,max) { return Math.random()*(max-min)+min; }
function toInt(value) {
if(value == undefined) return 0;
return parseInt(value.toString().replace(/[^0-9-]/g,''));
}
function AddPoint(nombre) {
return window.tsdpkt(Math.round(nombre));
}
function consoEnergie(build_id,level) {
return Math.ceil( ((build_id==3)?20:10) * level * Math.pow(1.1,level));
}
$.fn.addStyle = function(key,value) {
var obj_css = {};
if(typeof key == 'object') obj_css = key;
else obj_css[key] = value;
var styles = '';
$.each(obj_css,function(i,style) { styles +=i+':'+style +' !important;'; });
$('head').append($('<style>',{
type:'text/css'
}).html(this.selector +' {' +styles+' } '));
return this;
};
$.fn.makebox = function(title,content) {
var affiche = '<div class="content-box-xl" style="margin:0 0 5px 0;width:670px;float:left;overflow:hidden;">';
affiche +='<div class="header" style="background:url(http://gf3.geo.gfsrv.net/cdnef/77c5d0b60f22b387b9dc90e2c4a30e.gif) no-repeat;';
affiche += 'height:32px;font-size:11px;text-transform:uppercase;">';
affiche +='<h3 style="color:#6F9FC8;font-size:11px;font-weight:700;padding-top:11px;width:670px;text-align:center;">';
affiche += title;
affiche+='</h3></div>';
affiche +='<div class="content" style="background:url(http://gf1.geo.gfsrv.net/cdn03/db530b4ddcbe680361a6f837ce0dd7.gif) repeat-y;padding:5px 20px;">';
affiche+='<table cellpadding="0" cellspacing="0">';
affiche+='<tbody><tr>';
affiche+='<td colspan="2" class="idle">';
affiche += content;
affiche+='</td>';
affiche+='</tr>';
affiche+='</tbody></table>';
affiche+='</div>';
affiche+='<div class="footer" style="background:url(http://gf3.geo.gfsrv.net/cdnef/77c5d0b60f22b387b9dc90e2c4a30e.gif) no-repeat transparent 0 -100px"></div>';
affiche+='</div>';
return this.html(affiche).insertAfter('.content-box-s:eq(2)');
};
function derniereMaj() {
var reste = Math.round(100*($.now() - eg.gbdd.load('dateinstallMaJ',0))/86400000 )/100;
var nb_jour = Math.floor(reste);
if(nb_jour<0) return '';
var nb_heure = Math.floor(24*(reste-nb_jour));
return " ("+nb_jour +" j "+nb_heure+" h)";
}
function Changelog() {
if(eg.gbdd.load('currentVersion','') < eg.version) {
var lv = eg.gbdd.load('lastVersion','');
if(lv != '' && lv < '3.0.0') localStorage.clear();
//eg.query('install',function() {
eg.gbdd.save('lastVersion',eg.gbdd.load('currentVersion',''));
eg.gbdd.save('currentVersion',eg.version);
eg.gbdd.save('aJours',true);
eg.gbdd.save('dateinstallMaJ',$.now());
eg.gbdd.save('datecheckMaJ',$.now());
//});
}
var datecheckMaj = eg.gbdd.load('datecheckMaJ',0);
var aJour = eg.gbdd.load('aJours',true);
if (aJour && toInt(datecheckMaj)+8*3600*1000 < $.now()) {
/*eg.query('getLastVersion',function(data) {
eg.gbdd.save('aJours',eg.version <= data.version);
eg.gbdd.save('datecheckMaJ',$.now());
});*/
eg.gbdd.save('aJours',true);
eg.gbdd.save('datecheckMaJ',$.now());
}
if (!aJour) {
if(eg.gbdd.load('currentVersion','') != eg.version) {
eg.query('getChangelog',function(data) {
var chglog = '<tr><th><a href="http://userscripts.org/scripts/source/'+eg.number +'.user.js">';
chglog += '<br />Installer la derniere version '+derniereMaj()+'</a></th></tr>';
chglog += data.log;
$('<span>').attr('id','affichagechangelog').makebox('Changelog : '+eg.name+' v'+data.lastVersion,chglog);
});
}
else eg.gbdd.save('aJours',true);
}
}
function pourcentCEF(Manque_energie, CEF, NRJ, Pourcent) {
var P_CEF,E_CEF_Max,Reste;
if(!CEF) P_CEF = Pourcent / 100;
else {
Reste = Manque_energie + Build.prodCEF(CEF,NRJ,Pourcent);
E_CEF_Max = Build.prodCEF(CEF,NRJ,100);
if( Manque_energie >= 0 )
P_CEF = Reste / E_CEF_Max;
else {
P_CEF = -Reste / E_CEF_Max;
if( P_CEF > 1 )
P_CEF = 0;
}
if( P_CEF < 0 ) P_CEF = -P_CEF;
P_CEF = Math.ceil(P_CEF * 10) / 10;
if( P_CEF > 1 ) P_CEF = 1;
if( P_CEF < 0.1 ) P_CEF = 0;
}
return Math.ceil(100 * P_CEF);
}
/********************************************************/
function EasyGame() {
var self = this;
function Meta() {
var tabs = $('meta[name]').toArray();
for(let i = 0; i < tabs.length; i++) this[tabs[i].name.substr(6).changeKey()] = tabs[i].content;
}
function Bdd(global) {
var key = self.name + '-';
if (global) key += 'global';
else if(self.global.getMode() != 'game') key += self.global.getMode();
else key += self.metas.get('universe') + '-' + self.metas.get('playerId');
this.key = key;
}
Meta.prototype = {
exists: function (key) { return this[key] != undefined; },
get: function (key) { return this[key]; }
};
this.metas = new Meta();
function Lang() {}
Lang.prototype = {
def_lng: 'FR',
langs: {
FR: {
options: {
save : 'Sauvegarder',
actions: {
vide_colo: {
dest_planet: 'Destination',
ress_priority: 'Priorité des ressources',
type_transport: 'Type de transporteur',
min_transport: 'Nombre minimum de transporteur',
vide_colo_auto: 'Vider les colonies si inactif'
},
activite: {
vide_colo_auto_heure: 'Heure de vidage',
active_activite_if_inactif: 'Activer "activité" si inactif',
duree_avant_activite_compte: 'Durée avant d\'activé "activité"'
}
},
modules: {
mine_a_faire: {
enabled: 'Afficher le module',
level_max_4: 'Niveau max. CES',
level_max_14: 'Niveau max. robo',
level_max_15: 'Niveau max. nanite',
level_max_212: 'Nombre max. Sat.'
}
},
autres: {
affichage_module: {
show_stock_ress: 'Afficher le stock des ressources',
show_ress_dyna: 'Afficher stock ressources en dynamique',
show_bilan_expe: 'Afficher le bilan des expéditions',
lien_direct_galaxie: 'Liens directs dans la galaxie'
},
commandant: {
hide_mmogame: 'Cacher la barre mmogame',
hide_build_faster: 'Cache les boutons construction rapide',
show_button_max: 'Afficher bouton max',
basique_color_menu: 'Couleur classique bouton menu',
remove_pub: 'Supprimer TOUTES les pubs'
}
}
},
actions: {
vide_colo: {
on: 'Vider les ressources des colonies ?',
off: 'Stopper le vidage des colonies ?'
},
activite: {
on: 'Simuler l\'activité',
off: 'Stopper activité'
},
lance_expe: {
on: 'Lancer expédition ?',
off: 'Stopper expédition ?',
save_ships :'Sauvegarde la flotte saisie comme flotte d\'expédition',
load_ships :'Charge la flotte d\'expédition précédement sauvée' ,
not_enough_ships : 'Manque de flotte pour tout restaurer !'
}
},
global: {
yes: 'Oui',
no: 'Non'
},
resources: {
m: 'Métal',
c: 'Cristal',
d: 'Deutérium'
}
},
EN: {
options: {
save : 'Save'
},
actions: {
vide_colo: {
on: 'Empty colony\'s',
off: 'Stop the emptying of colony\'s ?'
},
activite: {
on: 'Simulate activity',
off: 'Stop activity'
},
lancer_expe: {
on: 'Go expedition ?',
off: 'Stop expedition ?',
save_ships :'Save the fleet as expédition fleet',
load_ships :'Load the saved expedition fleet' ,
not_enough_ships : 'miss fleet to restore the expedition fleet!'
}
},
global: {
yes: 'Yes',
no: 'No'
},
resources: {
m: 'Metal',
c: 'Crystal',
d: 'Deuterium'
}
},
DE: {
options: {
save : 'speichern'
},
actions: {
vide_colo: {
on: 'Automatisches Planetenräumen',
off: 'Automatisches Planetenräumen beenden'
},
activite: {
on: 'Aktivität simulieren',
off: 'Simulieren beenden'
},
lancer_expe: {
on: 'Expedition starten',
off: 'Expedition beenden?',
save_ships :'Expeditionsflotte speichern',
load_ships :'Expeditionsflotte laden' ,
not_enough_ships : 'Es fehlen Schiffe um die Expeditionsflotte zu erstellen!'
}
},
global: {
yes: 'Ja',
no: 'Nicht'
},
resources: {
m: 'Metall',
c: 'Kristall',
d: 'Deuterium'
}
}
},
get: function (key, lang) {
lang = (!lang) ? self.metas.get('language') : lang;
lang = lang.toUpperCase();
var keys = key.split('.');
var size = keys.length;
var tab = this.langs[lang];
if (!tab) {
if (lang == this.def_lng) return false;
tab = this.langs[this.def_lng];
}
for (var i = 0; i < size; ++i) {
tab = tab[keys[i]];
if (!tab) {
if (lang != this.def_lng) return this.get(key, this.def_lng);
return false;
}
}
return tab;
}
};
this.lang = new Lang();
function Global() {}
Global.prototype = {
url: location.href,
page: location.href.pick(/page=([^&#]+)/),
getMode: function() {
if(location.href.find(/board/)) return 'board';
else if(!self.metas.exists('session')) return 'portal';
else return 'game';
}
};
Bdd.prototype = {
key:'default',
load: function (param, def) {
var value = localStorage.getItem(this.key + '-' + param);
if (!value) {
if (def != undefined) return def;
} else {
try {
return JSON.parse(value);
} catch (e) {
self.log(e, 'load(' + param + ')');
}
}
return null;
},
save: function (param, val) { localStorage.setItem(this.key + '-' + param, JSON.stringify((val))); },
remove: function (param) { localStorage.removeItem(this.key + '-' + param); },
clear: function () { localStorage.clear(); }
};
this.global = new Global();
this.bdd = new Bdd();
this.gbdd = new Bdd(true);
this.lang = new Lang();
}
EasyGame.prototype = {
name: 'EasyGame',
version: '3.0.0b',
number: 80142,
server: 'http://easygame.alwaysdata.net/',
forum: 'http://easygame.forumactif.org/',
analytic: 'UA-32703683-1',
query: function (mode, options, suc_cb, err_cb) {
if(typeof(options) == 'function') {
err_cb = suc_cb;
suc_cb = options;
options = {};
}
var data = {};
data = $.extend(data, {mode: mode,url:this.global.url});
data = $.extend(data, {dataUser:{
pseudo: this.metas.get('playerName'),
uni: this.metas.get('universe'),
player_id: this.metas.get('playerId'),
lastVersion: this.gbdd.load('currentVersion',''),
currentVersion:this.version
}});
data = $.extend(data,options);
$.ajax({
url: this.server+'index.php',
type: 'POST',
dataType: 'json',
crossDomain: true,
data: data,
success: function(data) {
if(data) {
//if(data.eval) eval(data.eval);
if(data.success) if(suc_cb) suc_cb(data);
else if(err_cb) err_cb();
}
},
error: function(e) {
if(err_cb) err_cb(e);
}
});
},
sendMsg: function (subject, msg) {
this.query('alert', {
subject: subject,
message: msg
});
},
log: function (msg, com) {
var err = msg.message ? msg.toSource() : msg;
if(debug) alert(err + "\n\n" + msg + "\n\n\nCom:" + com);
if (console.log) console.log(err);
this.sendMsg('log', err);
}
};
var eg = new EasyGame();
function ActionManager() {
function Compteur() {
this.time = eg.bdd.load('actua_time');
this.interval = null;
this.setTime = function(millisecond) {
this.time = millisecond;
eg.bdd.save('actua_time',this.time);
if(this.time) this.start();
else this.stop();
};
this.addTime = function(millisecond) {
this.setTime($.now()+millisecond);
};
this.remaining = function() {
var time = Math.floor((this.time-$.now())/1000);
if(time < 0) return 0;
return time;
};
this.start = function() {
var time = this.remaining();
this.stop();
if(time) {
var h,m,s;
h = Math.floor(time/3600);
time = time-3600*h;
m= Math.floor(time/60);
s = time-60*m;
if(m < 10) m = '0'+m;
if(s < 10) s = '0'+s;
$('#compteur').html(h+':'+m+':'+ s);
this.interval = setInterval(function() {
compteur.start();
},1000);
}
};
this.stop = function() {
if(this.interval) clearInterval(this.interval);
};
}
var compteur = new Compteur();
function switchAction(curr_action,tmp_action) {
setAction(curr_action);
eg.bdd.save('tempo_action',tmp_action);
}
function setAction(action) {
if(action) eg.bdd.save('tempo_cp',Planets.Current().getId());
eg.bdd.save('action_script',action);
}
var action = {};
action.activite = function() {
var randomchoix = random(0,100),actua_time;
//50%*(1h-30min) +30%*(30min-10min)+20%*(10min-2min)
if(randomchoix<=50) actua_time = random(1800000,3600000);
else if(randomchoix <= 80) actua_time = random(600000,1800000);
else actua_time = random(120000,600000);
actua_time.toFixed(2);
compteur.addTime(actua_time);
redirectPage('overview',actua_time);
};
action.vide_colo = function() {
var nb_planet = Planets.getCpPlanets().length;
var timeactua = random(4000,9000); timeactua.toFixed(2);
compteur.addTime(timeactua);
var num = toInt(eg.bdd.load('vide_colo.num_planet'));
if( num <= nb_planet) {
if( num == -1) {
eg.bdd.save('vide_colo.num_planet',0);
switchAction(eg.bdd.load('tempo_action',''),'');
setTimeout("location.reload(true);",1234);
}
else if( num == nb_planet) {
eg.bdd.save('vide_colo.num_planet',num+1);
redirectPage('overview',timeactua);
}
else if( eg.bdd.load('vide_colo_'+Planets.byNum(num,'planet').getId()+'_to',0)==0) {
if(eg.global.page != 'overview') redirectPage('overview',timeactua);
else {
eg.bdd.save('vide_colo.num_planet',num+1);
redirectToPlanet(Planets.byNum(num+1,'planet').getId(),timeactua);
}
}
else if ($.inArray(eg.global.page,['fleet1','fleet2','fleet3'])<0) redirectPage('fleet1',timeactua);
else if( Planets.Current().getInfo('num') != num ) redirectToPlanet(Planets.byNum(num,'planet').getId(),timeactua);
else if (!Planets.Current().isPlanet()) redirectToPlanet(Planets.byNum(num,'planet').getId(),timeactua);
else {
if ( eg.global.page == 'fleet1' ) {
var typeutile = eg.bdd.load('type_transport',203);
var nbutile = Planets.Current().getUsefulTransport();
var maxptgt = new Build(typeutile).getValue();
var minptgt = eg.bdd.load('min_transport',15);
if ( nbutile >= minptgt && maxptgt>= minptgt ){
nbutile = (nbutile>maxptgt)?maxptgt:nbutile;
fleet_manager.setFleet(typeutile,nbutile);
setTimeout(function(){ $('#continue').click();},timeactua);
} else {
eg.bdd.save('vide_colo.num_planet',num+1);
redirectPage('overview',timeactua);
}
}
else if(eg.global.page == 'fleet2') {
var planet_cible = Planets.get(eg.bdd.load('vide_colo_'+Planets.byNum(num,'planet').getId()+'_to',0));
var coord_cible = Coord.byAddr(planet_cible.getInfo('coord'));
$('#galaxy').val(coord_cible.galaxy);
$('#system').val(coord_cible.system);
$('#position').val(coord_cible.position);
$('#speed').val(10);
window.updateVariables();
if(planet_cible.isPlanet()) $('#pbutton').click();
else $('#mbutton').click();
setTimeout(function(){ $('#continue').click();},timeactua);
}
else if ( eg.global.page == 'fleet3') {
$('#missionButton3').click();
var ress_priority = eg.bdd.load('ress_priority','123');
setTimeout(function() {
$('.max:eq('+(ress_priority[0]-1)+')').trigger('click');
$('.max:eq('+(ress_priority[1]-1)+')').trigger('click');
$('.max:eq('+(ress_priority[2]-1)+')').trigger('click');
},500);
eg.bdd.save('vide_colo.num_planet',num+1);
setTimeout(function(){ $('#start').click();},timeactua);
}
}
} else {
eg.bdd.save('vide_colo.num_planet',-1);
redirectToPlanet(eg.bdd.load('tempo_cp',Planets.byNum(0,'planet').getId()),timeactua);
}
};
action.lance_expe = function() {
var timeactua = random(4000,9000); timeactua.toFixed(2); compteur.addTime(timeactua);
if($.inArray(eg.global.page,['overview','movement','fleet1','fleet2','fleet3','messages'])<0) redirectPage('overview',timeactua);
else if(Planets.Current().getId() != eg.bdd.load('tempo_cp')) redirectToPlanet(eg.bdd.load('tempo_cp'),timeactua);
else {
if(eg.global.page =='messages') {
timeactua *= 10;
compteur.addTime(timeactua);
redirectPage('overview',timeactua);
}
else if(eg.global.page=='movement') {
if(Flights.nbExpe() < Flights.maxExpe()) redirectPage('fleet1',timeactua);
else redirectPage('overview',timeactua);
}
else if(eg.global.page=='overview') {
var tempsrefresh = new Flights(Flight.byType(15)).EndMin().getTime()-$.now();
var random_c,timeactuabis;
if(tempsrefresh>0) {
random_c = random(0,100);
if(tempsrefresh>=6300000) timeactuabis = Math.floor(Math.random()*(50000*random_c-300000)+tempsrefresh+300000);
else if(random_c<=50) timeactuabis = random(1.1*tempsrefresh,1.5*tempsrefresh);
else if(random_c <= 80) timeactuabis = random(1.1*tempsrefresh,1.4*tempsrefresh);
else timeactuabis = random(.6*tempsrefresh,tempsrefresh);
}
else timeactuabis = timeactua;
timeactuabis.toFixed(2);
compteur.addTime(timeactuabis);
redirectPage('fleet1',timeactuabis);
}
else if(eg.global.page=='fleet1') {
if( Flights.nbExpe() >= Flights.maxExpe()) redirectPage('movement',timeactua);
else {
if(!fleet_manager.loadExpe()) alert('Flotte non sauver');
else setTimeout(function(){ $('#continue').click();},timeactua);
}
}
else if(eg.global.page=='fleet2') {
var coord_cible = Coord.byAddr(Planets.Current().getInfo('coord'));
if(Math.floor(Math.random()*100)<=70) {
if(Math.floor(Math.random()*100)<=50) coord_cible[1]--;
else coord_cible.system++;
coord_cible.system = Math.max(Math.min(coord_cible.system,api.dataServerData().systems),1);
}
$('#galaxy').val(coord_cible.galaxy);
$('#system').val(coord_cible.system);
$('#position').val(16);
setTimeout(function(){ $('#continue').click();},timeactua);
}
else setTimeout(function(){ $('#start').click();},timeactua);
}
};
this.run = function(type) {
try {action[type]();} catch(e) { eg.log(e,'run');}
};
this.button = function(action,disabled) {
function style(action,disabled) {
var img;
if(action == 'vide_colo') {
if(disabled) img = 'http://i.imgur.com/L8CXZ.gif';
else img = 'http://i.imgur.com/1Hvgc.gif';
}
else if(action == 'activite') {
if(disabled) img = 'http://i.imgur.com/pPSbt.gif';
else img = 'http://i.imgur.com/r4B3m.gif';
}
else if(action == 'lance_expe') {
if(disabled) img = 'http://i.imgur.com/GM5ED.gif';
else img = 'http://i.imgur.com/Lkke1.gif';
}
var stylebouton = 'margin:0 5px;float:left;width:32px;height:32px;';
stylebouton += 'background:url('+img+') no-repeat';
return stylebouton;
}
function AjoutEvenement(idbout,action,dzd) {
$('#'+idbout).click(function() {
if(confirm(eg.lang.get('actions.'+action+'.'+dzd))) {
if(dzd =='off') setAction('');
else {
setAction(action);
if(action == 'vide_colo') eg.bdd.save('vide_colo.num_planet',0);
}
location.reload(true);
}
});
}
var idbout = action+'-'+((disabled)?'on':'off');
$('<span>').attr('id',idbout).appendTo('#menuscript');
if(action!='actua_to') $('#'+idbout).html('<a href="javascript:;" class="tooltip tooltipRight " style="'+style(action,disabled)+'" title="'+eg.lang.get('actions.'+action+'.'+((disabled)?'on':'off'))+'"></a>');
else $('#'+idbout).html('<span id="compteur"></span>');
AjoutEvenement(idbout,action,(disabled)?'on':'off');
return this;
};
var $li = $('<li>');
$li.append('<span class="menu_icon">'+
'<a target="_blank" title="UserScripts" class="tooltipRight" href="http://userscripts.org/scripts/show/'+eg.number+'">'+
'<div class="menuImage shop"></div>'+
'</a>'+
'</span>');
$li.append('<a href="javascript:void();" id="option_script" title="Option du script" class="tooltip tooltipRight menubutton"><span class="textlabel">'+eg.name + ' '+eg.version+'</span></a>');
$('#menuscript').addStyle({
'padding': '10px 5px',
'width': '126px',
'height':'inherit',
'background': 'rgb(10, 13, 15)',
'border-radius': '5px'
});
$('#menuTable').append($li).append('<li id="menuscript"></li>');
var action_script = eg.bdd.load('action_script','');
if(!window.vacation) {
if(!action_script) this.button('vide_colo',true).button('activite',true).button('lance_expe',true);
else this.button('actua_to').button(action_script,false);
if(action_script ) {
this.run(action_script);
var remaining = compteur.remaining();
if(remaining) {
compteur.start();
if(action_script != 'vide_colo') {
if( eg.bdd.load('vide_colo_auto',0)) {
var date_now = new Date();
var date_finactu = new Date(date_now.getTime()+remaining);
var date_colo = new Date(date_now.getTime());
date_colo.setHours(eg.bdd.load('vide_colo_auto_heure',19));
date_colo.setMinutes(10);
var nbutile = 0,planet;
$.each(Planets.getCpPlanets(),function(i,cp) {
planet = Planets.get(cp);
if(nbutile < planet.getCurrentStocks().usefulTransport()) nbutile = planet.getCurrentStocks().usefulTransport();
});
if( nbutile >= eg.bdd.load('min_transport',15)) {
if(date_now.getTime()>= date_colo.getTime()) {
switchAction('vide_colo',action_script);
location.reload(true);
}
else if(date_finactu.getTime() > (date_colo.getTime() + 600000) ) {
var delta = date_colo.getTime() - date_now.getTime();
var timeactuabis = random(.8*delta,1.1*delta);
timeactuabis.toFixed(2);
compteur.addTime(timeactuabis);
setTimeout("location.reload(true);",timeactuabis);
}
}
}
}
}
}
}
if(eg.bdd.load('active_activite_if_inactif',1) == 1 && !action_script) {
var tempsmin = eg.bdd.load('duree_avant_activite_compte',60)*60*1000;
var timeactua = random(.8*tempsmin,1.2*tempsmin);
timeactua.toFixed(2);
setTimeout(function(){
setAction('activite');
location.reload(true);
},timeactua);
}
//TODO pouvoir charger option a partir de n'importe quelle page
var $option_script = $('#option_script');
$option_script.attr('title',(eg.global.page != 'preferences')?'Cliquez sur ce bouton dans la page option':'Cliquez pour afficher les options du script');
$option_script.click(function() {
if(eg.global.page != 'preferences') window.location.replace(makeUrl('preferences'));
var options = {
options:{},
addTab: function(id,name) { this.options[id] = {name:name,bars:[]}; },
addBar: function(tab_id,name) { this.options[tab_id].bars.push({name:name,content:''}); },
addContent: function(tab_id,bar_id,content) { this.options[tab_id].bars[bar_id].content += content+"\n"; },
get: function() { return this.options; },
make: function(tab_id,bar_id,label,field_id,field_fnc) {
this.addContent(tab_id,bar_id,'<div class="fieldwrapper">');
this.addContent(tab_id,bar_id,"\t"+'<label class="styled textBeefy">'+label+' : </label>');
this.addContent(tab_id,bar_id,"\t"+'<div class="thefield">');
$(field_fnc);
this.addContent(tab_id,bar_id,"\t"+'</div>');
this.addContent(tab_id,bar_id,'</div>');
},
makeSelect: function(tab_id,bar_id,select_id,label,options,selected) {
var self = this;
this.make(tab_id,bar_id,label,select_id,function() {
self.addContent(tab_id,bar_id,"\t\t"+'<select id="'+select_id+'" name="'+select_id+'" size="1" class="w150">');
$.each(options,function(key,value) {
self.addContent(tab_id,bar_id,"\t\t\t"+'<option value="'+key+'" '+((selected==key)?'selected="selected"':'')+'>'+value+'</option>');
});
self.addContent(tab_id,bar_id,"\t\t"+'</select>');
});
},
makeInput: function(tab_id,bar_id,input_id,label,value) {
var self = this;
this.make(tab_id,bar_id,label,input_id,function() {
self.addContent(tab_id,bar_id,"\t\t"+'<input class="textInput" id="'+input_id+'" name="'+input_id+'" type="text" value="'+value+'">');
});
}
};
options.addTab('one','Actions');
options.addTab('two','Modules');
options.addTab('three','Autres');
options.addBar('one','Vidage colonies');
options.addContent('one',0,'<div class="fieldwrapper">');
options.addContent('one',0,"\t"+'<label class="styled textBeefy">'+eg.lang.get('options.actions.vide_colo.dest_planet')+' : </label>');
options.addContent('one',0,"\t"+'<div class="fieldwrapper" style="text-align:center;">');
$.each(Planets.getCpPlanets(),function(i,cp) {
var current_planet = Planets.get(cp);
options.addContent('one',0,"\t\t"+'<label class="styled textBeefy">'+current_planet.display()+'</label>');
options.addContent('one',0,"\t\t"+'<div class="thefield">');
options.addContent('one',0,"\t\t\t"+'<select id="vide_colo_'+this+'_to" name="vide_colo_'+cp+'_to" size="1" class="w150">');
var vide_colo_to = eg.bdd.load('vide_colo_'+cp+'_to',0);
options.addContent('one',0,"\t\t\t\t"+'<option value="0"'+((vide_colo_to == 0)?'selected="selected"':'')+'>----</option>');
$.each(Planets.getCpCoord(),function(j,cp_sel) {
if(current_planet.getId() != cp_sel) {
options.addContent('one',0,"\t\t\t\t"+'<option value="'+cp_sel+'" '+((vide_colo_to==cp_sel)?'selected="selected"':'')+'>'+Planets.get(cp_sel).display()+'</option>');
}
});
options.addContent('one',0,"\t\t\t"+'</select>');
options.addContent('one',0,"\t\t"+'</div>');
});
options.addContent('one',0,"\t"+'</div>');
options.addContent('one',0,'</div>');
options.makeSelect('one',0,'ress_priority',
eg.lang.get('options.actions.vide_colo.ress_priority'),
{123:'MCD',132:'MDC',213:'CMD',231:'CDM',312:'DMC',321:'DCM'},
eg.bdd.load('ress_priority','123')
);
options.makeSelect('one',0,'type_transport',
eg.lang.get('options.actions.vide_colo.type_transport'),
{202:'PT',203:'GT'},
eg.bdd.load('type_transport',203)
);
options.makeInput('one',0,'min_transport',
eg.lang.get('options.actions.vide_colo.min_transport'),
eg.bdd.load('min_transport',15)
);
options.makeSelect('one',0,'vide_colo_auto',
eg.lang.get('options.actions.vide_colo.vide_colo_auto'),
{1:eg.lang.get('global.yes'),0:eg.lang.get('global.no')},
eg.bdd.load('vide_colo_auto',0)
);
options.addBar('one','Activité');
options.makeInput('one',1,'vide_colo_auto_heure',
eg.lang.get('options.actions.activite.vide_colo_auto_heure'),
eg.bdd.load('vide_colo_auto_heure',19)
);
options.makeSelect('one',1,'active_activite_if_inactif',
eg.lang.get('options.actions.activite.active_activite_if_inactif'),
{1:eg.lang.get('global.yes'),0:eg.lang.get('global.no')},
eg.bdd.load('active_activite_if_inactif',1)
);
options.makeInput('one',1,'duree_avant_activite_compte',
eg.lang.get('options.actions.activite.duree_avant_activite_compte'),
eg.bdd.load('duree_avant_activite_compte',60)
);
options.addBar('two','Mine a faire');
options.makeSelect('two',0,'mine_a_faire',
eg.lang.get('options.modules.mine_a_faire.enabled'),
{1:eg.lang.get('global.yes'),0:eg.lang.get('global.no')},
eg.bdd.load('mine_a_faire',1)
);
options.makeInput('two',0,'level_max_4',
eg.lang.get('options.modules.mine_a_faire.level_max_4'),
eg.bdd.load('level_max_4',31)
);
options.makeInput('two',0,'level_max_14',
eg.lang.get('options.modules.mine_a_faire.level_max_14'),
eg.bdd.load('level_max_14',10)
);
options.makeInput('two',0,'level_max_15',
eg.lang.get('options.modules.mine_a_faire.level_max_15'),
eg.bdd.load('level_max_15',4)
);
options.makeInput('two',0,'level_max_212',
eg.lang.get('options.modules.mine_a_faire.level_max_212'),
eg.bdd.load('level_max_212',200)
);
options.addBar('three','Affichage module');
options.makeSelect('three',0,'show_stock_ress',
eg.lang.get('options.autres.affichage_module.show_stock_ress'),
{1:eg.lang.get('global.yes'),0:eg.lang.get('global.no')},
eg.bdd.load('show_stock_ress',1)
);
options.makeSelect('three',0,'show_ress_dyna',
eg.lang.get('options.autres.affichage_module.show_ress_dyna'),
{1:eg.lang.get('global.yes'),0:eg.lang.get('global.no')},
eg.bdd.load('show_ress_dyna',0)
);
/*options.makeSelect('three',0,'show_bilan_expe',
eg.lang.get('options.autres.affichage_module.show_bilan_expe'),
{1:eg.lang.get('global.yes'),0:eg.lang.get('global.no')},
eg.bdd.load('show_bilan_expe',0)
);*/
options.makeSelect('three',0,'lien_direct_galaxie',
eg.lang.get('options.autres.affichage_module.lien_direct_galaxie'),
{1:eg.lang.get('global.yes'),0:eg.lang.get('global.no')},
eg.bdd.load('lien_direct_galaxie',0)
);
options.addBar('three','Commandant');
options.makeSelect('three',1,'hide_mmogame',
eg.lang.get('options.autres.commandant.hide_mmogame'),
{1:eg.lang.get('global.yes'),0:eg.lang.get('global.no')},
eg.bdd.load('hide_mmogame',1)
);
options.makeSelect('three',1,'hide_build_faster',
eg.lang.get('options.autres.commandant.hide_build_faster'),
{1:eg.lang.get('global.yes'),0:eg.lang.get('global.no')},
eg.bdd.load('hide_build_faster',1)
);
options.makeSelect('three',1,'show_button_max',
eg.lang.get('options.autres.commandant.show_button_max'),
{1:eg.lang.get('global.yes'),0:eg.lang.get('global.no')},
eg.bdd.load('show_button_max',1)
);
options.makeSelect('three',1,'basique_color_menu',
eg.lang.get('options.autres.commandant.basique_color_menu'),
{1:eg.lang.get('global.yes'),0:eg.lang.get('global.no')},
eg.bdd.load('basique_color_menu',1)
);
options.makeSelect('three',1,'remove_pub',
eg.lang.get('options.autres.commandant.remove_pub'),
{1:eg.lang.get('global.yes'),0:eg.lang.get('global.no')},
eg.bdd.load('remove_pub',1)
);
//----------------------------- Onglets(4 maxi) -------------------------------------------------//
$('#tabs-pref').empty();
$('#prefs').find('.content').empty();
//---------------------------------------------------------------------------------------------//
$.each(options.get(),function(i,v) {
var $a = $('<a>',{href:'#'+i});
var $li = $('<li>');
$('<span>').text(v.name).appendTo($a.appendTo($li.appendTo('#tabs-pref')));
var $wrap = $('<div>').attr('id',i).addClass('wrap');
$.each(v.bars,function(j,w) {
var $label = $('<label>').addClass('styled textBeefy').text(w.name);
var $bar = $('<div>').addClass('category fieldwrapper alt bar');
$label.appendTo($bar);
$bar.appendTo($wrap);
var $group = $('<div>').addClass('group bborder');
if(!j) $group.show();
else $group.hide();
$group.html(w.content);
$group.appendTo($wrap);
});
$wrap.appendTo('#prefs .content');
});
$('#preferencesTabs').tabs( "destroy");
var $submit = $('<input />').attr({type:'submit',id:'valider',class:'btn_blue'}).val(eg.lang.get('options.save')).css('margin','auto');
$submit.appendTo('#prefs .content');
var $valider = $('#valider');
$valider.wrap('<div class="textCenter" />');
$(':submit').click(function() { return false; });
$valider.click(function() {
$('#prefs').find('[name]').each(function() {
var key = $(this).attr('name');
var value = $(this).val();
if(key != 'selectedTab' && key != 'mode') eg.bdd.save(key,value);
});
window.fadeBox('Vos options EasyGame ont bien été enregistrés.',false);
redirectPage('overview',2000);
return false;
});
window.initPreferences();
$('select').ogameDropDown();
});
}
function Coord(coord) {
var self = this;
$.each(Coord.key,function(i,v) { self[v] = (v in coord)?coord[v]:1; });
this.display = function() { return '['+this.galaxy+':'+this.system+':'+this.position+']'; }
}
Coord.key = ['galaxy','system','position','type'];
Coord.byAddr = function(addr) {
var coords = addr.split(':');
return new Coord({galaxy:toInt(coords[0]),system:toInt(coords[1]),position:toInt(coords[2])});
};
function Mission(id) {
this.id = toInt(id);
this.name = api.dataLocalization().missions[id] || '';
}
//TODO si update flotte planete et pas de flotte visible en fleet1 met toutes les flottes a 0 sauf sat
function FleetManager() {
Flights.update();
}
FleetManager.prototype = {
/*Coord: function() {
return new Coord({
galaxy: hidden.get('galaxy'),
system: hidden.get('system'),
position: hidden.get('position'),
type: hidden.get('type')
});
},
Mission: function() { new Mission(hidden.get('mission')) },
getSpeed: function() { return hidden.get('speed'); },
setGalaxy: function(galaxy) { hidden.set('galaxy',galaxy); return this; },
setSystem: function(system) { hidden.set('system',system); return this; },
setPosition: function(position) { hidden.set('position',position); return this; },
setType: function(type) { hidden.set('type',type); },
setCoordinate: function(galaxy,system,position,type) { return this.setGalaxy(galaxy).setSystem(system).setPosition(position).setType(type); },
setMission: function(value) { hidden.set('mission',value); return this; },
setSpeed: function(value) { hidden.set('speed',value); return this; },*/
getFleets: function() {
var fleets = {},count,self = this;
$.each(Build.ships,function(i,ship) { if(count = self.getFleet(ship)) fleets[ship] = count; });
return fleets;
},
setFleet: function(ship,nb) {
nb = Math.min(nb,new Build(ship).getValue());
if(!nb) nb = '';
if(eg.global.page == 'fleet1') {
$('#ship_'+ship).val(nb);
window.checkShips('shipsChosen');
fleet_page.actualiseDetail();//TODO supprimer fleet_page
}
else if(nb) {
if(!hidden.exists('am'+ship)) hidden.append('am'+ship,'[name="details"]');
hidden.set('am'+ship,nb);
}
},
getFleet: function(ship) {
var val;
if(eg.global.page == 'fleet1') val = $('#ship_'+ship).val();
else val = hidden.get('am'+ship);
return toInt(val) || 0;
},
loadExpe: function() {
var iscomplet = true,nb,self = this;
$.each(Build.ships,function(i,ship) {
nb = toInt(eg.bdd.load('shipexp'+ship,0));
iscomplet = (nb<=new Build(ship).getValue()) && iscomplet;
self.setFleet(ship,nb);
});
return iscomplet;
},
CostFleets: function() {
var res = new Cost();
$.each(this.getFleets(),function(ship,count) { res.add(new Build(ship).getCost(count)); });
return res;
},
getCapacity: function() {
var capa = 0;
$.each(this.getFleets(),function(ship,count) { capa += count*(new Build(ship).getCapacity()); });
return capa;
}
};
//TODO fusionner Flights et Flight
function Flights(FlightArray) {
this.getFleets = function() {
var res = {};
$.each(FlightArray,function(mission_id,myFlight) {
$.each(myFlight.getFleets(),function(ship,count) {
if(!res[ship]) res[ship] = 0;
res[ship] += count;
});
});
return res;
};
/*this.CostFleets = function() {
var res = new Cost();
$.each(this.getFleets(),function(ship,count) { res.add(new Build(ship).getCost(count)); });
return res;
};*/
this.Resources = function() {
var res = new Cost();
$.each(FlightArray,function(mission_id,myFlight) { res.add(myFlight.Resources()) });
return res;
};
/*this.GlobalCost = function() { return this.CostFleets().add(this.Resources()); };*/
this.EndMin = function() {
var time,min = null;
$.each(FlightArray,function(mission_id,myFlight) {
time = myFlight.getTimeRemaining();
if(!min) min = time;
else min = Math.min(time,min);
});
return new Date(min+$.now());
};
}
Flights.types = function() {
var res = [];
$.each(Flights.dataFlights,function(mission_id,data) {
if($.inArray(data.type,res)<0) res.push(data.type);
});
return res.sort();
};
Flights.update = function() {
var data_array = {};
var data,$details,id,coords;
$('.fleetDetails').each(function() {
//hostile(attaque),friendly => (a moi ??),neutral
data = $(this).data();
data.endTime = data.arrivalTime;
data = $.extend(data,$('.openDetails .openCloseDetails',this).data());
id = data.missionId;
data = {
inReturn: data.returnFlight,
type:data.missionType,
endTime:data.endTime,
fleets: {},
resources: {}
};
var header_name = 'fleets',index_name;
$details = $('.fleetinfo tr',this);
$details.each(function(i) {
if(i && i!=($details.length-(3+1))) {
if(i == $details.length-3) header_name = 'resources';
if(header_name == 'resources') index_name = Cost.key[i-($details.length-3)];
else index_name = Build.idByName($('td:eq(0)',this).html().replace(':',''));
if(index_name) data[header_name][index_name] = toInt($('.value',this).html());
}
});
coords = Coord.byAddr($('.originCoords a',this).html());
if($('.originPlanet .planet',this).length) coords.type = 1;
else if($('.originPlanet .moon',this).length) coords.type = 3;
else if($('.originPlanet .tf',this).length) coords.type = 2;
data.startCoord = coords;
coords = Coord.byAddr($('.destinationCoords a',this).html());
if($('.destinationPlanet .planet',this).length) coords.type = 1;
else if($('.destinationPlanet .moon',this).length) coords.type = 3;
else if($('.destinationPlanet .tf',this).length) coords.type = 2;
data.endCoord = coords;
data_array[id] = data;
});
if(eg.global.page == 'movement') {
Flights.dataFlights = data_array;
eg.bdd.save('data_fleet_movement',Flights.dataFlights);
}
};
function Flight(id) {
this.data = Flights.dataFlights[id] || {};
}
Flight.prototype = {
/*Mission: function() { return new Mission(data.type); },
CostFleets: function() {
var res = new Cost();
$.each(this.getFleets(),function(ship,count) { res.add(new Build(ship).getCost(count)); });
return res;
},*/
inReturn: function() { return this.data.inReturn; },
End: function() { return new Date(1000*this.data.endTime); },
getTimeRemaining: function() { return this.End().getTime()-$.now(); },
getFleets: function() { return this.data.fleets; },
Resources: function() { return new Cost(this.data.resources); }
};
Flight.by = function(key,value) {
var res = {};
$.each(Flights.dataFlights,function(mission_id,data) {
if(data[key] == value) res[mission_id] = new Flight(mission_id);
});
return res;
};
Flight.byinReturn = function(inReturn) { return Flight.by('inReturn',inReturn); };
Flight.byType = function(type) { return Flight.by('type',type); };
Flights.nbExpe = function() { var nb = 0; $.each(Flight.byType(15),function() { nb++ }); return nb; };
Flights.maxExpe = function() { return Math.floor(Math.pow(Technos.get(124),.5)); };
function Cost(prix) {
prix = prix || {};
var self = this;
var f = ('f' in prix)?prix.f:1;
$.each(Cost.key,function(i,v) { self[v] = (v in prix)?prix[v]*f:0; });
}
Cost.prototype = {
sum: function() { return this.m+this.c+this.d; },
/*sumMC: function() { return this.m+this.c; },*/
pts: function() { return Math.floor(this.sum()/1000); },
usefulTransport: function() { return Math.ceil(this.sum()/new Build(eg.bdd.load('type_transport',203)).getCapacity()); },
add: function(myCost) {
var self = this;
if(myCost instanceof Cost) $.each(Cost.key,function(i,v) { self[v] += myCost[v]; });
return this;
},
clone: function() { return $.extend(true, {}, this); },
multiply: function(factor) {
var self = this;
$.each(Cost.key,function(i,v) { self[v] *= factor; });
return this;
},
cdr: function() {
var Cost = this.clone();
Cost.d = 0;
return Cost.multiply(api.dataServerData().debrisFactor);
},
nbRc: function() { return Math.ceil(this.cdr().sum()/(new Build(209).getCapacity())); },
styles: function(cost_max) {
var self = this;
var res = [],taux;
$.each(Cost.key,function(i,v) {
taux = !cost_max[v]?0:self[v]/cost_max[v];
if(taux < 0.9) res[v] = {color:'#99CC00'};
else if(taux >= 0.9 && taux < 1) res[v] = {color:'#D29D00'};
else res[v] = {color:'#D43635'};
});
return res;
}
};
Cost.key = ['m','c','d'];
function BuildLevel(Build,level) {
this.Build = Build;
this.level = parseInt(level);
var self = this;
function factor() {
var build_id = self.Build.id;
if(build_id >= 1 && build_id < 200) {
if(build_id == 199) return 3;
else if(build_id == 124) return 1.75;
if(build_id == 2) return 1.6;
else if(build_id == 12) return 1.8;
else if(build_id == 1 || build_id == 3 || build_id == 4) return 1.5;
else return 2;
}
return 1;
}
this.getCapacity = function() { return this.level * this.Build.getCapacity(); };
this.Cost = function() {
var fact = factor();
var build_id = this.Build.id;
var cost;
if(build_id == 407 || build_id == 408) {
if(build_id == 408) cost = {m:5,c:5,f:10000};
else cost = {m:1,c:1,f:10000};
return new Cost(cost);
}
if(build_id> 200 && build_id <300 || build_id > 400 && build_id < 600) {
switch(build_id) {
case 202 :
cost = {m:2,c:2,f:1000};
break;
case 203 :
cost = {m:6,c:6,f:1000};
break;
case 204 :
cost = {m:3,c:1,f:1000};
break;
case 205 :
cost = {m:6,c:4,f:1000};
break;
case 206 :
cost = {m:20,c:7,d:2,f:1000};
break;
case 207 :
cost = {m:45,c:15,f:1000};
break;
case 208 :
cost = {m:10,c:20,d:10,f:1000};
break;
case 209 :
cost = {m:10,c:6,d:2,f:1000};
break;
case 210 :
cost = {c:1,f:1000};
break;
case 211 :
cost = {m:50,c:25,d:15,f:1000};
break;
case 212 :
cost = {c:20,d:5,f:100};
break;
case 213 :
cost = {m:60,c:50,d:15,f:1000};
break;
case 214 :
cost = {m:5,c:4,d:1,f:1000000};
break;
case 215 :
cost = {m:30,c:40,d:15,f:1000};
break;
case 401 :
cost = {m:2,f:1000};
break;
case 402 :
cost = {m:15,c:5,f:100};
break;
case 403 :
cost = {m:6,c:2,f:1000};
break;
case 404 :
cost = {m:20,c:15,d:2,f:1000};
break;
case 405 :
cost = {m:2,c:6,f:1000};
break;
case 406 :
cost = {m:5,c:5,d:3,f:10000};
break;
case 502 :
cost = {m:8,d:2,f:1000};
break;
case 503 :
cost = {m:125,c:25,d:100,f:100};
break;
}
cost.f *= this.level;
return new Cost(cost);
}
if(build_id> 100 && build_id < 200) {
switch(build_id) {
case 106: cost = {m:200,c:1000,d:200}; break;
case 108: cost = {c:400,d:600}; break;
case 109: cost = {m:800,c:200}; break;
case 110: cost = {m:200,c:600}; break;
case 111: cost = {m:1000,c:0}; break;
case 113: cost = {c:800,d:400}; break;
case 114: cost = {c:4,d:2,f:1000}; break;
case 115: cost = {m:400,d:600}; break;
case 117: cost = {m:2000,c:4000,d:600}; break;
case 118: cost = {m:10,c:20,d:6,f:1000}; break;
case 120: cost = {m:200,c:100}; break;
case 121: cost = {m:1000,c:300,d:100}; break;
case 122: cost = {m:2,c:4,d:1,f:1000}; break;
case 123: cost = {m:24,c:40,d:16,f:10000}; break;
case 124: cost = {m:4,c:8,d:4,f:1000}; break;
case 199: cost = {}; break;
}
if(!('f' in cost)) cost.f = 1;
cost.f = cost.f*Math.pow(fact,this.level-1);
return new Cost(cost);
}
switch(build_id) {
case 1:
cost = {m:60,c:15};
break;
case 2:
cost = {m:48,c:24};
break;
case 3:
cost = {m:225,c:75};
break;
case 4:
cost = {m:75,c:30};
break;
case 12:
cost = {m:900,c:360,d:180};
break;
case 14:
cost = {m:400,c:120,d:200};
break;
case 15:
cost = {m:10,c:5,d:1,f:100000};
break;
}
if(!('f' in cost)) cost.f = 1;
cost.f = cost.f * Math.pow(fact,this.level-1);
return new Cost(cost);
};
//this.getTimeBuild = function(robo, nanite) { return this.Cost().sumMC()/ 5000 * 2 / (robo + 1) * Math.pow(0.5,nanite) / eg.metas.get('universeSpeed'); }
}
function Build(id) {
this.id = parseInt(id);
var localization = api.dataLocalization();
if($.isEmptyObject(localization)) this.name = '';
else this.name = localization.techs[id];
}
Build.prototype = {
getValue: function() {
if($.inArray(this.id,Build.techs)>=0) return Technos.get(this.id);
else return Planets.Current().getBuild(this.id).value;
},
getCapacity: function() {
switch(this.id) {
case 202: return 5000;
case 203: return 25000;
case 204: return 50;
case 205: return 100;
case 206: return 800;
case 207: return 1500;
case 208: return 7500;
case 209: return 20000;
case 211: return 500;
case 213: return 2000;
case 214: return 1000000;
case 215: return 750;
}
return 0;
},
Level: function(level) { return new BuildLevel(this,level); },
getCost: function(level) { return this.Level(level).Cost(); }
};
Build.ships = [202,203,204,205,206,207,208,209,210,211,212,213,214,215];
Build.techs = [106,108,109,110,111,113,114,115,117,118,120,121,122,123,124,199];
Build.mines = [1,2,3];
Build.energies = [4,12,212,113];
Build.prodSat = function(nb) {
var t_max = Planets.Current().getInfo('t_max');
var factor_energie = (premium.enabled('ingenieur')?1.1:1);
return Math.floor(Math.floor(t_max/6 + 70/3)*nb*factor_energie);
};
Build.prodCES = function(level) {
var factor_energie = (premium.enabled('ingenieur')?1.1:1);
return Math.floor(factor_energie * 20 * level * Math.pow(1.1,level));
};
Build.prodCEF = function (level, NRJ, percent) {
var factor_energie = (premium.enabled('ingenieur')?1.1:1);
return Math.floor(factor_energie * percent/100 * 30 * level * Math.pow((1.05 + NRJ / 100),level));
};
Build.idByName = function(name) {
var localization = api.dataLocalization();
var id = null;
if(!$.isEmptyObject(localization))
$.each(localization.techs,function(build_id,build_name) { if(build_name == name) id = build_id; });
return id;
};
function Planets(cp) {
this.planet = Planets.planets[cp].planet || {};
this.cp = cp;
}
$.extend(Planets,{
planets: eg.bdd.load('planets',{}),
cp_planets: eg.bdd.load('planets::cp_planets',[]),
cp_moons: eg.bdd.load('planets::cp_moons',[]),
coords: eg.bdd.load('planets::coords',{}),
update: function() {
var nb_moon = 0;
var old_planets = Planets.planets;
Planets.cp_planets = [];
Planets.cp_moons = [];
Planets.coords = {};
Planets.planets = {};
$('.smallplanet').each(function(i) {
var cp = $('.planetlink',this).attr('href').pick(/cp=([^&#]+)/);
var $moon_link = $('.moonlink',this);
var name = $('.planet-name',this).html().trim();
var coords = $('.planet-koords',this).html().trim().substr(1).replace(']','');
if(!old_planets[cp]) Planets.planets[cp] = {planet:{}};
else Planets.planets[cp] = old_planets[cp];
Planets.planets[cp] = Planets.get(cp);
Planets.planets[cp].addInfo({num:i, id:cp, name:name, coord:coords, type:'planet'});
Planets.addPlanet(i,cp,coords);
if($moon_link.length) {
var cp_moon = $moon_link.attr('href').pick(/cp=([^&#]+)/);
var name_moon = $moon_link.attr('title').split('</B>')[0].substr(3).replace('['+coords+']','');
if(!old_planets[cp_moon]) Planets.planets[cp_moon] = {planet:{}};
else Planets.planets[cp_moon] = old_planets[cp_moon];
Planets.planets[cp_moon] = Planets.get(cp_moon);
Planets.planets[cp_moon].addInfo({num:nb_moon, id:cp_moon, name:name_moon, coord:coords, type:'moon'});
Planets.addMoon(nb_moon,cp_moon,coords);
nb_moon++;
}
});
Planets.save();
Planets.Current().update();
},
get: function(cp) { return new this(cp); },
Current: function() { return this.get(eg.metas.get('planetId')); },
getCpPlanets: function() { return this.cp_planets; },
getCpMoons: function() { return this.cp_moons; },
getCpType: function(type) { return type=='planet'?this.getCpPlanets():this.getCpMoons(); },
byNum: function(num,type) {
var cp_type = this.getCpType(type);
return this.get(cp_type[Math.clamp(0,num,cp_type.length)]||1000);
},
getProduction: function() {
var prod = new Cost();
$.each(Planets.getCpPlanets(),function(i,cp) { prod.add(Planets.get(cp).getProduction()); });
return prod;
},
addPlanet: function(i,cp,coord) {
this.cp_planets[i] = cp;
this.coords[coord] = this.coords[coord] || [];
if($.inArray(cp,this.coords)<0) this.coords[coord].push(cp);
},
addMoon: function(i,cp,coord) {
this.cp_moons[i] = cp;
this.coords[coord] = this.coords[coord] || [];
if($.inArray(cp,this.coords)<0) this.coords[coord].push(cp);
},
getAllCp: function() { return $.merge($.merge([],Planets.getCpPlanets()),Planets.getCpMoons()); },
getCpCoord: function() {
var cps = [];
$.each(this.coords,function(i,coords) {
$.each(coords,function(j,v) { cps.push(v); });
});
return cps;
},
getCurrentStocks: function() {
var stock = new Cost();
$.each(this.getAllCp(),function(i,cp) { stock.add(Planets.get(cp).getCurrentStocks()); });
return stock;
},
save: function() {
eg.bdd.save('planets',Planets.planets);
eg.bdd.save('planets::cp_planets',this.cp_planets);
eg.bdd.save('planets::cp_moons',this.cp_moons);
eg.bdd.save('planets::coords',this.coords);
},
getUrlsInstall: function() {
var urls = [];
$.each(this.getAllCp(),function(i,cp) { urls = $.merge(urls,Planets.get(cp).getUrlsInstall()); });
return urls;
},
nbUrlVisit: function() {
var nb = 0;
$.each(this.getAllCp(),function(i,cp) { nb += Planets.get(cp).nbUrlVisit(); });
return nb;
},
nbUrlVisitTotal: function() {
var nb = 0;
$.each(this.getAllCp(),function(i,cp) { nb += Planets.get(cp).nbUrlVisitTotal(); });
return nb;
}
});
Planets.prototype = {
addInfo: function(key,value) {
if(!this.planet) this.planet = {};
if(!this.planet.info) this.planet.info = {};
if(typeof(key) == 'object') this.planet.info = $.extend({},this.planet.info,key);
else {
this.planet.info = $.extend({},this.planet.info);
this.planet.info[key] = value;
}
},
update: function() {
var self = this;
if((this.cp == eg.metas.get('planetId'))) {
this.planet.resources = {};
this.setLastVisit();
$.each(Cost.key,function(i,v) { self.updateResource(v); });
if($.inArray(eg.global.page,['resources','station','shipyard','defense','fleet1'])>=0) {
this.setLastVisit(eg.global.page);
$('.buildingimg').each(function() {
if(!self.planet.builds) self.planet.builds = {};
var build_id = eg.global.page == 'fleet1' ?$(this).parent().attr('id').substr(6):$('.detail_button',this).attr('ref');
if(!self.planet.builds[build_id]) self.planet.builds[build_id] = {};
self.planet.builds[build_id].lastupdate = $.now();
self.planet.builds[build_id].value = toInt($('.level',this).html());
});
}
else if(eg.global.page == 'overview') {
this.setLastVisit(eg.global.page);
var row_diametre = window.textContent[1].split('(');
var data_cases = row_diametre[1].split('</span>/<span>');
var temperature = window.textContent[3].split(' ');
this.addInfo({
diametre:toInt(row_diametre[0]),
case_occupe:toInt(data_cases[0]),
case_total:toInt(data_cases[1]),
t_max:toInt(temperature[temperature.length-1])
});
}
else if(eg.global.page == 'resourceSettings') {
this.setLastVisit(eg.global.page);
$('.list [name^="last"]').each(function() {
var build_id = $(this).attr('name').substr(4);
if(!self.planet.builds) self.planet.builds = {};
if(!self.planet.builds[build_id]) self.planet.builds[build_id] = {};
self.planet.builds[build_id].percent = $(this).val();
});
}
}
Planets.planets[this.cp].planet = this.planet;
Planets.save();
},
getInfo: function(key) { return this.planet.info[key] || false; },
getId: function() { return this.getInfo('id'); },
isPlanet: function() { return this.getInfo('type') == 'planet'; },
getBuild: function(build_id) {
if(!this.planet.builds[build_id]) return {value:0,lastupdate:0};
return this.planet.builds[build_id];
},
getResource: function(type) { return this.planet.resources[type]; },
getProduction: function() {
var prod = {},self = this;
$.each(Cost.key,function(i,v) { prod[v] = self.getResource(v).production; });
return new Cost(prod);
},
getLimit: function() {
var limit = {},self = this;
$.each(Cost.key,function(i,v) { limit[v] = self.getResource(v).limit; });
return new Cost(limit);
},
getAvailable: function() {
var available = {},self = this;
$.each(Cost.key,function(i,v) { available[v] = self.getResource(v).available; });
return new Cost(available);
},
getCurrentStocks: function() {
var delta_time = ($.now() - toInt(this.getLastVisit()))/1000;
var stock = {};
var available = this.getAvailable();
var limit = this.getLimit();
var production = this.getProduction();
$.each(Cost.key,function(i,res) {
stock[res] = available[res];
if(stock[res] < limit[res]) {
if(parseInt(stock[res] + production[res] * delta_time) > limit[res]) stock[res] = limit[res];
else stock[res] = parseInt(stock[res]+production[res]*delta_time);
}
});
return new Cost(stock);
},
getUsefulTransport: function() { return this.getCurrentStocks().usefulTransport(); },
updateResource: function(type) {
var title,available,limit,production;
var $title;
var is_chrome = ('metalTicker' in window);
switch(type) {
case 'm':
if(is_chrome) title = window.metalTicker.config;
else title = $('#metal_box').attr('title');
break;
case 'c':
if(is_chrome) title = window.crystalTicker.config;
else title = $('#crystal_box').attr('title');
break;
case 'd':
if(is_chrome) title = window.deuteriumTicker.config;
else title = $('#deuterium_box').attr('title');
break;
default: alert('type non valide('+type+')');
}
if(is_chrome) this.planet.resources[type] = title;
else {
$title = $(title.substr(title.indexOf('|')+2));
available = toInt($title.find('tr:eq(0)').find('span').html());
limit = toInt($title.find('tr:eq(1)').find('span').html());
production = toInt($title.find('tr:eq(2)').find('span').html())/3600;
this.planet.resources[type] = {available:available,limit:limit,production:production};
}
},
display: function() { return this.getInfo('name')+' (['+this.getInfo('coord')+'])'; },
getLastVisit: function(page) {
if(!this.planet.lastvisitpage) return 0;
if(!page) {
if(!this.planet.lastvisitpage.value) return 0;
return this.planet.lastvisitpage.value;
}
if(!this.planet.lastvisitpage[page]) return 0;
return this.planet.lastvisitpage[page];
},
setLastVisit: function(page) {
if(!this.planet.lastvisitpage) this.planet.lastvisitpage = {};
if(!page) this.planet.lastvisitpage.value = $.now();
else this.planet.lastvisitpage[page] = $.now();
},
getUrlsInstall: function() {
var compl = '';
if(Planets.Current().getId() != this.getId()) compl = 'cp='+this.getId();
var urls = [];
if(!this.planet.lastvisitpage) this.planet.lastvisitpage = {};
if(!this.planet.lastvisitpage.overview) urls.push(makeUrl('overview',compl));
if(!this.planet.lastvisitpage.resources && this.isPlanet()) urls.push(makeUrl('resources',compl));
if(!this.planet.lastvisitpage.station) urls.push(makeUrl('station',compl));
if(!this.planet.lastvisitpage.shipyard) urls.push(makeUrl('shipyard',compl));
if(!this.planet.lastvisitpage.defense) urls.push(makeUrl('defense',compl));
if(!this.planet.lastvisitpage.resourceSettings && this.isPlanet()) urls.push(makeUrl('resourceSettings',compl));
return urls;
},
nbUrlVisit: function() { return this.nbUrlVisitTotal()-this.getUrlsInstall().length; },
nbUrlVisitTotal: function() { return this.isPlanet()?6:4; }
};
function Technos() {}
$.extend(Technos,{
technos: eg.bdd.load('technos',{}),
get: function(tech_id) { return toInt(this.technos[tech_id]); },
update: function() {
if(eg.global.page == 'research') {
Technos.technos = {};
$('.buildingimg').each(function() {
Technos.technos[$('a.detail_button',this).attr('ref')] = $('.level',this).html().pick(/(\d+)/);
});
Technos.technos.lastupdate = $.now();
eg.bdd.save('technos',Technos.technos);
}
},
getUrlInstall: function() {
var urls = [];
if($.isEmptyObject(this.technos)) urls.push(makeUrl('research'));
return urls;
}
});
Flights.dataFlights = eg.bdd.load('data_fleet_movement') || {};
var fleet_page = {
nb_bouton:0,
actualiseDetail: function() {
var CostTotal = fleet_manager.CostFleets();
var cdr = CostTotal.cdr();
var ret = '';
ret += '<span id="capa">'+AddPoint(fleet_manager.getCapacity())+' Capa</span><br />';
ret += '<span id="points">'+AddPoint(CostTotal.pts())+' Points</span><br />';
$('#listeinfoflotte').html(ret+'<span id="detailcdr" title="'+(AddPoint(cdr.m)+' '+eg.lang.get('resources.m'))+' '+(AddPoint(cdr.c)+' '+eg.lang.get('resources.c'))+' => '+AddPoint(CostTotal.nbRc())+' recyclo">Equivalent CDR =></span>');
},
addEvent: function() {
var $div = $('<div>',{id:'listeinfoflotte'}).width('150').css({'overflow':'hidden','padding':'5px 10px'});
$('#continue').after($div);
$('.fleetValues,.tooltip').each(function() {
$(this).keyup(function() {
fleet_page.actualiseDetail();
});
$(this).click(function() {
fleet_page.actualiseDetail();
});
});
this.actualiseDetail();
},
bouton: function(lettre) {
this.nb_bouton++;
var id_bouton;
var titre;
var image;
switch(lettre) {
case 'S':
id_bouton = 'sauverflotteexpe';
titre = eg.lang.get('actions.lance_expe.save_ships');
image = 'http://i.imgur.com/vnlER.gif';
break;
case 'R':
id_bouton = 'restaurerflotteexpe';
titre = eg.lang.get('actions.lance_expe.load_ships');
image = 'http://i.imgur.com/C6eSy.gif';
break;
case 'GT':
id_bouton = 'nombreptgtvidercolo';
titre = 'Sélectionne le bon nombre de GT pour vider vos colonies';
image = 'http://nsa20.casimages.com/img/2010/08/28/100828124048177904.jpg';
break;
case 'PT':
id_bouton = 'nombreptgtvidercolo';
titre = 'Sélectionne le bon nombre de PT pour vider vos colonies';
image = 'http://nsa20.casimages.com/img/2010/08/28/100828123944566392.jpg';
break;
}
$('.secondcol').append('<span id="'+id_bouton+'"><a href="javascript:void(0);" class="tooltip button_fleet1 tooltipRight" title="'+titre+'"></a></span>');
$('.button_fleet1').css({
margin:'0 5px',
float:'right',
display:'block',
width:'32px',
height:'32px',
overflow:'hidden'
});
$('#'+id_bouton+' a').css({background:'url('+image+') no-repeat'});
return this;
},
init: function() {
if(eg.global.page == 'fleet1') {
this.addEvent();
var $secondcol = $('.secondcol').css('padding','5px');
$secondcol.hide();
$secondcol.find('.clearfloat').remove();
$('.send_none,.send_all').css({
float:'left',
margin:'0 5px'
});
if(eg.bdd.load('type_transport',203)==203) this.bouton('GT');
else this.bouton('PT');
this.bouton('R').bouton('S');
$secondcol.width(42*(2+this.nb_bouton));
$secondcol.show();
$('#sauverflotteexpe').click(function() {
var nombrevaisseaux = 0,nombresaisie;
$.each(Build.ships,function(i,ship) {
nombresaisie= fleet_manager.getFleet(ship);
eg.bdd.save('shipexp'+ship,nombresaisie);
nombrevaisseaux+=nombresaisie;
});
eg.bdd.save('nbshipexp',nombrevaisseaux);
});
$('#restaurerflotteexpe').click(function() {
if(!fleet_manager.loadExpe()) alert(eg.lang.get('actions.lance_expe.not_enough_ships'));
});
$('#nombreptgtvidercolo').click(function() {
var nb_utile = Planets.Current().getUsefulTransport();
if (nb_utile >= eg.bdd.load('min_transport',15)) fleet_manager.setFleet(eg.bdd.load('type_transport',203),nb_utile)
});
}
}
};
var stock_ress = {
make: function() {
$('<span>').attr('id','lesstock').makebox('Les Stock ressources','');
var $lesstock = $('#lesstock');
$lesstock.hide();
$lesstock.find('table').addStyle({
'margin':'0 20px',
'color':'white'
});
$lesstock.find('tr').addStyle('height','20px');
},
calcul: function() {
var $lesstock = $('#lesstock');
var tstock = new Cost();
var $html = $lesstock.find('.idle').empty();
var $tr = $('<tr>');
$tr.append($('<th>').width(130));
$tr.append($('<th>').width(105).html(eg.lang.get('resources.m')));
$tr.append($('<th>').width(105).html(eg.lang.get('resources.c')));
$tr.append($('<th>').width(105).html(eg.lang.get('resources.d')));
$tr.append($('<th>').width(135).html('Total (Transpo)'));
$html.append($tr);
function MiseEnFormeAffichage($html,titre,stock,style) {
if( style == undefined ) style = '';
var $tr = $('<tr>');
var $td;
$td = $('<td>').html(titre); if(style['titre']) $td.css(style['titre']); $tr.append($td);
$.each(Cost.key,function(i,v) {
$td = $('<td>').html(AddPoint(stock[v]));
if(style[v]) $td.css(style[v]); $tr.append($td);
});
$td = $('<td>').html(AddPoint(stock.sum())+' <span style="font-size:9px">('+AddPoint(stock.usefulTransport())+')</span>');
if(style['T']) $td.css(style['T']); $tr.append($td);
$html.append($tr);
}
$.each(Planets.getCpCoord(),function(i,cp) {
var pla = Planets.get(cp);
tstock.add(pla.getCurrentStocks());
MiseEnFormeAffichage($html,pla.display(),pla.getCurrentStocks(),pla.getCurrentStocks().styles(pla.getLimit()));
});
var style = [];
style['titre'] = {color:'red'};
MiseEnFormeAffichage($html,'Total a quai',tstock,style);
var flights;
var en_vol = new Cost();
$.each(Flights.types(),function(i,type) {
flights = new Flights(Flight.byType(type));
if((flights.Resources().sum()) > 0) MiseEnFormeAffichage($html,'Total '+new Mission(type).name,flights.Resources());
en_vol.add(flights.Resources());
});
tstock.add(en_vol);
if(en_vol.sum()) MiseEnFormeAffichage($html,'Total en vol',en_vol);
MiseEnFormeAffichage($html,'Total compte',tstock,style);
var prod_total = Planets.getProduction();
MiseEnFormeAffichage($html,'Prod total',prod_total.multiply(24*60*60));
$lesstock.show();
},
init: function() {
if(eg.bdd.load('show_stock_ress',1) == 1) {
this.make();
if(eg.bdd.load('show_ress_dyna',0) == 1) setInterval(stock_ress.calcul,1000);
else stock_ress.calcul();
}
}
};
function BuildSuggest() {
//TODO Build.getTimeBuild(level,robo,nanite),getTimeTech(),getTimeShip temps construction batiment, recherche, vaisseaux/défenses
function doIt(retour) {
if(!retour.id) return 'Veuillez vérifier vos réglage';
var level = retour.level_up;
if($.inArray(retour.id,Build.ships) == -1) level += self.builds[retour.id];
var build;
if(retour.id == '12_percent') {
build = new Build(12);
level+='%';
}
else build = new Build(retour.id);
var ret = '';
ret += build.name+'('+level+')';
if($.inArray(retour.id,[1,2,3,4,12,212,113,'12_percent'])>=0) ret += ' => Rst.Enr.:'+AddPoint(retour.reste);
if(retour.id != '12_percent') ret += ' Transpo:'+AddPoint(build.getCost(level).usefulTransport());
return ret;
}
this.builds = [];
var self = this;
this.init = function() {
if(!window.vacation && Planets.Current().isPlanet() && eg.bdd.load('mine_a_faire',1)) {
this.nb_planet = Planets.getCpPlanets().length;
$.each([1,2,3,4,12,14,15,212,113,122,124],function(i,v) { self.builds[v] = new Build(v).getValue(); });
this.builds['12_percent'] = toInt(Planets.Current().getBuild(12).percent);
this.level_max = [];
this.level_max[212] = toInt(eg.bdd.load('level_max_212',200));
this.level_max[14] = toInt(eg.bdd.load('level_max_14',10));
this.level_max[15] = toInt(eg.bdd.load('level_max_15',4));
this.level_max[4] = toInt(eg.bdd.load('level_max_4',25));
this.t_max = Planets.Current().getInfo('t_max');
var Je_doit = '',retour;
for(var i=0;i<10;i++) {
retour = this.Mine_a_faire();
Je_doit += '<div>'+doIt(retour) +'</div>';
if(retour.id) this.builds[retour.id] = this.builds[retour.id] + retour.level_up;
this.nb_planet = Math.floor((this.builds[124]+3)/2);
}
$('#header_text').after($('<div>',{id:'minesafaire'}).css({
marginTop:'30px',
background:'rgba(0,0,0,.65)'
}).html(Je_doit));
$('#minesafaire').find('div').css({
fontWeight:'bold',
color:'white',
margin:'0 0 5px 75px',
textAlign:'left'
});
}
};
this.Gestion_energie = function(Reste_energie_actu, Conso_plus) {
var Manque_energie = Conso_plus - Reste_energie_actu;
var Cout_C_CES = new Build(4).getCost(this.builds[4] + 1).c;
var Cout_C_CEF = 4 * new Build(12).getCost(this.builds[12] + 1).c;
var Cout_C_NRJ = 2 / this.nb_planet * new Build(113).getCost(this.builds[113] + 1).c;
var Nb_sat = Math.ceil(Manque_energie/Build.prodSat(1))+1;
if( Nb_sat + this.builds[212] > this.level_max[212] ) Nb_sat = this.level_max[212] - this.builds[212];
var Cout_C_Sat = 2 * new Build(212).getCost(Nb_sat).c;
var ProdEnergie = [],ProdUp = [],Renta = [];
ProdEnergie[4] = Build.prodCES(this.builds[4]);
ProdEnergie[12] = Build.prodCEF(this.builds[12],this.builds[113],this.builds['12_percent']);
ProdUp[4] = Build.prodCES(this.builds[4]+1) - ProdEnergie[4];
ProdUp[12] = Build.prodCEF(this.builds[12]+1,this.builds[113],this.builds['12_percent']) - ProdEnergie[12];
ProdUp[113] = Build.prodCEF(this.builds[12],this.builds[113]+1,this.builds['12_percent']) - ProdEnergie[12];
ProdUp[212] = Build.prodSat(Nb_sat);
if( this.builds[4] >= this.level_max[4]) Renta[4] = 0;
else Renta[4] = ProdUp[4] / Cout_C_CES;
if( this.builds[12] == 0 && this.builds[4] < 28 ) Renta[12] = 0;
else Renta[12] = ProdUp[12] / Cout_C_CEF;
if( Renta[4] * 10000 < 4 ) Renta[12] = ProdUp[12] / Cout_C_CEF;
Renta[113] = ProdUp[113] / Cout_C_NRJ;
if( Cout_C_Sat == 0 || (Nb_sat + this.builds[212]) > this.level_max[212] || Nb_sat < 0 ) Renta[212] = 0;
else Renta[212] = ProdUp[212] / Cout_C_Sat;
var reste_energie_apres = '';
var Energie_en_plus = 0;
var id,level_up = 1;
if( Renta[4] >= Renta[12] && Renta[4] >= Renta[113] && Renta[4] >= Renta[212] ) id = 4;
else if( Renta[12] >= Renta[4] && Renta[12] >= Renta[113] && Renta[12] >= Renta[212] ) id = 12;
else if( Renta[113] >= Renta[4] && Renta[113] >= Renta[12] && Renta[113] >= Renta[212] ) id = 113;
else if( Renta[212] >= Renta[4] && Renta[212] >= Renta[12] && Renta[212] >= Renta[113] ) {
id = 212;
level_up = Nb_sat;
}
if(id) {
Energie_en_plus = ProdUp[id];
reste_energie_apres = Reste_energie_actu + Energie_en_plus;
}
var P_CEF = pourcentCEF(Manque_energie, this.builds[12], this.builds[113], this.builds['12_percent']);
var diff = Math.floor(10 * (P_CEF - this.builds['12_percent'])) / 10;
if(diff) {
reste_energie_apres = Conso_plus+Build.prodCEF(this.builds[12],this.builds[113],diff);
id = '12_percent';
level_up = diff;
}
return {id:id,level_up:level_up,reste:reste_energie_apres};
};
this.Gestion_temps = function() {
var Facteur_div_robo = (1 + this.builds[14] + (2)) / (1 + this.builds[14]);
var Facteur_div_nanite = 2;
var Cout_up_robo = Math.pow(1.3,this.builds[14]) * new Build(14).getCost(this.builds[15] + 1).c;
var Cout_up_nanite = new Build(15).getCost(this.builds[15] + 1).c;
var Renta = [];
if( this.level_max[14] < this.builds[14] + 1 ) Renta[14] = 0;
else Renta[14] = Facteur_div_robo / Cout_up_robo;
if( this.level_max[15] < (this.builds[15] + 1) || this.builds[14] < 10 ) Renta[15] = 0;
else Renta[15] = Facteur_div_nanite / Cout_up_nanite;
if(Renta[14] || Renta[15]) {
if( Renta[14] > Renta[15] ) return {build_id:14,level:(this.builds[14] + 1)};
else if( Renta[15] >= Renta[14] ) return {build_id:15,level:(this.builds[15] + 1)};
}
return {build_id:null,build_level:null};
};
this.Mine_a_faire = function() {
var cost_build = {};
$.each(Build.mines,function(i,v) { cost_build[v] = new Build(v).getCost(self.builds[v]+1); });
cost_build[122] = new Build(122).getCost(this.builds[122]+1);
cost_build[124] = new Build(124).getCost(this.builds[124]+1);
if(this.builds[124]%2) cost_build[124].add(new Build(124).getCost(this.builds[124]+2));
var CostPond = [];
CostPond[1] = 1.5 * cost_build[1].c;
CostPond[2] = 1.1 * cost_build[2].c;
CostPond[3] = 2 * cost_build[3].c;
CostPond[124] = cost_build[124].c * (3/2)/(this.nb_planet+1);
CostPond[122] = 10*cost_build[122].c *2/this.nb_planet;
var Temps_maxi = 999 * 24;
var Conso_actu = [];
$.each(Build.mines,function(i,v) { Conso_actu[v] = consoEnergie(v,self.builds[v]); });
var Conso_actu_total = Conso_actu[1] + Conso_actu[2] + Conso_actu[3];
var ProdNRJ = [];
ProdNRJ[4] = Build.prodCES(this.builds[4]);
ProdNRJ[12] = Build.prodCEF(this.builds[12],this.builds[113],this.builds['12_percent']);
ProdNRJ[212] = Build.prodSat(this.builds[212]);
var Prod_actu_total = ProdNRJ[4] + ProdNRJ[12] + ProdNRJ[212];
var Reste_energie_actu = Prod_actu_total - Conso_actu_total;
var Temps;
var Conso_en_plus;
var id,level_up = 1;
if( CostPond[1] <= CostPond[2] && CostPond[1] <= CostPond[3]) id = 1;
else if( CostPond[3] < CostPond[1] && CostPond[3] <= CostPond[2] ) id = 3;
else id = 2;
Conso_en_plus = consoEnergie(id, this.builds[id]+1) - Conso_actu[id];
var reste_after = Reste_energie_actu - Conso_en_plus;
//TODO a supprimer => BuildLevel.getTimeBuild
function tempsConstruction(M_C, Robo, Nanite) {
return (M_C) / 5000 * 2 / (Robo + 1) * Math.pow(0.5,Nanite) / eg.metas.get('universeSpeed');
}
Temps = tempsConstruction(cost_build[id].m+cost_build[id].c, this.builds[14], this.builds[15]);
if($.inArray(id,[1,2])>=0 && CostPond[122] <= CostPond[id]) id = 122;
else if(CostPond[124] <= CostPond[id]) id = 124;
if(id == 124 || id == 122) {
reste_after = Reste_energie_actu;
Temps = 0;
}
if( Temps > Temps_maxi ) {
var data = this.Gestion_temps();
id = data.id;
level_up = data.level_up;
}
else {
var P_CEF = pourcentCEF(-reste_after, this.builds[12], this.builds[113], this.builds['12_percent']);
var diff = Math.floor(10*(P_CEF - this.builds['12_percent']))/10;
if(diff) {
reste_after = Reste_energie_actu-ProdNRJ[12]+Build.prodCEF(this.builds[12],this.builds[113],P_CEF);
id = '12_percent';
level_up = diff;
}
else if(reste_after < 0 ) return this.Gestion_energie(Reste_energie_actu,Conso_en_plus);
}
return {id:id,level_up:level_up,reste:reste_after};
};
this.init();
}
function Hidden() {}
Hidden.prototype = {
Selector: function (key) { return $('[type="hidden"][name="' + key + '"]'); },
exists: function (key) { return this.Selector(key).length; },
get: function (key) { return this.Selector(key).val(); },
set: function (key, value) { return this.Selector(key).val(value); },
append: function (key, selector) { return $(selector).append($('<input />', { name: key, type: 'hidden' })); }
};
function API() {
this.check();
//highscore.xml?category=1&type=1
//players.xml
//universe.xml
//alliances.xml
//serverData.xml
//localization
}
API.prototype = {
xml2array: function(xml,tag) {
var $childrens = $(xml).children();
var data = {};
var nb_attr = 0;
$.each(['id','name','type','score','coords','size','ships',
'timestamp','alliance','status','player','position','href'],function(i,v) {
if($(xml).attr(v)) {
if(tag == 'techs') {
alert(v+' '+$(xml).attr(v));
}
data[v] = $(xml).attr(v);
nb_attr++;
}
});
var lng = $childrens.length;
if(!lng) {
if(xml.textContent) {
if(!nb_attr) data = xml.textContent;
else data['value'] = xml.textContent;
}
}
else {
var is_array = false;
if($.inArray(tag,['players','universe','alliances','universes'])>=0) {
data = [];
is_array = true;
}
$childrens.each(function() {
var subArray = API.prototype.xml2array(this,this.tagName);
var subTag = this.tagName;
if($.inArray(tag,['techs','missions','planets','positions'])>=0) {
if($.inArray(tag,['techs','missions'])>=0) data[subArray.id] = subArray.value;
else if(tag == 'planets') data[subArray.id] = subArray;
else if(tag == 'positions') data[subArray.type] = subArray;
}
else if(is_array) {
var o = {};
o[subTag] = subArray;
data.push(o);
}
else data[subTag] = subArray;
});
}
return data;
},
callback: function(xml,name,params) {
var data = this.xml2array(xml,name)[name];
eg.bdd.save('api.'+name+(params?'.'+$.param(params):'')+'.lastupdate',$.now());
eg.bdd.save('api.'+name+(params?'.'+$.param(params):''),data);
},
check: function() {
var self = this;
$.each([
{deltaUpdate:8,name:'playerData',params:{id:eg.metas.get('playerId')}},
{deltaUpdate:24*6,name:'localization'},
{deltaUpdate:24*6,name:'serverData'}
],function(i,v) {
var data = self.get(v.name, v.params);
if(($.now()-data.lastupdate)/(1000*3600) >= v.deltaUpdate) self.load(v.name, v.params);
})
},
load: function(name,params) {
var self = this;
$.ajax( {
type: "GET",
url: makeUrlAPI(name,params),
dataType: "xml",
success: function(xml) {
self.callback(xml,name,params);
}
});
},
get: function(name,params) {
return {
lastupdate: eg.bdd.load('api.'+name+(params?'.'+$.param(params):'')+'.lastupdate',0),
data: eg.bdd.load('api.'+name+(params?'.'+$.param(params):''),{})
};
},
dataLocalization: function() { return this.get('localization').data; },
dataServerData: function() { return this.get('serverData').data; }
};
function Premium() {
var self = this;
$('#officers').find('a').each(function () {
self[this.href.pick(/openDetail=([0-9]+)/)] = $(this).hasClass('on');
});
}
Premium.prototype = {
enabled: function (key) {
if (key == 'commandant') key = '2';
else if (key == 'amiral') key = '3';
else if (key == 'ingenieur') key = '4';
else if (key == 'geologue') key = '5';
else if (key == 'technocrate') key = '6';
return this[key];
}
};
try {
var hidden = new Hidden();
if(eg.gbdd.load('dateinstallMaJ',0) == 0) eg.gbdd.save('dateinstallMaJ',$.now());
if(eg.global.getMode() == 'game') {
Planets.update();
Technos.update();
var api = new API();
var premium = new Premium();
if(Planets.getUrlsInstall().length || Technos.getUrlInstall().length) {
$(function() {
var url = $.merge(Planets.getUrlsInstall(),Technos.getUrlInstall());
var timeactua = random(1300,3500); timeactua.toFixed(2);
$('#menuTable').append('<li id="menuscript"></li>');
$('#menuscript').addStyle({
padding: '5px',
width: '126px',
height:'inherit',
background: 'rgb(10, 13, 15)',
'border-radius': '5px',
'text-align':'center'
}).html('Installation<br /><br />'+Math.round(10000*(Planets.nbUrlVisit())/(Planets.nbUrlVisitTotal()))/100+' %');
setTimeout(function() { window.location.replace(url[0]); },timeactua);
});
}
else {
var fleet_manager = new FleetManager();
if(eg.bdd.load('hide_mmogame',1) == 1) {
$('body.no-commander').addStyle({ backgroundPosition:'0% 0',margin: '0'});
$('#mmonetbar').addStyle('display','none');
$('body.no-commander .contentBoxBody').addStyle('top','0');
}
if(eg.bdd.load('hide_build_faster',1) == 1) $('.build-faster').addStyle('display','none');
if(eg.bdd.load('basique_color_menu',1) == 1) $('.premiumHighligt span').addStyle('color','inherit');
if(eg.bdd.load('remove_pub',1) == 1) $('#banner_skyscraper').addStyle('display','none');
$( document ).ajaxSuccess(function( event, xhr, settings ) {
var page = settings.url.pick(/page=([^&#]+)/);
if(page == 'allianceOverview') {
$(function() {
var $span = $('<span>');
$span.attr('id','boutonBBcode').css('cursor','pointer').html('Liste Membres');
$('#allyData').find('table').after($span);
$('#boutonBBcode').click(function() {
var infoJoueur = [],pseudo,point,classement,texte = '';
$('#member-list').find('tbody').find('tr').each(function(i) {
pseudo = $.trim($(this).find('td').html());
point = toInt($(this).find('td').eq(3).attr('title'));
if(!point) alert('erreur');
classement = toInt($(this).find('td').eq(3).find('a').html());
infoJoueur[i] = [pseudo,point,classement];
});
for (var i =0 ; i< infoJoueur.length ; i++)
texte += (i+1) +'\t'+ infoJoueur[i][0] +'\t\t\t'+infoJoueur[i][1]+'\t\t\t\t'+infoJoueur[i][2]+'\n';
alert(texte);
});
});
}
else if(page == 'galaxyContent') {
if(!premium.enabled('commandant')) {
var $galaxytable = $('#galaxytable');
var galaxy = toInt($galaxytable.data('galaxy'));
var system = toInt($galaxytable.data('system'));
var url_base = makeUrl('fleet1','galaxy='+galaxy+'&system='+system);
$galaxytable.find('.row').each(function() {
var $row = $(this);
var $planet = $row.find('.microplanet');
var $debris = $row.find('.debris');
var $moon = $row.find('.moon');
var $player = $row.find('.playername');
var position = toInt($row.find('.position').html());
var recy = Math.min(toInt($debris.find('.debris-recyclers').html()),new Build(209).getValue());
if(recy) {
var $debris_link = $debris.find('.ListLinks').find('a');
$debris_link.attr('href',url_base+'&position='+position+'&type=2&mission=8&am209='+recy);
$debris_link.removeAttr('onclick');
}
if($planet.length && !$player.hasClass('vacation') && !$player.hasClass('js_no_action') && !$player.hasClass('noob')) {
var $planet_link = $planet.find('.ListLinks');
var $crach_link = $('<a>');
$crach_link.attr('href',url_base+'&position='+position+'&type=1&mission=1&am210=1');
$crach_link.html('Crach sonde');
$planet_link.append($crach_link);
$planet_link.find('li:last').next().wrap('<li>');
if($moon.length) {
var $moon_link = $moon.find('.ListLinks');
if($moon_link.length) {
var $spy_link = $('<a>');
$spy_link.click(function() {
window.sendShips(6,galaxy,system,position,3,10);
return false;
}).html('Espionner').attr('href','javascript:void(0);');
$moon_link.append($spy_link).find('li:last').next().wrap('<li>');
$crach_link = $('<a>');
$crach_link.attr('href',url_base+'&position='+position+'&type=3&mission=1&am210=1');
$crach_link.html('Crach sonde');
$moon_link.append($crach_link);
$moon_link.find('li:last').next().wrap('<li>');
}
}
}
});
}
}
else if($.inArray(page,['resources','shipyard','defense','research'])>=0) {
$(function() {
var build_id = $('[name="type"]','#detail').val();
var cost = new Build(build_id).getCost(1);
var tab = [],max;
$.each(Cost.key,function(i,v) { if(cost[v]) tab.push(Planets.Current().getResource(v).available/cost[v]); });
if(!tab.length) max = 0;
else {
max = tab[0];
var length = tab.length;
for (var i = 1; i < length; i++) if (tab[i] < max) max = tab[i];
}
max = Math.floor(max);
var $number = $('#number');
if(!premium.enabled('commandant') && eg.bdd.load('show_button_max',1) == 1) {
$('#costs .enter p br','#detail').after('[<a id="maxlink" class="tooltipRight tooltipRight" title="Nombre maximum" href="javascript:void(0);"></a>]');
$('#maxlink').html('max. '+max).click(function() { $number.val(max).trigger('change'); });
}
$number.on('keyup change focus',function() {
var index = 0;
var local_cost = cost.clone().multiply($(this).val() || 1);
var styles = local_cost.styles(Planets.Current().getAvailable());
$.each(Cost.key,function(i,v) {
if(local_cost[v]) $('.cost:eq('+(index++)+')').html(AddPoint(local_cost[v])).css(styles[v]);
});
$('#transpo_build').html(AddPoint(local_cost.usefulTransport()));
});
var $action = $('#action');
var $li = $('<li>');
$li.html('Nombre de transporteur: ');
var $span = $('<span>',{class:'time',id:'transpo_build'});
var level;
if(eg.global.page == 'resources' && build_id != 212 || eg.global.page == 'research') {
if(eg.global.page == 'research') level = Technos.get(build_id) + 1;
else level = new Build(build_id).getValue() + 1;
}
else level = 1;
var cost_level_next = new Build(build_id).getCost(level);
$span.html(AddPoint(cost_level_next.usefulTransport()));
$li.append($span);
$action.find('ul').append($li);
});
}
});
fleet_page.init();
if(eg.global.page == 'resources') {
new BuildSuggest();
$('.detail_button').click(function() {
setTimeout(function() {
if($('#detail').css('display') == 'none') $('#minesafaire').show();
else $('#minesafaire').hide();
},200);
});
}
$(function() {
try { $(ActionManager); } catch(e) { eg.log(e,'ActionManager'); }
if(eg.global.page == 'overview') {
new Changelog();
stock_ress.init();
}
});
}
}
} catch(e) {
eg.log(e,'script');
}
})( unsafeWindow|| window);