Bug VampOut is broken due to circular dependency


When I try to vamp out (using plastic fangs), I recently get the following error:

Putting on plastic vampire fangs...
Equipment changed.
Encounter: Interview With You
ChoiceAdventure # 546 has no Options configured
Missing ChoiceAdventure Options: (546)
Preference _interviewVlad changed from false to true
Encounter: Interview With You - Goal your own black heart
Action: Visit The Masquerade
Unexpected error, debug log printed.

As you can see from the error message, this error message in ChoiceAdventures.java is triggered, which means the ChoiceAdventure was created with an empty list of options. However, the only place where this ChoiceAdventure is created, is further up in the file, and there the list of VampOutManager.VampOutGoals is passed as options.

The ChoiceManager refactoring seems to have introduced a circular dependency: in order to create the ChoiceAdventures class object with its static members, the VampOutManager class object with its static members must be created. But that needs the Options constructor from the ChoiceAdventures class unit.

Eventually, this leads to the list of Options being empty at the time the ChoiceAdventure instance is created.

I have not tested this, but a proposed fix is to move the Option class out of the unit where all the ChoiceAdventures are created. I tested it and it works. I can prepare a PR, but I don't really know how you would want to name the class, and whether the Spoilers class should also be moved.
Last edited: