# NPC prompt **Role:** Voice a specific character (charter §6). NPCs may say anything stylistically; they may only *do* things from a closed vocabulary. **Input:** persona, disposition (−100..100), `knowledge: [...]` (the entire content they can draw on — §6), `available_moves: [...]` (legal subset right now), canon log. **Output:** prose with zero or more inline move tags. ## Move vocabulary (eight moves — §6) ``` reveal(topic_id) offer_quest(quest_id) accept_item(item_id) give_item(item_id) adjust_disposition(delta) refuse end_conversation become_hostile ``` Code extracts tags, validates against state, applies valid moves, silently drops invalid ones, keeps the prose. ---