My personal Meat farming script

I saw you had a todo comment for using pill keeper to force a semirare if you don't have an active counter at the beginning of the script, something else to consider is it might be profitable to continue spending all your spleen on getting more semirares immediately depending on the character's mpa instead of using spleen for additional adventures, especially since that allows you to get the same semirare over and over.
 
In my last couple of runs, I got the same semirare multiple times in a row. I was getting distilled wines for adventure generation, but, yeah - I hadn't really experienced this before.
This script also has an "experimental" section with unused functions for calculating "values" of semirares and chocolates.

Thanks for the suggestion. I haven't done the pillkeeper yet because it's more complicated than it first looked - as you pointed out.
Also you might want to get (at least one) valuable semirare for zero spleen even if you are not collecting semirares via Lucky Lindys - which, themselves, may not be profitable vs. higher yield booze, which is why semirare hunting is user configurable.
 
With r20152 I got the following when I ran VMF:

Code:
Function 'my_path_id()' overrides a library function. (bastille.ash, line 2246)

It hit after combing the beach.
 
Yeah. Ezandora's bastille.ash has my_path_id() which is now a built-in function. I'll publish a fix for that in its own thread.
Pick it up there.
 
Operator error, I'm sure but VMF is not fighting Vote Monsters.

Putting on "I Voted!" sticker...
Equipment changed.

Visit to HiddenCity: An Overgrown Shrine (Northwest) in progress...

[5416] An Overgrown Shrine (Northwest)
Encounter: Earthbound and Down
Earthbound and Down

Putting on natty blue ascot...
Equipment changed.
lastVoteMonsterTurn => 753567

I'm using the default for VMF.FightVoteMonsters so it should get free fights.

The segment above says VMF knows it is trying to fight a monster and that I have the I voted sticker.

I've disabled all other scripts (BBS, Mercenary Mood, there is no counter script, etc.)

If it's operator error I've run out of ideas.

Thanks.
 
Yeah, I have to fix that. You can no longer get wanderers in the shrine.

Bump?

//static location SHRINE = $location[ An Overgrown Shrine (Northwest) ];
static location SHRINE = $location[ Noob Cave ];

fixed it for me although a more maintainable solution would (obviously) be to rename the variable.
 
It seems that r20392 has affected VMF as it now errors out on start-up with the following:

Code:
Function 'update_candy_prices()' overrides a library function. (VeracityMeatFarm.ash, line 6713)

Commenting out the function in VMF allowed the script to run.
 
Last edited:
So this happened again..

Code:
buy 1 Now and Earlier for 1500 each from shop #3146545 on 20200929

buy 3 Now and Earlier for 1800 each from shop #1200792 on 20200929

buy 1 Now and Earlier for 1800 each from shop #37195 on 20200929

buy 4 Now and Earlier for 11800 each from shop #1166159 on 20200929

buy 15 Now and Earlier for 12000 each from shop #2055973 on 20200929

cast 1 Sweet Synthesis
Encounter: Sweet Synthesis

synthesize 12 Now and Earlier, Now and Earlier
You acquire an effect: Synthesis: Greed (360)
Using mall prices - the price of the 5th cheapest item - KoLmafia told me that "Now and Earlier" + "Now and Earlier" was my best choice.
Unfortunately, the 6th cheapest one of those was 10,000 Meat more expensive.
Since I needed 24 of them, it cost me almost 200,000 more than I expected to pay.

Perhaps I should have said "get me 24 for 1,800", and when it delivered 5, cast 2 Sweet Synthesis and queried for a better option.
Or something.

I'm not sure if the solution is in KoLmafia or my script.

This didn't happen when I cast Sweet Synthesis 1 at a time, rather than trying to do N at a time.

Perhaps I should go back to that behavior and multiply the server hits, as opposed to spending too much calculation and Meat in order to minimize server hits.

I need to think about this some more.
 
This post discusses an underlying issue with the synthesis support. The original thing mentioned there is still an issue, but I was hoping to fix it more generally while also addressing the issue I just encountered.

Until I get around to working on it, revision 285 of VMF will cast Sweet Synthesis one spleen at a time.
 
Revision 286 has muffin support.

If you have an earthenware muffin tin, eating a muffin a day is a decent 1-fullness food. 4-5 adventures, 25 turns of one of three buffs that provide Meat Drop, Item Drop or both. It's complicated, since you have to order a muffin and pick it up the next day - but you can then order another and get on to a one free muffin per day schedule.

Here's the doc:

Code:
// *** Breakfast Counter **

// Getting a muffin from the Breakfast Counter at the Monorail Station
// is a good choice, if you have an earthware muffin tin.
//
// muffins give lots of stats (150/150/150), grant 25 turns of a
// muffin-specific buff, and, if you eat the muffin as your first food,
// 10 turns of Started Your Day Right - Experience: +3, Muscle Percent:
// +25, Mysticality Percent: +25, Moxie Percent: +25
//
// blueberry muffin		All Blued Up	Meat Drop +60, MP Regen 2-3, HP Regen 5-10
// bran muffin			All Branned Up	Item Drop +60, MP Regen 5-7
// chocolate chip muffin	All Chipped Up	Meat Drop: +30, Item Drop: +20, MP Regen 4-5, HP Regen 3-6
// none				any of the above, chosen circularly

