File information
Last updated
Original upload
Created by
kinggathUploaded by
kinggathVirus scan
Activity logs
This page was last updated on 05 April 2024, 6:09PM
- Changelogs
-
-
Version 2.0.3
- Note that all change logs are now posted to GitHub
- https://github.com/kinggath/WorkshopFramework/wiki/Change-Log-History
-
Version 1.1.10
- - WSFW_WorkshopNPC is now flagged as protected. Previously this was set up to inherit the protected flag from the leveled character list, but that appears to be bugged at the engine level.
- - Changed the myFurnitureMarkerRefs to a property so that extended scripts can access it.
- - Fixed a bug with the Assault Settlement system that could cause an assault quest to get stuck under certain circumstances.
- -- Any currently stuck assaults should resolve themselves shortly after this patch is installed.
- - Defend quests now have a map marker that will show up when the player is more than 2000 units away from the settlement’s center.
- - Incorporated workshop script changes from UFO4P 2.1.0.
- - Now compatible with the following settler altering mods: Unique NPCs, Better Settlers, Spawnable Unique Settlers, Orphans of the Commonwealth, Lots More Settlers and Enemies, Beautiful Female Settlers.
- -- If you have an additional mod that alters the Settlers leveled list that is not listed here, please message me and I will ensure compatibility for a future update.
-
Version 1.1.9
- -Added new field to AssaultSettlement script: bAutoShutdownQuest.
- --This defaults to true and triggers the timer that shuts down the quest 10 seconds after completion conditions are reached.
- --This allows other scripts to stop the auto-shutdown (they will be responsible for handling the shutdown), which is useful when large amounts of processing needs to be done before surviving NPCs are restored from bleedout in a subdue raid.
- -The code that was mentioned in the 1.1.8 build to improve detection of settlement exit/enter events is now actually in place.
- -MasterQuest library script will now clear the PreviousLocation or LatestLocation alias if the corresponding location is None. This should happen in wilderness cells which might not have a location record associated with them.
-
Version 1.1.8
- -Added new AV called WSFW_PowerRequired, this is used to record the total power needs in the settlement to the workbench. This will allow mods to call GetBaseValue(WSFW_PowerRequired) to determine the total power needs in a settlement.
- -Fixed a bug where removed workshop objects would not have their stats updated correctly in the pipboy until after you returned to the settlement.
- -Improved detection of settlement enter/exit to help the PlayerEnteredSettlement and PlayerExitedSettlement events fire more accurately.
-
Version 1.1.7
- -Added a small loop at the quest startup phase for the library quest script “ControllerQuest” to ensure that the PlayerRef property has filled. After a lot of testing, it was determined that properties can fail to load on startup if too many things are referencing them. This while loop will ensure none of these controller quests fail their expected operations due to missing properties.
- -Improved Enter/Exit settlement detection so it will be more responsive and less likely to fire false positives.
- -ResourceManager will now call RecalculateWorkshopResources on the workshop instead of manually adding the values if the location is loaded when ApplyObjectSettlementResources is called. This will ensure the resources are updated without double-counting things.
- -Fixed a bug in the HUDFramework wrapper code that would result in the SendCustomMessage function to fail.
- -Assaults will now correctly clean up NPCs that were spawned as attackers and defenders after the assault quest has been shut down.
- -Attackers and Defenders spawned by assaults should no longer be hostile towards domestic animals.
- -Altered Assault factions slightly to prevent attacking defenders to cause the player to become permanently hostile with all NPCs living at that settlement.
- -Added new AV WSFW_Safety.
- --By default, the game treats the Safety value on unowned workshops as 0. Which ends up causing things like happiness calculations to be incorrect. Even manually setting Safety to another value is ignored.
- --WSFW_Safety value be automatically updated whenever Safety is updated on a workbench, and whenever GetValue(Safety) or GetBaseValue(Safety) is called on a workbench WSFW_Safety value will be returned if the workbench is unowned. The same treatment has been applied to ModValue, SetValue, RepairValue, and DamageValue.
-
Version 1.1.6
- Turrets will now be added to the defending faction during assaults.
- Turrets are now checked based on the ActorTypeTurret keyword rather than searching for a particular script. This will make the system more reliable in detecting which found objects are actually turrets.
-
Version 1.1.5
- -Added new bForceWorkshopItemLink property to the Thread_PlaceObject. This is true by default.
- --This was added so that not all items have to automatically linked to the workshop if sent.
- --If set to false, the created item will only be linked if it has the WorkshopObjectScript (or extended version) or if it has WorkshopResourceObject > 0. Since script type checks and av checks can only be checked after an objectreference has been created, this allows for scripts using this threading system that only need the link in these specific scenarios, to use the threading asynchronously.
- -Added Message suppression options to the holotape, previously these had only been available via MCM.
- -Added bApplyDrawCount and bApplyTriCount properties to Thread_PlaceObject. These are false by default.
- --When set to true, if the placed object have the corresponding WorkshopCurrentDraws or WorkshopCurrentTriangles AVs set, these will be applied to the workshop which will update the build limit meter.
- --This is disabled by default because each of these adds an additional query to the item and two more to the workshop ref, which means they are going to slow the thread. In other words, these should not be used for large batch operations.
-
Version 1.1.4c
- Restored esm flag, it was removed for making an edit in the CK, and I failed to restore it before the 1.1.4b release.
-
Version 1.1.4b
- Removed a wild edit on Preston's companion quest.
- Fixed an issue with the PreventLooting script.
-
Version 1.1.4a
- - Made several changes to the API for placing workshop objects so they would better support objects that require or generate power. This update is required for the fixes in Workshop Plus 1.0.5 to function.
-
Version 1.1.4
- -Added PreventLooting script which can be added to forms to force an object to return to where it was originally or just be deleted if the player loots it. This is particularly useful for book type objects that mods are using to display information via script, but don’t want the player keeping the item.
- -The NPC flagged as the settlement leader can now longer be made immortal during an assault unless they are a settler type.
- -Added WorkshopNPCScript to WorkshopFramework.
- --Most useful change is that there is now a custom event on WorkshopParent called WSFW_WorkshopNPCTransfer which is triggered by WorkshopNPCScript when the player transfers an NPC between settlements. Previously there was no way to know this other than to monitor every single settler individually for its OnWorkshopNPCTransfer event.
-
Version 1.1.3
- - Captive, Caravan, and non-workshop NPCs will no longer be required to be defeated to complete Assaults. This should eliminate an issue where an assault could become stuck if the wrong type of NPC ended up in the list of defenders.
- - Attackers on assaults will now be removed from the default Crime Faction for that settlement, which will fix an issue where the attackers could end up turning on the player as well.
-
Version 1.1.2
- 1.1.1 - More Assault Fixes
- - Assault quests should now permanently change the aggression and allegiance of spawned defenders so they don’t attack settlers or animals after the assaults end.
- - Assault quests will now automatically clear any objectives if the quest is stopped for any reason.
-
Version 1.1.1
- -Assault quests will now correctly fail and clear out of the quest log when failure conditions are met.
- -Attackers and Defenders that need to be killed in order to complete Assault quests will now have protected status cleared.
- -Added bForceDefendersKillable and bForceAttackersKillable options to the Assault quests which allow for toggling the Protected status off during Assaults.
- -Defenders during a Subdue assault, will no longer remain in the RemainingDefenders alias, which will prevent them from tracking via quest markers when a certain percentage are down.
-
Version 1.1.0
- -Added new WorkshopControlManager quest.
- --This allows for easily assigning control of a settlement to a particular faction. This includes things like transferring ownership of turrets, removing or changing settlers, changing supply lines, capturing containers, and more.
- -Added new AssaultManager quest.
- --This provides a simple method to generate custom raids and player lead assaults on settlements without having to do much quest setup to manage the details.
- --Works with WorkshopControlManager to offer options for these to result in faction control changing based on the results.
- -Fixed a bug that could cause the production code to fail to cleanup certain data it no longer needs.
- -Fixed a bug that could prevent fertilizer from being produced in settlements.
-
Version 1.0.8a
- Compatibility update for version 2.0.6 of the Unofficial Patch
-
Version 1.0.8
- -Altered functions involved with consuming workshop resources in WorkshopProductionManager. There is now a V2 of each of them that accepts an argument abCheckOnly for the sake of simply testing if enough resources exist without actually consuming them.
- -Added GetContainerKeyword and GetContainerForItem functions for querying for the container to use based on the workshop and base item that would be involved with that container.
- -Added ResourceShortage system.
- --ResourceShortages are a way for mods to report that a settlement resource is too low. This gives a centralized location for mods to check for additional needs in a settlement beyond the normal rules governing settlements (ie. Food must be higher than population, Defense must be higher than food+water, etc).
- --This could be used for things like reports, or dynamic systems like auto-assignment, or dynamic resource generation/construction. Ex. Sim Settlements could use this information to prioritize which plots/work objects to build first from a City Plan.
- --To report a shortage, call RegisterResourceShortage(WorkshopScript akWorkshopRef, ActorValue aResourceAV, Float afTargetWorkshopValue) on WorkshopResourceManager.
- --Note that afTargetWorkshopValue is the total value it should have for that shortage to be considered resolved. Ex. If your mod logic requires settlement food be at 40 to no longer be considered short, you would send WorkshopResourceManager.RegisterResourceShortage(someWorkshopRef, FoodAV, 40.0).
- --Only the highest shortage for each AV is stored. For example, if you report a shortage of 2 food, and another mod reports a shortage of 4 food, the shortage of 4 will take priority. If a higher shortage already exists, RegisterResourceShortage will return false, otherwise it will return true. (Note it will also return false if akWorkshopRef or aResourceAV are None)
- --ResourceShortages will be tested after new workshop objects are built, on demand when WorkshopResourceManager.UpdateResourceShortages(WorkshopScript akWorkshopRef) is called, and daily on a timer.
- --The test checks for two things: Is the shortage resolved, has the shortage expired.
- --A shortage is resolved if the workshop’s AV matches or exceeds the amount reported as needed.
- --A shortage expires after 2 in-game days. This is to ensure that a shortage doesn’t become permanent if circumstances change and the mod that registered doesn’t correctly refresh the shortage.
- --Registering the shortage again will refresh it. Mods should plan on re-registering shortages periodically, or reacting to the ResourceShortageExpired event in order to ensure their shortages remain relevant.
- --Only the largest shortage for each AV is stored.
- --Once a shortage is resolved a custom event (ResourceShortageResolved) will be fired with the workshop, ActorValue, and current value of that AV. Mods can register for this Event to react to the resolution.-
- --Once a shortage expires, a custom event (ResourceShortageExpired) will be fired with the workshop, ActorValue, and current value of that AV. Mods can register for this Event to react to the expiration (perhaps by re-registering the shortage if it still exists according to the mod’s gameplay logic).
- -ScrapObject thread will now move items deep below the world before enabling them to test for AVs to hide this from the player.
- -Added a MessageManager quest which allows the player to control circumstances when messages show up. Many workshop messages have been routed through this system, and any mod may make use of it as well to display their own messages.
- --If a message is sent and the player’s settings are set to suppress that message, for example - they can arrange so messages don’t come up during combat, they will instead be queued.
- --Depending on the player’s settings, Queued messages will either be displayed shortly after circumstances allow them to, or when triggered to display via a holotape control.
- --All raid messages from the base game are routed through this system.
- -Filled the missing script properties in the APIQuest.
-
Version 1.0.7
- 1.0.7 - “Last” Bug Squashed
-Fixed a bug where some players would stop recruiting new settlers beyond 10 at their settlements.
-Added a new option called “Consume Basic Resources Only”.
--This makes settlers only consume Purified Water and vanilla crop foods daily. By default, settlers are allowed to eat any type of food or water, which can lead them to consume rarer resources.
-Added a new option to enable/disable the Workshop Tutorial Messages.
--Note that once disabled, enabling again will reset all of the tutorial messages as if you haven’t seen them yet.
- 1.0.7 - “Last” Bug Squashed
-
Version 1.0.6
- Scrap Crash Prevention
-Thread_ScrapObject now tests objects before deleting them to ensure they don’t have the keywords/AVs that could potentially include them in the power grid.
-This safe method will also apply to the API function WSFW_API.RemoveSettlementObject, so that other mods may easily take advantage of this and avoid causing issues.
-Added new argument to AssignmentRulesOverridden CustomEvent, the new 4th argument includes the last item to be assigned. This will allow handlers to decide if they want to prioritize maintaining the last requested assignment or not.
-Argument 0 of AssignmentRulesOverridden will now be WorkshopCaravanKeyword instead of None when the rule is for overriding caravan unassignment. Handlers will need to test casting as a keyword or a WorkshopObjectScript to determine what was overridden.
-Added new function UnassignActor_Private_SkipExclusionsV2, which replaces UnassignActor_Private_SkipExclusions (old version now points to the new for backwards compatibility). The new version adds a field to accept the last assigned form (either the workshopObjectScript or WorkshopCaravanKeyword), so that if an unassign exclusion is triggered, the AssignmentRulesOverridden event will have the information it needs.
- Scrap Crash Prevention
-
Version 1.0.5
- 1.0.5 - Better Locks and Threading
-Switched to Utility.WaitMenuMode for the locking mechanism in all control quests.
-GetLock on all quests extended from LockableQuest now use a variable wait time. Rather than waiting 0.1 seconds, before the loop starts, a random value between 0.10 and 0.50 is assigned as the wait time, then each loop that the lock is still being held that much time will be allowed to pass. This should greatly reduce the likelihood of a quest becoming dead-locked due to an excessive number of simultaneous calls.
-GetLock on all quests extended from LockableQuest now have an auto-clearing lock feature after a request has lasted a certain amount of time, any extending quest may override the total wait time. The default time is currently very long (between 10 and 50 seconds - see previous change to wait time), and is not expected to be hit unless a large burst of requests come in that cause the quest to essentially become dead-locked.
-Added more streamlined version of the batch object creation code to the API.
-Thread_PlaceObject now has a bFadeIn property. When set to false, and bStartEnabled = true, the item will pop into existence - this is much faster than fading.
-API calls to create settlement objects will use the new bFadeIn property to ensure the items are created as quickly as possible.
-HUDFramework Wrapper will now return on all functions if it is not installed, rather than allowing the calls to error out.
-WorkshopResourceManager now uses a queue to handle resource objects built in remote settlements. Before it was using an edit lock function in the WorkshopObjectBuilt event handler - which when hit with something like a Sim Settlements City Plan or Transfer Settlements blueprint would completely lock up.
-Added WorkshopObjectManager quest to handle special case workshop objects that require a lot of handling. In the future, this will be used to centralize some of the things currently being handled by events on individual objects via WorkshopObjectScript - which can end up causing bursts of threaded activity which can occasionally put too heavy a load on the VM.
-Added WorkshopObjectScript extended script called InvisibleWorkshopObject. This allows for creating workshop objects that act as handles for something that is normally invisible, such as Animation Markers. The InvisibleWorkshopObject has a new field called ControlledObjectForm which will hold the base form of the item that should remain visible - a reference of this will be created when the InvisibleWorkshopObject is placed. The InvisibleWorkshopObject will automatically disappear when the player exits workshop mode, leaving the ControlledObject it spawns enabled.
-Added new Holotape/MCM option to disable the Shelter Mechanic so that you no longer receive happiness penalties from not having a roof over your beds. The Shelter Mechanic is a system in the base game that is very buggy. For many users, this system does not correctly detect roofs and it can feel like the happiness penalty is permanent no matter where beds are.
- 1.0.5 - Better Locks and Threading
-
Version 1.0.4
- -Fixed an issue that could cause food and water to overproduce.
-Restored the vanilla function signature for SetUnassignedPopulationRating and created a new version of the function for UFO4P’s alternate call.
-Fixed an issue with the Adjust Max NPCs by Charisma setting.
-WSFW should now work correctly with Northland Diggers and other mods that altered the WorkshopParent food types array.
-Fixed several issues that could occur with production for some players.
-Note that this may result in an excessive amount of resources that were stuck in the queue suddenly appearing in your workbenches, even beyond the vanilla max storage values. Any production that was meant to occur since you installed 1.0.3, will likely have ignored the storage values and been queuing up this whole time. Enjoy the freebies!
-Fixed a bug with Happiness that could cause players to lose control of settlements.
-In order to rectify this, you will need to either wait for a Radiant quest to help the settlement again OR you can use the new WSFW tool to Claim Settlement. It is available in MCM as well as the holotape.
-Added new MCM/Holotape control to disable the Lose Control of Low Happiness Settlements part of the workshop gameplay.
- -Fixed an issue that could cause food and water to overproduce.
-
Version 1.0.3
- Happy Robots Patch
-The same temporary fix used for the mod Unique NPCs, will now also apply to the mod Better Settlers.
-Reduced log output during production in WorkshopFramework.log to make it easier to analyze.
-Fixed a bug with the Food and Water detection which could result in happiness penalties.
-Fixed a bug in food and water production.
-Fixed a bug with the Robot Happiness code, you will likely need to visit each settlement that was affected for the fix to take place. Though first try sleeping 24 hours to see if it resolves itself remotely.
-Fixed several issues with Interior workshops in player homes.
-Fixed compatibility issue with the mod Basement Living.
- Happy Robots Patch
-
Version 1.0.1
- 1.0.1 - Post Launch Quick Fix
- Eliminated all vanilla edits to forms. Now the only edits are to the Workshop Scripts, this should fix incompatibilities with multiple mods that were editing the WorkshopParent quest properties.
- Adjusted Settler injectable Actor record to inherit the Base Data and Spell List from NPCs sent to it. This will allow mods to inject named settlers and handles a corner case introduced by Far Harbor.
- Fixed an issue where assigning an NPC to a vanilla crop would fail to assign them to additional crops forcing you to assign each crop one at a time.
- Fixed an issue that could prevent items from being consumed which would negatively affect happiness.
- Put in a temporary fix to allow the mod Unique NPCs to work. Will add a better method for a mod like it to be injected in the future.
- 1.0.1 - Post Launch Quick Fix
-
- Author's activity
-
April 2024
-
05 Apr 2024, 6:09PM | Action by: kinggath
File added
'Workshop Framework [version 2.3.19a]'
March 2024
-
15 Mar 2024, 5:46PM | Action by: kinggath
File added
'Workshop Framework Script Override [version 2.3.19]'
-
15 Mar 2024, 5:45PM | Action by: kinggath
File added
'Workshop Framework [version 2.3.19]'
December 2023
-
27 Dec 2023, 11:41AM | Action by: kinggath
File added
'Workshop Framework [version 2.3.18a]'
-
22 Dec 2023, 9:43PM | Action by: kinggath
File added
'Workshop Framework [version 2.3.18]'
-
22 Dec 2023, 7:34PM | Action by: kinggath
File added
'Workshop Framework [version 2.3.18]'
-
22 Dec 2023, 6:57PM | Action by: kinggath
File added
'Workshop Framework Script Override [version 2.3.18]'
-
22 Dec 2023, 6:55PM | Action by: kinggath
File added
'Workshop Framework [version 2.3.18]'
November 2023
-
22 Nov 2023, 8:09PM | Action by: kinggath
File added
'Workshop Framework [version 2.3.17a]'
-
22 Nov 2023, 6:17PM | Action by: kinggath
Attribute change
'Mod version changed to 2.3.17.'
-
22 Nov 2023, 4:58PM | Action by: kinggath
File added
'Workshop Framework [version 2.3.17]'
-
07 Nov 2023, 9:31PM | Action by: kinggath
File added
'Workshop Framework Script Override [version 2.3.16]'
-
07 Nov 2023, 9:30PM | Action by: kinggath
File added
'Workshop Framework [version 2.3.16]'
October 2023
-
17 Oct 2023, 5:25PM | Action by: kinggath
File added
'Workshop Framework [version 2.3.15]'
September 2023
-
29 Sep 2023, 6:43PM | Action by: kinggath
File added
'Workshop Framework [version 2.3.14]'
-
19 Sep 2023, 12:23AM | Action by: kinggath
File added
'Workshop Framework [version 2.3.13a]'
-
15 Sep 2023, 6:47PM | Action by: kinggath
File added
'Workshop Framework [version 2.3.13]'
August 2023
-
26 Aug 2023, 4:52AM | Action by: kinggath
File added
'Workshop Framework [version 2.3.12]'
-
24 Aug 2023, 9:30PM | Action by: kinggath
File added
'Workshop Framework [version 2.3.11]'
-
23 Aug 2023, 6:37AM | Action by: kinggath
File added
'Workshop Framework [version 2.3.10]'
-
- Mod page activity
-
April 2024
-
24 Apr 2024, 6:19PM | Action by: illurior
Tracked
'Workshop Framework'
-
24 Apr 2024, 5:42PM | Action by: MyLeftKneeHurts
Tracked
'Workshop Framework'
-
24 Apr 2024, 5:08PM | Action by: warrencwilliams
Untracked
'Workshop Framework'
-
24 Apr 2024, 4:46PM | Action by: Takugawaa
Endorsed
'Workshop Framework'
-
24 Apr 2024, 4:39PM | Action by: Elilont
Endorsed
'Workshop Framework'
-
24 Apr 2024, 4:29PM | Action by: ChingChong64
Tracked
'Workshop Framework'
-
24 Apr 2024, 4:22PM | Action by: tfksHATI
Tracked
'Workshop Framework'
-
24 Apr 2024, 3:58PM | Action by: Benyo440
Endorsed
'Workshop Framework'
-
24 Apr 2024, 3:58PM | Action by: Benyo440
Endorsed
'Workshop Framework'
-
24 Apr 2024, 3:58PM | Action by: Benyo440
Tracked
'Workshop Framework'
-
24 Apr 2024, 3:46PM | Action by: Vragdush
Tracked
'Workshop Framework'
-
24 Apr 2024, 3:44PM | Action by: jjones326
Untracked
'Workshop Framework'
-
24 Apr 2024, 3:38PM | Action by: Xphisto
Untracked
'Workshop Framework'
-
24 Apr 2024, 3:05PM | Action by: oleg888999
Tracked
'Workshop Framework'
-
24 Apr 2024, 2:33PM | Action by: Hozsa
Endorsed
'Workshop Framework'
-
24 Apr 2024, 2:26PM | Action by: KKosmas87
Tracked
'Workshop Framework'
-
24 Apr 2024, 2:17PM | Action by: Finarel
Endorsed
'Workshop Framework'
-
24 Apr 2024, 2:04PM | Action by: calderara
Tracked
'Workshop Framework'
-
24 Apr 2024, 12:46PM | Action by: TabethaKristy
Endorsed
'Workshop Framework'
-
24 Apr 2024, 12:35PM | Action by: sudodski
Tracked
'Workshop Framework'
-