- // ==UserScript==
- // @name BillyTV Agent
- // @namespace BvS-ZeConster
- // @description Handles your auditions for you (mostly)
- // @version 1.4
- // @history 1.4 New domain - animecubedgaming.com - Channel28
- // @history 1.3 Now https compatible (Updated by Channel28)
- // @history 1.2 Should now be compatible with all versions of FireFox (Updated by Channel28, thanks to Terrec for adjusting the code)
- // @history 1.1 Added grant permissions (Updated by Channel28)
- // @history 1.0 Initial Release
- // @include http*://*animecubed.com/billy/bvs/billytv.html
- // @include http*://*animecubedgaming.com/billy/bvs/billytv.html
- // @grant GM_getValue
- // @grant GM_setValue
- // @grant GM_deleteValue
- // ==/UserScript==
-
- //3 possible states:
- //1: haven't picked abilities yet
- //2: abilities picked, need to do challenges 2a: just did a challenge, need to pick another
- //3: doing a challenge
-
- var playername = "";
-
- try {
- if (!this.GM_getValue || (this.GM_getValue.toString && this.GM_getValue.toString().indexOf("not supported") > -1)) {
- this.GM_getValue = function(key, def) {
- return localStorage[key] || def;
- };
- this.GM_setValue = function(key, value) {
- return localStorage[key] = value;
- };
- this.GM_deleteValue = function(key) {
- return delete localStorage[key];
- };
- }
- } catch (e) {}
-
- loadPlayerName();
-
- function loadPlayerName() {
- try {
- var temp = document.getElementsByName("player")[0];
- if ((temp == null) || (temp.localName.toLowerCase() == "text") || (temp.value.length == 0))
- return;
- playername = temp.value;
- } catch(e) {
- alert("Exception!\n\nError name: " + e.name + "\nError message: " + e.message);
- }
- }
-
- if (document.body.innerHTML.indexOf("You still have") > -1) {
-
- // Create the text area object
- var area = document.createElement("textarea");
- area.id = 'SchedulePlanningArea';
-
- area.rows = 11;
- area.cols = 20;
-
- // Create the button to fill the settings
- var a = document.createElement("a");
-
- a.href = "javascript:void(0)";
- a.innerHTML = "Click here to plan settings";
-
- a.addEventListener("click", function() {
- var storethis = document.getElementById('SchedulePlanningArea').value;
- var challengeArr = storethis.split('\n');
- if (challengeArr.length < 11) {
- document.getElementById('SchedulePlanningArea').value = "Please try again.";
- return;
- }
- try {
- var challenges = [[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11]];
- for (var i=0; i<11; i++) {
- challenges[i] = challengeArr[i].split(',');
- if (challenges[i].length != 9) {
- document.getElementById('SchedulePlanningArea').value = "Please try again.";
- return;
- }
- }
- var abilitiesused = [0,0,0,0,0,0,0,0];
- for (var i = 0; i < 8; i++) {
- for (var j = 0; j < 11; j++) {
- abilitiesused[i] += parseInt(challenges[j][i+1]);
- }
- }
- var match = /<b>Amount Left: ([\d,]+)\/([\d,]+)<\/b>/.exec ( document.body.innerHTML );
- match[2] = match[2].replace(",","");
- var totalawesome = parseInt(match[2]);
- var usedawesome = 0;
- usedawesome += abilitiesused[0]*4; usedawesome += abilitiesused[1]*6;
- usedawesome += abilitiesused[2]*8; usedawesome += abilitiesused[3]*10;
- usedawesome += abilitiesused[4]*12; usedawesome += abilitiesused[5]*20;
- usedawesome += abilitiesused[6]*30; usedawesome += abilitiesused[7]*100;
- var remainingawesome = totalawesome - usedawesome;
- if (remainingawesome < 0) {
- alert("Strategy uses "+usedawesome+" Awesome, but you only have "+totalawesome+" Awesome!");
- } else {
- if (remainingawesome >= 4) {
- if (remainingawesome%4 > 1) {
- abilitiesused[1] += 1;
- remainingawesome -= 6;
- }
- remainingawesome -= remainingawesome%4;
- abilitiesused[0] += remainingawesome/4;
- }
- document.evaluate("//input[@name = 'dice4']",document, null,
- XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotItem(0).value = abilitiesused[0];
- document.evaluate("//input[@name = 'dice6']",document, null,
- XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotItem(0).value = abilitiesused[1];
- document.evaluate("//input[@name = 'dice8']",document, null,
- XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotItem(0).value = abilitiesused[2];
- document.evaluate("//input[@name = 'dice10']",document, null,
- XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotItem(0).value = abilitiesused[3];
- document.evaluate("//input[@name = 'dice12']",document, null,
- XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotItem(0).value = abilitiesused[4];
- document.evaluate("//input[@name = 'dice20']",document, null,
- XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotItem(0).value = abilitiesused[5];
- document.evaluate("//input[@name = 'dice30']",document, null,
- XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotItem(0).value = abilitiesused[6];
- document.evaluate("//input[@name = 'dice100']",document, null,
- XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotItem(0).value = abilitiesused[7];
- GM_setValue(playername+"_challenges",storethis);
- var planning = GM_getValue(playername+"_challenges","");
- }
- } catch (err) {
- alert('An error has occured:\n\n' + err.message);
- }
- },false);
-
- // Finally, HTML div overlay
- var div = document.createElement("div");
- div.style.left = "40px";
- div.style.top = "100px";
- div.style.position = "fixed";
- div.style.width = "195px";
- div.style.height = "290px";
- div.style.background = 'none repeat scroll 0% 0% rgb(216, 100, 100)';
-
- // Add the text area
- div.innerHTML = "<br>1. Paste the settings string here:<br>"
- div.appendChild(area);
- div.innerHTML += "<br><br>2. ";
- div.appendChild(a);
-
- document.body.appendChild(div);
-
- } else if ((document.body.innerHTML.indexOf("Choose a Challenge Below!") > -1)
- || (document.body.innerHTML.indexOf(":: Attempt") > -1)) {
- var planning = GM_getValue(playername+"_challenges","");
- var challengeArr = planning.split('\n');
- var challenges = [[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11]];
- for (var i=0; i<11; i++) {
- challenges[i] = challengeArr[i].split(',');
- }
- //now figure out which challenge we're on
- for (var i = 0; i < 11; i++) {
- var currentindex = challenges[i][0];
- var str = "//input [@id='chl" + currentindex + "']";
- var element = document.evaluate(str,document, null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
- if ((element.snapshotLength > 0) && (element.snapshotItem(0).disabled == false)) {
- i = 11; //we're done
- element.snapshotItem(0).checked = true;
- }
- }
- } else if (document.body.innerHTML.indexOf("Attempting:") > -1) {
- var planning = GM_getValue(playername+"_challenges","");
- var challengeArr = planning.split('\n');
- var challenges = [[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11]];
- for (var i=0; i<11; i++) {
- challenges[i] = challengeArr[i].split(',');
- }
- //now figure out which challenge we're on
- for (var i = 0; i < 11; i++) {
- var currentindex = challenges[i][0];
- var str = "//input [@id='chl" + currentindex + "']";
- var element = document.evaluate(str,document, null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
- if ((element.snapshotLength > 0) && (element.snapshotItem(0).disabled == false)) {
- var thischallenge = challengeArr[i].split(',');
- document.evaluate("//input[@name = 'dieused4']",document, null,
- XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotItem(0).value = thischallenge[1];
- document.evaluate("//input[@name = 'dieused6']",document, null,
- XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotItem(0).value = thischallenge[2];
- document.evaluate("//input[@name = 'dieused8']",document, null,
- XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotItem(0).value = thischallenge[3];
- document.evaluate("//input[@name = 'dieused10']",document, null,
- XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotItem(0).value = thischallenge[4];
- document.evaluate("//input[@name = 'dieused12']",document, null,
- XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotItem(0).value = thischallenge[5];
- document.evaluate("//input[@name = 'dieused20']",document, null,
- XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotItem(0).value = thischallenge[6];
- document.evaluate("//input[@name = 'dieused30']",document, null,
- XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotItem(0).value = thischallenge[7];
- document.evaluate("//input[@name = 'dieused100']",document, null,
- XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotItem(0).value = thischallenge[8];
- document.evaluate("//input [@name='actattemptit']",document,null,
- XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotItem(0).checked = true;
- i = 11; //we're done
- }
- }
- }