Jump to content

Base game workshops missing WorkshopLinkContainer


SKKmods

Recommended Posts

Exploring the opportunity to link all workshops to a central storage container (already done all workbenches) I am finding inconsistency in the WorkshopLinkContainer LinkedRef implementation that gets me to the default workshop container.

WorkshopContainerRef[iIndex] = (WorkshopRef[iIndex].GetLinkedRef(pWorkshopLinkContainer) as ObjectReference)

This works for all player activated base game settlements except the following, where looking at the in-world refs finds the WorkshopLinkContainer LinkedRef is applied to the container pointing back to the workshop, rather than the workshop pointing to the container:

 

;Sommerville 001E81EA
;Covenant 000E0505
;RedRocket 00054BAE
;BostonAirport 000B3506

 

Given that I'm cycling through workshops registered with the WorkshopParentScript on fresh no mods vault exit savegames, apart from hard coding the backwards container refs (yuck):

 

Is this brokenness known / universal across FO4 release versions and savegames ?

Are there any other cunning approaches to dynamically get them ?

 

Reference for later

 

Workshop 0 of 35 [workshopscript < (0009B1DB)>] WorkshopLinkContainer [ObjectReference < (0009B1D6)>] ContainerRefsToMe 1
Workshop 1 of 35 [workshopscript < (0009B19D)>] WorkshopLinkContainer [ObjectReference < (0009B1A0)>] ContainerRefsToMe 1
Workshop 2 of 35 [workshopscript < (001654BD)>] WorkshopLinkContainer [ObjectReference < (001654CA)>] ContainerRefsToMe 0
Workshop 3 of 35 [workshopscript < (0016D28E)>] WorkshopLinkContainer [ObjectReference < (0016D28B)>] ContainerRefsToMe 0
Workshop 4 of 35 [workshopscript < (00161F4B)>] WorkshopLinkContainer [ObjectReference < (0016557C)>] ContainerRefsToMe 0
Workshop 5 of 35 [workshopscript < (0009B197)>] WorkshopLinkContainer [ObjectReference < (0009B198)>] ContainerRefsToMe 1
Workshop 6 of 35 [workshopscript < (00066EB6)>] WorkshopLinkContainer [ObjectReference < (00066EB8)>] ContainerRefsToMe 1
Workshop 7 of 35 [workshopscript < (00019956)>] WorkshopLinkContainer [ObjectReference < (00019959)>] ContainerRefsToMe 0
Workshop 8 of 35 [workshopscript < (001E81EA)>] WorkshopLinkContainer None ContainerRefsToMe 0
Workshop 9 of 35 [workshopscript < (0009B1BE)>] WorkshopLinkContainer [ObjectReference < (0009B1BA)>] ContainerRefsToMe 1
Workshop 10 of 35 [workshopscript < (001654D5)>] WorkshopLinkContainer [ObjectReference < (001654D4)>] ContainerRefsToMe 0
Workshop 11 of 35 [workshopscript < (00168945)>] WorkshopLinkContainer [ObjectReference < (00168942)>] ContainerRefsToMe 0
Workshop 12 of 35 [workshopscript < (00135A90)>] WorkshopLinkContainer [ObjectReference < (00135A92)>] ContainerRefsToMe 0
Workshop 13 of 35 [workshopscript < (0009B1A5)>] WorkshopLinkContainer [ObjectReference < (0009B1A4)>] ContainerRefsToMe 1
Workshop 14 of 35 [workshopscript < (0009B1AC)>] WorkshopLinkContainer [ObjectReference < (0009B1AF)>] ContainerRefsToMe 1
Workshop 15 of 35 [workshopscript < (001654B8)>] WorkshopLinkContainer [ObjectReference < (001654C0)>] ContainerRefsToMe 0
Workshop 16 of 35 [workshopscript < (0001D0E2)>] WorkshopLinkContainer [ObjectReference < (0001D0E7)>] ContainerRefsToMe 0
Workshop 16 of 35 [workshopscript < (0001D0E2)>] WorkshopLinkContainer [ObjectReference < (08000FA0)>] ContainerRefsToMe 0
Workshop 17 of 35 [workshopscript < (001F0711)>] WorkshopLinkContainer [ObjectReference < (001F0715)>] ContainerRefsToMe 0
Workshop 18 of 35 [workshopscript < (00164321)>] WorkshopLinkContainer [ObjectReference < (001654DE)>] ContainerRefsToMe 0
Workshop 19 of 35 [workshopscript < (0009B1F1)>] WorkshopLinkContainer [ObjectReference < (0009B1EC)>] ContainerRefsToMe 1
Workshop 20 of 35 [workshopscript < (0006F5C5)>] WorkshopLinkContainer [ObjectReference < (0006F5C6)>] ContainerRefsToMe 1
Workshop 21 of 35 [workshopscript < (000250FE)>] WorkshopLinkContainer [ObjectReference < (0004BE7B)>] ContainerRefsToMe 0
Workshop 21 of 35 [workshopscript < (000250FE)>] WorkshopLinkContainer [ObjectReference < (08000FA0)>] ContainerRefsToMe 0
Workshop 22 of 35 [workshopscript < (0009B1D1)>] WorkshopLinkContainer [ObjectReference < (0009B1CA)>] ContainerRefsToMe 1
Workshop 23 of 35 [workshopscript < (000B3506)>] WorkshopLinkContainer None ContainerRefsToMe 0
Workshop 24 of 35 [workshopscript < (00054BAE)>] WorkshopLinkContainer None ContainerRefsToMe 1
Workshop 24 of 35 [workshopscript < (00054BAE)>] WorkshopLinkContainer [ObjectReference < (08000FA0)>] ContainerRefsToMe 1
Workshop 25 of 35 [workshopscript < (001654CF)>] WorkshopLinkContainer [ObjectReference < (001654CE)>] ContainerRefsToMe 0
Workshop 26 of 35 [workshopscript < (00024A26)>] WorkshopLinkContainer [ObjectReference < (0004AA7B)>] ContainerRefsToMe 0
Workshop 27 of 35 [workshopscript < (000E0505)>] WorkshopLinkContainer None ContainerRefsToMe 0
Workshop 28 of 35 [workshopscript < (0009B18F)>] WorkshopLinkContainer [ObjectReference < (0009B192)>] ContainerRefsToMe 1
Workshop 29 of 35 [workshopscript < (01038EA8)>] WorkshopLinkContainer [ObjectReference < (01038EAC)>] ContainerRefsToMe 0
Workshop 30 of 35 [workshopscript < (0100AB20)>] WorkshopLinkContainer [ObjectReference < (0100AB24)>] ContainerRefsToMe 0
Workshop 31 of 35 [workshopscript < (0101C6AA)>] WorkshopLinkContainer [ObjectReference < (0101C6AE)>] ContainerRefsToMe 0
Workshop 32 of 35 [workshopscript < (0102064C)>] WorkshopLinkContainer [ObjectReference < (01020650)>] ContainerRefsToMe 0
Workshop 33 of 35 [DLC04:DLC04RedRocketWorkshopScript < (0200BCE7)>] WorkshopLinkContainer [ObjectReference < (0200BCEB)>] ContainerRefsToMe 0
Workshop 34 of 35 [workshopscript < (02047DFB)>] WorkshopLinkContainer None ContainerRefsToMe 0

 

 

