Custom Extender Build¶
A custom, experimental build of the extender is available for Epip which enables various features that would otherwise not be possible. This extender fork is entirely optional to use; features that require it will simply not be available if it is not used.
You can download the build here and the repository for it is here. You'll need to put libprotobuf-lite.dll
in the same directory as well; you can alternatively get it from an existing Extender installation in \AppData\Local\DOS2ScriptExtender\ScriptExtender
.
The current version of the fork is v2, from 2/08/2024.
Warning
The custom build is experimental - use it only at your own risk.
In multiplayer, all players should use the same extender build (either Norbyte's or this custom one). Switching between them is safe.
Exclusive Features and Changes¶
Epip features that require the fork:
- Dialogue auto-listening: makes you automatically listen to dialogues that other players start nearby.
- Requires
UIObjectManagerPlayerState
'sActiveUIObjectHandle
andUIUnderMouseCursor
to be writeable. More information available in #epipeline
- Requires
- Graying out unavailable skills on the hotbar works properly for mods that hook the
GetSkillAPCost
event- Without the fork, support for this can be added by replicating the hook's logic for
Character.Hooks.GetSkillAPCost
- Without the fork, support for this can be added by replicating the hook's logic for
- Showing outlines for containers and corpses while searching with Quick Loot
- Vanity weapon animation swaps
- Accurately determining if items can be sent to the Lady Vengeance chest (or equivalent) when using the multi-select context menus
Features for modders:
- Added
Ext.IO.Enumerate()
,Ext.IO.IsFile()
andExt.IO.IsDirectory()
, and fixed file saving not working if it would require creating more than one directory along the way. More info on the PR. Ext.IsPipFork
(field, not a function) istrue
if the fork is installed, which may be used to condition logic- Relaxed RO restrictions on UIObjectManager fields
- Attempting to call an unregistered console command now shows a warning; this is useful to realize faster that you've made a typo, are calling the command from the wrong context, didn't register it properly, or ran into any other shenanigans
- The console now says "Entering lua client console" when entering the client context (previously it would erroneously still say "server")
- Documentation of
OsirisExtenderSettings.json
is more up-to-date - Removed the unnecessary "Synching user vars to unknown game object" message, as valid scenarios of this exist (ex. if the object is on another level)
- Added
Ext.Stats.Math.GetSkillAPCost()
, which respects any Lua hooks - Added
Ext.Entity.SetHighlight()
, which allows you to add outlines to characters and items (like the ones when you hover over them or use tactical highlights)- Note that although passing unused player IDs appears to work to create outlines that cannot be overwritten, this is unintended and can crash the game after some time
- Added
Ext.Events.GetCharacterWeaponAnimationSetType
, which lets you swap the weapon animations for characters - Added
Ext.Client.GetGameControl()
, though this structure's mapping currently only contains theCanSendToLadyVengeance
bool - Fixed
Ext.Behavior.Skill.AddById()
crashing the game when the skill is used
FAQ¶
Why is the dll so much bigger?¶
The regular extender dll is the updater, which downloads the actual extender to \AppData\Local\DOS2ScriptExtender\ScriptExtender
and loads it. The fork ships the extender directly (no automatic updates), and if you compare it against the regular builds in the AppData folder, the sizes are roughly equal.