Bug - Fixed Forest Tears being used to remove Beaten Up, when Tiny Houses are avaiable

makuta2

New member
My kolmafia constantly uses Forest Tears as the item to remove beaten up or other malignant effects. It even buys more when I run out of tears, even though I have over 900 Tiny Houses at my disposal. I don't have Forest Tears marked as a HP restorer while Tiny House is marked. I checked my moods, and none of them has Forest Tears as an option to remove Beaten Up. This also happens when I use Kolmafia to run my other accounts. I'm sure that this is a bug in KolMafia, not necessarily in the programming, but it couldn't possible by on my fault. I've redownloaded Kolmafia a few times, running it in new folders and the issue would always come up. Is there anyway to change the priority of using Forest Tears to Tiny house instead?
 

Theraze

Active member
I believe this is found in getDefaultAction in moods/MoodManager. It looks like the order of removing beaten up is:
walrus tongue
forest tears
tiny house

This does look, however, as if it will only use forest tears if you have one in your inventory... a tiny house, it will buy, if you're out of Ronin. Not tears...

That file (and request/UneffectRequest, where FOREST_TEARS is defined) makes the only location where FOREST_TEARS is actually found. Any chance, makuta, that you have Auto-remove malignant status effects enabled? Try disabling that and seeing if it works better. Or, better yet, try using Bale's awesome Universal Recovery Script. That should do a better job of not wasting meat by buying restoratives when you already have them on hand. Just be sure, if you do use the UR script, that you disable the preference I mentioned above... Auto-remove malignant status effects overrides your recovery settings to an extent, and can confuse you regarding what should happen.
 

Bale

Minion
Please turn off auto-remove malignant status effects. You'll find it in Preferences -> General. It does some things I'm not fond of. As Theraze mentions, Universal Recovery should remove the status effects you're really concerned about in a more reasoned fashion. Though UR might still purchase forest tears, it would only do so if the current mall price of forest tears is less than the current mall price for tiny houses. That would require forest tears to drop below 214 meat which isn't frequent, but it can happen.

If you have mall access then I'm afraid that Universal recovery is concerned about what you could sell those 900 tiny houses for if you put them in the mall. Hence if there is anything cheaper it will purchase those items. It kinda assumes you'd mall expensive stuff and buy cheap stuff. If that is not the way you roll, then I apologize and suggest that Universal recovery is not for you.
 

roippi

Developer
Code:
		boolean forestTearsClearable =
			name.equals( "Beaten Up" );

		if ( forestTearsClearable && InventoryManager.hasItem( UneffectRequest.FOREST_TEARS ) )
		{
			return "use 1 forest tears";
		}

Mafia will use a forest tears to uneffect beaten up if and only if you already have a forest tears. I humbly submit that this is user error, despite the OP's lamentations at the utter impossibility of that scenario. The user was using UR. This was not even a bug in UR, simply the user not understanding how it values restoratives.

As a note, in the intervening almost-year since this report, Bale has added the ability to consider items in inventory as free, if that is required.

Marking not a bug
 

Veracity

Developer
Staff member
KoLmafia will already use a Tiny House - if you have one or can buy one - to remove Beaten Up (and the other effects it will clear). It checks for Forest Tears first. Revision 10360 makes it check for the Tiny House first.
 

Veracity

Developer
Staff member
It even buys more when I run out of tears, even though I have over 900 Tiny Houses at my disposal.
I actually don't believe this. The previous code was willing to use forest tears, if you had them in inventory, but it was only willing to actually BUY a tiny house or a SGEE.

That is what roippi said, and he was right.
 
Top