boolean should_eat_muffins = define_property( "VMF.EatMuffins", "boolean", "false" ).to_boolean();
item muffin_to_order = define_property( "VMF.MuffinToOrder", "item", "none" ).to_item();
I forgot to update the "since", but this depends on a fairly recent version of KoLmafia, which will handle your inventory correctly: ordering a muffin (temporaily) consumes your muffin tin, although you get it back when you eat your muffin the next day.

It is only useful to set VMF.EatMuffins to true if you own an earthenware muffin tin, although the only effect of setting it without one is 4 server hits when we visit the muffin counter to see if you happened to order a muffin outside of KoLmafia and a muffin is now waiting.

This revision will also look at the sky in your Getaway Campground before consuming, since That's Just Cloud Talk gives you +25% on all stat gains - including muffins (which are base 150/150/150 for 1 fullness).

This is perfectly reasonable to do even if you are planning on ascending at the end of the day since the muffin you ordered will carry your muffin tin over to your next life, where you can immediately retrieve it by visiting the Breakfast Counter.
 
With r20436 and an earthenware muffin tin in inventory I set the following, from the gCLI:

Code:
set VMF.EatMuffins = true
set VMF.MuffinToOrder = "blueberry muffin"

I started VMF and got the following:
Code:
Validating configuration.
VMF.FamiliarEquipment: 'ittah bittah hookah'     may not be the best item for your Trick-or-Treating Tot; ignoring.
All     is well!
Conditions list cleared.
Searching for "milk of     magnesium"...
Search complete.
Searching for "scrumptious     reagent"...
Search complete.
Searching for "glass of goat's     milk"...
Search complete.
Giving in to gluttony
Using 1 milk     of magnesium...
Finished using 1 milk of magnesium.

[579] Train     to Downtown
Encounter: On a Downtown Train
Submitting option 7 for     choice 1308
Encounter: On a Downtown Train
Submitting option 1 for     choice 1308
Encounter: On a Downtown Train
You acquire an item:     earthenware muffin tin
Submitting option 1 for choice 1308
Encounter:     On a Downtown Train
You acquire an item: earthenware muffin tin
Submitting     option 8 for choice 1308
Encounter: On a Downtown Train
You     are currently in a choice.

I loaded the relay browser and grabbed the choice HTML from the frame:
Code:
<body onkeyup="handleCombatHotkey(event,false);" onkeydown="handleCombatHotkey(event,true);" ><div id="page"><div id="mafiabuttons"><center><table width="95%"><tr><td align=left><div id="btnwrap"><input type="button" onClick="document.location.href='choice.php?action=auto';void(0);" value="auto"> <input type="button" onClick="document.location.href='choice.php?whichchoice=1308&option=1&pwd=e325e79f0877ad0c95a4838d093c1fc7';void(0);" value="Exchange 10 shovelfuls of dirt and 10 hunks of granite for an earthenware muffin tin!"> <input type="button" onClick="document.location.href='choice.php?whichchoice=1308&option=2&pwd=e325e79f0877ad0c95a4838d093c1fc7';void(0);" value="Order a blueberry muffin"> <input type="button" onClick="document.location.href='choice.php?whichchoice=1308&option=3&pwd=e325e79f0877ad0c95a4838d093c1fc7';void(0);" value="Order a bran muffin"> <input type="button" onClick="document.location.href='choice.php?whichchoice=1308&option=4&pwd=e325e79f0877ad0c95a4838d093c1fc7';void(0);" value="Order a chocolate chip muffin"> <input type="button" onClick="document.location.href='choice.php?whichchoice=1308&option=5&pwd=e325e79f0877ad0c95a4838d093c1fc7';void(0);" value="Back to the Platform!"> </div></td></tr></table></center></div><div class='content' id='content_'><div id='effdiv' style='display: none;'></div><div>

Did I err by changing the value for VMF.MuffinToOrder?

I went through the choices in the relay browser, ordered a blueberry muffin, navigated out of the monorail choice adventure chain, then re-ran VMF and it popped me back on to the monorail and purchased another muffin tin:
Code:
Encounter: On a Downtown Train
Validating configuration.
VMF.FamiliarEquipment:     'ittah bittah hookah' may not be the best item for your Trick-or-Treating     Tot; ignoring.
All is well!
Conditions list cleared.
Giving in to     gluttony

[579] Train to Downtown
Encounter: On a Downtown Train
Submitting     option 7 for choice 1308
Encounter: On a Downtown Train
Submitting     option 1 for choice 1308
Encounter: On a Downtown Train
You acquire     an item: earthenware muffin tin
Submitting option 8 for choice 1308
Encounter:     On a Downtown Train
You are currently in a choice.

