EatDrink.ash: Optimize your daily diet (and see how your old diet stacks up).

Crowther

Active member
Sorry if this has already been discussed somewhere in this very long thread (I couldn't find it by searching), but: I'd love to have a setting to tell EatDrink to only consider food/drink that's not already in my consumption history, in order to increase the number of different items I've consumed, while still doing as good a job as possible of having a decent diet on a budget. Not sure how hard this would be :)
Not too hard. I'm working on a similar script that I run before EatDrink. I should be done debugging it in a couple of months. ;)
 

Theraze

Active member
Yeah, I personally run omnilimit 10000 (omnilimit => ashq import <omnivore.ash> Omni_Limit=%%; omnivore();) before eatdrink each day. Also, I sometimes check for prop beanies and, if I don't have 2 yet, I manually eat up bash cereals. But EatDrink is just about filling up in general. I could do the bash cereal thing by setting it as a favourite item and manually changing that... but that's more work than just inv prop, inv bash, use milk of, eat 5 bash cer, use 20 bash box, eatdrink (eatdrink => ashq import <EatDrink.ash>; SIM_CONSUME=false; eatdrink(fullness_limit(), inebriety_limit(), spleen_limit(), false);). :)
 

Drkirre

Member
Hey, anyone been having trouble with EatDrink lately? Today, despite me changing no settings from usual, it ate nothing but pickled eggs, drank nothing but overpriced "imported" beer, and then completely failed to spleen at all. What gives? o_O;
 

Theraze

Active member
No clue. Worked fine for me. Guessing you changed some setting. Probably lowered VoA massively or something similar.
 

fronobulax

Developer
Staff member
Hey, anyone been having trouble with EatDrink lately? Today, despite me changing no settings from usual, it ate nothing but pickled eggs, drank nothing but overpriced "imported" beer, and then completely failed to spleen at all. What gives? o_O;

That is typical for me in HC when I don't have a lot of meat or other options. Of all the things that could be going on I would start with validating your statement that nothing was changed. As one example, I share KoLmafia files across devices and I have had synchronization fail and the net effect was that settings were changed even though I did nothing :)
 

fronobulax

Developer
Staff member
I am amused. I am in Heavy Rains, EatDrink decided to craft and consume a Russian Ice. I saw no adventure gain and went to consume it in the relay browser when I was told it was too old to be consumed on the path. I'm reporting it here in case anyone else notices but I suspect at the core there is data used and maintained by KoLmafia that is not complete.
 

lostcalpolydude

Developer
Staff member
is_unrestricted( $item[russian ice] ) will return false in the current challenge path. I'm not sure what else mafia should do, since completely preventing its creation isn't the answer.
 

fronobulax

Developer
Staff member
is_unrestricted( $item[russian ice] ) will return false in the current challenge path. I'm not sure what else mafia should do, since completely preventing its creation isn't the answer.

is_unrestricted does not seem to be called in EatDrink (or any script in my scripts directory except newLife, for that matter) so perhaps the solution is for ED to adjust recommendations accordingly? I can imagine that is harder than it sounds since ED has a SIMULATE option...
 

Crowther

Active member
Personally I think this is a KoL bug. If I can't consume a Russian Ice, because it is too old, then I shouldn't be able to use the recipe to make it either. I got screwed by spaghetti con calaveras, which works the same way.
 

Theraze

Active member
Actually, what EatDrink uses is the zlib function be_good, which tries to track path restrictions. The 'bug' or more rightly Feature Request which should be made in the zlib thread is to add is_unrestricted as the default case check. That will fix EatDrink and any other script that uses be_good for its path checks. By my checks, that would be BatBrain, BBB, EatDrink, and SmartStasis.
 

Bale

Minion
Eatdrink never eats Spaghetti Breakfast for me. Is that because eatdrink_priceOfNontradeables is MAXMEAT? Would there be bad side effects if I changed that? Is the cause something else altogether?
 

Theraze

Active member
No clue... since I've never had a spaghetti breakfast, I don't know what it's classified as. How about you pop that through edvalue to see what it 'costs' for your breakfast?

edvalue => ashq import <eatdrink.ash> update_from_mafia(to_item("%%").item_type()); update_using_mafia(to_item("%%").item_type()); foreach it in grub if (grub[it].it == to_item("%%")) print(value(grub[it], false, false, false));
 

Bale

Minion
There is no output at all. So I tested it with another food just to ensure it works. It did.

Code:
[COLOR="#808000"]> alias edvalue => ashq import <eatdrink.ash> update_from_mafia(to_item("%%").item_type()); update_using_mafia(to_item("%%").item_type()); foreach it in grub if (grub[it].it == to_item("%%")) print(value(grub[it], false, false, false));
[/COLOR]
String successfully aliased.
edvalue => ashq import <eatdrink.ash> update_from_mafia(to_item("%%").item_type()); update_using_mafia(to_item("%%").item_type()); foreach it in grub if (grub[it].it == to_item("%%")) print(value(grub[it], false, false, false));

[COLOR="#808000"]> edvalue spaghetti breakfast[/COLOR]

[COLOR="#808000"]> edvalue hot hi mein[/COLOR]

Searching for "milk of magnesium"...
Search complete.
5957.0

Maybe it was a problem because I had already eaten today so spaghetti breakfast was no longer a valid food for me?
 

Bale

Minion
Okay, I have not eaten anything today, but I still get no result for "edvalue spaghetti breakfast". For some reason EatDrink isn't even recognizing it. Could that be because it is not tradeable?
 
Last edited:

Theraze

Active member
Non-tradeable items should use the eatdrink_priceOfNontradeables variable. For curiosity's sake, what is the quality on spaghetti breakfast? Do you have a minimum quality set that might be filtering it out?
 

Bale

Minion
Non-tradeable items should use the eatdrink_priceOfNontradeables variable. For curiosity's sake, what is the quality on spaghetti breakfast? Do you have a minimum quality set that might be filtering it out?

OH! Interesting question with an interesting answer!

According to mafia...

Code:
> ash $item[spaghetti breakfast]

Returned: spaghetti breakfast
plural => spaghetti breakfasts
descid => 364296536
image => spaghetti.gif
smallimage => spaghetti.gif
levelreq => 1
quality =>
adventures => 6.0
muscle => 0
mysticality => 0
moxie => 0
fullness => 1
inebriety => 0
spleen => 0
minhp => 0
maxhp => 0
minmp => 0
maxmp => 0
dailyusesleft => 0
notes =>
quest => false
gift => false
tradeable => false
discardable => true
combat => false
combat_reusable => false
usable => false
reusable => false
multi => false
fancy => false
candy => false
seller => none
buyer => none
name_length => 19

Interesting, eh? I'm not sure that is a bug since according to KoL the quality is "???" and Cold One has the same quality issue.

Incidentally, zlib eatdrink_minimumQuality = 0 so apparently ??? is less than 0.
 

Theraze

Active member
That does appear to be likely what is making it fail. You could just remove the quality check part, since you don't use it. Verified that changing the line to this makes it work:
Code:
        if ((get_ronin() && (it == $item[digital key lime pie] || it == $item[star key lime pie]))) continue;
Set it in as an override to use if not avoided, based on the _spaghettiBreakfast property, similar to steel organs. If we want it to drop with a lower priority and more 'normal' price, let me know and we can mess with it.
 

johngnash

Member
So I can't find the answer, and I did search the thread. Does anyone know is eatdrink uses frosty mugs and scratches forks when its optimal?
 
Top