I'm the guy who built HB's Wasteland Tent, and I'm looking to upgrade it to accomodate companions beyond the vanilla ones. These were easy, since they're present in the FalloutNV.esm.
I posted this over at the Nexus, but am getting no replies, so please forgive me for the cross-posting.
The issues and questions revolve around a characteristic of the Havoc door objects; when a door is moved, its' location is not updated by the engine; believe me, I've tried several different ways. Hence, the Wasteland Tent doesn't use a door; just a couple of travel markers and the MoveTo function (for both the player and the vanilla followers subject to some checks to make sure that they're actually following, not waiting and not disabled). In other words, the Tent model itself is an activator.
As stated above, I'd like to be able to support other companions, such as Fake Plastic Trees EDE and GurkMeja's Sunny Smiles Companion (and a number of others recently uploaded to Nexus).
One of the things I've tried to do in preparation for this is to generalize the code which tests follower/waiting/disabled status before moving a follower into or out of the tent after the player. I did this with a formlist and NVSE to loop over and process it. It doesn't work, even for the vanilla followers, apparently because the engine has no way of knowing that an aliased reference to a reference (set rFollower to ListGetNthForm VanillaFollowerList, index). When you attempt to test variables through rFollower, the engine has no way of knowing that rFollower actually points at a follower with a script which contains variables like Waiting.
I've only been able to make it work for vanilla followers by duplicating the same conditional code block for each one. So, if generalizing this code doesnt' work for vanilla followers, it seems to bode ill for others not even in FalloutNV.esm.
Here's the code which doesn't work:
label 0 ; Loop Init set FollowerCount to ListGetCount WSTVanillaFollowersList set ListIndex to 0 set rFollower to 0 label 1 ; Loop Top set rFollower to ListGetNthForm WSTVanillaFollowersList, ListIndex if ( ( rFollower.Waiting == 0 ) && ( rFollower.GetInFaction FollowerFaction == 1 ) ) rFollower.Disable rFollower.MoveTo WSTEntryMarker rFollower.Enable endif set ListIndex to ( ListIndex + 1 ) if ( ListIndex <= ( FollowerCount - 1 ) goto 1 endif label 2 ; Loop End
And this code does work; easy to see why I'd rather do the code above than this:
; Boone if ( ( CraigBooneREF.Waiting == 0 ) && ( CraigBooneREF.GetInFaction FollowerFaction == 1) ) CraigBooneREF.Disable CraigBooneREF.MoveTo WSTEntryMarker CraigBooneREF.Enable endif ; Cass if ( ( RoseofSharonCassidyREF.Waiting == 0 ) && ( RoseofSharonCassidyREF.GetInFaction FollowerFaction == 1) ) RoseofSharonCassidyREF.Disable RoseofSharonCassidyREF.MoveTo WSTEntryMarker RoseofSharonCassidyREF.Enable endif ; Veronica if ( ( VeronicaREF.Waiting == 0 ) && ( VeronicaREF.GetInFaction FollowerFaction == 1) ) VeronicaREF.Disable VeronicaREF.MoveTo WSTEntryMarker VeronicaREF.Enable endif . . .
Anyone have any ideas as to how I might:
A) get a door object to actually update its world location if moved (with this, I could remove all special-case code),
or
B) Generalize the entry/exit code in such a way as to make it possible to test both vanilla followers and any others I might add to the list in the course of play?
I've been fighting this for weeks, now; if anyone has any workable ideas, I'd be most grateful.
Thanks!
-HB