SKK Workshop Utilities workshop keyword test

Article:  SKK Workshop Utilities workshop keyword test Mod Name: SKK Workshop Ownership Utilities Mod File: SKKWorkshopUtilities.ESP Source: https://skkmods.com/mod/skk-workshop-ownership-utilities Platform: Fallout 4 (PC, XBOX) Author: skk.50@outlook.com Date:     October 2019 Version: 016 onwards


The SKK Settlement Attack System and Move Workshop Markers mods have exposed a significant number of issues with badly configured mod added workshops and base game workshops that have been buggered about with.

Building on the useful How to create quality WorkshopParent registered scrappable settlements article which lovingly documents each keyword, how to use them and what they do, SKK Workshop Ownership Utilities now has a [Detect Local Workshop Keyword issues] option to help identify actual technical problems rather than rely on opinions from Reddit.

Keywords and LinkedReferences are one of the fundamental bonding agents that holds the Fallout4 game together and makes game objects findable. Just like you Google for Keywords and then click on the LinkedReference pages.


WORKSHOP STATES

There are several different base game workshop types and states which affect their need for, and dependency on, keywords:

(1) BASE GAME Full External Settlement Workshop which is registered with WorkshopParentScript (28 base game workshops). Can recruit and assign settlers, these are full settlements.

(2) BASE GAME Limited External Workshop which is registered with WorkshopParentScript (1 base game workshop: Airport). Can not recruit settlers, but can assign them. These are sort-of settlments.

(3) BASE GAME  Limited Interior Workshop which is not registered with WorkshopParentScript (1 base game workshop: HomePlate). ISOLATED. Can not recruit or assign settlers thse are just “player home” workshops, not settlements.

(4) DLC add Full External Settlement Workshops which are registered with WorkshopParentScript BUT IN AN INTERIOR CELL (Vault 88). Can recruit and assign settlers so are full settlements.

(5) MODS can add Full External Settlement Workshops which try to offer all the build and settler menu  options but are NOT registered with WorkshopParentScript. ISOLATED workshops can not recruit/assign/produce resources, as that needs WorkshopParentScript registration so they are not actually settlements at all.

(6) MODs can add limited workshops that are NOT registrered with WorkshopParentScript. ISOLATED “player homes” with no need for any keywords at all to build stuff. They only cause problems when their Location or default 5K radius build area overlap with existing workshops.


UPGRADING A LIMITED WORKSHOP

A workshop that the player can build stuff at needs zero keywords, none at all. It’s radiant quests and settlers/resource production that need the keywords and WorkshopParentScript registration to work properly.

The only difference between a limited workshop like Airport and a full workshop build menu is one keyword WorkshopWorkbenchTypeSettlement which unlocks the settler functionality. Plenty of mods and console commands add this.

But, without registering the workshop with WorkshopParentScript and generating the missing keywords and linked markers, that apparently unlocked settler functionality will never work properly. The ever helpful Workshop Utilities will do all of this for you using the [Upgrade Workshop to Full Settlement] option. You can then use the Move Workshop Markers mod to position the added spawn markers where you want them in game.


DETECT LOCAL WORKSHOP ISSUES TEST

Whilst the test is comprehensive, the on screen reporting is limited in the vanilla game UI (for Xbox compatibility), only providing ERROR, WARNING and NOTIFICATION counts. For the full diagnostic on PC Debug Logging must be enabled and then examine … \Documents\My Games\Fallout4\Logs\Script\User\SKK_WUTestALLWorkshopKeywords_NNNNN.log

For mod authors and developers there is a console option to test all registered workshops at once [ cqf SKK_WU “SKK_WUMainScript.AllWorkshopKeywordDiagnostic” ] which generates a single consolidated log file. Note that this test may not be consistent, as many resources are non-persistent so will not be found if the Workshop 3D is unloaded outside of the uGridsToLoad active area around the player.

This is a list of the errors detected in the form of their debug log output:


(A) MANDATORY KEYWORDS – ERROR

Some keywords are MANDATORY they must be there to work, if the test does not find them an ERROR is generated:

ERROR Workshop Location X mismatch to World Location Y (Possible corruption).

ERROR Workshop has no location (GetWorkshopFromLocation function calls will fail).

ERROR Workshop Location X has no location MapMarkerRefType (Will not appear on map).

ERROR WorkshopParent registered workshop has no MapMarker (Will not appear on map).

ERROR WorkshopParent registered workshop MapMarker X does not match Location Y MapMarkerRefType Z (Will not appear on map).

ERROR No Keyword WorkshopKeyword (The WorkshopWorkbench furniture may be corrupt).

ERROR WorkshopParent registered, but no WorkshopParent WorkshopID (Possible corruption)

ERROR WorkshopParent.Index X does not line up with WorkshopScript.WorkshopID Y (Possible corruption).

ERROR WorkshopWorkbenchTypeSettlement keyword workshop is not registered with WorkshopParent (Settlers and resource menus enabled without management scripts).

ERROR WorkshopParentRegistered Workshop Location X missing KeyWord LocTypeWorkshop (Quest fills may not find this workshop, hostile spawning mods will not know this is a workshop location).

ERROR Full Workshop location X missing KeyWord LocTypeWorkshopSettlement (Quest fills may not find this workshop, hostile spawning mods will not know this is a settlement location).

ERROR WorkshopParentRegistered Workshop Location X missing LocationRefType WorkshopRefType (Quest fills may not find this workshop).

ERROR WorkshopParentRegistered Workshop Location X missing LocationRefType MapMarkerRefType (Quest fills may not find this workshop).

