RaidersClamoring Posted July 13, 2022 Share Posted July 13, 2022 The wiki actually doesn't *explain* the concept of "linked", neither as it pertains to CK editor work nor papyrus coding, it just refers to it a whole lot. A rather huge blind spot. There are tons of ObjectReference functions that use this reference type, but given above fact I have no idea how to use them.What counts as "linked", how and at what point in the process CK editing ---> Gameplay do you perform this "linking". Are there native "Links" already in place that I can make use of, for instance will weapon mods automatically link to weapons once you apply them (just a hypothetical example, not a specific question)? Link to comment Share on other sites More sharing options...
hereami Posted July 13, 2022 Share Posted July 13, 2022 (edited) As i know, only applicable to REFR, i.e. object instances. Either assigned in editor or by SetLinkedRef(). Does what says, links one object to another by an optional keyword for easy and structured programmatic or hardcoded access from side of link keeper. Also tags an object as belonging to a family with a particular root instance, in some way of understanding. That's how actors are assigned their power armor, work objects, how chained patrol markers work, workshop structures and settlers are all linked to home (WorkshopItemKeyword) etc., well everything in game. Pretty flexible and convenient once you get the concept, and very interesting for dynamic quest alias interlinking. Basically, the same concept child-parent is used for anything in game - animations tree, dialogue infos and what's there else.Useful Conditions are HasLinkedRef, IsLinkedTo. Though not great for Parent-Child direction, it looks a lot of random processing to fetch every object linked to a particular anchor, e.g. buildable objects are all linked to workshop for instant access, but workshop isn't aware about their presence untill starts to search intentionally. Or let's say EnableParent, needs to check every object in world and determine if that has a link to it (IsLinkedTo), doesn't look very efficient, unless there is a dynamic list maintained for each parent in background. It's curious how coded internally. Would be curious to know how coded internally, must be something efficient. Edited July 13, 2022 by hereami Link to comment Share on other sites More sharing options...
RaidersClamoring Posted July 13, 2022 Author Share Posted July 13, 2022 Thanks hereami, this clarifies it a lot!Am I reading your post right when assuming settlers are *automatically* linked to a workshop once they are recruited? Link to comment Share on other sites More sharing options...
hereami Posted July 13, 2022 Share Posted July 13, 2022 (edited) Yes, normally they're all belongings of a Workshop (WorkhsopItems), like a wall or table. Also have other properties like WorkshopID (which makes it problematic for companions to return back in original location, for example), but i don't remember all details. It might be curious to look into WorkshopParentScript in general, AddActorToWorkshop in particular. Edited July 13, 2022 by hereami Link to comment Share on other sites More sharing options...
greekrage Posted July 13, 2022 Share Posted July 13, 2022 (edited) Yes, normally they're all belongings of a Workshop (WorkhsopItems), like a wall or table. Also have other properties like WorkshopID (which makes it problematic for companions to return back in original location, for example), but i don't remember all details. It might be curious to look into WorkshopParentScript in general, AddActorToWorkshop in particular.to clarify...We dont link objects like walls etc...to the workshop... We link resources to it like beds,jobs,water etc...and ofc certain markers ,triggers etc.. (but those with other key works) Edited July 13, 2022 by greekrage Link to comment Share on other sites More sharing options...
RaidersClamoring Posted July 13, 2022 Author Share Posted July 13, 2022 Awesome. The scope of what can be done is growing a little bit in my eyes. With functions like GetWorkshopOwnedObjects() one can put keywords on stuff, then use SetLinkedRef() and thus link them, yes? Although the problem of 128-limit arrays will rear its ugly head at that point... Well, it's something. Link to comment Share on other sites More sharing options...
hereami Posted July 13, 2022 Share Posted July 13, 2022 (edited) Yes, normally they're all belongings of a Workshop (WorkhsopItems), like a wall or table. Also have other properties like WorkshopID (which makes it problematic for companions to return back in original location, for example), but i don't remember all details. It might be curious to look into WorkshopParentScript in general, AddActorToWorkshop in particular.to clarify...We dont link objects like walls etc...to the workshop... We link resources to it like beds,jobs,water etc...and ofc certain markers ,triggers etc.. (but those with other key works) We don't, but workshop mode does. Every thing built or affiliated to a workshop has the WorkshopItem link, even actors (hm, and workshop itself somehow..). That's according to my observations at least. Though speaking of that, it becomes very curious how a workshop handles stored items. When you store a built object it loses the link and gets disabled, but not deleted immediately (because can be reenabled), then a new item instance is created in place of "stored", even if that was one of a kind in this workshop. Very unclear what happens to "stored" or scrapped objects then, deleted later on some cleanup? But then a to-do list should be maintained since the link was lost. Kinda offtopic, i've recently seen a related discussion in mod requests. Edited July 13, 2022 by hereami Link to comment Share on other sites More sharing options...
Recommended Posts