Skip to content

Instantly share code, notes, and snippets.

@kettanaito
Last active July 9, 2023 18:19
Show Gist options
  • Save kettanaito/97ba7d8b4a1a543fa325a78c58d3a537 to your computer and use it in GitHub Desktop.
Save kettanaito/97ba7d8b4a1a543fa325a78c58d3a537 to your computer and use it in GitHub Desktop.
World_SecretCellar.qst in Human Language

World_SecretCellar Quest Description

Hi, folks. I haven’t found a human-friendly representation of what’s going on in json/base/meta/Quest/World_SecretCellar.qst.json so I spend an hour writing one up. Below is what’s described in the quest file, some of my assumptions, and a few clear things from the data I’ve not seen mentioned yet.

The quest has 3 phases:

Phase 1

When the objective is set (quest is taken):

  1. Callback 1. A quest message is displayed (associated with the WORLD_SECRETCELLAR_STATUES_ACTIVATED enum). This is not a condition so this is a side-effect (arEventFilters) and not a player requirement.
  2. Callback 2. This one has multiple sub-callbacks.
    1. Callback 2.1. This one has a condition Region_Hawe_Or_Kehj set with an event filter specified to EVENT_WORLD_SECRET_KILL.
    2. Callback 2.2. Also a condition Region_Scos_Or_Frac and event filter EVENT_WORLD_SECRET_KILL.
    3. Callback 2.3. Region_Step (Dry Steppes) and a filter EVENT_WORLD_SECRET_KILL
  3. Callback 3.
    1. Callback 3.1. Has a condition World_SecretCellar_TriggerBuff and a few filters, the last of which points to World_SecretCellar_Relic_1 as the value of unk_67545b. Also lists Relic_1 as a single arSnonameTokens value. There’s an identical quest phase in the Prologue of the game related to the Chapel Key you have to pick up:
{
          "__type__": "ScriptMessageMapFilter",
          "__typeHash__": 3179414430,
          "tKey": 4231711516,
          "eVariableType": 1,
          "unk_67545b": [
           {
            "__type__": "ScriptEventParamItem",
            "__typeHash__": 1210649495,
            "dwType": 1210649495,
            "eParamType": 17,
            "dwPad": 0,
            "snoItem": {
             "__raw__": 975908,
             "__group__": 73,
             "__type__": "DT_SNO",
             "__typeHash__": 2764331143,
             "__targetFileName__": "base/meta/Item/QST_Frac_Prologue_ChapelKey.itm",
             "groupName": "Item",
             "name": "QST_Frac_Prologue_ChapelKey"
            }
           }

I know that this description is not a condition because A) it’s not listed as snoCondition; B)it seems to trigger an internal hasKey boolean required for the next phase of the Prologue quest. unk_67545b likely points to an item that’s printed on the screen upon pickup.

	2. Callback 3.2. Has the identical condition `World_SecretCellar_TriggerBuff`. Again, the event filter of key `unk_67545b` now pointing to the `World_SecretCellar_Relic_2` Item (also duplicated as a `arSnonameTokens` value).
	3. Callback 3.3. All the same for `World_SecretCellar_Relic_3`.
  1. Callback 4. Has 3 callbacks, each pointing at different Ked Bardu Oxen statues. This is likely the “cleansing of the relics”.
  2. Callback 5. Doesn’t have anything, seems like a culmination of phase 1.

Phase 2

Phase 2 of the quest has 2 callbacks.

  1. Callback 1. No conditions. References World_SecretCellar_Key in the event filters. Likely, the key drops.
  2. Callback 2. Has a condition World_SecretCellar_KeyDropped_Off.

Phase 3

  • A special marker (I assume similar to campaign mission markers) appears on the map (ScriptEventParamMarkerHandle) in the open world.
  • When compared to the Taiga Prologue quest, where you also have to have a key to enter a Chapel, the Taiga quest doesn’t list anything in the unk_8f432f8 property, while the Secret Quest lists the World_SecretCellar_Key. There are many other quests in the game that list items in the unk_8f432f8 property.

Things I learned / Things I’ve never heard mentioned

The relics will not drop unless you have the quest started

The relics and the cellar key are listed as arAllReferencedItems, which strongly indicates that they cannot be obtained outside of the quest. For proof, see other instances of arAllReferencedItems in quests, like json/base/meta/Quest/QST_Step_WhatRemains.qst.json and its QST_Step_WhatRemains_remains. I highly doubt you can make any items from arAllReferencedItems drop without having the respective quest.

It’s very likely we have to get the quest and then hunt for the relics. Perhaps the focus should be to figure out what triggers the quest.

The quest happens in open world, not in a special area or dungeon

There are quests that have a specific snoWorld pointing to dungeons (?) ”name”: “DGN_Frac_CultistRefuge” (see json/base/meta/Quest/QST_Frac_Sight_Madness.qst.json). The Secret Quest points to the entire world, which suggests we will be doing it outdoors (it’s not bound to a dungeon).

This was already clear from the quest’s prefix World_.

The key reward from the quest is defined in an unusual way

The Secret Quests lists the Cellar Key as the value of unk_8f432f8 on the Phase 3. There are other occurrences of unk_8f432f8 in quests that likely represent a quest reward (see json/base/meta/Quest/QST_Step_South_WorthyOfArreat.qst.json where it’s set to a sword). This is a bit strange since we see that the key dropped-off condition must be met for Phase 2 to complete. All the while, only Phase 3 lists the key in what is likely a rewarding field.

This may as well indicate an internal way to split quest phases, like: phase 2 drops the key, phase 3 says “go pick up the key”, this it’s defined as a reward for the third phase.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment