My personal Meat farming script

As of revision 45, the following are done:

- Script imports and uses Veracity's Garden Harvester - published as a standalone script
- No longer uses a "goal 1 choice" to stop at the Barf Mountain Rollercoaster choice when doing the "Lubricate the Tracks" chore, since Turtle Taming NCs and the Violet Fog can pop up any time and trigger that goal. Instead, it does one adventure at a time and manually does run_combat() if it's a fight and run_choice() if its a choice - and it stops when it gets exactly the choice it wants.
- My change a week or so ago to run the Hobo Monkey in the Tunnel of L.O.V.E. was bad, since the LOV Engineer will not give you a potion if something other than spells are used to defeat her - including, it would seem, the Hobo Monkey taking Meat. We now do the Tunnel of L.O.V.E. with no familiar. I suppose I could allow you to configure a stat boosting familiar or something, but, meh.

My current To Do list looks like this, probably in order of attention.

Code:
// ***************************
//          To Do            *
// ***************************

// Bug: Use sufficient Inigo's when crafting SHC drinks to avoid spending turns
// Bug: Robortender: "acquire" the lubricating drinks during validation
//      and abort if cannot do so, to allow user to get them manually
//
// Source Terminal: optionally Extract and do daily extrusions
// Platinum Yendorian Express Card
// Make moods configurable (Farming, Gingerbread City)
// Source Terminal: optionally Digitize monster we are copying
// Improve food, booze, and spleen choices (or make configurable).
I expect to get to the bugs soon, but will then take time to make my Gingerbread City script able to pick up and adventure even if you have already run a few turns in the Gingerbread City. The two tracking preferences - _gingerbreadCityTurns and _gingerbreadClockAdvanced - should make that possible. I've mostly wanted this when the script had a bug and aborted, but it'd still be useful if I intentionally abort the script in order to change a setting and want to carry on again.
 
Go to Preferences.

Look at "Look & Feel" on the left.
The third dropdown is labeled "Scripts" and lets you enable or disable a script bar.
Enable it.

Look at "Script Buttons" on the left.
You start with 2 buttons - "restore hp" and "restore mp".
You can add CLI commands or a (CLI or ASH) script file.
You can order them any way you choose and and delete buttons when you are tired of them.

(I have no idea why the Script Buttons panel is labeled "gCLI Toolbar Buttons"; the buttons appear on the right side of the main GUI, no matter which tab you have selected. Perhaps because scripts print to the gCLI and if you want to watch them execute, you need to be there. But you don't have to be. I think I will give it a different title.)

Thanks for the information and the explanation. I had no idea such a feature existed. I'll have to play around with it and see how I can incorporate it into my "workflow" (if you can call playing a game a workflow).
 
This is a game played with spreadsheets, databases and research. I think that "workflow" is not inappropriate.
 
I downloaded this because I figured I could learn something from studying the script. I didn't really expect to run it because of all the discussion of ITOMs etc. that I did not have and (mistakenly) thought they were prerequisites. Imagine my surprise when the script told me I needed to define an outfit, Meat Drop, and then found someplace to farm. Now I have to figure out which of the unpossessed ITOMs I should acquire first so that I can leverage even more. Thank you.
 
All of the IOTMs are optional, although there are plenty that we will do (something) appropriate with.

If you didn't get Sweet Synthesis (not an IOTM) this recent Crimbo, that'd be your clear priority.

Hope you like it!
 
Regarding IOTMs, the biggest bang is definitely the Dinseylandfill charter. My chars without it - and no other IOTMs, for that matter make about 560,000 a day at the Hidden Office Building. Those with it make more than 500,000 more per day. Since the current price is about 80,000,000, it will take 160 days or so to recoup the expense, at which point, it's pure gravy.

So, if you have characters who will do nothing but Meat farm, it will, eventually, be a winner.

If you want to do Meat and/or Item farming, a Tot or a Robortender will help a lot.

And if you do not have a spinning wheel in your workshop, buy Grimstone masks at less than 5,000 each (there are, literally, over 1000 in the mall for less than that) and use them to train up your skillz and get first place (of those who have never yet won first place) in the appropriate fairy tale and you'll get a cool 27,000 Meat per day forever more (assuming you are at least level 30.)

I am thinking of making option(s) to allow this script to operate as an Item Farming script: different outfits, moods, default familiars, and such. It wouldn't be a big change; most of that can already be accomplished by setting existing settings to choose different familiars, location to farm, monsters to olfact, and so on. But making it intuitive and ready to go out of the box (as it is currently for Meat, given outfits and moods and such) would require more thought.

And yes - Sweet Synthesis, Hatter Buff, etc. all can be configured to be good for item farmers.

So, get Sweet Synthesis regardless, if you don't have it.
 
Regarding IOTMs, the biggest bang is definitely the Dinseylandfill charter. My chars without it - and no other IOTMs, for that matter make about 560,000 a day at the Hidden Office Building. Those with it make more than 500,000 more per day. Since the current price is about 80,000,000, it will take 160 days or so to recoup the expense, at which point, it's pure gravy.

I would expect day passes to be worthwhile at that point, though I haven't checked the mall. That also changes how long the IotM takes to pay for itself. Then there's the comparison with gold farming in 70s volcano, if the ticket prices are sufficiently different...
 
Thank you very much for making this script. It saved me from having to make my own inferior version ;).
May I suggest including The Legendary Beat when buffing? Any plans on including nasal sprays?
 
Thank you very much for making this script. It saved me from having to make my own inferior version ;).
May I suggest including The Legendary Beat when buffing? Any plans on including nasal sprays?

Nasal sprays you would add into your custom mood just like you would add buffs.
 
Revision 49 does this:

- Don't use Ezandora's Far Future script on April Fool's day
- VMF.FightEldritchTentacles will do free fights with Eldritch Tentacles
You want Item Drop for this, so:

