Duplicate/incorrect/incomplete recipes in concoctions.txt
I recently wrote a script to find missing discoveries, including different ways of making the same item. This entailed a lot of regular expressions, to put it mildly. While testing, I found a variety of discrepancies, all of which I am willing to fix once I establish a fix is desired.
- There are exact duplicates for "Humpty Dumplings”, "loaf of soda bread”, "magical baguette”, and "standard-issue cupcake”.
- There are duplicate recipes for “green beer” using “MANUAL” instead of “SSPD”, with the note that there may be unexpected holidays. That is a really bizarre justification, considering that a similar argument could be made for any requirement. I recommend removing these “MANUAL” duplicates.
- The recipe for “meat stack” should be “ACOMBINE”, not “COMBINE”. The wiki says this was not always the case, hence the inaccuracy.
- “Eldritch Intellect” requirements are not implemented. This is the only issue likely to affect most players. Having gone through the code extensively to make my script, I think I can easily implement an “ELDRITCH” requirement for the recipes.
- “brick of sand” and “sandcastle” should have “NODISCOVERY”.
I’ll put together a patch for these changes once I get confirmation they would be accepted.
Last edited by Saklad5; 04-17-2019 at 03:15 PM.
Iím going to go ahead and start working on a patch.
This patch makes all of the changes I delineated above, and corrects a few typos in the comments of the code: Recipe Fixes.patch
Incidentally, I pointed out a handful of duplicates some time back but never actually fixed them.
(mostly the same, but also with the warbear hoverbelt)
I'm not sure I agree with your assessment re: green beer and SSPD. Many of the other requirements are purely a function of current player state (e.g. skill-based or item-based) and won't be met because of some arbitrary decision by TPTB (although the last unexpected SSPD was in 2009, according to the wiki).
r19178 (other than the green beer changes; I don't mind if Veracity or lost want to override me on that front... but I don't think it's actively harming anything.)
The thing is, the duplicates are marked as MANUAL. That means KoLmafia ignores them entirely, right? If so, what exactly does having them affect? KoLmafia won’t stop players from using the relay script to craft, even if it thinks it is impossible.
Originally Posted by heeheehee
It doesn’t matter too much to leave them either, as you pointed out. It was just annoying when I was testing my script and coming up with more discovered recipes than KoL said I had, because of the duplicates. That’s how I found all of these, in fact.
Last edited by Saklad5; 04-17-2019 at 11:42 PM.
Originally Posted by heeheehee
Originally Posted by Saklad5
Is your script something that would easily be adaptable to the test directory code in the Ant "test" target? Seems like it's right in line with where that is going.
Possibly. It’s written in ASH, but there are Java equivalents of most functions from what I can tell. A substantial portion of it is simply replicating the existing code in ConcoctionDatabase.java, though, so I don’t think it would be worth adapting.
Originally Posted by MCroft
Besides, it doesn’t recognize things as inaccurate so much as make them obvious.
I tested the discovery-checking in my script by counting the number of discovered recipes in each category, then comparing that with the numbers KoL itself gives in the Quest Log. Duplicates got counted each time, so the number was higher than it should be. Since there aren’t actually that many recipes that make the same result, I temporarily modified my script to print the names of items that had multiple discovered recipes, then used the Find tool in-browser to narrow down the culprits.
As for the other issues, the ultimate goal of my script (well, a different script using the first script as a library) was to show undiscovered recipes that I could make. So it exposed those problems too.
One thing that I want to eventually do with the test structure is set up ASH integration tests. Basically, provide .ash files and golden files (i.e. expected output), possibly also with sample inputs.
Other than that, the test directory is currently a staging ground where basically anything could happen; right now it just contains a handful of proof-of-concept tests to hopefully inspire other devs.