My personal Meat farming script

Veracity

Developer
Staff member
It's coded to not use a PYEC if you or your stash does not own one.
It's coded to not even look in the stash if autoSatisfyWithStash is false.
My multis who do not own a PYEC and are in clans with no PYEC don't try to use it.

What does it do for you?
*puzzled*
 
It flat out fails if it can't pull the PYEC from the stash for either it is not there or you have already reached your max pulls for 0 karma items
 

Veracity

Developer
Staff member
Here is a character in a clan with no PYEC.

Code:
[color=green]> get autoSatisfyWithStash[/color]

false

[color=green]> get autoSatisfyWithStash=true[/color]

autoSatisfyWithStash => true

[color=green]> ash import <VeracityMeatFarm.ash>; platinum_yendorian_express_card()[/color]

Refreshing stash contents...
Stash list retrieved.
autoSatisfyWithStash => false
autoSatisfyWithStash => true
Returned: void
I cannot reproduce the "fails if ... it is not there ...

Notice that it set autoSatisfyWithStash to false and then to true again. It uses available_amount() with that setting at false to determine if you have a PYEC of your own, somewhere, and, if not, again with that setting at false to see if you have one in your clan stash. That is so it can put it back, if it got it from the stash.

I've never been in a clan where I was subjected to karma restrictions, so it never occurred to me that retrieve_item() could fail when we verified that it existed. I guess karma is one way - or, if it somebody pulled it from the stash after we verified it was there and before we tried to pull it ourself. That is a tiny tiny window, but it is a race condition.

Easy enough to detect that retrieve_item() failed and have the script not bail.
 

Theraze

Active member
Quick example of the #460 issue in action:
Using 1 milk of magnesium...
You acquire an effect: Got Milk (15)
Finished using 1 milk of magnesium.
Searching for "super salad"...
Search complete.
Searching for "beer basted brat"...
Search complete.
Searching for "whole roasted chicken"...
Search complete.
Purchasing Mayoflex (5 @ 950)...
You spent 4,750 Meat
You acquire Mayoflex (5)
Purchases complete.
[¶-1] cannot be eaten.
Net income = -6,209 Meat in 0 turns. Meat/Adventure = -6,209
Cumulative income = 380,557,331 Meat in 263,713 turns. Meat/Adventure = 1,443

Alternate one-line sanity check to eat_food in line 5383-5385:
Code:
    if ( count == 0 || food.to_int() < 0 ) {
	return;
    }
 
Last edited:

Veracity

Developer
Staff member
Huh. Your post from yesterday did not appear to me because another post was made after yours and started a new page,

I'll take a look when I get up tomorrow. Thanks for the additional input. :)
 

Veracity

Developer
Staff member
(I suspect that the fix will involve rejecting a non-existant food and choosing another. Might be a fix in vcon, rather than VMF. What is is the value of property

get VMF.OptimalConsumables

?)
 
Last edited:

Veracity

Developer
Staff member
Oh, wait. I see that you do NOT have that set, and the following is coming into play:

Code:
	    item_set choices = $items[ super salad, beer basted brat, whole roasted chicken ];
	    item food = find_profitable_consumable( choices, 3, mpa ).it;
	    eat_food( foods, food );
In other words, you are choosing to use a handful of foods I have found to be profitable, but for your character, they are too expensive to be profitiable.

I'll think about this

Edit: Perhaps you should do this:

set VMF.OptimalConsumables=true

and let vcon decide what the best "profitable" consumables are - given your MPA and what you can actually afford.

(Have you run this script before? Do you have an accurate MPA for this script?)
 
Last edited:

Veracity

Developer
Staff member
Revision 212 does two things:

VMF.OptimalConsumables is now "true" by default. This depends on a reasonable Meat Per Adventure value - which will be automatically calculated as you use this script more and more.

VMF.BreakfastScript can be set to a script - "Breakfast.ash", say - which will be invoked instead of KoLmafia's built-in "breakfast" command. Note that you script can still invoke the built-in command if it wishes. If not, it should still use the "breakfastCompleted" propert to control whether it's been run already today.

FWIW, this is what I just defined as MY breakfast script (Breakfast.ash):

Code:
cli_execute {
    call advent.ash
    breakfast
}
Obviously, I could have just made a .txt file with the CLI commands, but I'm leaving open the option to, maybe, eventually put in some actual ASH, without having to change my VMF settings.
 

Veracity

Developer
Staff member
Revision 217 adapts to the milk of magnesium nerf: it will use milk before eating iff _milkOfMagnesiumUsed is false.
 

darkerfalz

New member
For some reason, the script keeps trying to have me eat a bunch of Blood Roll-ups even though I'm not a vampyre. Is there a way to exclude a specific consumable?
 

Veracity

Developer
Staff member
Code:
static item_set excluded_consumables = $items[
    // Consumables with specialty situationally useful effects that you
    // probably don't want to use just for their adventure gains
    extra-greasy slider,
    jar of fermented pickle juice,

    // Vampyre consumables - usable only in Dark Gyffte
    bloodstick,
    actual blood sausage,
    blood snowcone,
    blood roll-up,
    blood-soaked sponge cake,
    bottle of Sanguiovese,
    mulled blood,
    Red Russian,
    dusty bottle of blood,
    vampagne,
];
Not seeing it. Can you go to the gCLI and type this:

vcon

and paste in here what it says, please? Thanks.
 

darkerfalz

New member
It turns out it's a PEBKAC problem, as my copy of vcon was out of date and didn't have the Vampyre consumables in it. Though for some reason, none of the Vampyre consumables were better than anything else until a few days ago.

Sorry, I should have checked versions before posting.
 

Zen00

Member
I had the same thing happen to me when I booted up an older copy of my KoLmafia folder and forgot to update the eat/drink script before running it. :p
 

Rinn

Developer
May want to check the current monster against
Code:
_gallapagosMonster
before casting Gallapagosian Mating Call, looks like your combat filter is casting it every fight on the olfaction target.
 
Top