- VMF.ItemFamiliar is the familiar to use for Item Drops
Defaults to "none", which will let us choose - Tot, Jumpsuited Hound Dog, Baby Gravy Fairy, in order

VMF.ItemDropOutfit
Defaults to "Item Drop".

Note: you must have an outfit of this name now.

And, since I wanted to farm the Spectral Pickle Factory today, an experimental setting:

VMF.FarmType

defaults to "meat" but can be "items". The latter is far from done, but if you set that, rather than equipping FarmFamiliar and FarmOutfit, it will equip ItemFamiliar and ItemDropOutfit before going to the FarmLocation.

I ran this script before running the farm script:

Code:
set VMF.FarmType=items
set VMF.FarmLocation=Spectral Pickle Factory
set VMF.SummonDemon=false
set VMF.HatterBuff=Quadrilled
set VMF.SourceTerminalEnhancement=items.enh
set VMF.SynthesisEffect=Synthesis: Collection
and it farmed as expected.

I ran this one to restore the defaults:

Code:
set VMF.FarmType=meat
set VMF.FarmLocation=none
set VMF.SummonDemon=true
set VMF.HatterBuff=Dances with Tweedles
set VMF.SourceTerminalEnhancement=meat.enh
set VMF.SynthesisEffect=Synthesis: Greed
This needs more work. For example, Dinsey food-cone and jumping horseradish are good for meat drop, but Dinsey Whinskey and Sacramento wine would be better for item drop.

I also renamed the setting VMF.FarmFamiliar to VMF.MeatFamiliar. If you have the former as a non-default, the script will rename it for you.
 
Last edited:
Hate to be a continual pita, but today I ran some adventures, grabbed a carpe from my clan floundry, ran EatDrink to maximize adventures, and then ran your script. This was the result:
Validating configuration.
All is well!
Acquiring necessary adventuring gear
Unlocking adventuring locations
You have already got a Floundry item today.
Net income = 0 Meat in 0 turns. Meat/Adventure = 0
Cumulative income = 8,071,820 Meat in 1,918 turns. Meat/Adventure = 4,208

Should having a Floundry item end script execution?
 
Revision 50 checks KoLmafia's setting. Update and try again.

