MacGuffin 2.0 -- level 11 quest, automated

matt.chugg

Moderator
If I havn't said so already Zarquon, this is an awesome script, probably one of my most used!

However, I think there maybe a minor issue with whitleys grove. I seem to end up adventuring there for ages looking for wet stew. I don't pay too much attention when i'm at work, just let mafia get on with it, but I seem to be adventuring there far too much (I have 14 lion oil and 25 ribs! :p) but still not making the stew. is this to do with the new cooking thing ? when I finally run out of adventures, the script aborts with:

Conditions not satisfied after 179 adventures.
You need 1 more stunt nuts to continue.
Conditions list cleared.
Condition added: stunt nuts
stunt nuts
You cannot cook without an oven or a range.
Unable to complete the Palindome section of the MacGuffin quest.


Code:
      if (item_amount($item[wet stunt nut stew]) < 1) {
         if (item_amount($item[wet stew]) + creatable_amount($item[wet stew]) == 0) {
            visit_url("guild.php?place=paco");
            obtain(1,"wet stew",$location[whitey's grove]);
         }
         obtain(1,"stunt nuts",$location[palindome]);
         create(1,$item[wet stunt nut stew]);
      }

I havn't delved in too deep, but would it be better to obtain 1 bird rib and and one lion oil instead of 1 wet stew?

its still awesome though!

EDIT:

ok a little digging, creatable_amount($item[wet stew]) returns 0 if you don't have a range or other means of cooking (which makes sense) even if you have the ingredients

looking in zlib at obtain() it uses retrieve_item():

retrieve_item(1,$item[wetstew]) fails if there is no means of cooking as above even if the ingredients are available, (should the core functionality of retrieve_item buy a range from the market and install it?)

Code:
> ash retrieve_item(1,$item[wet stew])

You need 1 more wet stew to continue.
Returned: false

> ash retrieve_item(1,$item[range])

Returned: true

> ash use(1,$item[range])

Using 1 Dramatic™ range...
Finished using 1 Dramatic™ range.
Returned: true

> ash retrieve_item(1,$item[wet stew])

Verifying ingredients for wet stew (1)...
Creating wet stew (1)...
You acquire an item: wet stew
Successfully created wet stew (1)
Returned: true

Not sure what the fix is, whether the script should check for a means of cooking, or whether to submit a bug report for the functionality of retrieve_item ?
 
Last edited:

Theraze

Active member
It's a difference in the cooking system... as it stands, you need to buy and install your new dramatic range, but that should really have happened around level 3 or 4, not level 11...
 

mredge73

Member
that should really have happened around level 3 or 4, not level 11...
Not during a Oxycore run, I ran into the same issue without even knowing anything changed in the way cooking worked. Luckily, I only wasted about 1/2 a day worth of turns (20).
 

zarqon

Well-known member
@Bale: Excitedly looked through your edits to the hidden city function, to see what I should add in. Ended up stealing the run_combat() call for the final spectre; I've meant to address that sometime error but wasn't sure how; added that locally in the hopes that fixes it. And why change all the vprint()'s to print()? You seek to reduce the efficacy of my verbosity setting! Traitor! :p

@matt: Hmmm. The script originally got the stew ingredients individually, but that was changed. I think it's valid to assume most everyone should have cooking ability by level 11, but special handling of some kind should be added for !can_eat(). Added to the (sigh) list.
 

matt.chugg

Moderator
It's a difference in the cooking system... as it stands, you need to buy and install your new dramatic range, but that should really have happened around level 3 or 4, not level 11...

I must be ascending all wrong! i've never needed to cook until level 11.... I only play softcore, but I am usually in ronin still at this point if it makes any difference
 

zarqon

Well-known member
In that case, why not have a wet stew in storage for obtain() to pull? That was the original reason it was changed.

Ha, no worries about the workload. I like scripting. And thus far the script-using community has been patient about updates.
 

matt.chugg

Moderator
In that case, why not have a wet stew in storage for obtain() to pull? That was the original reason it was changed.

Ha, no worries about the workload. I like scripting. And thus far the script-using community has been patient about updates.

hmm I don't actually know why I didn't think of that, I should be able to spare one pull!

Maybe i'll write a patch for you if I have time!
 

Theraze

Active member
I must be ascending all wrong! i've never needed to cook until level 11.... I only play softcore, but I am usually in ronin still at this point if it makes any difference

Depends on if you use EatDrink or not, as well as your ingredient luck and cashflow. Definitely a good choice to have available for EatDrink to deal with though.
 

Theraze

Active member
Changed my copy as follows:
while (my_adventures() > 0 && contains_text(questlog,"Fats, but then you lost it")) {
vprint("Meeting Mr. Alarm...",2);
cli_execute("conditions clear");
obtain(1,"choiceadv",$location[goblin lab]);
updatelog();
}

Haven't gotten to test it yet... should get to do that tomorrow, but it should work... Basically, just changing the adventure line to an obtain choiceadv line.
 

zarqon

Well-known member
After nearly a year of an operational script!

2.1 Updates!

  • Added a tweak by Bale to the hidden city sidequest.
  • Converted the script variables fightbosses and buyratchets to ZLib settings with the same names but a "macguffin_" prefix.
  • Tweaked handling for Mr. Alarm. If you have already unlocked Whitey's Grove, get the stew before meeting him. This has only been partially tested, and I suspect an improvement or two will be suggested by alert users.

Note: I did not add any special handling for !can_eat() as previously discussed. The current code for getting the wet stew (which I did not change) worked just fine for me in my current Oxycore run. It may be that matt's problematic experience occurred in the window between KoL changes and mafia's adapting to such. At least, that's what I'm hoping it was.
 

matt.chugg

Moderator
Well after the previous discussion, i've had my pre-ascend script make sure I have a wet stew in storage, ever since then its worked just fine.

Quick question: how does this (and other) script(s) decide whether to pull items (such as drum machine) from storage? for example why does it pull a drum machine but not tomb ratchets?

This is still one of my favorite scripts, thank Z
 

zarqon

Well-known member
Basically it boils down to whether or not the script calls obtain(). I don't think pulling from storage is usually consciously part of the script design.
 

zarqon

Well-known member
See post 164. After the "hiddencity temple" command, which evidently won't actually fight the final spectre, I added your run_combat() call.
 

kain

Member
It doesn't know about the choice adventures in the forest to actually obtain the quest coin, temple map, etc ... right?
 

Theraze

Active member
That's a KoLmafia issue, not a MacGuffin issue... The script will try to acquire them, but because goal adventuring for them still doesn't work, it won't succeed in its quest.
 

matt.chugg

Moderator
That's a KoLmafia issue, not a MacGuffin issue... The script will try to acquire them, but because goal adventuring for them still doesn't work, it won't succeed in its quest.

Couldn't the choice adventures values be set using set_property() in the script?

Looks for a global or appropriate user preference from the saved files (found in your "Settings" directory) and if it finds one that matches, it overrides its value with value. If a match is not found in your existing preferences for prop, it will create a property with that name and set it to value.
 
Top