SkyrimNet Beta18 Released
ยท 5 min read
๐ SkyrimNet Beta 18 Latest
External C++ API Enhancements @Galanx @Severauseโ
- Custom Template Decorators โ External SKSE plugins can register their own template functions via
PublicRegisterDecorator(). These work anywhere in Inja templates (e.g.{{ my_standing(actor_uuid) }}) and in action eligibility YAML rules, just like built-in decorators - Event Subscriptions โ
PublicRegisterEventCallback(eventType, callback)lets plugins receive real-time notifications when SkyrimNet events fire (dialogue, combat, spell casts, etc.). Filter by event type or pass empty string for all events. Returns a callback ID for clean unregistration viaPublicUnregisterEventCallback() - Memory Creation โ
PublicAddMemory(formId, content, importance, type, emotion, location, tags, relatedActors)creates first-class memories for any actor. Created memories get full vector embeddings and integrate with semantic search, importance decay, and consolidation just like native memories - Actor Busy State โ
PublicSetActorBusy(formId, reason)/PublicClearActorBusy(formId)/PublicIsActorBusy(formId)let plugins mark actors as occupied during multi-step actions. Two new template decoratorsis_busy()andbusy_reason()expose this in prompts and eligibility rules. ActionManager also auto-sets busy state during any dispatched action with a descriptive reason (e.g. "GoToLocation (destination: Bannered Mare)") - Public API version bumped to 6. Full API header with usage examples at
include/PublicAPI.h
LLM Testing Overhaul @Daikichiโ
- Completely revamped the LLM test on the Test & Easy Setup page โ you can now test specific model variants (vision, non-vision, or all), use a dedicated vision prompt with an image file picker, and test all comma-separated models in rotation
- Added a "Save & Test" button directly on the LLM Config page next to the model name, so you can test your model right where you configure it without switching pages
Custom IME Overlay for Asian Text Input @Daikichiโ
- Japanese and Chinese players now get a proper in-line IME overlay when typing in PrismaUI โ composition and conversion candidates appear directly in the text window instead of the ugly unstyled system IME in the top-left corner
- The system IME no longer activates when the text input is unfocused, fixing the issue where movement keys would appear as text input
- Requires PrismaUI 1.4.1 or later for the new IME functionality to work.
Improved Combat Target Awareness @Minโ
- New
get_combat_targets(uuid)template decorator โ returns UUIDs of all actors in the given actor's combat group. Use withdecnpc()to get full entity details (name, race, level, etc.) - Default combat status prompt updated to list target names during combat (e.g. "Fighting: Bandit, Bandit Chief, Frost Troll")
- Works for any actor type including generic creatures and summons โ reads directly from the engine's CombatGroup, no external mod dependency
Player Location Change Events @Severauseโ
- SkyrimNet now detects when the player changes location (entering a city, fast traveling, etc.) and emits
location_changeevents โ enabling triggers like "New City Arrival" or "Dungeon Entered" - Note: Users with an existing Events.yaml where
location_changeis disabled will need to toggle it to Enabled under Event Configuration in the web UI
OmniSight Description Locking @Minโ
- You can now lock OmniSight location descriptions to prevent them from being overwritten on auto-refresh โ useful when you've manually edited a description to be just right
- Descriptions are auto-locked when edited via the web UI, and can be manually toggled with a lock button on each screenshot card
Voice Input Interrupts NPC Speech @Bellboundโ
- New option to allow NPCs to stop speaking immediately when voice input begins, rather than waiting for voice synthesis to complete (or voice recording to end)
- Controlled by "Interrupt Dialogue On Voice Start" config option (disabled by default)
Race Editor ID Voice Fallback @Daikichiโ
- TTS voice fallback now also checks the actor's race Editor ID (e.g. KhajiitRace) in addition to the localized race name โ fixes voice assignment for non-English game localizations and modded NPCs
- Non-English players who had issues with voice fallback may need to delete their TTS config YAML file(s) so the editor IDs get added to the fallback config list
Tweaksโ
- Improved NPC Action Selection Context: The NPC action selector now uses the same rich NPC context (from scene_context) as other prompts @jykej
- The
get_nearby_npc_listtemplate decorator now accepts an optional custom search radius @lemonade - Eligibility condition UI now supports variadic decorators and resolves placeholders correctly in Expected Result fields @Min
- Added sliders to control talk to player / npc package duration @Min
- Whitelisting an actor by faction, race, OR gender now works independently โ previously all three had to match, which meant manually whitelisted creatures like dragons or horses were still filtered out @aikichi
- Fixed several sources of "SkyrimNet can't keep up with game load!" messages caused by various modded spells. @Min
- Keyboard input no longer leaks to other mods while typing in PrismaUI chat โ keypresses meant for the chat window no longer trigger other mod hotkeys @naitro2010
Bug Fixesโ
- Fixed NPC packages not being cleaned up when an actor dies mid-conversation @Min
- Fixed persistent packages (e.g. FollowPlayer) not being re-applied after loading a save @Bellbound
- Fixed PocketTTS using the Skyrim voice type instead of the NPC's custom voice sample @Daikichi
- Fixed delayed audio playback when using Silent TTS @Daikichi
- Fixed non-English character prompts failing to load from save-isolated folders with a JSON parse error @Daikichi
- Fixed UTF-8 errors caused by non-ASCII characters in short-lived events @Daikichi
- Fixed voice input "recording end" sound playing when the game was out of focus @Bellbound
- Fixed equipment prompt using NPC variable, preventing use in custom prompts @lemonade
- Fixed decorator direct calls failing when variables are dynamic @lemonade
- Fixed plugin config pages (e.g. IntelEngine) showing 404 in the web UI โ a bug since beta16 @Min
- Reduced log noise across memory retrieval, eligibility checks, and other hot paths @Min
- Downgraded a number of harmless errors to warnings @Min
- Fixed an error when the content response from the LLM is null instead of empty @Daikichi