(If you want a floundry item every day, you can configure the script to get it - but we still need to check, since we don't want to error out if you run it again.)
 
Revision 50 checks KoLmafia's setting. Update and try again.

I'm pretty sure that _floundryItemUsed checks whether you have used a floundry item to get white pixels, bridge parts, etc. and that there is no prop for checking whether a floundry item has actually been created. At least, I was never able to find it !
 
Revision 17933 of KoLmafia adds _floundryItemCreated.
Revision 51 of this script looks at that property.

I need the message from the Floundry if you've already created an item today and attempt to make another item.
 
I just tried (after already getting an item today)

ash visit_url("clan_viplounge.php?preaction=buyfloundryitem&whichitem=9004&preaction=buyfloundryitem&whichitem=9004");

and got an empty "Results" box above the clan lounge ground floor page.

I'm not sure why the link repeats the arguments twice...they must have been that way when I copied them into my script and I never noticed until i copied here !

In any event, removing the duplicated parts from the link seems to give the same result.

Get the same result in the browser as using the ash command in the cli.

Edit: response page html

Code:
<html><head><script language=Javascript><!--if (parent.frames.length == -1) location.href="game.php";//--></script><script language=Javascript src="[URL="http://127.0.0.1:60080/images/scripts/keybinds.min.2.js"]/images/scripts/keybinds.min.2.js[/URL]"></script><script language=Javascript src="[URL="http://127.0.0.1:60080/images/scripts/window.20111231.js"]/images/scripts/window.20111231.js[/URL]"></script><script language="javascript">function chatFocus(){if(top.chatpane.document.chatform.graf) top.chatpane.document.chatform.graf.focus();}if (typeof defaultBind != 'undefined') { defaultBind(47, 2, chatFocus); defaultBind(190, 2, chatFocus);defaultBind(191, 2, chatFocus); defaultBind(47, 8, chatFocus);defaultBind(190, 8, chatFocus); defaultBind(191, 8, chatFocus); }</script><script language="javascript">    function updateParseItem(iid, field, info) {        var tbl = $('#ic'+iid);        var data = parseItem(tbl);        if (!data) return;        data[field] = info;        var out = [];        for (i in data) {            if (!data.hasOwnProperty(i)) continue;            out.push(i+'='+data[i]);        }        tbl.attr('rel', out.join('&'));    }    function parseItem(tbl) {        tbl = $(tbl);        var rel = tbl.attr('rel');        var data = {};        if (!rel) return data;        var parts = rel.split('&');        for (i in parts) {            if (!parts.hasOwnProperty(i)) continue;            var kv = parts[i].split('=');            tbl.data(kv[0], kv[1]);            data[kv[0]] = kv[1];        }        return data;    }</script><script language=Javascript src="[URL="http://127.0.0.1:60080/images/scripts/jquery-1.3.1.min.js"]/images/scripts/jquery-1.3.1.min.js[/URL]"></script><script type="text/javascript" src="[URL="http://127.0.0.1:60080/images/scripts/pop_query.20130705.js"]/images/scripts/pop_query.20130705.js[/URL]"></script><script type="text/javascript" src="[URL="http://127.0.0.1:60080/images/scripts/ircm.20161111.js"]/images/scripts/ircm.20161111.js[/URL]"></script><script type="text/javascript">var tp = top;function pop_ircm_contents(i, some) {    var contents = '',        shown = 0,        da = ' <a href="#" rel="?" class="small dojaxy">[some]</a> <a href="#" rel="',        db = '" class="small dojaxy">[all]</a>',        dc = '<div style="width:100%; padding-bottom: 3px;" rel="',        dd = '<a href="#" rel="1" class="small dojaxy">[';    one = 'one'; ss=some;if (i.d==1 && i.s>0) { shown++; contents += dc + 'sellstuff.php?action=sell&ajax=1&type=quant&whichitem%5B%5D=IID&howmany=NUM&pwd=1d77b60b2e6d09ab629e9b8c7ab66f5e" id="pircm_'+i.id+'"><b>Auto-Sell ('+i.s+' meat):</b> '+dd+one+']</a>';if (ss) { contents += da + i.n + db;}contents += '</div>';}one = 'one'; ss=some;if (i.q==0) { shown++; contents += dc + 'inventory.php?action=closetpush&ajax=1&whichitem=IID&qty=NUM&pwd=1d77b60b2e6d09ab629e9b8c7ab66f5e" id="pircm_'+i.id+'"><b>Closet:</b> '+dd+one+']</a>';if (ss) { contents += da + i.n + db;}contents += '</div>';}one = 'one'; ss=some;if (i.q==0 && i.g==0 && i.t==1) { shown++; contents += dc + 'managestore.php?action=additem&qty1=NUM&item1=IID&price1=&limit1=&ajax=1&pwd=1d77b60b2e6d09ab629e9b8c7ab66f5e" id="pircm_'+i.id+'"><b>Stock in Mall:</b> '+dd+one+']</a>';if (ss) { contents += da + i.n + db;}contents += '</div>';}one = 'one'; ss=some;if (i.q==0) { shown++; contents += dc + 'managecollection.php?action=put&ajax=1&whichitem1=IID&howmany1=NUM&pwd=1d77b60b2e6d09ab629e9b8c7ab66f5e" id="pircm_'+i.id+'"><b>Add to Display Case:</b> '+dd+one+']</a>';if (ss) { contents += da + i.n + db;}contents += '</div>';}one = 'one'; ss=some;if (i.q==0 && i.t==1) { shown++; contents += dc + 'clan_stash.php?action=addgoodies&ajax=1&item1=IID&qty1=NUM&pwd=1d77b60b2e6d09ab629e9b8c7ab66f5e" id="pircm_'+i.id+'"><b>Contribute to Clan:</b> '+dd+one+']</a>';if (ss) { contents += da + i.n + db;}contents += '</div>';}one = 'one'; ss=some;if (i.q==0 && i.p==0 && i.u=="q" && i.d==1 && i.t==1) { shown++; contents += dc + 'craft.php?action=pulverize&ajax=1&smashitem=IID&qty=NUM&pwd=1d77b60b2e6d09ab629e9b8c7ab66f5e" id="pircm_'+i.id+'"><b>Pulverize:</b> '+dd+one+']</a>';if (ss) { contents += da + i.n + db;}contents += '</div>';}one = 'one'; ss=some;if (i.u && i.u != "." && !i.ac) { shown++; contents += dc + 'inv_'+(i.u=="a"?"redir":(lab=(i.u=="u"?"use":(i.u=="e"?"eat":(i.u=="b"?"booze":(i.u=="s"?"spleen":"equip"))))))+'.php?ajax=1&whichitem=IID&itemquantity=NUM&quantity=NUM'+(i.u=="q"?"&action=equip":"")+'&pwd=1d77b60b2e6d09ab629e9b8c7ab66f5e" id="pircm_'+i.id+'"><b>'+ucfirst(unescape(i.ou ? i.ou.replace(/\+/g," ") : (lab=="booze"?"drink":lab)))+':</b> '+dd+one+']</a>';if (ss && i.u != 'q' && !(i.u=='u' && i.m==0)) { contents += da + i.n + db;}contents += '</div>';}one = 'one'; ss=some;if (i.u && i.u != "." && i.ac) { shown++; contents += dc + 'inv_equip.php?slot=1&ajax=1&whichitem=IID&action=equip&pwd=1d77b60b2e6d09ab629e9b8c7ab66f5e" id="pircm_'+i.id+'"><b>Equip (slot 1):</b> '+dd+one+']</a>';if (ss && i.u != 'q' && !(i.u=='u' && i.m==0)) { contents += da + i.n + db;}contents += '</div>';}one = 'one'; ss=some;if (i.u && i.u != "." && i.ac) { shown++; contents += dc + 'inv_equip.php?slot=2&ajax=1&whichitem=IID&action=equip&pwd=1d77b60b2e6d09ab629e9b8c7ab66f5e" id="pircm_'+i.id+'"><b>Equip (slot 2):</b> '+dd+one+']</a>';if (ss && i.u != 'q' && !(i.u=='u' && i.m==0)) { contents += da + i.n + db;}contents += '</div>';}one = 'one'; ss=some;if (i.u && i.u != "." && i.ac) { shown++; contents += dc + 'inv_equip.php?slot=3&ajax=1&whichitem=IID&action=equip&pwd=1d77b60b2e6d09ab629e9b8c7ab66f5e" id="pircm_'+i.id+'"><b>Equip (slot 3):</b> '+dd+one+']</a>';if (ss && i.u != 'q' && !(i.u=='u' && i.m==0)) { contents += da + i.n + db;}contents += '</div>';}
    return [contents, shown];}tp=topvar todo = [];function nextAction() {    var next_todo = todo.shift();    if (next_todo) {        eval(next_todo);    }}function dojax(dourl, afterFunc, hoverCaller, failureFunc, method, params) {    $.ajax({        type: method || 'GET', url: dourl, cache: false,        data: params || null,        global: false,        success: function (out) {            nextAction();            if (out.match(/no\|/)) {                var parts = out.split(/\|/);                if (failureFunc) failureFunc(parts[1]);                else if (window.dojaxFailure) window.dojaxFailure(parts[1]);                else if (tp.chatpane.handleMessage) tp.chatpane.handleMessage({type: 'event', msg: 'Oops!  Sorry, Dave, you appear to be ' + parts[1]});                else  $('#ChatWindow').append('<font color="green">Oops!  Sorry, Dave, you appear to be ' + parts[1] + '.</font><br />' + "\n");                return;            }
            if (hoverCaller)  {                float_results(hoverCaller, out);                if (afterFunc) { afterFunc(out); }                return;            }$(tp.mainpane.document).find("#effdiv").remove(); if(!window.dontscroll || (window.dontscroll && dontscroll==0)) { window.scroll(0,0);}            var $eff = $(tp.mainpane.document).find('#effdiv');            if ($eff.length == 0) {                var d = tp.mainpane.document.createElement('DIV');                d.id = 'effdiv';                var b = tp.mainpane.document.body;                if ($('#content_').length > 0) {                    b = $('#content_ div:first')[0];                }                b.insertBefore(d, b.firstChild);                $eff = $(d);            }            $eff.find('a[name="effdivtop"]').remove().end()                .prepend('<a name="effdivtop"></a><center>' + out + '</center>').css('display','block');            if (!window.dontscroll || (window.dontscroll && dontscroll==0)) {                tp.mainpane.document.location = tp.mainpane.document.location + "#effdivtop";            }            if (afterFunc) { afterFunc(out); }        }    });}</script>    <link rel="stylesheet" type="text/css" href="[URL="http://127.0.0.1:60080/images/styles.20151006.css"]/images/styles.20151006.css[/URL]"><style type='text/css'>.faded {    zoom: 1;    filter: alpha(opacity=35);    opacity: 0.35;    -khtml-opacity: 0.35;     -moz-opacity: 0.35;}</style>
