Fallout 4
0 of 0

File information

Last updated

Original upload

Created by

LarannKiar

Uploaded by

LarannKiar

Virus scan

Safe to use

Tags for this mod

About this mod

F4SE plugin that extends the capabilites of the game's scripting language with over 470 new native functions.

Requirements
Permissions and credits
About this mod:

F4SE plugin that adds over 470 new native Papyrus script functions for mod authors.

A complete list of the implemented functions is in this structured Google Drive document.
(It opens normally, not with Google Docs. I had to put in a searchable and user-friendly document because eventually it become too big for a mod description). Event callback and registration functions are in this Google Drive document.


v2.0 update:
Spoiler:  
Show

v3.0 - v4.0 update:
Spoiler:  
Show

v5.0 update:
Spoiler:  
Show

v6.0 - v7.3 update:
Spoiler:  
Show

v8.0 - v8.1 update:
Spoiler:  
Show

v9.0 - v9.1 update:
Spoiler:  
Show

v10.0-v10.2 update: about 50 new functions; many (individually indexable) inventory item handlers like GetNthItemEquipped() and GetNthItemLegendaryMod(), AddKeywordToNthItemInstanceData(), etc. Actor functions like IsFiringWeapon(), IsAiming(), IsWeaponBlocked(), IsUnderwater() and IsTakingHealthDamageFromActiveEffect(). New Location functions such as GetUniqueActors() (can find unloaded non-persistent Unique actors), GetSpecialRefs() (includes location center and Provisioner markers). Special Game and ObjectReference functions like RemoveLastUsedPowerArmorFromMap() and MarkForForcedDeletion() (deletes even persistent references... use with care).
v10.1: added PrintInventoryItems(), a fully filterable native "inventory to Papyrus" String[] function with equip, favorite, legendary and item count data (similarly to the Pip-Boy) and GetInventoryItemIndexByName() to find any inventory item easily by item name. v10.2: SetKey() for lockable object references and inventory item handlers GetNthInventoryItemName(), GetNthItemValue() and GetNthItemWeight().

v11.0 update: added SetCurrentConsoleRef(), GetReferenceName() (native functor to always find and return the proper reference name: DisplayName/FormName), GetHexFormID() (works with ingame created RefIDs too), GetRefsAliased() (pass all quest alias references to ObjectReference[]) and ObjectReference[] function SortRefsByName() (with optional abExactMatch, abReversedMode) to process any references by their actual name. Also includes sort by name parameter for the actor processors and some new utility functions (last digits and quoted text extracting).

v12.0 update: about 100 new functions, mostly for ActorBase and MagicEffects like SetFaceTemplateActorBase() (native "face swapper"), IsChargenFacePreset(), SetHasBaseDataTemplate(), IsValueModifierEffect(), IsImmunityEffect(), IsSlowTimeEffect(). Also added GetAerialDistance() (worldmap based GetDistance() that ignores the "Ref1 in interior Ref2 in exterior" caused infinite distance).
v12.1 update: introduces EquipNthItem(), UnequipNthItem(), SetEquipStateLocked(), DropNthItem(), RemoveNthItem(), TransferNthItem(), DropNthItemEx(), CopyNthItem() and GetEquippedItemIndexesArray() for advanced inventory management. PrintInventoryItems() received two new parameters, abMarkEquipStateLocked and abMarkItemIndex.
v12.2 update: added MoveActorToFurniture() (with selectable furniture marker ID) and IsRefWithinBuildableArea() (also takes another reference to compare it with the build zone of the target reference). Introduces event callback functions OnPerkPointIncrease(), OnColorUpdateApply() and OnPipBoyLightChange().
v12.3 update: IsPipboyFlashlightOn().


Actor processing functions (FindActors, ProcessActors) with many possibilites:
Spoiler:  
Show

Inventory demo script that loops through the inventory of any actor or game object and prints each inventory item's name (preferably the unique if it has such, and marks it with * ), their count, FormID, Equipped and Favorite tag state and inventory item index to the Papyrus log.
Spoiler:  
Show

The output would be:
Spoiler:  
Show

All functions were tested by me and I added notes to most of them.

Notes: for those who are interested, I used the ExampleProject from CommonLibF4 and basically, this tutorial (which was made for SKSE but the process is mostly the same) to set up the build environment.


Inventory Management:
Inventory item-level handlers to find, copy, transfer, remove, drop, equip/unequip indexable items (instances)
Simple randomized inventory loop with EquipNthItem


Player AI driven
Adding a simple Travel package to the Player's AI stack
(script callable packages with working weapon draw, mouse input and jumping)



Attaching Rowdy's Sandboxing AI
(First Person mode view)

Requirements:
F4SE
Address Library for F4SE Plugins
Microsoft Visual C++ Redistributable for Visual Studio 2019



Credits:
powerofthree (CommonLibF4)
Fudgyduff (CommonLibF4 and the Address Library)
GELUXRUM (for letting me reuse some part of their code)
This plugin wouldn't be possible without them.


Source code and MIT license.