Edited by SKK50
Link to comment
Share on other sites

Workaround is to work backwards from ref link in to the workshop, there is only one return element for the 4 misconfigured base game settlements:

If WorkshopContainerRef[iIndex] == None 
   ObjectReference[] WorkshopLinkContainers = (WorkshopRef[iIndex].GetRefsLinkedToMe(pWorkshopLinkContainer) as ObjectReference)
Endif
Link to comment
Share on other sites

If you have been around I'm sure you smiled and thought, yeah good luck with that ... linking all workshop contents (not just the crafting crap across workshopscript driven provisioner lines) has been tried for 3 years now. OK I'm nailing my failure to that mast.

 

Having poked the system, it looks like settlement WorkshopWorkbench 000c1aeb based objects are both activators for OnWorkshopMode and a storage container as returned by WorkshopScript.GetContainer. The external container referenced in SetLinkedRef(pWorkshopLinkContainer) seems to be exclusive and async pull only. Put stuff in and it is pulled into the workshop container during a trigger like OnLoad() or Disable() & Enable()

 

The problem I am trying to solve is to never have to manually transfer any stuff between containers ever again (once it's stored in a system) whilst wandering around the world crafting and occasionally building stuff.

 

The best I have come up with is to link all standalone and settlement workbenches to a central storage when they are first activated OnPlayerUseWorkBench for crafting, and use OnWorkshopMode to trigger an automatic put/get workshop transfer for building. The workbenches are sweet, workshop is a bit clunky as it has to kick out and then re open to register the resources, but hey ho good enough.

 

PS If this sort of info is old news and already published elsewhere, I can't find it.

Link to comment
Share on other sites

  • Recently Browsing   0 members

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