Issue Data
|
Issue #21552: RRKickOut quest fails to make Railroad NPC's not essential
When attempting to wipe out the Railroad after completing the main quest with them, the quest RRKickOut does not appear to successfully set senior NPC's to be non-essential, making it impossible to kill them all.
The fragment from stage 100 is supposed to set NPC's like Desdemona to be non-essential. I tweaked this fragment slightly: based on a debug.trace I added it seems the script thinks that Desdemona is not essential both before and after it attempts to set her to not essential. My explosive combat shotgun disagrees! I have attached my modified fragment, papyrus log and a save to illustrate the issue. The save is not 100% clean: if the problem does not have a solution obvious to someone with more experience than me, I can spend the time to create a proper clean save - that might take a few hours given that it requires completing much of the main quest line. Attached Files: QF_cnwarReinforcementQuest_03004C50.psc Papyrus.0.log Save4_9546F5FBM416C696365_RailroadHQ01_030210_20161119192002_203_2.fos |
That quest fragment you attached does not appear to be related to your issue. I also don't see any of the modifications you mentioned.
I think I have diagnosed the problem and have a solution. During the Railroad version of the Nuclear Option Desdemona, Deacon, Doc Carington and Tinker Tom are set to essential. The quest RRKickOut, called after betraying the Railroad in some way, includes lines (around lines 40-50) clearly intended to set all senior Railroad figures to not essential. For example:
Alias_Desdemona.GetActorRef().GetActorBase().SetEssential(FALSE)
However, the GetActorBase() seems to stop the game actually setting these actors to non-essential. I don't yet know enough to understand why that is (I found it by noticing that the code to make them essential in the first place didn't have a GetActorBase() part), but getting rid of GetActorBase() seems to work: in the (vanilla except for the unofficial patch) save attached running the base game script Desdemona, Tinker Tom, Deacon and Carington cannot be killed, whereas running a modified fragment (also attached) they can be.
My changes are on lines 38 to 314 and hopefully have clear enough comments (most of it is debug.trace messages I used to diagnose the problem, which can be removed for the actual patch). I have also attached a log file from loading the save game and attacking the Railroad.
Hopefully this is more helpful than my first submission!
Attached Files:
Save18_74C79D27M7A7A7A436C65616E536176655261696C726F6164_RailroadHQ01_000424_20161124041801_202_2.fos
Papyrus.0.log
QF_RRKickOut_0016C207.psc
Alias_Desdemona.GetActorRef().GetActorBase().SetEssential(FALSE)
However, the GetActorBase() seems to stop the game actually setting these actors to non-essential. I don't yet know enough to understand why that is (I found it by noticing that the code to make them essential in the first place didn't have a GetActorBase() part), but getting rid of GetActorBase() seems to work: in the (vanilla except for the unofficial patch) save attached running the base game script Desdemona, Tinker Tom, Deacon and Carington cannot be killed, whereas running a modified fragment (also attached) they can be.
My changes are on lines 38 to 314 and hopefully have clear enough comments (most of it is debug.trace messages I used to diagnose the problem, which can be removed for the actual patch). I have also attached a log file from loading the save game and attacking the Railroad.
Hopefully this is more helpful than my first submission!
Attached Files:
Save18_74C79D27M7A7A7A436C65616E536176655261696C726F6164_RailroadHQ01_000424_20161124041801_202_2.fos
Papyrus.0.log
QF_RRKickOut_0016C207.psc
Likely nobody cares after all this time, but as indicated, this issue is caused by the improper mixed use of SetEssential() on both Actor and ActorBase records. When called on an Actor reference, SetEssential() overrides any further attempts to change the flag on an ActorBase, so it must always be called on the reference once it's done the first time.
So now folks can finally go kill these people in their games if they so choose once they're kicked out of the Railroad.
So now folks can finally go kill these people in their games if they so choose once they're kicked out of the Railroad.
Showing Comments 1 - 3 of 3