My personal Meat farming script

I'd be happy with a basic choice of the type of item to select each time it's available: Equipment, Food, Drink, Potion, Spleen. Since VMF spends most turns in Barf Mountain, if the zone is available, the specifics of the item types available don't vary.

Anything beyond that would, of course, be awesome.
 
Last edited:
  • Which item is prescribed for each of the 5 slots depends on different factors:
    • Equipment - The ice crown will always be offered at first; once an ice crown is taken, the frozen jeans will be offered next; once the frozen jeans are taken, then the ice wrap will be offered. At rollover, it resets back to the ice crown.
    • Food - Which food is offered seems to depend on what phylum of monsters you've been fighting.
    • Booze - You will receive a booze corresponding to your highest buffed stat (Fortifying for Muscle, Smartifying for Mysticality, Limbering for Moxie). In case of a tie, Medical-Grade Wine is offered.
    • Potion - The ointment is somehow related to type of damage taken in previous combats. It's not clear if there's some sort of minimum damage threshold, or how many combats it looks back at.
    • Spleen - The pill prescribed depends on what type of location you've adventured in for the majority of the last 20 turns (i.e. at least 11 turns in the same type of location). Underground locations give Breathitin™, indoor locations give Extrovermectin™, outdoor locations give Homebodyl™. Fleshazole™ is offered in the case of no clear majority, or for underwater locations. Noncombats and free combats appear to count towards Fleshazole™ instead of the other zone appropriate pills.

- If you spend all your (remaining) turns in this script, the equipment seems useless; none is appropriate for rollover.
- Barf Mountain has 2 dudes and 1 elemental. If you sniff garbage tourists, you will have a majority of elementals. Otherwise, a majority of dudes.
- Booze depends on "your highest buffed stat". That COULD be adjusted, perhaps, but at the expense of a lot of work. And Meat.
- I essentially never take damage in Barf Mountain in aftercore.
- Barf Mountain is indoors.

So, yeah - probably just a list of 5 types selected from {equipment, food, booze, potion, spleen}, to specify the order of items to pick.
Fortunately, "_coldMedicineConsults" and "_nextColdMedicineConsult" properties exist.
 
There's a new Beach Combing script named COMBO which has a built in database of 700+ "scarce" beach squares - the only squares where you'll find cursed pirate gear, whales, meteorite fragments, and so on. I have coded up support for using that - as well as my own BeachComber script, which goes to RANDOM squares. Not tested, yet, since I only learned about the new script after I'd run all my turns today.

Expect a new release, by and by.

If you have only combo or BeachComber installed, it will run the one you have. If you have both, it will run combo.
Is that OK, or should it be configurable? I.e., VMF.PreferredBeachComingScript can be "combo" or "BeachComber", defaulting to "combo".
 
I run BeachComber.ash independently from VMF so I don't care about configuring. If I wanted to run COMBO I'd just run it before I ran VMF.
 
I just took a look at COMBO as I was unaware of its existence. I would like it as an option for VMF.PreferredBeachComingScript as you describe. Thank you!
 
I added this in revision 302:

Code:
// Which Beach Comb script is to be used
//
//     BeachComber      Visits random sections of the beach and goes after uncombed
//                      "sparkly" squares, assuming you've unlocked them via Grandpa
//                      You can stumble upon whales and other rarities (I have), and
//                      will not waste time on already combed squares, at least.
//     combo            Visits only "scarce" squares for best chance at rarities
//                      Unfortunately, although there are more than 700 of them,
//                      the more people who use this script, the more likely you'll
//                      find them already combed. They do regenerate, slowly.


string beach_comb_script = define_property( "VMF.UseBeachCombScript", "string", "BeachComber" );
Note that it not a "preferred" script to use. It is THE script to use.

As before, I check at runtime if you have the script installed and silently don't use it if you don't have it. That allows the defaults to say "yes, use BeachComber to use your free walks" and not abort if you haven't installed the script.

I tested with one of my multis and it used my free walks to comb 11 squares using combo.
Surprise, surprise - they were all previously combed squares. :)

