![]()
|
|
First, I'll have to split this. The BoS soldier is an entirely different issue than the railroad agent, so the latter will have to go to another ticket.
This BoS soldier is enable parented, the enable parent is enable parented itself and linked from a trigger that runs a script to enable all of its linked sub-level stuff when the player enters. This is to spawn more enemies (BoS, although the script on the triggers suggests that it was once conceived to also spawn more synths), depending on your actions during the battle, If you enter the cellar directly, there will be no extra spawn, but if you run around in the area, you may hit up to seven triggers that enable more enemies. Now, those triggers control their sub-level refs only by the script; they are not their enable parents. They are themselves linked to an enable parent, and these and all other sub-level BoS enable parents are finally controlled by a top level enable marker. Inst302, which is the quest supposed to handle the post-battle cleanup, only disables that top level marker. Anything linked from the triggers will stay enabled because it was enabled by a script, and a script is also needed to disable it again.
I fixed this as follows:
(1) A cleanup function has been added to BHExtBoSEnable (that's the script on the triggers).
(2) To start the cleanup, a custom script has been added to Inst302. This script sends a custom event from a function that is now called by the respective fragments on Inst302 when the top level marker is disabled.
(3) BHExtBoSEnable has been further modified to register for the custom event from Inst302 in its OnTriggerEnter event. That is, it will catch the event sent by Inst302 later on (but only if the trigger has actually enabled something) and then clean up all of its stuff .
(4) BHExtBoSEnable needed a new property (a pointer to the new script on Inst302) for that purpose. I filled this property on the base object - which is also named BHExtBoSEnable - so the individual trigger refs did not need to be touched.
I fixed this as follows:
(1) A cleanup function has been added to BHExtBoSEnable (that's the script on the triggers).
(2) To start the cleanup, a custom script has been added to Inst302. This script sends a custom event from a function that is now called by the respective fragments on Inst302 when the top level marker is disabled.
(3) BHExtBoSEnable has been further modified to register for the custom event from Inst302 in its OnTriggerEnter event. That is, it will catch the event sent by Inst302 later on (but only if the trigger has actually enabled something) and then clean up all of its stuff .
(4) BHExtBoSEnable needed a new property (a pointer to the new script on Inst302) for that purpose. I filled this property on the base object - which is also named BHExtBoSEnable - so the individual trigger refs did not need to be touched.
Comment #2 Apr 24, 2021 5:24 pm
Edited by Sclerocephalus on Apr 24, 2021 5:28 pm
Showing Comments 1 - 2 of 2