The Velan Codex

Story

Quests

Written like Data/Quests/prologue.json: each quest shows its first incomplete stage, so stages done out of order still count. startWhen is the existing optional field. Each block parses as JSON and uses only the condition forms Velan.Story.Condition reads (flag/op/value, all, any, not).

act2: Two Courts (main)

{
  "id": "act2",
  "title": "Two Courts",
  "description": "Aske's letters go to Twinhold and Lanternfall. Deliver both. Believe neither until you've met both.",
  "startWhen": { "flag": "act1.done", "op": "!=", "value": 0 },
  "stages": [
    {
      "id": "choose_first",
      "text": "Tamsin and Rook are both waiting at the Halfway crossroads. Choose which letter to carry first.",
      "completeWhen": { "flag": "act2.first", "op": "!=", "value": 0 }
    },
    {
      "id": "first_letter",
      "text": "Deliver the first letter.",
      "completeWhen": {
        "any": [
          { "flag": "letter.twinhold", "op": ">=", "value": 2 },
          { "flag": "letter.lanternfall", "op": ">=", "value": 2 }
        ]
      }
    },
    {
      "id": "long_road",
      "text": "Cross the Long Road with Caravan-master Dace's caravan.",
      "completeWhen": { "flag": "long_road.stage", "op": ">=", "value": 5 }
    },
    {
      "id": "second_letter",
      "text": "Deliver the second letter.",
      "completeWhen": {
        "all": [
          { "flag": "letter.twinhold", "op": ">=", "value": 2 },
          { "flag": "letter.lanternfall", "op": ">=", "value": 2 }
        ]
      }
    },
    {
      "id": "threading",
      "text": "Learn to thread one spell into another.",
      "completeWhen": { "flag": "thread.taught", "op": "!=", "value": 0 }
    },
    {
      "id": "midpoint",
      "text": "Ondine and Iver have each asked for your hands. Answer them both, one way or the other.",
      "completeWhen": {
        "all": [
          { "flag": "mending.outcome", "op": "!=", "value": 0 },
          { "flag": "vault.outcome", "op": "!=", "value": 0 }
        ]
      }
    },
    {
      "id": "word_from_home",
      "text": "A letter has come from Sallowbank.",
      "completeWhen": { "flag": "act2.done", "op": "!=", "value": 0 }
    }
  ]
}

act2_twinhold: The Mirror City

{
  "id": "act2_twinhold",
  "title": "The Mirror City",
  "description": "Twinhold is two halves of one city, and every caster who comes is measured.",
  "startWhen": { "flag": "twinhold.stage", "op": ">=", "value": 1 },
  "stages": [
    {
      "id": "measuring",
      "text": "Go to the Hall of Measure and be measured.",
      "completeWhen": { "flag": "twinhold.stage", "op": ">=", "value": 2 }
    },
    {
      "id": "bridge_court",
      "text": "A court sits on the Bridge Court in the morning. Tamsin wants you to see it.",
      "completeWhen": { "flag": "twinhold.stage", "op": ">=", "value": 3 }
    },
    {
      "id": "speaker",
      "text": "Deliver Aske's letter to Prelate Ondine in the Speaker's Chamber.",
      "completeWhen": { "flag": "letter.twinhold", "op": ">=", "value": 2 }
    },
    {
      "id": "vault",
      "text": "Tamsin wants to show you what the Wardens keep safe.",
      "completeWhen": { "flag": "twinhold.stage", "op": ">=", "value": 5 }
    },
    {
      "id": "leave",
      "text": "Leave Twinhold.",
      "completeWhen": { "flag": "twinhold.stage", "op": ">=", "value": 6 }
    }
  ]
}

act2_long_road: The Long Road

{
  "id": "act2_long_road",
  "title": "The Long Road",
  "description": "Caravan-master Dace needs a guard for the wind pass, and doesn't care which side you're on.",
  "startWhen": { "flag": "long_road.stage", "op": ">=", "value": 1 },
  "stages": [
    {
      "id": "gale",
      "text": "Help Dace get the ridge windmill turning.",
      "completeWhen": {
        "all": [
          { "flag": "long_road.stage", "op": ">=", "value": 2 },
          { "flag": "spell.learned.gale", "op": "!=", "value": 0 }
        ]
      }
    },
    {
      "id": "camp",
      "text": "Make camp below the pass.",
      "completeWhen": { "flag": "long_road.stage", "op": ">=", "value": 3 }
    },
    {
      "id": "wind_pass",
      "text": "Get the caravan over the wind pass.",
      "completeWhen": { "flag": "long_road.stage", "op": ">=", "value": 4 }
    },
    {
      "id": "arrive",
      "text": "Ride down with the caravan to the other court.",
      "completeWhen": { "flag": "long_road.stage", "op": ">=", "value": 5 }
    }
  ]
}

act2_lanternfall: The Open Door

