--- name: nqtr-ink description: Use when writing .ink files in a Pixi'VN project that uses @drincs/nqtr — every NQTR hashtag command (# enter room, # set time, # set date, # wait, # add/remove activity, # add/remove routine, # start/continue quest) and the quest state variables (questId_started, _completed, _failed, _currentStageIndex), plus createNqtrHandler setup and options. Prefer this over TypeScript labels whenever ink is configured. --- # NQTR in ink Official docs: [pixi-vn.com/nqtr](https://pixi-vn.com/nqtr). Ink basics, Vite plugin and the generic hashtag-command mechanism: skill `pixi-vn-ink`. Entities referenced here (rooms, activities, commitments, quests) must already be defined and registered in TypeScript, see [nqtr](../getting-started/SKILL.md). ## When to use this skill Use it for any `.ink` line that changes or reads NQTR state. If the project uses ink, write NQTR interactions here instead of in TypeScript labels. ## Setup ```ts import { createNqtrHandler } from "@drincs/nqtr/ink"; createNqtrHandler(); // once, with the other ink initialization ``` `createNqtrHandler(options?)` registers all commands below plus the quest variable getter. Options: `timeConverter(time: string) => number` (default: `"01:30"` → `1.5`, i.e. replaces `:` with `.`), `dateConverter(date: string) => number` (default `Number`), `wait(delta)` (replace the default time/date increase), and `activityIds` / `commitmentIds` / `questIds` / `roomIds` (readonly id arrays, e.g. the `nqtr*Ids` generated by `vitePluginNqtr`, to validate ids). Without id arrays any string is accepted. `nqtrHandler()` is a deprecated alias. ## Commands In the syntax below `<...>` is a placeholder, not ink interpolation. | Command | Effect | | --- | --- | | `# enter room ` | `navigator.currentRoom = room`; location and map follow | | `# set time