<script language="Javascript" src="[URL="http://127.0.0.1:60080/basics.js"]/basics.js[/URL]"></script><link rel="stylesheet" href="[URL="http://127.0.0.1:60080/basics.1.css"]/basics.1.css[/URL]" /></head>
<body><center><table  width=95%  cellspacing=0 cellpadding=0><tr><td style="color: white;" align=center bgcolor=blue><b>Results:</b></td></tr><tr><td style="padding: 5px; border: 1px solid blue;"><center><table><tr><td></td></tr></table></center></td></tr><tr><td height=4></td></tr></table><table  width=95%  cellspacing=0 cellpadding=0><tr><td style="color: white;" align=center bgcolor=blue><b>Clan VIP Lounge (Ground Floor)</b></td></tr><tr><td style="padding: 5px; border: 1px solid blue;"><center><table><tr><td><center><b><a href="[URL="http://127.0.0.1:60080/clan_hall.php"]clan_hall.php[/URL]">Bonus Adventures from Hell</a></b><p></center><table cellpadding=0 cellspacing=0><tr><td rowspan=5 width=25 height=300><img src="[URL="http://127.0.0.1:60080/images/otherimages/clanhall/newvipleft.gif"]/images/otherimages/clanhall/newvipleft.gif[/URL]" width=25 height=500></td><td colspan=3 width=300 height=100><img src="[URL="http://127.0.0.1:60080/images/otherimages/clanhall/viptop.gif"]/images/otherimages/clanhall/viptop.gif[/URL]" width=300 height=100></td><td rowspan=5 width=25 height=300><img src="[URL="http://127.0.0.1:60080/images/otherimages/clanhall/newvipright.gif"]/images/otherimages/clanhall/newvipright.gif[/URL]" width=25 height=500></td></tr><tr><td width=100 height=100></td><td width=100 height=100></td><td width=100 height=100><a href=[URL="http://127.0.0.1:60080/clan_viplounge.php?whichfloor=2"]clan_viplounge.php?whichfloor=2[/URL]><img src=[URL="http://127.0.0.1:60080/images/adventureimages/clanstairsup.gif"]/images/adventureimages/clanstairsup.gif[/URL] width=100 height=100 alt="Stairs Up" title="Stairs Up"></a></td></tr><tr><td width=100 height=100></td><td width=100 height=100></td><td width=100 height=100><a href=[URL="http://127.0.0.1:60080/clan_viplounge.php?action=floundry"]clan_viplounge.php?action=floundry[/URL]><img src="[URL="http://127.0.0.1:60080/images/otherimages/clanhall/vipfloundry.gif"]/images/otherimages/clanhall/vipfloundry.gif[/URL]" width=100 height=100 border=0 alt="Clan Floundry" title="Clan Floundry"></a></td></tr><tr><td width=100 height=100></td><td width=100 height=100></td><td width=100 height=100></td></tr><tr><td width=100 height=100><a href=[URL="http://127.0.0.1:60080/clan_viplounge.php?action=hottub"]clan_viplounge.php?action=hottub[/URL]><img src="[URL="http://127.0.0.1:60080/images/otherimages/clanhall/hottub5.gif"]/images/otherimages/clanhall/hottub5.gif[/URL]" width=100 height=100 border=0 alt="A Relaxing Hot Tub (5 uses left today)" title="A Relaxing Hot Tub (5 uses left today)"></a></td><td width=100 height=100></td><td width=100 height=100><a href=[URL="http://127.0.0.1:60080/clan_viplounge.php?action=klaw"]clan_viplounge.php?action=klaw[/URL]><img src="[URL="http://127.0.0.1:60080/images/otherimages/clanhall/mrklaw2.gif"]/images/otherimages/clanhall/mrklaw2.gif[/URL]" width=100 height=100 border=0 alt="Deluxe Mr. Klaw "Skill" Crane Game" title="Deluxe Mr. Klaw "Skill" Crane Game"></a></td></tr><tr><td colspan=5 width=300 height=93><a href="[URL="http://127.0.0.1:60080/clan_hall.php"]clan_hall.php[/URL]"><img src="[URL="http://127.0.0.1:60080/images/otherimages/clanhall/rumpbottom.gif"]/images/otherimages/clanhall/rumpbottom.gif[/URL]" width=350 height=93 border=0></a></td></tr></table><p><Center><A href="[URL="http://127.0.0.1:60080/clan_hall.php"]clan_hall.php[/URL]">Back to Clan Hall</a></center></td></tr></table></center></td></tr><tr><td height=4></td></tr></table></center></body><script src="[URL="http://127.0.0.1:60080/ircm_extend.js"]/ircm_extend.js[/URL]"></script><script src="[URL="http://127.0.0.1:60080/onfocus.1.js"]/onfocus.1.js[/URL]"></script></html>
 
