107 lines
8.3 KiB
JSON
Executable File
107 lines
8.3 KiB
JSON
Executable File
{
|
|
"courtyard": {
|
|
"name": "Palace Courtyard",
|
|
"act": "Act I · The Missing Folio",
|
|
"background": "courtyard",
|
|
"music": "palace",
|
|
"ambience": "birds",
|
|
"actors": [{"id": "ishan", "x": 0.5}, {"id": "saira", "x": 0.84}],
|
|
"spawn": 0.14,
|
|
"objective": "Meet Lima beside the exhibition tables.",
|
|
"hotspots": [
|
|
{"id": "courtyard_preparations", "x": 0.3, "label": "Help arrange the festival banners", "dialogue": "courtyard_preparations", "once": true},
|
|
{"id": "ishan_protocol", "x": 0.5, "label": "Ask Ishan about festival protocol", "dialogue": "ishan_protocol", "once": true},
|
|
{"id": "lima_arrival", "x": 0.68, "label": "Speak with Lima", "dialogue": "arrival", "once": true},
|
|
{"id": "delegation_walk", "x": 0.76, "label": "Walk the courtyard edge with Lima", "dialogue": "delegation_walk", "requires": ["dialogue:arrival"], "once": true},
|
|
{"id": "saira_welcome", "x": 0.84, "label": "Greet Aunt Saira", "dialogue": "saira", "once": true},
|
|
{"id": "to_library", "x": 0.94, "label": "Enter the royal library", "goto": "library", "requires": ["dialogue:arrival", "dialogue:delegation_walk", "dialogue:courtyard_preparations", "dialogue:ishan_protocol"]}
|
|
]
|
|
},
|
|
"library": {
|
|
"name": "Royal Library",
|
|
"act": "Act I · The Missing Folio",
|
|
"background": "library",
|
|
"music": "morning",
|
|
"ambience": "library",
|
|
"actors": [{"id": "anwara", "x": 0.16}],
|
|
"spawn": 0.1,
|
|
"objective": "Examine the empty display and solve Anwara's lantern cipher.",
|
|
"hotspots": [
|
|
{"id": "anwara_memory", "x": 0.16, "label": "Inspect the eastern cabinet with Anwara", "dialogue": "anwara_memory", "once": true},
|
|
{"id": "empty_case", "x": 0.3, "label": "Examine the empty case", "dialogue": "missing_folio", "once": true},
|
|
{"id": "library_search", "x": 0.4, "label": "Search the altered shelves", "dialogue": "library_search", "requires": ["dialogue:missing_folio"], "once": true},
|
|
{"id": "letter_one", "x": 0.48, "label": "Recover a misfiled letter", "collect": "letter_1", "quest": "letters", "once": true},
|
|
{"id": "library_balcony", "x": 0.6, "label": "Step onto the rain balcony with Lima", "dialogue": "library_balcony", "requires": ["dialogue:missing_folio"], "once": true},
|
|
{"id": "cipher", "x": 0.73, "label": "Solve the lantern cipher", "puzzle": "cipher", "requires": ["dialogue:missing_folio"], "once": true},
|
|
{"id": "to_garden", "x": 0.94, "label": "Follow the clue to the moon garden", "goto": "garden", "requires": ["flag:cipher_solved", "dialogue:anwara_memory", "dialogue:library_search", "dialogue:library_balcony"]}
|
|
]
|
|
},
|
|
"garden": {
|
|
"name": "Moon Garden",
|
|
"act": "Act II · A City of Clues",
|
|
"background": "garden",
|
|
"music": "garden",
|
|
"ambience": "water",
|
|
"actors": [{"id": "mira", "x": 0.08}],
|
|
"spawn": 0.08,
|
|
"objective": "Find the flowers named in the folio and test the old archery clue.",
|
|
"hotspots": [
|
|
{"id": "mira_garland", "x": 0.08, "label": "Ask Mira about the communal garland", "dialogue": "mira_garland", "once": true},
|
|
{"id": "flower_jasmine", "x": 0.16, "label": "Gather jasmine", "collect": "jasmine", "quest": "garland", "once": true},
|
|
{"id": "flower_tuberose", "x": 0.3, "label": "Gather tuberose", "collect": "tuberose", "quest": "garland", "once": true},
|
|
{"id": "garden_talk", "x": 0.56, "label": "Sit with Lima", "dialogue": "garden_confidence", "once": true},
|
|
{"id": "garden_walk", "x": 0.6, "label": "Carry Mira's basket with Lima", "dialogue": "garden_walk", "requires": ["dialogue:garden_confidence"], "once": true},
|
|
{"id": "garden_history", "x": 0.64, "label": "Study the founders' flower mosaic", "dialogue": "garden_history", "requires": ["dialogue:garden_confidence"], "once": true},
|
|
{"id": "flower_sequence", "x": 0.7, "label": "Solve the flower mosaic", "puzzle": "flower_sequence", "requires": ["dialogue:garden_history"], "once": true},
|
|
{"id": "archery", "x": 0.79, "label": "Try the moonlit archery trial", "minigame": "archery", "requires": ["flag:flower_sequence_solved"], "once": true},
|
|
{"id": "archery_after", "x": 0.87, "label": "Review the range ledger with Lima", "dialogue": "archery_after", "requires": ["minigame:archery"], "once": true},
|
|
{"id": "to_market", "x": 0.94, "label": "Continue to the old marketplace", "goto": "market", "requires": ["minigame:archery", "dialogue:archery_after", "dialogue:mira_garland", "dialogue:garden_walk"]}
|
|
]
|
|
},
|
|
"market": {
|
|
"name": "Old Marketplace",
|
|
"act": "Act II · A City of Clues",
|
|
"background": "market",
|
|
"music": "marketplace",
|
|
"ambience": "crowd",
|
|
"actors": [{"id": "nadia", "x": 0.08}, {"id": "rayhan", "x": 0.81}, {"id": "anwara", "x": 0.91}],
|
|
"spawn": 0.08,
|
|
"objective": "Ask the market's keepers what the court history forgot.",
|
|
"hotspots": [
|
|
{"id": "nadia_letters", "x": 0.08, "label": "Speak with Nadia the bookseller", "dialogue": "nadia_letters", "once": true},
|
|
{"id": "flower_marigold", "x": 0.18, "label": "Gather marigold", "collect": "marigold", "quest": "garland", "once": true},
|
|
{"id": "flower_rose", "x": 0.3, "label": "Gather a garden rose", "collect": "rose", "quest": "garland", "once": true},
|
|
{"id": "flower_bakul", "x": 0.42, "label": "Gather bakul blossom", "collect": "bakul", "quest": "garland", "once": true},
|
|
{"id": "letter_two", "x": 0.53, "label": "Recover a bookseller's letter", "collect": "letter_2", "quest": "letters", "once": true},
|
|
{"id": "letter_three", "x": 0.62, "label": "Recover the final letter", "collect": "letter_3", "quest": "letters", "once": true},
|
|
{"id": "market_walk", "x": 0.67, "label": "Walk through the market with Lima", "dialogue": "market_walk", "once": true},
|
|
{"id": "gift", "x": 0.72, "label": "Choose a gift for Lima", "gift": true, "once": true},
|
|
{"id": "garland_complete", "x": 0.75, "label": "Raise the completed communal garland", "dialogue": "garland_complete", "requires": ["quest:garland"], "once": true},
|
|
{"id": "letters_complete", "x": 0.78, "label": "Read the recovered founders' letters", "dialogue": "letters_complete", "requires": ["quest:letters"], "once": true},
|
|
{"id": "market_founders", "x": 0.79, "label": "Plan how to credit the festival founders", "dialogue": "market_founders", "requires": ["dialogue:nadia_letters", "dialogue:market_walk"], "once": true},
|
|
{"id": "rayhan_kitchen", "x": 0.81, "label": "Join Rayhan at the festival kitchen", "dialogue": "rayhan_kitchen", "once": true},
|
|
{"id": "cooking", "x": 0.85, "label": "Help Rayhan finish the festival dish", "minigame": "cooking", "requires": ["dialogue:rayhan_kitchen"], "once": true},
|
|
{"id": "anwara_truth", "x": 0.91, "label": "Confront Keeper Anwara", "dialogue": "anwara_truth", "requires": ["minigame:cooking"], "once": true},
|
|
{"id": "to_festival", "x": 0.97, "label": "Carry the truth to the riverside", "goto": "pavilion", "requires": ["dialogue:anwara_truth", "dialogue:nadia_letters", "dialogue:market_walk", "dialogue:market_founders"]}
|
|
]
|
|
},
|
|
"pavilion": {
|
|
"name": "Riverside Festival Pavilion",
|
|
"act": "Act III · Moonrise",
|
|
"background": "pavilion",
|
|
"music": "festival",
|
|
"ambience": "crowd",
|
|
"actors": [{"id": "ishan", "x": 0.28}, {"id": "saira", "x": 0.4}],
|
|
"spawn": 0.08,
|
|
"objective": "Choose how the true story will be told.",
|
|
"hotspots": [
|
|
{"id": "ishan_stage", "x": 0.28, "label": "Prepare the public presentation", "dialogue": "ishan_stage", "once": true},
|
|
{"id": "pavilion_waiting", "x": 0.38, "label": "Wait with the council before the unveiling", "dialogue": "pavilion_waiting", "requires": ["dialogue:ishan_stage"], "once": true},
|
|
{"id": "resolution", "x": 0.48, "label": "Address the festival council", "dialogue": "resolution", "requires": ["dialogue:ishan_stage", "dialogue:pavilion_waiting"], "once": true},
|
|
{"id": "dance", "x": 0.72, "label": "Join Lima for the moonrise dance", "minigame": "dance", "requires": ["dialogue:resolution"], "once": true},
|
|
{"id": "dance_after", "x": 0.82, "label": "Catch your breath with Lima", "dialogue": "dance_after", "requires": ["minigame:dance"], "once": true},
|
|
{"id": "moonrise", "x": 0.9, "label": "Walk with Lima by the river", "dialogue": "moonrise", "requires": ["dialogue:dance_after"], "once": true}
|
|
]
|
|
}
|
|
}
|