Feature - Implemented Maximizer buyable items missing

ckb

Minion
Staff member
When using the Maximizer, buyable items (potions) are missing from suggestions.

This is true in Softcore (I have not tested HC) when the Equipment: radio button is set to 'don't check' or 'on hand'.
If you the Equipment: option to 'creatable' or 'pullable/buyable', then buyable potions will show up in the list.

I noticed this in my last few runs where I was maximizing muscle, buy Ben-Gal Balm was not suggested. I could buy it and use it manually, but it would not show up in the list unless I changed the Equipment: option.

From going through change lists and trying previous builds, I believe this is tied to 18062: Experimental - In Softcore, Maximizer will suggest pulling items from storage
 

ckb

Minion
Staff member
Also, it seems that with this bug, the long version of ash maximize() will never find the buyable items.
{string display; string command; float score; effect effect; item item; skill skill;} [0] maximize( string, int, int, boolean, boolean )

unless there is a way to specify 'creatable' or 'pullable/buyable' with a setting or preference I don't know about.
 

Darzil

Developer
The bug is that buyable stuff doesn't appear unless you show buyable items ?

Maybe we should change that to mall buyable to and move npc buyable down a category or two.

The long version should be looked at.
 

Darzil

Developer
Ok, so I think this is two Feature Requests (as I can't see buyable items appearing under buyable items as a bug).

1. Provide either a) a preference to consider purchasable NPC buyable and/or Coinmaster items as if on hand, or b) a set of options for on hand, npc buyable, coinmaster, createable, mall buyable etc that can be individually selected (and are session persistent via preferences). Would appreciate thoughts on best way to approach this.

2. Make longer version of ash long maximize command that supports all options.

I also sort of wonder how hard it'd be to add a maximize_filter script option, which lets you instead send item names/numbers to a script which decides whether to allow access (returns true) or decline it (returns false). I can think of many things a clever scripter could do to ensure that things useful to later quests or with high aftercore value aren't used.
 

lostcalpolydude

Developer
Staff member
1. Provide either a) a preference to consider purchasable NPC buyable and/or Coinmaster items as if on hand, or b) a set of options for on hand, npc buyable, coinmaster, createable, mall buyable etc that can be individually selected (and are session persistent via preferences). Would appreciate thoughts on best way to approach this.

I would actually expect NPC/coinmaster items to be treated like on-hand items if those acquisition methods are allowed in general settings.
 

xKiv

Active member
I would actually expect NPC/coinmaster items to be treated like on-hand items if those acquisition methods are allowed in general settings.

I wouldn't expect coinmaster items. If it's buyable with meat, that's fine. But if it costs something untradeable that has to be adventured for (or is limited/day), that's different.

ETA: unless there was an option to consider "anything above N (configurable per coinmaster) coinmaster currency for on-hand, but reserve N for manual-only purchases".
 

lostcalpolydude

Developer
Staff member
I wouldn't expect coinmaster items. If it's buyable with meat, that's fine. But if it costs something untradeable that has to be adventured for (or is limited/day), that's different.

ETA: unless there was an option to consider "anything above N (configurable per coinmaster) coinmaster currency for on-hand, but reserve N for manual-only purchases".

And you're also against turning off autoSatisfyWithCoinmasters?

I guess my issue is that I only use the GUI, where I can make intelligent decisions about what to use, while other people are using scripts that will use up whatever is available without considering cost (and cost can be hard for a script to calculate when everything involved is untradable), and unfortunately both of those things rely on the same code.

Adding more options seems like a really bad idea. Many people can't even figure out that they can type in the text field, or that there's a help button
 

Veracity

Developer
Staff member
I would actually expect NPC/coinmaster items to be treated like on-hand items if those acquisition methods are allowed in general settings.
This. I see no need to invent a mechanism to do something we already have a mechanism for.

The autoSatisfyWithXXX settings are how the user specifies which sources are allowed for "automated" acquisition. If you are letting KoLmafia make decisions for you about which items the maximizer will acquire, that is "automated". Therefore, any source that you have opted into is fair game.

Like lost, I only use the GUI for maximizing and I carefully consider what sources I will use - and there are plenty of non-item limited things (cheating the deck, arena concert, one-per-day skills, etc.) that I may want to save for a particular use later in the day.

But if you script your maximization and don't want it to spend coinmaster currency, then turn off autoSatisfyWithCoinmaster.

Regarding a "maximizer item filter", this is in the same vein as a "buyScript" which is called by item acquisition to control whether to mall-purchase an item:

boolean main( item, count, level, default )

I don't know what the last two parameters are for.

Presumably your maximizerFilter would be similar - except, as I mentioned, there are more things than just items a script might want to control; use my arena concert now, when I might prefer to use it later, say?

Seems like a lot of effort for, to my eye, little value.
 

Veracity

Developer
Staff member
Another example.

I'll use Bow-Legged Swagger to double my initiative for one turn when I'm at the Tower contest, but will not use it as a general "I want more initiative so I can get the jump more often and pickpocket" thing.

But if I automate maximizing for Initiative, how will the maximizer know to NOT use that skill any time it is available?
 

ckb

Minion
Staff member
The bug is that buyable stuff doesn't appear unless you show buyable items ?

No, the bug is that the behavior changed with 18062, and I don't think it was intended.

Experimental - In Softcore, Maximizer will suggest pulling items from storage to give effects, and will suggest buying from mall and then pulling from storage for equipment and effects, if "buyable/pullable" is selected.

But now the maxmizer will not suggest NPC buyable items unless 'creatable' or 'pullable/buyable' is selected - and it DID suggest them in 18061.

And to make it slightly more confusing, the 'none /on hand / createable / pullable/buyable radio button option is in a row labeled 'Equipment:', but it now affects the list results for potions.

I would prefer that it either reverts back to 18061 behaviour, or there is a setting to choose a default value for this. As it is now, there is no way to script maximizing that will buy potions when available (such as Ben-Gal balm for muscle). So I have to abort my script with a message to manually choose *creatable and do it in the GUI.
 

ckb

Minion
Staff member
For Veracity and lostcalpolydude: the long-term version of the maximize returns a record [int] of maximizer choices, it does not execute them. So adding logic (depending on situation) is relatively easy.
For example: My script does not cheat the deck unless it is for the tower off-stat test, it does not use Bow-Legged Swagger unless it is for the tower test, it does use certain black-listed extra expensive items, etc.
 

Darzil

Developer
No, the bug is that the behavior changed with 18062, and I don't think it was intended.

Sorry to tell you this, but adding the extra places it could source from and making equipment and potions/food/drink consistent was absolutely intended.
 

Darzil

Developer
It didn't remove any. See in the first post it mentions only seeing buyable potions if you select buyable.
 

ckb

Minion
Staff member
It didn't remove any. See in the first post it mentions only seeing buyable potions if you select buyable.

It did remove them from the long form of ash command maximize(string expression ,int max_price ,int price_level ,boolean simulate ,boolean include_equip )
 

Darzil

Developer
r18389 adds a Maximizer option to consider non-equipment createables as on hand, which I think should give you what you want (maximizerCreateOnHand).
 
Top