File information
Last updated
Original upload
Created by
kinggathUploaded by
kinggathVirus scan
About this mod
Framework to open up the settlement system to editing by the community.
For Players: New controls and faster, more stable workshop scripts.
For Modders: Add new resource types, override settings, and generally change the way settlements work dynamically.
- Requirements
-
This mod does not have any known dependencies other than the base game.
Mods requiring this file
- Permissions and credits
-
Credits and distribution permission
- Other user's assets Some assets in this file belong to other authors. You will need to seek permission from these authors before you can use their assets
- Upload permission You are not allowed to upload this file to other sites under any circumstances
- Modification permission You are not allowed to modify my files, including creating bug fixes or improving on features under any circumstances
- Conversion permission You are not allowed to convert this file to work on other games under any circumstances
- Asset use permission You must get permission from me before you are allowed to use any of the assets in this file
- Asset use permission in mods/files that are being sold You are not allowed to use assets from this file in any mods/files that are being sold, for money, on Steam Workshop or other platforms
- Asset use permission in mods/files that earn donation points You are not allowed to earn Donation Points for your mods if they use my assets
- Console modding permission The author did not upload this mod to Bethesda.net for console users yet, but he or she will at some point
Author notes
You are free to reuse sections of code found in this framework, so long as it does not interfere with this framework. Please check the top of the file you are borrowing from for a list of contributors and credit the appropriate people. While much of this was written by kinggath, the basis of the WorkshopScripts was built upon the work of the Unofficial Fallout 4 Patch team, the core idea for the threading engine and much of the code for the locking system was created by 1000101 (yes that's his username...).
Not to mention as this will be a community driven project it is likely to have many more contributors in the future - so please credit them!File credits
Arthmoor, Sclerocephalus, and the rest of the UFO4P team for the workshop scripts which the Workshop Framework core is based on (Permission received from Arthmoor)
Donation Points system
Please log in to find out whether this mod is receiving Donation Points
-
Translations
- Ukrainian
- Turkish
- Spanish
- Russian
- Portuguese
- Polish
- Mandarin
- Italian
- German
- French
-
Translations available on the Nexus
Language Name Mandarin Author:kinggath-Tenkjino Workshop Framework - CHS Spanish Author:kittyowilder Workshop Framework - Spanish Polish Author:Jeremiash Workshop Framework 2.4.5 PL spolszczenie French Author:ZobiOneKenobi Workshop Framework French Translation German Author:Aigni Workshop Framework - Komplett deutsche Version Portuguese Author:Maatsuki Workshop Framework (PTBR) Mandarin Author:BLACKPINK Workshop Framework Chinese Translation Russian Author:German Swift Workshop Framework - (RU) 2.4.3 Turkish Author:Enesgn1 Workshop Framework - Turkish Translation Italian Author:Firegtx Workshop Framework - Traduzione Italiana ORD Mandarin Author:ShrimpBallin - keppekinosha Workshop Framework - Chinese Ukrainian Author:VWTrotsky Workshop Framework Ukrainian translation Spanish Author:nexusernesto Workshop Framework -Spanish- Russian Author:EpolPers - TLM Workshop Framework - RU - 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
-
If you use the Unofficial Patch - be certain that Workshop Framework comes AFTER it in your load order.
Next Gen Update Information
As of 2.4.0, Workshop Framework now works with the Next-gen update of Fallout 4. Players who have opted to stick with the pre-next gen version of Fallout 4 should still update, but also download the "Old-Gen Replacers" file, and overwrite the base mods files with those. This will ensure you have the latest fixes from WSFW, but still have the dll/pex files that support previous versions of F4SE.
Player Focused Features
- Faster and more stable Workshop scripts
- Settlement Import/Export system
- Automatically open/close doors in and out of Workshop mode
- Automatic Workshop Menu protection
- Fixes Pipboy Data screen issues
- Fixes the "Spectacle Island" problem
- No DLC requirements
- New Options via MCM/Holotape
- > Auto assign controls
- > Adjust max amount of food and defense settlers can operate
- > Adjust base robot happiness (eliminate the penalty if you like)
- > Make robots not count against your max population
- > and more!
Mod Author Focused Features
- Rewritten Workshop Scripts - faster and more open
- Completely backwards compatible* - no property names or function signatures were altered
- Adjust any workshop value on the fly - no more hard coded variables
- Simple API for advanced functionality for folks who can only code a little (ex. Dynamically place workshop items like Sim Settlements does with just a few lines of code)
- 50+ new workshop values you can apply to workshop items to create new more interesting bonuses for players
- Add your own workshop values for production and consumption with just a single line of code
- High-capacity, easily expandable threading system
- New Container System to route production to more than just the Workshop Container
- Uninstall-safe injection to change workshop production, settler pool, and more
- Automatic workshop menu protection means no more need for uninstall chems for workshop mods.
- Settlement Layout Import/Export system can be extended and code driven for powerful automated settlement building.
- UIManager system to offer simple access to complex UI interactions such as using barter menus for player option selection.
- Easy-to-use scripts for complex workshop items such as display racks, cluttered surfaces, and vendor inventory display.
- HUDFramework abstraction layer to handle automatic detection, throttling, and communication so you can include HUDFramework calls throughout your code without worrying if the player has it installed or not.
- Including new easy-to-use Progress Meters system!
- Completely open-source and community driven
* Any other mods that altered workshop scripts will break this and are likely incompatible. The exception is the Unofficial Patch which should be placed before this in your load order so that the additional script changes made by Workshop Framework will overwrite the UFO4P versions.
New in 2020 - Settlement Layout System
Overall Goal
The goal of Workshop Framework is to open up the settlement system so we can do more interesting things with it.
Adjusting most of the behavior of settlements requires adjusting the Workshop scripts - and as soon as you do that, you are incompatible with all other mods that want to edit that same script. Since the Settlements are controlled with just a few scripts - many things you may have thought would be simple, basically never got made into mods because people don't want to deal with the hassle of having edited vanilla scripts.
No more! Workshop Framework completely rewrites many of the base workshop scripts and introduces tons of hooks, new options, and eliminates most hard-coded variables so that tons of mod authors can release mods editing just the part of the settlement system they want to change.
Easy-to-Use Advanced Systems
On top of opening up the scripts, I've added several advanced systems presented in a simple way, so that even people without a massive programming background can contribute new mods and functionality that add very powerful changes to settlements. For example, much of the code that makes the Sim Settlements City Plan's work is now a core system in Workshop Framework so that anyone with a little bit of coding experience can dynamically place large swathes of objects in a settlement on the fly!
Design Philosophy
When designing this, it was important to me that the core gameplay functionality of settlements is completely unaltered by this framework. If you install this in your game, you should notice no difference other than the few bugs it fixes and an overall performance increase with settlement related activities. All gameplay options are left intact, and always will be.
That said, somethings will work wildly different behind the scenes in order to open new options for adjustment, so while players can safely install this without thinking about it, if you are a mod author - you are likely very concerned about what this is doing! So to alleviate your fears, I offer the following:
- I have not altered any vanilla property or function signatures. If you are currently expecting a function or property from the existing workshop scripts - it's still there, so your code will not break.
- I will never alter property names or function signatures of anything in Workshop Framework now that it is released. Any time I'm forced to adjust a function, I will leave the original version in tact and simply point it to the updated version. This way you can be confident your mods based on WSFW will continue to work from version to version.
- I will do everything in my power to keep this code bug-free, and am open to suggestions and improvements to the code base so that we can all have a flexible, powerful core to work from.
Documentation
For complete documentation, head to the Github repo.
Demo Mod
The optional file is a demo mod, not meant for widespread usage. It is designed to show the potential of certain parts of the code, and allow people who want to see these features expanded on and improved test them out quickly to help give me feedback and bug reports.
v1.0.0 - All friendly NPCs will have an alternate activation called Recruit. This will allow you to convert virtually any NPC to a settler and send them to one of your settlements. (This is made possible by a code overhaul in version 2.0.0 of Workshop Framework). Note that these NPCs will not work with Sim Settlements plots due to the way plots are coded currently (this will change in some future version of Sim Settlements).
Script Override
The optional file "Workshop Framework Script Override" will allow you to fix an issue that comes up from other mods accidentally including versions of the Workshop Scripts that Workshop Framework updates. (Including vanilla scripts is a common problem for new mod authors as the Creation Kit will automatically include many vanilla files when it packages up mods for upload).
When you load into the game with Workshop Framework version 2.2.2 or higher, it will test your workshop scripts to see if any are overwriting it's versions, and if so will recommend this file to you as a potential solution.
The esp file itself is empty and is merely there to ensure you can load up its ba2 file which has additional copies of the 4 major workshop scripts. If you are using this file, it should always be the very last file in your load order!
Open Source and Permissions
While this is open-source, and anyone has permission to make use of pieces of code found inside of these scripts, please do not release new versions of the exact same named scripts, or release things based on the code that would interfere with what this mod is trying to achieve. The idea is that this framework will become a central staple we can all build on without compatibility issues.
The Future
- Continue Improving the speed and stability of the Workshop scripts.
- Flesh out and expand the API.
- Add more hooks to allow doing other things the community dreams up (drop by the Github repo to join in the discussion or even get in on the development!).
- Add additional advanced systems that more mod authors can take advantage of to add extra functionality to their mods without the need for a programming background.
Special Thanks
1000101 - For helping me develop the threading system and allowing me to use his thread locking code!
Arthmoor and the rest of the Unofficial Patch team for allowing me to use their Workshop fixes!
Woodfuzzy, Krazyhorse, and Moonbeam for testing the crap out of this so I could feel comfortable releasing it...