Revision 109 has an experimental feature: semirare farming using Lucky Lindys.
Looks to me like there are a variety of semirares which are cost effective to farm. Probably not if you are using fortune cookies; that is a crappy food that yields a single adventure and it could give you up to 3 numbers to test. Lucky Lindys, perhaps. You have to be in a clan whose VIP room has a speakeasy with that drink.
I might be persuadable to add fortune cookie support, although I wouldn't use it; the new code goes after the "first Fortune Cookie Counter" and only consumes something if there is no longer a "first Fortune Cookie counter" active, so it should just work even if there are multiple counters.
So, this would work:
// *** Semirare hunting ***
// There are two ways to predict when a semirare is available:
// - eating a fortune cookie (a crappy 1-fullness food) will give you 3 lucky numbers. One of them will be the semirare number
// - drinking a Lucky Lindy (a good 1-drunk booze) will burp out the exact number of adventures to the next semirare
// It is not cost-effective to use fortune cookies; their adventure yield is too low and they are not guaranteed to give exactly one valid number
// Lucky Lindy may or may not be cost-effective; they give from 2-4 turns and give the required number.
// This script will optionally farm semirares using Lucky Lindys
boolean should_hunt_semirares = define_property( "VMF.HuntSemirares", "boolean", "false" ).to_boolean();
// In order to hunt semirares, you must specify at least two locations
// to visit; since you cannot collect the same semirare twice in a row,
// we must alternate.
// There are a many locations to choose from. This script is very
// simple-minded in how it handles them: it assumes that you have access
// to all configured locations, that there are no special requirements
// to adventure there (such as visiting The Sea, for example), and if
// the semirare leads to a choice adventure, you have configured the
// desired choice.
location_list semirare_locations = define_property( "VMF.SemirareLocations", "location", "", "list" ).to_list_of_location();
to cycle through those three locations collecting semirares.
set VMF.SemirareLocations="The Sleazy Back Alley|The Outskirts of Cobb's Knob|Cobb's Knob Harem"
As noted in the comment, the script will not suit up to go to The Sea or the 8-Bit-Realm, nor will it verify that you even have access to a location. I could easily enough do the former, but am not interested in writing (or even importing) code to do the latter.
I tested this today and it collected 2 semirares (and got the counter for the first one tomorrow) as well as busting every ghost, so my code to have multiple timed things going on seems to work.
Let me know if you see glitches, whether or not you using this feature.