Jump to content

NPC's Inventory resetting


PJMail

Recommended Posts

Respawning (upon cell reset) and resetting (ActorRef.Reset()) always reset a generic NPC's inventory.

 

Generic NPCs that aren't meant to be respawned upon cell reset such as settlers (so Actor >> flag "Respawn" is unchecked) don't reset their inventory... most of the time. But sometimes, provisioners change their outfits on the road for some reason. I don't know if it's because the inventory of WorkshopNPC is templated from EncWorkshopNPCMaleFarmer01Template whose Default Outfit (WastelanderOutfit) is actually a Leveled Item (that contain further Leveled Items) (so if it's a bug at all or "by design") but you can prevent them from doing so by equipping an armor or weapon on them in the trade menu. I don't know why it makes provisioners' inventory "fixed" but it seems to work.

 

Oh and on "generic NPCs", I meant Leveled Characters. So the ones that (unlike unique actors) don't have a fixed ActorBase because the game creates it for them. ActorRef.GetLeveledActor() should return its FormID (starts with "FF" but it's not a RefID). As for unique actors, I've never seen their inventories to get reset.

Edited by LarannKiar
Link to comment
Share on other sites

Thanks LarannKiar - great information!

Doesn't explain why a user found the inventory was reset on my "Unique" no-respawn Vertibird NPC.

Hopefully not another wierd 'Vertibird' kludge by Bethesda coming to bite me...

 

And your mods are great! I use a couple of your "as a settler" mods (particularly the vendor NPCs).

Your "which settler which bed" one I used for a while to try and fix happiness until I read you explanation of bed ownership (now know why my double bunks didn't help).

 

You clearly understand how Settlers work.

Link to comment
Share on other sites

Thanks. :smile:

 

As for the Vertibird, I don't know either. Normally, NPCs get reset when the cell of their editor location gets reset. MyEditorLocation.Reset(), MyEncounterZone.Reset(), MyEditorCell.Reset() should trigger the cell reset on next cell "OnLoad". Interestingly, I've seen generic NPCs to get reset because they were currently in a cell that just got reset but it happened very rarely and exclusively with non-unique actors. (Not sure if it's related because I didn't test it thoroughly to see why).

 

If an NPC gets respawned unexpectedly, these are the few possible workarounds you could try:

 

- moving the NPC to an unreachable interior holding Cell whose Encounter Zone is set to "No Reset" in the editor (so their VertibirdRef.MoveToMyEditorLocation() would actually move them to this cell), and

- as sometimes the Creation Kit doesn't do it automatically, in FO4Edit >> ACHR record (NPC actor reference record)

- clearing any "XLCN - Persistent Location" or,

- if the holding Cell belongs to a Location that has a "No Reset" Encounter Zone, setting that location as Persistent Location

- alternatively, instead of moving the NPC to a holding Cell, you can also try setting the "No Reset" Encounter Zone on the ACHR form in FO4Edit at "XEZN - Encounter Zone"

 

One of the above workarounds should fix the "NPC resetting but they shouldn't be" issue.. they always did for me. (True, none of these NPCs were Vertibirds).

Edited by LarannKiar
Link to comment
Share on other sites

Unfortunately the Vertibird is a Workshop creation so has no 'editorLocation' (does it?).

And it is just left where you last left it (it never moves to an interior cell).

I assumed as it was unique it would not be governed by the encounter zone of the location it was left in. Like any companion.

However it does have a 'connection' to the settlement it was created in (but settlements are normally 'noreset' zones).

 

Strange.

Link to comment
Share on other sites

  On 4/8/2023 at 12:36 PM, PJMail said:

Unfortunately the Vertibird is a Workshop creation so has no 'editorLocation' (does it?).

And it is just left where you last left it (it never moves to an interior cell).

I assumed as it was unique it would not be governed by the encounter zone of the location it was left in. Like any companion.

However it does have a 'connection' to the settlement it was created in (but settlements are normally 'noreset' zones).

 

Strange.

Not sure if it's relevant but are you referring to the reset inventory bug caused by the papyrus function addItem() ? are you adding anything to the vertibird inventory in script ?

PS

I only built one Vertibird but i don't remember experiencing a reset inventory bug with FPV. I stashed some mini nukes and other heavy objects in it for months and still there last time i checked.

Edited by lee3310
Link to comment
Share on other sites

  • 3 months later...

If you don't mind adding a dependency, there are ways SUP_F4SE can solve this for you. Script extender plugins don't cause conflict and this one is so useful.

 

It has file IO and functions like "GetFormArrayFromFile" so if there's a particular npc that must have some specific inventory, you can store that on file and populate his inventory on init.

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...