# Navigation Quest Time Routine (NQTR) (/nqtr)



**What is NQTR?** NQTR (Navigation Quest Time Routine) is an extension for Pixi’VN that adds advanced systems for navigation, quests, time management, and game state handling. It is fully customizable and extensible, enabling developers to implement complex game mechanics with ease.

Installation [#installation]

<Callout title="Templates" type="info">
  Starting a new Pixi’VN project? Use a <DynamicLink href="/start#project-initialization">template</DynamicLink> that already includes NQTR.
</Callout>

To install the NQTR package in an existing JavaScript project, use one of the following commands:

<CodeBlockTabs defaultValue="npm">
  <CodeBlockTabsList>
    <CodeBlockTabsTrigger value="npm">
      npm
    </CodeBlockTabsTrigger>

    <CodeBlockTabsTrigger value="pnpm">
      pnpm
    </CodeBlockTabsTrigger>

    <CodeBlockTabsTrigger value="yarn">
      yarn
    </CodeBlockTabsTrigger>

    <CodeBlockTabsTrigger value="bun">
      bun
    </CodeBlockTabsTrigger>
  </CodeBlockTabsList>

  <CodeBlockTab value="npm">
    ```bash
    npm install @drincs/nqtr
    ```
  </CodeBlockTab>

  <CodeBlockTab value="pnpm">
    ```bash
    pnpm add @drincs/nqtr
    ```
  </CodeBlockTab>

  <CodeBlockTab value="yarn">
    ```bash
    yarn add @drincs/nqtr
    ```
  </CodeBlockTab>

  <CodeBlockTab value="bun">
    ```bash
    bun add @drincs/nqtr
    ```
  </CodeBlockTab>
</CodeBlockTabs>

<Accordions>
  <Accordion title="ink_integration" id="ink">
    To access NQTR features you can add a handler to *ink*'s hashtag commands.

    <CodeBlockTabs defaultValue="utils/ink-utility.ts">
      <CodeBlockTabsList>
        <CodeBlockTabsTrigger value="utils/ink-utility.ts">
          utils/ink-utility.ts
        </CodeBlockTabsTrigger>
      </CodeBlockTabsList>

      <CodeBlockTab value="utils/ink-utility.ts">
        ```ts
        import { nqtrHandler } from "@drincs/nqtr/ink";
        import { HashtagCommands } from "@drincs/pixi-vn-ink";

        export function initializeInk() {
            HashtagCommands.add(nqtrHandler());
            // ...
        }
        ```
      </CodeBlockTab>
    </CodeBlockTabs>
  </Accordion>

  <Accordion title="onrunprops" id="onrunprops">
    <Callout title="Templates" type="info">
      In all templates, the `StepLabelProps` interface is already overridden. You can find it in the `pixi-vn.d.ts` file.
    </Callout>

    Some NQTR functions require you to pass an `OnRunProps` object as a parameter. This allows you to customize and access properties in system-triggered functions.

    By default, `OnRunProps` is `{ [key: string]: any }`. You can override the `OnRunProps` interface in your `.d.ts` file to specify required parameters.

    <CodeBlockTabs defaultValue="pixi-vn.d.ts">
      <CodeBlockTabsList>
        <CodeBlockTabsTrigger value="pixi-vn.d.ts">
          pixi-vn.d.ts
        </CodeBlockTabsTrigger>
      </CodeBlockTabsList>

      <CodeBlockTab value="pixi-vn.d.ts">
        ```ts
        import { narration } from "@drincs/pixi-vn";

        declare module "@drincs/pixi-vn" {
            interface OnRunProps {
                navigate: (route: string) => void;
            }
        }
        ```
      </CodeBlockTab>
    </CodeBlockTabs>
  </Accordion>
</Accordions>

Features [#features]

NQTR provides the following features (the order is important):

1. <DynamicLink href="/nqtr/navigation">
     Navigation and map
   </DynamicLink>
2. <DynamicLink href="/nqtr/time">
     Time system
   </DynamicLink>
3. <DynamicLink href="/nqtr/activity">
     Activity
   </DynamicLink>
4. <DynamicLink href="/nqtr/routine">
     Routine
   </DynamicLink>
5. <DynamicLink href="/nqtr/quest">
     Quest system
   </DynamicLink>