ERROR WorkshopParentRegistered Workshop Location X missing LocationRefType LocationCenterMarker (Quest fills may not find this workshop and other downstream attack markers will not be found).

ERROR WorkshopParentRegistered Workshop missing WorkshopLinkCenter (Quest fills may not find this workshop other downstream attack markers will not be found).

ERROR WorkshopParentRegistered workshop missing WorkshopLinkSpawn (Settlers may not arrive, patrols and attacks may not path correctly).


(B) RECOMMENDED KEYWORDS – WARNING

Some keywords are RECOMMENDED, things will work but without them functionality will be impaired, if the test does not find them a WARNING is generated:

WARNING workshop that is External and not WorkshopParent registered has no MapMarker.

WARNING Interior workshop registered with WorkshopParent.

WARNING Exterior workshop not registered with WorkshopParent (Can not assign settlers or provisioners).

WARNING exterior workshop has no linked WorkshopLinkSandbox (settlers will not sandbox).

WARNING full workshop has no linked WorkshopLinkContainer (Produced resources may not be stored).

WARNING exterior workshop has no linked WorkshopLinkedPrimitive (Build area may not show up).

WARNING exterior workshop has no linked WorkshopLinkedBuildAreaEdge (Build area may not show up).

WARNING WorkshopParentRegistered Workshop Location X missing LocationRefType LocationEdgeMarker (Attack quests may not fill).

WARNING unregistered external Workshop missing WorkshopLinkCenter.

WARNING unregistered Full workshop missing WorkshopLinkSpawn (settlers may not arrive, patrols and attacks may not path).

WARNING WorkshopParentRegistered workshop has no WorkshopLinkAttackMarkers connected to WorkshopLinkCenter X (attack quests will not work).


(C) OPTIONAL KEYWORDS – NOTIFICATION

There are stacks of OPTIONAL keywords, some are of interest to help mod authors fix their creations with a NOTIFICATION:

Notification workshop that is Interior and not WorkshopParent registered has no MapMarker.

Notification WorkshopWorkbenchTypeInteriorOnly keyword registered with WorkshopParent.

Notification workshop has both WorkshopWorkbenchTypeInteriorOnly and WorkshopWorkbenchTypeSettlement keywords.

Notification WorkshopParent registered, but No Keyword WorkshopWorkbenchTypeSettlement (Limited build menu and production).

Notification 3D is not loaded pWorkshopLink LinkedReferences not checked.

Notification unregistered interior Workshop missing WorkshopLinkCenter.


KNOWN ISSUES 

Even the base game is inconsistent in its use of keywords which suggests poor design documentation or rushed changes, these WARNINGS are built right into the base game:

0006F5C5 Abernathy Location 0006B4D0 missing LocationRefType WorkshopRefType
000B3506 Airport   MapMarker 00019C6F does not match Location 00084AB0 MapMarkerRefType 00084BEB
000B3506 Airport   No WorkshopLinkAttackMarker
00019956 Bunker    No WorkshopLinkAttackMarker
001F0711 Hangmans  MapMarker 0016CA20 does not match Location 001B8C53 MapMarkerRefTyp 0016CA1D
00054BAE RedRocket No WorkshopLinkContainer (demised keyword no longer in use)
00161F4B Spectacle Island no WorkshopLinkAttackMarker

Also note that linked references can not be consistently validated unless they are persistent (not all are) or they are in the loaded/active area (for some larger settlements like Sanctuary and Spectacle part of the area can be unloaded even when the player is in the buildable area).


THE BIG REFERENCE LIST OF IMPORTANT FALLOUT 4 WORKSHOP KEYWORDS


Form                      Name                  LocationRefType           Keyword                     LinkedRefTarget
————————- ——————— ————————- ————————— —————
Location                  YourLocationName      —                        LocTypeWorkshop             —
Location                  YourLocationName      —                        LocTypeWorkshopSettlement   —
Location                  YourLocationName      —                        LocTypeClearable            —
Xmarkerheading            LocationCenterMarker  LocationCenterMarker      —                          —
Xmarkerheading            SpawnMarker           —                        —                          —
Xmarkerheading            FastTravelMarker      —                        —                          —
XmarkerHeading            AttackMarker          LocationEdgeMarker        WorkshopLinkAttackMarker    LocationCenterMarker
MapMarker                 SettlementName        MapMarkerRefType          None                        FastTravelMarker
WorkbenchWorkshop         WorkshopREF           WorkshopRefType           WorkshopLinkCenter          LocationCenterMarker
WorkbenchWorkshop         WorkshopREF           WorkshopRefType           WorkshopLinkSandbox         WorkshopArea
WorkbenchWorkshop         WorkshopREF           WorkshopRefType           WorkshopLinkContainer       WorkshopContainer
WorkbenchWorkshop         WorkshopREF           WorkshopRefType           WorkshopLinkSpawn           SpawnMarker
TriggerBox                WorkshopArea          —                        WorkshopLinkedPrimitive     WorkshopREF
WorkshopBorder            —                    —                        WorkshopLinkedBuildAreaEdge WorkshopREF
WorkshopResourceContainer —                    —                        WorkshopLinkContainer       WorkshopREF
————————- ——————— ————————- ————————— —————

For a Workshop to register with WorkshopParent and work correctly as a resource settlment, the minimums are in GREEN:
Unique Location to trigger OnLocationChange to trigger ResetWorkshop.
LocTypeWorkshopSettlement to quality ResetWorkshop.
WorkshopLinkCenter for workshop AI packages.
WorkshopLinkSpawn for new recruits to arrive.