Jump to content

Fixing the reanimate thrall disintegration bug


SSL

Recommended Posts

The bug:
 
On passing through load doors, reanimated thralls (zombies) will often disintegrate into an un-lootable ash pile, or even fail to come through the door at all. Sometimes a zombie will come through a load door, only to turn around and go back through it, disappearing forever.
 
The fix:
 
Zombies have all effects stripped when passing through load doors, which ends the ReanimateSecondaryFFAimed effect and prematurely triggers distintegration. This is prevented by removing the OnEffectFinish handler from the ReanimateAshPile script. Handling of this event is redundant given that the OnDying event consistently triggers when any reanimate spell terminates or the zombie is killed, so removing it seems to pose no issues. Removing the finish handler prevents the vanilla ash pile effect from working properly. Applying a modified version via scripted magic effect fixes this issue.

 

The script re-applies the reanimate visuals, ash pile effect, and forces the zombie to pathfind and/or teleport to the player. It also dispels the Dead Thrall spell from the player when a thrall dies. All of this seems to work in the testing that I have done so far. The only thing left to implement is the Dark Souls perk fix. Dark Souls fix applied as well; zombies will retain their health bonus after load doors.

My questions:

Is this a fix that is within the scope of the Unofficial Patch? And is this considered a good solution that will be compatible with other mods? Right now I'm using the "Apply Reanimate Spell" perk entry point, but maybe it would be better to just add my script that fills the quest alias to every playable reanimate spell in the game. I went ahead and added a new magic effect to the vanilla renamiate spells as it seems that only one instance of any "Apply Spell" perk entry can apply.

Link to comment
Share on other sites

Hmm. I'm not comfortable with the idea of fundamentally altering the ReanimateAshPile script to remove part of it just on the basis of zombies not passing a load door intact. There would need to be a lot more wrong with the way things are done than this to warrant what might be a large intrusion into how things are expected to behave.

Link to comment
Share on other sites

Hmm. I'm not comfortable with the idea of fundamentally altering the ReanimateAshPile script to remove part of it just on the basis of zombies not passing a load door intact. There would need to be a lot more wrong with the way things are done than this to warrant what might be a large intrusion into how things are expected to behave.

 

I recommend reviewing my code, and the OP. I realized that simply modifying the script would not be sufficient and that creating a second script with the necessary changes is the safest method. The final itereation of my fix only changes which effects are applied by the playable reanimate spells. The ReanimateAshPile script and ReanimateSecondayFFAimed effect are not changed, and thus mods relying on them will not be affected. The behavior of the reanimate spells is not changed, so mods relying on that behavior should not be affected. The playable spells themselves are not even used anywhere by other game assets, so I'm not sure what risk there would be in changing them.

 

Incidentally, the expected behavior of the ReanimateAshPile script is fundametally wrong. It should act purely as a listener for the death event and respond with the desired behavior. Instead, the OnEffectFinish listener means that it takes an active - and redundant - role in terminating a reanimate spell. This conflict of responsibility is what makes the ash piles unlootable when a thrall is prematurely disintegrated; more than that, it's the cause of this bug in the first place. It's just poor design.

 

You might want to check out my bug report concerning the previous non-fix to #919. My solution to this problem takes care of that one, too.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...