Last edited:
That might mean that simply saying "you did it" after any attempt will suffice, rather than actually looking at the response text.

I guess what I was hoping to find was a specific message that said "your clan doesn't have enough fish of the appropriate kind" - which, we assume, would allow you to try again.

(Un)fortunately, every clan I have access to that has a Floundry has 100s of every fish, no I can't test that.
 
Hmmm...it looks like Bonus Adventures from Hell only has 6 bass right now. The "Fabricate" button is replaced with the text "(can't afford)".

When I submit the link anyway, the "Results" box says "Not enough fish."

I haven't otherwise got a floundry item today. Presumably, that condition would be checked first and give you the "blank" results box.?

page source (with "Not enough fish."):

Code:
<html><head><script language=Javascript><!--if (parent.frames.length == -1) location.href="game.php";//--></script><script language=Javascript src="[URL="http://127.0.0.1:60080/images/scripts/keybinds.min.2.js"]/images/scripts/keybinds.min.2.js[/URL]"></script><script language=Javascript src="[URL="http://127.0.0.1:60080/images/scripts/window.20111231.js"]/images/scripts/window.20111231.js[/URL]"></script><script language="javascript">function chatFocus(){if(top.chatpane.document.chatform.graf) top.chatpane.document.chatform.graf.focus();}if (typeof defaultBind != 'undefined') { defaultBind(47, 2, chatFocus); defaultBind(190, 2, chatFocus);defaultBind(191, 2, chatFocus); defaultBind(47, 8, chatFocus);defaultBind(190, 8, chatFocus); defaultBind(191, 8, chatFocus); }</script><script language="javascript">    function updateParseItem(iid, field, info) {        var tbl = $('#ic'+iid);        var data = parseItem(tbl);        if (!data) return;        data[field] = info;        var out = [];        for (i in data) {            if (!data.hasOwnProperty(i)) continue;            out.push(i+'='+data[i]);        }        tbl.attr('rel', out.join('&'));    }    function parseItem(tbl) {        tbl = $(tbl);        var rel = tbl.attr('rel');        var data = {};        if (!rel) return data;        var parts = rel.split('&');        for (i in parts) {            if (!parts.hasOwnProperty(i)) continue;            var kv = parts[i].split('=');            tbl.data(kv[0], kv[1]);            data[kv[0]] = kv[1];        }        return data;    }</script><script language=Javascript src="[URL="http://127.0.0.1:60080/images/scripts/jquery-1.3.1.min.js"]/images/scripts/jquery-1.3.1.min.js[/URL]"></script><script type="text/javascript" src="[URL="http://127.0.0.1:60080/images/scripts/pop_query.20130705.js"]/images/scripts/pop_query.20130705.js[/URL]"></script><script type="text/javascript" src="[URL="http://127.0.0.1:60080/images/scripts/ircm.20161111.js"]/images/scripts/ircm.20161111.js[/URL]"></script><script type="text/javascript">var tp = top;function pop_ircm_contents(i, some) {    var contents = '',        shown = 0,        da = ' <a href="#" rel="?" class="small dojaxy">[some]</a> <a href="#" rel="',        db = '" class="small dojaxy">[all]</a>',        dc = '<div style="width:100%; padding-bottom: 3px;" rel="',        dd = '<a href="#" rel="1" class="small dojaxy">[';    one = 'one'; ss=some;if (i.d==1 && i.s>0) { shown++; contents += dc + 'sellstuff.php?action=sell&ajax=1&type=quant&whichitem%5B%5D=IID&howmany=NUM&pwd=e459ffe2f4078d136aeb304bac0aba46" id="pircm_'+i.id+'"><b>Auto-Sell ('+i.s+' meat):</b> '+dd+one+']</a>';if (ss) { contents += da + i.n + db;}contents += '</div>';}one = 'one'; ss=some;if (i.q==0) { shown++; contents += dc + 'inventory.php?action=closetpush&ajax=1&whichitem=IID&qty=NUM&pwd=e459ffe2f4078d136aeb304bac0aba46" id="pircm_'+i.id+'"><b>Closet:</b> '+dd+one+']</a>';if (ss) { contents += da + i.n + db;}contents += '</div>';}one = 'one'; ss=some;if (i.q==0 && i.g==0 && i.t==1) { shown++; contents += dc + 'managestore.php?action=additem&qty1=NUM&item1=IID&price1=&limit1=&ajax=1&pwd=e459ffe2f4078d136aeb304bac0aba46" id="pircm_'+i.id+'"><b>Stock in Mall:</b> '+dd+one+']</a>';if (ss) { contents += da + i.n + db;}contents += '</div>';}one = 'one'; ss=some;if (i.q==0) { shown++; contents += dc + 'managecollection.php?action=put&ajax=1&whichitem1=IID&howmany1=NUM&pwd=e459ffe2f4078d136aeb304bac0aba46" id="pircm_'+i.id+'"><b>Add to Display Case:</b> '+dd+one+']</a>';if (ss) { contents += da + i.n + db;}contents += '</div>';}one = 'one'; ss=some;if (i.q==0 && i.t==1) { shown++; contents += dc + 'clan_stash.php?action=addgoodies&ajax=1&item1=IID&qty1=NUM&pwd=e459ffe2f4078d136aeb304bac0aba46" id="pircm_'+i.id+'"><b>Contribute to Clan:</b> '+dd+one+']</a>';if (ss) { contents += da + i.n + db;}contents += '</div>';}one = 'one'; ss=some;if (i.q==0 && i.p==0 && i.u=="q" && i.d==1 && i.t==1) { shown++; contents += dc + 'craft.php?action=pulverize&ajax=1&smashitem=IID&qty=NUM&pwd=e459ffe2f4078d136aeb304bac0aba46" id="pircm_'+i.id+'"><b>Pulverize:</b> '+dd+one+']</a>';if (ss) { contents += da + i.n + db;}contents += '</div>';}one = 'one'; ss=some;if (i.u && i.u != "." && !i.ac) { shown++; contents += dc + 'inv_'+(i.u=="a"?"redir":(lab=(i.u=="u"?"use":(i.u=="e"?"eat":(i.u=="b"?"booze":(i.u=="s"?"spleen":"equip"))))))+'.php?ajax=1&whichitem=IID&itemquantity=NUM&quantity=NUM'+(i.u=="q"?"&action=equip":"")+'&pwd=e459ffe2f4078d136aeb304bac0aba46" id="pircm_'+i.id+'"><b>'+ucfirst(unescape(i.ou ? i.ou.replace(/\+/g," ") : (lab=="booze"?"drink":lab)))+':</b> '+dd+one+']</a>';if (ss && i.u != 'q' && !(i.u=='u' && i.m==0)) { contents += da + i.n + db;}contents += '</div>';}one = 'one'; ss=some;if (i.u && i.u != "." && i.ac) { shown++; contents += dc + 'inv_equip.php?slot=1&ajax=1&whichitem=IID&action=equip&pwd=e459ffe2f4078d136aeb304bac0aba46" id="pircm_'+i.id+'"><b>Equip (slot 1):</b> '+dd+one+']</a>';if (ss && i.u != 'q' && !(i.u=='u' && i.m==0)) { contents += da + i.n + db;}contents += '</div>';}one = 'one'; ss=some;if (i.u && i.u != "." && i.ac) { shown++; contents += dc + 'inv_equip.php?slot=2&ajax=1&whichitem=IID&action=equip&pwd=e459ffe2f4078d136aeb304bac0aba46" id="pircm_'+i.id+'"><b>Equip (slot 2):</b> '+dd+one+']</a>';if (ss && i.u != 'q' && !(i.u=='u' && i.m==0)) { contents += da + i.n + db;}contents += '</div>';}one = 'one'; ss=some;if (i.u && i.u != "." && i.ac) { shown++; contents += dc + 'inv_equip.php?slot=3&ajax=1&whichitem=IID&action=equip&pwd=e459ffe2f4078d136aeb304bac0aba46" id="pircm_'+i.id+'"><b>Equip (slot 3):</b> '+dd+one+']</a>';if (ss && i.u != 'q' && !(i.u=='u' && i.m==0)) { contents += da + i.n + db;}contents += '</div>';}
    return [contents, shown];}tp=topvar todo = [];function nextAction() {    var next_todo = todo.shift();    if (next_todo) {        eval(next_todo);    }}function dojax(dourl, afterFunc, hoverCaller, failureFunc, method, params) {    $.ajax({        type: method || 'GET', url: dourl, cache: false,        data: params || null,        global: false,        success: function (out) {            nextAction();            if (out.match(/no\|/)) {                var parts = out.split(/\|/);                if (failureFunc) failureFunc(parts[1]);                else if (window.dojaxFailure) window.dojaxFailure(parts[1]);                else if (tp.chatpane.handleMessage) tp.chatpane.handleMessage({type: 'event', msg: 'Oops!  Sorry, Dave, you appear to be ' + parts[1]});                else  $('#ChatWindow').append('<font color="green">Oops!  Sorry, Dave, you appear to be ' + parts[1] + '.</font><br />' + "\n");                return;            }
            if (hoverCaller)  {                float_results(hoverCaller, out);                if (afterFunc) { afterFunc(out); }                return;            }$(tp.mainpane.document).find("#effdiv").remove(); if(!window.dontscroll || (window.dontscroll && dontscroll==0)) { window.scroll(0,0);}            var $eff = $(tp.mainpane.document).find('#effdiv');            if ($eff.length == 0) {                var d = tp.mainpane.document.createElement('DIV');                d.id = 'effdiv';                var b = tp.mainpane.document.body;                if ($('#content_').length > 0) {                    b = $('#content_ div:first')[0];                }                b.insertBefore(d, b.firstChild);                $eff = $(d);            }            $eff.find('a[name="effdivtop"]').remove().end()                .prepend('<a name="effdivtop"></a><center>' + out + '</center>').css('display','block');            if (!window.dontscroll || (window.dontscroll && dontscroll==0)) {                tp.mainpane.document.location = tp.mainpane.document.location + "#effdivtop";            }            if (afterFunc) { afterFunc(out); }        }    });}</script>    <link rel="stylesheet" type="text/css" href="[URL="http://127.0.0.1:60080/images/styles.20151006.css"]/images/styles.20151006.css[/URL]"><style type='text/css'>.faded {    zoom: 1;    filter: alpha(opacity=35);    opacity: 0.35;    -khtml-opacity: 0.35;     -moz-opacity: 0.35;}</style>
