?

Log in

No account? Create an account

Murkon's Refuge

« previous entry | next entry »
Jun. 12th, 2014 | 08:00 pm

I don't suppose any of you are familiar with Rinkworks.

It's an old site — someone's personal site that's been around since the 90s, and that still looks like it always did, with all that pure-HTML retro charm. Anyhow, it's got a a number of features, among them a few games, and I've still got an ages-old game of Murkon's Refuge running.

It's a fun game, too. Fairly formulaic, and of course fairly primitive, but fun; I think it came about when the site's creator found some old drawings of various monsters from his childhood and thought, hey, I should use these for a game. I was actually the 30th person to finish the game, way back when in 2002 — after that, I briefly tried to play another one with just one character, a fighter, but that proved to be very difficult, so I switched to a full party again soon. I could've finished that new game long ago, but I've been having more fun occasionally going back to it and farming gold and XP rather than killing the Big Bad. (Very rarely, really; only a few times in the past couple of years.)

For gold-farming, it's useful to know what items to carry back to town to sell and what items to drop. So I decided to write a Greasemonkey script that will automagically display what items are worth (note that all prices are for Teralt):

// ==UserScript==
// @name        Murkon's Refuge - Item prices
// @namespace   None
// @include     http://rinkworks.com/vault/games/refuge/refuge.cgi
// @include     http://*.rinkworks.com/vault/games/refuge/refuge.cgi
// @version     3
// @grant       none
// ==/UserScript==

