What's New
Unified Chat Hook
- Single
GlobalAddLinehook replaces the previous 3-hook system (AddStringForDisplayPatch,LogAddColoredPatch,LogAddPlainPatch) - Uses
ChatLogLine.LogTypeflags for canonical channel detection (no more color-string parsing) - Re-entry guard prevents infinite loops on re-injected text
- Graceful fallback to legacy hooks on pre-March 10 game builds
- Exception-safe: never propagates errors to the game engine
Combat Template Fast-Path
- Sub-1ms sync lookups via
TemplateCachefor 14 combat callout types: pulling, aggro, oom, healing, heal_request, retreat, ready_check, taunting, targeting, casting, cc_notice, stance, close_call, lfg - Personality-matched variant selection by style (nice/tryhard/mean) and role (tank/healer/dps)
- Zone self-reference filtering: party/guild templates avoid "here in [zone]"; shout/say templates allow zone references
{speaker}placeholder +PersonalizeString()quirks (caps, typos, third person)- Graceful degradation: sidecar down = original text, zero delay
Dynamic Template Learning
- Cache misses queue background LLM generation via sidecar
/v1/templates/queue - Generated templates persist to disk (
template_store.json) via atomic write - 60-second periodic refresh picks up newly generated variants
- Configurable via
[templates]section inerenshor-llm.toml
New Template API Endpoints
POST /v1/templates/queue-- Queue background generation (202 Accepted)GET /v1/templates/lookup-- Personality-matched variant lookupGET /v1/templates/stats-- Template store statisticsPOST /v1/templates/import-- Bulk import template packs
Compatibility
- Compatible with the March 10, 2026 Erenshor game update
- Auto-detects and falls back to legacy hooks on older game builds
- No new dependencies required
Install
Extract ErenshorLLMDialog-v0.3-3.zip into Erenshor/BepInEx/plugins/. See README for full setup instructions.