SFSE plugin that expands the capabilities of Papyrus by registering new native functions callable from any mod and script.
In other words, Cassiopeia is a tool for modders to develop scripted mods in ways that weren’t possible for Starfield before and to write scripts more conveniently.
The complete function list can be seen here (Google Drive document) but it is also included in the mod files.
Currently only ~115 new native functions are implemented.
Don’t worry, Garden of Eden SE, my custom script extender for Fallout 4 started with ~80 and now it has ~950. I already have ~200 functions I’d like to test for Cassiopeia, including all the inventory handlers and finder/sorter functions from Garden of Eden. For v1.0, I tried to prioritize those that were either requested or generally have received more attention.
Notes for mod authors: always make sure to test your scripted mod with New Game + (SetStage 24EF9C 2000) when you edit base forms with Cassiopeia because the vanilla game reset manager code is picky.
Fixes a bug that could cause GetAppearanceSource(Actor akActor) to return None if akActor wasn’t a leveled actor
Added: OpenMenu, CloseMenu, DumpMenuFlags
Fixed a few typos in CassiopeiaPapyrusExtender.psc
Version 2.4
Fixes a bug that could cause certain non “main control map” BSInputEvent Control Names to be incorrectly sent. E.g. “WeaponReadyReload” was sent if the same key was bound to Container Menu’s “Take all” whose actual Control Name is “XButton” and upon pressing the key while Container Menu was open Cassiopeia should’ve sent “XButton”. (This bug was introduced in v2.3 (yesterday update) due to an oversight).
Fixes a bug that could cause certain “Windows window switching control keys” like the Win key (opens Start Menu) to be considered as continuously pressed after getting released because the native event couldn’t be sent with bPressed = false as the key was actually released while the game wasn’t actually receiving the keyboard input.
Added: BSInputEventEx(Int aiKeyCode, String asControlName, String asMainControlName, String asFriendlyName, bool bPressed, Float afHeldTime, int aiDeviceIndex, int aiKeyMask, int aiEventIndex, int aiPressedKeysCount, float fElapsedTimeSinceLastInput)
Version 2.3
Mostly redesigned BSInputEvent; now it can send mouse button and mouse wheel movement events ( see the .psc for details )
Fixes a bug that could prevent BSInputEvent to be sent for a key if another key was previously pressed and was being held
Fixes a bug that could cause BSInputEvent to incorrectly send the name of the Right Alt key
Added: DumpControlMapInfo, IsControlDown, GetHoldTimeByKeyCode, GetHoldTimeByControlName, GetControlNameByKeyCode, GetKeyNameByKeyCode, GetCharAt, SubStr, EraseStr, FindStr, MergeStr, SplitStr, ReplaceStr
Moved IsKeyDown from the Utility section in CassiopeiaPapyrusExtender.psc to the Input section where the other Input functions are