Skip to content

BoardQuests board list type

Display the list of open, taken or completed BoardQuests on the quest board. This is not to be confused with Overall Quests List Type which renders a subset of all the quests in one list.

Options generation

listvar is all the BoardQuests id contained in the boardquests depending on the board type of the list (open, taken or completed) with some restrictions that apply if the current map is not TestRoom:

  • Leif's Request and Vi's Request are excluded (NOTE: Kabbu's Request should have been excluded, but its exclusion was forgotten).
  • Any story request (id between 11 and 17) are excluded.
  • Any of the following bounty requests are excluded if the current map isn't UndergroundBar and the board type of the list is the open quests:
    • Bounty: Seedling King
    • Bounty: False Monarch
    • Bounty: Devourer
    • Bounty: Tidal Wyrm
    • Bounty: Peacock Spider

If the end result has no quests, add quest id 0 (No Quests) as the only quest offered as option.

listredirect is overridden to null.

Option's SetText input string

The text is the name of the corresponding quest from boardquestdata prepended with |size,0.5,0.8,lock| in German or |size,0.6,0.8,lock| in Japanese.

The x position of the text is overridden to 0.0 and the size to Vector2.one.

Description box rendering

listdescbox is rendered using a custom rendering scheme. If the quest id isn't No Quest, an image of the quest's author is rendered using librarysprites from the index obtained in boardquestdata which will have a name of Image and a tag of Text towards the top of the description box. Additionally SetText is called with the following in non Dialogue mode:

  • text: |size,0.75||sort,1| + The By: from MenuText line id 104 + + The author of the quest obtained from boardquestdata + |line||halfline| + The Difficulty: from MenuText line id 105 + + |Stars, + The amount of filled in stars of the quest obtained from boardquestdata + |
  • position: (12, 0.35)
  • parent: listdescbox

Whether or not the quest was No Quest, SetText is called in non Dialogue mode with the following:

  • text: |sort,1||single| + |singlebreak,10||Sizemulti,0.8,1| on German or |singlebreak,6| otherwise + the quest's description from boardquestdata before any } or {
  • fonttype: BubblegumSans
  • No linebreak
  • No tridimensional
  • position: (9.9, -1.75)
  • No cameraoffset
  • size: (0.65, 0.75)
  • parent: listdescbox
  • No caller

Input handling

On top of the default input handling, this listtype overrides the handling of the left and right input to handle changing pages in the questboardobj.

When pressing left or right, the PageFlip sound is played followed by a reset of the ItemList State Machine where the visible part, cursor and option are put back to the topmost item with listy set to -1.

If left was pressed, listtype is decremented, but it will be set to 16 (completed quest board type) if it was set to open quest board type.

If right was pressed, listtype is incremented, but it will be set to 14 (open quest board type) if it was set to completed quest board type.

In either cases, questboardobj will be updated to reflect this page change and ShowItemList will be called using the new listtype, the existing listpos with showdescription to true and sell to false.

Confirmation handling

If type is the open quests board and a boardcaller exists, the quest must not be No Quest or a buzzer sound will be played and the confirmation rejected.

If it is not No Quest, the questboardobj is closed which adds an actioncooldown of 20 frames, sets minipause to false and inlist to false. From there, every player entity is set to face towards the entity of the boardcaller. SetText is then called in Dialogue mode with the dialogue line id of the boardcaller (it's stored in its data[1] field, see the BoardQuest interaction for more details). That test gets prepended with |questprompt|. The entity of the boardcaller is the parent and its NPCControl is the caller. Flagvar 0 is set to the selected quest id and the list is finally destroyed which ends this confirmation handling.

On the other hand, if the type isn't the open quest board and the current map is the TestRoom, the selected quest is removed from the corresponding board, the questboardobj is closed (which adds an actioncooldown of 20 frames, sets minipause to false and inlist to false) and the list is destroyed which ends this confirmation handling.

Other Behaviors

The parent of ItemList is set to the questboardobj instead of the GUICamera for this listtype as it is expected to not be null under normal gameplay. This means the list is rendered on the board rather than on the root of the GUI.