<script language="Javascript" src="[URL="http://127.0.0.1:60080/basics.js"]/basics.js[/URL]"></script><link rel="stylesheet" href="[URL="http://127.0.0.1:60080/basics.1.css"]/basics.1.css[/URL]" /></head>
<body><center><table  width=95%  cellspacing=0 cellpadding=0><tr><td style="color: white;" align=center bgcolor=blue><b>Results:</b></td></tr><tr><td style="padding: 5px; border: 1px solid blue;"><center><table><tr><td>Not enough fish.</td></tr></table></center></td></tr><tr><td height=4></td></tr></table><table  width=95%  cellspacing=0 cellpadding=0><tr><td style="color: white;" align=center bgcolor=blue><b>Results:</b></td></tr><tr><td style="padding: 5px; border: 1px solid blue;"><center><table><tr><td>You check the readout on the Floundry's fabrication unit:<p><center><img src=[URL="http://127.0.0.1:60080/images/otherimages/clanhall/floundry.gif"]/images/otherimages/clanhall/floundry.gif[/URL]><br><table><tr><td class=small valign=top><center><b>Current Fish Stock:</b></center> <br>679 carp<br>560 cod<br>3,499 trout<br>6 bass<br>390 hatchetfish<br>1,996 tuna</td><td width=20></td><td class=small valign=top><center><b>Good fishing spots today:</b></center><br><b>carp:</b> Camp Logging Camp<br><b>cod:</b> The Oasis<br><b>trout:</b> Madness Bakery<br><b>bass:</b> The Haunted Conservatory<br><b>hatchetfish:</b> The Poop Deck<br><b>tuna:</b> The Deep Dark Jungle</td></tr><tr><td colspan=3><center><p><a href=[URL="http://127.0.0.1:60080/clan_viplounge.php?action=floundrylb&lbmode=1"]clan_viplounge.php?action=floundrylb&lbmode=1[/URL]>See today's top fisherpeople</a></center></td></tr></table><p>Use the Floundry's Fabricator:<br>(you may fabricate one item per day)<table><tr><td><img style='vertical-align: middle' class=hand src='[URL="http://127.0.0.1:60080/images/itemimages/carpe.gif"]/images/itemimages/carpe.gif[/URL]' onclick='descitem(992687760)' alt="carpe" title="carpe"></td><td><b>carpe</b></td><td>  (10 carp)</td><form action=clan_viplounge.php?preaction=buyfloundryitem&whichitem=9001 method=post><input type=hidden name=preaction value=buyfloundryitem><input type=hidden name=whichitem value=9001><td><input type=submit class=button value=Fabricate></td></form></tr><tr><td><img style='vertical-align: middle' class=hand src='[URL="http://127.0.0.1:60080/images/itemimages/codcodpiece.gif"]/images/itemimages/codcodpiece.gif[/URL]' onclick='descitem(389692330)' alt="codpiece" title="codpiece"></td><td><b>codpiece</b></td><td>  (10 cod)</td><form action=clan_viplounge.php?preaction=buyfloundryitem&whichitem=9002 method=post><input type=hidden name=preaction value=buyfloundryitem><input type=hidden name=whichitem value=9002><td><input type=submit class=button value=Fabricate></td></form></tr><tr><td><img style='vertical-align: middle' class=hand src='[URL="http://127.0.0.1:60080/images/itemimages/troutsers.gif"]/images/itemimages/troutsers.gif[/URL]' onclick='descitem(844107072)' alt="troutsers" title="troutsers"></td><td><b>troutsers</b></td><td>  (10 trout)</td><form action=clan_viplounge.php?preaction=buyfloundryitem&whichitem=9003 method=post><input type=hidden name=preaction value=buyfloundryitem><input type=hidden name=whichitem value=9003><td><input type=submit class=button value=Fabricate></td></form></tr><tr><td><img style='vertical-align: middle' class=hand src='[URL="http://127.0.0.1:60080/images/itemimages/bassclarinet.gif"]/images/itemimages/bassclarinet.gif[/URL]' onclick='descitem(942840719)' alt="bass clarinet" title="bass clarinet"></td><td><b>bass clarinet</b></td><td>  (10 bass)</td><form action=clan_viplounge.php?preaction=buyfloundryitem&whichitem=9004 method=post><input type=hidden name=preaction value=buyfloundryitem><input type=hidden name=whichitem value=9004><td>(can't afford)</td></form></tr><tr><td><img style='vertical-align: middle' class=hand src='[URL="http://127.0.0.1:60080/images/itemimages/fishhatchet.gif"]/images/itemimages/fishhatchet.gif[/URL]' onclick='descitem(995098087)' alt="fish hatchet" title="fish hatchet"></td><td><b>fish hatchet</b></td><td>  (10 hatchetfish)</td><form action=clan_viplounge.php?preaction=buyfloundryitem&whichitem=9005 method=post><input type=hidden name=preaction value=buyfloundryitem><input type=hidden name=whichitem value=9005><td><input type=submit class=button value=Fabricate></td></form></tr><tr><td><img style='vertical-align: middle' class=hand src='[URL="http://127.0.0.1:60080/images/itemimages/tunac.gif"]/images/itemimages/tunac.gif[/URL]' onclick='descitem(667722866)' alt="tunac" title="tunac"></td><td><b>tunac</b></td><td>  (10 tuna)</td><form action=clan_viplounge.php?preaction=buyfloundryitem&whichitem=9006 method=post><input type=hidden name=preaction value=buyfloundryitem><input type=hidden name=whichitem value=9006><td><input type=submit class=button value=Fabricate></td></form></tr></table></td></tr></table></center></td></tr><tr><td height=4></td></tr></table><table  width=95%  cellspacing=0 cellpadding=0><tr><td style="color: white;" align=center bgcolor=blue><b>Clan VIP Lounge (Ground Floor)</b></td></tr><tr><td style="padding: 5px; border: 1px solid blue;"><center><table><tr><td><center><b><a href="[URL="http://127.0.0.1:60080/clan_hall.php"]clan_hall.php[/URL]">Bonus Adventures from Hell</a></b><p></center><table cellpadding=0 cellspacing=0><tr><td rowspan=5 width=25 height=300><img src="[URL="http://127.0.0.1:60080/images/otherimages/clanhall/newvipleft.gif"]/images/otherimages/clanhall/newvipleft.gif[/URL]" width=25 height=500></td><td colspan=3 width=300 height=100><img src="[URL="http://127.0.0.1:60080/images/otherimages/clanhall/viptop.gif"]/images/otherimages/clanhall/viptop.gif[/URL]" width=300 height=100></td><td rowspan=5 width=25 height=300><img src="[URL="http://127.0.0.1:60080/images/otherimages/clanhall/newvipright.gif"]/images/otherimages/clanhall/newvipright.gif[/URL]" width=25 height=500></td></tr><tr><td width=100 height=100></td><td width=100 height=100></td><td width=100 height=100><a href=[URL="http://127.0.0.1:60080/clan_viplounge.php?whichfloor=2"]clan_viplounge.php?whichfloor=2[/URL]><img src=[URL="http://127.0.0.1:60080/images/adventureimages/clanstairsup.gif"]/images/adventureimages/clanstairsup.gif[/URL] width=100 height=100 alt="Stairs Up" title="Stairs Up"></a></td></tr><tr><td width=100 height=100></td><td width=100 height=100></td><td width=100 height=100><a href=[URL="http://127.0.0.1:60080/clan_viplounge.php?action=floundry"]clan_viplounge.php?action=floundry[/URL]><img src="[URL="http://127.0.0.1:60080/images/otherimages/clanhall/vipfloundry.gif"]/images/otherimages/clanhall/vipfloundry.gif[/URL]" width=100 height=100 border=0 alt="Clan Floundry" title="Clan Floundry"></a></td></tr><tr><td width=100 height=100></td><td width=100 height=100></td><td width=100 height=100></td></tr><tr><td width=100 height=100><a href=[URL="http://127.0.0.1:60080/clan_viplounge.php?action=hottub"]clan_viplounge.php?action=hottub[/URL]><img src="[URL="http://127.0.0.1:60080/images/otherimages/clanhall/hottub5.gif"]/images/otherimages/clanhall/hottub5.gif[/URL]" width=100 height=100 border=0 alt="A Relaxing Hot Tub (5 uses left today)" title="A Relaxing Hot Tub (5 uses left today)"></a></td><td width=100 height=100></td><td width=100 height=100><a href=[URL="http://127.0.0.1:60080/clan_viplounge.php?action=klaw"]clan_viplounge.php?action=klaw[/URL]><img src="[URL="http://127.0.0.1:60080/images/otherimages/clanhall/mrklaw2.gif"]/images/otherimages/clanhall/mrklaw2.gif[/URL]" width=100 height=100 border=0 alt="Deluxe Mr. Klaw "Skill" Crane Game" title="Deluxe Mr. Klaw "Skill" Crane Game"></a></td></tr><tr><td colspan=5 width=300 height=93><a href="[URL="http://127.0.0.1:60080/clan_hall.php"]clan_hall.php[/URL]"><img src="[URL="http://127.0.0.1:60080/images/otherimages/clanhall/rumpbottom.gif"]/images/otherimages/clanhall/rumpbottom.gif[/URL]" width=350 height=93 border=0></a></td></tr></table><p><Center><A href="[URL="http://127.0.0.1:60080/clan_hall.php"]clan_hall.php[/URL]">Back to Clan Hall</a></center></td></tr></table></center></td></tr><tr><td height=4></td></tr></table></center></body><script src="[URL="http://127.0.0.1:60080/ircm_extend.js"]/ircm_extend.js[/URL]"></script><script src="[URL="http://127.0.0.1:60080/onfocus.1.js"]/onfocus.1.js[/URL]"></script></html>
 
