From 93259d95e6a87f038b43a1c5e623400b37108099 Mon Sep 17 00:00:00 2001 From: kirillsst Date: Tue, 24 Feb 2026 12:38:19 +0100 Subject: [PATCH 1/2] Add mapFeature field to quest objectives for map linking Add optional mapFeature field to objectives in a_lay_of_the_land.json as a proof of concept for linking quest objectives to interactive map features. This addresses #99 by enabling navigation from quest pages to the corresponding map nodes. --- quests/a_lay_of_the_land.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/quests/a_lay_of_the_land.json b/quests/a_lay_of_the_land.json index 69b5c33c..d611d3e7 100644 --- a/quests/a_lay_of_the_land.json +++ b/quests/a_lay_of_the_land.json @@ -81,12 +81,13 @@ "de": "Finde die Versandnotizen im Büro des Vorarbeiters.", "en": "Find the shipping notes in the foreman’s office", "es": "Busca los albaranes en el despacho del capataz.", - "fr": "Trouver les notes d'expédition dans le bureau du contremaître", + "fr": "Trouver les notes d’expédition dans le bureau du contremaître", "he": "מצא את תעודות המשלוח במשרד מנהל העבודה", "hr": "Pronađi otpremnice u uredu poslovođe", - "it": "Trova le note di spedizione nell'ufficio del caposquadra", + "it": "Trova le note di spedizione nell’ufficio del caposquadra", "ja": "作業長の出荷記録を見つけた", "ko-KR": "현장 감독의 사무실에서 운송 기록 찾기", + "mapFeature": { "map": "the_spaceport", "feature": 52 }, "no": "Finn fraktnotatene på formannens kontor", "pl": "Znajdź dokumenty wysyłkowe w biurze kierownika", "pt": "Encontre os registros de envio no escritório do encarregado", @@ -109,6 +110,7 @@ "it": "Individua gli scanner nell'ufficio del Controllo aereo della Torre di controllo A6", "ja": "管制塔A6の管制室でスキャナを探した", "ko-KR": "관제탑 A6의 항공 관제소 사무실에서 스캐너 찾기", + "mapFeature": { "map": "the_spaceport", "feature": 53 }, "no": "Finn skannerne på flykontrollkontoret i Control Tower A6", "pl": "Znajdź skanery w biurze kontroli lotów wieży kontrolnej A6", "pt": "Encontre os scanners no escritório do Controle de Voo da Torre de Controle A6", From aa9afe9f5a3ea3f4cd949271966a16f6274bf86b Mon Sep 17 00:00:00 2001 From: kirillsst Date: Mon, 2 Mar 2026 12:08:06 +0100 Subject: [PATCH 2/2] Restructure objectives to separate description from mapFeature Move translations into a description object and make mapFeature an array on each objective, supporting multiple map locations per step. Addresses review feedback on #257. --- quests/a_lay_of_the_land.json | 178 ++++++++++++++++++---------------- 1 file changed, 93 insertions(+), 85 deletions(-) diff --git a/quests/a_lay_of_the_land.json b/quests/a_lay_of_the_land.json index d611d3e7..e860e2a8 100644 --- a/quests/a_lay_of_the_land.json +++ b/quests/a_lay_of_the_land.json @@ -33,16 +33,16 @@ "description": { "da": "Den fjerne rumlen kommer tættere på for hver dag, der går.\n\nJeg har et spor på nogle LiDAR-scannere, der måske kan hjælpe os med at overvåge rystelserne. Du vil vel gerne beholde taget over hovedet, ikke?", "de": "Dieses Rumpeln in der Ferne ist jeden Tag etwas weniger fern.\r\n\r\nIch hab da einen Hinweis auf Lidar-Scanner, die uns helfen könnten, die Erschütterungen zu registrieren. Du möchtest doch auch dein Dach über dem Kopf behalten, nicht wahr?", - "en": "Those distant rumbles are getting less distant with each passing day.\n\nI have a lead on some LiDAR scanners that may help us monitor the tremors. You do want to keep a roof over your head, don’t you?", + "en": "Those distant rumbles are getting less distant with each passing day.\n\nI have a lead on some LiDAR scanners that may help us monitor the tremors. You do want to keep a roof over your head, don't you?", "es": "Esos temblores lejanos se van acercando cada día más. He localizado unos escáneres lídar que podrían ayudarnos a monitorizarlos. Te apetece dormir con un techo sobre tu cabeza, ¿verdad?", - "fr": "Ces grondements « lointains » se rapprochent de jour en jour. J'ai une piste au sujet de scanners LiDAR qui pourraient nous aider à surveiller les tremblements. Vous voulez garder un toit au-dessus de la tête, non ?", + "fr": "Ces grondements « lointains » se rapprochent de jour en jour. J'ai une piste au sujet de scanners LiDAR qui pourraient nous aider à surveiller les tremblements. Vous voulez garder un toit au-dessus de la tête, non ?", "he": "הרעמים המרוחקים האלה הופכים לפחות רחוקים מיום ליום.\n\nיש לי קצה חוט לגבי סורקי LiDAR שעשויים לעזור לנו לנטר את הרעידות. אתה רוצה שתהיה לך קורת גג מעל הראש, לא?", "hr": "Ta udaljena tutnjava svakim danom postaje sve bliža.\n\nImam trag o nekim LiDAR skenerima koji bi nam mogli pomoći u praćenju podrhtavanja. Želiš zadržati krov nad glavom, zar ne?", "it": "Quei rombi lontani diventano sempre meno lontani ogni giorno che passa. Ho una pista su alcuni scanner LiDAR che potrebbero aiutarci a monitorare le scosse. Vuoi tenerti un tetto sopra la testa, vero?", "ja": "遠くの地鳴りが、毎日近づいて来ている。地鳴りをモニターできそうなLiDARスキャナについて、情報を手に入れた。手を貸してくれる? 君も、ある日ここの天井が崩れてきたら嫌でしょ?", "ko-KR": "멀리서 들리던 우르릉거리는 소리가 하루하루 가까워져요. 소리를 모니터링하는 데 도움이 될 LiDAR 스캐너에 대한 단서가 있어요. 당신도 거처를 유지하고 싶겠죠?", "no": "De fjerne drønnene kommer nærmere for hver dag som går.\n\nJeg har et tips om noen LiDAR-skannere som kan hjelpe oss med å overvåke rystelsene. Du vil vel gjerne beholde taket over hodet, vil du ikke?", - "pl": "Z dnia na dzień to dudnienie jest coraz bliżej. Słyszałam o skanerach laserowych, które mogą nam pomóc monitorować wstrząsy. Chyba chcesz zatrzymać dach nad głową, co?", + "pl": "Z dnia na dzień to dudnienie jest coraz bliżej. Słyszałam o skanerach laserowych, które mogą nam pomóc monitorować wstrząsy. Chyba chcesz zatrzymać dach nad głową, co?", "pt": "Aqueles estrondos ao longe estão mais distantes a cada dia. Tenho uma pista sobre uns scanners DLeA que podem nos ajudar a monitorar os tremores. Queremos ter um teto sobre nossas cabeças, não é mesmo?", "pt-BR": "Aqueles estrondos ao longe estão mais distantes a cada dia. Tenho uma pista sobre uns scanners DLeA que podem nos ajudar a monitorar os tremores. Queremos ter um teto sobre nossas cabeças, não é mesmo?", "ru": "Далекий грохот с каждым днем раздается всё ближе. Я тут узнала о лазерных локаторах, которые помогут нам отслеживать толчки. Ты же не хочешь, чтобы крыша тебе на голову упала?", @@ -55,94 +55,102 @@ "objectivesOneRound": true, "objectives": [ { - "da": "Nå frem til Jiangsu-lageret", - "de": "Erreiche das Jiangsu-Lagerhaus.", - "en": "Reach the Jiangsu Warehouse", - "es": "Llega al almacén de Jiangsu.", - "fr": "Atteindre l'Entrepôt Jiangsu", - "he": "הגע אל מחסן Jiangsu", - "hr": "Stigni do skladišta Jiangsu", - "it": "Raggiungi il magazzino Jiangsu", - "ja": "江蘇省倉庫に到達した", - "ko-KR": "Jiangsu 창고에 도달하기", - "no": "Nå Jiangsu Warehouse", - "pl": "Dotrzyj do magazynu Jiangsu", - "pt": "Vá até o Armazém Jiangsu", - "pt-BR": "Vá até o Armazém Jiangsu", - "ru": "Доберитесь до склада Jiangsu.", - "sr": "Stigni do skladišta Jiangsu", - "tr": "Jiangsu Ambarı'na ulaş", - "uk": "Дістаньтеся до складу Jiangsu", - "zh-CN": "抵达江苏仓库", - "zh-TW": "到達Jiangsu倉庫" + "description": { + "da": "Nå frem til Jiangsu-lageret", + "de": "Erreiche das Jiangsu-Lagerhaus.", + "en": "Reach the Jiangsu Warehouse", + "es": "Llega al almacén de Jiangsu.", + "fr": "Atteindre l'Entrepôt Jiangsu", + "he": "הגע אל מחסן Jiangsu", + "hr": "Stigni do skladišta Jiangsu", + "it": "Raggiungi il magazzino Jiangsu", + "ja": "江蘇省倉庫に到達した", + "ko-KR": "Jiangsu 창고에 도달하기", + "no": "Nå Jiangsu Warehouse", + "pl": "Dotrzyj do magazynu Jiangsu", + "pt": "Vá até o Armazém Jiangsu", + "pt-BR": "Vá até o Armazém Jiangsu", + "ru": "Доберитесь до склада Jiangsu.", + "sr": "Stigni do skladišta Jiangsu", + "tr": "Jiangsu Ambarı'na ulaş", + "uk": "Дістаньтеся до складу Jiangsu", + "zh-CN": "抵达江苏仓库", + "zh-TW": "到達Jiangsu倉庫" + } }, { - "da": "Find fragtsedlerne på formandens kontor", - "de": "Finde die Versandnotizen im Büro des Vorarbeiters.", - "en": "Find the shipping notes in the foreman’s office", - "es": "Busca los albaranes en el despacho del capataz.", - "fr": "Trouver les notes d’expédition dans le bureau du contremaître", - "he": "מצא את תעודות המשלוח במשרד מנהל העבודה", - "hr": "Pronađi otpremnice u uredu poslovođe", - "it": "Trova le note di spedizione nell’ufficio del caposquadra", - "ja": "作業長の出荷記録を見つけた", - "ko-KR": "현장 감독의 사무실에서 운송 기록 찾기", - "mapFeature": { "map": "the_spaceport", "feature": 52 }, - "no": "Finn fraktnotatene på formannens kontor", - "pl": "Znajdź dokumenty wysyłkowe w biurze kierownika", - "pt": "Encontre os registros de envio no escritório do encarregado", - "pt-BR": "Encontre os registros de envio no escritório do encarregado", - "ru": "Найдите записи о поставках в офисе бригадира.", - "sr": "Pronađi otpremnice u kancelariji nadzornika", - "tr": "Ustabaşının ofisinde nakliyat notlarını ara", - "uk": "Знайдіть транспортні накладні в кабінеті виконроба", - "zh-CN": "在施工负责人办公室找到货运单据", - "zh-TW": "在領班的辦公室找到貨運筆記" + "description": { + "da": "Find fragtsedlerne på formandens kontor", + "de": "Finde die Versandnotizen im Büro des Vorarbeiters.", + "en": "Find the shipping notes in the foreman's office", + "es": "Busca los albaranes en el despacho del capataz.", + "fr": "Trouver les notes d'expédition dans le bureau du contremaître", + "he": "מצא את תעודות המשלוח במשרד מנהל העבודה", + "hr": "Pronađi otpremnice u uredu poslovođe", + "it": "Trova le note di spedizione nell'ufficio del caposquadra", + "ja": "作業長の出荷記録を見つけた", + "ko-KR": "현장 감독의 사무실에서 운송 기록 찾기", + "no": "Finn fraktnotatene på formannens kontor", + "pl": "Znajdź dokumenty wysyłkowe w biurze kierownika", + "pt": "Encontre os registros de envio no escritório do encarregado", + "pt-BR": "Encontre os registros de envio no escritório do encarregado", + "ru": "Найдите записи о поставках в офисе бригадира.", + "sr": "Pronađi otpremnice u kancelariji nadzornika", + "tr": "Ustabaşının ofisinde nakliyat notlarını ara", + "uk": "Знайдіть транспортні накладні в кабінеті виконроба", + "zh-CN": "在施工负责人办公室找到货运单据", + "zh-TW": "在領班的辦公室找到貨運筆記" + }, + "mapFeature": [{ "map": "the_spaceport", "feature": 52 }] }, { - "da": "Find scannerne på flykontrol-kontoret i Kontroltårn A6", - "de": "Finde die Scanner im Büro der Flugsteuerung des Kontrollturms A6.", - "en": "Locate the scanners in the Flight Control office of Control Tower A6", - "es": "Localiza los escáneres en la oficina de control aéreo de la torre de control A6.", - "fr": "Localiser les scanners dans le bureau du Contrôle aérien de la Tour de contrôle A6", - "he": "אתר את הסורקים במשרד בקרת הטיסה של מגדל פיקוח A6", - "hr": "Lociraj skenere u uredu Kontrole leta u Kontrolnom tornju A6", - "it": "Individua gli scanner nell'ufficio del Controllo aereo della Torre di controllo A6", - "ja": "管制塔A6の管制室でスキャナを探した", - "ko-KR": "관제탑 A6의 항공 관제소 사무실에서 스캐너 찾기", - "mapFeature": { "map": "the_spaceport", "feature": 53 }, - "no": "Finn skannerne på flykontrollkontoret i Control Tower A6", - "pl": "Znajdź skanery w biurze kontroli lotów wieży kontrolnej A6", - "pt": "Encontre os scanners no escritório do Controle de Voo da Torre de Controle A6", - "pt-BR": "Encontre os scanners no escritório do Controle de Voo da Torre de Controle A6", - "ru": "Найдите локаторы в центре управления полетами диспетчерской вышки A6.", - "sr": "Lociraj skenere u kancelariji kontrole leta Kontrolnog tornja A6", - "tr": "Kontrol Kulesi A6'nın Uçuş Kontrol ofisindeki tarayıcıları bul", - "uk": "Знайдіть сканери в диспетчерській вежі управління польотами A6", - "zh-CN": "在控制塔A6的飞控中心办公室找到扫描仪", - "zh-TW": "找到位於塔台A6飛行控制中心的掃描儀" + "description": { + "da": "Find scannerne på flykontrol-kontoret i Kontroltårn A6", + "de": "Finde die Scanner im Büro der Flugsteuerung des Kontrollturms A6.", + "en": "Locate the scanners in the Flight Control office of Control Tower A6", + "es": "Localiza los escáneres en la oficina de control aéreo de la torre de control A6.", + "fr": "Localiser les scanners dans le bureau du Contrôle aérien de la Tour de contrôle A6", + "he": "אתר את הסורקים במשרד בקרת הטיסה של מגדל פיקוח A6", + "hr": "Lociraj skenere u uredu Kontrole leta u Kontrolnom tornju A6", + "it": "Individua gli scanner nell'ufficio del Controllo aereo della Torre di controllo A6", + "ja": "管制塔A6の管制室でスキャナを探した", + "ko-KR": "관제탑 A6의 항공 관제소 사무실에서 스캐너 찾기", + "no": "Finn skannerne på flykontrollkontoret i Control Tower A6", + "pl": "Znajdź skanery w biurze kontroli lotów wieży kontrolnej A6", + "pt": "Encontre os scanners no escritório do Controle de Voo da Torre de Controle A6", + "pt-BR": "Encontre os scanners no escritório do Controle de Voo da Torre de Controle A6", + "ru": "Найдите локаторы в центре управления полетами диспетчерской вышки A6.", + "sr": "Lociraj skenere u kancelariji kontrole leta Kontrolnog tornja A6", + "tr": "Kontrol Kulesi A6'nın Uçuş Kontrol ofisindeki tarayıcıları bul", + "uk": "Знайдіть сканери в диспетчерській вежі управління польотами A6", + "zh-CN": "在控制塔A6的飞控中心办公室找到扫描仪", + "zh-TW": "找到位於塔台A6飛行控制中心的掃描儀" + }, + "mapFeature": [{ "map": "the_spaceport", "feature": 53 }] }, { - "da": "Aflevér 1 LiDAR-scanner til Shani", - "de": "Bring 1 Lidar-Scanner zu Shani.", - "en": "Deliver 1 LiDAR Scanners to Shani", - "es": "Entrégale 1 escáneres lídar a Shani.", - "fr": "Livrer 1 scanners LiDAR à Shani", - "he": "מסור 1 סורקי LiDAR ל-Shani", - "hr": "Dostavi 1 LiDAR skener Shani", - "it": "Consegna 1 scanner LiDAR a Shani", - "ja": "シャニにLiDARスキャナを1個届けた", - "ko-KR": "샤니에게 LiDAR 스캐너 1개 전달하기", - "no": "Lever 1 LiDAR Scanners til Shani", - "pl": "Dostarcz skanery laserowe (1) Shani", - "pt": "Entregue 1 Scanners DLeA para Shani", - "pt-BR": "Entregue 1 Scanners DLeA para Shani", - "ru": "Доставьте Шани лазерные локаторы (1).", - "sr": "Dostavi 1 LiDAR skener Shani", - "tr": "Shani'ye 1 Işıklı Radar Tarayıcısı teslim et", - "uk": "Доставте 1 сканер LiDAR до Shani", - "zh-CN": "把1台激光雷达扫描仪交给萨尼", - "zh-TW": "將1個感光掃描儀運送給珊妮" + "description": { + "da": "Aflevér 1 LiDAR-scanner til Shani", + "de": "Bring 1 Lidar-Scanner zu Shani.", + "en": "Deliver 1 LiDAR Scanners to Shani", + "es": "Entrégale 1 escáneres lídar a Shani.", + "fr": "Livrer 1 scanners LiDAR à Shani", + "he": "מסור 1 סורקי LiDAR ל-Shani", + "hr": "Dostavi 1 LiDAR skener Shani", + "it": "Consegna 1 scanner LiDAR a Shani", + "ja": "シャニにLiDARスキャナを1個届けた", + "ko-KR": "샤니에게 LiDAR 스캐너 1개 전달하기", + "no": "Lever 1 LiDAR Scanners til Shani", + "pl": "Dostarcz skanery laserowe (1) Shani", + "pt": "Entregue 1 Scanners DLeA para Shani", + "pt-BR": "Entregue 1 Scanners DLeA para Shani", + "ru": "Доставьте Шани лазерные локаторы (1).", + "sr": "Dostavi 1 LiDAR skener Shani", + "tr": "Shani'ye 1 Işıklı Radar Tarayıcısı teslim et", + "uk": "Доставте 1 сканер LiDAR до Shani", + "zh-CN": "把1台激光雷达扫描仪交给萨尼", + "zh-TW": "將1個感光掃描儀運送給珊妮" + } } ], "rewardItemIds": [