var itemPrices = new Object();
itemPrices["Amulet Half"] = 5;
itemPrices["Anointed Crossbow"] = 82500;
itemPrices["Anointed Dagger"] = 487;
itemPrices["Anti-Cold Leather"] = 42750;
itemPrices["Anti-Heat Leather"] = 43875;
itemPrices["Anti-Heat Leather +1"] = 63750;
itemPrices["Anti-Cold Shield"] = 17062;
itemPrices["Anti-Heat Shield"] = 17062;
itemPrices["Assassin's Boots"] = 525000;
itemPrices["Assassin's Robe"] = 354375;
itemPrices["Blade of Power"] = 750000;
itemPrices["Blanket of Silence"] = 1875;
itemPrices["Boots of Agility"] = 13312;
itemPrices["Boots of Agility +1"] = 31687;
itemPrices["Boots of Agility +2"] = 60000;
itemPrices["Boots of Healing"] = 225000;
itemPrices["Boots of Maneuvering"] = 330000;
itemPrices["Boots of Speed +1"] = 48937;
itemPrices["Boots of Speed"] = 26250;
itemPrices["Boots of Speed +1"] = 48937;
itemPrices["Bow and Arrows"] = 1425;
itemPrices["Breast Plate"] = 675;
itemPrices["Breast Plate +1"] = 1687;
itemPrices["Breast Plate +2"] = 5625;
itemPrices["Bright Stone"] = 375;
itemPrices["Bronze Gauntlets"] = 4125;
itemPrices["Bronze Gauntlets +1"] = 9000;
itemPrices["Bronze Gauntlets +2"] = 33562;
itemPrices["Bronze Helmet"] = 2137;
itemPrices["Bronze Helmet +1"] = 5625;
itemPrices["Bronze Helmet +2"] = 13875;
itemPrices["Buckler"] = 75;
itemPrices["Buckler +1"] = 2250;
itemPrices["Buckler +2"] = 7500;
itemPrices["Cap of I.Q."] = 11250;
itemPrices["Cap of I.Q. +1"] = 26250;
itemPrices["Cap of I.Q. +2"] = 41250;
itemPrices["Cap of Vision"] = 19875;
itemPrices["Cap of Wisdom"] = 11625;
itemPrices["Cap of Wisdom +1"] = 26625;
itemPrices["Cap of Wisdom +2"] = 41625;
itemPrices["Chain Mail"] = 412;
itemPrices["Chain Mail +1"] = 1312;
itemPrices["Chain Mail +2"] = 4875;
itemPrices["Cloak of Healing"] = 166875;
itemPrices["Cloth Hood"] = 225;
itemPrices["Cloth Slippers"] = 1312;
itemPrices["Cloth Slippers +1"] = 2812;
itemPrices["Combat Gloves"] = 363750;
itemPrices["Cooler Shield"] = 58125;
itemPrices["Copper Gauntlets"] = 975;
itemPrices["Copper Gauntlets +1"] = 7125;
itemPrices["Copper Gauntlets +2"] = 16500;
itemPrices["Copper Helmet"] = 337;
itemPrices["Copper Helmet +1"] = 3000;
itemPrices["Copper Helmet +2"] = 7687;
itemPrices["Crossbow"] = 28500;
itemPrices["Dagger"] = 15;
itemPrices["Dagger +1"] = 262;
itemPrices["Dagger +2"] = 900;
itemPrices["Darts"] = 525;
itemPrices["Death's Key"] = 187500;
itemPrices["Deflector Shield"] = 26250;
itemPrices["Displacer Hide"] = 6562;
itemPrices["Dome Stone"] = 1500;
itemPrices["Dreamer's Stone"] = 2437;
itemPrices["Druid's Garb"] = 600000;
itemPrices["Druid's Hood"] = 412500;
itemPrices["Evolving Figurine"] = 11625;
itemPrices["Fire Arc Stone"] = 1305;
itemPrices["Fire Bolt Scroll"] = 75;
itemPrices["Fire Lance Scroll"] = 322;
itemPrices["Fire Stream Stone"] = 2250;
itemPrices["Fire Wand"] = 73125;
itemPrices["Flail"] = 87;
itemPrices["Flail +1"] = 1425;
itemPrices["Flail +2"] = 7312;
itemPrices["Flamberge"] = 5587;
itemPrices["Full-Leg Boots"] = 6000;
itemPrices["Gatekeeper's Key"] = 5;
itemPrices["Gloves of Dexterity"] = 15000;
itemPrices["Gloves of Dexterity +1"] = 33937;
itemPrices["Gloves of Dexterity +2"] = 62812;
itemPrices["Gloves of Speed"] = 22500;
itemPrices["Gloves of Speed +1"] = 56625;
itemPrices["Gloves of Speed +2"] = 97500;
itemPrices["Gloves of Strength"] = 15000;
itemPrices["Gloves of Strength +1"] = 33937;
itemPrices["Gloves of Strength +2"] = 62812;
itemPrices["Gold Key"] = 5;
itemPrices["Health Amulet"] = 86250;
itemPrices["Heater Shield"] = 58125;
itemPrices["Heavy Boots"] = 132;
itemPrices["Heavy Cloak"] = 42;
itemPrices["Heavy Healing Potion"] = 4725;
itemPrices["Helmet of Healing"] = 67500;
itemPrices["Homing Stone"] = 3750;
itemPrices["Hovering Shield"] = 9375;
itemPrices["Ice Arc Stone"] = 1305;
itemPrices["Ice Bolt Scroll"] = 75;
itemPrices["Ice Lance Scroll"] = 322;
itemPrices["Ice Stream Stone"] = 2250;
itemPrices["Information Highway"] = 675;
itemPrices["Iron Armor"] = 3750;
itemPrices["Iron Boots"] = 3750;
itemPrices["Iron Gauntlets"] = 4500;
itemPrices["Iron Gauntlets +1"] = 8437;
itemPrices["Iron Helmet"] = 2437;
itemPrices["Iron Shield"] = 4312;
itemPrices["Iron Shield +1"] = 20062;
itemPrices["Knight's Crest"] = 225000;
itemPrices["Knight's Suit"] = 450000;
itemPrices["Large Shield"] = 357;
itemPrices["Large Shield +1"] = 1875;
itemPrices["Leather Armor"] = 150;
itemPrices["Leather Armor +1"] = 1125;
itemPrices["Leather Armor +2"] = 3937;
itemPrices["Leather Boots"] = 150;
itemPrices["Leather Boots +1"] = 1687;
itemPrices["Leather Boots +2"] = 4912;
itemPrices["Leather Boots +3"] = 9562;
itemPrices["Leather Cap"] = 60;
itemPrices["Leather Cap +1"] = 1050;
itemPrices["Leather Cap +2"] = 7312;
itemPrices["Leather Cap +3"] = 29625;
itemPrices["Leather Gloves"] = 187;
itemPrices["Leather Gloves +1"] = 2437;
itemPrices["Leather Gloves +2"] = 6562;
itemPrices["Light Armor"] = 17625;
itemPrices["Light Healing Potion"] = 95;
itemPrices["Light Sword"] = 71812;
itemPrices["Location Scroll"] = 72;
itemPrices["Long Sword"] = 207;
itemPrices["Long Sword +1"] = 1837;
itemPrices["Long Sword +2"] = 12375;
itemPrices["Long Sword +3"] = 22125;
itemPrices["Magic Cloth Gloves"] = 275625;
itemPrices["Mail Boots"] = 1387;
itemPrices["Mail Boots +1"] = 2382;
itemPrices["Mail Boots +2"] = 5362;
itemPrices["Mail Boots +3"] = 13500;
itemPrices["Mail Boots +4"] = 33750;
itemPrices["Mail Gauntlets"] = 450;
itemPrices["Mail Gauntlets +1"] = 5437;
itemPrices["Mail Gauntlets +2"] = 10500;
itemPrices["Moderate Healing Potion"] = 252;
itemPrices["Orientation Scroll"] = 65;
itemPrices["Pass Gem"] = 5;
itemPrices["Plate Armor"] = 937;
itemPrices["Plate Armor +1"] = 2437;
itemPrices["Plate Armor +2"] = 6750;
itemPrices["Plate Armor +3"] = 19875;
itemPrices["Poison Arc Stone"] = 5625;
itemPrices["Poison Darts"] = 7500;
itemPrices["Poison Stream Stone"] = 2362;
itemPrices["Poison Wand"] = 75000;
itemPrices["Proper Authorization"] = 5;
itemPrices["Quivering Wand"] = 5400;
itemPrices["Reclaiming Amulet"] = 1462;
itemPrices["Restoration Amulet"] = 12750;
itemPrices["Robes"] = 15;
itemPrices["Robes +1"] = 750;
itemPrices["Robes +2"] = 4500;
itemPrices["Rod of Catastrophe"] = 168750;
itemPrices["Rogue's Cowl"] = 300000;
itemPrices["Salve of Emanation"] = 60000;
itemPrices["Samurai Sword"] = 107062;
itemPrices["Scroll of Calamity"] = 33975;
itemPrices["Scroll of Great Pain"] = 712;
itemPrices["Scroll of Hovering"] = 200;
itemPrices["Scroll of Light"] = 35;
itemPrices["Scroll of Mass Pain"] = 2625;
itemPrices["Scroll of Pain"] = 90;
itemPrices["Scroll of Pounding"] = 52500;
itemPrices["Scroll of Protection"] = 282;
itemPrices["Scroll of Shielding"] = 525;
itemPrices["Shield +1"] = 2100;
itemPrices["Shield +2"] = 4500;
itemPrices["Shield +3"] = 19875;
itemPrices["Shield +4"] = 48750;
itemPrices["Shield of Healing"] = 56250;
itemPrices["Short Sword"] = 112;
itemPrices["Short Sword +1"] = 1500;
itemPrices["Short Sword +2"] = 7500;
itemPrices["Short Sword +3"] = 18750;
itemPrices["Silver Key"] = 5;
itemPrices["Small Shield"] = 207;
itemPrices["Small Shield +1"] = 1687;
itemPrices["Small Shield +2"] = 4312;
itemPrices["Snow Wand"] = 73125;
itemPrices["Sorcerer's Gloves"] = 405000;
itemPrices["Sorcerer's Hood"] = 318750;
itemPrices["Staff"] = 27;
itemPrices["Staff +1"] = 1125;
itemPrices["Staff +2"] = 6187;
itemPrices["Staff of Healing"] = 79687;
itemPrices["Stealth Blade"] = 70500;
itemPrices["Stick"] = 7;
itemPrices["Stone of Passage"] = 5;
itemPrices["Stun Wand"] = 20250;
itemPrices["Teleport Stone"] = 3750;
itemPrices["Thief Sneakers"] = 457500;
itemPrices["Wizard's Buckler"] = 225000;
itemPrices["Wizard's Cap"] = 318750;

