Skip to content

Instantly share code, notes, and snippets.

@Drashian
Created November 16, 2010 17:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Drashian/702161 to your computer and use it in GitHub Desktop.
Save Drashian/702161 to your computer and use it in GitHub Desktop.
Improbable Quest Tracker
// ==UserScript==
// @name Improbable Quest Tracker
// @namespace http://www.shadedraco.com/improbablequests
// @include http://improbableisland.com/*
// @include http://www.improbableisland.com/*
// ==/UserScript==
var Content = document.evaluate("//td[@class='content']", document, null, XPathResult.ANY_UNORDERED_NODE_TYPE, null).singleNodeValue;
if (Content) {
Content = Content.innerHTML;
var Defeated = Content.match(/<span class="colDkRed">You have defeated the (.*)!!!\.<\/span><br>/);
var FoundItem1 = Content.match(/After a bit of digging, you find the (.*)! It did take a little longer than you thought, however\.<br>/);
var FoundItem2 = Content.match(/He's giving you the (.*) you needed for Dan! How lucky you are!<br>/);
var FoundItem3 = Content.match(/It's the (.*)! You think how incredibly lucky you are as you pick it up and make your way back to the path\.<br>/);
var NewStep = Content.match(/(?:You need to seek out and kill the |So first, you'll need to go and kill the )<b>(.*)<\/b>(?:, which you'll find in the jungle immediately around |, which, from what we can gather, is hanging out in the jungles around )<b>(.*)<\/b>\./);
var NewStepItem = Content.match(/You need to go and find the <b>(.*)<\/b>, (?:in the jungle around|down in the jungles of) <b>(.*)<\/b>\./);
var LastStep = Content.match(/'It's time I told you the name of this foe\. It is known as the <b>(.*)<\/b>, and is very powerful\. This foe is immortal, so you cannot defeat him\. However, there is another way to rid the world of its evil\. Once you beat it down to unconsciousness, you must seal it into another dimension\. This will rid the world of it without killing it\.'<br>\n?<br>\n?\n?'You can find this last one in the jungles around <b>(.*)<\/b>\./m);
var Finished = Content.match(/<span class="colDkRed"><b>You have completed this quest!<\/b><\/span>/);
if (Defeated) {
GM_setValue('QuestName', Defeated[1]);
GM_setValue('QuestComplete', true);
} else if (FoundItem1) {
GM_setValue('QuestName', FoundItem1[1]);
GM_setValue('QuestComplete', true);
} else if (FoundItem2) {
GM_setValue('QuestName', FoundItem2[1]);
GM_setValue('QuestComplete', true);
} else if (FoundItem3) {
GM_setValue('QuestName', FoundItem3[1]);
GM_setValue('QuestComplete', true);
} else if (NewStep) {
GM_setValue('QuestName', NewStep[1]);
GM_setValue('QuestLocation', NewStep[2]);
GM_setValue('QuestComplete', false);
GM_setValue('QuestStep', (GM_getValue('QuestStep')||0) + 1);
GM_setValue('QuestLast', false);
} else if (NewStepItem) {
GM_setValue('QuestName', NewStepItem[1]);
GM_setValue('QuestLocation', NewStepItem[2]);
GM_setValue('QuestComplete', false);
GM_setValue('QuestStep', (GM_getValue('QuestStep')||0) + 1);
GM_setValue('QuestLast', false);
} else if (LastStep) {
GM_setValue('QuestName', LastStep[1]);
GM_setValue('QuestLocation', LastStep[2]);
GM_setValue('QuestComplete', false);
GM_setValue('QuestStep', (GM_getValue('QuestStep')||0) + 1);
GM_setValue('QuestLast', true);
} else if (Finished) {
GM_deleteValue('QuestName');
GM_deleteValue('QuestLocation');
GM_deleteValue('QuestComplete');
GM_deleteValue('QuestStep');
GM_deleteValue('QuestLast');
}
}
var CharInfo = document.evaluate("//table[@class='charinfo']", document, null, XPathResult.ANY_UNORDERED_NODE_TYPE, null).singleNodeValue;
if (CharInfo) {
if (GM_getValue('QuestName')) {
CharInfo.innerHTML += "<tr><td class='charhead' colspan='2'><b>Quest</b><td></tr>";
CharInfo.innerHTML += "<tr><td class='charinfo' colspan='2'><span class='colLtYellow'>"+(GM_getValue('QuestLast')?"<b>":"")+GM_getValue('QuestName')+(GM_getValue('QuestLast')?"</b>":"")+"</span><td></tr>";
CharInfo.innerHTML += "<tr><td class='charinfo'><b><span class='colLtWhite'>Location</span></b></td><td class='charinfo'><span class='colLtYellow'>"+GM_getValue('QuestLocation')+"</span><td></tr>";
CharInfo.innerHTML += "<tr><td class='charinfo'><b><span class='colLtWhite'>Step</span></b></td><td class='charinfo'><span class='colLtYellow'>"+GM_getValue('QuestStep')+"</span><td></tr>";
if (GM_getValue('QuestComplete')) {
CharInfo.innerHTML += "<tr><td class='charinfo'><b><span class='colLtWhite'>Status</span></b></td><td class='charinfo'><span class='colLtGreen'>Complete</span><td></tr>";
} else {
CharInfo.innerHTML += "<tr><td class='charinfo'><b><span class='colLtWhite'>Status</span></b></td><td class='charinfo'><span class='colLtYellow'>In Progress</span><td></tr>";
}
} else {
CharInfo.innerHTML += "<tr><td class='charhead' colspan='2'><b>Quest</b><td></tr>";
CharInfo.innerHTML += "<tr><td class='charinfo' colspan='2'><span class='colLtWhite'>None</span><td></tr>";
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment