Skip to content

iActions v0.6.5 - Better Booze Browsing

Latest

Choose a tag to compare

@Gerkinfeltser Gerkinfeltser released this 28 May 03:39

Requirements

What's New

Expanded Alcohol Detection

The alcohol FormList now recognizes 26 vanilla drinks (up from 15), including potion-class drinks that were previously invisible to the drunk system:

New Skyrim.esm drinks: Argonian Ale, Balmora Blue, Cliff Racer, Cyrodilic Brandy, Stros M'Kai Rum, Velvet LeChance, White-Gold Tower, Colovian Brandy
New HearthFires drinks: Argonian Bloodwine, Surilie Brothers Wine
New Dragonborn drink: Ashfire Mead

Detection now uses a custom SKSE decorator (iActions.dll) for accurate FormID-based matching — no more fragile string matching or typos.

Custom Drinks Config 🍷

Got mod-added booze that NPCs keep ignoring? You can add any drink to the alcohol list without touching the ESP. Just create or edit SKSE/Plugins/iActions/extra_alcohol.json:

{
  "extra_alcohol": [
    { "plugin": "Skyrim.esm", "formID": "0x57A7A", "name": "Skooma" },
    { "plugin": "ccKRTSSE001_AgedFlin.esl", "formID": "0x000C2D", "name": "Aged Flin" }
  ]
}
Field Required Description
plugin Yes Plugin filename (e.g. Skyrim.esm, ccBGSSSE025-Beer.esm)
formID Yes Base FormID with 0x prefix — just the last 6 hex digits, no load order prefix
name No Just for your own reference, system doesn't use it

Finding FormIDs — two ways 🍺:

  1. SSEEdit: Find the drink, copy the FormID, snip off the load order prefix (first two hex digits — or more if it's a high load order, always keep the last 6), add 0x. E.g. 160858EF0x0858EF.

  2. SkyrimNet web agent (easier): Head to the Agents area in the SkyrimNet WebUI — the iActions Extra Alcohol Helper agent is already there, ready to go. It'll search the game database, auto-strip load order prefixes, filter out the 26 vanilla drinks, and spit out a ready-to-save JSON. No SSEEdit required.

Changes need a game restart to take effect. If a plugin isn't installed, that entry just gets skipped — no harm done.

Specific Drink Selection

NPCs can now request specific drinks by name. When talking to an NPC, you can say things like "Have a Nord Mead" or "Drink the Alto Wine" and the NPC will look for that exact drink in your inventory (or theirs). If the named drink isn't available, they fall back to the normal alcohol flow.

This works automatically — no MCM setting needed.

Exchange Cleanup

When the exchange action fires but no items are actually exchanged, the system no longer triggers AI narration or debug alerts. Only a trace log is written.

Migration: v0.6.0 → v0.6.5

No Breaking Changes

Safe to upgrade from v0.6.0 — save compatible. No new dependencies required. Just install and play.

Optional Configuration

Edit SKSE/Plugins/iActions/extra_alcohol.json to add mod-specific drinks (see example above with Skooma).

Internal Changes

  • iActions_DrunkCache.psc — alcohol cache with JContainers, extra alcohol JSON loading
  • iActions_DrunkAlcohol.psc — specific drink resolution (ResolveSpecificAlcohol), MakeActorDrunk accepts drinkName
  • iActions_DrunkCore.pscSetDrunkState_Execute accepts optional drinkName parameter
  • iActions_Categories.psc — new script for future SkyrimNet category registration (dormant)
  • iActions.dll — SKSE plugin providing iActions_get_alcohol_formids and iActions_get_npc_alcohol decorators
  • extra_alcohol.json — runtime config for user-added alcohol entries
  • agent_iactions_extra_alcohol_helper.prompt — SkyrimNet web agent prompt for auto-discovering mod-added drinks
  • drink_alcohol.yaml — description uses iActions_get_npc_alcohol for real-time NPC alcohol inventory
  • 0405_iaction_drunk.prompt — drunk levels only; alcohol inventory shown in action description (not prompt)

Debug Logging (Dev Only)

Enable Debug Notifications in MCM to see in-game notifications. All debug trace logs go to Papyrus log regardless.

Layer Log file Search for
DLL (decorator) Documents/My Games/Skyrim Special Edition/SKSE/iActions.log [iActions] BuildNpcAlcoholJson
Papyrus (drink flow) Papyrus.0.log [iAct] MakeActorDrunk
Papyrus (cache) Papyrus.0.log [iAct] IsAlcohol check

Before release: strip LogAlert(msg, False, False, False) dev-only traces from iActions_DrunkAlcohol.psc and iActions_DrunkCache.psc, or gate them behind EnableDebugNotify. Remove logger::info debug lines from main.iactions.cpp BuildNpcAlcoholJson — keep only logger::error and logger::warn for real errors.