var elements = [
    "td",
    "font"
];

for(var k = 0; k < elements.length; k++) {

    var allElems = document.getElementsByTagName(elements[k]);
    for(var i = 0; i < allElems.length; i++) {

        price = itemPrices[allElems.item(i).innerHTML];
        if(price > 0) {
               allElems.item(i).innerHTML += " (" + price + ")";
        }
   }
}

The script's a sledge hammer, of course. If you look at the page sources on this game, they're a right mess; basically a bunch of tables for layout, and the occasional font tag for colors, which makes selecting the right elements to modify harder than it should be. Well, in a way — you just need a blunter tool, really, so the approach I'm using here is to peek at literally every td or font tag on the page and see if it contains an item's name. It would be nice to have a proper page structure so you could use an XPath expression to home on exactly what you need, but hey, it works, and the upside is it works across all pages that list items.

As for my current game — I'd rather like to finish with a party of level 9999 characters, but it's probably not gonna happen. (Simply because I'm not playing often enough.)

Perhaps you'll find the above script useful if you ever find yourself playing Murkon's Refuge. It's hardly a hidden gem, but it's a hidden semi-precious stone, at least, so if you're around, say hi to Aventurine, Waterstar, Meerschaum, Amethyst, Aquamarine and Moonstone (my current party). :)

Link | Leave a comment | Share

Comments {0}