Skip to main content

Placeholders

Prefix: %typewriter_*%

Global Placeholders

PlaceholderReturnsExample
%typewriter_total_quests%Total quest count across all categories42
%typewriter_total_completed%Total completed quests15
%typewriter_total_in_progress%Total in-progress quests5
%typewriter_total_not_started%Total not-started quests22
%typewriter_total_progress%Completed/Total formatted15/42

Category Placeholders

Replace <name> with the category identifier (e.g., main_quests for a category named main_quests).

PlaceholderReturnsExample
%typewriter_category_<name>%Total quests in category10
%typewriter_category_<name>_completed%Completed in category3
%typewriter_category_<name>_in_progress%In progress in category2
%typewriter_category_<name>_not_started%Not started in category5
%typewriter_category_<name>_progress%Progress formatted3/10

Note: The category name is used exactly as defined (case-sensitive). Spaces and special characters are preserved — do not replace spaces with underscores. For a category named main_quests, use %typewriter_category_main_quests_progress%.

Multiple Tracking Placeholders

Tracking indexes start at 1. The most recently selected quest is normally the primary quest exposed by Typewriter's native quest tracker.

These placeholders require a player context. Outside a player context they return nothing.

PlaceholderReturns
%typewriter_codex_tracked_count%Number of tracked quests
%typewriter_codex_tracked_limit%Configured tracking limit
%typewriter_codex_tracked_multi_enabled%Whether multiple tracking is enabled
%typewriter_codex_tracked_has_any%Whether at least one quest is tracked
%typewriter_codex_tracked_ids%Comma-separated quest IDs
%typewriter_codex_tracked_names%Comma-separated quest names
%typewriter_codex_tracked_names_lines%One quest name per line
%typewriter_codex_tracked_primary_id%Primary/HUD quest ID
%typewriter_codex_tracked_primary_name%Primary/HUD quest name
%typewriter_codex_tracked_has_<quest_id>%Whether a specific quest is tracked
%typewriter_codex_tracked_<n>_id%Indexed quest ID
%typewriter_codex_tracked_<n>_name%Indexed quest display name
%typewriter_codex_tracked_<n>_status%Indexed quest status
%typewriter_codex_tracked_<n>_primary%Whether the indexed quest is primary
%typewriter_codex_tracked_<n>_objective_count%Visible objective count
%typewriter_codex_tracked_<n>_objectives%Comma-separated visible objectives
%typewriter_codex_tracked_<n>_objectives_lines%One visible objective per line
%typewriter_codex_tracked_<n>_priority%Highest visible objective priority

Indexes outside the tracked list return an empty string.

Use indexed placeholders when you want a custom OmniGUI menu that mirrors the tracked quest list:

Use casePlaceholder
Header count%typewriter_codex_tracked_count%/%typewriter_codex_tracked_limit%
First tracked quest name%typewriter_codex_tracked_1_name%
First tracked quest status%typewriter_codex_tracked_1_status%
First tracked quest objectives%typewriter_codex_tracked_1_objectives_lines%
Empty-state check%typewriter_codex_tracked_has_any%
Check one quest id%typewriter_codex_tracked_has_my_quest_id%

For most menus, prefer TRACKED_QUEST_SLOT markers in a category_menu with category: "@tracked". Use placeholders when you need text-only counters, headers, scoreboards, or external menus.

Template Variables

Variables replaced inside @Placeholder fields within entry configurations (not PAPI placeholders):

VariableAvailable InReplaced With
{quest}quest_codex messagesThe quest's display name
{completed}categoryProgressMessageNumber of completed quests
{total}categoryProgressMessageTotal quests in the category
{max}trackingLimitMessageConfigured maximum tracked quests