I'm going to set VMF.EatMuffins to false for now. :)

If it helps here is the HTML for the frame where it got "stuck" the second time around:
Code:
<body onkeyup="handleCombatHotkey(event,false);" onkeydown="handleCombatHotkey(event,true);" ><div id="page"><div id="mafiabuttons"><center><table width="95%"><tr><td align=left><div id="btnwrap"><input type="button" onClick="document.location.href='choice.php?action=auto';void(0);" value="auto"> <input type="button" onClick="document.location.href='choice.php?whichchoice=1308&option=1&pwd=e325e79f0877ad0c95a4838d093c1fc7';void(0);" value="Exchange 10 shovelfuls of dirt and 10 hunks of granite for an earthenware muffin tin!"> <input type="button" onClick="document.location.href='choice.php?whichchoice=1308&option=2&pwd=e325e79f0877ad0c95a4838d093c1fc7';void(0);" value="Back to the Platform!"> </div></td></tr></table></center></div><div class='content' id='content_'><div id='effdiv' style='display: none;'></div><div>
<Center><centeR><table  width=95%  cellspacing=0 cellpadding=0><tr><td style="color: white;" align=center bgcolor=blue><b>On a Downtown Train</b></td></tr><tr><td style="padding: 5px; border: 1px solid blue;"><center><table><tr><td><div></div><p>  On your way to the train, you stop off at the little breakfast counter built into the wall near the platform.<p>  "Step right up and be amazed," the proprietor bellows at you!  "Don't be shy, let me show you the marvels of earthenware cookware!"<p>  The proprietor runs through a several minute demonstration about earthenware cookware while you watch nervously for your train.<p>  "... and on top of all that, it's made entirely of recycled material!  Unfortunately, we're out, but if you have any materials, I'll make you some earthenware... You'll need <i>10 shovels of dirt and 10 hunks of granite</i>.  And if you have some earthenware, we'll bake you something in it for breakfast tomorrow!"<p>Looks like your order for a blueberry muffin is not yet ready.<center><form style='margin: 0px 0px 0px 0px;' name=choiceform1 action=choice.php method=post><input type=hidden name=pwd value='e325e79f0877ad0c95a4838d093c1fc7'><input type=hidden name=whichchoice value=1308><input type=hidden name=option value=1><input  class=button type=submit value="Exchange 10 shovelfuls of dirt and 10 hunks of granite for an earthenware muffin tin!"></form><p><form style='margin: 0px 0px 0px 0px;' name=choiceform2 action=choice.php method=post><input type=hidden name=pwd value='e325e79f0877ad0c95a4838d093c1fc7'><input type=hidden name=whichchoice value=1308><input type=hidden name=option value=2><input  class=button type=submit value="Back to the Platform!"></form><p></center></td></tr></table></center></td></tr><tr><td height=4></td></tr></table></center></div></div></div></body><script src="/onfocus.1.js"></script></html>
 
Last edited:
Fascinating. Instead of blueberry/bran/chocolate chip being options 1/2/3, you have "buy a muffin tin" as option 1 and the muffins were 2/3/4.
OK. I can adapt to that; ASH has "available_choice_options" which gives me a map from int to button text. I can find which one is the blueberry muffin.
I wonder why I didn't see this when my 5 characters had no problem ordering a muffin?
 
Oh, rats. I see it.

If you have 10 shovelfulls of earth and 10 hunks of granite, option 1 is to by an earthenware muffin tin and all other choices are shifted by one.

I'm sorry that it bought you another earthenware muffin tin.

I just bought the ingredients and can see this and will fix it.
 
No worries. :D I already had a second muffin tin, which I have in my display case, now, if I want to I can eat all three types of muffins on a single day.
 
Revision 288 now looks up the correct choice option by name whenever navigating through the monorail choices.
Hopefully this should future proof the code against new changes to choice #1308.
Now I need to look at ChoiceManager and deal with this kind of stuff there, too.
 
Everything worked as expected today: VMF picked up the blueberry muffin ordered yesterday, ate it, and then ordered another.

Thank you!
 
Revision 289 will collect a daily Guzzlr cocktail set. Here's the doc:

Code:
// *** Guzzlr tablet ********

// If you have made 36 or more Guzzler platinum deliveries, you've maxed
// out the MP regen from your tablet.  Accept a platinum delivery to get
// a Guzlr cocktail set. Abandon it.

boolean collect_guzzlr_cocktail_set = define_property( "VMF.GingerbreadCity", "boolean", "true" ).to_boolean();
It'll do this by default if you have maxed out MP Regen on your Guzzlr tablet by doing at least 36 platinum deliveries.

If you are still doing platinum deliveries to get Guzzler bucks, either set this property to false, or do your platinum deliver before running VMF.
 
Back
Top