Three fixes proposed. (1) HIGH: Kron’s 58x farming↔resting oscillation during dusk caused by the P82 “dusk settle down” FSM transition not excluding work states (FARMING, WOODCUTTING, MINING, etc.) — fix by adding these states to the exclusion list. (2) MEDIUM: Kron’s perpetual angry fixation on “hidden spring” / “Vexnix fell” caused by socialThink’s raw memory fetch having no word-overlap deduplication — fix by fetching 10 memories and selecting 3 diverse ones using keyword overlap filtering. (3) MEDIUM: 20 wasted LLM calls from rejected divine revelations for Kron — fix by early-returning from think() when the revelation target is on cooldown instead of falling through to atmosphere_shift.
(HIGH): Kron farming↔resting oscillation during dusk — 58 cycles
Fix: Add work/activity states to the P82 dusk settle down exclusion list in `creature-fsm.ts`: (code change) Also apply the same fix to the behavior tree (for future-proofing) at `bt/creature-behavior-tree.ts:292-295`: (code change) —
(MEDIUM): Kron’s thoughts stuck in “hidden spring” / “Vexnix fell” anger loop
Fix: Add word-overlap deduplication to the raw memory fetch in `socialThink()`, and add an anti-repetition instruction to the prompt: (code change) This fetches 10 recent memories, then selects 3 with sufficient topic diversity (0.5 overlap threshold, slightly tighter than the 0.6 used in encounter…
(MEDIUM): Divine revelation rejections still wasting LLM calls (20x for Kron)
Fix: Rather than relying on LLM compliance, short-circuit the rejection earlier. When `scheduleRevelation()` rejects a creature, don’t fall through to `atmosphere_shift` — return early so no event is generated at all. This was proposed in cycles #113-114 but may not be applied to the current running…
(LOW): SocialPrompt JSON parse failures (2x)
Fix applied via code changes.