diff --git a/resources/bozja_encounters.ts b/resources/bozja_encounters.ts index fdecd00df17..9d4e6e8159d 100644 --- a/resources/bozja_encounters.ts +++ b/resources/bozja_encounters.ts @@ -7,145 +7,193 @@ const data: CeInfoType = { 'AcesHigh': { 'directorId': '1D2', 'name': { + 'cn': '新型飞行型魔导装甲——加百列', 'de': 'Gabriel, die stählerne Schwinge', 'en': 'Aces High', 'fr': 'Force divine', 'ja': '新型飛行型魔導アーマー「ガブリエル」', + 'ko': '신형 비행 마도 아머 \'가브리엘\'', + 'tc': '新型飛行型魔導裝甲——加百列', }, }, 'AndTheFlamesWentHigher': { 'directorId': '1D3', 'name': { + 'cn': '老练魔法师——铁胆狱火萨托瓦尔', 'de': 'Sartauvoir Eisenfeuer', 'en': 'And the Flames Went Higher', 'fr': 'L\'envol du phénix', 'ja': '老練の魔道士「鉄火のサルトヴォアール」', + 'ko': '노련한 마도사 \'쇳불의 사르토부아르\'', + 'tc': '老練魔道士——鐵膽獄火薩托瓦爾', }, }, 'BeastOfMan': { 'directorId': '1DB', 'name': { + 'cn': '百兽之王——兽王莱昂', 'de': 'Lyon der Bestienkönig', 'en': 'Beast of Man', 'fr': 'Le Roi bestial', 'ja': '百獣使い「獣王ライアン」', + 'ko': '백수의 왕 \'마수왕 라이언\'', + 'tc': '百獸之王——獸王萊昂', }, }, 'KillItWithFire': { 'directorId': '1D4', 'name': { + 'cn': '腐烂蔬菜——皮里福尔', 'de': 'Peeriefool, das faule Gemüse', 'en': 'Kill It with Fire', 'fr': 'Grandeur et pestilence', 'ja': '腐乱野菜「ピーリフール」', + 'ko': '썩은 야채 \'피어리풀\'', + 'tc': '腐爛蔬菜——皮里福爾', }, }, 'MetalFoxChaos': { 'directorId': '1CB', 'name': { + 'cn': '钢铁魔兽——达因斯莱瓦', 'de': 'Dáinsleif, Bestie aus Eisen', 'en': 'Metal Fox Chaos', 'fr': 'Le guerrier de métal', 'ja': '鋼鉄の魔獣「ダーインスレイヴ」', + 'ko': '강철 마수 \'다인슬라이프\'', + 'tc': '鋼鐵魔獸——達因斯萊瓦', }, }, 'PatriotGames': { 'directorId': '1D1', 'name': { + 'cn': '据点防卫魔导兵器——爱国者', 'de': 'Verteidigungsmaschine Patriot', 'en': 'Patriot Games', 'fr': 'Les fusils du patriote', 'ja': '拠点防衛魔導兵器「パトリオット」', + 'ko': '거점 방위 병기 \'패트리어트\'', + 'tc': '據點防衛魔導兵器——愛國者', }, }, 'RiseOfTheRobots': { 'directorId': '1DF', 'name': { + 'cn': '新型铁巨人——魔导劳工X式', 'de': 'Im Schatten von Modell X', 'en': 'Rise of the Robots', 'fr': 'Le soulèvement des machines', 'ja': '新たなる鉄巨人「魔導レイバーX型」', + 'ko': '새로운 철거인 \'마도 노동자 X형\'', + 'tc': '新型鐵巨人——魔導勞工X式', }, }, 'TheBattleOfCastrumLacusLitore': { 'directorId': '1D7', 'name': { + 'cn': '帝国湖岸堡攻城战', 'de': 'Sturm auf Castrum Lacus Litore', 'en': 'The Battle of Castrum Lacus Litore', 'fr': 'Assaut sur Castrum Lacus Litore', 'ja': 'カストルム・ラクスリトレ攻城戦', + 'ko': '카스트룸 라쿠스리토레 공성전', + 'tc': '帝國湖岸堡攻城戰', }, }, 'TheBayingOfTheHounds': { 'directorId': '1CC', 'name': { + 'cn': '战争妖犬——恐惧妖犬', 'de': 'Die drei Mäuler des Canis dirus', 'en': 'The Baying of the Hound(s)', 'fr': 'Le chien des enfers', 'ja': '戦争の妖犬「カニスディルス」', + 'ko': '전쟁 요마견 \'카니스 디루스\'', + 'tc': '戰爭妖犬——恐懼妖犬', }, }, 'TheFinalFurlong': { 'directorId': '1D5', 'name': { + 'cn': '怨念死灵——地生人', 'de': 'Spartoi der Gefürchtete', 'en': 'The Final Furlong', 'fr': 'Menace spectrale', 'ja': '怨念の死霊「スパルトイ」', + 'ko': '원념의 사령 \'스파르토이\'', + 'tc': '怨念死靈——地生人', }, }, 'TheFiresOfWar': { 'directorId': '1D6', 'name': { + 'cn': '炎兽训练师——火焰百夫队', 'de': 'Die Flammenden Hundert', 'en': 'The Fires of War', 'fr': 'Brasier de guerre', 'ja': '炎獣使い「火焔百人隊」', + 'ko': '화염마수 조련사 \'화염백인대\'', + 'tc': '炎獸訓練師——火焰百夫隊', }, }, 'TheHuntForRedChoctober': { 'directorId': '1CA', 'name': { + 'cn': '红陆行鸟之王——红色彗星', 'de': 'Der Rote Meteor und seine Meute', 'en': 'The Hunt for Red Choctober', 'fr': 'Une ruée en rouge', 'ja': '赤チョコボのヌシ「レッドコメット」', + 'ko': '우두머리 초코보 \'붉은 혜성\'', + 'tc': '紅陸行鳥之王——紅色彗星', }, }, 'TheShadowOfDeathsHand': { 'directorId': '1CD', 'name': { + 'cn': '黑死鸟——阿克巴巴', 'de': 'Akbaba, Tod von oben', 'en': 'The Shadow of Death\'s Hand', 'fr': 'Les ailes noires de la mort', 'ja': '黒き死鳥「アクババ」', + 'ko': '죽음의 검은 새 \'아크바바\'', + 'tc': '黑死鳥——阿克巴巴', }, }, 'TrampledUnderHoof': { 'directorId': '1CE', 'name': { + 'cn': '邪眼妖兽——耶鲁', 'de': 'Die bösen Blicke der Eale', 'en': 'Trampled under Hoof', 'fr': 'L\'œil du malin', 'ja': '邪眼の妖獣「エアレー」', + 'ko': '마안의 요수 \'에알레\'', + 'tc': '邪眼妖獸——耶魯', }, }, 'VigilForTheLost': { 'directorId': '1D0', 'name': { + 'cn': '高火力陆战魔导兵器——守夜', 'de': 'Vigil, Feuerkraft hoch zehn', 'en': 'Vigil for the Lost', 'fr': 'Vigile de feu', 'ja': '高火力陸戦魔導兵器「ヴィジル」', + 'ko': '고화력 육지전 마도 병기 \'비질\'', + 'tc': '高火力陸戰魔導兵器——守夜', }, }, 'WhereStrodeTheBehemoth': { 'directorId': '1DC', 'name': { + 'cn': '战栗之角——奇尔维尼克', 'de': 'Der untote Chlevnik', 'en': 'Where Strode the Behemoth', 'fr': 'Le mastodonte enragé', 'ja': '戦慄の角「チルヴニク」', + 'ko': '전율의 뿔 \'칠레브니크\'', + 'tc': '戰慄之角——奇爾維尼克', }, }, } as const; diff --git a/resources/south_horn_encounters.ts b/resources/south_horn_encounters.ts index ba7a304bc1e..583ed68a85f 100644 --- a/resources/south_horn_encounters.ts +++ b/resources/south_horn_encounters.ts @@ -7,145 +7,177 @@ const data: CeInfoType = { 'CalamityBound': { 'directorId': '32F', 'name': { + 'cn': '挣脱封印的大妖异——回廊恶魔', 'de': 'Das versiegelte Unheil', 'en': 'Calamity Bound', 'fr': 'Défi : Cloître à perpétuité', 'ja': '封印大妖「クロイスターデーモン」', + 'ko': '봉인된 대요마 \'회랑 악마\'', }, }, 'CompanyOfStone': { 'directorId': '343', 'name': { + 'cn': '石制骑士团', 'de': 'Die steinerne Staffel', 'en': 'Company of Stone', 'fr': 'L\'armée des argileux', 'ja': '石造りの守護騎士たち', + 'ko': '돌로 만들어진 수호 기사들', }, }, 'CrawlingDeath': { 'directorId': '330', 'name': { + 'cn': '潜影撕裂者——死亡爪', 'de': 'Das messerscharfe Schicksal', 'en': 'Crawling Death', 'fr': 'Défi : face de griffes', 'ja': '忍び寄る爪「デスクロー」', + 'ko': '은밀히 다가오는 손톱 \'죽음손아귀\'', }, }, 'CursedConcern': { 'directorId': '32B', 'name': { + 'cn': '贩卖诅咒的商贩——金钱龟', 'de': 'Das Feilschen ums Verfluchte', 'en': 'Cursed Concern', 'fr': 'Défi : être aux pièces', 'ja': '呪いの商亀「コイントートス」', + 'ko': '저주를 파는 거북 \'동전거북\'', }, }, 'EternalWatch': { 'directorId': '329', 'name': { + 'cn': '城塞守卫——复原狮像', 'de': 'Ausgebessert und verbessert', 'en': 'Eternal Watch', 'fr': 'Défi : comme un lion nouveau', 'ja': '復元された獅子像「リペアドライオン」', + 'ko': '오래된 사자상 \'복원된 사자\'', }, }, 'FlameOfDusk': { 'directorId': '32A', 'name': { + 'cn': '昏暗妖魂——鬼火苗', 'de': 'Das finsterste Feuer', 'en': 'Flame of Dusk', 'fr': 'Défi : les ailes de pierre', 'ja': '昏き篝火「ヒンキーパンク」', + 'ko': '어둑한 화톳불 \'힝키펑크\'', }, }, 'FromTimesBygone': { 'directorId': '323', 'name': { + 'cn': '双极的造物——神秘土偶', 'de': 'Von uralten Magien', 'en': 'From Times Bygone', 'fr': 'Défi : idole surprise', 'ja': '神秘の偶像「ミシカルアイドル」', + 'ko': '수수께끼에 싸인 토우 \'신비로운 우상\'', }, }, 'NoiseComplaint': { 'directorId': '327', 'name': { + 'cn': '厌鸟巨兽——进化加鲁拉', 'de': 'Keine Gnade dem Gefieder', 'en': 'Noise Complaint', 'fr': 'Défi : mammouth fâché', 'ja': '鳥嫌いの巨獣「ネオガルラ」', + 'ko': '새를 싫어하는 거대 짐승 \'네오 가루라\'', }, }, 'OnTheHunt': { 'directorId': '338', 'name': { + 'cn': '双足狮人——跃立狮', 'de': 'Gefürchtetes Gebrüll', 'en': 'On the Hunt', 'fr': 'Défi : à rugir debout', 'ja': '二足の獅子「ランパントライオン」', + 'ko': '두 발로 선 사자 \'직립 사자\'', }, }, 'ScourgeOfTheMind': { 'directorId': '320', 'name': { + 'cn': '脑髓爱好者——夺心魔', 'de': 'Die Geißel des Geistes', 'en': 'Scourge of the Mind', 'fr': 'Défi : l\'encéphalophage', 'ja': '脳髄愛好家「マインドフレイア」', + 'ko': '뇌수 애호가 \'정신탈취자\'', }, }, 'SharkAttack': { 'directorId': '32E', 'name': { + 'cn': '传说中的鲨鱼——尼姆瓣齿鲨', 'de': 'Jäger aus alten Legenden', 'en': 'Shark Attack', 'fr': 'Défi : homo selachus', 'ja': '伝説の鮫「ニーム・ペタロドゥス」', + 'ko': '전설의 상어 \'니므 페탈로두스\'', }, }, 'TheBlackRegiment': { 'directorId': '322', 'name': { + 'cn': '黑色连队', 'de': 'Das schwarze Regiment', 'en': 'The Black Regiment', 'fr': 'Plumes d\'encre', 'ja': '黒の連隊', + 'ko': '검은 연대', }, }, 'TheForkedTowerBlood': { 'directorId': '33B', 'name': { + 'cn': '两歧塔 力之塔', 'de': 'Der Turm des Blutes', 'en': 'The Forked Tower: Blood', 'fr': 'Tour fourchue de la Force', 'ja': 'フォークタワー:力の塔', + 'ko': '포크 타워: 힘의 탑', }, }, 'TheUnbridled': { 'directorId': '348', 'name': { + 'cn': '愤怒的人造人——新月狂战士', 'de': 'Zorn auf zwei Beinen', 'en': 'The Unbridled', 'fr': 'Défi : le rageux', 'ja': '怒れる人造人間「クレセント・バーサーカー」', + 'ko': '분노한 인조인간 \'초승달 광전사\'', }, }, 'TrialByClaw': { 'directorId': '349', 'name': { + 'cn': '拟造使魔——水晶龙', 'de': 'Tödliche Schönheit', 'en': 'Trial by Claw', 'fr': 'Défi : écailles de cristal', 'ja': '模造されしもの「水晶竜」', + 'ko': '모조된 존재 \'수정룡\'', }, }, 'WithExtremePrejudice': { 'directorId': '339', 'name': { + 'cn': '防卫指令', 'de': 'Mit absoluter Sicherheit', 'en': 'With Extreme Prejudice', 'fr': 'Cordon de sécurité', 'ja': 'セキュリティ・コマンドー', + 'ko': '보안 명령', }, }, } as const; diff --git a/resources/zadnor_encounters.ts b/resources/zadnor_encounters.ts index c622cd5c2df..ff788e06461 100644 --- a/resources/zadnor_encounters.ts +++ b/resources/zadnor_encounters.ts @@ -7,145 +7,193 @@ const data: CeInfoType = { 'AFamiliarFace': { 'directorId': '212', 'name': { + 'cn': '复制统治者——第四军团哈修马利姆', 'de': 'Hashmallim der Einiger', 'en': 'A Familiar Face', 'fr': 'Le Grand Ordonnateur', 'ja': '模造統制者「IVレギオン・ハシュマリム」', + 'ko': '모조 통제자 \'IV군단 하쉬말림\'', + 'tc': '複製統治者——第四軍團赫修馬倫', }, }, 'FeelingTheBurn': { 'directorId': '20E', 'name': { + 'cn': '试制型飞行型魔导装甲——黑色燃焰', 'de': 'Schwarzbrands Testflug', 'en': 'Feeling the Burn', 'fr': 'On arrête le progrès', 'ja': '試作飛行型魔導アーマー「ブラックバーン」', + 'ko': '시험작 비행형 마도 아머 \'블랙번\'', + 'tc': '試製性飛行魔導裝甲——黑色燃焰', }, }, 'FromBeyondTheGrave': { 'directorId': '21B', 'name': { + 'cn': '复制告密者——第四军团谢米哈扎', 'de': 'Shemhazai der Verräter', 'en': 'From Beyond the Grave', 'fr': 'Le Sycophante', 'ja': '模造密告者「IVレギオン・シュミハザ」', + 'ko': '모조 밀고자 \'IV군단 셰미하자\'', + 'tc': '複製告密者——第四軍團謝米哈扎', }, }, 'HeadOfTheSnake': { 'directorId': '21E', 'name': { + 'cn': '第四军团军政官——梅内纽斯', 'de': 'Menenius, Tribunus der IV. Legion', 'en': 'Head of the Snake', 'fr': 'Mener par l\'exemple', 'ja': '第IV軍団分遣隊長「メネニウス」', + 'ko': '제IV군단 분견대장 \'메네니우스\'', + 'tc': '第四軍團軍政官——梅內紐斯', }, }, 'HereComesTheCavalry': { 'directorId': '21C', 'name': { + 'cn': '钢铁人马——魔导骑兵大队', 'de': 'Halb Pferd, halb Garlear', 'en': 'Here Comes the Cavalry', 'fr': 'Un cavalier qui surgit hors de la nuit', 'ja': '鋼鉄の人馬「魔導騎兵大隊」', + 'ko': '강철의 인마 \'마도기병대대\'', + 'tc': '鋼鐵人馬——魔導騎兵大隊', }, }, 'LeanMeanMagitekMachines': { 'directorId': '218', 'name': { + 'cn': '新兵器投入——机甲百人队', 'de': 'Die Gepanzerte Zenturie', 'en': 'Lean, Mean, Magitek Machines', 'fr': 'Réusinage de code', 'ja': '新兵器投入「機甲百人隊」', + 'ko': '신병기 투입 \'기갑백인대\'', + 'tc': '新兵器投入——機甲百人隊', }, }, 'LooksToDieFor': { 'directorId': '207', 'name': { + 'cn': '光辉虹蛇——阿依达', 'de': 'Regenbogenschlange Ayida', 'en': 'Looks to Die For', 'fr': 'Écaillage en règle', 'ja': '輝ける虹蛇「アイダ」', + 'ko': '빛나는 무지개뱀 \'아이다\'', + 'tc': '光輝虹蛇——阿依達', }, }, 'NeverCryWolf': { 'directorId': '20F', 'name': { + 'cn': '邪恶冰狼——恶名苍狼', 'de': 'Eiswolf Hrodvitnir', 'en': 'Never Cry Wolf', 'fr': 'Et n\'y Hród\'viens plus !', 'ja': '邪悪なる氷狼「フローズヴィトニル」', + 'ko': '사악한 얼음늑대 \'흐로드비트니르\'', + 'tc': '邪惡冰狼——惡名蒼狼', }, }, 'OnSerpentsWings': { 'directorId': '211', 'name': { + 'cn': '群蛇狂舞——妖战百人队', 'de': 'Der Geistertrupp', 'en': 'On Serpents\' Wings', 'fr': 'Zirnitrop', 'ja': '妖霊使い「妖戦百人隊」', + 'ko': '요귀술사 \'요전백인대\'', + 'tc': '群蛇狂舞——妖戰百人隊', }, }, 'TakingTheLyonsShare': { 'directorId': '220', 'name': { + 'cn': '战栗的百兽之王——兽王莱昂', 'de': 'Revanche: Lyon der Bestienkönig', 'en': 'Taking the Lyon\'s Share', 'fr': 'La revanche de Lyon', 'ja': '戦慄の百獣使い「獣王ライアン」', + 'ko': '전율하는 백수의 왕 \'마수왕 라이언\'', + 'tc': '戰慄的百獸之王——獸王萊昂', }, }, 'TheBrokenBlade': { 'directorId': '21F', 'name': { + 'cn': '惨无人道的强化兵——超级调整兵达波格', 'de': 'Hyper-Dabog, Stärkster unter Stärksten', 'en': 'The Broken Blade', 'fr': 'Dabog l\'hyper-renforcé', 'ja': '非業の強化兵「ハイパーチューンド・ダボグ」', + 'ko': '비운의 강화병 \'특수강화병 다보그\'', + 'tc': '慘無人道的強化兵——超級調整兵達波格', }, }, 'TheDalriada': { 'directorId': '213', 'name': { + 'cn': '旗舰达尔里阿达号攻略战', 'de': 'Sturm auf die Dalriada', 'en': 'The Dalriada', 'fr': 'Assaut sur le Dalriada', 'ja': '旗艦ダル・リアータ攻略戦', + 'ko': '기함 달리아다 공략전', + 'tc': '旗艦達爾里阿達號攻略戰', }, }, 'ThereWouldBeBlood': { 'directorId': '210', 'name': { + 'cn': '异界魔王——汉比', 'de': 'Hanbi, König im Exil', 'en': 'There Would Be Blood', 'fr': 'Le Roi des cendres', 'ja': '異界の廃王「ハンビ」', + 'ko': '이계의 폐왕 \'한비\'', + 'tc': '異界魔王——漢比', }, }, 'TimeToBurn': { 'directorId': '21D', 'name': { + 'cn': '复制魔人——第四军团贝利亚斯', 'de': 'Dämonid Belias', 'en': 'Time to Burn', 'fr': 'Le Titan', 'ja': '模造魔人「IVレギオン・ベリアス」', + 'ko': '모조 마인 \'IV군단 벨리아스\'', + 'tc': '複製魔人——第四軍團貝利亞斯', }, }, 'WithDiremiteAndMain': { 'directorId': '221', 'name': { + 'cn': '焦土魔蝎——赫德提特', 'de': 'Hedetet, Stachel des Karglands', 'en': 'With Diremite and Main', 'fr': 'C\'est dans ma nature', 'ja': '焦土の魔蠍「ヘデテト」', + 'ko': '초토의 마수 전갈 \'헤데테트\'', + 'tc': '焦土魔蠍——赫德提特', }, }, 'WornToAShadow': { 'directorId': '222', 'name': { + 'cn': '有角凶鸟——阿尔科诺斯特', 'de': 'Alkonost, schrecklich und gefiedert', 'en': 'Worn to a Shadow', 'fr': 'Oiseau d\'enfer', 'ja': '有角の凶鳥「アルコノスト」', + 'ko': '뿔 달린 흉조 \'알코노스트\'', + 'tc': '有角凶鳥——阿爾科諾斯特', }, }, } as const; diff --git a/util/gen_ce_info_and_maps.ts b/util/gen_ce_info_and_maps.ts index d4edb9e81d1..17d819d5e77 100644 --- a/util/gen_ce_info_and_maps.ts +++ b/util/gen_ce_info_and_maps.ts @@ -4,7 +4,7 @@ import { LocaleText } from '../types/trigger'; import Overrides from './ce_overrides'; import { ConsoleLogger, LogLevelKey } from './console_logger'; -import { cleanName } from './csv_util'; +import { cleanName, getCnTable, getKoTable, getTcTable } from './csv_util'; import { OutputFileAttributes, XivApi } from './xivapi'; // Generate data relating to the Critical Engagements of the Bozjan Southern @@ -78,6 +78,9 @@ const _DE_FIELDS = [ 'Name@ja', ]; +const _LOCALE_TABLE = 'DynamicEvent'; +const _LOCALE_COLUMNS = ['#', 'Name']; + type ResultDynamicEventSetType = { row_id: number; subrow_id: number; @@ -100,6 +103,12 @@ type ResultDynamicEventType = { }; }; +type LocaleCsvTables = { + cn: Record>; + ko: Record>; + tc: Record>; +}; + type IndexedDynamicEventSetSubrow = { [subrow: number]: ResultDynamicEventSetType; }; @@ -134,6 +143,8 @@ const _SCRIPT_NAME = path.basename(import.meta.url); const log = new ConsoleLogger(); log.setLogLevel('alert'); +let localeCsvTables: LocaleCsvTables; + const indexDeSetData = (data: ResultDynamicEventSetType[]): IndexedDynamicEventSetRow => { const deSetData: IndexedDynamicEventSetRow = {}; for (const row of data) { @@ -155,6 +166,21 @@ const indexDeData = (data: ResultDynamicEventType[]): IndexedDynamicEventType => return deData; }; +const fetchLocaleCsvTables = async (): Promise => { + log.debug(`Table: ${_LOCALE_TABLE} | Query columns: [${_LOCALE_COLUMNS.toString()}]`); + log.debug('Fetching \'cn\' table...'); + const cnTable = await getCnTable(_LOCALE_TABLE, _LOCALE_COLUMNS); + log.debug('Fetching \'ko\' table...'); + const koTable = await getKoTable(_LOCALE_TABLE, _LOCALE_COLUMNS); + log.debug('Fetching \'tc\' table...'); + const tcTable = await getTcTable(_LOCALE_TABLE, _LOCALE_COLUMNS); + return { + cn: cnTable, + ko: koTable, + tc: tcTable, + }; +}; + const generateCEList = ( deSetData: IndexedDynamicEventSetSubrow, deData: IndexedDynamicEventType, @@ -210,6 +236,9 @@ const generateCEList = ( de: capitalize(data.fields['Name@de']), fr: capitalize(data.fields['Name@fr']), ja: capitalize(data.fields['Name@ja']), + cn: capitalize(localeCsvTables.cn[deId]?.Name), + ko: capitalize(localeCsvTables.ko[deId]?.Name), + tc: capitalize(localeCsvTables.tc[deId]?.Name), }; const ceName: LocaleText = Object.assign({}, deNames); @@ -288,13 +317,16 @@ const generateCEMap = ( return ceInfoMap; }; -const assembleData = ( +const assembleData = async ( deSetRawData: ResultDynamicEventSetType[], deRawData: ResultDynamicEventType[], -): OutputContainer => { +): Promise => { const deSetData = indexDeSetData(deSetRawData); const deData = indexDeData(deRawData); + log.info('Fetching locale CSV tables...'); + localeCsvTables = await fetchLocaleCsvTables(); + const bozjaSetData = deSetData[1] ?? {}; const zadnorSetData = deSetData[2] ?? {}; const southHornSetData = deSetData[3] ?? {}; @@ -336,7 +368,7 @@ export default async (logLevel: LogLevelKey): Promise => { _DE_FIELDS, ) as ResultDynamicEventType[]; - const outputData = assembleData(deSetRawData, deRawData); + const outputData = await assembleData(deSetRawData, deRawData); await api.writeFile( path.basename(import.meta.url),