One of these days I'll stumble on a regenerated scarce square and get a scarce item of some sort.
 
I need to support the Cosmic Bowling Ball for this script. Cosmic Ball in the Air gives +50% Meat Drop and +25% Item Drop and it's free. Assuming you have the cosmic bowling ball, which is not free. :)
 
I'm seeing a loop after "Giving in to Gluttony" before any turns are read. I'm in Aftercore with a Sauceror. veracity0-meat-farm is at HEAD (r302)

It failed to make fleetwood mac-n-cheese and tried again, 647 times in the first run before I pressed stop now.
There are fleetwood macaroni in the store for less than my purchase limit. I manually bought the ingredient and it continued, and stopped on the next thing it needed to purchase. I don't think I changed any preferences that would affect it, but I am not sure.

Rich (BB code):
Giving in to gluttony
tasty tart (3663 cost; 3850 expected_profit) is better than none (0)
[...]
fleetwood mac 'n' cheese (2998 cost; 38665 expected_profit) is better than gnocchetti di Nietzsche (32667)
deluxe layer cake (4517 cost; 56953 expected_profit) is better than none (0)
gallon of milk (10100 cost; 88935 expected_profit) is better than none (0)
Verifying ingredients for fleetwood mac 'n' cheese (1)...
You need 1 more fleetwood macaroni to continue.
tasty tart (3663 cost; 3850 expected_profit) is better than none (0)
[repeat]
 

Attachments

I wonder if that's due to Rinn's change to retrieve_item and purchase vs. create prices in the mall?
I'll see what I can find.

Code:
boolean craft_or_retrieve_item( int want, item it )
{
    ...

    return retrieve_item( want, it );
}

It is definitely a failure in retrieve_item().

Edit:

This is a Saucerer (can make cheesy eagle sauce)

> inv fleetwood

> ash retrieve_item( $item[ fleetwood mac 'n' cheese ], 1)


Searching for "cheesy eagle sauce"...
Search complete.
Searching for "scrumptious reagent"...
Search complete.
Searching for "eagle's milk"...
Search complete.
Searching for "fleetwood mac 'n' cheese"...
Search complete.
Searching for "fleetwood macaroni"...
Search complete.
Verifying ingredients for fleetwood mac 'n' cheese (1)...
Verifying ingredients for cheesy eagle sauce (1)...
Using cached search results for scrumptious reagent...
Purchasing scrumptious reagent (1 @ 750) from #753153...
Purchases complete.
Using cached search results for eagle's milk...
Purchasing eagle's milk (1 @ 569) from #1788862...
Purchases complete.
Creating cheesy eagle sauce (1)...
You acquire an item: cheesy eagle sauce
Successfully created cheesy eagle sauce (1)
Using cached search results for fleetwood macaroni...
Purchasing fleetwood macaroni (1 @ 945) from #499254...
Purchases complete.
Creating fleetwood mac 'n' cheese (1)...
You acquire an item: fleetwood mac 'n' cheese
Successfully created fleetwood mac 'n' cheese (1)
Returned: true

> inv fleetwood

fleetwood mac 'n' cheese

This is an Accordion Thief (cannot make cheesy eagle sauce):

> inv fleetwood

fleetwood chain (2)

> ash retrieve_item( $item[ fleetwood mac 'n' cheese ], 1)

Searching for "fleetwood mac 'n' cheese"...
Search complete.
Purchasing fleetwood mac 'n' cheese (1 @ 2,998) from #3438990...
Purchases complete.
Returned: true

> inv fleetwood

fleetwood chain (2)
fleetwood mac 'n' cheese
At the moment, the cheapest cheesy eagle sauce in the mall is 2,899 Meat.

I bet there was a really cheap one there when you tried it, so it decided to try crafting, or something.
 
Last edited:
Revision 303 has this:

vcon will not consider using an item that grants Just the Best Anapests, since
that dramatically complicates fight parsing.

When VMF considers foods to eat, it concludes that a muffin is a good choice for
your first food of the day. Then it considers spaghetti breakfast. Reverse the
order of those, since spaghetti breakfast MUST be the first food of the day.

