engineQuest Engines

Quest types in Questborn can behave in drastically different ways based on the "engine" they use. You define the engine in your type configuration file (e.g., types/weekly.yml ).

Currently, there are three available engines: DEFAULT, CHAIN, and ROTATION.

1. DEFAULT Engine

The simplest engine. It loads all quests belonging to the type and displays them statically in the GUI based on their individual slot and page parameters. All quests are available simultaneously (unless restricted by require-quests or permissions).

Best used for: Daily static tasks, one-time side tasks, or simple categorical lists.

Type Config Setup:

engine: DEFAULT

2. CHAIN Engine

Creates a sequence of quests. Quests in a chain type typically have require-quests pointing to the previous link in the chain. Optionally, enabling auto-activate-next: true makes it so when a player finishes one quest, the next one automatically starts without them needing to return to the menu manually.

Best used for: Storyline campaigns, tutorials, long-term progression tracks.

Type Config Setup:

engine: CHAIN
auto-activate-next: true # Automatically grab the next quest

3. ROTATION Engine

A highly dynamic system that generates a random set of quests for each cycle (daily, weekly, etc.). It selects quests from specifically defined "pools" and places them in designated GUI slots.

When the global reset timer runs out, the currently active rotation expires, and a new random batch of quests is rolled out.

Best used for: Weekly rotating challenges, "Battle Pass" styled challenges, diverse daily content with rarities.

Type Config Requirements: You must configure rotation-pools, rotation-slots, and reset-period at a minimum.

Quest Config Requirements for ROTATION: Every quest associated with a ROTATION type must include the rotation-pool key to categorize it. In quests/weekly/kill_boss_task.yml, you define it like so

When the ROTATION engine builds a new cycle, it will look through all quests that declare rotation-pool: "epic" and select random ones to fulfill the count stated in the types/*.yml configuration.

Last updated