Skip to content

BoardQuests

BoardQuests are split in 3 TextAssets in the game loaded on boot:

  • By LoadEssentials:
    • Ressources/data/QuestChecks
  • By SetVariables:
    • Ressources/data/BoardData
    • BoardQuests from the corresponding dialogue directory of the current languageid

QuestChecks data

The asset contains one line per BoardQuests whose id corresponds to the line index. Each line contains one a @ separated list of one field per element:

Name Type Description
Prerequisite int > 0: a required flags slot for the quest to be true
--- --- = 0: No prerequisite if it's the first element, having seen Areas 0 (Bugaria Outskirt) otherwise
--- --- \< 0: A required Areas id to have been seen

The data will be loaded into questchecks[id, x] where id is the BoardQuests id and x is the index of each elements of the list starting from 0.

It should be noted that a prerequisite of 0 is only supported as it being the only element to indicate there are no prerequisite. Everything after will be ignored as the first element being 0 takes priority.

CheckQuests

The method that enforces questchecks is MainManager.CheckQuests. It is mostly called by MapControl's Start meaning this is rechecked on every map load.

What happens in this method is all questchecks are checked to see if there's any that corresponds to a quest that isn't in any boardquests (meaning not open, taken or done), but satisfies all its prerequesites. Each found quest is added to boardquests[0] which is the open quests. It's essentially what updates quests that CAN be taken, but weren't in the open board yet.

BoardData data

The asset contains one line per BoardQuests whose id corresponds to the line index. Each line contains fields separated by @:

Loaded index Name Type Description
3 Taken flags int The flags slot telling if the quest was taken
4 Icon int Index of the sprite in Sprites/Items/EnemyPortraits to render using the Quest Board List Type
5 Difficulty int The amount of stars to render as a difficulty indicator using the Quest Board List Type

The data will be loaded into boardquestdata[id, x] where id is the BoardQuests id and x is the loaded index.

BoardQuests data

The asset contains one line per BoardQuests whose id corresponds to the line index. Each line contains fields separated by @:

Loaded index Name Type Description
0 Name SetText string The name of the quest
1 Description SetText string The description of the quest
2 Sender SetText string The name of the sender of the quest

The data will be loaded into boardquestdata[id, x] where id is the BoardQuests id and x is the loaded index.

The description has special handling in the pause menu. The string can contain { to delimit pages in that menu. The pause menu provides UI to only call SetText with the current page's text and a way to browse the different pages.

It is also possible to conditionally decide to not render further pages by using }flags} as delimiter instead where flags is a flags slot that must be true to process any further pages. If it's false, the preceding page of the corresponding delimiter will be the last processed page. This allows to render further details only after progress has been done in the game.