VMF now will use your cosmic bowling ball to Bowl Straight Up.

I realize that is slightly premature, since it uses the cosmicBowlingBallReturnCombats property, and the PR that introduces that is sitting there waiting for approval. So, until that is merged, VMF will only notice you have a cosmic bowling ball if it is in inventory when you start.

One that is merged, I'll make a new release that updates the "since" directive to require that revision or later.

(By the way - goose grease gives Just the Best Anapests - and I had problems today until it wore off.)
 
I have a mood that just uneffects Just the Best Anapests so it is not a concern if something does decide to consume goose grease.
 
I have a mood that just uneffects Just the Best Anapests so it is not a concern if something does decide to consume goose grease.
How nice for you.

Code:
// Effects granted by selected items that you'd probably want to uneffect.
// So, exclude the consumable
static effect_set malignant_effects = $effects[
    Just the Best Anapests,
    QWOPped Up,
];

I'd prefer to not require users to set up specific moods or before adventure scripts or whatever in order to clean up after my script did something for them.

I suppose vcon could have a new configuration parameter - VCON.allowMalignantEffects - to make it not care about that. Defaults to false, so you'd have to opt in. Probably "you" as in "just you". :)
 
:/ Somehow "Buy Items from Mall whenever needed" was unchecked. I don't remember doing that, but I must've.
 
Just as a data point: I too have a default mood, in aftercore, that uneffects malignant effects. So there's, at least, two of us. ;)
 
Last edited:
Reviision 304 does this:

VMF requires a KoLmafia version that tracks the cosmic bowling ball.
vcon provides a new setting:

VCON.AvoidMalignantEffects

Defaults to true. Set it to false if you have a mood which will do it and you don't mind considering consumables that give you bad effects.
 
Just as VMF uses the fax machine + puttying to "farm" a particular configured monster (I use the black crayon penguin, a free fight, for the fish heads), I'm considering support for locket + digitize. I'd probably use it for Witchess Knights - also a free fight - which drops jumping horseradish, a 1-fullness food which adds a lot of Meat Drop.

Just a heads up, in case anybody has suggestions or comments.

I'm also looking into making vcon use retrieve_price(), rather than mall_price(). I'm still trying to wrap my head around what it would take to actually use more of my accumulated items to craft things. I'm especially curious why VMF insists on buying a drive-by shooting to lubricate my Robortender, rather than using some of the 3400+ fish heads I have in storage. Partly because InventoryManager.priceToAcquire only considers items you actually have in inventory, rather than including things you have in "available" places - like Storage in aftercore.

That seems like a bug, but I probably still need to tweak my valueOfInventory setting.
 
I would be interested in using the locket as you describe.

Question: I haven't even attempted an analysis of what the best meat-farming familiar might be but do you prefer feeding drive-by shootings to a Robortender over a Trick or Treating Tot with a lil pirate costume equipped?

On another note...I VERY much appreciate the voluminous comments that you include in your code. It not only helps me in understanding what is going on in the script but it has helped me to improve my own, novice, efforts in script writing.
 
Last edited:
Not sure this is VMF or operator or what.

VMF sometimes stops prematurely, quitting while there are still adventures. It can be restarted just fine but doing so is one more step.

It seems to happen when it encounters The Back Door. choice1067 is zero. There could be a Kolmafia setting that is not what it should be. I am running @zarqon 's Mercenary Mood which will handle some choices so the problem may be there. As often happens to users, I feel like nothing has changed except KoLmafia so maybe there is a bug to be tracked and fixed?

Code:
Request 7 of 76 (Dinseylandfill: Barf Mountain) in progress...

[1418] Barf Mountain
Encounter: The Back Door
The Back Door

Selling loot obtained while adventuring

Visiting the Maintenance Tunnels
Submitting option 6 for choice 1067
You acquire FunFunds™ (3)
Using 15 bag of park garbage...
You gain 2,805 Meat
Finished using 15 bag of park garbage.
...
 
Back
Top