Fix exception thrown during Lycanthropy transition #2565
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
A user on Discord sent me this error during gameplay.
This error is easy to reproduce.
diseaseplayer werewolf
to get Lycanthropy InfectionSo, during
EntityEffectManager.DoMagicRound()
, we have this loopFor the
LycanthropyInfection
effect,MagicRound
updates the disease progress, until 3 days have passed and the dream sequence has been watched. This will callDeployFullBlownLycanthropy()
, which is implemented byWereboarInfection
andWerewolfInfection
as thisThis is all happening still in the middle of the foreach loop above. As you can see, we're assigning a new bundle to the player's effect manager, which modifies
instancedBundles
if the bundle has any "live" effects (which Lycanthropy curse does). Modifying collections during iteration is not supported, so the error occurs.While the error does not break anything permanently as far as we know, it still prevents other effects from being processed for the rest of this magic round. This could happen more often with mods.