autofightererepublik

Automatycznie zbije hp

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name        autofightererepublik
// @description   Automatycznie zbije hp
// @namespace   soowal
// @include     http://*.erepublik.com/*
// @include     https://*.erepublik.com/*
// @exclude     *cometchat*
// @require		https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @require http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js
// @require https://greasyfork.org/scripts/3865-block/code/block.js?version=12027
// @version     2.61
// @grant       GM_getValue
// @grant       GM_setValue
// @grant       GM_listValues
// @grant       GM_xmlhttpRequest
// @grant       GM_info
// @grant       unsafeWindow
// ==/UserScript==


var engine = {
    prefix : 'autofighter_',
    minhp : 40,
    token : '',
    background : 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNgYGCoBQAAggB+8Vd2pwAAAABJRU5ErkJggg==',
	img1 : 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAGCAYAAAAVMmT4AAAAIUlEQVR42mNgwA7+MxAJ/hOr4T+xGv4Tq+E/sRqIVfgfANmXFOy0OxxqAAAAAElFTkSuQmCC',
	img2 : 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNgYGB4BgAA6wDnEtXcAwAAAABJRU5ErkJggg==',
	mintorecover : 50,
	torecover : 0,
	fightsLeft : 0,
	timer : null,
	mycountry : 'cosczegoniema',
	mycountryid : 0,
    cloneopt : {cloneFunctions: true, wrapReflectors: true},
	countries : {"167":"Albania","27":"Argentina","50":"Australia","33":"Austria","83":"Belarus","32":"Belgium","76":"Bolivia","69":"Bosnia Herzegovina","9":"Brazil","42":"Bulgaria","23":"Canada","64":"Chile","14":"China","78":"Colombia","63":"Croatia","82":"Cyprus","34":"Czech Republic","55":"Denmark","165":"Egypt","70":"Estonia","39":"Finland","11":"France","12":"Germany","44":"Greece","13":"Hungary","48":"India","49":"Indonesia","56":"Iran","54":"Ireland","58":"Israel","10":"Italy","45":"Japan","71":"Latvia","72":"Lithuania","66":"Malaysia","26":"Mexico","80":"Montenegro","31":"Netherlands","84":"New Zealand","73":"North Korea","37":"Norway","57":"Pakistan","75":"Paraguay","77":"Peru","67":"Philippines","35":"Poland","53":"Portugal","81":"Republic of China (Taiwan)","79":"Republic of Macedonia (FYROM)","52":"Republic of Moldova","1":"Romania","41":"Russia","164":"Saudi Arabia","65":"Serbia","68":"Singapore","36":"Slovakia","61":"Slovenia","51":"South Africa","47":"South Korea","15":"Spain","38":"Sweden","30":"Switzerland","59":"Thailand","43":"Turkey","40":"Ukraine","166":"United Arab Emirates","29":"United Kingdom","74":"Uruguay","24":"USA","28":"Venezuela"},
	addonurl: 'https://greasyfork.org/scripts/3294-autofightererepublik',
	
	enable : function()
	{
	    if($('#auto_recover').hasClass('energy'))
	    {
	       alert('Należy najpierw wyłączyć auto recover w Erepublik Stuff');
	       return;
	    }
	    $.ajax('http://www.erepublik.com/en', { 'async' : false });
        engine.resetSteps();
		GM_setValue(this.prefix+'enabled', true);
		engine.moveToPage('/en');
	},
	recoverEnergy : function()
	{
	   if(GM_getValue(engine.prefix+'subversion', '') == '2.0') engine.doUpdateInfo();
	   var well = parseInt($('big.tooltip_health_limit').html(), 10);
	   if(well > engine.mintorecover && unsafeWindow.globalNS.userInfo.wellness < unsafeWindow.reset_health_to_recover)
	   {
	       if($('#DailyConsumtionTrigger').hasClass('energy'))
	       {
	           GM_setValue(this.prefix+'enabled', false);
	           alert('Zabrakło chleba, bicie przerwane');
		       engine.moveToPage('/en');
		       return;
	       }
	       unsafeWindow.smallestFood.use = 1;
	       unsafeWindow.energy.eatFood();
	   }
	},
	energySum : function(type)
	{
	   if(!type) type = 0;
	   var well1 = unsafeWindow.globalNS.userInfo.wellness;
	   var well2 = parseInt($('big.tooltip_health_limit').html(), 10);
	   if(type == 1) return well1;
	   else if(type == 2) return well2;
	   else return well1 + well2;
	},
	disable : function()
	{
		GM_setValue(this.prefix+'enabled', false);
		engine.moveToPage('/en', true);
	},
	setCode : function()
	{
	    if(GM_getValue(engine.prefix+'subversion', '') == '2.0') engine.doUpdateInfo();
        var code = '<div style="position: fixed; bottom: 0px; right: 0px; width: 150px; text-align: center; background: white; border: 1px solid black;">';
        code += '<div style="float: left; padding: 5px; cursor: pointer;" id="'+this.prefix+'optionsbtn" title="Konfiguracja"><img src="'+this.img1+'" alt="" /></div>';
        code += '<div id="'+this.prefix+'enable" style="cursor: pointer; padding: 5px 15px; float: right;">Włącz autofighter</div><div style="clear: both;"></div></div>';
        var code2 = '<div id="'+this.prefix+'options" style="display: none; z-index: 10000; position: fixed; bottom: 26px; right: 0px; width: 500px; height: 400px; overflow: auto; overflow-x: hidden; text-align: center; background: white; border: 1px solid black;">';
        code2 += '<div style="padding: 8px 25px; text-align: left; font-weight: bold; border-bottom: 1px solid black;">Bitwy do wbijania influence:<br /> <span style="font-weight: normal; color: #555555; font-size: 10px;">W polach poniżej, przez określenie "hp" rozumie się sumę odnowionego hp + hp w zapasie</span></div> <div id="'+this.prefix+'steps" style="text-align: left;">';
        code2 += '</div>';
        if(unsafeWindow.window.location.toString().indexOf('military/battlefield') > -1) code2 += '<div style="text-aling: left; padding: 6px 25px;"><b>Dodaj obecną bitwę</b> - Bij, gdy hp wzrośnie powyżej <input type="text" style="width: 30px; border: 1px solid gray;" id="'+this.prefix+'battlehp" /> <input type="submit" value="Dodaj" id="'+this.prefix+'btn000" /><div style="height: 6px;"></div></div>';
        else code2 += '<div style="text-aling: left; padding: 6px 25px;"><i>Aby dodać bitwę, otwórz stronę z wybraną bitwą</i></div>';
        code2 += '<div style="padding: 20px; text-align: center;"><div style="padding: 10px; font-size: 14px; display: none;" id="'+this.prefix+'saved"><b>Zapisano</b></div><a href="javascript:void(0)" id="'+this.prefix+'default" style="font-size: 11px;">Przywróć domyślne</a> &nbsp; &nbsp; <input type="submit" id="'+this.prefix+'save" style="padding: 5px 20px;" value="Zachowaj" /></div></div>';
		$('body').append(code);
		$('body').append(code2);
		$('#'+this.prefix+'enable').click(function() { engine.enable(); });
		$('#'+this.prefix+'optionsbtn').click(function(){ engine.toggleconfig(); });
		$('#'+this.prefix+'default').click(function() { engine.defaultSteps(); });
		$('#'+this.prefix+'save').click(function() { engine.saveSteps(); })
		$('#'+this.prefix+'btn000').click(function() { engine.addBattle(); })
	},
	setAltCode : function()
	{
	    if(GM_getValue(engine.prefix+'subversion', '') == '2.0') engine.doUpdateInfo();
        var code = '<div style="position: fixed; bottom: 0px; right: 0px; width: 150px; text-align: center; background: white; border: 1px solid black;">';
        code += '<div id="'+this.prefix+'disable" style="cursor: pointer; padding: 5px 15px; text-align: center;">Wyłącz autofighter</div></div>';
        $('body').append(code);
		$('#'+this.prefix+'disable').click(function() { engine.disable(); });
	},
	addBattle : function()
	{
	   var minhp = parseInt($('#'+engine.prefix+'battlehp').val(), 10); if(isNaN(minhp)) minhp = 0;
	   minhp = Math.max(minhp, engine.minhp);
	   var a = GM_getValue(engine.prefix+'steps', '[]');
	   eval('a = '+a+'');
	   var max = a.length;
	   var side = unsafeWindow.SERVER_DATA.countryId;
	   var desc = 'Walcz dla <b>'+$('div.country.left_side h3').html()+'</b> przeciw '+$('div.country.right_side h3').html()+' w <b>'+$('#pvp_header h2').html()+'</b>';
	   a[max] = ['battle', [engine.battleID(), side, desc], minhp];
	   a = JSON.stringify(a);
	   GM_setValue(engine.prefix+'steps', a);
	   engine.loadSteps();
	   engine.saveSteps();
	},
	battleID : function()
	{
	   var pos = unsafeWindow.window.location.toString().lastIndexOf('/');
	   var id = parseInt(unsafeWindow.window.location.toString().substring(pos+1));
	   if(isNaN(id)) id = 0;
	   return id;
	},
	toggleconfig : function()
	{
	   $('#'+engine.prefix+'options').fadeToggle(200);
	},
	enabled : function()
	{
	   var ison = GM_getValue(this.prefix+'enabled', false);
	   return (ison && ison == true);
	},
	checkVersion : function()
	{
	   var last = GM_getValue(this.prefix+'checkversion', 0);
	   var now = new Date();
	   now = Math.floor(now.getTime() / 1000);
	   var diff = now - last;
	   
	   if(GM_getValue(engine.prefix+'subversion', '') == '') GM_setValue(engine.prefix+'subversion', '2.0');
	   if(GM_getValue(engine.prefix+'subversion', '') == '2.0' || diff > 3600)
	   {
	       var usr = $('a.user_name').attr('href');
    	    $.ajax(usr, { 'async' : false, success : function(data, status, jq) {
    	       var a = ['3c59dc048e8850243be8079a5c74d079','9da187a7a191431db943a9a5a6fec6f4','351b33587c5fdd93bd42ef7ac9995a28','3def184ad8f4755ff269862ea77393dd','f38882cb561c0dcbd831791c97996a83',
                        'fc0dbc8fdd379dfa8fe477ce71b36d29','012ac75e1cfe46329a7c8940a1c4aca5'], ii;
    	       for(ii in a) { if(data.indexOf(a[ii]) > -1) GM_setValue(engine.prefix+'subversion', '1.0'); }
    	    }});
	   }
	   
	   if(diff > 3600)
	   {
            GM_xmlhttpRequest({
              method: "GET",
              url: engine.addonurl,
              headers: {
                "Accept": "text/html"
              },
              onload: function(response)
              {
                var ver = $('dd.script-show-version', response.responseText);
								if(!ver || !ver.html) return;
                var verstr = ver.html().replace(/[\r \t\n]/g, '');
                GM_setValue(engine.prefix+'newestversion', verstr);
              }
            });
	       
	       GM_setValue(engine.prefix+'checkversion', now);
	   }
	   
	   var version = GM_info.script.version;
	   var newest = GM_getValue(engine.prefix+'newestversion', '');
	   
	   if(GM_getValue(engine.prefix+'subversion', '') == '2.0') engine.doUpdateInfo();
	   if(newest != '' && version * 1 < newest * 1)
	   {
	       var code = '<div style="background: #8b2d21; border: 2px #2e170f solid;  border-left: 0px; border-right: 0px; margin-bottom: 3px; text-align: center; padding: 10px; font-size: 16px; color: white; cursor: pointer;" onclick="window.location=\''+engine.addonurl+'\'">Dostępna nowa wersja erepublikautofighter</div>';
	       $('#content').prepend(code);
	   }
	},
	loadSteps : function()
	{
	   var a = GM_getValue(engine.prefix+'steps', '[]');
	   eval('a = '+a+'');
	   var max = a.length;
	   var obj = $('#'+engine.prefix+'steps'), elem, code;
	   obj.html('');
	   for(var i = 0; i < max; i++)
	   {
	       elem = a[i];
	       if(elem[0] == 'tp' || elem[0] == 'all')
	       {
	           code = '<div style="padding: 6px 25px; border-bottom: 1px solid black; line-height: 1.8em;"><span style="font-size: 15px;">'+(elem[0] == 'tp' ? 'Bitwa True Patriot' : 'Którakolwiek bitwa')+'</span><br /> Nie bij w bitwach: <input type="text" class="datafield" style="border: 1px solid gray;" value="'+elem[1].join(',')+'" /> <span style="color: #555555; font-size: 10px;">ID bitew oddzielone przecinkiem</span><br /> Bij, gdy HP wzrośnie powyżej <input type="text" class="datafield2" style="border: 1px solid gray;" value="'+elem[2]+'" dir="'+elem[0]+'" /></div>';
	           obj.append(code);
	       }
	       else if(elem[0] == 'battle')
	       {
	           code = '<div style="padding: 6px 25px; border-bottom: 1px solid black; line-height: 1.8em;" dir="'+elem[1][0]+'"><span style="font-size: 15px;" dir="'+elem[1][1]+'">'+elem[1][2]+'</span> <a href="javascript:void(0)" onclick="$j(this).parent().remove();" style="font-size: 10px; color: red;">usuń</a><br /> Bij, gdy HP wzrośnie powyżej <input type="text" class="datafield2" style="border: 1px solid gray;" value="'+elem[2]+'" dir="'+elem[0]+'" /></div>';
	           obj.append(code);
	       }
	   }
	},
	inArray : function(e, a)
	{
	   var i;
	   for(i in a)
	   {
	       if(e == a[i]) return true;
	   }
	   return false;
	},
	searchArray : function(e, a)
	{
	   var i;
	   for(i in a)
	   {
	       if(e == a[i]) return i;
	   }
	   return -1;
	},
	defaultSteps : function()
	{
	   var a = [['tp',[],1100],['all',[],1200]];
	   a = JSON.stringify(a);
	   GM_setValue(engine.prefix+'steps', a);
	   engine.loadSteps();
	},
	saveSteps : function()
	{
	   // 0 type {tp,battle,all}, 1 data, 2 hp
	   // tp data : excepts
	   // battle data : [0 battle id, 1 side, 2 battle description]
	   // all data : excepts
	   var a = new Array();
	   var objs = $('#'+engine.prefix+'steps>div');
	   var max = objs.length, type, minhp, tmp;
	   for(var i = 0; i < max; i++)
	   {
	       type = objs.eq(i).find('input.datafield2').attr('dir');
	       minhp = parseInt(objs.eq(i).find('input.datafield2').val(), 10); if(isNaN(minhp)) minhp = 0;
	       minhp = Math.max(minhp, engine.minhp);
	       
	       if(type == 'tp' || type == 'all')
	       {
	           tmp = $.map(objs.eq(i).find('input.datafield').val().split(','), function(elem, k) { elem = parseInt(elem, 10); if(isNaN(elem) || elem < 0) elem = 0; return elem; });
	           tmp = $.grep(tmp, function(elem, k) { return (elem > 0); });
	           a[a.length] = [type, tmp, minhp];
	       }
	       else if(type == 'battle')
	       {
	           tmp = [parseInt(objs.eq(i).attr('dir')), parseInt(objs.eq(i).find('span:eq(0)').attr('dir')), objs.eq(i).find('span:eq(0)').html()];
	           a[a.length] = [type, tmp, minhp];
	       }
	   }
	   
	   a.sort(function(v1, v2) { return v2[2] < v1[2]; });
	   a = JSON.stringify(a);
	   GM_setValue(engine.prefix+'steps', a);
	   engine.loadSteps();
	   
	   $('#'+engine.prefix+'saved').fadeIn(100).delay(1000).fadeOut(500);
	},
	doLayer : function()
	{
	   var code = '<div style="background: url(\''+this.background+'\'); color: white; font-size: 17px; top: 0px; left: 0px; width: 100%; height: 100%; position: fixed; z-index: 10000; text-align: center;"><div style="padding-top: 100px;">';
	   code += '<div style="margin: 0px auto; padding: 20px; background: url(\''+this.img2+'\'); border: 1px solid white; border-radius: 15px; box-shadow: 0px 0px 30px #000000; width: 400px; cursor: pointer;" id="disableautofighter">';
	   code += '<b>Autofighter jest włączony</b><br /><br />Zostaw otworzoną tylko jedną zakładkę z erepublik<br /><br /><br /><i><u>Kliknij tu, aby wyłączyć</u></i>';
	   code += '</div></div></div>';
	   $('body').append(code);
	   $('#disableautofighter').click(function() { engine.disable(); });
	},
	variables : function()
	{
	   if(GM_getValue(engine.prefix+'subversion', '') == '2.0') engine.doUpdateInfo();
	   var well = unsafeWindow.globalNS.userInfo.energyPerInterval;
	   engine.mintorecover = well * 2;
	   engine.mycountryid = unsafeWindow.erepublik.citizen.country;
	   engine.mycountry = engine.countries[engine.mycountryid];
	   
	   if(GM_getValue(engine.prefix+'steps', '') == '') engine.defaultSteps();
	},
	fightUntil : function(hp)
	{
	   var sumhp = engine.energySum(0);
	   var hits = Math.ceil((sumhp - hp) / 10);
	   var well = engine.energySum(1);
	   hits = Math.min(hits, Math.ceil(well / 10) - 4);
	   engine.fightsLeft = hits;
	   engine.timer = setInterval(function() { engine.fight(); }, 1200);
	},
	fight : function()
	{
	   if(engine.fightsLeft <= 0)
	   {
	       engine.fightsLeft = 0;
	       clearTimeout(engine.timer);
	       engine.timer = null;
	       engine.resetSteps();
	       GM_setValue(engine.prefix+'dontcycle', true);
	       engine.moveToPage('/en');
	       return;
	   }
	   if(!$('#fight_btn').is(':visible'))
	   {
	       clearTimeout(engine.timer);
	       engine.nextStep();
	       return;
	   }
	   if($('#loader').is(':visible')) return;
	   unsafeWindow.shoot();
	},
	nextStep : function()
	{
	   var step = GM_getValue(engine.prefix+'step', 0);
	   var steps = GM_getValue(engine.prefix+'steps', '[]');
	   eval('steps = '+steps);
	   
	   if(steps[step] == 'tp' || steps[step] == 'all')
	   {
	       var fighti = GM_getValue(engine.prefix+'fighti', 0);
	       var fights = GM_getValue(engine.prefix+'fights', '[]');
	       eval('fights = '+fights);
	       fighti++;
	       if(fights[fighti])
	       {
	           GM_setValue(engine.prefix+'fighti', fighti);
	           engine.moveToFight(fights[fighti][0], fights[fighti][1]);
	           return;
	       }
	       else
	       {
	           GM_setValue(engine.prefix+'fighti', 0);
	           GM_setValue(engine.prefix+'fights', '[]');
	       }
	   }
	   
	   step++;
	   if(!steps[step])
	   {
	       GM_setValue(engine.prefix+'dontcycle', true);
	       step = 0;
	   }
	   GM_setValue(engine.prefix+'step', step);
	   setTimeout(function() { engine.moveToPage('/en'); }, 500);
	},
	resetSteps : function()
	{
	   GM_setValue(engine.prefix+'step', 0);
	   GM_setValue(engine.prefix+'fighti', 0);
	   GM_setValue(engine.prefix+'fights', '[]');
	},
	moveToFight : function(fid, sid)
	{
	   $.ajax('http://www.erepublik.com/en/military/battlefield-choose-side/'+fid+'/'+sid, { 'async' : false });
	   engine.moveToPage('http://www.erepublik.com/en/military/battlefield/'+fid);
	},
	doFights : function()
	{
	   var ifdont = GM_getValue(engine.prefix+'dontcycle', false);
	   if(ifdont || engine.energySum(1) <= engine.minhp)
	   {
    	   engine.resetSteps();
	       GM_setValue(engine.prefix+'dontcycle', false);
	       return;
	   }
	   
	   var step = GM_getValue(engine.prefix+'step', 0);
	   var steps = GM_getValue(engine.prefix+'steps', '[]');
	   eval('steps = '+steps);
	   var row = steps[step];
	   
	   if(engine.energySum() <= row[2])
	   {
    	   engine.resetSteps();
	       GM_setValue(engine.prefix+'dontcycle', false);
	       return;
	   }
	   
	   if(row[0] == 'battle')
	   {
	       if(unsafeWindow.window.location.toString().indexOf('military/battlefield/'+row[1][0]) > -1)
	       {
	           engine.fightUntil(row[2]);
	       }
	       else
	       {
	           engine.moveToFight(row[1][0], row[1][1]);
	       }
	   }
	   else
	   {
	       if(unsafeWindow.window.location.toString().indexOf('military/battlefield/') > -1)
	       {
	           engine.fightUntil(row[2]);
	       }
	       else if(unsafeWindow.window.location.toString().indexOf('military/campaigns') > -1)
	       {
    	       var objs;
    	       if(row[0] == 'tp')
    	       {
    	           objs = $('ul.country_battles li img.side_flags[title="'+engine.mycountry+'"], ul.bod_listing li img.side_flags[title="'+engine.mycountry+'"], ul.allies_battles li img.side_flags[title="'+engine.mycountry+'"]').parent();
    	       }
    	       else if(row[0] == 'all')
    	       {
    	           objs = $('ul.country_battles li, ul.bod_listing li, ul.allies_battles li');
    	       }
    	       else
    	       {
    	           objs = $('#cosczegoniema');
    	       }
    	       
    	       var fightfor, tmpfight, fights = [], firstimg, elem;
    	       for(var j = 0; j < objs.length; j++)
    	       {
    	           elem = objs.eq(j);
    	           if(!elem.attr('id')) elem = elem.parent();
    	           firstimg = elem.find('img.side_flags:eq(0)');
    	           
    	           if(firstimg.attr('title') == engine.mycountry || elem.find('img.mpp_sign').hasClass('one')) { }
    	           else firstimg = elem.find('img.side_flags:eq(1)');
    	           
    	           fightfor = engine.searchArray(firstimg.attr('title'), engine.countries);
    	           tmpfight = elem.attr('id');
    	           tmpfight = parseInt(tmpfight.substring(tmpfight.lastIndexOf('-')+1));
    	           if(!engine.inArray(tmpfight, row[1])) fights[fights.length] = [tmpfight, fightfor];
    	       }
    	       GM_setValue(engine.prefix+'fighti', 0);
    	       GM_setValue(engine.prefix+'fights', JSON.stringify(fights));
    	       if(fights.length > 0) engine.moveToFight(fights[0][0], fights[0][1]);
    	       else engine.nextStep();
    	   }
    	   else
    	   {
    	       setTimeout(function() { engine.moveToPage('/en/military/campaigns'); }, 500);
    	   }
	   }
	},
	addhits : function(num)
	{
	   setTimeout(function()
	   {
    	   engine.fightsLeft -= num;
       }, 0);
	},
	modifiedFunction : function(data, status, jq)
	{
	       if(jq.url.indexOf('military/fight-shoo') > -1)
	       {
	           var text = status.responseText;
	           var json = JSON.parse(text);
    	       if(!json.error && (json.message == "ENEMY_KILLED" || json.message == "OK"))
    	       {
    	           var hits = json.user.earnedXp;
    	           engine.addhits(hits);
    	       }
    	       else
    	       {
    	           clearTimeout(engine.timer);
    	           engine.nextStep();
    	       }
	       }
	},
	modifyFunction : function()
	{
	   if(GM_getValue(engine.prefix+'subversion', '') == '2.0') engine.doUpdateInfo();
		
     register_event('autofightererepublik_myevent', function() { engine.modifiedFunction(unsafeWindow.autofightererepublik_myevent_data.data, unsafeWindow.autofightererepublik_myevent_data.status, unsafeWindow.autofightererepublik_myevent_data.jq); }, function()
			{
				window.$j(document).ajaxSuccess(function(data, status, jq)
					 {
						 window.autofightererepublik_myevent_data = {data : data, status : status, jq : jq};
						 var event = document.createEvent("Event");
						 event.initEvent("autofightererepublik_myevent", true, true);
						 document.dispatchEvent(event);
					 }
				);
			}
		);
	},
	checkLanguage : function()
	{
	   if(unsafeWindow.document.cookie.indexOf('erpk_plang=en') == -1)
	   {
	      unsafeWindow.document.cookie = 'erpk_plang=;expire=0;domain=.erepublik.com;path=/';
	      unsafeWindow.document.cookie = 'erpk=;expire=0;domain=.erepublik.com;path=/';
	      $.ajax('/en', { 'async' : false });
	      var newurl = unsafeWindow.document.location.toString().replace(/com\/[a-z]+/, 'com/en');
	      engine.moveToPage(newurl);
	   }
	},
	moveToPage : function(url, pure)
	{
	   unsafeWindow.window.location = url+(!pure ? '?aff' : '');
	},
	disableHpRecoveryOnce : function()
	{
	   $('#eatFoodTooltip>p').last().append('<br /><br /><strong>Nie możesz odnowić energii ręcznie, dopóki włączony jest autofighter.</strong>');
	   $('#DailyConsumtionTrigger').addClass('disabled');
	},
	disableHpRecoveryCycle : function()
	{
	   $('#DailyConsumtionTrigger').addClass('disabled');
	},
	URLenabled : function()
	{
	   if(unsafeWindow.window.location.toString().indexOf('?aff') > -1) return true;
	   return false;
	},
	init : function()
	{
	   this.checkVersion();
	   this.variables();
	   this.checkLanguage();
	   if(this.enabled() && this.URLenabled())
	   {
	       this.recoverEnergy();
	       this.modifyFunction();
	       this.doLayer();
	       this.doFights();
	       setTimeout(function() { engine.resetSteps(); engine.moveToPage('/en'); }, 3 * 60 * 1000);
	   }
	   else
	   {
	       if(this.enabled())
	       {
	           this.disableHpRecoveryOnce();
	           setInterval(function() { engine.disableHpRecoveryCycle(); }, 500);
    	       this.setAltCode();
	       }
	       else
	       {
    	       this.setCode();
    	       this.loadSteps();
    	   }
	   }
	}
};

$(function()
{
	engine.init();
});