soolar / sl_ascend

An ascension script for kolmafia
11 stars 5 forks source link

Useless funkslinging of certain items #268

Closed Saklad5 closed 4 years ago

Saklad5 commented 5 years ago

There are a few items that should never be used twice with Ambidextrous Funkslinging, as their effects cannot be applied more than once. In particular, tangles of rat tails and cigarette lighters should never be used before another item, including themselves.

As of https://github.com/soolar/sl_ascend/commit/e6ca7105e8a94248966d25183570dc7c46f0deea, sl_ascend will nonetheless use two at once, wasting one of them (and therefore several adventures) for no reason.

soolar commented 5 years ago

If that's happening, it's a mafia bug, not an sl_ascend bug, in my opinion. sl_ascend just does return "item " + $item[Tangle Of Rat Tails]; in its consult script as the only reference to tangles, so that's mafia adding an extra one automatically. There might be some way to tell mafia not to automatically do that for a specific invocation, but I'm not aware of it. Regardless, it does seem like a specific case where mafia shouldn't automatically funksling a second one.

Saklad5 commented 5 years ago

Do you want to open this issue on the KoLmafia forums, or should I? Either way, this should probably be closed if it isn’t actually a glitch with anything in this repository.

Actually, let me just skim KoLmafia’s code to see if I can identify the cause. I’m much more familiar with it than the code of sl_ascend, funnily enough.

Saklad5 commented 5 years ago

OK, I figured out the issue. r19370, line 726 of net/sourceforge/kolmafia/combat/CombatActionManager.java, in a function called getShortItemAction:

if ( secondName.equals( "none" ) )
{
    // Asking for no Funkslinging
    return first + ",-1";
}

This seems like a really bizarre implementation on KoLmafia’s part, but I guess you have to return “item tangle of rat tails, none” to avoid using two.

soolar commented 4 years ago

Alright, I'll do that then. Thanks!