One bug down! And reflections about developing in LE and SE...
Added 2022-09-24 06:59:17 +0000 UTCHey folks!
As it turns out, LE and SE evidently evaluate when an Actor Is3DLoaded() or not differently!
In LE, if they're not in a loaded cell (e.g. they're outside while a player is in an interior cell), then Is3DLoaded() will return False.
However, in SE, it's completely different! You can have an Actor in an exterior cell just hanging out while the player goes inside, and Is3DLoaded() will still return True! Weeeeeird!
For those that are curious, I was able to get around it with a simple trick:
SafeParentCellLoadedCheck(TempObjRef.GetParentCell())
Bool Function SafeParentCellLoadedCheck(Cell CellArg = None)
If CellArg == None
Return False
EndIf
Return CellArg.IsAttached()
EndFunction
I'll have to test and then back-propagate this into the next LE release, but that'll be later down the road.
It also brings into question why I still keep doing the base build stuff in LE. Honestly, I have far more confidence in the tool simply because Bethesda has stopped messing with LE. However, it does make porting things over a chore when unexpected, undocumented engine differences like this crop up.
Part of me wants to just pivot over and only work in SE from now on; but the other part realizes that I'll still be at the mercy of whatever other changes Bethesda tries to force down our throats without an untouched environment to play in. It's a catch-22 for sure, but something that I need to mull over more. I'm happy to hear the thoughts of anyone else here.
The next (and hopefully last) hurdle is just getting the Actors to follow their Combat Packages as they should; again, they all behave in LE, but things are a little wonky in SE. I think I'll have to re-check the Conditions to make sure things fire off in the correct order...