您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Highlights, rearranges, and adds context to village page
// ==UserScript== // @name Village Page Reorganizer // @namespace FaxCelestis // @description Highlights, rearranges, and adds context to village page // @include *animecubed.com/billy/bvs/village.h* // @grant GM_addStyle // @author FaxCelestis // @version 1.1d // 0.1 - Does Stuff. And possibly also Things. // 0.1a - successfully implemented tabs for left bar boxes // 0.1b - in process of parsing village info and putting it into vinfo tab. Getting the villager list was a bitch and a half. Still not sure what's causing the weird overhang on the right, but that needs to comment out anyway // 0.1c - weird overhang handled, most of village page parsed into tabs // 1.0 - initial release. Still does not handle zombjas, snow, resupply, or festival // 1.0a - now handles zombjas, but still no snow, resupply, or festival. Or Hidden Ho-Claus for that matter. // 1.0b - now handles snow. Still need HHC, resupply, festival, possibly dice altar. Also incidentally realigns the leave village box with the left margin because its centered alignment was annoying me. // 1.0c - now handles HHC, added contract milling back in, whoops. // 1.0d - fixes an issue with prepped invasions // 1.0e - commentary and general cleanup, recolorization of tab headers for better integration. Also invasion prep issue fixed for real. // 1.0f - possible FF bugfix? // 1.0g - actual FF bugfix // 1.0h - fixes issue with kaiju summoning // 1.0i - fixes issue with ingredient hunting, moves Fighto and Lucha to Battle tab, moves Leave Village to Village Admin tab // 1.1 - adds village applications. New version ID because this is a big change. Currently does not interact with wandering genin, but all other application and member functions are now functional. // 1.1a - really fixes the issue with ingredient hunting for real this time // 1.1b - fixes an issue with regex not finding the ability to mill contracts in Firefox // 1.1c - fixes an issue with peacetime // 1.1d - adds festival functionality, resupply action // ==/UserScript== // get player and password hash from html, necessary to build task boxes var player = document.getElementsByName("player")[1].value; var pass = document.getElementsByName("pwd")[1].value; //determine availability of features with binary variables var isCandyween = (document.body.innerHTML.match(/document.candyween.submit/g) || []).length; var isFestival = (document.body.innerHTML.match(/document.festival.submit/g) || []).length; var hasPF = (document.body.innerHTML.match(/document.pgfestival.submit/g) || []).length; var isSnow = (document.body.innerHTML.match(/document.snowday.submit/g) || []).length; var isHHC = (document.body.innerHTML.match(/document.hoclaus.submit/g) || []).length; var kaijuAvail = (document.body.innerHTML.match(/document.kat.submit/g) || []).length; var zombjasAvail = (document.body.innerHTML.match(/document.zat.submit/g) || []).length; var phaseAvail = (document.body.innerHTML.match(/document.phases.submit/g) || []).length; var pwAvail = (document.body.innerHTML.match(/document.pizzamenu.submit/g) || []).length; var bConAvail = (document.body.innerHTML.match(/document.concenter.submit/g) || []).length; var canSpy = (document.body.innerHTML.match(/document.spy.submit/g) || []).length; var canAttack = (document.body.innerHTML.match(/document.vattack.submit/g) || []).length; var canBingo = (document.body.innerHTML.match(/document.bbook.submit/g) || []).length; var canSci = (document.body.innerHTML.match(/document.science.submit/g) || []).length; var marketAvail = (document.body.innerHTML.match(/document.market.submit/g) || []).length; var canEnhance = (document.body.innerHTML.match(/document.jenhance.submit/g) || []).length; var canFighto = (document.body.innerHTML.match(/document.robofighto.submit/g) || []).length; var canVaca = (document.body.innerHTML.match(/document.ninjabeach.submit/g) || []).length; var canPerm = (document.body.innerHTML.match(/document.setperm.submit/g) || []).length; var canInquisit = (document.body.innerHTML.match(/document.irreport.submit/g) || []).length; var canGetSpies = (document.body.innerHTML.match(/document.spyreport.submit/g) || []).length; var canEat = (document.body.innerHTML.match(/document.ramen.submit/g) || []).length; var canChillax = (document.body.innerHTML.match(/document.brotime.submit/g) || []).length; var BTVAvail = (document.body.innerHTML.match(/document.tvtime.submit/g) || []).length; var canLemonaid = (document.body.innerHTML.match(/document.lemonaid.submit/g) || []).length; var canRock = (document.body.innerHTML.match(/document.blackstones.submit/g) || []).length; var canRoll = (document.body.innerHTML.match(/document.dicetime.submit/g) || []).length; //ha ha, canRock and canRoll var canStudy = (document.body.innerHTML.match(/document.pandtime.submit/g) || []).length; var canLucha = (document.body.innerHTML.match(/document.eldiablo.submit/g) || []).length; var canHunt = (document.body.innerHTML.match(/document.ingredienthunt.submit/g) || []).length; var canNoteProtect = (document.body.innerHTML.match(/document.obscure.submit/g) || []).length; var fieldsAvail = (document.body.innerHTML.match(/document.fieldmenu.submit/g) || []).length; var spendZR = (document.body.innerHTML.match(/document.zrt.submit/g) || []).length; var canCollect = (document.body.innerHTML.match(/document.rescol.submit/g) || []).length; var canPatrol = (document.body.innerHTML.match(/document.patrol.submit/g) || []).length; var canPaperwork = (document.body.innerHTML.match(/document.paperwork.submit/g) || []).length; var canRepair = (document.body.innerHTML.match(/document.repcol.submit/g) || []).length; var canSiege = (document.body.innerHTML.match(/document.sgrs.submit/g) || []).length; var canDeclare = (document.body.innerHTML.match(/document.vwars.submit/g) || []).length; var canDonate = (document.body.innerHTML.match(/document.cryo.submit/g) || []).length; var canApprove = (document.body.innerHTML.match(/document.allapp.submit/g) || []).length; var canOpenApp = (document.body.innerHTML.match(/document.allapp2.submit/g) || []).length; var canResupply = (document.body.innerHTML.match(/document.zatrs.submit/g) || []).length; //inject tab CSS into stylesheet function addTabCSS() { var css = document.createElement("style"); css.type = "text/css"; css.innerHTML = "ul#tabs { list-style-type: none; margin: 30px 0 0 0; padding: 0 0 0.3em 0; } ul#tabs { list-style-type: none; margin: 30px 0 0 0; padding: 0 0 0.3em 0; } ul#tabs li { display: inline; } ul#tabs li a { color: #59421b; background-color: #dabb86; border: 1px solid #59421b; border-bottom: none; padding: 0.3em; text-decoration: none; font-size: 0.75em } ul#tabs li a:hover { background-color: #e8d4b3; font-size: 0.75em } ul#tabs li a.selected { color: #000000; background-color: #dabb86; font-weight: bold; padding: 0.7em 0.3em 0.38em 0.3em; font-size: 0.9em } div.tabContent { border: 1px solid #59421b; padding: 0.5em; background-color: #E0C69A; } div.tabContent.hide { display: none; }"; document.head.appendChild(css); } //declare some variables for later and start the tables for the content divs var contentInsert = []; var events = "<table width=\"220\">"; var battle = "<table width=\"220\">"; var attack = "<table width=\"440\"><tr valign=\"top\"><td>"; var admin = "<table width=\"440\"><tr><td><table width=\"220\">"; var vcenter = "<table width=\"440\"><tr valign=\"top\"><td>"; var vinfo = "<table width=\"440\">"; //build content divs based upon initial binary variable declarations vcenter = vcenter.concat("<table width=\"220\"><tr><td style=\"border-width:2px;border-style:solid;border-color:#040449;background-image:url(/billy/layout/phousevilbg.jpg);color:white;background-color:black;font-size:12px;font-family:arial\">Chat, relax, and win fabulous prizes!<br><form name=\"partyhouse\" style=\"margin:0\" action=\"partyhouse.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.partyhouse.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>Party House</b></a></p><noscript><input type=\"submit\" VALUE=\"Party House\"></noscript></form></tr></table>"); vcenter = vcenter.concat("<table width=\"220\"><tr><td style=\"border-width:2px;border-style:solid;border-color:#040449;background-color:#111153;color:white;font-size:12px;font-family:arial\">Give and Take Items in the Storehouse!<br><form name=\"shouse\" style=\"margin:0\" action=\"villagestorehouse.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.shouse.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>Storehouse ></b></a></p><noscript><input type=\"submit\" VALUE=\"Storehouse >\"></noscript></form></tr></table>"); if (isCandyween > 0) { events = events.concat("<tr><td style=\"border-width:2px;border-style:solid;border-color:#E27119;background-color:#000000;color:#E27119;font-family:arial;font-size:12px\">It's Candyween!<br><form name=\"candyween\" style=\"margin:0\" action=\"villagecandyween.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.candyween.submit();\" onfocus=\"this.blur();\" style=\"color:#F07020; font-size:14px\"><b>Candyween! ></b></a></p><noscript><input type=\"submit\" VALUE=\"Candyween!\"></noscript></form></td></tr>"); } if (isFestival > 0) { events = events.concat("<tr><td style=\"border-width:2px;border-style:solid;border-color:#000033;background-color:#000099;background-image:url(/billy/layout/festivallink.jpg);color:white;font-family:arial;font-size:12px\">It's Festival Day!<br><form name=\"festival\" style=\"margin:0\" action=\"festival.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.festival.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>Festival Day! ></b></a></p><noscript><input type=\"submit\" VALUE=\"Festival Day!\"></noscript></form></tr>"); } if (hasPF > 0) { events = events.concat("<tr><td style=\"border-width:2px;border-style:solid;border-color:#000033;background-color:#000099;background-image:url(/billy/layout/festivallink.jpg);color:white;font-family:arial;font-size:12px\">It\'s Festival day - if you want it to be!<br><div align=\"right\">(Personal Festival ends at Dayroll!)</div><br><form name=\"pgfestival\" style=\"margin:0\" action=\"village.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.pgfestival.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>Start Personal Festival!</b></a><br><input type=\"checkbox\" name=\"pgfestival\" value=\"1\"><font color=\"FFFFFF\"> (confirm)</font></p><noscript><input type=\"submit\" VALUE=\"Start your Personal Festival!\"></noscript></form></tr>"); } if (isSnow > 0) { events = events.concat("<tr><td style=\"border-width:2px;border-style:solid;border-color:#FFFFFF;background-color:#444488;color:white;font-family:arial;font-size:12px\">Oh, man, look at all the snow...<br><form name=\"snowday\" style=\"margin:0\" action=\"villagesnowday.html\" method=\"post\"><input name=\"player\" value=\"" + player + "\" type=\"hidden\"><input name=\"pwd\" value=\"" + pass + "\" type=\"hidden\"><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.snowday.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>Snow Day! ></b></a></p><noscript><input type=\"submit\" VALUE=\"Snow Day!\"></noscript></form></td></tr>"); } if (isHHC > 0) { events = events.concat("<tr><td style=\"border-width:2px;border-style:solid;border-color:#660000;background-color:#006600;color:white;font-family:arial;font-size:12px\">It's Ninja-Mas Eve!<br><form name=\"hoclaus\" style=\"margin:0\" action=\"villagehoclaus.html\" method=\"post\"><input name=\"player\" value=\"" + player + "\" type=\"hidden\"><input name=\"pwd\" value=\"" + pass + "\" type=\"hidden\"><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.hoclaus.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>Hidden HoClaus! ></b></a></p><noscript><input type=\"submit\" VALUE=\"Hidden HoClaus!\"></noscript></form></td></tr>"); } if (kaijuAvail > 0) { battle = battle.concat("<tr><td style=\"border-width:2px;border-style:solid;border-color:#411E01;background-color:#000000;color:white;font-family:arial;font-size:12px\">Your village is under attack by a giant monster!<br><form name=\"kat\" style=\"margin:0\" action=\"villagemonsterfight.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.kat.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>Kaiju Battle! ></b></a></p><noscript><input type=\"submit\" VALUE=\"Monster Fight\"></noscript></form></td></tr>"); } if (zombjasAvail > 0) { battle = battle.concat("<tr><td style=\"border-width:2px;border-style:solid;border-color:#014E01;background-color:#003300;color:white;font-family:arial;font-size:12px\">Zombjas have attacked your Village!<br><form name=\"zat\" style=\"margin:0\" action=\"zombjas.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.zat.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>Zombja Battle! ></b></a></p><noscript><input type=\"submit\" VALUE=\"Zombja Fight\"></noscript></form></td></tr>"); } if (phaseAvail > 0) { battle = battle.concat("<tr><td style=\"border-width:2px;border-style:solid;border-color:#1E4101;background-color:#000000;color:white;font-family:arial;font-size:12px\">Multi-Dimensional Kaiju!<br><form name=\"phases\" style=\"margin:0\" action=\"villagephases.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.phases.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>Phase Menu ></b></a></p><noscript><input type=\"submit\" VALUE=\"Phase Menu\"></noscript></form></td></tr>"); } if (pwAvail > 0) { vcenter = vcenter.concat("<table width=\"220\"><tr><td style=\"border-width:2px;border-style:solid;border-color:#990000;background-color:white;color:006600;font-family:arial;font-size:12px\">Drop By PizzaWitch!<br><form name=\"pizzamenu\" style=\"margin:0\" action=\"pizzawitchgarage.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.pizzamenu.submit();\" onfocus=\"this.blur();\" style=\"color:#006600; font-size:14px\"><b>PizzaWitch Delivery ></b></a></p><noscript><input type=\"submit\" VALUE=\"Deliveries >\"></noscript></form></td></tr></table>"); } if (bConAvail > 0) { vcenter = vcenter.concat("<table width=\"220\"><tr><td style=\"border-width:2px;border-style:solid;border-color:#1E0141;background-color:#000040;color:white;font-family:arial;font-size:12px\">Go to the Convention Center!<br><form name=\"concenter\" style=\"margin:0\" action=\"billycon-register.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.concenter.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>Register for BillyCon ></b></a></p><noscript><input type=\"submit\" VALUE=\"Register for BillyCon\"></noscript></form></td></tr></table>"); } if (canSpy > 0) //TODO: if-bingoed statement { attack = attack.concat("<table width=\"220\"><tr><td style=\"border-width:2px;border-style:solid;border-color:#411E01;background-color:#834411;color:white;font-family:arial;font-size:12px\">Spy on other villages to find out where to get the rare resources your village needs!<br><form name=\"spy\" style=\"margin:0\" action=\"villagespy.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.spy.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>Spy on Other Villages ></b></a></p><noscript><input type=\"submit\" VALUE=\"Spy on Other Villages\"></noscript></form></tr></table>"); } if (canAttack > 0) //TODO: if-bingoed statement { attack = attack.concat("<table width=\"220\"><tr><td style=\"border-width:2px;border-style:solid;border-color:#490404;background-color:#530606;color:white;font-size:12px\">Attack other villages for resources and XP!<br><form name=\"vattack\" style=\"margin:0\" action=\"villageattack.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.vattack.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>Attack Other Villages ></b></a></p><noscript><input type=\"submit\" VALUE=\"Attack Other Villages\"></noscript></form></tr></table>"); } if (canBingo > 0) //TODO: if-bingoed statement { attack = attack.concat("<table width=\"220\"><tr><td style=\"border-width:2px;border-style:solid;border-color:#490404;background-color:#831111;color:white;font-size:12px\">Sick of enemy Ninja raiding your village? Take care of them first!<br><form name=\"bbook\" style=\"margin:0\" action=\"bingo.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.bbook.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>Go To Bingo Book ></b></a></p><noscript><input type=\"submit\" VALUE=\"Bingo Book\"></noscript></form></tr></table>"); } if (canSci > 0) { admin = admin.concat("<tr><td style=\"border-width:2px;border-style:solid;border-color:#040449;background-color:#831111;color:white;font-size:12px;font-family:arial\">Perform mad experiments to enhance your village!<br><form name=\"science\" style=\"margin:0\" action=\"villagescience.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.science.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>SCIENCE!</b></a></p><noscript><input type=\"submit\" VALUE=\"SCIENCE!\"></noscript></form></td></tr>"); } if (marketAvail > 0) { vcenter = vcenter.concat("<table width=\"220\"><tr><td style=\"border-width:2px;border-style:solid;border-color:#404409;background-color:#444411;color:white;font-size:12px;font-family:arial\">Buy and sell items!<br><form name=\"market\" style=\"margin:0\" action=\"villagemarketplace.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.market.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>Marketplace ></b></a></p><noscript><input type=\"submit\" VALUE=\"Marketplace >\"></noscript></form></tr></table>"); } if (canEnhance > 0) { vcenter = vcenter.concat("<table width=\"220\"><tr><td style=\"border-width:2px;border-style:solid;border-color:#490404;background-color:#111141;color:white;font-size:12px;font-family:arial\">Enhance the quality of your Jutsu!<br><form name=\"jenhance\" style=\"margin:0\" action=\"villagejenhance.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.jenhance.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>Jutsu Enhancement</b></a></p><noscript><input type=\"submit\" VALUE=\"Jutsu Enhancement\"></noscript></form></tr></table>"); } if (canFighto > 0) { battle = battle.concat("<tr><td style=\"border-width:2px;border-style:solid;border-color:#490404;background-color:#114111;color:white;font-size:12px;font-family:arial\">Enter the ROBO FIGHTO!<br><form name=\"robofighto\" style=\"margin:0\" action=\"villagerobofighto.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.robofighto.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>FIGHTO</b></a></p><noscript><input type=\"submit\" VALUE=\"FIGHTO\"></noscript></form></tr>"); } if (canVaca > 0) { vcenter = vcenter.concat("<table width=\"220\"><tr><td style=\"border-width:2px;border-style:solid;border-color:#111E01;background-color:#434411;color:white;font-family:arial;font-size:12px\">Relax on the beach!<br><form name=\"ninjabeach\" style=\"margin:0\" action=\"villagebeach.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.ninjabeach.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>Vacation!</b></a></p><noscript><input type=\"submit\" VALUE=\"Vacation!\"></noscript></form></tr>"); } if (canPerm > 0) { admin = admin.concat("<tr><td style=\"border-width:2px;border-style:solid;border-color:#040449;background-color:#531111;color:white;font-size:12px;font-family:arial\">Set Villager Permissions!<br><form name=\"setperm\" style=\"margin:0\" action=\"villagepermissions.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.setperm.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>Permissions ></b></a></p><noscript><input type=\"submit\" VALUE=\"Permissions >\"></noscript></form></td></tr>"); } if (canInquisit > 0) { attack = attack.concat("<table width=\"220\"><tr><td style=\"border-width:2px;border-style:solid;border-color:#240904;background-color:#230606;color:white;font-size:12px;font-family:arial\">Check your Village for Spies!<br><form name=\"irreport\" style=\"margin:0\" action=\"village.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><input type=\"hidden\" name=\"interrocheck\" value=\"go\"><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.irreport.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>Launch Inquisition</b></a></p><noscript><input type=\"submit\" VALUE=\"Interrogate\"></noscript></form></tr></table>"); } if (canGetSpies > 0) { attack = attack.concat("<table width=\"220\"><tr><td style=\"border-width:2px;border-style:solid;border-color:#440409;background-color:#531111;color:white;font-size:12px;font-family:arial\">Get a Report from all active Spies<br><form name=\"spyreport\" style=\"margin:0\" action=\"village.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><input type=\"hidden\" name=\"network\" value=\"go\"><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.spyreport.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>Get Spy Report</b></a></p><noscript><input type=\"submit\" VALUE=\"Get Spy Report\"></noscript></form></tr></table>"); } if (canEat > 0) { var pullsAllowed = /Pulls allowed today: ([\d]+)/.exec(document.body.innerHTML)[1]; var currentJXP = /Current JXP: ([\d,]+)/.exec(document.body.innerHTML)[1]; vcenter = vcenter.concat("<table width=\"220\"><tr><td style=\"border-width:2px;border-style:solid;border-color:#040449;background-color:#115311;color:white;font-size:12px;font-family:arial\">Swipe some eats at the Ramen Shop!<br>Pulls allowed today: " + pullsAllowed + "<br>Current JXP: " + currentJXP + "<br>All costs x10 for second ramen!<br><form name=\"ramen\" style=\"margin:0\" action=\"village.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><input type=\"radio\" name=\"ramentobuy\" value=\"chak\" ><b>Chicken Ramen</b><br> (+500 Chakra) - 15,000 JXP<br><input type=\"radio\" name=\"ramentobuy\" value=\"app\" ><b>Diet Ramen</b><br> (+40 Appetite) - 15,000 JXP<br><input type=\"radio\" name=\"ramentobuy\" value=\"bonus\" ><b>Red Fox Ramen</b><br> (+3 Levels on Missions today) - 60,000 JXP<br><input type=\"radio\" name=\"ramentobuy\" value=\"stam\" ><b>Beef Ramen</b><br> (+30 Stamina) - 90,000 JXP<br><input type=\"radio\" name=\"ramentobuy\" value=\"find\" ><b>Ichi Special</b><br> (+100% Find Ninja/Items Chance) - 100,000 JXP<br><input type=\"radio\" name=\"ramentobuy\" value=\"stam2\" ><b>Teriyaki Ramen</b><br> (+100 Stamina) - 400,000 JXP<br><input type=\"radio\" name=\"ramentobuy\" value=\"glad\" ><b>The Gladiator</b> (It's Got Electrolytes!)<br> (+10 Arena Fights) - 1,000,000 JXP<br><input type=\"radio\" name=\"ramentobuy\" value=\"dou\" ><b>Greassy Ramen</b> (Mmm, Grindy!)<br> (+200% Dou AP / -80% Ranking XP) - 3,000,000 JXP<br><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.ramen.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>Purchase Ramen</b></a></p><noscript><input type=\"submit\" VALUE=\"Purchase Ramen\"></noscript></form></tr></table></td><td>"); } if (canChillax > 0) { vcenter = vcenter.concat("<table width=\"220\"><tr><td style=\"border-width:2px;border-style:solid;border-color:#000000;background-color:#111166;color:white;font-size:12px;font-family:arial\">Chillax in front of the Manly Altar!<br><form name=\"brotime\" style=\"margin:0\" action=\"village.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><input type=\"hidden\" name=\"brofist\" value=\"1\"><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.brotime.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>Chillax, Bro.</b></a></p><noscript><input type=\"submit\" VALUE=\"Chillax, Bro.\"></noscript></form></tr></table>"); } if (BTVAvail > 0) { vcenter = vcenter.concat("<table width=\"220\"><tr><td style=\"border-width:2px;border-style:solid;border-color:#000000;background-color:#116611;color:white;font-size:12px;font-family:arial\">Go see how a hit show is made!<br><form name=\"tvtime\" style=\"margin:0\" action=\"billytv.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.tvtime.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>It's BillyTV!</b></a></p><noscript><input type=\"submit\" VALUE=\"It's BillyTV!\"></noscript></form></tr></table>"); } if (canLemonaid > 0) { vcenter = vcenter.concat("<table width=\"220\"><tr><td style=\"border-width:2px;border-style:solid;border-color:#000000;background-color:#444400;color:white;font-size:12px;font-family:arial\">Have some tasty Lemonade!<br><form name=\"lemonaid\" style=\"margin:0\" action=\"village.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><input type=\"hidden\" name=\"lemonaid\" value=\"1\"><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.lemonaid.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>More like Lemon-\"aid\" amirite? ></b></a></p><noscript><input type=\"submit\" VALUE=\"More like Lemon-aid amirite? >\"></noscript></form></tr></table>"); } if (canRock > 0) { vcenter = vcenter.concat("<table width=\"220\"><tr><td style=\"border-width:2px;border-style:solid;border-color:#000000;background-color:#116611;color:white;font-size:12px;font-family:arial\">Go to a Black Stones Concert!<br><form name=\"blackstones\" style=\"margin:0\" action=\"village.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><p style=\"margin:0; text-align:right\"><input type=\"hidden\" name =\"blackstone\" value=\"1\"><a href=\"javascript:document.blackstones.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>Rock On!</b></a></p><noscript><input type=\"submit\" VALUE=\"Rock On!\"></noscript></form></tr></table>"); } if (canRoll > 0) // no idea why the font color tags are't working here { var LWC = (document.body.innerHTML.match(/auto-rerolls/g).length || []); if (LWC > 0) { vcenter = vcenter.concat("<table width=\"220\"><tr><td style=\"border-width:2px;border-style:solid;border-color:#000000;background-color:#116611;color:white;font-size:12px;font-family:arial\">The Dice call to you...<br><form name=\"dicetime\" style=\"margin:0\" action=\"village.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><p style=\"margin:0; text-align:right\"><br><input type=\"hidden\" name=\"diceuse\" value=\"1\">Preferred Roll: <select name=\"diceuseb\"><option value=\"0\">Not Pestilence</option><option value=\"1\">Food</option><option value=\"2\">Coin</option><option value=\"3\">Workers</option></select><font style=\"font-size:12px\"><i><br>(auto-rerolls once if chosen type not rolled)</i></font><br><a href=\"javascript:document.dicetime.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>Roll That Die!</b></a></p><noscript><input type=\"submit\" VALUE=\"Roll That Die!\"></noscript></form></tr></table>"); } else { vcenter = vcenter.concat("<table width=\"220\"><tr><td style=\"border-width:2px;border-style:solid;border-color:#000000;background-color:#331100;color:white;font-size:12px;font-family:arial\">The Dice call to you...<br><form name=\"dicetime\" style=\"margin:0\" action=\"village.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><p style=\"margin:0; text-align:right\"><input type=\"hidden\" name=\"diceuse\" value=\"0\"><a href=\"javascript:document.dicetime.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>Roll That Die!</b></a></p><noscript><input type=\"submit\" VALUE=\"Roll That Die!\"></noscript></form></tr></table>"); } } if (canStudy > 0) { vcenter = vcenter.concat("<table width=\"220\"><tr><td style=\"border-width:2px;border-style:solid;border-color:#000000;background-color:#661111;color:white;font-size:12px;font-family:arial\">Study at the Pandora Library!<br><form name=\"pandtime\" style=\"margin:0\" action=\"village.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><input type=\"hidden\" name=\"pandlib\" value=\"1\"><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.pandtime.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>Get your Learn On!</b></a></p><noscript><input type=\"submit\" VALUE=\"Get your Learn On!\"></noscript></form></tr></table>"); } if (canLucha > 0) { battle = battle.concat("<tr><td style=\"border-width:2px;border-style:solid;border-color:#000000;background-color:#660000;color:white;font-size:12px;font-family:arial\">Face off against<br><font style=\"font-variant:small-caps;font-size:16px\"><b><i>El Diablo Supreme!</i></b></font><br><form name=\"eldiablo\" style=\"margin:0\" action=\"villagediablo.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.eldiablo.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>¡Lucha!</b></a></p><noscript><input type=\"submit\" VALUE=\"¡Lucha!\"></noscript></form></tr>"); } if (canHunt > 0) { var huntVars = /Hunt for Ingredients!<br>([\w\W]+)<b>Choose Area/.exec(document.body.innerHTML); huntVars = huntVars[1]; var dumpster = (document.body.innerHTML.match(/BurgerNinja Dumpster/g) || []).length; var trash = (document.body.innerHTML.match(/TV Actor Trashcans/g) || []).length; var trickOrTreat = (document.body.innerHTML.match(/Trick or Treating/g) || []).length; var gothgoth = (document.body.innerHTML.match(/Perfect Girl Evolution: Goth Goth/g) || []).length; vcenter = vcenter.concat("<table width=\"220\"><tr><td style=\"border-width:2px;border-style:solid;border-color:#044409;background-color:#115311;color:white;font-size:12px;font-family:arial\">Hunt for Ingredients!<br>" + huntVars + "<br><form name=\"ingredienthunt\" style=\"margin:0\" action=\"village.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><input type=\"hidden\" name=\"ingredients\" value=\"go\"><b>Choose Area:</b><br><input type=\"radio\" name=\"ingredientplace\" value=\"forest\"> Forest<br>"); if (dumpster > 0) { vcenter = vcenter.concat("<input type=\"radio\" name=\"ingredientplace\" value=\"dumpster\"> BurgerNinja Dumpster<br>"); } if (trash > 0) { vcenter = vcenter.concat("<input type=\"radio\" name=\"ingredientplace\" value=\"idol\"> TV Actor Trashcans<br>"); } if (trickOrTreat > 0) { vcenter = vcenter.concat("<input type=\"radio\" name=\"ingredientplace\" value=\"treat\"> Trick or Treating<br>"); } if (gothgoth > 0) { vcenter = vcenter.concat("<input type=\"checkbox\" name=\"gothgoth\" value=\"go\" > Use <b>Perfect Girl Evolution: Goth Goth</b><br> (-50 Stamina, +5 Ingredients per Pull)<br>"); } vcenter = vcenter.concat("<p style=\"margin:0; text-align:right\"><a href=\"javascript:document.ingredienthunt.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>Hunt for Ingredients</b></a></p><noscript><input type=\"submit\" VALUE=\"Hunt for Ingredients\"></noscript></form></tr></table>"); } if (canDeclare > 0) { attack = attack.concat("<table width=\"220\" style=\"background-color:#000000;border-color:#CC0000;border-style:solid;border-width:2px;color:white;font-size:12px;font-family:arial\"><tr><td>Declare War and Siege!<form action=\"villagewars.html\" name=\"vwars\" method=\"post\" style=\"margin:0\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><a href=\"javascript:document.vwars.submit();\" onfocus=\"this.blur();\" style=\"color:A10000; font-variant: small-caps; font-size:14px\"><p style=\"margin:0; text-align:right\"><b><font color=\"FF0000\">The Bunker ></font></b></a></p><noscript><input type=\"submit\" VALUE=\"The Bunker >\"></noscript></form></td></tr></table>"); } if (canNoteProtect > 0) { var isNotProtected = (document.body.innerHTML.match(/You are <b>Not Protected<\/b>/g) || []).length; var levCost = /24 hours\. ([\d,]+) Ryo per Level/g.exec(document.body.innerHTML)[1]; var cost = /Obfuscation Timer \(([\d,]+) Ryo/g.exec(document.body.innerHTML)[1]; attack = attack.concat("</td><td><table width=\"220\"><table width=\"220\"><tr><td style=\"font-variant: small-caps; border-width:2px;border-style:solid;border-color:#040404;background-color:#111111;color:white;font-size:12px;font-family:arial\">Protect Yourself from The Note<br>for 24 hours. " + levCost + " Ryo per Level.<br>(You are "); if (isNotProtected > 0) { attack = attack.concat("<b>Not Protected</b>)<br></center>"); } else { attack = attack.concat("<b>Currently Protected</b>)<br></center>"); } attack = attack.concat("<form name=\"obscure\" style=\"margin:0\" action=\"village.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><input type=\"checkbox\" name=\"obscure\" value=\"doit\" > Add 86400 seconds to your<br> Obfuscation Timer (" + cost + " Ryo).<br><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.obscure.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>Obscure your Name</b></a></p><noscript><input type=\"submit\" VALUE=\"Obscure your Name\"></noscript></form><br><center>(costs increase 50 per level after each use. to reset cost, go without protection for 48 hours.)</center></tr></table>"); } if (fieldsAvail > 0) { battle = battle.concat("<tr><td style=\"border-width:2px;border-style:solid;border-color:#1E4101;background-color:#004000;color:white;font-family:arial;font-size:12px\">Explore other Fields!<br><form name=\"fieldmenu\" style=\"margin:0\" action=\"villagefields.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.fieldmenu.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>Field Menu ></b></a></p><noscript><input type=\"submit\" VALUE=\"Field Menu\"></noscript></form></tr>"); } if (spendZR > 0) { battle = battle.concat("<tr><td style=\"border-width:2px;border-style:solid;border-color:#4E0101;background-color:#330000;color:white;font-family:arial;font-size:12px\">Spend your Z-Rewards!<br><form name=\"zrt\" style=\"margin:0\" action=\"zombjarewards.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.zrt.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>Spend Z-Rewards ></b></a></p><noscript><input type=\"submit\" VALUE=\"Spend Z-Rewards\"></noscript></form></tr>"); } if (canCollect > 0) { admin = admin.concat("<tr><td style=\"border-width:2px;border-style:solid;border-color:#044904;background-color:#115311;color:white;font-size:12px;font-family:arial\">Gather resources to build Village Upgrades!<br><form name=\"rescol\" style=\"margin:0\" action=\"village.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><input type=\"hidden\" name=\"helpvillage\" value=\"collect\"><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.rescol.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>Collect Resources</b></a></p><noscript><input type=\"submit\" VALUE=\"Help Collect Resources\"></noscript></form></td></tr>"); } if (canPatrol > 0) { admin = admin.concat("<tr><td style=\"border-width:2px;border-style:solid;border-color:#490404;background-color:#531111;color:white;font-size:12px;font-family:arial\">Patrol to defend your village from attacks!<br><form name=\"patrol\" style=\"margin:0\" action=\"village.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><input type=\"hidden\" name=\"helpvillage\" value=\"patrol\"><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.patrol.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>Patrol</b></a></p><noscript><input type=\"submit\" VALUE=\"Go On Patrol\"></noscript></form></td></tr>"); } if (canPaperwork > 0) { admin = admin.concat("<tr><td style=\"border-width:2px;border-style:solid;border-color:#490404;background-color:#531111;color:white;font-size:12px;font-family:arial\">Help the Village with submitting Mission Results!<br><form name=\"paperwork\" style=\"margin:0\" action=\"village.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><input type=\"hidden\" name=\"helpvillage\" value=\"paperwork\"><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.paperwork.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>Do Paperwork</b></a></p><noscript><input type=\"submit\" VALUE=\"Do Paperwork\"></noscript></form></td></tr>"); } if (canRepair > 0) { admin = admin.concat("<tr><td style=\"border-width:2px;border-style:solid;border-color:#044904;background-color:#111153;color:white;font-size:12px;font-family:arial\">Help Repair your Village!<br><form name=\"repcol\" style=\"margin:0\" action=\"village.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><input type=\"hidden\" name=\"helpvillage\" value=\"repair\"><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.repcol.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>Help with Repairs</b></a></p><noscript><input type=\"submit\" VALUE=\"Help Repair\"></noscript></form></td></tr>"); } if (canSiege > 0) { admin = admin.concat("<tr><td style=\"border-width:2px;border-style:solid;border-color:#0E0101;background-color:#220000;color:white;font-family:arial;font-size:12px\">Siege enemy Villages!<br><form name=\"repcol\" style=\"margin:0\" action=\"village.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><input type=\"hidden\" name=\"helpvillage\" value=\"siege\"><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.sgrs.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>Siege! ></b></a></p><noscript><input type=\"submit\" VALUE=\"Siege!\"></noscript></form></td></tr>"); } if (canResupply > 0) { admin = admin.concat("<tr><td style=\"border-width:2px;border-style:solid;border-color:#010E01;background-color:#002200;color:white;font-family:arial;font-size:12px\">Resupply the Z-Fighters!!<br><form name=\"zatrs\" style=\"margin:0\" action=\"village.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><input type=\"hidden\" name=\"helpvillage\" value=\"resupply\"><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.zatrs.submit();\" onfocus=\"this.blur();\" style=\"color:white; font-size:14px\"><b>Resupply! ></b></a></p><noscript><input type=\"submit\" VALUE=\"Resupply!\"></noscript></form></td></tr>"); } //declare some variables for purposes of building village info var resources = []; var bRes = []; var aRes = []; var PM = []; var MW = []; var BC = []; var SF = []; var UI = []; var pcbRes = []; var pcaRes = []; var vryo = []; var bankium = []; //check to see if the village is NRF and has bankium var NRF = (document.body.innerHTML.match(/Percentage Chance of finding an Advanced Resource:/g) || []).length; var hasBankium = (document.body.innerHTML.match(/Bankium Bars:/g) || []).length; if (NRF > 0) { bRes = /Resource: ([\w\s]+)<br>Advanced Resource: ([\w\s]+)/g.exec(document.body.innerHTML)[1]; aRes = /Resource: ([\w\s]+)<br>Advanced Resource: ([\w\s]+)/g.exec(document.body.innerHTML)[2]; PM = /<li>Precious Metals: ([\d]+)/g.exec(document.body.innerHTML)[1]; MW = /<li>Medicinal Water: ([\d]+)/g.exec(document.body.innerHTML)[1]; BC = /<li>Brilliant Crystals: ([\d]+)/g.exec(document.body.innerHTML)[1]; SF = /<li>Solid Fire: ([\d]+)/g.exec(document.body.innerHTML)[1]; UI = /<li>Unmelting Ice: ([\d]+)/g.exec(document.body.innerHTML)[1]; vryo = /<li>Village Ryo: ([\d,]+)/g.exec(document.body.innerHTML)[1]; pcbRes = /Percentage Chance of finding a Resource: ([\d]+)%/g.exec(document.body.innerHTML)[1]; pcaRes = /Percentage Chance of finding an Advanced Resource: ([\d]+)%/g.exec(document.body.innerHTML)[1]; vinfo = vinfo.concat("<tr><td><table width=\"440\"><tr><td align=\"left\" width=\"220\"><br><font style=\"font-size:14px\"><b>Resources:</b></font></td><td align=\"left\" width=\"220\"><br><font style=\"font-size:14px\"><b>Stats:</b></font></td></tr></table><table width=\"440\" style=\"border-width:1px;border-style:dotted;border-color:#A75928;background-color:#E0C69A;font-size:12px\"><tr><td>Resource: " + bRes + "<br>Advanced Resource: " + aRes + "<br><br>Percentage Chance of finding a Resource: " + pcbRes + "%<br><br>Percentage Chance of finding an Advanced Resource: " + pcaRes + "%<br><br><ul style=\"margin:0\"><li>Brilliant Crystals: " + BC + "</li><li>Medicinal Water: " + MW + "</li><li>Precious Metals: " + PM + "</li><li>Solid Fire: " + SF + "</li><li>Unmelting Ice: " + UI + "</li><li>Village Ryo: " + vryo + "</li>"); } else { bRes = /Resource: ([\w\s]+)<br>/g.exec(document.body.innerHTML)[1]; PM = /<li>Precious Metals: ([\d]+)/g.exec(document.body.innerHTML)[1]; MW = /<li>Medicinal Water: ([\d]+)/g.exec(document.body.innerHTML)[1]; BC = /<li>Brilliant Crystals: ([\d]+)/g.exec(document.body.innerHTML)[1]; vryo = /<li>Village Ryo: ([\d,]+)/g.exec(document.body.innerHTML)[1]; pcbRes = /Percentage Chance of finding a Resource: ([\d]+)%/g.exec(document.body.innerHTML)[1]; vinfo = vinfo.concat("<tr><td><table width=\"220\"><tr><td align=\"left\"><br><font style=\"font-size:14px\"><b>Resources:</b></font></td><td align=\"left\" width=\"220\"><br><font style=\"font-size:14px\"><b>Stats:</b></font></td></tr></table><table width=\"220\" style=\"border-width:1px;border-style:dotted;border-color:#A75928;background-color:#E0C69A;font-size:12px\"><tr><td>Resource: " + bRes + "<br>Advanced Resource: " + aRes + "<br><br>Percentage Chance of finding a Resource: " + pcbRes + "%<br><br><ul style=\"margin:0\"><li>Brilliant Crystals: " + BC + "</li><li>Medicinal Water: " + MW + "</li><li>Precious Metals: " + PM + "</li><li>Village Ryo: " + vryo + "</li>"); } if (hasBankium > 0) { bankium = /<li>Bankium Bars: ([\d]+)/g.exec(document.body.innerHTML)[1]; vinfo = vinfo.concat("<li>Bankium Bars: " + bankium + "</li></ul></td>"); } else { vinfo = vinfo.concat("</ul></td>"); } // declare some variables for building the villager structure var rootnin = []; var sannin = []; var jonin = []; var specjo = []; var chunin = []; var genin = []; var nonja = []; var numroot = 0; var numsan = 0; var numjon = 0; var numspecjo = 0; var numchu = 0; var numgen = 0; var numnon = 0; // this is really complicated, but it works var indRoot = document.body.innerHTML.indexOf("R00t+:"); var indSan = document.body.innerHTML.indexOf("<b>Sannin:</b>"); var indJo = document.body.innerHTML.indexOf("<b>Jonin:</b>"); var indSpecJo = document.body.innerHTML.indexOf("Sp. Jonin:"); var indChu = document.body.innerHTML.indexOf("Chunin:"); var indGen = document.body.innerHTML.indexOf("Genin:"); var indNon = document.body.innerHTML.indexOf("Nonja:"); var memKey = document.body.innerHTML.indexOf("-- Member Key"); if (indRoot > 0) { if (indSan > 0) { rootnin = document.body.innerHTML.slice(indRoot, indSan); } else if (indJo > 0) { rootnin = document.body.innerHTML.slice(indRoot, indJo); } else if (indSpecJo > 0) { rootnin = document.body.innerHTML.slice(indRoot, indSpecJo); } else if (indChu > 0) { rootnin = document.body.innerHTML.slice(indRoot, indChu); } else if (indGen > 0) { rootnin = document.body.innerHTML.slice(indRoot, indGen); } else if (indNon > 0) { rootnin = document.body.innerHTML.slice(indRoot, indNon); } else { rootnin = document.body.innerHTML.slice(indRoot, memKey); } } else { rootnin = "None!"; } if (indSan > 0) { if (indJo > 0) { sannin = document.body.innerHTML.slice(indSan, indJo); } else if (indSpecJo > 0) { sannin = document.body.innerHTML.slice(indSan, indSpecJo); } else if (indChu > 0) { sannin = document.body.innerHTML.slice(indSan, indChu); } else if (indGen > 0) { sannin = document.body.innerHTML.slice(indSan, indGen); } else if (indNon > 0) { sannin = document.body.innerHTML.slice(indSan, indNon); } else { sannin = document.body.innerHTML.slice(indSan, memKey); } } else { sannin = "None!"; } if (indJo > 0) { if (indSpecJo > 0) { jonin = document.body.innerHTML.slice(indJo, indSpecJo); } else if (indChu > 0) { jonin = document.body.innerHTML.slice(indJo, indChu); } else if (indGen > 0) { jonin = document.body.innerHTML.slice(indJo, indGen); } else if (indNon > 0) { jonin = document.body.innerHTML.slice(indJo, indNon); } else { jonin = document.body.innerHTML.slice(indJo, memKey); } } else { jonin = "None!"; } if (indSpecJo > 0) { if (indChu > 0) { specjo = document.body.innerHTML.slice(indSpecJo, indChu); } else if (indGen > 0) { specjo = document.body.innerHTML.slice(indSpecJo, indGen); } else if (indNon > 0) { specjo = document.body.innerHTML.slice(indSpecJo, indNon); } else { specjo = document.body.innerHTML.slice(indSpecJo, memKey); } } else { specjo = "None!"; } if (indChu > 0) { if (indGen > 0) { chunin = document.body.innerHTML.slice(indChu, indGen); } else if (indNon > 0) { chunin = document.body.innerHTML.slice(indChu, indNon); } else { chunin = document.body.innerHTML.slice(indChu, memKey); } } else { chunin = "None!"; } if (indGen > 0) { if (indNon > 0) { genin = document.body.innerHTML.slice(indGen, indNon); } else { genin = document.body.innerHTML.slice(indGen, memKey); } } else { genin = "None!"; } if (indNon > 0) { nonja = document.body.innerHTML.slice(indNon, memKey); } else { nonja = "None!"; } if (rootnin !== "None!") { rootnin = rootnin.replace(/R00t\+:<\/b><br>/g, ""); rootnin = rootnin.replace(/<br>\n<br>/gm, ""); rootnin = rootnin.replace(/<br>/g, ", "); numroot = (rootnin.match(/<a/g).length); } if (sannin !== "None!") { sannin = sannin.replace(/<b>Sannin:<\/b><br>/g, ""); sannin = sannin.replace(/<br>\n<br>/gm, ""); sannin = sannin.replace(/<br><\/ul><\/td><td width=\"110\" valign=\"top\" align=\"left\"><ul style=\"list-style:disc;margin-left: 0;padding-left: 1em;font-size:12px\">/g, ""); sannin = sannin.replace(/<br>/g, ", "); sannin = sannin.substr(0, sannin.length - 3); numsan = (sannin.match(/<a/g).length); } if (jonin !== "None!") { jonin = jonin.replace(/<b>Jonin:<\/b><br>/g, ""); jonin = jonin.replace(/<br>\n<br>/gm, ""); jonin = jonin.replace(/<\/ul><\/td><td width=\"110\" valign=\"top\" align=\"left\"><ul style=\"list-style:disc;margin-left: 0;padding-left: 1em;font-size:12px\"><br>/g, ""); jonin = jonin.replace(/<br>/g, ", "); jonin = jonin.substr(0, jonin.length - 3); numjon = (jonin.match(/<a/g).length); } if (specjo !== "None!") { specjo = specjo.replace(/Sp\. Jonin:<\/b><br>/g, ""); specjo = specjo.replace(/<br>\n<br>/gm, ""); specjo = specjo.replace(/<\/ul><\/td><td width=\"110\" valign=\"top\" align=\"left\"><ul style=\"list-style:disc;margin-left: 0;padding-left: 1em;font-size:12px\"><br>/g, ""); specjo = specjo.replace(/<br>/g, ", "); specjo = specjo.substr(0, specjo.length - 3); numspecjo = (specjo.match(/<a/g).length); } if (chunin !== "None!") { chunin = chunin.replace(/Chunin:<\/b><br>/g, ""); chunin = chunin.replace(/<br>\n<br>/gm, ""); chunin = chunin.replace(/<\/ul><\/td><td width=\"110\" valign=\"top\" align=\"left\"><ul style=\"list-style:disc;margin-left: 0;padding-left: 1em;font-size:12px\"><br>/g, ""); chunin = chunin.replace(/<br>/g, ", "); chunin = chunin.substr(0, chunin.length - 3); numchu = (chunin.match(/<a/g).length); } if (genin !== "None!") { genin = genin.replace(/Genin:<\/b><br>/g, ""); genin = genin.replace(/<br>\n<br>/gm, ""); genin = genin.replace(/<\/ul><\/td><td width=\"110\" valign=\"top\" align=\"left\"><ul style=\"list-style:disc;margin-left: 0;padding-left: 1em;font-size:12px\"><br>/g, ""); genin = genin.replace(/<br>/g, ", "); genin = genin.substr(0, genin.length - 3); numgen = (genin.match(/<a/g).length); } if (nonja !== "None!") { nonja = nonja.replace(/Nonja:<\/b><br>/g, ""); nonja = nonja.replace(/<br>\n<br>/gm, ""); nonja = nonja.replace(/<\/ul><\/td><td width=\"110\" valign=\"top\" align=\"left\"><ul style=\"list-style:disc;margin-left: 0;padding-left: 1em;font-size:12px\"><br>/g, ""); nonja = nonja.replace(/<\/ul>\n<\/td><\/tr><\/tbody><\/table>/gm, ""); nonja = nonja.replace(/<br>/g, ", "); nonja = nonja.substr(0, nonja.length - 3); numnon = (nonja.match(/, /g).length + 1 || []); } var vSize = numroot + numsan + numjon + numspecjo + numchu + numgen + numnon; vSize = vSize + " (" + numnon + " nonja)"; var vActive = parseInt(/Village size: ([\d]+)/g.exec(document.body.innerHTML)[1], 10); var curTax = parseInt(/Current Tax Rate: ([\d]+)%/g.exec(document.body.innerHTML)[1], 10); var numUps = parseInt(/Number of Upgrades: <b>([\d]+)<\/b>/g.exec(document.body.innerHTML)[1], 10); var curUpk = parseInt(/Current Upkeep: ([\d]+)%/g.exec(document.body.innerHTML)[1], 10); var tomPpwk = parseInt(/Paperwork: -([\d]+)% Upkeep Tomorrow/g.exec(document.body.innerHTML)[1], 10); vinfo = vinfo.concat("<td width=\"220\" valign=\"top\">Village Size: " + vSize + "<br>Active Ninja: " + vActive + "<br><br>Current Tax Rate: " + curTax + "%<br>Current Upkeep: " + curUpk + "%<br>Paperwork: -" + tomPpwk + "% Upkeep Tomorrow<br><br><br>Number of Upgrades: " + numUps + "</td></tr></table></td></tr>"); vinfo = vinfo.concat("<tr><td><table width=\"440\"><tr><td align=\"left\"><br><font style=\"font-size:14px\"><b>Villagers:</b></font></td></tr></table><table width=\"440\" style=\"border-width:1px;border-style:dotted;border-color:#A75928;background-color:#E0C69A;font-size:12px\"><tr><td width=\"75\"><b>R00t+</b> (" + numroot + ")</td><td>" + rootnin + "</td></tr></table><table width=\"440\" style=\"border-width:1px;border-style:dotted;border-color:#A75928;background-color:#E0C69A;font-size:12px\"><tr><td width=\"75\"><b>Sannin</b> (" + numsan + ")</td><td>" + sannin + "</td></tr></table><table width=\"440\" style=\"border-width:1px;border-style:dotted;border-color:#A75928;background-color:#E0C69A;font-size:12px\"><tr><td width=\"75\"><b>Jonin</b> (" + numjon + ")</td><td>" + jonin + "</td></tr></table><table width=\"440\" style=\"border-width:1px;border-style:dotted;border-color:#A75928;background-color:#E0C69A;font-size:12px\"><tr><td width=\"75\"><b>Special Jonin</b> (" + numspecjo + ")</td><td>" + specjo + "</td></tr></table><table width=\"440\" style=\"border-width:1px;border-style:dotted;border-color:#A75928;background-color:#E0C69A;font-size:12px\"><tr><td width=\"75\"><b>Chunin</b> (" + numchu + ")</td><td>" + chunin + "</td></tr></table><table width=\"440\" style=\"border-width:1px;border-style:dotted;border-color:#A75928;background-color:#E0C69A;font-size:12px\"><tr><td width=\"75\"><b>Genin</b> (" + numgen + ")</td><td>" + genin + "</td></tr></table><table width=\"440\" style=\"border-width:1px;border-style:dotted;border-color:#A75928;background-color:#E0C69A;font-size:12px\"><tr><td width=\"75\"><b>Nonja</b> (" + numnon + ")</td><td>" + nonja + "</td></tr></table><form action=\"village.html\" name=\"showallvils\" style=\"margin:1px\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><input type=\"hidden\" name=\"showallvillagers\" value=\"1\"><a href=\"javascript:document.showallvils.submit();\" onfocus=\"this.blur();\" style=\"color:A10000\"><p style=\"margin:0; text-align:right; font-size:10px\"><b>Parse Villagers</b></p></a><noscript><input type=\"submit\" VALUE=\"Show All Villagers\"></noscript></form></table>"); // build in the box if the village is daamged var repairsNeeded = (document.body.innerHTML.match(/document.repairnow.submit/g) || []).length; var vDamage = []; var repAvail = []; var bankBlocked = []; if (repairsNeeded > 0) { vDamage = /<b>Total Village Damage: ([\d,]*)<\/b>/g.exec(document.body.innerHTML); vDamage = vDamage[1].replace(/,/g, ""); vDamage = parseInt(vDamage, 10); repAvail = /Repair Ryo Available: ([\d,]*)<br>/g.exec(document.body.innerHTML); repAvail = repAvail[1].replace(/,/g, ""); repAvail = parseInt(repAvail, 10); bankBlocked = /Bankium Blocked: ([\d,]*)<br>/g.exec(document.body.innerHTML); bankBlocked = bankBlocked[1].replace(/,/g, ""); bankBlocked = parseInt(bankBlocked, 10); attack = attack.concat("<table width=\"220\" style=\"background-color:#A10000;border-color:#CC0000;border-style:solid;border-width:1px\"><tr><td><font style=\"font-size:12px;color:white\"><b>Total Village Damage: " + vDamage + "</b><br>Bankium Blocked: " + bankBlocked + "<br>(250K VRyo each to remove)<br>Repair Ryo Available: " + repAvail + "<br>Total Village Ryo " + vryo + "<br><form action=\"village.html\" name=\"repairnow\" style=\"margin:1px\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><input type=\"checkbox\" name=\"repairall\" value=\"1\"><a href=\"javascript:document.repairnow.submit();\" onfocus=\"this.blur();\" style=\"color:white\"><b><font color=\"FFFFFF\">Repair All ></font></b></a><noscript><input type=\"submit\" VALUE=\"Repair All\"></noscript></form><br><form action=\"villagerepair.html\" name=\"gorepair\" style=\"margin:1px\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><a href=\"javascript:document.gorepair.submit();\" onfocus=\"this.blur();\" style=\"color:white\"><b><font color=\"FFFFFF\">Go to Repair Menu ></font></b></a><noscript><input type=\"submit\" VALUE=\"Go to Repair Menu\"></noscript></form></font></td></tr></table>"); } // build the attack other villages boxes var invPrepAvail = (document.body.innerHTML.match(/Planning to Invade:/g) || []).length; var saboAvail = (document.body.innerHTML.match(/Head Saboteur:/g) || []).length; var invTarget = []; var saboteur = []; var peacetime = []; var patrolBonus = []; var patrolBonusTomorrow = []; var canTarget = (document.body.innerHTML.match(/switchattackfocus/g) || []).length; var validTargets = []; var targetsStart = []; var targetsEnd = []; var timesSwitched = []; if (invPrepAvail > 0) { invTarget = /Planning to Invade: <b><b>[\w\s]+<\/b> Village<\/b><br>[Minutes until Invasion is ready: \d|<b>Invasion Timer Cleared!<\/b>]+<br><br>/g.exec(document.body.innerHTML); attack = attack.concat("</table><table width=\"440\" style=\"border-width:1px;border-style:dotted;border-color:#A75928;background-color:#E0C69A;font-size:12px\"><tr><td>" + invTarget + "</td>"); if (saboAvail > 0) { saboteur = /Head Saboteur: <b>[\w\d]+<\/b><br><br>/g.exec(document.body.innerHTML); attack = attack.concat("<td>" + saboteur + "</td>"); } peacetime = (document.body.innerHTML.match(/<b>--Peacetime Bonus--<\/b><br>(\+[\d]+) Successes Needed to Attack you/g) || []).length; if (peacetime > 0) { peacetime = /<b>--Peacetime Bonus--<\/b><br>(\+[\d]+) Successes Needed to Attack you/g.exec(document.body.innerHTML)[1]; } else { peacetime = "+0"; } patrolBonus = /Patrol Bonus Today: (\+[\d]+)/g.exec(document.body.innerHTML)[1]; patrolBonusTomorrow = /Patrol Bonus For Tomorrow: (\+[\d]+)<br>/g.exec(document.body.innerHTML)[1]; attack = attack.concat("</tr><tr><td colspan=\"2\"><b>Peacetime Bonus:</b> " + peacetime + " Successes needed to attack you<br><b>Patrol Bonus Today:</b> " + patrolBonus + "<br><b>Patrol Bonus Tomorrow:</b> " + patrolBonusTomorrow + "</td></tr>"); if (canTarget > 0) { targetsStart = document.body.innerHTML.indexOf("switchattackfocus"); targetsEnd = document.body.innerHTML.lastIndexOf("</select>"); validTargets = document.body.innerHTML.slice(targetsStart, targetsEnd); timesSwitched = /Times switched today: ([\d]+)!/g.exec(document.body.innerHTML)[1]; attack = attack.concat("<tr></tr><tr><td width=\"220\" valign=\"top\"><b>Invasion Preparations</b><br>Attacking a village nets you Ryo - if you prepare to invade them first, though, it is harder, but you'll take Resources instead! (You may switch this twice a day - you may target any attackable village you have a Spy in)</td><td valign=\"top\"><u>Choose Village:</u><br><img src=\"/billy/layout/blank.gif\" height=3 width=8><form action=\"village.html\" name=\"attackfocus\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><SELECT NAME=\"" + validTargets + "</select><br><a href=\"javascript:document.attackfocus.submit();\" onfocus=\"this.blur();\" style=\"color:000000\"><b><font color=\"A10000\">Make Preparations ></font></b></a><noscript><input type=\"submit\" VALUE=\"Make Preparations >\"></noscript><br>Times switched today: " + timesSwitched + "!</form></td></tr>"); } attack = attack.concat("</table>"); } // build the monster summoning box var canSummon = (document.body.innerHTML.match(/document.newmon.submit/g) || []).length; var canUseBC = (document.body.innerHTML.match(/<option name=\"Brilliant Crystals\">/g) || []).length; var canUseMW = (document.body.innerHTML.match(/<option name=\"Medicinal Water\">/g) || []).length; var canUsePM = (document.body.innerHTML.match(/<option name=\"Precious Metals\">/g) || []).length; var canUseSF = (document.body.innerHTML.match(/<option name=\"Solid Fire\">/g) || []).length; var canUseUI = (document.body.innerHTML.match(/<option name=\"Unmelting Ice\">/g) || []).length; var summonOptions = []; var wanderStatus = []; if (canUseBC > 0) { summonOptions = summonOptions.concat("<option name=\"Brilliant Crystals\">Brilliant Crystals</option>"); } if (canUseMW > 0) { summonOptions = summonOptions.concat("<option name=\"Medicinal Water\">Medicinal Water</option>"); } if (canUsePM > 0) { summonOptions = summonOptions.concat("<option name=\"Precious Metals\">Precious Metals</option>"); } if (canUseSF > 0) { summonOptions = summonOptions.concat("<option name=\"Solid Fire\">Solid Fire</option>"); } if (canUseUI > 0) { summonOptions = summonOptions.concat("<option name=\"Unmelting Ice\">Unmelting Ice</option>"); } if (canSummon > 0) { wanderStatus = /<br>Current Status: <b>([\w\s\d]+)<\/b>/g.exec(document.body.innerHTML)[1]; battle = battle.concat("</table><table width=\"440\" style=\"border-width:1px;border-style:dotted;border-color:#A75928;background-color:#E0C69A;font-size:12px\"><tr><td width=\"220\">Attracting a Monster costs 8 of any single Basic Resource, or 3 of any Advanced Resource. To attract a monster, choose your resource to use, type \"Monster\" (without the quotes, WITH proper capitalization) to confirm.<br>To allow <b>possible</b> attraction of Major Kaiju (100K+ HP), type \"MONSTER\" (yes, in all caps).</td><td valign=\"top\"><form action=\"village.html\" name=\"newmon\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><select name=\"monrestouse\">" + summonOptions + "</select><br><input type=\"text\" name=\"attractmonster\" value=\" \"><br><a href=\"javascript:document.newmon.submit();\" onfocus=\"this.blur();\" style=\"color:A10000\"><b><font color=\"A10000\">Attract Monster</font></b></a><noscript><input type=\"submit\" VALUE=\"Attract Monster\"></noscript></form></td></tr><tr><td colspan=\"2\"><b>Wandering Kaiju</b><form action=\"village.html\" name=\"nowand\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\">You can adjust the Altar to keep Wandering Kaiju from showing up - however, if you activate this effect, all the Kaiju you entice will start with <b>+10% Base HP.</b><br>Current Status: <b>" + wanderStatus + "</b><input type=\"hidden\" name=\"nowand\" value=\"1\"><br><a href=\"javascript:document.nowand.submit();\" onfocus=\"this.blur();\" style=\"color:A10000\"><b><font color=\"A10000\">Deny Wandering Kaiju for 3 Days</font></b></a><noscript><input type=\"submit\" VALUE=\"Deny Wandering Kaiju for 3 Days\"></noscript></form>"); } vinfo = vinfo.concat("<table width=\"440\"><tr><td align=\"left\"><font style=\"font-size:14px\"><b>Yesterday's Report:</b></font><br><p style=\"margin:0\"><a href=\"javascript:expandSmallMenu(\'yesterrep\',\'15em\');\" onfocus=\"this.blur();\" style=\"color:000000; font-size:10px\"><b>Expand/Contract List</b></a></p></td></tr></table><table width=\"440\" style=\"border-width:1px;border-style:dotted;border-color:#A75928;background-color:#E0C69A;font-size:12px\"><tr><td><div style=\"height:15em;overflow:auto;overflow-x:hidden;\" id=\"yesterrep\">" + document.getElementById("yesterrep").innerHTML + "</div></table>"); admin = admin.concat("</table>"); // build the compression and decompression boxes var canDecomp = (document.body.innerHTML.match(/document.decompress.submit/g) || []).length; var canComp = (document.body.innerHTML.match(/document.compress.submit/g) || []).length; var decompCost = []; var comcost = []; var compCostA = []; var compCostB = []; var noSF = []; var noUI = []; var noSFc = []; var noUIc = []; if (canDecomp > 0) { comcost = document.getElementsByName("comcost")[1].value; decompCost = /Number of Advanced required: <b>([\d]+)<\/b>/g.exec(document.body.innerHTML)[1]; noSF = (document.body.innerHTML.match(/<input type=\"radio\" name=\"decompress\" value=\"1\" disabled/g) || []).length; noUI = (document.body.innerHTML.match(/<input type=\"radio\" name=\"decompress\" value=\"2\" disabled/g) || []).length; if (noSF > 0) { noSF = "disabled"; } else { noSF = ""; } if (noUI > 0) { noUI = "disabled"; } else { noUI = ""; } admin = admin.concat("<td width=\"220\" valign=\"top\" style=\"border-width:1px;border-style:dotted;border-color:#A75928;background-color:#E0C69A;font-size:12px\"><b>Elemental Decompression</b><br>Decompress your Advanced Resources into 1 of each Basic Resource!<br><br>Number of Advanced required: <b>" + decompCost + "</b><form action=\"village.html\" name=\"decompress\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><input type=\"hidden\" name=\"comcost\" value=" + comcost + "><input type=\"radio\" name=\"decompress\" value=\"1\" " + noSF + "> Break Apart Solid Fire<br><input type=\"radio\" name=\"decompress\" value=\"2\" " + noUI + "> Break Apart Unmelting Ice<br><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.decompress.submit();\" onfocus=\"this.blur();\" style=\"color:000000\"><b><font color=\"A10000\">Decompress Resource ></font></b></a></p><noscript><input type=\"submit\" VALUE=\"Decompress Resource >\"></noscript></form>"); } if (canComp > 0) { comcost = document.getElementsByName("comcost")[1].value; compCostA = /Number of each Basics to make:<br>\s<b>Solid Fire - <i>([\d]+)<\/i><br>\sUnmelting Ice - <i>([\d]+)<\/i><br>/g.exec(document.body.innerHTML)[1]; compCostB = /Number of each Basics to make:<br>\s<b>Solid Fire - <i>([\d]+)<\/i><br>\sUnmelting Ice - <i>([\d]+)<\/i><br>/g.exec(document.body.innerHTML)[2]; noSFc = (document.body.innerHTML.match(/<input type=\"radio\" name=\"compress\" value=\"1\" disabled/g) || []).length; noUIc = (document.body.innerHTML.match(/<input type=\"radio\" name=\"compress\" value=\"2\" disabled/g) || []).length; if (noSFc > 0) { noSFc = "disabled"; } else { noSFc = ""; } if (noUIc > 0) { noUIc = "disabled"; } else { noUIc = ""; } admin = admin.concat("<hr><b>Elemental Compression</b><br>Compress your Basic Resources into Advanced Resources!<br><br>Number of each Basics to make:<br><b>Solid Fire - <i>" + compCostA + "</i><br>Unmelting Ice - <i>" + compCostB + "</i><br></b><form action=\"village.html\" name=\"compress\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><input type=\"hidden\" name=\"comcost\" value=\"" + comcost + "\"><input type=\"radio\" name=\"compress\" value=\"1\" " + noSFc + " > Create Solid Fire<br><input type=\"radio\" name=\"compress\" value=\"2\" " + noUIc + " > Create Unmelting Ice<br><p style=\"margin:0; text-align:right\"><a href=\"javascript:document.compress.submit();\" onfocus=\"this.blur();\" style=\"color:000000\"><b><font color=\"A10000\">Compress Resource ></font></b></a><noscript><input type=\"submit\" VALUE=\"Compress Resource >\"></p></noscript></form>"); } // build the RP box var RPAvail = (document.body.innerHTML.match(/document.respoints.submit/g) || []).length; var majorAvail = (document.body.innerHTML.match(/> Major Contract:/g) || []).length; var minorAvail = (document.body.innerHTML.match(/> Minor Contract:/g) || []).length; var numMajor = []; var numMinor = []; var amtMajor = []; var amtMinor = []; var canMill = (document.body.innerHTML.match(/Check to Mill Contracts/g) || []).length; if (canDonate > 0) { if (majorAvail > 0) { numMajor = parseInt(/> Major Contract: ([\d]+)/g.exec(document.body.innerHTML)[1], 10); amtMajor = parseInt(/> Major Contract: ([\d]+) \(\+([\d]+) Ryo\)/g.exec(document.body.innerHTML)[2], 10); majorAvail = "<input type=\"radio\" name=\"sellcontract\" value=\"Major\">Major Contract: " + numMajor + " (+" + amtMajor + " Ryo)<br>"; } else { majorAvail = ""; } if (minorAvail > 0) { numMinor = parseInt(/> Minor Contract: ([\d]+)/g.exec(document.body.innerHTML)[1], 10); amtMinor = parseInt(/> Minor Contract: ([\d]+) \(\+([\d]+) Ryo\)/g.exec(document.body.innerHTML)[2], 10); minorAvail = "<input type=\"radio\" name=\"sellcontract\" value=\"Minor\">Minor Contract: " + numMinor + " (+" + amtMinor + " Ryo)<br>"; } else { minorAvail = ""; } if (canMill > 0) { canMill = "<input type=\"checkbox\" name=\"millem\" value=\"1\"> Check to Mill Contracts<br> (random Ryo, chance of resources)<br>"; } else { canMill = ""; } admin = admin.concat("</td></tr></table><table width=\"440\"><tr><td align=\"left\"><font style=\"font-size:14px\"><b>Village Contracts:</b></font></td></tr></table><table width=\"440\" style=\"border-width:1px;border-style:dotted;border-color:#A75928;background-color:#E0C69A;font-size:12px\"><tr><td><b>Contracts</b> apply immediately to your Village Ryo!<br><form style=\"margin:0\" name=\"cryo\" action=\"village.html\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\">" + majorAvail + minorAvail + "<input type=\"text\" name=\"numbercontract\" value=\"1\" size=\"1\"> Number to submit<br>" + canMill + "<a href=\"javascript:document.cryo.submit();\" onfocus=\"this.blur();\" style=\"color:black; font-size:12px\"><b>Donate Contract</b></b></a><noscript><input type=\"submit\" VALUE=\"Donate Contract\"></noscript></form>"); } if (RPAvail > 0) { admin = admin.concat("</td></tr></table><table width=\"440\"><tr><td align=\"left\"><font style=\"font-size:14px\"><b>Resource Points:</b></font></td></tr></table><table width=\"440\" style=\"border-width:1px;border-style:dotted;border-color:#A75928;background-color:#E0C69A;font-size:12px\"><tr><td>Break Resources down to give to Villagers!<br><form action=\"villageresourcepoints.html\" name=\"respoints\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><a href=\"javascript:document.respoints.submit();\" onfocus=\"this.blur();\" style=\"color:000000\"><b><font color=\"A10000\">Give Resource Points ></font></b></a><noscript><input type=\"submit\" VALUE=\"Give Resource Points >\"></noscript></form></td></tr></table>"); } // build the applications box TODO: WANDERS var appStatus = []; var blurb = []; var autoAcc = []; var addNinja = []; var denyNinja = []; var ninShown = []; var remNin = []; var getNin = []; if (canApprove > 0) { appStatus = /You currently <b>([\w]+)<\/b> applications to your village/g.exec(document.body.innerHTML)[1]; blurb = /<br>---<br>([\S\s]+)<br>---<br>/g.exec(document.body.innerHTML)[1]; autoAcc = /You are ([\w\s-]+) apps.<br>/g.exec(document.body.innerHTML)[1]; addNinja = /Characters applying:<br>([\s\w\d<=\"\.>:\;-]+)<\/div>/.exec(document.body.innerHTML)[1]; denyNinja = /turn off and on apps\):<br>([\s\w\d<=\"\.>:\;-]+)<\/div>/.exec(document.body.innerHTML)[1]; ninHidden = (document.body.innerHTML.match(/remnin.submit\(\);\" onfocus=\"this.blur\(\);\" style="color:A10000\"><b>Show All Villagers/g) || []).length; if (ninHidden > 0) { remNin = "<input type=\"hidden\" name=\"showallvillagers\" value=\"1\"><a href=\"javascript:document.remnin.submit();\" onfocus=\"this.blur();\" style=\"color:A10000\"><b>Show All Villagers</b></a><noscript><input type=\"submit\" VALUE=\"Show All Villagers\"></noscript></form>"; } else { kickStart = document.body.innerHTML.indexOf("whotodel"); kickEnd = document.body.innerHTML.lastIndexOf("kickplayerconfirm"); getNin = document.body.innerHTML.slice(kickStart, kickEnd); remNin = "<select name=\"whotodel\">" + getNin + "kickplayerconfirm\" value=\"go\"> Click to Confirm<br><a href=\"javascript:document.remnin.submit();\" onfocus=\"this.blur();\" style=\"color:A10000\"><b><font color=\"A10000\">Remove Ninja</font></b></a><noscript><input type=\"submit\" VALUE=\"Remove Ninja\"></noscript></form>"; } admin = admin.concat("<table width=\"440\"><tr><td align=\"left\"><font style=\"font-size:14px\"><b>Applications/Members:</b></font></td></tr></table><table width=\"440\" style=\"border-width:1px;border-style:dotted;border-color:#A75928;background-color:#E0C69A;font-size:12px\"><tr><td>You currently <b>" + appStatus + "</b> applications to your village! Your Recruitment blurb:<br>---<br>" + blurb + "<br>---<br><form action=\"village.html\" name=\"swapaaapp\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\">You are " + autoAcc + " applications to your village. <br><input type=\"hidden\" name=\"swapaaapp\" value=\"1\"><a href=\"javascript:document.swapaaapp.submit();\" onfocus=\"this.blur();\" style=\"color:A10000\"><b><font color=\"A10000\">Toggle Auto-Accept ></font></b></a><noscript><input type=\"submit\" VALUE=\"Toggle Auto-Accept >\"></noscript></form>To change your application text, you must disallow and then reallow applications (so they join under the same conditions they applied to).<br>Characters applying:<br>" + addNinja + "</div><a href=\"javascript:document.allapp.submit();\" onfocus=\"this.blur();\" style=\"color:A10000\"><b><font color=\"A10000\">Allow Ninja to Join Village</font></b></a><noscript><input type=\"submit\" VALUE=\"Allow Ninja to Join Village\"></noscript></form><br>Deny applications here (if you deny someone, they cannot re-ask until you turn off and on apps):<br>" + denyNinja + "</div>Message (optional, be nice):<br><input type=\"text\" name=\"villagedenymsg\" value=\"\"><br><a href=\"javascript:document.dnapp.submit();\" onfocus=\"this.blur();\" style=\"color:A10000\"><b><font color=\"A10000\">Deny Application</font></b></a><noscript><input type=\"submit\" VALUE=\"Deny Application\"></noscript></form><form action=\"village.html\" name=\"disapp\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><input type=\"hidden\" name=\"villageallow\" value=\"disallow\">Village the way you want it? Turn off applications here.<br><a href=\"javascript:document.disapp.submit();\" onfocus=\"this.blur();\" style=\"color:A10000\"><b><font color=\"A10000\">Stop Allowing Applications</font></b></a><noscript><input type=\"submit\" VALUE=\"Stop Allowing Applications\"></noscript></form><b>Wandering Genin</b><br> Too high or low Member Count and/or Village Size to allow wandering Genin (must be between 5 and 45 Members and Size)<hr><b>Remove Characters from Village</b><form action=\"village.html\" name=\"remnin\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\">" + remNin + "<br><b>Duplicate Player Check</b><br>Check the IPs of your current players and applicants for duplicates.<br><form action=\"villagecheckip.html\" name=\"ipboard\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><a href=\"javascript:document.ipboard.submit();\" onfocus=\"this.blur();\" style=\"color:000000\"><b><font color=\"A10000\">IP Check ></font></b></a><noscript><input type=\"submit\" VALUE=\"IP Check >\"></noscript></form><br><b>Manage Ban List</b><br>Manage the Ban List for your Village.<br><form action=\"villagebanlist.html\" name=\"vbanlist\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><a href=\"javascript:document.vbanlist.submit();\" onfocus=\"this.blur();\" style=\"color:000000\"><b><font color=\"A10000\">Village Ban List ></font></b></a><noscript><input type=\"submit\" VALUE=\"Village Ban List >\"></noscript></form></td></tr></table>"); } if (canOpenApp > 0) { ninHidden = (document.body.innerHTML.match(/remnin.submit\(\);\" onfocus=\"this.blur\(\);\" style="color:A10000\"><b>Show All Villagers/g) || []).length; if (ninHidden > 0) { remNin = "<input type=\"hidden\" name=\"showallvillagers\" value=\"1\"><a href=\"javascript:document.remnin.submit();\" onfocus=\"this.blur();\" style=\"color:A10000\"><b>Show All Villagers</b></a><noscript><input type=\"submit\" VALUE=\"Show All Villagers\"></noscript></form>"; } else { kickStart = document.body.innerHTML.indexOf("whotodel"); kickEnd = document.body.innerHTML.lastIndexOf("kickplayerconfirm"); getNin = document.body.innerHTML.slice(kickStart, kickEnd); remNin = "<select name=\"whotodel\">" + getNin + "kickplayerconfirm\" value=\"go\"> Click to Confirm<br><a href=\"javascript:document.remnin.submit();\" onfocus=\"this.blur();\" style=\"color:A10000\"><b><font color=\"A10000\">Remove Ninja</font></b></a><noscript><input type=\"submit\" VALUE=\"Remove Ninja\"></noscript></form>"; } admin = admin.concat("<table width=\"440\"><tr><td align=\"left\"><font style=\"font-size:14px\"><b>Applications/Members:</b></font></td></tr></table><table width=\"440\" style=\"border-width:1px;border-style:dotted;border-color:#A75928;background-color:#E0C69A;font-size:12px\"><tr><td>Your village is currently <b>closed</b> to new members.<form action=\"village.html\" name=\"allapp2\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><input type=\"hidden\" name=\"villageallow\" value=\"allow\">Type your recruiting blurb here! (more than 10 and less than 300 characters, no HTML or cursing)<br><input type=\"text\" name=\"villageallowtext\" value=\"\"><br><br><input type=\"checkbox\" name=\"vil_default\" value=\"1\"> Auto-Accept all applicants<br><a href=\"javascript:document.allapp2.submit();\" onfocus=\"this.blur();\" style=\"color:A10000\"><b><font color=\"A10000\">Allow Applications</font></b></a><noscript><input type=\"submit\" VALUE=\"Allow Applications\"></noscript></form><hr><b>Remove Characters from Village</b><form action=\"village.html\" name=\"remnin\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\">" + remNin + "<br><b>Duplicate Player Check</b><br>Check the IPs of your current players and applicants for duplicates.<br><form action=\"villagecheckip.html\" name=\"ipboard\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><a href=\"javascript:document.ipboard.submit();\" onfocus=\"this.blur();\" style=\"color:000000\"><b><font color=\"A10000\">IP Check ></font></b></a><noscript><input type=\"submit\" VALUE=\"IP Check >\"></noscript></form><br><b>Manage Ban List</b><br>Manage the Ban List for your Village.<br><form action=\"villagebanlist.html\" name=\"vbanlist\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><a href=\"javascript:document.vbanlist.submit();\" onfocus=\"this.blur();\" style=\"color:000000\"><b><font color=\"A10000\">Village Ban List ></font></b></a><noscript><input type=\"submit\" VALUE=\"Village Ban List >\"></noscript></form></td></tr></table>"); } // conclude the content divs with tables events = events.concat("</table>"); battle = battle.concat("</table>"); attack = attack.concat("</table>"); admin = admin.concat("<table width=\"440\"><tr><td align=\"left\"><font style=\"font-size:14px\"><b>Leave Village:</b></font></td></tr></table><table width=\"440\" style=\"border-width:1px;border-style:dotted;border-color:#A75928;background-color:#E0C69A;font-size:12px\"><tr><td>Want to leave your village? just type your password in here and hit \'Leave Village\'.<form action=\"villagejoin.html\" name=\"leavev\" method=\"post\"><input type=\"hidden\" name=\"player\" value=\"" + player + "\"><input type=\"hidden\" name=\"pwd\" value=\"" + pass + "\"><input type=\"hidden\" name=\"leavevillage\" value=\"go\"><input type=\"password\" name=\"pwdconfirm\" value=\"\"><br><input type=\"checkbox\" name=\"leaveconfirm\" value=\"1\"> (click to confirm)<br><a href=\"javascript:document.leavev.submit();\" onfocus=\"this.blur();\" style=\"color:A10000\"><b><font color=\"A10000\">Leave Village</font></b></a><noscript><input type=\"submit\" VALUE=\"Leave Village\"></noscript></form></td></tr></table>"); vcenter = vcenter.concat("</table>"); vinfo = vinfo.concat("</table>"); // insert content divs for the tabs later contentInsert = "<ul id=\"tabs\"><li><a href=\"#events\">Events</a></li><li><a href=\"#battle\">Battle</a></li><li><a href=\"#attack\">Attack Other Villages</a></li><li><a href=\"#vcenter\">Village Center</a></li><li><a href=\"#admin\">Village Admin</a></li><li><a href=\"#vinfo\">Village Info</a></li></ul><div class=\"tabContent\" id=\"events\">" + events + "</div><div class=\"tabContent\" id=\"battle\">" + battle + "</div><div class=\"tabContent\" id=\"attack\">" + attack + "</div><div class=\"tabContent\" id=\"vcenter\">" + vcenter + "</div><div class=\"tabContent\" id=\"admin\">" + admin + "</div><div class=\"tabContent\" id=\"vinfo\">" + vinfo + "</div>"; // comment out the old village page document.body.innerHTML = document.body.innerHTML.replace(/<table style=\"font-family:arial\">/g, "<table style=\"font-family:arial\"><tr><td valign=\"top\" align=\"center\"><!--"); document.body.innerHTML = document.body.innerHTML.replace(/<b>Leave Village/g, "-->" + contentInsert + "<!--<br><p align\"left\"><table width=\"220\"><tr><td align=left><font style=\"font-size:14px\"><b>Leave Village"); // document.body.innerHTML = document.body.innerHTML.replace(/View Villages Accepting Apps ><\/b><\/a>/g, "View Villages Accepting Apps ></b></a></p><!--"); document.body.innerHTML = document.body.innerHTML.replace(/<p style=\"margin:0 0 2px 0;text-align:right\">/g, "--><p style=\"margin:0 0 2px 0;text-align:right\">"); // make the tabs work var tabLinks = []; var contentDivs = []; function initTabs() { // Grab the tab links and content divs from the page var tabListItems = document.getElementById('tabs').childNodes; for (var i = 0; i < tabListItems.length; i++) { if (tabListItems[i].nodeName == "LI") { var tabLink = getFirstChildWithTagName(tabListItems[i], 'A'); var id = getHash(tabLink.getAttribute('href')); tabLinks[id] = tabLink; contentDivs[id] = document.getElementById(id); } } // Assign onclick events to the tab links, and // highlight the first tab i = 0; for (id in tabLinks) { tabLinks[id].onclick = showTab; tabLinks[id].onfocus = function() { this.blur() }; if (i === 0) { tabLinks[id].className = 'selected'; } i++; } // Hide all content divs except the first i = 0; for (id in contentDivs) { if (i !== 0) { contentDivs[id].className = 'tabContent hide'; } i++; } } function showTab() { var selectedId = getHash(this.getAttribute('href')); // Highlight the selected tab, and dim all others. // Also show the selected content div, and hide all others. for (id in contentDivs) { if (id == selectedId) { tabLinks[id].className = 'selected'; contentDivs[id].className = 'tabContent'; } else { tabLinks[id].className = ''; contentDivs[id].className = 'tabContent hide'; } } // Stop the browser following the link return false; } function getFirstChildWithTagName(element, tagName) { for (i = 0; i < element.childNodes.length; i++) { if (element.childNodes[i].nodeName == tagName) { return element.childNodes[i]; } } } function getHash(url) { var hashPos = url.lastIndexOf('#'); return url.substring(hashPos + 1); } addTabCSS(); initTabs();