// ==UserScript==
// @run-at document-idle
// @name Mafia Reloaded Dashboard
// @namespace https://mafiareloaded.com/game/
// @description Dashboard
// @include https://mafiareloaded.com/game/*
// @include https://apps.facebook.com/*
// @grant GM_addStyle
// @grant GM_openInTab
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
//var Bar = document.getElementsByClassName("_2t-f")[0];
//console.log(document);
//alert(getCookieTest());
head = document.getElementsByTagName('head')[0];
//console.log(head);
if ( head != null )
{
style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = "#columns { list-style-type: none; margin: 10; padding: 0; border-width: 2px; width: 788px; font-size: 11px; top: 20px; position: relative; }";
head.appendChild(style);
style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = "column { width: 100px; height: 100px; padding-bottom: 5px; padding-top: 5px; text-align: center; cursor: move; }";
head.appendChild(style);
style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = "#columnheader { cursor: auto !important; background: linear-gradient(to bottom,#888,#444 45%,#444 55%,#333) #555 !important; }";
head.appendChild(style);
style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = "#columns li { height: 20px; width: 750px; display: inline-block; color: white; background: radial-gradient(#112132 30%,#04080b) #0a141f; padding: 5px; border-radius: 10px; border: 2px solid #224567; cursor: move; }";
head.appendChild(style);
style = document.createElement('style');
style.type = 'text/css';
//style.innerHTML = "#columns li span{ height: 30px; width: 150px; color: black; background-color: #ccc; padding: 5px; border-bottom: 1px solid #ddd; border-radius: 10px; border: 2px solid #666666; }";
style.innerHTML = "#columns li span{ height: 20px; display: inline-block; width: 80px; padding: 5px; }";
head.appendChild(style);
style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = "#columns li.over { border-top: 2px solid #099; }";
head.appendChild(style);
style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = ".tabcontent { display: none; height: 450px; background: #111; top: 42pt !important; border-radius: 6pt; position: relative !important; border: solid 1pt #222 !important; width:800px; ;padding-left:10pt !important; padding-top: 12pt !important; }";
head.appendChild(style);
style = document.createElement('style');
style.type = 'text/css';
var sStyle = "#myDemonBox { position: absolute; background: black; color: white; border: 2px solid #099; border-radius: 5px; padding: 10px ; top: 50px; left:10px; width: 300px; height: 420px; resize: both; overflow:hidden; ";
sStyle += "z-Index: 999; font-size: 14.667px !important; font-weight: 1; font-family: Trebuchet MS,Tahoma,Roboto,Arial,Helvetica,sans-serif,Arial Unicode MS,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji !important;}";
style.innerHTML = sStyle;
head.appendChild(style);
style = document.createElement('style');
style.type = 'text/css';
var sStyle = "#myDemonBox label { height:30px; display: inline-block !important; font-size: 14.667px !important; font-weight: 1; font-family: Trebuchet MS,Tahoma,Roboto,Arial,Helvetica,sans-serif,Arial Unicode MS,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji !important;}";
style.innerHTML = sStyle;
head.appendChild(style);
style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = "#myDemonBoxheader { padding: 10px; cursor: move; background: #222; margin: -10px; height:22px; }";
head.appendChild(style);
style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = ".myBtn { color: white; font-weight: 700;line-height: 17px;border-radius: 6px;padding: 6px 10px;background: linear-gradient(to bottom,#333,#666 45%,#333 55%,#222) #333;box-shadow: inset #777 0 0 2px 1px;text-shadow: none;-moz-user-select: none; }";
head.appendChild(style);
}
this.$ = this.jQuery = jQuery.noConflict(true);
// ************************* CONST CONSOLE OBJECT *********************
var CONST_ConsoleObject = "LyQ";
var CONST_vq = "ATb";
var CONST_Health = "aaa";
//var CONST_Health = "Skm";
var CONST_TotalHealth = "LRa";
var CONST_Energy = "QkC";
var CONST_TotalEnergy = "yLQ";
var CONST_Stamina = "TOP";
var CONST_TotalStamina = "pjl";
var CONST_Experience = "VZo";
var CONST_Level = "bkN";
var CONST_SkillTokens = "";
var CONST_Cash = "";
var CONST_StaminaSpanId = "id-Ewt";
var CONST_EnergySpanId = "id-sIH";
var CONST_HealthSpanId = "id-xwY";
var CONST_AttackerHealth = "Skm";
var CONST_DefenderHealth = "";
var CITY = new Array();
var CHAPTER = new Array();
var MY_LEVEL;
var myJobVar;
var teller;
var nCash;
var bJobEvent;
var CHECKED_30Jobs = 0;
var CHECKED_CriticalHits = 1;
var CHECKED_10Opponents = 2;
var CHECKED_AutoBurn = 3;
var CHECKED_Stamina = 4;
var CHECKED_Energy = 5;
var CHECKED_AutoCollect = 6;
var CHECKED_AutoBurnMastery = 7;
var CHECKED_AutoDeposit = 8;
var PROCESS_Fight = 0;
var PROCESS_Burn = 1;
var PROCESS_Mastery = 2;
// ************************* END CONST CONSOLE OBJECT *****************
// **************************
var dragSrcEl = null;
function handleDragStart(e) {
// Target (this) element is the source node.
dragSrcEl = this;
e.dataTransfer.effectAllowed = 'move';
e.dataTransfer.setData('text/html', this.outerHTML);
this.classList.add('dragElem');
}
function handleDragOver(e) {
if (e.preventDefault) {
e.preventDefault(); // Necessary. Allows us to drop.
}
this.classList.add('over');
e.dataTransfer.dropEffect = 'move'; // See the section on the DataTransfer object.
return false;
}
function handleDragEnter(e) {
// this / e.target is the current hover target.
}
function handleDragLeave(e) {
this.classList.remove('over'); // this / e.target is previous target element.
}
function handleDrop(e) {
// this/e.target is current target element.
if (e.stopPropagation) {
e.stopPropagation(); // Stops some browsers from redirecting.
}
// Don't do anything if dropping the same column we're dragging.
if (dragSrcEl != this) {
// Set the source column's HTML to the HTML of the column we dropped on.
//alert(this.outerHTML);
//dragSrcEl.innerHTML = this.innerHTML;
//this.innerHTML = e.dataTransfer.getData('text/html');
this.parentNode.removeChild(dragSrcEl);
var dropHTML = e.dataTransfer.getData('text/html');
this.insertAdjacentHTML('beforebegin',dropHTML);
var dropElem = this.previousSibling;
saveCookie();
initJob(false);
addDnDHandlers(dropElem);
}
this.classList.remove('over');
return false;
}
function handleDragEnd(e) {
// this/e.target is the source node.
this.classList.remove('over');
/*[].forEach.call(cols, function (col) {
col.classList.remove('over');
});*/
}
function addDnDHandlers(elem) {
elem.addEventListener('dragstart', handleDragStart, false);
elem.addEventListener('dragenter', handleDragEnter, false)
elem.addEventListener('dragover', handleDragOver, false);
elem.addEventListener('dragleave', handleDragLeave, false);
elem.addEventListener('drop', handleDrop, false);
elem.addEventListener('dragend', handleDragEnd, false);
}
// ************ draggable *****************
// ************ draggable *****************
function dragElement(elmnt) {
var pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0;
if (document.getElementById(elmnt.id + "header")) {
// if present, the header is where you move the DIV from:
document.getElementById(elmnt.id + "header").onmousedown = dragMouseDown;
} else {
// otherwise, move the DIV from anywhere inside the DIV:
elmnt.onmousedown = dragMouseDown;
}
function dragMouseDown(e) {
e = e || window.event;
e.preventDefault();
// get the mouse cursor position at startup:
pos3 = e.clientX;
pos4 = e.clientY;
document.onmouseup = closeDragElement;
// call a function whenever the cursor moves:
document.onmousemove = elementDrag;
}
function elementDrag(e) {
e = e || window.event;
e.preventDefault();
// calculate the new cursor position:
pos1 = pos3 - e.clientX;
pos2 = pos4 - e.clientY;
pos3 = e.clientX;
pos4 = e.clientY;
// set the element's new position:
elmnt.style.top = (elmnt.offsetTop - pos2) + "px";
elmnt.style.left = (elmnt.offsetLeft - pos1) + "px";
}
function closeDragElement() {
// stop moving when mouse button is released:
document.onmouseup = null;
document.onmousemove = null;
}
}
// ************ end draggable *************
// ************* APPEND ELEMENTS ******************
var bStopTimer = true;
var bStop = false;
var bStopJobs = false;
var bContinue = false;
var bDebug = false;
var myIntervalConsole;
var nIntervalConsole;
var bDoMastery = false;
var bRun = false;
var bStopJobs = true;
var myJobList;
var myJobMasteryList;
var nMasteryTeller = 0;
var IntervalMastery;
// DVETEST
var myTabBtn = document.createElement("a");
//myTabBtn.setAttribute("class","tablinks");
myTabBtn.innerText = "Dashboard";
myTabBtn.href = "#";
myTabBtn.id = "dashboard";
document.body.appendChild(myTabBtn);
myTabBtn.addEventListener( 'click', function(e){
CreateMyDiv();
}, true );
function CreateMyDiv()
{
var box = document.createElement( "div" );
box.id = "myDemonBox";
/*
box.addEventListener( 'dblclick', function () {
box.parentNode.removeChild( box );
bStopTimer = true;
}, true );
*/
box.addEventListener( 'click', function (e) {
var elem = document.getElementById('myDemonBox');
if ( elem.offsetTop < 50 ) elem.offsetTop = 50;
if ( elem.offsetLeft < 0 ) elem.offsetLeft = 0;
setCookie("DemonPos", elem.offsetTop+","+elem.offsetLeft+","+elem.offsetWidth+","+elem.offsetHeight, 365);
}, true );
document.body.appendChild( box );
setWindowPos();
// Make the DIV element draggable:
var box2 = document.createElement( "div" );
box2.id = "myDemonBoxheader";
box2.innerText = "Mafia Reloaded Dashboard";
box.appendChild(box2);
dragElement(document.getElementById("myDemonBox"));
// ******************** CONSOLE **********************
var myConsole = document.createElement("div");
//myConsole.style.border = "solid 1px white";
myConsole.style.height = "20px";
myConsole.style.top = "20px";
myConsole.style.position = "relative";
box.appendChild(myConsole);
var mySpan = document.createElement("span");
mySpan.id = "spanHealth";
mySpan.setAttribute("class","health");
mySpan.style.visibility = "hidden";
myConsole.appendChild(mySpan);
var myLbl = document.createElement("label");
myLbl.style.color = "white";
myLbl.id = "myHealthLbl";
myLbl.setAttribute('class', 'mylab');
myLbl.style.visibility = "hidden";
myLbl.innerText = "0 / 0";
mySpan.appendChild(myLbl);
var t = document.createTextNode("\u00A0\u00A0\u00A0"); // Create a text node
myConsole.appendChild(t);
var mySpan = document.createElement("span");
mySpan.id = "spanEnergy";
mySpan.setAttribute("class","energy");
mySpan.style.visibility = "hidden";
myConsole.appendChild(mySpan);
var myLbl = document.createElement("label");
myLbl.style.color = "white";
myLbl.id = "myEnergyLbl";
myLbl.setAttribute('class', 'mylab');
myLbl.style.visibility = "hidden";
myLbl.innerText = "0 / 0";
mySpan.appendChild(myLbl);
var t = document.createTextNode("\u00A0\u00A0\u00A0"); // Create a text node
myConsole.appendChild(t);
var mySpan = document.createElement("span");
//id-YWi
mySpan.id = "spanStamina";
mySpan.setAttribute("class","stamina");
mySpan.style.visibility = "hidden";
myConsole.appendChild(mySpan);
var myLbl = document.createElement("label");
myLbl.style.color = "white";
myLbl.id = "myStaminaLbl";
myLbl.setAttribute('class', 'mylab');
myLbl.style.visibility = "hidden";
myLbl.innerText = "0 / 0";
mySpan.appendChild(myLbl);
var t = document.createTextNode("\u00A0\u00A0\u00A0"); // Create a text node
myConsole.appendChild(t);
var mySpan = document.createElement("span");
mySpan.id = "spanLevel";
mySpan.setAttribute("class","level");
mySpan.style.visibility = "hidden";
myConsole.appendChild(mySpan);
var t = document.createTextNode("\u00A0\u00A0\u00A0"); // Create a text node
myConsole.appendChild(t);
var mySpan = document.createElement("span");
mySpan.id = "spanExperience";
mySpan.setAttribute("class","experience");
mySpan.style.visibility = "hidden";
myConsole.appendChild(mySpan);
var myLbl = document.createElement("label");
myLbl.style.color = "white";
myLbl.id = "myExperienceLbl";
myLbl.setAttribute('class', 'mylab');
myLbl.style.visibility = "hidden";
myLbl.innerText = "0 / 0";
mySpan.appendChild(myLbl);
var t = document.createTextNode("\u00A0\u00A0\u00A0"); // Create a text node
myConsole.appendChild(t);
var mySpan = document.createElement("span");
mySpan.id = "spanCash";
mySpan.innerText = "Cash ";
//mySpan.setAttribute("class","");
mySpan.style.visibility = "hidden";
myConsole.appendChild(mySpan);
var myLbl = document.createElement("label");
//myLbl.style.color = "white";
myLbl.id = "myCashLbl";
myLbl.setAttribute('class', 'cash');
myLbl.style.visibility = "hidden";
myLbl.innerText = "$0";
mySpan.appendChild(myLbl);
var myLbl = document.createElement("label");
myLbl.id = "ProcessStatus";
//myLbl.border = "solid 1px white";
myLbl.style.height = "10px";
myLbl.setAttribute("class","my");
myLbl.style.visibility = "hidden";
myLbl.innerText = "";
myConsole.appendChild(myLbl);
var myLbl = document.createElement("label");
myLbl.id = "Process";
//myLbl.border = "solid 1px white";
myLbl.style.width = "50px";
myLbl.style.height = "10px";
myLbl.setAttribute("class","my");
//myLbl.style.visibility = "hidden";
myLbl.innerText = "";
myConsole.appendChild(myLbl);
// ******************** END CONSOLE **********************
// ********************************* TABS *****************************************
var myTabDiv = document.createElement("div");
myTabDiv.style.top = "40pt";
myTabDiv.style.width = "80%";
myTabDiv.style.position = "relative";
myTabDiv.setAttribute("class","tabs");
var myTabBtn = document.createElement("a");
myTabBtn.setAttribute("class","tablinks");
myTabBtn.innerText = "Main";
myTabBtn.href = "#";
myTabBtn.id = "tabmain";
myTabDiv.appendChild(myTabBtn);
myTabBtn.addEventListener( 'click', function(e){
doTab(e,"main");
}, true );
var myTabBtn = document.createElement("a");
myTabBtn.setAttribute("class","tablinks");
myTabBtn.innerText = "Fight rival mobsters";
myTabBtn.href = "#";
myTabBtn.id = "tabfight";
myTabDiv.appendChild(myTabBtn);
myTabBtn.addEventListener( 'click', function(e){
doTab(e,"fight");
}, true );
var myTabBtn = document.createElement("a");
myTabBtn.setAttribute("class","tablinks");
myTabBtn.innerText = "Energy / Stamina Burner";
myTabBtn.href = "#";
myTabBtn.id = "tabjobs";
myTabDiv.appendChild(myTabBtn);
myTabBtn.addEventListener( 'click', function(e){
doTab(e,"jobs");
}, true );
box.appendChild(myTabDiv);
var myTabBtn = document.createElement("a");
myTabBtn.setAttribute("class","tablinks");
myTabBtn.innerText = "Mastery";
myTabBtn.href = "#";
myTabBtn.id = "tabmastery";
myTabDiv.appendChild(myTabBtn);
myTabBtn.addEventListener( 'click', function(e){
doTab(e,"mastery");
}, true );
box.appendChild(myTabDiv);
var myTabBtn = document.createElement("a");
myTabBtn.setAttribute("class","tablinks");
myTabBtn.innerText = "Options";
myTabBtn.href = "#";
myTabBtn.id = "taboptions";
myTabDiv.appendChild(myTabBtn);
myTabBtn.addEventListener( 'click', function(e){
doTab(e,"options");
}, true );
box.appendChild(myTabDiv);
// ********************************* END TABS *************************************
// *************** TAB MAIN ************
var myTabDiv = document.createElement("div");
myTabDiv.style.top = "90px";
myTabDiv.style.position = "relative";
myTabDiv.style.padding = "10px";
myTabDiv.style.display = "block";
myTabDiv.setAttribute("class","tabcontent");
myTabDiv.id = "main";
box.appendChild(myTabDiv);
var fs = document.createElement("fieldset");
fs.style.boxSizing = "border-box";
fs.style.width = "25%";
fs.style.height = "180px";
fs.style.float = "left";
fs.style.borderRadius = "5px";
var legend = document.createElement ("legend");
legend.innerHTML = "Daily Checklist";
legend.style.padding = "5px";
fs.appendChild (legend);
myTabDiv.appendChild(fs);
var mySelect = document.createElement("input");
mySelect.setAttribute("class","myCheckbox");
mySelect.id = "Check30Jobs";
mySelect.type = "checkbox";
fs.appendChild(mySelect);
mySelect.addEventListener( 'click', function(e){
doCheckbox(document.getElementById("Check30Jobs"),"30Jobs");
}, true );
var t = document.createTextNode("\u00A0"); // Create a text node
fs.appendChild(t);
var myLabel = document.createElement("label");
myLabel.setAttribute("class", "mylab" );
myLabel.innerText = "Perform 30 jobs";
fs.appendChild(myLabel);
var para = document.createElement("br");
fs.appendChild(para);
var mySelect = document.createElement("input");
mySelect.setAttribute("class","myCheckbox");
mySelect.id = "CheckCriticalHits";
mySelect.type = "checkbox";
fs.appendChild(mySelect);
mySelect.addEventListener( 'click', function(e){
doCheckbox(document.getElementById("CheckCriticalHits"),"CriticalHits");
}, true );
var t = document.createTextNode("\u00A0"); // Create a text node
fs.appendChild(t);
var myLabel = document.createElement("label");
myLabel.setAttribute("class", "mylab" );
myLabel.innerText = "Deal 10 Critical Hits";
fs.appendChild(myLabel);
var para = document.createElement("br");
fs.appendChild(para);
var mySelect = document.createElement("input");
mySelect.setAttribute("class","myCheckbox");
mySelect.id = "Check10Opponents";
mySelect.type = "checkbox";
fs.appendChild(mySelect);
mySelect.addEventListener( 'click', function(e){
doCheckbox(document.getElementById("Check10Opponents"),"10Opponents");
}, true );
var t = document.createTextNode("\u00A0"); // Create a text node
fs.appendChild(t);
var myLabel = document.createElement("label");
myLabel.setAttribute("class", "mylab" );
myLabel.innerText = "Kill 10 Opponents";
fs.appendChild(myLabel);
var para = document.createElement("br");
fs.appendChild(para);
var para = document.createElement("br");
fs.appendChild(para);
var myBtn = document.createElement("a");
myBtn.setAttribute("class","myBtn");
myBtn.id = "CollectDaily";
myBtn.href = "#";
myBtn.innerText = "Collect";
fs.appendChild(myBtn);
myBtn.addEventListener( 'click', doCollectDaily, true );
// *************** END TAB MAIN ************
// *************** TAB FIGHT ************
var myTabDiv = document.createElement("div");
myTabDiv.style.top = "90px";
myTabDiv.style.position = "relative";
myTabDiv.style.padding = "10px";
myTabDiv.style.display = "block";
myTabDiv.setAttribute("class","tabcontent");
myTabDiv.id = "fight";
box.appendChild(myTabDiv);
var myStopScript = document.createElement("a");
myStopScript.setAttribute("class","myBtn");
myStopScript.id = "stop-script-fr";
myStopScript.href = "#";
myStopScript.innerText = "Run";
myTabDiv.appendChild(myStopScript);
myStopScript.addEventListener( 'click', ToggleFight, true );
/*
var myBtn = document.createElement("a");
myBtn.setAttribute("class","myBtn");
myBtn.id = "heal";
myBtn.href = "#";
myBtn.innerText = "Heal";
myTabDiv.appendChild(myBtn);
myBtn.addEventListener( 'click', testHeal, true );
*/
var para = document.createElement("P");
para.innerText = " ";
myTabDiv.appendChild(para);
var para = document.createElement("br");
myTabDiv.appendChild(para);
var para = document.createElement("br");
myTabDiv.appendChild(para);
var mySelect = document.createElement("input");
mySelect.id = "CheckAssignment";
mySelect.type = "checkbox";
myTabDiv.appendChild(mySelect);
/*
mySelect.addEventListener( 'click', function(e){
doCheckbox(document.getElementById("CheckAssignment"),true);
}, true );
*/
var t = document.createTextNode("\u00A0"); // Create a text node
myTabDiv.appendChild(t);
var myLabel = document.createElement("label");
myLabel.setAttribute("class", "mylab" );
myLabel.innerText = "Rivals from assignment";
myTabDiv.appendChild(myLabel);
// *********** AUTO BURN *****************
//var para = document.createElement("br");
//myTabDiv.appendChild(para);
var para = document.createElement("br");
myTabDiv.appendChild(para);
var mySelect = document.createElement("input");
mySelect.setAttribute("class","myCheckbox");
mySelect.id = "CheckAutoBurn";
mySelect.type = "checkbox";
myTabDiv.appendChild(mySelect);
mySelect.addEventListener( 'click', function(e){
doCheckbox(document.getElementById("CheckAutoBurn"),"AutoBurn");
}, true );
var t = document.createTextNode("\u00A0"); // Create a text node
myTabDiv.appendChild(t);
var myLabel = document.createElement("label");
myLabel.setAttribute("class", "mylab" );
myLabel.innerText = "Burn energy when no stamina left";
myTabDiv.appendChild(myLabel);
var para = document.createElement("br");
myTabDiv.appendChild(para);
var para = document.createElement("br");
myTabDiv.appendChild(para);
var para = document.createElement("br");
myTabDiv.appendChild(para);
// *********** END AUTO BURN *****************
var myLbl = document.createElement("label");
myLbl.style.color = "white";
myLbl.id = "myLabelTest";
myLbl.setAttribute('class', 'mylab');
myLbl.style.width = "80%";
myLbl.innerText = "";
myTabDiv.appendChild(myLbl);
var myClose = document.createElement("a");
myClose.setAttribute("class","popup-close");
myClose.setAttribute("data-id","myDemonBox");
myClose.href = "#";
myClose.innerText = "X";
box2.appendChild(myClose);
// *************** END TAB FIGHT ************
// *************** TAB JOBS ****************
myTabDiv = document.createElement("div");
myTabDiv.style.top = "90px";
myTabDiv.style.position = "relative";
myTabDiv.style.padding = "10px";
//myTabDiv.style.width = "880px";
myTabDiv.setAttribute("class","tabcontent");
myTabDiv.style.display = "none";
myTabDiv.style.position = "relative";
myTabDiv.id = "jobs";
box.appendChild(myTabDiv);
var myStopScript = document.createElement("a");
myStopScript.setAttribute("class","myBtn");
myStopScript.id = "AutoLvlstop-script";
myStopScript.href = "#";
myStopScript.innerText = "Run";
myTabDiv.appendChild(myStopScript);
myStopScript.addEventListener( 'click', function(){
bStopJobs = !bStopJobs;
doJobs();
}, true );
var myCurJobList = document.createElement("a");
myCurJobList.setAttribute("class","myBtn");
myCurJobList.id = "current-joblist";
myCurJobList.style.display = "none";
myCurJobList.href = "#";
myCurJobList.title = "Go to the jobpage, then click this link to retrieve all jobs";
myCurJobList.innerText = "Retrieve Jobs";
myTabDiv.appendChild(myCurJobList);
myCurJobList.addEventListener( 'click', function(){
getCurrentJobList();
}, true );
var t = document.createTextNode("\u00A0\u00A0\u00A0"); // Create a text node
myTabDiv.appendChild(t);
var myLbl = document.createElement("label");
//myLbl.style.border = "solid 1px white";
myLbl.style.position = "absolute";
myLbl.id = "mylvlLabel";
myLbl.setAttribute('class', 'mylab');
myLbl.innerText = "";
myTabDiv.appendChild(myLbl);
myTabDiv.appendChild(para);
var para = document.createElement("br");
myTabDiv.appendChild(para);
var fs = document.createElement("fieldset");
fs.style.boxSizing = "border-box";
fs.style.width = "65%";
fs.style.float = "left";
fs.style.borderRadius = "5px";
var legend = document.createElement ("legend");
legend.innerHTML = "Jobs";
legend.style.padding = "5px";
fs.appendChild (legend);
myTabDiv.appendChild(fs);
var sp = document.createElement("span");
sp.style.width = "65px";
sp.style.height = "30px";
sp.style.display = "inline-block";
sp.innerText = "City: ";
fs.appendChild(sp);
var cmb = document.createElement("select");
cmb.id = "curCITY";
cmb.addEventListener( 'change', function(){
initChapters(document.getElementById("curCITY").value, false);
}, true );
fs.appendChild(cmb);
var para = document.createElement("br");
fs.appendChild(para);
var sp = document.createElement("span");
sp.style.width = "65px";
sp.style.height = "30px";
sp.style.display = "inline-block";
sp.innerText = "Chapter: ";
fs.appendChild(sp);
var cmb = document.createElement("select");
cmb.id = "curCHAPTER";
cmb.addEventListener( 'change', function(){
initJobs(document.getElementById("curCHAPTER").value);
}, true );
fs.appendChild(cmb);
var para = document.createElement("br");
fs.appendChild(para);
var sp = document.createElement("span");
sp.style.width = "65px";
sp.style.height = "30px";
sp.style.display = "inline-block";
sp.innerText = "Job: ";
fs.appendChild(sp);
var cmb = document.createElement("select");
cmb.id = "curJobs";
fs.appendChild(cmb);
var t = document.createTextNode("\u00A0\u00A0\u00A0"); // Create a text node
fs.appendChild(t);
var myCurJobList = document.createElement("a");
myCurJobList.setAttribute("class","myBtn");
myCurJobList.id = "addJob";
myCurJobList.href = "#";
myCurJobList.innerText = "Add Job";
fs.appendChild(myCurJobList);
myCurJobList.addEventListener( 'click', function(){
addJob();
}, true );
var t = document.createTextNode("\u00A0\u00A0\u00A0\u00A0"); // Create a text node
fs.appendChild(t);
//var para = document.createElement("br");
//myTabDiv.appendChild(para);
var fs2 = document.createElement("fieldset");
fs2.style.boxSizing = "border-box";
fs2.style.width = "30%";
fs2.style.float = "left";
fs2.style.borderRadius = "5px";
var legend = document.createElement("legend");
legend.innerHTML = "Burn";
legend.style.padding = "5px";
fs2.appendChild (legend);
myTabDiv.appendChild(fs2);
var mySelect = document.createElement("input");
mySelect.setAttribute("class","myCheckbox");
mySelect.id = "CheckStamina";
mySelect.type = "checkbox";
fs2.appendChild(mySelect);
mySelect.addEventListener( 'click', function(e){
doCheckbox(document.getElementById("CheckStamina"),"Stamina");
}, true );
var myLbl2 = document.createElement("label");
myLbl2.innerText = " Stamina jobs";
fs2.appendChild(myLbl2);
var para = document.createElement("br");
fs2.appendChild(para);
//var t = document.createTextNode("\u00A0\u00A0\u00A0"); // Create a text node
//myTabDiv.appendChild(t);
var mySelect = document.createElement("input");
mySelect.id = "CheckEnergy";
mySelect.setAttribute("class","myCheckbox");
mySelect.type = "checkbox";
fs2.appendChild(mySelect);
mySelect.addEventListener( 'click', function(e){
doCheckbox(document.getElementById("CheckEnergy"),"Energy");
}, true );
var myLbl2 = document.createElement("label");
myLbl2.innerText = " Energy jobs";
fs2.appendChild(myLbl2);
//var para = document.createElement("br");
//myTabDiv.appendChild(para);
//var para = document.createElement("br");
//myTabDiv.appendChild(para);
// ********************************* END TAB JOBS *****************************************
// *************** TAB MASTERY ************
myTabDiv = document.createElement("div");
myTabDiv.style.top = "90px";
myTabDiv.style.position = "relative";
myTabDiv.style.padding = "10px";
//myTabDiv.style.width = "880px";
myTabDiv.setAttribute("class","tabcontent");
myTabDiv.style.display = "none";
myTabDiv.style.position = "relative";
myTabDiv.id = "mastery";
box.appendChild(myTabDiv);
var myStopScript = document.createElement("a");
myStopScript.setAttribute("class","myBtn");
myStopScript.id = "MasteryScript";
myStopScript.href = "#";
myStopScript.innerText = "Run";
myTabDiv.appendChild(myStopScript);
myStopScript.addEventListener( 'click', function(){
doMastery();
}, true );
var t = document.createTextNode("\u00A0\u00A0\u00A0"); // Create a text node
myTabDiv.appendChild(t);
var myLbl = document.createElement("label");
//myLbl.style.border = "solid 1px white";
myLbl.style.position = "absolute";
myLbl.style.left = "20px";
myLbl.style.top = "180px";
myLbl.id = "myLabelMastery";
myLbl.setAttribute('class', 'mylab');
myLbl.innerText = "";
myTabDiv.appendChild(myLbl);
var para = document.createElement("br");
myTabDiv.appendChild(para);
var para = document.createElement("br");
myTabDiv.appendChild(para);
var fs = document.createElement("fieldset");
fs.style.boxSizing = "border-box";
fs.style.width = "25%";
fs.style.float = "left";
fs.style.borderRadius = "5px";
var legend = document.createElement ("legend");
legend.innerHTML = "Chapter";
legend.style.padding = "5px";
fs.appendChild (legend);
myTabDiv.appendChild(fs);
var sp = document.createElement("span");
sp.style.width = "65px";
sp.style.height = "30px";
sp.style.display = "inline-block";
sp.innerText = "City: ";
fs.appendChild(sp);
var cmb = document.createElement("select");
cmb.id = "curCITYMastery";
cmb.addEventListener( 'change', function(){
initChapters(document.getElementById("curCITYMastery").value, true);
}, true );
fs.appendChild(cmb);
var para = document.createElement("br");
fs.appendChild(para);
var sp = document.createElement("span");
sp.style.width = "65px";
sp.style.height = "30px";
sp.style.display = "inline-block";
sp.innerText = "Chapter: ";
fs.appendChild(sp);
var cmb = document.createElement("select");
cmb.id = "curCHAPTERMastery";
//cmb.addEventListener( 'change', function(){
// initJobs(document.getElementById("curCHAPTERMastery").value);
//}, true );
fs.appendChild(cmb);
var fs = document.createElement("fieldset");
fs.style.boxSizing = "border-box";
fs.style.width = "50%";
fs.style.float = "left";
fs.style.borderRadius = "5px";
var legend = document.createElement ("legend");
legend.innerHTML = "Options";
legend.style.padding = "5px";
fs.appendChild (legend);
myTabDiv.appendChild(fs);
var mySelect = document.createElement("input");
mySelect.setAttribute("class","myCheckbox");
mySelect.id = "CheckAutoCollect";
mySelect.type = "checkbox";
fs.appendChild(mySelect);
mySelect.addEventListener( 'click', function(e){
doCheckbox(document.getElementById("CheckAutoCollect"),"AutoCollect");
}, true );
var t = document.createTextNode("\u00A0"); // Create a text node
fs.appendChild(t);
var myLabel = document.createElement("label");
myLabel.setAttribute("class", "mylab" );
myLabel.innerText = "Collect Reward";
fs.appendChild(myLabel);
var para = document.createElement("br");
fs.appendChild(para);
var mySelect = document.createElement("input");
mySelect.setAttribute("class","myCheckbox");
mySelect.id = "CheckAutoBurnMastery";
mySelect.type = "checkbox";
fs.appendChild(mySelect);
mySelect.addEventListener( 'click', function(e){
doCheckbox(document.getElementById("CheckAutoBurnMastery"),"AutoBurnMastery");
}, true );
var t = document.createTextNode("\u00A0"); // Create a text node
fs.appendChild(t);
var myLabel = document.createElement("label");
myLabel.setAttribute("class", "mylab" );
myLabel.innerText = "Burn Energy / Stamina when needed to level";
fs.appendChild(myLabel);
// *************** END TAB MASTERY ************
// *************** TAB OPTIONS ************
var myTabDiv = document.createElement("div");
myTabDiv.style.top = "90px";
myTabDiv.style.position = "relative";
myTabDiv.style.padding = "10px";
myTabDiv.setAttribute("class","tabcontent");
myTabDiv.id = "options";
box.appendChild(myTabDiv);
var myLbl = document.createElement("label");
myLbl.style.color = "white";
myLbl.style.width = "200px";
myLbl.setAttribute('class', 'mylab');
myLbl.innerText = "Update console every (ms): ";
myTabDiv.appendChild(myLbl);
var myNumber = document.createElement("input");
myNumber.id = "ConsoleInterval";
myNumber.type = "number";
myNumber.value = "1000";
myNumber.step = "100";
myNumber.addEventListener( 'change', function(e){
elem = document.getElementById("ConsoleInterval");
nTmpNumber = parseInt(elem.value);
if ( nTmpNumber > 0 )
setCookie("IntervalConsole",elem.value,365);
}, true );
myTabDiv.appendChild(myNumber);
var para = document.createElement("br");
myTabDiv.appendChild(para);
var myLbl = document.createElement("label");
myLbl.style.color = "white";
myLbl.style.width = "200px";
myLbl.setAttribute('class', 'mylab');
myLbl.innerText = "Retry (nr): ";
myTabDiv.appendChild(myLbl);
var myNumber = document.createElement("input");
myNumber.id = "NrRetry";
myNumber.type = "number";
myNumber.value = "3";
myNumber.step = "1";
myNumber.addEventListener( 'change', function(e){
elem = document.getElementById("NrRetry");
nTmpNumber = parseInt(elem.value);
if ( nTmpNumber > 0 )
{
setCookie("NrRetry",elem.value,365);
nRetry = elem.value;
}
}, true );
myTabDiv.appendChild(myNumber);
var para = document.createElement("br");
myTabDiv.appendChild(para);
var para = document.createElement("br");
myTabDiv.appendChild(para);
var mySelect = document.createElement("input");
mySelect.setAttribute("class","myCheckbox");
mySelect.id = "CheckDeposit";
mySelect.type = "checkbox";
myTabDiv.appendChild(mySelect);
mySelect.addEventListener( 'click', function(e){
doCheckbox(document.getElementById("CheckDeposit"),"Deposit");
}, true );
var myLbl2 = document.createElement("label");
myLbl2.innerText = " Auto Deposit";
myTabDiv.appendChild(myLbl2);
// ************* END APPEND ELEMENTS ******************\
waitawhile();
}
var objJob;
var objFight;
var nRedID;
var nRetry = 0;
var nRetryTeller = 0;
function updateConsole()
{
if ( !bContinue )
{
var sFight = "home";
var sAction = "view";
var objConsole;
//$.post('https://mafiareloaded.com/game/req.php', {controller: sFight,action: sAction,id: nRedID,amt:"5",zhk:"8",dvg:"404",vq: CONST_vq,geq:"0"}, function(response)
$.post('https://mafiareloaded.com/game/req.php', {controller: sFight,action: sAction,dvg:"404",vq: CONST_vq}, function(response)
{
objConsole = response[CONST_ConsoleObject];
if ( bDebug ) console.log(objConsole);
setConsole( objConsole, true );
}
);
}
}
var objDaily;
function doDaily(cvalue)
{
var sController = "home";
var sAction = "hbe";
$.post('https://mafiareloaded.com/game/req.php', {controller: sController,action: sAction,id: cvalue, dvg:"404",vq: CONST_vq}, function(response)
{
//console.log(response);
if ( response.popups.length )
{
console.log(response);
objDaily = response[CONST_ConsoleObject];
}
});
}
function doCollectDaily()
{
objDaily = null;
if ( isChecked("Check30Jobs") == true )
{
setTimeout( function(){doDaily("0");},2000);
}
if ( isChecked("CheckCriticalHits") == true )
{
setTimeout( function(){doDaily("1");},4000);
}
if ( isChecked("Check10Opponents") == true )
{
setTimeout( function(){doDaily("2");},6000);
}
if ( objDaily != null )
{
setTimeout(function(){setConsole( objDaily, true );},1000);
}
}
function checkProcess(processid)
{
elem = document.getElementById("Process");
var id = elem.innerText;
if ( processid != parseInt(id) && id != "" )
{
setLabelProcess("Another process is already running", processid);
return false;
}
return true;
}
function setProcess(processid)
{
elem = document.getElementById("Process");
elem.innerText = processid;
}
function ToggleFight()
{
if ( checkProcess(PROCESS_Fight) )
{
bContinue = !bContinue;
var obj = document.getElementById("stop-script-fr");
if ( !bContinue )
{
bStopJobs = true;
obj.innerText = "Run";
setProcess(null);
//clearInterval(myJobVar);
if ( myAutoBurn > 0 ) clearInterval(myAutoBurn);
}
else
{
obj.innerText = "Stop";
if ( myIntervalConsole > 0 ) clearInterval(myIntervalConsole);
nRetryTeller = 0;
setProcess(PROCESS_Fight);
doFight();
}
}
}
function getNextID(cvalue)
{
var name = "action=twy";
var nIndex = cvalue.indexOf("twy");
if ( nIndex == -1 )
return -1;
var tmpValue = cvalue.substring(nIndex+4);
var nEndID = tmpValue.indexOf('&');
return parseInt(tmpValue.substring(3,nEndID));
}
function getRedID(cvalue)
{
var name = "action=attackview2";
var nIndex = cvalue.indexOf("attackview2");
if ( nIndex == -1 )
return -1;
var tmpValue = cvalue.substring(nIndex);
var nEndID = tmpValue.indexOf('">');
var nBeginID = tmpValue.indexOf('id=');
return parseInt(tmpValue.substring(nBeginID+3,nEndID));
}
function getYellowID(cvalue)
{
var nIndex = cvalue.indexOf("assignment");
if ( nIndex == -1 )
return -1;
var tmpValue = cvalue.substring(nIndex);
var nEndID = tmpValue.indexOf('">');
var nBeginID = tmpValue.indexOf('id=');
return parseInt(tmpValue.substring(nBeginID+3,nEndID));
}
function doFight()
{
var strMsg;
if ( bContinue )
{
doAutoDeposit();
$.post('https://mafiareloaded.com/game/req.php', { controller: "fight", action: "view", tab : "1", dvg: "404", vq: CONST_vq, geq : "0" }, function(response)
{
strMsg = response.message;
if ( !document.getElementById("CheckAssignment").checked )
{
nRedID = getRedID(strMsg);
var sController = "fight";
var sAction = "attackview2";
}
else
{
console.log("get Yellow ID");
nRedID = getYellowID(strMsg);
var sController = "assignment";
var sAction = "attackview";
}
var sDvg = "404"
if ( nRedID != -1 )
{
$.post('https://mafiareloaded.com/game/req.php', {controller: sController,action: sAction,id: nRedID,dvg:"404",vq: CONST_vq, geq:"0 "}, function(response)
{
// Log the response to the console
if ( bDebug ) console.log("get redid: " + nRedID);
//console.log(response);
strMsg = response.message;
//setLabel(strMsg,false);
objFight = response.cb.fight;
if ( objFight != null )
{
nRetryTeller = 0;
setTimeout(doPowerAttack,100);
return;
}
else
{
if ( bDebug ) console.log("object fight null");
}
})
.fail(function(response)
{
// retry x nr of times
if ( nRetryTeller < nRetry )
{
setTimeout(doFight,150);
console.log("Retry doFight: " + nRetryTeller);
nRetryTeller++;
return;
}
else
{
ToggleFight();
setLabel("An error occured, please try again",false);
return;
}
});
}
else
{
setLabel("No mobsters left",false);
ToggleFight();
return;
}
});
}
//bContinue = true;
return true;
}
function isRivalDead(obj)
{
if ( bContinue )
{
if ( obj.dead == true )
{
if ( bDebug ) console.log("Red killed: " + nRedID );
//ToggleFight();
return true;
}
else
{
setTimeout(doPowerAttack,150);
}
}
return false;
}
function doNextRival(obj)
{
strMsg = obj.redraw_data["rm-next"];
console.log(obj);
nRedID = -1;
if ( strMsg.length )
{
// check if mobsters left
nIndex = strMsg.indexOf("action=deposit");
if ( nIndex != -1 )
{
setLabel("No mobsters left",false);
ToggleFight();
return;
}
console.log("do next rival");
var sController = "fight";
if ( isChecked("CheckAssignment") )
var sType = "2";
else
var sType = "0";
var sAction = "nextmob";
var sParam = {controller: sController,action: sAction,type: sType,dvg:"404",vq: CONST_vq,geq:"0"};
$.post('https://mafiareloaded.com/game/req.php', sParam, function(response)
{
nRedID = getNextID(response.message);
if ( nRedID != -1 )
{
console.log(nRedID);
setTimeout(doPowerAttack,150);
}
});
}
}
var nHealRetry = 0;
var nHealCount = 0;
function doHealDelay(msg)
{
var nIndexOf = msg.indexOf("seconds");
if ( nIndexOf != -1 )
{
var nBegin = msg.indexOf("<br>");
var sMessage = msg.substring(nBegin+4);
var nEnd = sMessage.indexOf("<br>");
var sMessage = sMessage.substring(0,nEnd);
msgArray = sMessage.split(" ");
var seconds = msgArray[msgArray.length - 2];
var nSeconds = parseInt(seconds) * 1000;
nHealCount = nHealCount + 1000;
if ( nHealCount < nSeconds )
{
var nSecondCount = (nSeconds - nHealCount)/1000;
setLabel("Waiting to heal for another " + nSecondCount + " second(s)", false );
setTimeout(function(){ doHealDelay(msg); }, 1000); // wait 1 second
return false;
}
nHealCount = 0;
var elemProcess = document.getElementById("Process");
if ( parseInt(elemProcess.textContent) == PROCESS_Fight )
{
setTimeout(doFight,1000);
console.log("return to fight process");
return true;
}
}
return true;
}
function doHeal()
{
var sController = "fight";
var sAction = "rewr";
$.post('https://mafiareloaded.com/game/req.php', {controller: sController,action: sAction, dvg:"404",vq: CONST_vq,geq:"0"}, function(response)
{
//console.log(response);
if ( response.cb.fight.attacker[CONST_AttackerHealth] == 100 )
{
setTimeout(doPowerAttack,150);
return response.cb.fight.attacker[CONST_AttackerHealth];
}
else
{
console.log("heal delay");
console.log(response);
doHealDelay(response.cb.fight.attack_msg);
return;
}
})
.fail(function(response)
{
console.log(response);
});
return -1;
}
function testHeal()
{
var sController = "hospital";
var sAction = "rewr";
console.log("healing");
$.post('https://mafiareloaded.com/game/req.php', {controller: sController,action: sAction, dvg:"404",vq: CONST_vq}, function(response)
{
setProcess(PROCESS_Fight);
console.log("heal delay");
console.log(response);
doHealDelay(response.popups[0]);
});
}
function doPowerAttack()
{
if ( isChecked("CheckAssignment") )
{
var sController = "assignment";
}
else
{
console.log("Fight rival mobster: " + nRedID );
var sController = "fight";
}
var sAction = "twy";
var objFightRed;
var objConsole;
if ( bContinue )
{
$.post('https://mafiareloaded.com/game/req.php', {controller: sController,action: sAction,id: nRedID,amt:"5",zhk:"8",dvg:"404",vq: CONST_vq,geq:"0"}, function(response)
{
console.log(response);
objFightRed = response.cb.fight;
objConsole = response[CONST_ConsoleObject];
if ( bContinue ) setConsole( objConsole, true );
strMsg = objFightRed.attack_msg;
setLabel(strMsg,false);
// not enough stamina
if ( objFightRed.defender == null && objFightRed.attacker[CONST_Health] > 0 )
{
if ( isChecked("CheckAutoBurn"))
{
setLabel("Processing jobs",false);
teller = 0;
nStatTeller = 0;
setProcessStatus("false");
bStopJobs = false;
doBurn(true);
myAutoBurn = setInterval(checkStatus, 250);
return;
}
else
{
setLabel("Not enough stamina",false);
ToggleFight();
return false;
}
}
// no health
var nTmpHeal = objFightRed.attacker[CONST_Health];
if ( nTmpHeal == 0 )
{
setLabel("Healing...",false);
doHeal();
return true;
}
// check if rival is dead
if ( isRivalDead(objFightRed))
{
console.log("next rival");
doNextRival(response);
return true;
}
})
.fail(function(response)
{
console.log(response);
return false;
});
}
return;
}
function checkStatus()
{
var elem = document.getElementById("ProcessStatus");
var elemProcess = document.getElementById("Process");
if ( elem.textContent != "" )
{
if ( elem.textContent == "true" )
{
if ( myAutoBurn > 0 ) clearInterval(myAutoBurn);
if ( myJobVar > 0 ) clearInterval(myJobVar);
bStopJobs = true;
bAutoBurn = false;
nRetryTeller = 0;
teller = 0;
nStatTeller = 0;
nMasteryTeller = 0;
if ( elemProcess.textContent == "" )
{
return false;
}
if ( parseInt(elemProcess.textContent) == PROCESS_Fight )
{
setTimeout(doFight,200);
console.log("return to fight process");
return true;
}
if ( parseInt(elemProcess.textContent) == PROCESS_Mastery )
{
console.log("return to mastery process");
bDoMastery = false;
doMastery();
return true;
}
}
return false;
}
}
function setLabel( strMessage, bAuto )
{
var list = document.getElementById("myLabelTest");
//console.log(bAuto + ":" + bDoMastery + "->" + strMessage);
var elem = document.getElementById("Process");
switch (parseInt(elem.innerText))
{
case PROCESS_Fight:
list.innerHTML = strMessage;
break;
case PROCESS_Burn:
setMyLabel( strMessage );
break;
case PROCESS_Mastery:
setLabelMastery( strMessage );
break;
}
}
function setLabelProcess( strMessage, process )
{
var list = document.getElementById("myLabelTest");
switch (process)
{
case PROCESS_Fight:
list.innerHTML = strMessage;
break;
case PROCESS_Burn:
setMyLabel( strMessage );
break;
case PROCESS_Mastery:
setLabelMastery( strMessage );
break;
}
}
function setConsole( objConsole, cOn )
{
var healthlist = document.getElementById("myHealthLbl");
var healthspan = document.getElementById("spanHealth");
var energylist = document.getElementById("myEnergyLbl");
var energyspan = document.getElementById("spanEnergy");
var list = document.getElementById("myStaminaLbl");
var span = document.getElementById("spanStamina");
var explist = document.getElementById("myExperienceLbl");
var expspan = document.getElementById("spanExperience");
var lvlspan = document.getElementById("spanLevel");
var cashlist = document.getElementById("myCashLbl");
var cashspan = document.getElementById("spanCash");
if ( cOn )
{
list.style.visibility = "";
span.style.visibility = "";
healthspan.style.visibility = "";
healthlist.style.visibility = "";
energyspan.style.visibility = "";
energylist.style.visibility = "";
cashlist.style.visibility = "";
cashspan.style.visibility = "";
explist.style.visibility = "";
expspan.style.visibility = "";
lvlspan.style.visibility = "";
}
else
{
list.style.visibility = "hidden";
span.style.visibility = "hidden";
healthlist.style.visibility = "hidden";
healthspan.style.visibility = "hidden";
energylist.style.visibility = "hidden";
energyspan.style.visibility = "hidden";
explist.style.visibility = "hidden";
expspan.style.visibility = "hidden";
lvlspan.style.visibility = "hidden";
cashlist.style.visibility = "hidden";
cashspan.style.visibility = "hidden";
}
if ( objConsole != null )
{
nHealthLeft = objConsole[CONST_Health];
nHealth = objConsole[CONST_TotalHealth];
nEnergyLeft = objConsole[CONST_Energy];
nEnergy = objConsole[CONST_TotalEnergy];
nStaminaLeft = objConsole[CONST_Stamina];
nStamina = objConsole[CONST_TotalStamina];
nExp = objConsole[CONST_Experience];
nLvl = objConsole[CONST_Level];
nCash = objConsole[CONST_Cash];
nToLevel = parseInt(nLvl) * 25 - parseInt(nExp);
healthlist.innerText = nHealthLeft.toLocaleString('en-US', {maximumFractionDigits:2}) + "/" + nHealth.toLocaleString('en-US', {maximumFractionDigits:2});
energylist.innerText = nEnergyLeft.toLocaleString('en-US', {maximumFractionDigits:2}) + "/" + nEnergy.toLocaleString('en-US', {maximumFractionDigits:2});
list.innerHTML = nStaminaLeft.toLocaleString('en-US', {maximumFractionDigits:2}) + "/" + nStamina.toLocaleString('en-US', {maximumFractionDigits:2});
lvlspan.innerText = "Level " + nLvl.toLocaleString('en-US', {maximumFractionDigits:2});
explist.innerHTML = nExp.toLocaleString('en-US', {maximumFractionDigits:2}) + " <span style='color:#4ef;'>(" + nToLevel.toLocaleString('en-US', {maximumFractionDigits:2}) + " to level)</span>";
cashlist.innerText = "$" + nCash.toLocaleString('en-US', {maximumFractionDigits:2});
}
else
{
console.log(objConsole);
}
}
function setWindowPos()
{
var sValue = getCookiePos();
//console.log("cookie: " + sValue );
var nPosTop = "50px";
var nPosLeft = "10px";
var nPosWidth = "300px";
var nPosHeight = "420px";
if ( sValue != "" )
{
var namesArray = sValue.split(",");
for (i=0;i<namesArray.length;i++)
{
if ( i == 0 )
{
nPosTop = namesArray[i];
}
else if( i == 1 )
{
nPosLeft = namesArray[i];
}
else if( i == 2 )
{
nPosWidth = parseInt(namesArray[i]) - 25;
}
else if( i == 3 )
{
nPosHeight = parseInt(namesArray[i]) - 25;
}
}
}
//console.log(nPosTop + ":" + nPosLeft + ":" + nPosWidth + ":" + nPosHeight);
var elem = document.getElementById("myDemonBox");
elem.style.top = nPosTop + "px";
elem.style.left = nPosLeft + "px";
elem.style.width = nPosWidth + "px";
elem.style.height = nPosHeight + "px";
}
function getCookie(cname)
{
var name = cname + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i = 0; i <ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
function getCookiePos()
{
var name = "DemonPos=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i = 0; i <ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
function setCookie(cname, cvalue, exdays) {
var d = new Date();
//alert(document.domain);
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = "expires="+ d.toUTCString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";secure;path=/";
}
// ************************ JOBS ******************************
function getCookieChecked(cvalue,cindex)
{
var name = "Checked=";
var i=0;
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i = 0; i <ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0)
{
//alert(cvalue + "->" + c.substring(name.length, c.length) );
var value = c.substring(name.length, c.length);
//alert(value);
var ListChecked = value.split( "," );
setChecked(cvalue,ListChecked[cindex]);
return ListChecked[cindex];
}
}
return "";
}
function setChecked(cvalue,svalue)
{
var elem = document.getElementById("Check" + cvalue);
if ( svalue == "" || svalue == "true")
{
elem.checked = true;
}
else
{
elem.checked = false;
}
}
function isChecked(cvalue)
{
return document.getElementById(cvalue).checked;
}
function doCheckbox(evt,cvalue)
{
var bChecked;
var sCookie = "";
elem = document.getElementsByClassName("myCheckbox");
for ( i=0;i<elem.length;i++)
{
bChecked = elem[i].checked;
sCookie += bChecked + ",";
}
sCookie = sCookie.substring(0,sCookie.length-1);
setCookie("Checked",sCookie,365);
initJob(false);
}
function MyALInit()
{
nEnergyJobCost = 0;
nTmpEnergy = 0;
nTmpStamina = 0;
nStaminaCost = 0;
nEnergyCost = 0;
sJobName = "";
sStam = getCookieChecked("Stamina", CHECKED_Stamina);
sEnergy = getCookieChecked("Energy", CHECKED_Energy);
sDeposit = getCookieChecked("Deposit", CHECKED_AutoDeposit);
s30Jobs = getCookieChecked("30Jobs", CHECKED_30Jobs);
s10Opponents = getCookieChecked("10Opponents", CHECKED_10Opponents);
sCriticalHits = getCookieChecked("CriticalHits", CHECKED_CriticalHits);
sCollectReward = getCookieChecked("AutoCollect",CHECKED_AutoCollect);
sAutoBurnMastery = getCookieChecked("AutoBurnMastery",CHECKED_AutoBurnMastery);
}
function setCookieArray(cindex,cvalue)
{
var namesArray = cvalue.split(",");
//city, chapter, name, energy, stamina, mypars
var sCity, sChapter, sName, sEnergy, sStamina, sPars;
for ( i=0;i<namesArray.length;i++)
{
switch (i){
case 0:
sCity = namesArray[i];
break;
case 1:
sChapter = namesArray[i];
break;
case 2:
sName = namesArray[i];
break;
case 3:
sEnergy = namesArray[i];
break;
case 4:
sStamina = namesArray[i];
break;
case 5:
sPars = namesArray[i];
break;
}
}
if ( cindex == -1 )
{
}
else
{
myJobs[cindex] = new MyJob(sCity,sChapter,sName,sEnergy,sStamina,sPars);
}
}
function deleteJob(celem)
{
var ElemLi = document.getElementById(celem);
celem.remove();
saveCookie();
initJob(false);
setMyLabel("");
}
function addJob()
{
var nElem = parseInt(document.getElementById("curJobs").value);
var nMaxRow = document.getElementById("columns").getElementsByClassName("column").length;
if ( nElem >= 0 )
{
sValue = myJobList[nElem].city + ",";
sValue += myJobList[nElem].chapter + ",";
sValue += myJobList[nElem].name + ",";
sValue += myJobList[nElem].energy + ",";
sValue += myJobList[nElem].stamina + ",";
sValue += myJobList[nElem].param;
setCookie("Row"+nMaxRow,sValue,365);
initJob(false);
setMyLabel("'" + myJobList[nElem].name + "' added to list");
}
}
function getCookieRow(cindex,cstamina)
{
var name = "Row" + cindex + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i = 0; i <ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
function deleteCookie()
{
for (i=0;i<myJobs.length;i++)
{
document.cookie = "Row" + i + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT;secure;path=/";
}
}
function saveCookie()
{
var Elem = document.getElementById("columns");
var ElemLi = Elem.getElementsByClassName("column");
var sCookie = "";
deleteCookie();
for( i=0; i < ElemLi.length; i++)
{
sCookie = "";
var ElemSpan = ElemLi[i].getElementsByTagName("span");
for ( t=0; t<ElemSpan.length-1; t++ )
{
if ( sCookie != "" )
sCookie += ",";
sCookie += ElemSpan[t].textContent;
}
setCookie("Row"+i,sCookie,365);
}
}
function initJob(bStamina)
{
deleteBtn();
var elem = document.getElementById("columns");
var tabElem = document.getElementById("jobs");
if ( elem != null )
{
elem.parentNode.removeChild(elem);
}
myJobs = new Array();
var teller=0;
var sValue = "";
var myTable = document.createElement("ul");
myTable.style.overflow = "auto";
myTable.style.height = "250px";
myTable.id = "columns";
tabElem.appendChild(myTable);
var myTr = document.createElement("li");
myTr.id = "columnheader";
myTable.appendChild(myTr);
myLnk = document.createElement("span");
myLnk.innerText="X";
myLnk.style.width = "7px";
myTr.appendChild(myLnk);
var myTd = document.createElement("span");
myTd.innerText = "City";
myTr.appendChild(myTd);
myTd = document.createElement("span");
myTd.innerText = "Chapter";
myTr.appendChild(myTd);
myTd = document.createElement("span");
myTd.style.width = "250px";
myTd.innerText = "Job name";
myTr.appendChild(myTd);
myTd = document.createElement("span");
myTd.innerText = "Energy";
myTr.appendChild(myTd);
myTd = document.createElement("span");
myTd.innerText = "Stamina";
myTr.appendChild(myTd);
myTd = document.createElement("span");
myTd.style.display = "none";
myTd.innerText = "Params";
myTd.style.width = "25px";
myTr.appendChild(myTd);
myTd = document.createElement("span");
myTd.innerText = "Do Job";
myTd.style.width = "75px";
myTr.appendChild(myTd);
// ***************** get cookie **********************
sValue = getCookieRow(teller,true);
var t=0;
var bWriteTableRow = true;
while ( sValue != "" )
{
setCookieArray(teller,sValue);
nTmpStam = parseInt(myJobs[teller].stamina);
if ( bWriteTableRow )
{
var myTr = document.createElement("li");
myTr.setAttribute("class","column");
myTr.setAttribute("draggable","true");
myTr.id = "delJob" + t;
if (myJobs[teller].energy != "0" && isChecked("CheckEnergy") == false )
{
myJobs[teller].visible = false;
myTr.style.display = "none";
}
else
{
myTr.style.display = "visible";
myJobs[teller].visible = true;
}
if (myJobs[teller].stamina != "0" && isChecked("CheckStamina") == false )
{
myJobs[teller].visible = false;
myTr.style.display = "none";
}
else
{
myJobs[teller].visible = false;
myTr.style.display = "visible";
}
myTable.appendChild(myTr);
myLnk = document.createElement("a");
myLnk.innerText="X";
myLnk.href = "#";
myTr.appendChild(myLnk);
myLnk.addEventListener( 'click', function(e){
deleteJob(e.target.closest('li'));
}, true );
t++;
myTd = document.createElement("span");
myTd.innerText = myJobs[teller].city;
myTr.appendChild(myTd);
myTd = document.createElement("span");
myTd.innerText = myJobs[teller].chapter;
myTr.appendChild(myTd);
myTd = document.createElement("span");
myTd.style.width = "250px";
myTd.innerText = myJobs[teller].name;
myTr.appendChild(myTd);
myTd = document.createElement("span");
myTd.innerText = myJobs[teller].energy;
myTr.appendChild(myTd);
myTd = document.createElement("span");
myTd.innerText = myJobs[teller].stamina;
myTr.appendChild(myTd);
myTd = document.createElement("span");
myTd.style.display = "none";
myTd.innerText = myJobs[teller].param;
myTd.style.width = "25px";
myTr.appendChild(myTd);
myTd = document.createElement("span");
myTd.id = "doJobID";
//***********************
var myHref = document.createElement("a");
myHref.id = "myJob" + teller;
myHref.href = "#";
myHref.innerText = "[ do Job ]";
myHref.setAttribute('class', 'ajax_request');
myHref.setAttribute('data-params', myJobs[teller].param);
myTd.appendChild(myHref);
//***********************
myTd.style.width = "75px";
myTr.appendChild(myTd);
}
teller++;
sValue = getCookieRow(teller);
}
var cols = document.querySelectorAll('#columns .column');
[].forEach.call(cols, addDnDHandlers);
}
var myVar;
var myJobs;
var nJobCost;
var bInit = true;
function setMyLabel( strMessage )
{
var list = document.getElementById("mylvlLabel");
list.innerHTML = strMessage;
}
function doJob(i)
{
var JobBtn = document.getElementById("myJob" + i);
JobBtn.click();
}
// *************** jobs **************************
function deleteBtn()
{
if ( myJobs != null )
{
for (i=0;i<myJobs.length;i++)
{
var myBtn = document.getElementById("myJob" + i );
if ( myBtn != null )
{
myBtn.parentNode.removeChild(myBtn);
}
}
}
}
function MyList(city, chapter, name, energy, stamina, mypars, mymastery)
{
this.city = city;
this.chapter = chapter;
this.name = name;
this.energy = energy;
this.stamina = stamina;
this.param = mypars;
this.mastery = mymastery;
this.visible = true;
}
function MyJob(city, chapter, name, energy, stamina, mypars,mymastery)
{
this.city = city;
this.chapter = chapter;
this.name = name;
this.energy = energy;
this.stamina = stamina;
this.param = mypars;
this.mastery = mymastery;
this.visible = true;
}
function deleteCookie()
{
for (i=0;i<myJobs.length;i++)
{
document.cookie = "Row" + i + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT;secure;path=/";
}
}
function doJobs()
{
if ( checkProcess(PROCESS_Burn) )
{
if (bInit)
{
MyALInit();
bInit = false;
}
var obj = document.getElementById("AutoLvlstop-script");
teller = 0;
nStatTeller = 0;
if ( bStopJobs )
{
obj.innerText = "Run";
setProcess(null);
//clearInterval(myJobVar);
}
else
{
obj.innerText = "Stop";
setProcess(PROCESS_Burn);
//myJobVar = setInterval(function(){ doBurn(false); }, 300);
doBurn(false);
}
}
}
function getParam( cvalue, cparam )
{
var name = cparam + "=";
var ca = cvalue.split('&');
for(var i = 0; i <ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
function doAutoDeposit()
{
if ( isChecked("CheckDeposit") && nCash > 10 )
{
console.log("cash " + nCash);
var sController = "bank";
var sAction = "deposit";
var sAll = "1";
$.post('https://mafiareloaded.com/game/req.php', {controller: sController,action: sAction,all: sAll, dvg:"404",vq: CONST_vq},
function(response)
{
console.log(response);
//var objConsole = response[CONST_ConsoleObject];
nCash = 0;
//setConsole(objConsole,true);
});
}
}
var nStatTeller;
function checkJobCount()
{
for ( i=0;i<myJobs.length;i++)
{
if ( document.getElementById("delJob" + i).style.display == "" ) // job visible return
{
return true;
}
}
return false;
}
function setProcessStatus(bvalue)
{
var elem = document.getElementById("ProcessStatus");
elem.innerText = bvalue;
}
function stopProcess(msg,processid,bAuto)
{
nStatTeller = 0;
sValue = "";
if ( bAuto )
{
if ( bDoMastery )
{
setLabel(msg,bAuto);
//doMastery();
elem = document.getElementById("MasteryScript");
elem.click();
}
else
{
setLabel(msg);
elem = document.getElementById("stop-script-fr");
elem.click();
}
}
else
{
setLabel(msg,bAuto);
elem = document.getElementById("AutoLvlstop-script");
elem.click();
}
}
function isLevelUp(obj)
{
var nLevel;
var nPreviousLevel;
nLevel = parseInt(obj[CONST_Level]);
nPreviousLevel = document.getElementById("spanLevel").innerText;
nPreviousLevel = nPreviousLevel.replace("Level ","")
nPreviousLevel = nPreviousLevel.replace(",","");
nPreviousLevel = parseInt(nPreviousLevel);
if ( nPreviousLevel != nLevel )
{
//console.log("levelup");
return true;
}
return false;
}
function setJobStatus()
{
var sStat = "";
if ( nStatTeller < 10 )
{
nStatTeller++;
for (t=0;t<nStatTeller;t++)
sStat += ".";
}
else
{
nStatTeller = 0;
}
return sStat;
}
function doBurn(bAutoBurn)
{
var objConsole;
var objJob;
var sParamList;
if ( !bStopJobs )
{
var sValue = getCookieRow(teller,true);
setCookieArray(teller,sValue);
var sParam = myJobs[teller].param;
var nIndexOf = sParam.indexOf("jobevent");
if ( nIndexOf != -1 )
{
var sId = getParam(sParam,"id");
var sController = getParam(sParam,"controller");
var sAction = getParam(sParam,"action");
sParamList = {controller: sController,action: sAction,id: sId, dvg:"404",vq: CONST_vq};
console.log(sParamList);
}
else
{
var sController = "job";
var sAction = "tox";
var sId = getParam(sParam,"id");
var sTab = getParam(sParam,"tab");
sParamList = {controller: sController,action: sAction,id: sId, tab: sTab, dvg:"404",vq: CONST_vq};
}
// check for available jobs
if (!checkJobCount())
{
var nProcessID = 0; // DVE need 3 constants
sMsg = "<span class='bad'>No jobs available</span>";
stopProcess(sMsg,nProcessID,bAutoBurn);
setProcessStatus(false);
return;
}
if ( document.getElementById("delJob" + teller).style.display == "" )
{
console.log(bAutoBurn + ":"+ bStopJobs + ":" + teller + "-> " + myJobs[teller].name);
$.post('https://mafiareloaded.com/game/req.php', sParamList,
function(response)
{
objConsole = response[CONST_ConsoleObject];
objJob = response.cb.job;
if ( isLevelUp(objConsole) )
{
doAutoDeposit();
setConsole(objConsole,true);
setProcessStatus(true);
if ( !bAutoBurn )
{
setMyLabel("<span class='good'>You reached level " + objConsole[CONST_Level].toLocaleString('en-US', {maximumFractionDigits:2}) + "</span>");
bStopJobs = true;
doJobs();
return;
}
if ( bAutoBurn )
{
bStopJobs = true;
nRetryTeller = 0;
teller = 0;
nStatTeller = 0;
console.log("return to process");
return;
}
return;
}
else
{
setProcessStatus(false);
}
if ( !bStopJobs )
{
strMsg = objJob.msg;
nIndexOf = strMsg.indexOf('action=refill');
//console.log( teller + "->" + myJobs.length + " job failed? " + nIndexOf);
if ( nIndexOf > 0 )
{
if ( !checkEnoughStamEnergy(teller,bAutoBurn) )
return false;
// next job if available
teller++;
nStatTeller = 0;
}
else
{
sStat = setJobStatus();
setLabel(myJobs[teller].name + sStat,bAutoBurn);
}
}
setConsole( objConsole, true );
setTimeout(function(){doBurn(bAutoBurn);},250);
return;
})
.fail(function(response)
{
console.log("fail");
//console.log(response);
setLabel("An unexpected error occured, please try again",bAutoBurn);
bStopJobs = true;
if ( bDoMastery )
doMastery();
else
doJobs();
return;
});
}
else
{
// next job in list
teller++;
setTimeout(function(){doBurn(bAutoBurn);},250);
return;
}
}
return;
}
function checkEnoughStamEnergy(index,bAuto)
{
if ( index == myJobs.length - 1 && !bStopJobs )
{
//nTeller = 0;
nStatTeller = 0;
console.log("not enough stamina");
if ( bAuto )
{
setLabel("<span class='bad'>Not enough Energy/Stamina to level up</span>",bAuto);
bAutoBurn = false;
if ( bDoMastery )
{
doMastery();
//elem = document.getElementById("MasteryScript");
//elem.click();
}
else
{
elem = document.getElementById("stop-script-fr");
elem.click();
}
}
else
{
bStopJobs = true;
doJobs();
}
return false;
}
return true;
}
// ************************ end jobs **************************
function doTab(evt, tabName) {
// Declare all variables
//alert(tabName);
var i, tabcontent, tablinks;
// Get all elements with class="tabcontent" and hide them
tabcontent = document.getElementsByClassName("tabcontent");
for (i = 0; i < tabcontent.length; i++) {
tabcontent[i].style.display = "none";
}
// Get all elements with class="tablinks" and remove the class "selected"
tablinks = document.getElementsByClassName("tablinks");
for (i = 0; i < tablinks.length; i++) {
tablinks[i].className = tablinks[i].className.replace(" selected", "");
}
// Show the current tab, and add an "active" class to the button that opened the tab
document.getElementById(tabName).style.display = "block";
//console.log(evt);
evt.currentTarget.className += " selected";
setCookie("Tab", tabName, 365);
}
function getJobs(sCity,sChapter,cvalue)
{
var sJobName;
var sEnergy;
var sStamina;
var sParam;
myJobList = new Array();
//alert(cvalue);
sChapter = sChapter.substring( 7, sChapter.length );
var ca = cvalue.split('<div class="jrow">');
for(var i = 1; i <ca.length; i++)
{
//console.log(ca[i]);
var c = ca[i];
nIndexOf = c.indexOf('<div class="feed_row">');
if ( nIndexOf != -1 )
{
c = c.substring(nIndexOf+22, c.length);
}
nIndexOf = c.indexOf('<div style="width:330px;">');
if ( nIndexOf != -1 )
{
c = c.substring(nIndexOf+26, c.length);
}
nIndexOf = c.indexOf('<br>');
if ( nIndexOf != -1 )
{
sJobName = c.substring(0,nIndexOf);
c = c.substring(nIndexOf, c.length);
}
//console.log(sJobName);
nIndexOf = c.indexOf('<span class="energy">');
sEnergy = "0";
if ( nIndexOf != -1 )
{
c = c.substring(nIndexOf+21, c.length)
nEndOf = c.indexOf('</span>');
sEnergy = c.substring(0,nEndOf);
sEnergy = sEnergy.replace(",","");
//console.log("energy: " + sEnergy);
c = c.substring(nEndOf + 7, c.length );
}
nIndexOf = c.indexOf('<span class="stamina">');
sStamina = "0";
if ( nIndexOf != -1 )
{
c = c.substring(nIndexOf+22, c.length)
nEndOf = c.indexOf('</span>');
sStamina = c.substring(0,nEndOf);
sStamina = sStamina.replace(",","");
//console.log("stamina: " + sStamina);
c = c.substring(nEndOf + 7, c.length );
}
nIndexOf = c.indexOf('data-params="');
if ( nIndexOf != -1 )
{
c = c.substring(nIndexOf+13,c.length);
nEndOf = c.indexOf('">');
sParam = c.substring(0,nEndOf);
//console.log("params: " + sParam);
}
myJobList[i-1] = new MyList(sCity,sChapter,sJobName,sEnergy,sStamina,sParam,100);
//Console.log(myJobList);
sEnergy = "";
sStamina = "";
sParam = "";
sJobName = "";
}
}
function addJobEvent()
{
var banner = document.getElementsByClassName("banner shadow");
for ( i=0;i<banner.length;i++)
{
var sEventName = banner[i].getAttribute("aria-label");
var elem = banner[i].getElementsByClassName("ajax_request");
var sParam;
for ( t=0; t<elem.length; t++)
{
sParam = elem[t].getAttribute("data-params");
var nIndexOf = sParam.indexOf("controller=jobevent");
if ( nIndexOf != -1 )
{
return sEventName;
}
}
}
return ""
}
function initCombo(bMastery)
{
CITY[0] = "Downtown";
CHAPTER[0] = 10;
CITY[1] = "Amsterdam";
CHAPTER[1] = 10;
CITY[2] = "Las Vegas";
CHAPTER[2] = 10;
CITY[3] = "Berlin";
CHAPTER[3] = 10;
CITY[4] = "Cuba";
CHAPTER[4] = 8;
var nCityLength;
if ( bMastery )
{
CITY[5] = "JOBEVENT";
CHAPTER[5] = 0;
nCityLength = 6;
}
else
{
var sJobEventName = addJobEvent();
if ( sJobEventName != "" )
{
CITY[5] = sJobEventName;
CHAPTER[5] = 0;
nCityLength = 6;
}
else
{
nCityLength = 5;
}
}
if ( bMastery )
elem = document.getElementById("curCITYMastery");
else
elem = document.getElementById("curCITY");
for (i = nCityLength - 1; i >= 0; i--)
{
elem.remove(i);
}
for (i=0;i<nCityLength;i++)
{
var sp = document.createElement("option");
sp.innerText = CITY[i];
sp.value = i;
elem.appendChild(sp);
}
initChapters(0, bMastery);
}
function initChapters(nMultiply,bMastery)
{
if ( bMastery )
var nCity = parseInt(document.getElementById("curCITYMastery").value);
else
var nCity = parseInt(document.getElementById("curCITY").value);
if ( bMastery )
var ChapterList = document.getElementById("curCHAPTERMastery");
else
var ChapterList = document.getElementById("curCHAPTER");
for (i = ChapterList.length - 1; i >= 0; i--)
{
ChapterList.remove(i);
}
if ( bMastery )
elem = document.getElementById("curCHAPTERMastery");
else
elem = document.getElementById("curCHAPTER");
for (i=0;i<CHAPTER[nCity];i++)
{
var sp = document.createElement("option");
sp.innerText = "Chapter " + (i+1);
sp.value = (nMultiply*10+(i+1));
elem.appendChild(sp);
}
if ( !bMastery )
{
//alert(document.getElementById("curCHAPTER").value);
initJobs(document.getElementById("curCHAPTER").value);
}
}
function initJobs(nTabs)
{
elem = document.getElementById("curCITY");
var nCity = parseInt(elem.value)+1;
var strCity = elem[elem.selectedIndex].text;
elem = document.getElementById("curCHAPTER");
if ( elem.length )
{
var nTab = elem.value;
var strChapter = elem[elem.selectedIndex].text;
}
else
{
var nTab = "";
strChapter = "";
}
var JobList = document.getElementById("curJobs");
for (i = JobList.length - 1; i >= 0; i--)
{
JobList.remove(i);
}
if ( !bContinue )
{
if ( strChapter != "" )
{
var sController = "job";
var sAction = "yvr";
var objConsole;
$.post('https://mafiareloaded.com/game/req.php', {controller: sController,action: sAction,loc: nCity, tab: nTab, dvg:"404",vq: CONST_vq}, function(response)
{
if ( bDebug ) console.log(response);
strMessage = response.message;
getJobs(strCity, strChapter, strMessage);
// fill combo jobs
for ( i=0;i<myJobList.length;i++ )
{
var sEnergy = myJobList[i].energy;
var sName = myJobList[i].name;
var sStamina = myJobList[i].stamina;
var sp = document.createElement("option");
if ( sEnergy != "0" && sEnergy != "" )
sp.innerText = sName + " - Energy:" + sEnergy;
else
sp.innerText = sName + " - Stamina:" + sStamina;
sp.value = i;
JobList.appendChild(sp);
}
}
);
}
else
{
var sController = "jobevent";
var sAction = "yvr";
var objConsole;
$.post('https://mafiareloaded.com/game/req.php', {controller: sController,action: sAction,dvg:"404",vq: CONST_vq}, function(response)
{
console.log(response);
strMessage = response.message;
getJobsMastery(strCity, strChapter, strMessage, true);
// fill combo jobs
for ( i=0;i<myJobList.length;i++ )
{
var sEnergy = myJobList[i].energy;
var sName = myJobList[i].name;
var sStamina = myJobList[i].stamina;
var sp = document.createElement("option");
if ( sEnergy != "0" && sEnergy != "" )
sp.innerText = sName + " - Energy:" + sEnergy;
else
sp.innerText = sName + " - Stamina:" + sStamina;
sp.value = i;
JobList.appendChild(sp);
}
}
);
}
}
}
function initObjects()
{
var sFight = "home";
var sAction = "view";
var objConsole;
initCombo(false);
initCombo(true);
$.post('https://mafiareloaded.com/game/req.php', {controller: sFight,action: sAction, dvg:"404",vq: CONST_vq}, function(response)
{
i = 0;
for (x in response)
{
if ( i == 1 )
CONST_ConsoleObject = x;
//console.log(x);
i++;
}
objConsole = response[CONST_ConsoleObject];
//if ( bDebug ) console.log(response);
//console.log(objConsole);
var i = 0;
for (x in objConsole)
{
//console.log(x + "->" + objConsole[x]);
switch (i) {
case 0: // skill tokens
CONST_SkillTokens = x;
break;
case 1: // gold tokens
break;
case 2: // total health
CONST_TotalHealth = x;
break;
case 3: // health
CONST_Health = x;
CONST_AttackerHealth = x;
break;
case 4:
break;
case 5: // total energy
CONST_TotalEnergy = x;
break;
case 6:
break;
case 7: // total stamina
CONST_TotalStamina = x;
break;
case 8:
break;
case 9: // cash
CONST_Cash = x;
break;
case 10: // level
CONST_Level = x;
break;
case 11: // experience
CONST_Experience = x;
break;
case 12: // attack
break;
case 13: // defense
break;
case 14:
break;
case 15: // energy
CONST_Energy = x;
break;
case 16: // stamina
CONST_Stamina = x;
break;
}
i++;
}
//if ( bDebug ) console.log("set console");
//if ( bDebug ) console.log(objConsole);
setConsole( objConsole, true );
})
.fail(function(response)
{
// retry x nr of times
if ( nRetryTeller < nRetry )
{
setTimeout(initObjects,100);
console.log("Retry init objects: " + nRetryTeller);
nRetryTeller++;
}
else
{
setLabel("An error occured, please refresh window");
}
});
}
// ************************* MASTERY ********************************
function getJobsMastery(sCity,sChapter,cvalue,bburn)
{
var sJobName;
var sEnergy;
var sStamina;
var sParam;
var sMastery;
sChapter = sChapter.substring( 7, sChapter.length );
if ( bburn )
{
myJobList = new Array();
bJobEvent = true;
sChapter = "-";
}
else
{
//console.log("clear list");
myJobMasteryList = new Array();
}
if ( bJobEvent )
var ca = cvalue.split('<div class="jrow2">');
else
var ca = cvalue.split('<div class="jrow">');
for(var i = 1; i <ca.length; i++)
{
//console.log(ca[i]);
var c = ca[i];
nIndexOf = c.indexOf('<div class="feed_row">');
if ( nIndexOf != -1 )
{
c = c.substring(nIndexOf+22, c.length);
}
nIndexOf = c.indexOf('<div style="width:330px;">');
if ( nIndexOf != -1 )
{
c = c.substring(nIndexOf+26, c.length);
}
nIndexOf = c.indexOf('<br>');
if ( nIndexOf != -1 )
{
sJobName = c.substring(0,nIndexOf);
c = c.substring(nIndexOf, c.length);
}
// mastery
nIndexOf = c.indexOf('<span>');
if ( nIndexOf != -1 )
{
c = c.substring(nIndexOf+6, c.length)
nEndOf = c.indexOf('% Complete');
sMastery = c.substring(0,nEndOf);
c = c.substring(nEndOf + 10, c.length);
}
// energy
nIndexOf = c.indexOf('<span class="energy">');
sEnergy = "0";
if ( nIndexOf != -1 )
{
c = c.substring(nIndexOf+21, c.length)
nEndOf = c.indexOf('</span>');
sEnergy = c.substring(0,nEndOf);
sEnergy = sEnergy.replace(",","");
//console.log("energy: " + sEnergy);
c = c.substring(nEndOf + 7, c.length );
}
nIndexOf = c.indexOf('<span class="stamina">');
sStamina = "0";
if ( nIndexOf != -1 )
{
c = c.substring(nIndexOf+22, c.length)
nEndOf = c.indexOf('</span>');
sStamina = c.substring(0,nEndOf);
sStamina = sStamina.replace(",","");
//console.log("stamina: " + sStamina);
c = c.substring(nEndOf + 7, c.length );
}
nIndexOf = c.indexOf('data-params="');
if ( nIndexOf != -1 )
{
c = c.substring(nIndexOf+13,c.length);
nEndOf = c.indexOf('">');
sParam = c.substring(0,nEndOf);
//console.log("params: " + sParam);
}
if ( bburn )
{
myJobList[i-1] = new MyList(sCity,sChapter,sJobName,sEnergy,sStamina,sParam,sMastery);
}
else
{
//console.log("add to list " + sJobName );
myJobMasteryList[i-1] = new MyList(sCity,sChapter,sJobName,sEnergy,sStamina,sParam,sMastery);
}
sEnergy = "";
sStamina = "";
sParam = "";
sJobName = "";
}
//console.log(myJobMasteryList);
}
function initMasteryJobs(nTabs)
{
// if !jobevent then use city & chapter
elem = document.getElementById("curCITYMastery");
var nCity = parseInt(elem.value)+1;
var strCity = elem[elem.selectedIndex].text;
//console.log(elem);
bJobEvent = ( strCity == "JOBEVENT" );
if ( !bJobEvent )
{
elem = document.getElementById("curCHAPTERMastery");
var nTab = parseInt(elem.value);
var strChapter = elem[elem.selectedIndex].text;
}
else
{
var strChapter = "";
}
if ( bDoMastery )
{
var sAction = "yvr";
if ( bJobEvent )
{
var sController = "jobevent";
var sParameter = {controller: sController,action: sAction,dvg:"404",vq: CONST_vq}
}
else
{
var sController = "job";
var sParameter = {controller: sController,action: sAction,loc: nCity, tab: nTab, dvg:"404",vq: CONST_vq}
}
var objConsole;
$.post('https://mafiareloaded.com/game/req.php', sParameter, function(response)
{
if ( bDebug ) console.log(response);
strMessage = response.message;
getJobsMastery(strCity, strChapter, strMessage,false);
});
}
}
function doMastery()
{
if ( checkProcess(PROCESS_Mastery) )
{
var elem = document.getElementById("MasteryScript");
nStatTeller = 0;
bDoMastery = !bDoMastery;
nMasteryTeller = 0;
if ( bDoMastery )
{
// give time to init jobs
initMasteryJobs(4); // get job list
setProcess(PROCESS_Mastery);
elem.innerText = "Stop";
}
else
{
console.log("stop mastery");
bAutoBurn = false;
bStopJobs = true;
setProcess(null);
elem.innerText = "Run";
if ( myAutoBurn > 0 ) clearInterval(myAutoBurn);
if ( IntervalMastery > 0 ) clearInterval(IntervalMastery);
}
if ( bDoMastery )
{
setTimeout(doMasteryJob,500);
}
}
}
function isChapterMastered()
{
for (i=0;i<myJobMasteryList.length;i++)
{
//console.log(myJobMasteryList[i].name + "->" + myJobMasteryList[i].mastery);
nMastery = parseInt(myJobMasteryList[i].mastery);
if ( nMastery < 100 )
{
return false;
}
}
return true;
}
function doAutoCollect(sTmp)
{
if ( bDoMastery )
{
var sAction = "collect";
if ( bJobEvent )
{
var sController = "jobevent";
sParam = {controller: sController,action: sAction,dvg:"404",vq: CONST_vq};
}
else
{
var sController = "job";
var elem = document.getElementById("curCITYMastery");
var nloc = parseInt(elem.value)+1;
var elem = document.getElementById("curCHAPTERMastery");
var sTab = elem.value;
sParam = {controller: sController,action: sAction,loc: nloc, tab: sTab, dvg:"404",vq: CONST_vq};
}
//if ( IntervalMastery > 0 ) clearInterval(IntervalMastery);
$.post('https://mafiareloaded.com/game/req.php', sParam , function(response)
{
objConsole = response[CONST_ConsoleObject];
console.log("autocollect");
console.log(response);
if ( response.popups.length > 0 )
{
console.log("autocollect success");
nMasteryTeller = 0;
bDoMastery = false;
doMastery();
return true;
}
})
.fail(function(response)
{
console.log(response);
console.log("collect reward failed");
});
}
return false;
}
function doAddSkill(obj)
{
if ( parseInt(obj[CONST_SkillTokens]) > 50 )
{
var sController = "profile";
var sAction = "addenergy";
var sAmt = "50";
sParam = {controller: sController,action: sAction,amt: sAmt, dvg:"404",vq: CONST_vq};
$.post('https://mafiareloaded.com/game/req.php', sParam , function(response)
{
objConsole = response[CONST_ConsoleObject];
console.log("add skill");
console.log(response);
});
}
}
function doMasteryJob()
{
//console.log("mastery job" + bDoMastery);
if ( bDoMastery )
{
console.log("length" );
console.log(myJobMasteryList.length );
if ( nMasteryTeller < myJobMasteryList.length )
{
var sParam = myJobMasteryList[nMasteryTeller].param;
var sController = getParam( sParam, "controller");
var sAction = getParam( sParam, "action" );
var sId = getParam( sParam, "id" );
var sTab = getParam( sParam, "tab" );
var bStaminaJob = false;
var sStamina = myJobMasteryList[nMasteryTeller].stamina;
var sStat;
var nNr = parseInt(sStamina);
bStaminaJob = ( nNr > 0);
if ( isChapterMastered() )
{
if ( isChecked("CheckAutoCollect") )
{
console.log("test collect reward " + nMasteryTeller + "->" + myJobMasteryList.length);
console.log(sParam);
if ( doAutoCollect(sTab) )
{
nMasteryTeller = 0;
console.log("chapter mastered");
bDoMastery = false;
}
else
{
// stop process
setLabel("All jobs mastered",false);
}
}
else
{
bStopJobs = true;
setLabel("Collect chapter",false);
}
doMastery();
return;
}
// do job when not fully mastered except the staminajob
if ( bDebug ) console.log(myJobMasteryList[nMasteryTeller]);
if ( parseInt(myJobMasteryList[nMasteryTeller].mastery) == 100 && ( !bStaminaJob && bJobEvent ))
//if ( parseInt(myJobMasteryList[nMasteryTeller].mastery) == 100 )
{
if ( bDebug ) console.log("skip job " + nMasteryTeller );
nMasteryTeller++;
doMasteryJob();
return;
}
//alert(bJobEvent);
if ( bJobEvent )
var sParameters = {controller: sController,action: sAction,id: sId,dvg:"404",vq: CONST_vq};
else
var sParameters = {controller: sController,action: sAction,id: sId,tab: sTab, dvg:"404",vq: CONST_vq};
$.post('https://mafiareloaded.com/game/req.php', sParameters , function(response)
{
objConsole = response[CONST_ConsoleObject];
objJob = response.cb.job;
if ( bDebug ) console.log(myJobMasteryList[nMasteryTeller].name + "-> " + objJob.mastery);
if ( bDebug ) console.log(response);
nLevel = parseInt(objConsole[CONST_Level]);
nTmpLevel = document.getElementById("spanLevel").innerText;
nTmpLevel = nTmpLevel.replace("Level ","")
nTmpLevel = nTmpLevel.replace(",","");
nTmpLevel = parseInt(nTmpLevel);
doAddSkill(objConsole);
if ( nTmpLevel != nLevel ) // level up start all over again :)
{
nMasteryTeller = 0;
bDoMastery = false;
doMastery();
return;
}
// check if chapter is fully mastered
if ( objJob.tab_mastery == "100" )
{
doAutoCollect();
return;
}
if ( objJob.mastery == undefined )
{
// job failed not enough energy/stamina? -> next job
nMasteryTeller++;
}
else
{
myJobMasteryList[nMasteryTeller].mastery = objJob.mastery;
strMastery = '<div class="bar job_progress"><span id="job-mastery-1" style="width:' + objJob.mastery + '%;"><span>';
strMastery += objJob.mastery + '% Complete</span></span></div>';
if ( nStatTeller < 10 && bStaminaJob )
{
nStatTeller++;
sStat = "";
for (t=0;t<nStatTeller;t++)
sStat += ".";
}
else
{
sStat = "";
nStatTeller = 0;
}
setLabel(myJobMasteryList[nMasteryTeller].name + sStat + "<br><br>" + strMastery, false );
if ( objJob.mastery == "100" && ( !bStaminaJob && bJobEvent ))
//if ( objJob.mastery == "100" )
{
// next job
nMasteryTeller++;
nStatTeller = 0;
}
}
setConsole( objConsole, true );
doMasteryJob();
return;
});
}
else
{
// DVE
if ( isChecked("CheckAutoBurnMastery"))
{
setLabel("Processing jobs",true);
teller = 0;
nStatTeller = 0;
nMasteryTeller = 0;
setProcessStatus(false);
bStopJobs = false;
setTimeout(function(){doBurn(true);},200);
myAutoBurn = setInterval(checkStatus, 250);
return;
}
else
{
console.log("no more jobs");
setLabel("Mastery: Not enough energy/stamina",false);
doMastery();
}
}
}
return;
}
function setLabelMastery( strMessage )
{
var list = document.getElementById("myLabelMastery");
list.innerHTML = strMessage;
//console.log(strMessage);
}
// ************************* END MASTERY ****************************
var observer = new MutationObserver(updateConsole);
function initConsole()
{
CONST_HealthSpanId = "";
CONST_EnergySpanId = "";
CONST_StaminaSpanId = "";
observer.observe(document.getElementById("user-cash"), {
characterData: true,
childList: true
});
var elem = document.getElementsByClassName("health");
console.log(elem);
if ( elem.length )
{
var span = elem[0].getElementsByTagName("span");
if ( span.length )
{
CONST_HealthSpanId = span[0].id;
}
}
var elem = document.getElementsByClassName("energy");
console.log(elem);
if ( elem.length )
{
var span = elem[0].getElementsByTagName("span");
if ( span.length )
{
CONST_EnergySpanId = span[0].id;
}
}
var elem = document.getElementsByClassName("stamina");
console.log(elem);
if ( elem.length )
{
var span = elem[0].getElementsByTagName("span");
if ( span.length )
{
CONST_StaminaSpanId = span[0].id;
}
}
observer.observe(document.getElementById(CONST_StaminaSpanId), {
characterData: true,
childList: true
});
observer.observe(document.getElementById(CONST_EnergySpanId), {
characterData: true,
childList: true
});
observer.observe(document.getElementById(CONST_HealthSpanId), {
characterData: true,
childList: true
});
}
function waitawhile()
{
//CreateMyDiv();
initConsole();
nRetry = getCookie("NrRetry");
nParsed = parseInt(nRetry);
if ( nRetry == "" || nParsed == NaN )
nRetry = 3;
elem = document.getElementById("NrRetry");
elem.value = nRetry;
initObjects();
nIntervalConsole = getCookie("IntervalConsole");
if ( nIntervalConsole == "" || parseInt(nIntervalConsole) == NaN )
nIntervalConsole = 15000;
elem = document.getElementById("ConsoleInterval");
elem.value = nIntervalConsole;
sTab = getCookie("Tab");
if ( sTab == "" ) sTab = "main";
document.getElementById("tab"+sTab).click();
MyALInit();
initJob(false);
}
$("document").ready(function() {
//setTimeout(waitawhile,200);
});
// @version 0.0.1.20210329135226
// ==/UserScript==