Requirements
- Skyrim SE/AE + SkyrimNet
- JContainers
- powerofthree's Papyrus Extender (already required by SkyrimNet)
- Papyrus MessageBox - SKSE NG (required for dynamic dialog)
- SkyUI SE (required for MCM)
- OAR + Drunk animations mod (optional, recommended)
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 🍺:
-
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.160858EF→0x0858EF. -
SkyrimNet web agent (easier): Head to the Agents area in the SkyrimNet WebUI — the
iActions Extra Alcohol Helperagent 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 loadingiActions_DrunkAlcohol.psc— specific drink resolution (ResolveSpecificAlcohol),MakeActorDrunkacceptsdrinkNameiActions_DrunkCore.psc—SetDrunkState_Executeaccepts optionaldrinkNameparameteriActions_Categories.psc— new script for future SkyrimNet category registration (dormant)iActions.dll— SKSE plugin providingiActions_get_alcohol_formidsandiActions_get_npc_alcoholdecoratorsextra_alcohol.json— runtime config for user-added alcohol entriesagent_iactions_extra_alcohol_helper.prompt— SkyrimNet web agent prompt for auto-discovering mod-added drinksdrink_alcohol.yaml— description usesiActions_get_npc_alcoholfor real-time NPC alcohol inventory0405_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.