{
  "id": "act2_lanternfall",
  "title": "The Open Door",
  "description": "Lanternfall has no gate and no guard. Rook says the first Facet lesson is given to anyone who asks.",
  "startWhen": { "flag": "lanternfall.stage", "op": ">=", "value": 1 },
  "stages": [
    {
      "id": "giving_steps",
      "text": "Go to the Giving Steps with Rook.",
      "completeWhen": { "flag": "fragment.facet_seal.circle", "op": "!=", "value": 0 }
    },
    {
      "id": "iver",
      "text": "Deliver Aske's letter to Iver Kest at the Cutter's Workshop.",
      "completeWhen": { "flag": "letter.lanternfall", "op": ">=", "value": 2 }
    },
    {
      "id": "square_half",
      "text": "Find the square half of Facet Seal in the Shardfield.",
      "completeWhen": {
        "all": [
          { "flag": "fragment.facet_seal.square", "op": "!=", "value": 0 },
          { "flag": "spell.learned.facet_seal", "op": "!=", "value": 0 }
        ]
      }
    }
  ]
}

act2_mending: The Sallow Mending

{
  "id": "act2_mending",
  "title": "The Sallow Mending",
  "description": "Prelate Ondine will close the Sallow warp upstream of your farm, and wants you to hold the line while it's done.",
  "startWhen": { "flag": "mending.accepted", "op": "==", "value": 1 },
  "stages": [
    {
      "id": "go_to_warp",
      "text": "Be at the Sallow warp by dawn.",
      "completeWhen": { "flag": "mending.stage", "op": ">=", "value": 1 }
    },
    {
      "id": "hold_line",
      "text": "Hold the line while the five menders close the warp.",
      "completeWhen": { "flag": "mending.outcome", "op": "!=", "value": 0 }
    }
  ]
}

act2_vault: The Measure Vault

{
  "id": "act2_vault",
  "title": "The Measure Vault",
  "description": "Iver wants every glyph the Wardens took back, and given away. He needs an even pair to open the wards.",
  "startWhen": { "flag": "vault.accepted", "op": "==", "value": 1 },
  "stages": [
    {
      "id": "night",
      "text": "Meet Iver's cut at the east-pier drain on the second night of the mending.",
      "completeWhen": { "flag": "vault.stage", "op": ">=", "value": 1 }
    },
    {
      "id": "wards",
      "text": "Open the Vault's three wards without breaking them.",
      "completeWhen": { "flag": "vault.stage", "op": ">=", "value": 2 }
    },
    {
      "id": "inner_vault",
      "text": "Get into the inner Vault and out again.",
      "completeWhen": { "flag": "vault.outcome", "op": "!=", "value": 0 }
    }
  ]
}

greenvault: What Nature Would Heal

{
  "id": "greenvault",
  "title": "What Nature Would Heal",
  "description": "Brother Fallow has invited you to Greenvault, where the Tenders let everything grow and everything die.",
  "startWhen": { "flag": "invite.greenvault", "op": "!=", "value": 0 },
  "stages": [
    {
      "id": "arrive",
      "text": "Travel down the valley road to Greenvault.",
      "completeWhen": { "flag": "greenvault.stage", "op": ">=", "value": 1 }
    },
    {
      "id": "decay_terrace",
      "text": "Something has grown into the hedges on the decay terrace.",
      "completeWhen": { "flag": "bramble_glint.beaten", "op": "!=", "value": 0 }
    },
    {
      "id": "bramble",
      "text": "Mother Bramble will see you in the vine hall.",
      "completeWhen": { "flag": "bramble.patient", "op": "!=", "value": 0 }
    }
  ]
}

hushfold: The Quiet Fork

{
  "id": "hushfold",
  "title": "The Quiet Fork",
  "description": "Sister Ise has invited you to Hushfold. Walk; don't run.",
  "startWhen": { "flag": "invite.hushfold", "op": "!=", "value": 0 },
  "stages": [
    {
      "id": "arrive",
      "text": "Take the Quiet Fork above the wind pass to Hushfold.",
      "completeWhen": { "flag": "hushfold.stage", "op": ">=", "value": 1 }
    },
    {
      "id": "bell_tower",
      "text": "Something in the empty bell tower is repeating the monks' signs back wrong.",
      "completeWhen": { "flag": "hushfold.stage", "op": ">=", "value": 2 }
    },
    {
      "id": "wen_letter",
      "text": "Carry Choirmistress Wen's letter to Lanternfall.",
      "completeWhen": { "flag": "wen_letter.delivered", "op": "!=", "value": 0 }
    }
  ]
}

(Idea) Flags these quests need that the scenes set: mending.stage 1 on arriving at the warp; vault.stage 1 at the drain and 2 when the third ward opens; bramble_glint.beaten 1 after bramble_glint; wen_letter.delivered 1 on delivery.

From Walkthrough: Act 2 › Quests