CounterChecker: Wormwood, Semi-rares, Dance Cards and more

Very soon now.

37 times 7 times 2 is a heck of a lot of adventures. Especially when I also have to test failure conditions.
 
Last edited:
Though I am considering adding a zlib variable BaleCC_LightsOutBossAutomated which will allow the fights to be automated by Mafia if it is set to true. Does this sound like a good idea? Any way to make it better?

Two things here. One, maybe automate it based on the Lights Out automation being set to true instead of skip and the next location being available, and if so then using the total turns played rather than the normal counter checker (if possible) to make it start... if we can't work that way and it's best 'started' through BBB instead when we don't actually have a counter, then I'd still probably want main automation based on the choiceadv setting, so that users can opt out (or in) easily.

Second, I like the idea of being able to automate on a variable. If you want to automate, go for it, but if you'd rather make sure that you win, you can do that as well. Also, even if you have Manuel, you still need to win the first time to get the accurate info. :)
 
One, maybe automate it based on the Lights Out automation being set to true instead of skip and the next location being available, and if so then using the total turns played rather than the normal counter checker (if possible) to make it start...
I have no idea what this sentence means. Sorry. Are you suggesting that it should work even if Spookyraven Lights Out counters are off? It manifestly cannot do that since KoLmafia won't run a counter script unless there is a counter.
 
The second part of the sentence, yes... which is why I said that it might not be able to function like that in a counter script and might be a betweenbattle/afteradventure script thing instead.

The first part, detecting whatever the Manor1 page's Lights Out choice is set to. If it's set to skip or show in browser, don't automate it for the user. If it's set to continue the quest, then automate it for them.
 
The first part, detecting whatever the Manor1 page's Lights Out choice is set to. If it's set to skip or show in browser, don't automate it for the user. If it's set to continue the quest, then automate it for them.

Oh. I understand that, but... well... considering it doesn't take an adventure to do this and needs to explicitly be enabled with the command spookyraven on I figure it should be done even if someone forgot to set the choice adventure. Needing someone to turn on two different switches is mean.


I have just updated CounterChecker to handle "Spookyraven Lights Out" counters. By default, the boss fight will not be automated. You need to set BaleCC_LightsOutFightAutomated =TRUE if you want it to happen using mafia's default fight animation. Also, the script will normally try to complete Stephen's path first, but if you haven't unlocked the basement yet it will do Elizabeth's adventures in the meantime. It's flexible that way. If you want it to actually prefer Elizabeth, then change the BaleCC_LightsOutPreferred accordingly. In summary:

  1. First use command: spookyraven on
  2. If you want to automate the boss fights use: zlib BaleCC_LightsOutFightAutomated = true
  3. If you want to choose Elizabeth's path first use: zlib BaleCC_LightsOutPreferred = ghost of Elizabeth
 