Last edited:
Hate to be a continual pita
My "customers' are NEVER a PITA. I wrote this script for my own benefit - and as a source of code that others can pull into their own scripts - but if you like my script as is, I am grateful and humble and and happy to hear your issues/suggestions. I may or may not decide to (eventually) implement feature requests, but it is important for me to listen respectfully and to fix bugs, and discuss features - including, sometime, why I won't be adding them to this script.

I ran some adventures ... ran EatDrink to maximize adventures
And this amuses me. My personal attitude is that I want complete control over how my characters spend my resources. So, no EatDrink; I have a variety of "awesome" foods and boozes to use the bulk of my stomach and liver and at least "good" 1-size stomach/liver/spleen to fill up the rest. I also happen to know that they are all "cheap" for what they give.

So, could EatDrink look at my "meat per adventure" and come up with better solutions? I expect it can. But, I have the "I want control over the resources my characters spend" thing, and my pre-coded items are "good enough".

Which has nothing to do with you, since you, too, are using "somebody else's script" to make decisions for you and one of those scripts is mine, and if you want to use EatDrink, good for you!

I will be working more on "good" choices for food/drink/spleen - it's on (the bottom of) my To-Do list, but, again - that's for my own use.

Which is neither here nor there, but something this script WILL help you with is in calculating your "meat per adventure" - which is a parameter to EatDrink and such, in determining how much is worth spending on consumables to eke out One More Adventure.

It is fuzzy, since my script compares "meat before you do anything" with "meat after you have done everything" - and "everything" includes running breakfast, for example. "Selling stuff you got while adventuring" certainly counts towards "Meat per adventure", but "collecting Meat from the Hippy stand as part of breakfast", not so much.

Not exact, but indicative.

Anyway, eat/drink/spleen up in any way you want before running the script - and if you get more adventures than my coding hard-coded choices give you, go you!

Thanks for your feedback.
 
Back
Top