Enquirer Home Page | Twitter | Back to Improbable Island
 

ii-truancy-meter

ii-truancy-meter.user.js
// ==UserScript==
// @name Improbable Island Xp Bar
// @namespace http://www.shadedraco.com/improbabletruancy
// @description    Improbable Island Truancy Meter. Credit to Devin, modified by Tahvohck, Maniak, and CloudySky
// @include https://*improbableisland.com/*
// @version 3.1
// ==/UserScript==
 
var CharInfo = document.evaluate("//table[@class='charinfo']", document, null, XPathResult.ANY_UNORDERED_NODE_TYPE, null).singleNodeValue;
if (CharInfo) {
  var LevelRow = document.evaluate("//td[@class='charinfo']/b/span[@class='colLtWhite'][text()='Level']/../../..", CharInfo, null, XPathResult.ANY_UNORDERED_NODE_TYPE, null).singleNodeValue;
  if (LevelRow) {
    var Level = new Number(LevelRow.cells[1].childNodes[0].childNodes[0].textContent);
    var ExperienceRow = LevelRow.parentNode.rows[LevelRow.rowIndex+1];
    var ExperienceMatch = ExperienceRow.cells[1].childNodes[0].childNodes[0].textContent.match(/^([\d,]+) \/ ([\d,]+)$/);
    var Experience = new Number(ExperienceMatch[1].replace(/,/g,''));
    var ExperienceNextLevel = new Number(ExperienceMatch[2].replace(/,/g,''));
    var ExperienceTable = {
      1  : 0,
      2  : 100, //800
      3  : 400, // 1800
      4  : 1002,
      5  : 1912,
      6  : 3140,
      7  : 4707,
      8  : 6641,
      9  : 8985,
      10 : 11795,
      11 : 15143,
      12 : 19121,
      13 : 23840,
      14 : 29437,
      15 : 36071,
      16 : 43930,
      17 : 43930, // Doesn't actually exist, but I needed to put something here
    };
    var DKs = (ExperienceNextLevel - ExperienceTable[Level+1]) / Level / 25;
 
    //The various bars.------------------------------------------------
                //Truancy
    var ExperienceThisLevel = ExperienceTable[Level] + ((Level-1) * DKs * 25);
    var ExperienceTruancy = ExperienceTable[Level+2] + ((Level+1) * DKs * 25);
    var TruancyBarWidth = ((Experience - ExperienceNextLevel) / (ExperienceTruancy - ExperienceNextLevel)) * 100;
        if (TruancyBarWidth < 0) TruancyBarWidth = 0;
    if (TruancyBarWidth > 100) TruancyBarWidth = 100;
    var RemainderWidth = 100 - TruancyBarWidth;   
  if(Experience >= ExperienceNextLevel) {
    ExperienceRow.cells[1].innerHTML +=
      "<span class='colLtYellow'>" +
      "<table style='border: solid 1px #000000;' title='"+ExperienceTruancy+"' bgcolor='red' cellpadding='0' cellspacing='0' width='70' height='5'><tr><td width='"+TruancyBarWidth+"%' bgcolor='"+(Experience>=ExperienceTruancy?'#00FF00':'white')+"'></td><td width='"+RemainderWidth+"%'></td></tr></table>" +
      "</span>";}
 
                //Next Truancy
        var ExperienceNextTruancy = ExperienceTable[Level+2] + ((Level+2) * DKs * 25);
        var ExperienceLevelAfterThat = ExperienceTable[Level+3] + ((Level+2) * DKs * 25);
        var NextTruancyBarWidth = ((Experience - ExperienceNextTruancy) / (ExperienceLevelAfterThat - ExperienceNextTruancy)) * 100;
        if (NextTruancyBarWidth < 0) NextTruancyBarWidth = 0;
    if (NextTruancyBarWidth > 100) NextTruancyBarWidth = 100;
  if(Experience >= ExperienceTruancy) {
      ExperienceRow.cells[1].innerHTML +=
      "<span class='colLtYellow'>" +
          "<table style='border: solid 1px #000000;' title='"+ExperienceLevelAfterThat+"' bgcolor='red' cellpadding='0' cellspacing='0' width='70' height='5'><tr><td width='"+NextTruancyBarWidth+"%' bgcolor='"+(Experience>=ExperienceLevelAfterThat?'#00FF00':'white')+"'></td><td width='"+RemainderWidth+"%'></td></tr></table>" +
      "</span>";}
 
     /*   //Overall
        var ExperienceWin = ExperienceTable[15] + (14 * DKs * 25);
        var OverallWidth = (Experience / (ExperienceWin)) * 100;
        var OverRemaining = 100 - OverallWidth;
    LevelRow.cells[1].innerHTML +=
      "<span class='colLtYellow'>" +
      "<table style='border: solid 1px #000000;' title='"+ExperienceWin+"' bgcolor='red' cellpadding='0' cellspacing='0' width='70' height='5'><tr><td width='"+OverallWidth+"%' bgcolor='"+(Experience>=ExperienceWin?'#00D000':'white')+"'></td><td width='"+OverRemaining+"%'></td></tr></table>" +
      "<br/></span>";
    //alert(ExperienceWin);  */
  }
}

Version 1.0 (discussion thread link)

I made a Greasemonkey script that adds a second experience bar below the first, which fills up toward the point where you get hunted down by your dojo master. It works on my system, so I figured I'd share.

Version 1.1
Version 2.0 (discussion thread link)

I ended up adding a bit to it so it only shows the second bar if you've gone past what you need for the level you're on, and fiddled with the colors. The part commented out near the bottom--/*//Overall...Win);*/--adds a bar below your level number, showing you how far you have to go to level 15. Just remove the /* and */ to turn that part on.

Version 2.1
Version 3.0 (discussion thread link)

I tinkered with the Truancy Bar a bit. Don't you love open-source?

New features:
An extra truancy bar starts filling up after you filled the first truancy bar.
Mouse-over the truancy bar and it shows you how much experience is required to fill it.

Tinkered with the colors a bit. The truancy bar fills white on a red background, then turns green once it's filled. It's the same color green that is used for the stamina and health bar, to give it a more unified look.

Code below. Remove the /* */ to activate the Overall exp bar.
 
Logged in as: Guest (Guest)
greasemonkey/ii-truancy-meter.txt · Last modified: 2017/06/06 11:13 by CloudySky