Last edited:
I added the following code to my CounterChecker.ash, in the expensive_semi function, in order to have it consider the Haunted Storage Room as a semi-rare target location. If I set up an appropriate outfit called "copyable", it figures the expected value of the item that would be dropped by the mirror if one is wearing that outfit (well, assuming that "PVPable" is the same thing as tradeable and discardable.... I couldn't find any confirmation of that.). I also added some code to get_semirare(), to do the actual switching of the outfit when adventuring. One thing I didn't do is to update the status message that is displayed at the end of expensive_semi(). It still expects an entry for the winning location in semi_rare. But that's just cosmetic, and doesn't really bother me, personally. Also, you may notice a "FIXME" comment in the code below. None of my "copyable" outfits have more than one of any item, so again it doesn't bother me.

Also, I should take a moment to note that the long-forgotten necklace from The Wreck of the Edgar Fitzsimmons currently appears to have the best value in the mall, but it is absent from CounterChecker.ash. The giant pearl from An Octopus's Garden is also missing from CounterChecker, but that's probably not a big deal if one assumes that it is worth its autosale value of 12k, since that's well below several other semi-rares.

Anyway, here's the code I wrote for the Storage Room:

Code:
        static string copyableOutfitName = "copyable";
        if (
                have_outfit(copyableOutfitName)
                && last_rare != $location[The Haunted Storage Room]
                && canadv($location[The Haunted Storage Room])
        ) {
                int copyableItemCount = 0;
                float piecesTotalPrice = 0.0;
                foreach index, piece in outfit_pieces(copyableOutfitName) {
                        if (item_amount(piece) + equipped_amount(piece) < 1) {
                                //FIXME:  correctly handle outfits with duplicate items.
                                copyableItemCount = 0;  // force failure, since we can't equip the outfit.
                                break;
                        }
                        if (!piece.tradeable || !piece.discardable) {
                                continue;
                        }
                        copyableItemCount = copyableItemCount + 1;
                        if (historical_age(piece) > 1 || historical_price(piece) == 0) {
                                mall_price(piece);
                        }
                        piecesTotalPrice = piecesTotalPrice + historical_price(piece);
                }
                if (
                        5 <= copyableItemCount
                        && expensive < piecesTotalPrice / copyableItemCount
                ) {
                        best = $location[The Haunted Storage Room];
                        expensive = piecesTotalPrice / copyableItemCount;
                }
        }
 
Also, I should take a moment to note that the long-forgotten necklace from The Wreck of the Edgar Fitzsimmons currently appears to have the best value in the mall, but it is absent from CounterChecker.ash. The giant pearl from An Octopus's Garden is also missing from CounterChecker, but that's probably not a big deal if one assumes that it is worth its autosale value of 12k, since that's well below several other semi-rares.

I decided not to include any of the underwater semi-rares because of all the unusual things to consider such as the difficulty of breathing underwater and the possibility that it will require 2 turns instead of 1.

Your consideration for the Storage Room is interesting, but there are so many weird things involved that I think I'll skip it. Though it is good you posted that so that other people who like the idea can make use of it. Thanks to SVN you don't have to worry about maintaining your changes when I update CounterChecker.
 
I installed this script and set it as my counter script, but I have no idea how to run or use it. What do I do to get it to grab the most expensive Semi-Rare?
 
I installed this script and set it as my counter script, but I have no idea how to run or use it. What do I do to get it to grab the most expensive Semi-Rare?

As long as you are not in hardcore/ronin it will do that automatically.

If you want it to do that even during hardcore/ronin (which is ascension un-optimal), then you'll need to configure it with "zlib BaleCC_SrInHC = true"
 
So it looks like things are set up to hunt for Stephen etc. correctly but no progress is being made. A lot of automation on my part but it looks like the counter script is trying to adventure but the choices are not being made correctly. Things I should check tomorrow when I presumably can pay closer attention?
 
I'm sure it should work since I've used it... I wonder what could be screwing it up? You opened the manor? You have set spookyraven on ?

Things I should check tomorrow when I presumably can pay closer attention?

Yes.

Did you check your session log?
 
I'm sure it should work since I've used it... I wonder what could be screwing it up? You opened the manor? You have set spookyraven on ?



Yes.

Did you check your session log?

I have seen it work at least once and on this character, previous ascension.

[1524] The Haunted Billiards Room
Encounter: Lights Out in the Billiards Room
Took choice 900/1: unknown
choice.php?whichchoice=900&option=1&pwd
Encounter: Lights Out in the Billiards Room
Took choice 900/2: unknown
choice.php?whichchoice=900&option=2&pwd
Encounter: Lights Out in the Billiards Room
Took choice 900/2: unknown
choice.php?whichchoice=900&option=2&pwd

Occurs 1487, 1524, 1635, 1672.

I looked at the script and the various preferences and things seem to make sense.

I am running BBS.

I wonder if CC and BBS are in conflict about the choices in the Billiard Room?
 
New day. I disabled BBS just in case and still got

[1709] The Haunted Billiards Room
Encounter: Lights Out in the Billiards Room
Took choice 900/1: unknown
choice.php?whichchoice=900&option=1&pwd
Encounter: Lights Out in the Billiards Room
Took choice 900/2: unknown
choice.php?whichchoice=900&option=2&pwd
Encounter: Lights Out in the Billiards Room
Took choice 900/2: unknown
choice.php?whichchoice=900&option=2&pwd

I'll try and do it in the relay browser next...
 
Went to the Billiards Room at the right time in the relay browser and the hints were for the right choices so I took them. 37 turns later it told me I still should go to the Billiards room. I ignored that and when to the next step, it worked and now the progress shows that it and the wine cellar have been completed. Hypothesis - something filed to set that the Billiards room had been completed and so the script kept trying.
 
Another little thing... because the adventure isn't captured, automated adventure with conditions will make mafia to abort. I've changed my own copy to do this instead:
Code:
		(!adv1(hauntedLoc, 0, ""));
This makes it not abort and automation is much smoother.
 
Another little thing... because the adventure isn't captured, automated adventure with conditions will make mafia to abort. I've changed my own copy to do this instead
I was wondering what that was, but I failed to see the obvious pattern.
 
Back
Top