// ==UserScript== // @name vampireWars // @namespace Facebook // @description Autoplayer for the Vampire Wars game // @version 2.6.2 // @include http://apps.facebook.com/vampiresgame/* // @include http://apps.new.facebook.com/vampiresgame/* // @author blannie // @contributor IEF // @contributor Zorkfour (G.L. Cadogan) // @contributor Brad Foucher // ==/UserScript== //GUID: a99577d5-bedd-4e9f-8e57-1dc8940741f7 var settingsOpen = false; var logOpen = false; var delay = 3000; var blood2Update = 120000; var debug = true; var SCRIPT = { url: 'http://vampirewars.googlecode.com/svn/trunk/vampirewars/vampirewars.user.js', version: '2.6.2', name: 'vampiresgame', appID: 'app25287267406', presentationurl: 'http://userscripts.org/scripts/show/36917' }; var level; var clan; var td; var blood; var health; var energy; var rage; var bankpopup; var bank; var lottery; var gameVersion; var missions = new Array( //Mission Name, Energy , Tab, Order on Tab //Fledgling currentTier=0 ["Feast on a Human's Blood",1,0,0,1], ["Eliminate a Street Gang",5,0,2,3], ["Raid a Blood Bank",5,0,3,4], ["Destroy a Renegade Vampire",3,0,1,2], ["Kill a Drug Dealer",3,0,5,6], ["Fight a Sewer Wererat",2,0,4,5], ["Rescue an Ally From an Insane Asylum",4,0,6,7], //Neophyte currentTier=1 ["Fight Ghouls in the Deep Woods",3,1,0,8], ["Destroy a Circle of Warlocks",3,1,1,9], ["Attack a Vampiric Lair",8,1,4,12], ["Feed in Central Park",8,1,3,11], ["Tame a Shadow Demon",3,1,2,10], ["Sneak into Vampires' Nest",5,1,5,13], ["Fight a Vampire Slayer",5,1,6,14], ["End the Unlife of a Lich",5,1,7,15], //Adept currentTier=2 ["Challenge a Haitian Voodoo Gang",6,2,0,16], ["Fight a Pack of Werewolves",10,2,1,17], ["Retrieve a Lost Relic From the High Desert",7,2,2,18], ["Fight Another Vampire For Mental Dominance",8,2,4,19], ["Take Control of a Neighborhood",14,2,3,20], ["Save a Vampire From Hunters",10,2,5,21], ["Clear a Laboratory of Hideous Mutants",13,2,6,22], //Savant currentTier=3 ["Battle a Werewolf Lord",15,3,0,23], ["Rescue an Ally from the Underworld",15,3,1,24], ["Fight Government Agents in Foundry",18,3,2,25], ["Banish Summoned Demon",19,3,3,26], ["Face a Rival Clan Alone",20,3,4,27], ["Destroy a Demonic Lord",20,3,5,28], ["Exterminate A Rival Clan",21,3,6,29], //Stalker currentTier=4 ["Research the Spider Queen's Lair",35,4,0,43], ["Travel through the Moonlit Forest",28,4,1,44], ["Uncover the Spider Caverns",37,4,2,45], //31 ["Eliminate the Spider Guards",39,4,3,46], ["Locate the Queen's Nest",40,4,4,47], ["Slay the Spider Queen",45,4,5,48], ["Imbibe the Spider Queen's blood",42,4,6,49], ["Demolish the Spider Caverns",46,4,7,50], //Deathbringer currentTier=5 ["Foresee a Traitor in the Midst",38,5,0,30], ["Interrogate a Traitorous Minion",35,5,1,31], ["Investigate the Lair of Acanthus",33,5,2,32], ["Create a Diversion",42,5,3,33], ["Assault Acanthus's Lair",45,5,4,34], ["Stand-Off with Acanthus",50,5,5,35], //Vindicator currentTier=6 ["Uncover Draven's Catacombs",42,6,0,36], ["Navigate the Labyrinth",38,6,1,37], ["Investigate the Chapel",45,6,2,38], ["Clear the Rotting Meat Locker",52,6,3,39], ["Meet with Lord Draven",50,6,4,40], ["Uncover the Truth",54,6,5,41], ["Dispense with Lord Draven",59,6,6,42], //Scion currentTier=7 ["Receive The Shadow Council's Request",45,7,0,51], ["Travel to the Council Ruins",40,7,1,52], ["Meet with the Council's Emissary",52,7,2,53], ["The Shadow Council's Challenge",60,7,3,54], ["Heir to the Council",50,7,4,55], ["Prepare the Altar",52,7,5,56], ["Summon the Shadow Council",58,7,6,57], ["Ascend to the Shadow Council",63,7,7,58] ); var missionTabs = new Array( ["Fledgling"], ["Neophyte"], ["Adept"], ["Savant"], ["Deathbringer"], ["Vindicator"], //Stalker is in between Savant-Deathbringer tabs, but is named as tab 6. Scion is tab 7. ["Stalker"], ["Scion"] ); var attributes = new Array( ["Animalistic Frenzy",4,0], ["Astral Projection",116,1], ["Bat Form",15,0], ["Blood Shield",26,1], ["Blood to Ashes",5,1], ["Bloodletting",129,1], ["Bloody Mess",34,1], ["Bone Spikes",14,1], ["Cat's Grace",31,1], ["Cause Madness",3,1], ["Claws of the Demon",19,1], ["Command Rat Swarm",1,1], ["Command a Wolf Pack",4,1], ["Control Bear Clans",30,1], ["Control Mall Santas",37,1], ["Corrosion",115,1], ["Create Illusion",24,1], ["Cross Running Water",132,1], ["Demon Summoning",21,1], ["Demonic Familiar",32,1], ["Dodge Daylight",35,1], ["Drain Youth",7,1], ["Eagle Eyes",29,1], ["Enhanced Senses",3,0], ["Exsanguinate",38,1], ["Fangs",1,0], ["Fast Healing",9,0], ["Flight",17,0], ["Glamor",45,0], ["Gliding",14,0], ["Grave Touch",121,1], ["Hellfire",17,1], ["Horrific Transformation",8,0], ["Immaterial",23,1], ["Immunity to Religious Icons",13,1], ["Immunity to Silver",9,1], ["Impervious",10,0], ["Indestructible",18,1], ["Inhuman Speed",11,0], ["Intimidation",46,0], ["Intoxicating Bite",2,1], ["Invisibility",8,1], ["Iron Skin",16,1], ["Ironic Annihilation",33,1], ["Jaguar's Grace",125,1], ["Locust Swarm",42,1], ["Mind Control",6,0], ["Mist Form",16,0], ["Mortify",124,1], ["Move Silently",47,0], ["Pestilence",27,1], ["Premonition",130,1], ["Purge Blood",22,1], ["Pyrokinesis",44,1], ["Raise Zombies",10,1], ["Resistance to Sunlight",11,1], ["Shadow Conceal",131,1], ["Shadow Manipulation",6,1], ["Shadow Transformation",15,1], ["Spider Climb",119,1], ["Storm Rage",120,1], ["Summon Horseman",25,1], ["Summon Horseman",117,1], ["Superhuman Strength",5,0], ["Telepathy",12,1], ["Unearthly Reflexes",12,0], ["Vampire Lord",20,1], ["Vampiric Claws",2,0], ["Veil of Thorns",114,1], ["Vertical Ascension",13,0], ["Winged Guard",39,1], ["Wolf Form",7,0] // ToDo: add rest of attributes ); var ratings = new Array(["Tasty (+2)"],["Tempting (+1)"],["Toxic (-1)"] ); var menuItems = new Array( [["News",null],["Stats",UpdateStats],["Comments",null],["Edit Avatar",null], ["Trophies",null],["Judgement",JudgePeople]], // Coffin [["Invite",DoClanAccepts],["My Clan",null],["Clan Comment",UpdateGroupWall]], // Clan [["Fledging",DoMissions],["Neophyte",DoMissions],["Adept",DoMissions],["Savant",DoMissions],["Stalker",DoMissions],["Deathbringer",DoMissions],["Vindicator",DoMissions],["Scion",DoMissions]], //Mission [["Fight",DoFights],["Hitlist",null],["Leaderboards",null]], // Combat [["Abilities",UpdateAbilityPage],["Minions",UpdateMinionPage],["Shop",null]], // Bazaar [["Council",null],["Akem's Gamble",DoAkemsGamble],["Blood Magic",DoBloodMagic],["Crypt",null]], //Elders [["Terms",null],["Forum",null],["Support",null]], //Help [["Stats",UpdatePlayerPage],["Comments",UpdatePlayerPage]] //Help ); var XMLHttpFactories = [ function () {return new XMLHttpRequest()}, function () {return new ActiveXObject("Msxml2.XMLHTTP")}, function () {return new ActiveXObject("Msxml3.XMLHTTP")}, function () {return new ActiveXObject("Microsoft.XMLHTTP")} ]; String.prototype.toInt = function(){ return parseInt(this.replace(/,/g, ''));} function getPositionLeft(This){ var el = This;var pL = 0; while(el){pL+=el.offsetLeft;el=el.offsetParent;} return pL } function getPositionTop(This){ var el = This;var pT = 0; while(el){pT+=el.offsetTop;el=el.offsetParent;} return pT } var giftbox = 'data:image/gif;base64,R0lGODlhFgAWAPcAAI6BgnBiZJWIilpNUIJwdId1eqOUmFdJTV9SVraqrnpnbq2fpMC1uWZUW7CgplZHTWdWXV9QVsW7v1hFTmFQWFpIUV1LVI10g11FVZd3joptgnZMbE8zSEwyRl8/V1k7UnRRbGxDY1I1TF8/WFA1Sn5VdamMo3ZEbVQzTls4VGxEZFMwTXtJc4hZgHVObodbgIhfgZBnio9qimAsWl0vV0cWQk8bSnhCc3dFcqN1n0sUR0kVRVEbTWYqYmMqX3c4c3lLdohchSoCKDEDL0EFPkMHQEUIQikGJ0kLRnEwbX42e4VAgWMwYbCArkYAREIAQEEAPzIAMTEAMDcBNkUDQ1gGVkgFRkQFQj8FPT0FOz0GPDsGOUQLQlIOUEsNSUQMQmwlaoBAfmIAYWEAYVYAVT4APkMBQmEGYVIFUUoFSUsJS3QQdG4TbmwYa2AbYIApf3gnd4AugIs8ip9NnqxtrOfS52sAbWIAZWEAYloAW1EAUk0ATkoAS0QARnMCdmQCZUkCSlkDWlcGWVEHUoIchHgae5Etk5k3nHMqdJQ9lY07jpJClKUArp4Ap5UAnI8Al44AlIwAk4EAh38AhHIAdnEAdW0Ac2gAbWUAamQAaVwAYKIBq3kBf3cBe2sBb5UCnY0ClGUCaXUDeoYGjXcFfVQEV58Ip2gGbJoKoX8Ig3wJgZALlpMMmmwKcIoNj6EVp3gQfYYSi48clYcsjLA6tqM5qZlHnKUAsJ8ArLE0uqwOurkyxstz07SxrHpybYV6eV1RUX1tbWNXV2xfX2ZaWmVZWWldXWFWVmBVVV9UVFhOToh5eX9xcXZpaXVoaHNmZmxgYGtfX1pQUIN1dYFzc3ptbXFlZW9jY2dcXGZbW1xSUlVMTH1wcGleXlZNTYt9fYR3d3dra2NZWVlQUFFJSYh7e4Z5eVdPT5aJiZ6RkYJ3d5OHh6mdnaaampyRkZuQkJqPj56Tk6ecnJ+VlZ2Tk7OpqbaursW9vb21tcO8vMC5ubu0tMrDw8nCwuXi4v///yH5BAEAAP8ALAAAAAAWABYAAAj/AP8JHEiQYCNJlwoqXMhoE6U+CyMKFCUJj5QoEh2BGhXrx5tXqzABUgNLYidIkThRCrVn0iZPgvyoMjRHoQs9d9zgABOoDB9LmjKlcoXK1CdZOQQ+U+Djy5EhW6YIKfWI1ClEQWLIUERnwbd/14YFoIEmT6tZQOAwosVrly5ctUysC8YMLDRsO6B00bCv15Jbuer4a7JmzAlqzcL9w5bNmI0nNYBFUxeH1SET8y60+cNiGrSB2pCtMKPjmLQDSUBcEJAuA5szIbqdGyhN2wMsXCwkG4DAl7x27WBU4TFBGrKByY5V0JKFhDZtwn6xiwdghpMU3bCJGyiumAUsWTp4ovMmDBy6cgR6kFHhbBhBYtgoGCHCwRs5bczQ0TOgRMyGatcQJI4xDSBxhQjjbJMMAPXYk4AcdpRAjTMEHUMMBF5Y8YE22yADzz36MLBIJS8sYw1BwCQTgRdpeCCMMsi8w08+EtjSSQvcYKMQBkVQMUI3yQjzTj80JmLHDRIVMggK3QiTDT394ONAGIRINBATyBwTTTz4uFOAlQppk40560gUEAA7'; function filterNotifications(elt) { // Get all beeps (pop-ups about notifications). var beeps = document.evaluate(".//div[@class=\'UIBeep_Title\']", elt, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); for (var i = 0; i < beeps.snapshotLength; i++) { var beepElt = beeps.snapshotItem(i); if (beepElt && beepElt.innerHTML.indexOf('You sent a notification')) { // A notification was sent. if ((beepElt.innerHTML.indexOf('fought you')!=-1) || (beepElt.innerHTML.indexOf('fought with your help')!=-1)) { var undoElt = document.evaluate(".//a[@class=\'undo_link\']", beepElt, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null).snapshotItem(0); if (undoElt) { clickElement(undoElt); addToLog('Canceled attack notification.'); } } } } } function clickElement(elt) { if (!elt) { addToLog('BUG DETECTED: Null element passed to clickElement().'); return; } // Simulate a mouse click on the element. var evt = document.createEvent('MouseEvents'); evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); elt.dispatchEvent(evt); } //add popup listener var modificationTimer; //document.addEventListener('DOMSubtreeModified', function(e){ setTimeout(function(){ handleDOMSubtreeModified(e); }, 0);}, false); //document.addEventListener('DOMNodeInserted', function(e){setTimeout(function(){ nodeInserted(e); }, 0);}, false); // Add event listeners. setListenContent(true); resetModificationTimer(); // Turns on/off the high-level event listener for the game. function setListenContent(on) { var elt = document.getElementById('app_content_25287267406'); if (!elt) return; if (on) { elt.addEventListener('DOMSubtreeModified', handleDOMSubtreeModified, false); log('Content Event Listener Added!'); } else { elt.removeEventListener('DOMSubtreeModified', handleDOMSubtreeModified, false); log('Content Event Listener Removed!'); } } function resetModificationTimer() { if (modificationTimer) window.clearTimeout(modificationTimer); modificationTimer = window.setTimeout(handleModificationTimer, 500); } function handleModificationTimer() { // The timer has gone off, so assume that page updates have finished. log('Changes finished.'); //UpdateJobsPage(); RefreshGlobalStats(); LogEvents(); doHighPriority(); // Kick off auto-play. if(!handlePages()) doAutoPlay(); } function handleDOMSubtreeModified(e) { //consoleLogElement(e.target, 'subtree: '); var parentElt = e.target.parentNode; if (!parentElt) return; // Exclude changes related to countdowns and logging. if (ignoreElement(e.target)) return; resetModificationTimer(); } // reload logic if((GM_getValue('autoClick', '') == "checked")&& (GM_getValue('paused')==0)) { var timeWait = Math.floor(parseFloat(GM_getValue('r1', '6')) + parseFloat((GM_getValue('r2', '11'))-parseFloat(GM_getValue('r1', '6')))*Math.random())*1000; setTimeout("document.location = '"+"http://apps.facebook.com/"+SCRIPT.name+ GM_getValue('refreshPage', "/index.php")+"'", timeWait); } // page not loaded correctly... just retrun if(document.getElementById(SCRIPT.appID+'_stats_table') == null) return; function log(message) { if(debug) GM_log(message); } function RefreshGlobalStats() { log('refreshGlobalStats.'); try{ //td = document.getElementById(SCRIPT.appID+'_levelupwords').getElementsByTagName('a')[0]; //xp = td.innerHTML.toInt(); //xp2go = td.innerHTML.split('/')[1].toInt(); //td.innerHTML += ' next_lvl_in_' + (xp - xp2go); gameVersion = parseInt(document.body.innerHTML.split('facebook6.vampires.static.zynga.com/')[1].split('/graphics')[0]); level = parseInt(document.body.innerHTML.split('Level:')[1]); clan = parseInt(document.body.innerHTML.split('my clan (')[1]); blood = document.getElementById( SCRIPT.appID+'_current_cash').innerHTML.toInt(); health = parseInt(document.getElementById( SCRIPT.appID+'_current_health').innerHTML); energy = document.getElementById( SCRIPT.appID+'_current_energy').innerHTML.toInt(); rage =parseInt(document.getElementById( SCRIPT.appID+'_current_stamina').innerHTML); bankpopup = document.getElementById(SCRIPT.appID+'_bank_popup'); bank = bankpopup.getElementsByTagName('span')[0].innerHTML; var bankStat = makeElement('div', document.body); bankStat.setAttribute("style", "position: absolute; left: "+(statsLeft+92)+"px; top: "+(statsTop+145)+"px; font-family: Arial; font-size: 14px; font-weight: 400; -moz-user-select: none; -khtml-user-select: none; cursor: pointer; color: white;"); bankStat.innerHTML = 'Bank: '+bank; var statstable = document.getElementById('app25287267406_stats_table'); //Check for Active Magic! element. If it exists, remove it and correct stats display. if (document.getElementById('app25287267406_stats_table').childNodes[1].childNodes[2].innerHTML.indexOf('Active Magic')!=-1) { document.getElementById('app25287267406_stats_table').childNodes[1].childNodes[2].innerHTML=''; if (statstable.childNodes[1].childNodes[14]!=undefined) { //Giftlink present. var giftlink=statstable.childNodes[1].childNodes[14].childNodes[1].childNodes[1]; giftlink.setAttribute("style","position: relative; left: 125px; top: 30px;"); } } else { if (statstable.childNodes[1].childNodes[12]!=undefined) { //Giftlink present. var giftlink=statstable.childNodes[1].childNodes[12].childNodes[1].childNodes[1]; giftlink.setAttribute("style","position: relative; left: 125px; top: 30px;"); } } //BSF Edit (18 lines): // Get the Current Exp, Exp for next level: var ExpBlock = document.getElementById(SCRIPT.appID+'_levelupwords').innerHTML.split('return true;">')[1].split('')[0]; if (ExpBlock!=null) { var curExp = ExpBlock.split('/')[0].toInt(); var lvlExp = ExpBlock.split('/')[1].toInt(); ExpToNextLevel = lvlExp - curExp; } //BSF Edit (9 lines): //Create Exp to lvl var ExpToLvlStat = document.evaluate("//div[@class='ExpToLvl']", document,null,9,null).singleNodeValue; if(!ExpToLvlStat) { var ExpToLvlStat = makeElement('div', document.body); ExpToLvlStat.setAttribute("class", "ExpToLvl"); ExpToLvlStat.setAttribute("style", "position: absolute; left: "+(statsLeft+230)+"px; top: "+(statsTop+18)+"px; font-family: Times,serif; font-size: 12px; font-weight: 400; -moz-user-select: none; -khtml-user-select: none; cursor: pointer; color: white;"); } ExpToLvlStat.innerHTML = '(-'+ExpToNextLevel+')'; //BSF Edit (10 lines): // Get the maximum energy: var statElements = document.getElementById(SCRIPT.appID+'_stats_div').getElementsByTagName('td'); for (var i=1;i/')[1].split('')[0]; // alert('MaxEnergy = ' + MaxEnergy); var EnergyBuffGain = MaxEnergy*GM_getValue('missionExpGain', '1.5'); // alert('EnergyBuffGain = ' + EnergyBuffGain); i=statElements.length; } } catch (e){ GM_log(e);} if (GM_getValue('paused')==undefined) GM_setValue('paused',1); } //Get absolute banner position bannerTop = getPositionTop(document.getElementById(SCRIPT.appID+'_banner_row')); //140 bannerLeft = getPositionLeft(document.getElementById(SCRIPT.appID+'_banner_row')); // 300 var pauseButton = document.createElement("div"); if (GM_getValue('paused')==0) { pauseButton.setAttribute("style", "position: absolute; left: "+(bannerLeft+300)+"px; top: "+(bannerTop+150)+"px; font-family: Verdana; font-size: 10pt; font-weight: 600; -moz-user-select: none; -khtml-user-select: none; cursor: pointer; color:green;"); pauseButton.innerHTML = "Pause Autoplayer"; pauseButton.addEventListener('click', pausePlayer, false); document.body.appendChild(pauseButton); } else { pauseButton.setAttribute("style", "position: absolute; left: "+(bannerLeft+300)+"px; top: "+(bannerTop+150)+"px; font-family: Verdana; font-size: 10pt; font-weight: 600; -moz-user-select: none; -khtml-user-select: none; cursor: pointer; color:red;"); pauseButton.innerHTML = "Resume Autoplayer"; pauseButton.addEventListener('click', resumePlayer, false); document.body.appendChild(pauseButton); } //Create Bank status statsTop = getPositionTop(document.getElementById(SCRIPT.appID+'_stats_div')); statsLeft = getPositionLeft(document.getElementById(SCRIPT.appID+'_stats_div')); // menu logic var settingsButton = makeElement('div', document.body); settingsButton.innerHTML = "open settings"; settingsButton.setAttribute("style", "position: absolute; left: "+(bannerLeft+10)+"px; top: "+(bannerTop+10)+"px; font-family: Verdana; font-size: 10pt; font-weight: 600; -moz-user-select: none; -khtml-user-select: none; cursor: pointer; color: #AA0000;"); settingsButton.addEventListener('click', toggleSettings, false); if (GM_getValue('autoLog', '') == 'checked'){ var viewLogButton = makeElement('div', document.body); viewLogButton.innerHTML = "View Log"; viewLogButton.setAttribute("style", "position: absolute; left: "+(bannerLeft+450)+"px; top: "+(bannerTop+10)+"px; font-family: Verdana; font-size: 10pt; font-weight: 600; -moz-user-select: none; -khtml-user-select: none; cursor: pointer;color: #AA0000;"); viewLogButton.addEventListener('click', toggleLogBox, false); var clrLogButton = makeElement('div', document.body); clrLogButton.innerHTML = "clear log"; clrLogButton.setAttribute("style", "position: absolute; left: "+(bannerLeft+450)+"px; top: "+(bannerTop+28)+"px; font-family: Verdana; font-size: 10pt; font-weight: 600; -moz-user-select: none; -khtml-user-select: none; cursor: pointer;color: #AA0000;"); clrLogButton.addEventListener('click', clearLog, false); var logBox = makeElement('div', document.body); logBox.id = 'logBox'; logBox.innerHTML = GM_getValue('itemLog', 'log empty'); logBox.setAttribute("style", "position: absolute; overflow: scroll; left: "+bannerLeft+"px; top: "+(bannerTop+28)+"px; width: 600px; height: 300px; background: black url(http://facebook6.vampires.static.zynga.com/31993/css/ui/border_deco_fb.jpg); font-family: Verdana; font-size: 10pt; color: #FFFFFF; text-align: left; padding: 5px; border: 1px dotted; visibility: hidden; z-index: 999999;"); } function doHighPriority(){ //auto-accept gifts if(document.body.innerHTML.indexOf("Your pending gifts")!=-1){ var accept = document.evaluate("//input[@value='Accept All']", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); if(accept.snapshotLength == 1) { accept.snapshotItem(0).click(); return; } var acceptsingle = document.evaluate("//input[@value='Accept']", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); if (acceptsingle.snapshotLength == 1) { acceptsingle.snapshotItem(0).click(); return; } } // //autoGamble logic // if (location.href.indexOf(SCRIPT.name+'/lottery') != -1){ // if((GM_getValue('autoGamble', '') != "checked") || (GM_getValue('paused')!=0)) // return; // log('Autoplayer autoGamble'); // if(document.body.innerHTML.indexOf("Or come back in")!=-1){ // LotteryDue = parseInt(document.body.innerHTML.split('Or come back in ')[1]); // GM_setValue('busy',0); // var now = Math.floor(new Date().getTime() / 1000); // //time = time + 60 *(1+ parseInt(messagebox.innerHTML.split('hours and')[1])); // GM_setValue('LotteryDue',now + 3600 * LotteryDue ); // document.location = 'http://apps.facebook.com/'+SCRIPT.name+ GM_getValue('refreshPage', "/index.php"); // } // else{//Free 24hr gamble // if (GM_getValue('rBoxLeft')=='checked') BoxToOpen=1; // else if (GM_getValue('rBoxMiddle')=='checked') BoxToOpen=2; // else BoxToOpen=3; // addToLog("Free gamble, opening Chest no. "+BoxToOpen+"."); // if(GM_getValue('busy', 0) != 1) // document.location = 'http://apps.facebook.com/'+SCRIPT.name+'/lottery.php?viewState=openChest&chest='+BoxToOpen+'&useFP=1'; // GM_setValue('busy',1); // } // } // auto gifting logic if (location.href.indexOf(SCRIPT.name+'/gift') != -1){ if((GM_getValue('autoGifting', '') != "checked") || (GM_getValue('paused')!=0) || GM_getValue('giftingCount', 0)<1) return; log("auto gift " + attributes[GM_getValue('selectAttribute', 'nothing')][0] +" to "+ GM_getValue('giftingUser', 'xxxx')+" x "+ GM_getValue('giftingCount', '0')); var hash = document.body.innerHTML.split('hash=')[1].split('"')[0]; window.location = "http://apps.facebook.com/"+SCRIPT.name+"/gift_give.php?target_id="+ GM_getValue('giftingUser', 'xxxx')+"&item_id="+attributes[GM_getValue('selectAttribute', 'nothing')][1]+"&item_type="+attributes[GM_getValue('selectAttribute', 'nothing')][2]+"&do_gift=1&hash="+hash ; GM_setValue('giftingCount',GM_getValue('giftingCount', 0)-1); return; } // pause feature... dismiss the rest if( (GM_getValue('paused')!=0)) return; // autoheal if(GM_getValue('autoHeal', '') == "checked" && healthGM_getValue('healthRage', '') ){ log('Autoplayer autoHeal '+health); window.location = "http://apps.facebook.com/"+SCRIPT.name+"/index.php?popup_action=Heal"; return; } // bank logic here if(GM_getValue('autoBank', '') == "checked" && blood>parseInt(GM_getValue('bankConfig', 100000))+10){ log('Autoplayer autoBank ' + blood); depositAmount = blood-GM_getValue('bankKeep', 50000); window.location = "http://apps.facebook.com/"+SCRIPT.name+"/index.php?amount="+depositAmount+"&popup_action=Deposit&do=Deposit"; return; } } function doAutoPlay (){ //Override all javascript alerts,confirms and beforeunloads. Hopefully this will fix the 'do you want to navigate away' Facebook fuckup. unsafeWindow.onbeforeunload = function() {}; unsafeWindow.onunload = function() {}; unsafeWindow.alert = function() {}; unsafeWindow.confirm = function() {}; // pause feature... dismiss the rest if((GM_getValue('paused', 0) != 0)) return; log('Autoplayer started.'); // buffs logic if(GM_getValue('autoBuff', '') == "checked" && Math.floor(new Date().getTime() / 1000) > GM_getValue('spin',0)){ if (location.href.indexOf(SCRIPT.name+'/buffs') == -1) window.location = "http://apps.facebook.com/"+SCRIPT.name+"/buffs.php"; return; } // lottery logic if (location.href.indexOf(SCRIPT.name+'/lottery') == -1 && GM_getValue('autoGamble', '') == "checked" && Math.floor(new Date().getTime() / 1000) > GM_getValue('LotteryDue',0)){ window.location = "http://apps.facebook.com/"+SCRIPT.name+"/lottery.php"; return; } //Check for mission priority configuration value to decide if missions take priority over combat. if(GM_getValue('missionPriority','checked') == 'checked') { // automission logic here if(GM_getValue('autoMission', '') == "checked" && energy>=missions[GM_getValue('selectMission', 1)][1]){ window.location = "http://apps.facebook.com/"+SCRIPT.name+"/jobs.php?currentTier="+missions[GM_getValue('selectMission', 1)][2]; return; } // autofight if(GM_getValue('autoFight', '') == "checked" && rage>GM_getValue('fightKeepRage', 0) &&health>19){ window.location = "http://apps.facebook.com/"+SCRIPT.name+"/fight.php"; return; } } else { // autofight if(GM_getValue('autoFight', '') == "checked" && rage>GM_getValue('fightKeepRage', 0) &&health>19){ window.location = "http://apps.facebook.com/"+SCRIPT.name+"/fight.php"; return; } // automission logic here if(GM_getValue('autoMission', '') == "checked" && energy>=missions[GM_getValue('selectMission', 1)][1]){ window.location = "http://apps.facebook.com/"+SCRIPT.name+"/jobs.php?currentTier="+missions[GM_getValue('selectMission', 1)][2]; return; } } // minion cost if(GM_getValue('autoMinion', '') == "checked" && blood > GM_getValue('minionCost', 0)*10){ window.location = "http://apps.facebook.com/"+SCRIPT.name+"/properties.php"; return; } // auto gift if (location.href.indexOf(SCRIPT.name+'/gift') == -1 && GM_getValue('autoGifting', '') == "checked" && GM_getValue('giftingCount', 0)>0 ){ window.location = "http://apps.facebook.com/"+SCRIPT.name+"/gift.php?user_id="+ GM_getValue('giftingUser', 'xxxx'); return; } log('Autoplayer finished.'); //document.location = 'http://apps.facebook.com/'+SCRIPT.name+ GM_getValue('refreshPage', "/index.php"); } /////////////////////////////////////////////////////////////////////////////// // begin of page code. Automatic play is kicked off by doAutoPlay(). // /////////////////////////////////////////////////////////////////////////////// function LogEvents(){ if (document.body.innerHTML.indexOf('message_body') == -1) return; try{ var boxes = document.getElementById(SCRIPT.appID+'_content').getElementsByTagName('span'); if(boxes.length==0) return; log('Autoplayer autoLog'); var messagebox = boxes[0]; //alert(messagebox.innerHTML); if(GM_getValue('autoBuff', '') == "checked"){ // energy buff // Blannie orig: // if(energy < GM_getValue('buffEnergy', 0) && messagebox.innerHTML.indexOf('free energy refill') != -1){ //BSF Edit: (add limit to only use Energy Buff if it will not level you) if(energy < GM_getValue('buffEnergy', 0) && (messagebox.innerHTML.indexOf('free energy refill') != -1) && (EnergyBuffGain < ExpToNextLevel)){ // Blannie orig: // if (GM_getValue('autoLog', '') == "checked") // addToLog('You received a free energy refill'); //BSF Edit: (Include more info in log when using Energy Buff) if (GM_getValue('autoLog', '') == "checked") addToLog("You used an energy buff. Energy = " + energy + ' Exp to next lvl = ' + ExpToNextLevel); window.location = "http://apps.facebook.com/"+SCRIPT.name+"/jobs.php?judge_buff=energy"; return; } // autorage buff if(rage < GM_getValue('buffRage', 0) && messagebox.innerHTML.indexOf('free rage refill') != -1){ if (GM_getValue('autoLog', '') == "checked") addToLog('You received a free rage refill'); window.location = "http://apps.facebook.com/"+SCRIPT.name+"/fight.php?judge_buff=rage"; return; } } if(messagebox.innerHTML.indexOf('To complete this mission you need') != -1){ var itemMission2 = parseInt(messagebox.innerHTML.split('focus" value="')[1].split('"')[0]); if(GM_getValue('itemMission', 1)<0){ log("focus="+ itemMission2); for (var i=1;i')[1].split('')[0]; addToLog("acquired Rare Ability " + ability); } else if(messagebox.innerHTML.indexOf('You withdrew') != -1){ log("WITHDREW "+messagebox.innerHTML); var deposit = messagebox.innerHTML.split('blood.gif">')[1]; addToLog("withrew " + deposit.toInt()); } else if(messagebox.innerHTML.indexOf('deposited and stored safely') != -1){ log("DEPOSIT "+messagebox.innerHTML); var deposit = messagebox.innerHTML.split('blood.gif">')[1]; addToLog("deposit " + deposit.toInt()); } else if(messagebox.innerHTML.indexOf('more health') != -1){ var addHealth = messagebox.innerHTML.split('You get')[1].split('more health')[0]; var cost = 0; if(messagebox.innerHTML.indexOf('blood.gif">') != -1) cost = messagebox.innerHTML.split('blood.gif">')[1]; addToLog("health +"+ addHealth + " for " + cost.toInt()); } else if(messagebox.innerHTML.indexOf('You fought with') != -1){ log("FIGHT "+messagebox.innerHTML); var user = messagebox.innerHTML.split('href="')[1].split('"')[0]; user = ''+messagebox.innerHTML.split('return true;">')[1].split('')[0]+''; var battleResult = document.evaluate("//span[@class='good']",document,null,9,null).singleNodeValue; if(battleResult!=null && battleResult.innerHTML.indexOf('blood.gif">') != -1){ var cost = battleResult.innerHTML.split('blood.gif">')[1]; addToLog("fought "+ user + " WON " +cost.toInt()); } battleResult = document.evaluate("//span[@class='bad']",document,null,9,null).singleNodeValue; if(battleResult!=null && battleResult.innerHTML.indexOf('blood.gif">') != -1) { var cost = battleResult.innerHTML.split('blood.gif">')[1]; addToLog("fought "+ user + " LOST " +cost.toInt()); } //BSF Edit: // Commented out logging of found items from fights. // for (var i=1;i')[1].split('Repay the favor')[0]); } else if(messagebox.innerHTML.indexOf('The wheel halts suddenly') != -1){ log("WHEEL "+messagebox.innerHTML); addToLog(messagebox.innerHTML.split('
')[1]); setTimeout("document.location ='" + "http://apps.facebook.com/"+SCRIPT.name+"/buffs.php'", delay); return; } else if(messagebox.innerHTML.indexOf('hours and') != -1){ log("CRYPT "+messagebox.innerHTML); // index page shows crypt timer if (location.href.indexOf(SCRIPT.name+'/index') != -1){ // do nothing for now } // buffs page shows buff timer if (location.href.indexOf(SCRIPT.name+'/buffs') != -1){ var now = Math.floor(new Date().getTime() / 1000); time = 3600 * parseInt(messagebox.innerHTML.split('hours')[0]); time = time + 60 *(1+ parseInt(messagebox.innerHTML.split('hours and')[1])); GM_setValue('spin',now + time ); } } else if(messagebox.innerHTML.indexOf('Fresh Meat') != -1){ log("Fresh "+messagebox.innerHTML); // do nothing } else if(messagebox.innerHTML.indexOf('icon-blood.gif') != -1){ //log("BLOOD "+messagebox.innerHTML); // do nothing } else if(messagebox.innerHTML.indexOf('received your gift') != -1){ addToLog(messagebox.innerHTML.split('
')[1]); } else if(messagebox.innerHTML.indexOf('You cannot heal so fast') != -1){ //document.getElementById(SCRIPT.appID+'_health_refill_popup').style.display = 'block'; //setTimeout(function(){document.getElementById(SCRIPT.appID+'_health_refill_popup').getElementsByTagName('form')[0].submit();},delay); setTimeout(function(){window.location = "http://apps.facebook.com/"+SCRIPT.name+"/index.php?popup_action=Heal";},10000); return; } else if(messagebox.innerHTML.indexOf('You do not have enough favor points to spin the wheel again') != -1){ window.location = "http://apps.facebook.com/"+SCRIPT.name+"/buffs.php"; return; } else if(messagebox.innerHTML.indexOf('You gave') != -1){ addToLog('You gave ' + messagebox.innerHTML.split('You gave')[1].split('<')[0]); } else if(messagebox.innerHTML.indexOf('delete all news') != -1){ //delete all news } else if(messagebox.innerHTML.indexOf('To complete this mission you need:') != -1){ GM_setValue('autoMission',0); addToLog('Unable to continue auto-Mission, missing a required item.'); setTimeout("document.location ='" + "http://apps.facebook.com/"+SCRIPT.name+"/index.php'", delay); } var missioncompleted = document.evaluate("//div[@class='mission_success']", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); var missionmastery = document.evaluate("//div[@class='mission_masterybar']", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); if (missioncompleted.snapshotLength > 0) { missionName = missioncompleted.snapshotItem(0).innerHTML.substring((missioncompleted.snapshotItem(0).innerHTML.indexOf('You successfully completed: ')+28),missioncompleted.snapshotItem(0).innerHTML.indexOf('!')); if (missionmastery.snapshotLength > 0) { masterLevel = missionmastery.snapshotItem(0).innerHTML.substring(missionmastery.snapshotItem(0).innerHTML.indexOf('Level'),missionmastery.snapshotItem(0).innerHTML.indexOf('%'))+'%'; missionName = missionName + ' - ' + masterLevel; } addToLog('Mission Completed: '+missionName); } //else //alert(messagebox.innerHTML); } catch(e){} } function handlePages(){ var menu = document.evaluate("//li[@class='us_tabs'] | //li[@class='selected_tab']", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); var submenu = document.evaluate("//div[@class='subWrapLeft_active'] | //div[@class='subWrapLeft_inactive']", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); if(menu==null || submenu==null ||submenu.snapshotLength == 0) return; for (var index = 0 ; index < menu.snapshotLength; index++) if( menu.snapshotItem(index).getAttribute('class') == "selected_tab") break; for (var subindex = 0 ; subindex < submenu.snapshotLength; subindex++) if( submenu.snapshotItem(subindex).getAttribute('class') == "subWrapLeft_active") break; if(index==0 && submenu.snapshotLength==2) index = 7; log("found selected tab " + menuItems[index][subindex][0]); // now we know on what page we are... trigger a function accoringly if( menuItems[index][subindex][1]!=null){ window.setTimeout(menuItems[index][subindex][1], 500); return true; } return false; } function DoBloodMagic(){ if(GM_getValue('autoBuff', '') != "checked" || GM_getValue('paused')!=0 ) return; var now = Math.floor(new Date().getTime() / 1000); if (now > GM_getValue('spin',0)){ log('Autoplayer Blood Magic'); var time = document.evaluate("//span[@class='treasure_timer']",document,null,9,null).singleNodeValue; if(time==null) // time run out... do the buff window.location = "http://apps.facebook.com/"+SCRIPT.name+"/buffs.php?doBuff=1"; else{ GM_setValue('spin',now + 3600 * parseInt(time.innerHTML.split('hours')[0])+ 60 *(1+ parseInt(time.innerHTML.split('hours and')[1]))); return; } } } function JudgePeople(){ if(GM_getValue('autoJudge', '') != "checked" | GM_getValue('paused')!=0 | GM_getValue('JudgeCount', 0)<1) return; log('JudgePeople'); var judgeList = document.evaluate("//div[@class='judge1']",document,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null); for (var index = 0 ; index < judgeList.snapshotLength ; index++){ document.getElementById(SCRIPT.appID+'_vote'+index +'_'+ (1+GM_getValue('JudgeRating', 1))).checked ="checked"; document.getElementById(SCRIPT.appID+'_comment_textarea'+index).innerHTML = GM_getValue('JudgeComment', "no comment"); } GM_setValue('JudgeCount',GM_getValue('JudgeCount', 0)-1); setTimeout(function(){document.getElementById(SCRIPT.appID+'_comment_submit').click();},delay); } function DoMissions(){ var jobs = document.evaluate("//tr[@class='darkRow'] | //tr[@class='lightRow'] | //tr[@class='']", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); UpdateJobsPage(jobs); if(GM_getValue('autoMission', '') != "checked" || GM_getValue('paused')!=0) return; if (GM_getValue('itemMission')==undefined) GM_setValue('itemMission', -1); var missionOnPage = GM_getValue('itemMission', 0); if(missionOnPage>0 && energy>missions[missionOnPage][1]) { log("energy "+energy +" itemMission "+missionOnPage+"="+missions[missionOnPage][0]); if (location.href.indexOf(SCRIPT.name+"/jobs.php?currentTier="+missions[missionOnPage][2]) == -1){ window.location = "http://apps.facebook.com/"+SCRIPT.name+"/jobs.php?currentTier="+missions[missionOnPage][2]; return; } log('Autoplayer autoMission '+missionOnPage+ " "+ energy); var sform =jobs.snapshotItem(missions[missionOnPage][3]).getElementsByTagName('a'); sform = sform[sform.length-1]; log('Executing mission '+missions[missionOnPage][3]+' on this tab.'); setTimeout("document.location = '"+sform.href+"'", delay); GM_setValue('itemMission', -1); return; } var missionOnPage = GM_getValue('selectMission', 0); if(energy19){ // log('Autoplayer Health: ' + health); if(GM_getValue('fightRandom', '') == "checked"){ // log('Fighting mode: Random'); var opponents = document.evaluate("//input[@name='opponent_id']",document,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null); //log('Opponents count: ' + opponents.snapshotLength); for (fightIndex=0; fightIndex')[1]; opponentRating = parseInt(opponentRating.replace(",", "")); var opponentClan = parseInt(fightNode.innerHTML.split('groupsize">')[2]); if (opponentLevel <= GM_getValue('fightLevel', '100') && opponentClan <= GM_getValue('fightClanSize', '502') && opponentRating >= GM_getValue('fightClanRating', '500') && opponentRating <= GM_getValue('fightClanMaxRating', '5000')) { // log('Opponent Level : ' + opponentLevel); // log('Opponent Rating: ' + opponentRating); // log('Opponent Clan : ' + opponentClan); // log('Opponent ID : #' + opponentNode.value); setTimeout("document.location = '"+"http://apps.facebook.com/"+SCRIPT.name+"/fight.php?opponent_id="+opponentNode.value+"&action=attack"+"'", 500); return; } } catch (e){} } } setTimeout("document.location ='" + "http://apps.facebook.com/"+SCRIPT.name+"/fight.php"+"'", delay); } if(GM_getValue('rFightList', '') == "checked") setTimeout("document.location = '"+"http://apps.facebook.com/"+SCRIPT.name+"/fight.php?opponent_id="+parseInt(GM_getValue('fightList', ''))+"&action=attack"+"'", delay); } } function UpdateStats(){ if(GM_getValue('autoStats', '') != "checked" || (GM_getValue('paused')!=0)) //level==GM_getValue('currentlevel', 1) || return; var skillpoints = document.body.innerHTML.split('You have ')[1]; if(skillpoints==null) return; skillpoints = parseInt(skillpoints); log('Autoplayer UpdateStats '+skillpoints); var attributes = document.evaluate("//table[@class='main']",document,null,9,null).singleNodeValue; var strength = parseInt(attributes.getElementsByTagName('tr')[1].getElementsByTagName('td')[1].innerHTML); if(GM_getValue('attackStat', 0)>strength && skillpoints>0){ setTimeout("document.location = '"+attributes.getElementsByTagName('tr')[1].getElementsByTagName('a')[0].href+"'", delay); return; } else if(GM_getValue('attackStat', 0)defence && skillpoints>0) { setTimeout("document.location = '"+attributes.getElementsByTagName('tr')[2].getElementsByTagName('a')[0].href+"'", delay); return; } else if(GM_getValue('defenceStat', 0)energystat && skillpoints>0){ setTimeout("document.location = '"+attributes.getElementsByTagName('tr')[3].getElementsByTagName('a')[0].href+"'", delay); return; } else if(GM_getValue('energyStat', 0)healthstat && skillpoints>0){ setTimeout("document.location = '"+attributes.getElementsByTagName('tr')[4].getElementsByTagName('a')[0].href+"'", delay); return; } else if(GM_getValue('healthStat', 0)ragestat && skillpoints>1){ setTimeout("document.location = '"+attributes.getElementsByTagName('tr')[5].getElementsByTagName('a')[0].href+"'", delay); return; } else if(GM_getValue('rageStat', 0)0){ var minionIncome = parseInt(minions.snapshotItem(index).getElementsByTagName('td')[1].getElementsByTagName('span')[0].innerHTML.split('blood.gif">')[1].split(',').join(''),10); var minionCost = parseInt(minions.snapshotItem(index).getElementsByTagName('td')[2].getElementsByTagName('span')[0].innerHTML.split('blood.gif">')[1].split(',').join(''),10); if (minionCost / minionIncome < minReturn) minReturn = minionCost / minionIncome; } } // Iterate minions to display cost per blood and purchase if able for (var index = minions.snapshotLength-1; index >=0 ; index--) { var hasForm = minions.snapshotItem(index).getElementsByTagName('td')[3].getElementsByTagName('form'); // Ensure minion is purchasable if(hasForm.length>0){ var minionIncome = parseInt(minions.snapshotItem(index).getElementsByTagName('td')[1].getElementsByTagName('span')[0].innerHTML.split('blood.gif">')[1].split(',').join(''),10); var minionCost = parseInt(minions.snapshotItem(index).getElementsByTagName('td')[2].getElementsByTagName('span')[0].innerHTML.split('blood.gif">')[1].split(',').join(''),10); var divSpot = minions.snapshotItem(index).getElementsByTagName('td')[1]; var divbox = document.createElement('div'); if (minionCost / minionIncome == minReturn){ GM_setValue('minionCost', minionCost); divbox.innerHTML = 'Cost per blood: ' + (minionCost / minionIncome).toFixed(2) + ''; // Auto-purchase minion if(GM_getValue('autoMinion', '') == "checked" && blood > minionCost*10 && (GM_getValue('paused')==0)){ var minionForm = minions.snapshotItem(index).getElementsByTagName('td')[3].getElementsByTagName('form')[0]; minionForm.getElementsByTagName('select')[0].value =10; setTimeout(function(){minionForm.submit();},delay); return; } } else divbox.innerHTML = 'Cost per blood: ' + (minionCost / minionIncome).toFixed(2) + ''; divSpot.appendChild(divbox); } } } // Auto-purchase minions - no AJAX (Zorkfour) if (location.href.indexOf(SCRIPT.name+'/properties') != -1){ if(blood==undefined){ RefreshGlobalStats(); } UpdateMinionPage(); } // Modifications to the Missions page function UpdateJobsPage(jobs){ log('UpdateJobsPage'); var maxReturn = 0; // Iterate jobs to determine best return on investment for (var index = 0 ; index < jobs.snapshotLength; index++){ var jobIncome = parseInt(jobs.snapshotItem(index).getElementsByTagName('td')[2].title.split(' Energy').join(''),10); var jobCost = parseInt(jobs.snapshotItem(index).getElementsByTagName('td')[1].innerHTML.split('Exp: +')[1].split(' ').join(''),10); if (jobCost / jobIncome > maxReturn) maxReturn = jobCost / jobIncome; } // Iterate jobs to display Exp gained per Energy spent for (var index = jobs.snapshotLength-1; index >=0 ; index--) { var jobIncome = parseInt(jobs.snapshotItem(index).getElementsByTagName('td')[2].title.split(' Energy').join(''),10); var jobCost = parseInt(jobs.snapshotItem(index).getElementsByTagName('td')[1].innerHTML.split('Exp: +')[1].split(' ').join(''),10); if (jobCost / jobIncome == maxReturn){ GM_setValue('jobCost', jobCost); jobGainText = '  (Pays ' + (jobCost / jobIncome).toFixed(2) + 'x)'; } else jobGainText = '  (Pays ' + (jobCost / jobIncome).toFixed(2) + 'x)'; if (jobs.snapshotItem(index).getElementsByTagName('td')[1].innerHTML.indexOf('Rumored ') != -1) jobs.snapshotItem(index).getElementsByTagName('td')[1].innerHTML = jobs.snapshotItem(index).getElementsByTagName('td')[1].innerHTML.replace(' "; var coffinMenu = makeElement('div', settingsBox,{'style':'position: absolute; left:240px; color: #FFFFFF;', 'id':'coffinMenu'}); coffinMenu.innerHTML = ""; coffinMenu.addEventListener('click', coffinMenuSelect, false); var missionMenu = makeElement('div', settingsBox,{'style':'position: absolute; left:320px; color: #FFFFFF;', 'id':'missionMenu'}); missionMenu.innerHTML = ""; missionMenu.addEventListener('click', missionMenuSelect, false); var combatMenu = makeElement('div', settingsBox,{'style':'position: absolute; left:400px; color: #FFFFFF;', 'id':'combatMenu'}); combatMenu.innerHTML = ""; combatMenu.addEventListener('click', combatMenuSelect, false); var bazaarMenu = makeElement('div', settingsBox,{'style':'position: absolute; left:480px; color: #FFFFFF;', 'id':'bazaarMenu'}); bazaarMenu.innerHTML = ""; bazaarMenu.addEventListener('click', bazaarMenuSelect, false); /* Coffin tab*/ var coffinTab = makeElement('div', settingsBox,{'style':'position: absolute; top: 100px; width: 748px; height: 365px; color: #FFFFFF; ', 'id':'coffinTab'}); var autoClick = makeElement('div', coffinTab,{'style':'position: absolute; left:40px; top: 0px; color: #FFFFFF;'}); autoClick.innerHTML = "enable auto-refresh"; var refreshTimes = makeElement('div', coffinTab,{'style':'position: absolute; left:40px; top: 25px; color: #FFFFFF;'}); refreshTimes.innerHTML = "refresh every "; refreshTimes.innerHTML += " to seconds"; var refreshPage = makeElement('div', coffinTab,{'style':'position: absolute; left:40px; top: 50px; color: #FFFFFF;'}); refreshPage.innerHTML = "url: "; var autoLog = makeElement('div', coffinTab,{'style':'position: absolute; left:40px; top: 75px; color: #FFFFFF;'}); autoLog.innerHTML = "enable auto logging"; var autoClan = makeElement('div', coffinTab,{'style':'position: absolute; left:40px; top: 100px; color: #FFFFFF;'}); autoClan.innerHTML = "auto accept clan invites"; var missionPrio = makeElement('div', coffinTab,{'style':'position: absolute; left:40px; top: 125px; color: #FFFFFF;'}); missionPrio.innerHTML = "Prioritize Missions over Combat"; //(GM_getValue('LotteryDue',0) - Math.floor(new Date().getTime() / 1000)) + " seconds"; // var autoTreasure = makeElement('div', coffinTab,{'style':'position: absolute; left:300px; top: 150px; color: #FFFFFF;'}); // autoTreasure.innerHTML = "enable opening Treasure Chest"; var autoBank = makeElement('div', coffinTab,{'style':'position: absolute; left:40px; top: 175px; color: #FFFFFF;'}); autoBank.innerHTML = "enable auto-Bank"; var bankConfig = makeElement('div', coffinTab,{'style':'position: absolute; left:40px; top: 200px; color: #FFFFFF;'}); bankConfig.innerHTML = "above: "+" keep: "; var autoJudge = makeElement('div', coffinTab,{'style':'position: absolute; left:300px; top: 0px; color: #FFFFFF;'}); autoJudge.innerHTML = "auto-Judge"; autoJudge.innerHTML += "#: "; var JudgeRating = makeElement('select', coffinTab, {'style':'position: absolute; top: 25px; left:300px;', 'id':'JudgeRating'}); for each (var rating in ratings ) { var choice = document.createElement('option'); choice.value = rating; choice.appendChild(document.createTextNode(rating)); JudgeRating.appendChild(choice); } JudgeRating.selectedIndex = GM_getValue('JudgeRating', 1); var JudgeComment = makeElement('div', coffinTab,{'style':'position: absolute; left:300px; top: 50px; color: #FFFFFF;'}); JudgeComment.innerHTML = "Comment:
"; var autoStats = makeElement('div', coffinTab,{'style':'position: absolute; left:500px; top: 0px; color: #FFFFFF;'}); autoStats.innerHTML = "enable auto-Stats"; var AttackStat = makeElement('div', coffinTab,{'style':'position: absolute; left:520px; top: 25px; color: #FFFFFF;'}); AttackStat.innerHTML = "Attack Strength: "; var DefenceStat = makeElement('div', coffinTab,{'style':'position: absolute; left:520px; top: 50px; color: #FFFFFF;'}); DefenceStat.innerHTML = "Defense Strength: "; var EnergyStat = makeElement('div', coffinTab,{'style':'position: absolute; left:520px; top: 75px; color: #FFFFFF;'}); EnergyStat.innerHTML = "Maximum Energy: "; var HealthStat = makeElement('div', coffinTab,{'style':'position: absolute; left:520px; top: 100px; color: #FFFFFF;'}); HealthStat.innerHTML = "Maximum Health: "; var RageStat = makeElement('div', coffinTab,{'style':'position: absolute; left:520px; top: 125px; color: #FFFFFF;'}); RageStat.innerHTML = "Maximum Rage: "; var autoBuff = makeElement('div', coffinTab,{'style':'position: absolute; left:500px; top: 150px; color: #FFFFFF;'}); autoBuff.innerHTML = "enable auto-Buff"; var buffEnergy = makeElement('div', coffinTab,{'style':'position: absolute; left:520px; top: 175px; color: #FFFFFF;'}); buffEnergy.innerHTML = "Energy below: "; var buffRage = makeElement('div', coffinTab,{'style':'position: absolute; left:520px; top: 200px; color: #FFFFFF;'}); buffRage.innerHTML = "Rage below: "; /* Mission tab*/ var missionTab = makeElement('div', settingsBox,{'style':'position: absolute; top: 100px; width: 748px; height: 365px; color: #FFFFFF; visibility:hidden;', 'id':'missionTab'}); var autoMission = makeElement('div', missionTab,{'style':'position: absolute; left:40px; top: 0px; color: #FFFFFF;'}); autoMission.innerHTML = "enable auto-Mission"; var selectMission = makeElement('select', missionTab, {'style':'position: absolute; top: 25px; left:40px;', 'id':'selectMission'}); var missioni=0; for each (var mission in missions ) { if (mission[3]==0) { //Tab header creation var choiceTab = document.createElement('optgroup'); tabtocreate = mission[2]; choiceTab.label = missionTabs[tabtocreate]; choiceTab.setAttribute("style","background-color: #CCCCCC"); selectMission.appendChild(choiceTab); } var choice = document.createElement('option'); choice.value = mission[0]; choice.appendChild(document.createTextNode(mission[0])); selectMission.appendChild(choice); } selectMission.selectedIndex = GM_getValue('selectMission', 1); //BSF Edit (2 lines): var missionExpGain = makeElement('div', missionTab,{'style':'position: absolute; left:40px; top: 50px; color: #FFFFFF;'}); missionExpGain.innerHTML = "Avg. Mission Exp Gain: "; var missionMastery = makeElement('div', missionTab,{'style':'position: absolute; left:300px; top: 0px; color: #FFFFFF;'}); missionMastery.innerHTML = "Force mission Mastery"; /* Combat tab*/ var combatTab = makeElement('div', settingsBox,{'style':'position: absolute; top: 100px; width: 748px; height: 365px; color: #FFFFFF; visibility:hidden;', 'id':'combatTab'}); var autoFight = makeElement('div', combatTab,{'style':'position: absolute; left:40px; top: 0px; color: #FFFFFF;'}); autoFight.innerHTML = "enable auto-Fight"; var fightKeepRage = makeElement('div', combatTab,{'style':'position: absolute; left:60px; top: 25px; color: #FFFFFF;'}); fightKeepRage.innerHTML = "fight above Rage: "; //BSF Edit (2 lines): var fightExpGain = makeElement('div', combatTab,{'style':'position: absolute; left:60px; top: 50px; color: #FFFFFF;'}); fightExpGain.innerHTML = "Avg. Fight Exp Gain: "; var autoHeal = makeElement('div', combatTab,{'style':'position: absolute; left:40px; top: 75px; color: #FFFFFF;'}); autoHeal.innerHTML = "enable auto-Heal"; var healthLevel = makeElement('div', combatTab,{'style':'position: absolute; left:40px; top: 100px; color: #FFFFFF;'}); healthLevel.innerHTML = "min. health: "; var healthRage = makeElement('div', combatTab,{'style':'position: absolute; left:160px; top: 100px; color: #FFFFFF;'}); healthRage.innerHTML = "max. Rage: "; var fightRandom = makeElement('div', combatTab,{'style':'position: absolute; left:300px; top: 0px; color: #FFFFFF;'}); fightRandom.innerHTML = " fight random vampires"; // blannie orig: // var fightLevel = makeElement('div', combatTab,{'style':'position: absolute; left:320px; top: 25px; color: #FFFFFF;'}); // fightLevel.innerHTML = "max. level: "; // // var fightClanSize = makeElement('div', combatTab,{'style':'position: absolute; left:320px; top: 50px; color: #FFFFFF;'}); // fightClanSize.innerHTML = "max. clan: "; // // var fightClanRating = makeElement('div', combatTab,{'style':'position: absolute; left:320px; top: 75px; color: #FFFFFF;'}); // fightClanRating.innerHTML = "min. rating: "; // // var fightClanRatingMax = makeElement('div', combatTab,{'style':'position: absolute; left:320px; top: 100px; color: #FFFFFF;'}); // fightClanRatingMax.innerHTML = "max. rating: "; //BSF Edit: // Adds additional parameters to Settings Menu (next 17 lines): /* var fightMinLevel = makeElement('div', combatTab,{'style':'position: absolute; left:310px; top: 25px; color: #FFFFFF;'}); fightMinLevel.innerHTML = "Level  Min: "; var fightLevel = makeElement('div', combatTab,{'style':'position: absolute; left:430px; top: 25px; color: #FFFFFF;'}); fightLevel.innerHTML = "Max: "; */ // blannie orig: // var fightMinClanSize = makeElement('div', combatTab,{'style':'position: absolute; left:310px; top: 50px; color: #FFFFFF;'}); // fightMinClanSize.innerHTML = "Clan   Min: "; // // var fightClanSize = makeElement('div', combatTab,{'style':'position: absolute; left:430px; top: 50px; color: #FFFFFF;'}); // fightClanSize.innerHTML = "Max: "; // // var fightClanRating = makeElement('div', combatTab,{'style':'position: absolute; left:310px; top: 75px; color: #FFFFFF;'}); // fightClanRating.innerHTML = "Skill    Min: "; // // var fightClanMaxRating = makeElement('div', combatTab,{'style':'position: absolute; left:430px; top: 75px; color: #FFFFFF;'}); // fightClanMaxRating.innerHTML = "Max: "; //BSF Edit: // Adds additional parameters to Settings Menu (next 17 lines): var fightMinLevel = makeElement('div', combatTab,{'style':'position: absolute; left:310px; top: 25px; color: #FFFFFF;'}); fightMinLevel.innerHTML = "Level  Min: "; var fightLevel = makeElement('div', combatTab,{'style':'position: absolute; left:430px; top: 25px; color: #FFFFFF;'}); fightLevel.innerHTML = "Max: "; var fightMinClanSize = makeElement('div', combatTab,{'style':'position: absolute; left:310px; top: 50px; color: #FFFFFF;'}); fightMinClanSize.innerHTML = "Clan   Min: "; var fightClanSize = makeElement('div', combatTab,{'style':'position: absolute; left:430px; top: 50px; color: #FFFFFF;'}); fightClanSize.innerHTML = "Max: "; var fightClanRating = makeElement('div', combatTab,{'style':'position: absolute; left:310px; top: 75px; color: #FFFFFF;'}); fightClanRating.innerHTML = "Skill    Min: "; var fightClanMaxRating = makeElement('div', combatTab,{'style':'position: absolute; left:430px; top: 75px; color: #FFFFFF;'}); fightClanMaxRating.innerHTML = "Max: "; var fightList = makeElement('div', combatTab,{'style':'position: absolute; left:500px; top: 0px; color: #FFFFFF;'}); fightList.innerHTML = " fight list:
"; /* Bazaar tab*/ var bazaarTab = makeElement('div', settingsBox,{'style':'position: absolute; top: 100px; width: 748px; height: 365px; color: #FFFFFF; visibility:hidden;', 'id':'bazaarTab'}); var autoGifting = makeElement('div', bazaarTab,{'style':'position: absolute; left:40px; top: 0px; color: #FFFFFF;'}); autoGifting.innerHTML = "enable auto-Gifting"; var selectAttribute = makeElement('select', bazaarTab, {'style':'position: absolute; top: 25px; left:40px;', 'id':'selectAttribute'}); for each (var attribute in attributes ) { var choice = document.createElement('option'); choice.value = attribute[0]; choice.appendChild(document.createTextNode(attribute[0])); selectAttribute.appendChild(choice); } selectAttribute.selectedIndex = GM_getValue('selectAttribute', 1); var giftingCount = makeElement('div', bazaarTab,{'style':'position: absolute; left:40px; top: 50px; color: #FFFFFF;'}); giftingCount.innerHTML = "Gift count: "; var giftingUser = makeElement('div', bazaarTab,{'style':'position: absolute; left:40px; top: 75px; color: #FFFFFF;'}); giftingUser.innerHTML = "Gift to userID: "; var autoMinion = makeElement('div', bazaarTab,{'style':'position: absolute; left:300px; top: 0px; color: #FFFFFF;'}); autoMinion.innerHTML = "enable auto minion purchase
Next minion cost: ' + GM_getValue('minionCost', 0)+ ''; var autoAbility = makeElement('div', bazaarTab,{'style':'position: absolute; left:300px; top: 55px; color: #FFFFFF;'}); autoAbility.innerHTML = "enable auto ability upgrading"; var autoGamble = makeElement('div', bazaarTab,{'style':'position: absolute; left:300px; top: 100px; color: #FFFFFF;'}); autoGamble.innerHTML = "enable auto Akem's Gamble"; var gamblebox1 = makeElement('div', bazaarTab,{'style':'position: absolute; left:300px; top: 125px; color: #FFFFFF;'}); gamblebox1.innerHTML = " Left "; var gamblebox2 = makeElement('div', bazaarTab,{'style':'position: absolute; left:350px; top: 125px; color: #FFFFFF;'}); gamblebox2.innerHTML = " Middle "; var gamblebox3 = makeElement('div', bazaarTab,{'style':'position: absolute; left:420px; top: 125px; color: #FFFFFF;'}); gamblebox3.innerHTML = " Right "; var gambleTime = makeElement('div', bazaarTab,{'style':'position: absolute; left:300px; top: 150px; color: #FFFFFF;'}); gambleTime.innerHTML = "free gamble: " + new Date(1000 *GM_getValue('LotteryDue',0)).format("h:MM:ss TT"); /* other buttons*/ var updateButton = makeElement('div', settingsBox,{'style':'position: absolute; left:150px; top: 335px;'}); updateButton.innerHTML = ""; updateButton.addEventListener('click', updateScript, false); var saveButton = makeElement('div', settingsBox,{'style':'position: absolute; left:300px; top: 335px; color: #FFFFFF;'}); saveButton.innerHTML = ""; saveButton.addEventListener('click', saveSettings, false); var saveNotification = makeElement('div', settingsBox,{'id':'saveNotification'}); saveNotification.innerHTML = "Settings Saved"; saveNotification.setAttribute("style","position: absolute;left:450px;top:335px;color:red;visibility:hidden;font-size:14px;"); return settingsBox; } function coffinMenuSelect(){ document.getElementById('coffinMenu').innerHTML = ""; document.getElementById('missionMenu').innerHTML = ""; document.getElementById('combatMenu').innerHTML = ""; document.getElementById('bazaarMenu').innerHTML = ""; document.getElementById('coffinTab').style.visibility = "visible"; document.getElementById('missionTab').style.visibility = "hidden"; document.getElementById('combatTab').style.visibility = "hidden"; document.getElementById('bazaarTab').style.visibility = "hidden"; } function missionMenuSelect(){ document.getElementById('coffinMenu').innerHTML = ""; document.getElementById('missionMenu').innerHTML = ""; document.getElementById('combatMenu').innerHTML = ""; document.getElementById('bazaarMenu').innerHTML = ""; document.getElementById('coffinTab').style.visibility = "hidden"; document.getElementById('missionTab').style.visibility = "visible"; document.getElementById('combatTab').style.visibility = "hidden"; document.getElementById('bazaarTab').style.visibility = "hidden"; } function combatMenuSelect(){ document.getElementById('coffinMenu').innerHTML = ""; document.getElementById('missionMenu').innerHTML = ""; document.getElementById('combatMenu').innerHTML = ""; document.getElementById('bazaarMenu').innerHTML = ""; document.getElementById('coffinTab').style.visibility = "hidden"; document.getElementById('missionTab').style.visibility = "hidden"; document.getElementById('combatTab').style.visibility = "visible"; document.getElementById('bazaarTab').style.visibility = "hidden"; } function bazaarMenuSelect(){ document.getElementById('coffinMenu').innerHTML = ""; document.getElementById('missionMenu').innerHTML = ""; document.getElementById('combatMenu').innerHTML = ""; document.getElementById('bazaarMenu').innerHTML = ""; document.getElementById('coffinTab').style.visibility = "hidden"; document.getElementById('missionTab').style.visibility = "hidden"; document.getElementById('combatTab').style.visibility = "hidden"; document.getElementById('bazaarTab').style.visibility = "visible"; } function saveSettings(){ GM_setValue('autoClick', document.getElementById('autoClick').checked ? 'checked' : '0'); GM_setValue('autoClan', document.getElementById('autoClan').checked ? 'checked' : '0'); GM_setValue('missionPriority', document.getElementById('missionPriority').checked ? 'checked' : '0'); GM_setValue('autoMission', document.getElementById('autoMission').checked ? 'checked' : '0'); GM_setValue('missionExpGain', document.getElementById('missionExpGain').value); GM_setValue('missionMastery', document.getElementById('missionMastery').checked ? 'checked' : '0'); GM_setValue('autoBank', document.getElementById('autoBank').checked ? 'checked' : '0'); GM_setValue('autoHeal', document.getElementById('autoHeal').checked ? 'checked' : '0'); GM_setValue('autoBuff', document.getElementById('autoBuff').checked ? 'checked' : '0'); GM_setValue('autoFight', document.getElementById('autoFight').checked ? 'checked' : '0'); GM_setValue('fightRandom', document.getElementById('fightRandom').checked ? 'checked' : '0'); GM_setValue('rFightList', document.getElementById('rFightList').checked ? 'checked' : '0'); GM_setValue('autoLog', document.getElementById('autoLog').checked ? 'checked' : '0'); GM_setValue('autoGamble', document.getElementById('autoGamble').checked ? 'checked' : '0'); GM_setValue('autoJudge', document.getElementById('autoJudge').checked ? 'checked' : '0'); GM_setValue('autoAbility', document.getElementById('autoAbility').checked ? 'checked' : '0'); GM_setValue('rBoxLeft', document.getElementById('rBoxLeft').checked ? 'checked' : '0'); GM_setValue('rBoxMiddle', document.getElementById('rBoxMiddle').checked ? 'checked' : '0'); GM_setValue('rBoxRight', document.getElementById('rBoxRight').checked ? 'checked' : '0'); GM_setValue('autoStats', document.getElementById('autoStats').checked ? 'checked' : '0'); GM_setValue('autoMinion', document.getElementById('autoMinion').checked ? 'checked' : '0'); GM_setValue('refreshPage', document.getElementById('refreshPage').value); GM_setValue('selectMission', document.getElementById('selectMission').selectedIndex ); GM_setValue('bankConfig', document.getElementById('bankConfig').value); GM_setValue('bankKeep', document.getElementById('bankKeep').value); GM_setValue('r1', document.getElementById('r1').value); GM_setValue('r2', document.getElementById('r2').value); GM_setValue('JudgeComment', document.getElementById('JudgeComment').value); GM_setValue('fightList', document.getElementById('fightList').value); GM_setValue('healthLevel', document.getElementById('healthLevel').value); GM_setValue('healthRage', document.getElementById('healthRage').value); GM_setValue('fightKeepRage', document.getElementById('fightKeepRage').value); GM_setValue('fightExpGain', document.getElementById('fightExpGain').value); GM_setValue('fightMinLevel', document.getElementById('fightMinLevel').value); GM_setValue('fightLevel', document.getElementById('fightLevel').value); GM_setValue('fightMinClanSize', document.getElementById('fightMinClanSize').value); GM_setValue('fightClanSize', document.getElementById('fightClanSize').value); GM_setValue('fightClanRating', document.getElementById('fightClanRating').value); GM_setValue('fightClanMaxRating', document.getElementById('fightClanMaxRating').value); GM_setValue('attackStat', document.getElementById('AttackStat').value); GM_setValue('defenceStat', document.getElementById('DefenceStat').value); GM_setValue('energyStat', document.getElementById('EnergyStat').value); GM_setValue('healthStat', document.getElementById('HealthStat').value); GM_setValue('rageStat', document.getElementById('RageStat').value); GM_setValue('buffEnergy', document.getElementById('buffEnergy').value); GM_setValue('buffRage', document.getElementById('buffRage').value); GM_setValue('autoGifting', document.getElementById('autoGifting').checked ? 'checked' : '0'); GM_setValue('selectAttribute', document.getElementById('selectAttribute').selectedIndex ); GM_setValue('JudgeRating', document.getElementById('JudgeRating').selectedIndex ); GM_setValue('JudgeCount', document.getElementById('JudgeCount').value ); GM_setValue('giftingCount', document.getElementById('giftingCount').value); GM_setValue('giftingUser', document.getElementById('giftingUser').value); // show settings saved notification document.getElementById('saveNotification').style.visibility = "visible"; setTimeout("document.location ='"+ "http://apps.facebook.com/"+SCRIPT.name + "/index.php'",1000); } function pausePlayer(){ GM_setValue('paused',1); document.location = location.href; } function resumePlayer(){ GM_setValue('paused',0); document.location = location.href; } function addToLog(line){ var currentTime = new Date() var month = 1+ parseInt(currentTime.getMonth()); var timestamp = currentTime.getDate()+ "/" + month+ "/" +currentTime.getFullYear() +" " +currentTime.getHours() + ":" + currentTime.getMinutes()+" "; GM_setValue('itemLog', timestamp + line + "
" + GM_getValue('itemLog', '')); document.getElementById('logBox').innerHTML = timestamp + line + "
" + document.getElementById('logBox').innerHTML; } function ignoreElement(element){ if(element.id=='') return true; if (element.id.indexOf('mainDiv') != -1 || element.id.indexOf('tab_handle') != -1) return false; return true; } function CycleFightList(){ var opponents = GM_getValue('fightList', '').split("\n"); var opponentList=""; for (var i=1;i 99 ? Math.round(L / 10) : L), t: H < 12 ? "a" : "p", tt: H < 12 ? "am" : "pm", T: H < 12 ? "A" : "P", TT: H < 12 ? "AM" : "PM", Z: utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""), o: (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4), S: ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10] }; return mask.replace(token, function ($0) { return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1); }); }; }(); // Some common format strings dateFormat.masks = { "default": "ddd mmm dd yyyy HH:MM:ss", shortDate: "m/d/yy", mediumDate: "mmm d, yyyy", longDate: "mmmm d, yyyy", fullDate: "dddd, mmmm d, yyyy", shortTime: "h:MM TT", mediumTime: "h:MM:ss TT", longTime: "h:MM:ss TT Z", isoDate: "yyyy-mm-dd", isoTime: "HH:MM:ss", isoDateTime: "yyyy-mm-dd'T'HH:MM:ss", isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'" }; // Internationalization strings dateFormat.i18n = { dayNames: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], monthNames: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ] }; // For convenience... Date.prototype.format = function (mask, utc) { return dateFormat(this, mask, utc); };