From 05072925d587115cf791aebc3b1944cc631edad3 Mon Sep 17 00:00:00 2001 From: LmeSzinc <37934724+LmeSzinc@users.noreply.github.com> Date: Mon, 25 Sep 2023 12:23:59 +0800 Subject: [PATCH 1/8] Fix: Start running at Himeko trial (#107) --- assets/share/base/page/GACHA_CHECK.2.png | Bin 0 -> 8467 bytes tasks/base/assets/assets_base_page.py | 23 ++++++++++++++++------- tasks/daily/trail.py | 4 +++- 3 files changed, 19 insertions(+), 8 deletions(-) create mode 100644 assets/share/base/page/GACHA_CHECK.2.png diff --git a/assets/share/base/page/GACHA_CHECK.2.png b/assets/share/base/page/GACHA_CHECK.2.png new file mode 100644 index 0000000000000000000000000000000000000000..eea3737c21cf8d12b064474c0d15aae1549b8848 GIT binary patch literal 8467 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 Q^VikKs#=dql&#+WKbNiRT>t<8 literal 0 HcmV?d00001 diff --git a/tasks/base/assets/assets_base_page.py b/tasks/base/assets/assets_base_page.py index cd6663cba..ae39e0773 100644 --- a/tasks/base/assets/assets_base_page.py +++ b/tasks/base/assets/assets_base_page.py @@ -85,13 +85,22 @@ ) GACHA_CHECK = ButtonWrapper( name='GACHA_CHECK', - share=Button( - file='./assets/share/base/page/GACHA_CHECK.png', - area=(40, 20, 74, 54), - search=(20, 0, 94, 74), - color=(157, 139, 112), - button=(40, 20, 74, 54), - ), + share=[ + Button( + file='./assets/share/base/page/GACHA_CHECK.png', + area=(40, 20, 74, 54), + search=(20, 0, 94, 74), + color=(157, 139, 112), + button=(40, 20, 74, 54), + ), + Button( + file='./assets/share/base/page/GACHA_CHECK.2.png', + area=(41, 21, 74, 54), + search=(20, 0, 94, 74), + color=(188, 167, 142), + button=(41, 21, 74, 54), + ), + ], ) GUIDE_CHECK = ButtonWrapper( name='GUIDE_CHECK', diff --git a/tasks/daily/trail.py b/tasks/daily/trail.py index 295fcef64..f911b1491 100644 --- a/tasks/daily/trail.py +++ b/tasks/daily/trail.py @@ -15,8 +15,10 @@ def enter_himeko_trial(self): """ logger.info('Enter Himeko trial') switched = False - if self.match_template_color(HIMEKO_CHECK): + if self.appear(HIMEKO_CHECK): logger.info(f'Already at {HIMEKO_CHECK}') + elif self.match_template_color(START_TRIAL): + logger.info(f'Already at {START_TRIAL}') elif self.match_template_color(REGULAR_GACHA_CHECK): logger.info(f'Already at {REGULAR_GACHA_CHECK}') elif self.ui_page_appear(page_gacha): From ddb3ba5ae3a551079dc6502b3e0dd11eb835c986 Mon Sep 17 00:00:00 2001 From: LmeSzinc <37934724+LmeSzinc@users.noreply.github.com> Date: Mon, 25 Sep 2023 12:24:29 +0800 Subject: [PATCH 2/8] Fix: [EN] OCR error at Herta's Office --- tasks/base/main_page.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasks/base/main_page.py b/tasks/base/main_page.py index 8c9f3322d..7d9fcc726 100644 --- a/tasks/base/main_page.py +++ b/tasks/base/main_page.py @@ -19,6 +19,8 @@ def after_process(self, result): # RobotSettlement1 result = re.sub(r'-[Ii1]$', '', result) result = re.sub(r'\d+$', '', result) + # Herta's OfficeY/ + result = re.sub(r'Y/?$', '', result) # 累塔的办公室 result = result.replace('累塔', '黑塔') From 3b7b6c6d96e0a7d62c51b015d7e15f1066d184a1 Mon Sep 17 00:00:00 2001 From: LmeSzinc <37934724+LmeSzinc@users.noreply.github.com> Date: Mon, 25 Sep 2023 12:28:18 +0800 Subject: [PATCH 3/8] Fix: Handle INFO_CLOSE during walk --- route/daily/HimekoTrial.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/route/daily/HimekoTrial.py b/route/daily/HimekoTrial.py index 99d093180..04d8279eb 100644 --- a/route/daily/HimekoTrial.py +++ b/route/daily/HimekoTrial.py @@ -1,6 +1,6 @@ from module.logger import logger from tasks.combat.combat import Combat -from tasks.daily.assets.assets_daily_trial import START_TRIAL +from tasks.daily.assets.assets_daily_trial import INFO_CLOSE, START_TRIAL from tasks.daily.trail import CharacterTrial from tasks.map.control.waypoint import Waypoint from tasks.map.keywords.plane import Jarilo_BackwaterPass @@ -20,6 +20,11 @@ def combat_end(): return super().wait_next_skill(expected_end=combat_end, skip_first_screenshot=skip_first_screenshot) + def walk_additional(self) -> bool: + if self.appear_then_click(INFO_CLOSE, interval=2): + return True + return super().walk_additional() + def combat_execute(self, expected_end=None): # Battle 1/3 # Enemy cleared by follow up From 1d7efd424cca74fe942cdcdbcd954a55870c5a54 Mon Sep 17 00:00:00 2001 From: LmeSzinc <37934724+LmeSzinc@users.noreply.github.com> Date: Mon, 25 Sep 2023 23:00:52 +0800 Subject: [PATCH 4/8] Fix: Trying to fix use_Q() exit (#108) --- route/daily/HimekoTrial.py | 15 +++++++++++---- tasks/combat/skill.py | 13 +++++++------ 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/route/daily/HimekoTrial.py b/route/daily/HimekoTrial.py index 04d8279eb..64984842c 100644 --- a/route/daily/HimekoTrial.py +++ b/route/daily/HimekoTrial.py @@ -47,6 +47,9 @@ def combat_execute(self, expected_end=None): # To achieve In_a_single_battle_inflict_3_Weakness_Break_of_different_Types self.use_A() self.wait_next_skill() + # Just whoever user A, in case Himeko Q didn't kill it, usually to be Herta + self.use_A() + self.wait_next_skill() # Himeko Q # To achieve Use_an_Ultimate_to_deal_the_final_blow_1_time # May kill the enemy @@ -62,10 +65,14 @@ def combat_execute(self, expected_end=None): # Combat should end here, just incase logger.warning(f'Himeko trial is not going as expected') - for _ in range(3): + for _ in range(2): self.use_E() if not self.wait_next_skill(): return + for _ in range(10): + self.use_A() + if not self.wait_next_skill(): + return def route_item_enemy(self): self.enter_himeko_trial() @@ -114,11 +121,11 @@ def route_enemy(self): # Goto boss self.clear_enemy( # Before the corner, turn right - Waypoint((571.7, 371.3)).run_2x(), + Waypoint((571.7, 371.3)).run(), # Go through arched door - Waypoint((581.5, 383.3)).run_2x(), + Waypoint((581.5, 383.3)).run(), # Boss - Waypoint((613.5, 427.3)).run_2x(), + Waypoint((613.5, 427.3)), ) def exit(self): diff --git a/tasks/combat/skill.py b/tasks/combat/skill.py index 843526a62..35e8c05fa 100644 --- a/tasks/combat/skill.py +++ b/tasks/combat/skill.py @@ -43,13 +43,13 @@ def _skill_click(self, button, skip_first_screenshot=True): else: # Skill animation on going if clicked: - logger.info(f'Skill used: {button}') - break - # New skill icon - if prev_image is not None: - if not match_template(self.image_crop(button), prev_image): - logger.info(f'Skill used: {button}') + logger.info(f'Skill used: {button} (skill ongoing)') break + # New skill icon + if prev_image is not None: + if not match_template(self.image_crop(button), prev_image): + logger.info(f'Skill used: {button} (icon changed)') + break def _is_skill_active(self, button): flag = self.image_color_count(button, color=(220, 196, 145), threshold=221, count=50) @@ -126,5 +126,6 @@ def use_Q(self, position: int) -> bool: return False self._skill_click(button) + self.wait_next_skill() self._skill_click(USE_Q_AIM) return True From 907f2303e9702d8677e22ff3c35b9ca31113607e Mon Sep 17 00:00:00 2001 From: LmeSzinc <37934724+LmeSzinc@users.noreply.github.com> Date: Mon, 25 Sep 2023 23:24:40 +0800 Subject: [PATCH 5/8] Add: Spanish keywords --- dev_tools/keyword_extract.py | 2 +- module/config/config_updater.py | 3 +- module/config/utils.py | 2 +- module/ocr/keyword.py | 12 ++ tasks/assignment/keywords/entry.py | 15 +++ tasks/assignment/keywords/group.py | 3 + tasks/battle_pass/keywords/mission_tab.py | 3 + tasks/battle_pass/keywords/quest.py | 11 ++ tasks/battle_pass/keywords/quest_state.py | 2 + tasks/battle_pass/keywords/tab.py | 2 + tasks/character/keywords/character_list.py | 33 +++++ tasks/daily/keywords/daily_quest.py | 25 ++++ tasks/daily/keywords/daily_quest_state.py | 5 + tasks/dungeon/keywords/dungeon.py | 41 ++++++ tasks/dungeon/keywords/dungeon_entrance.py | 2 + tasks/dungeon/keywords/nav.py | 7 + tasks/dungeon/keywords/tab.py | 3 + tasks/forgotten_hall/keywords/stage.py | 15 +++ tasks/item/keywords/tab.py | 7 + tasks/map/keywords/plane.py | 33 +++++ tasks/rogue/keywords/blessing.py | 144 +++++++++++++++++++++ tasks/rogue/keywords/bonus.py | 6 + tasks/rogue/keywords/curio.py | 68 ++++++++++ tasks/rogue/keywords/enhancement.py | 1 + tasks/rogue/keywords/path.py | 8 ++ tasks/rogue/keywords/resonance.py | 48 +++++++ 26 files changed, 498 insertions(+), 3 deletions(-) diff --git a/dev_tools/keyword_extract.py b/dev_tools/keyword_extract.py index 2d3282db0..a8b85aabf 100644 --- a/dev_tools/keyword_extract.py +++ b/dev_tools/keyword_extract.py @@ -8,7 +8,7 @@ from module.config.utils import deep_get, read_file from module.logger import logger -UI_LANGUAGES = ['cn', 'cht', 'en', 'jp'] +UI_LANGUAGES = ['cn', 'cht', 'en', 'jp', 'es'] def text_to_variable(text): diff --git a/module/config/config_updater.py b/module/config/config_updater.py index 436fd4597..c73d44143 100644 --- a/module/config/config_updater.py +++ b/module/config/config_updater.py @@ -26,6 +26,7 @@ class GeneratedConfig: 'en-US': 'en', 'ja-JP': 'jp', 'zh-TW': 'cht', + 'es-ES': 'es', } @@ -351,7 +352,7 @@ def deep_load(keys, default=True, words=('name', 'help')): # deep_set(new, keys=path, value=f'[{prefix}] {_list[index]}') # Dungeon names - if lang not in ['zh-CN', 'zh-TW', 'en-US']: + if lang not in ['zh-CN', 'zh-TW', 'en-US', 'es-ES']: ingame_lang = gui_lang_to_ingame_lang(lang) from tasks.dungeon.keywords import DungeonList dailies = deep_get(self.argument, keys='Dungeon.Name.option') diff --git a/module/config/utils.py b/module/config/utils.py index df653836a..1c4a1b69c 100644 --- a/module/config/utils.py +++ b/module/config/utils.py @@ -10,7 +10,7 @@ import module.config.server as server_ from module.config.atomicwrites import atomic_write -LANGUAGES = ['zh-CN', 'en-US', 'ja-JP', 'zh-TW'] +LANGUAGES = ['zh-CN', 'en-US', 'ja-JP', 'zh-TW', 'es-ES'] SERVER_TO_TIMEZONE = { 'CN-Official': timedelta(hours=8), 'CN-Bilibili': timedelta(hours=8), diff --git a/module/ocr/keyword.py b/module/ocr/keyword.py index 3f106ebee..bd7c4a0ef 100644 --- a/module/ocr/keyword.py +++ b/module/ocr/keyword.py @@ -22,6 +22,7 @@ class Keyword: en: str jp: str cht: str + es: str """ Instance attributes and methods @@ -47,6 +48,10 @@ def jp_parsed(self) -> str: def cht_parsed(self) -> str: return parse_name(self.cht) + @cached_property + def es_parsed(self) -> str: + return parse_name(self.cht) + def __str__(self): return f'{self.__class__.__name__}({self.name})' @@ -87,6 +92,11 @@ def _keywords_to_find(self, lang: str = None, ignore_punctuation=True): return [self.cht_parsed] else: return [self.cht] + case 'es': + if ignore_punctuation: + return [self.es_parsed] + else: + return [self.es] else: if ignore_punctuation: return [ @@ -94,6 +104,7 @@ def _keywords_to_find(self, lang: str = None, ignore_punctuation=True): self.en_parsed, self.jp_parsed, self.cht_parsed, + self.es_parsed, ] else: return [ @@ -101,6 +112,7 @@ def _keywords_to_find(self, lang: str = None, ignore_punctuation=True): self.en, self.jp, self.cht, + self.es, ] """ diff --git a/tasks/assignment/keywords/entry.py b/tasks/assignment/keywords/entry.py index 76817cdbd..65325ad22 100644 --- a/tasks/assignment/keywords/entry.py +++ b/tasks/assignment/keywords/entry.py @@ -10,6 +10,7 @@ cht='九十億個名字', en='Nine Billion Names', jp='九十億の御名', + es='Nueve mil millones de nombres', ) Destruction_of_the_Destroyer = AssignmentEntry( id=2, @@ -18,6 +19,7 @@ cht='毀滅者的覆滅', en='Destruction of the Destroyer', jp='壊滅者の覆没', + es='La destrucción del destructor', ) Winter_Soldiers = AssignmentEntry( id=3, @@ -26,6 +28,7 @@ cht='寒冬的戰士們', en='Winter Soldiers', jp='寒冬の戦士たち', + es='Los guerreros del invierno', ) Born_to_Obey = AssignmentEntry( id=4, @@ -34,6 +37,7 @@ cht='生而服從', en='Born to Obey', jp='生まれながらに服従する', + es='Creados para obedecer', ) Root_Out_the_Turpitude = AssignmentEntry( id=5, @@ -42,6 +46,7 @@ cht='根除惡孽', en='Root Out the Turpitude', jp='悪孽を根絶やしに', + es='La raíz del mal', ) Fire_Lord_Inflames_Blades_of_War = AssignmentEntry( id=6, @@ -50,6 +55,7 @@ cht='火帝動爐銷劍戟', en='Fire Lord Inflames Blades of War', jp='剣戟を焼却する火帝炉', + es='Prendan los fuelles, fundan las armas', ) Nameless_Land_Nameless_People = AssignmentEntry( id=7, @@ -58,6 +64,7 @@ cht='無名之地,無名之人', en='Nameless Land, Nameless People', jp='無名の地、無名の人', + es='Lugar anónimo, personas anónimas', ) Akashic_Records = AssignmentEntry( id=8, @@ -66,6 +73,7 @@ cht='阿卡夏紀錄', en='Akashic Records', jp='アーカーシャの記録', + es='Los Registros de Akasha', ) The_Invisible_Hand = AssignmentEntry( id=9, @@ -74,6 +82,7 @@ cht='看不見的手', en='The Invisible Hand', jp='見えざる手', + es='La mano invisible', ) Abandoned_and_Insulted = AssignmentEntry( id=10, @@ -82,6 +91,7 @@ cht='被廢棄與損害的', en='Abandoned and Insulted', jp='捨てられしものと傷つけられしもの', + es='Abandonado e insultado', ) Spring_of_Life = AssignmentEntry( id=11, @@ -90,6 +100,7 @@ cht='生命之泉', en='Spring of Life', jp='生命の泉', + es='La fuente de la vida', ) The_Land_of_Gold = AssignmentEntry( id=12, @@ -98,6 +109,7 @@ cht='黃金大地', en='The Land of Gold', jp='黄金の大地', + es='Tierra de oportunidades', ) The_Blossom_in_the_Storm = AssignmentEntry( id=13, @@ -106,6 +118,7 @@ cht='風暴中怒放的花', en='The Blossom in the Storm', jp='嵐の中で咲き誇る花', + es='Flores en la tormenta', ) Legend_of_the_Puppet_Master = AssignmentEntry( id=14, @@ -114,6 +127,7 @@ cht='偃師傳說', en='Legend of the Puppet Master', jp='傀儡師伝説', + es='La leyenda del titiritero', ) The_Wages_of_Humanity = AssignmentEntry( id=15, @@ -122,4 +136,5 @@ cht='贍養人類', en='The Wages of Humanity', jp='人類扶養', + es='La paga de la humanidad', ) diff --git a/tasks/assignment/keywords/group.py b/tasks/assignment/keywords/group.py index c1fefd32e..212416d7d 100644 --- a/tasks/assignment/keywords/group.py +++ b/tasks/assignment/keywords/group.py @@ -10,6 +10,7 @@ cht='專屬素材', en='Character Materials', jp='専用素材', + es='Materiales exclusivos', ) EXP_Materials_Credits = AssignmentGroup( id=2, @@ -18,6 +19,7 @@ cht='經驗素材/信用點', en='EXP Materials/Credits', jp='経験値素材/信用ポイント', + es='Materiales de EXP/créditos', ) Synthesis_Materials = AssignmentGroup( id=3, @@ -26,4 +28,5 @@ cht='合成素材', en='Synthesis Materials', jp='合成材料', + es='Materiales de síntesis', ) diff --git a/tasks/battle_pass/keywords/mission_tab.py b/tasks/battle_pass/keywords/mission_tab.py index 26eefccd4..7f82e153c 100644 --- a/tasks/battle_pass/keywords/mission_tab.py +++ b/tasks/battle_pass/keywords/mission_tab.py @@ -10,6 +10,7 @@ cht='本日任務', en="Today's Missions", jp='本日のクエスト', + es='Misiones de hoy', ) This_Week_Missions = BattlePassMissionTab( id=2, @@ -18,6 +19,7 @@ cht='本週任務', en="This Week's Missions", jp='今週のクエスト', + es='Misiones de esta semana', ) This_Period_Missions = BattlePassMissionTab( id=3, @@ -26,4 +28,5 @@ cht='本期任務', en="This Period's Missions", jp='今期のクエスト', + es='Misiones de esta temporada', ) diff --git a/tasks/battle_pass/keywords/quest.py b/tasks/battle_pass/keywords/quest.py index c93260959..ab0827a7f 100644 --- a/tasks/battle_pass/keywords/quest.py +++ b/tasks/battle_pass/keywords/quest.py @@ -10,6 +10,7 @@ cht='登入遊戲', en='Log in to the game', jp='ゲームにログインする', + es='Inicia sesión en el juego', ) Consume_1_Trailblaze_Power = BattlePassQuest( id=2, @@ -18,6 +19,7 @@ cht='累積消耗1點開拓力', en='Consume 1 Trailblaze Power', jp='累計で開拓力×1を消費する', + es='Consume 1 pts. de Poder trazacaminos', ) Dispatch_1_assignments = BattlePassQuest( id=3, @@ -26,6 +28,7 @@ cht='派遣1次委託', en='Dispatch 1 assignment(s)', jp='依頼に1回派遣する', + es='Asigna 1 encargo', ) Reach_500_on_Daily_Training_Activity = BattlePassQuest( id=4, @@ -34,6 +37,7 @@ cht='每日實訓活躍度達到500', en='Reach 500 on Daily Training Activity', jp='デイリー訓練のアクティブ度が500に到達する', + es='Acumula 500 pts. de actividad en el Entrenamiento diario', ) Complete_Simulated_Universe_1_times = BattlePassQuest( id=5, @@ -42,6 +46,7 @@ cht='完成1次「模擬宇宙」', en='Complete Simulated Universe 1 time(s)', jp='「模擬宇宙」を1回クリアする', + es='Completa el Universo Simulado 1 vez', ) Clear_Calyx_1_times = BattlePassQuest( id=6, @@ -50,6 +55,7 @@ cht='完成1次「擬造花萼」', en='Clear Calyx 1 time(s)', jp='「疑似花萼」を1回クリアする', + es='Completa Cáliz 1 vez', ) Complete_Echo_of_War_1_times = BattlePassQuest( id=7, @@ -58,6 +64,7 @@ cht='完成1次「歷戰餘響」', en='Complete Echo of War 1 time(s)', jp='「歴戦余韻」を1回クリアする', + es='Completa Ecos de la guerra 1 vez', ) Use_300000_credits = BattlePassQuest( id=8, @@ -66,6 +73,7 @@ cht='累積消耗30萬信用點', en='Use 300,000 credits', jp='累計で信用ポイント×30万を消費する', + es='Consume 300000 créditos', ) Synthesize_Consumables_1_times = BattlePassQuest( id=9, @@ -74,6 +82,7 @@ cht='累積合成消耗品1次', en='Synthesize Consumables 1 time(s)', jp='消耗品を累計1回合成する', + es='Sintetiza consumibles 1 veces', ) Clear_Stagnant_Shadow_1_times = BattlePassQuest( id=10, @@ -82,6 +91,7 @@ cht='完成1次「凝滯虛影」', en='Clear Stagnant Shadow 1 time(s)', jp='「凝結虚影」を1回クリアする', + es='Completa Sombra paralizada 1 veces', ) Clear_Cavern_of_Corrosion_1_times = BattlePassQuest( id=11, @@ -90,4 +100,5 @@ cht='完成1次「侵蝕隧洞」', en='Clear Cavern of Corrosion 1 time(s)', jp='「侵蝕トンネル」を1回クリアする', + es='Completa Caverna de la corrosión 1 veces', ) diff --git a/tasks/battle_pass/keywords/quest_state.py b/tasks/battle_pass/keywords/quest_state.py index f6720c0df..785cda3eb 100644 --- a/tasks/battle_pass/keywords/quest_state.py +++ b/tasks/battle_pass/keywords/quest_state.py @@ -10,6 +10,7 @@ cht='領取', en='Claim', jp='受取', + es='Recoger', ) Navigate = BattlePassQuestState( id=2, @@ -18,4 +19,5 @@ cht='追蹤', en='Navigate', jp='追跡', + es='Seguir', ) diff --git a/tasks/battle_pass/keywords/tab.py b/tasks/battle_pass/keywords/tab.py index 5051712ba..a0016a420 100644 --- a/tasks/battle_pass/keywords/tab.py +++ b/tasks/battle_pass/keywords/tab.py @@ -10,6 +10,7 @@ cht='獎勵', en='Rewards', jp='報酬', + es='Recompensas', ) Missions = BattlePassTab( id=2, @@ -18,4 +19,5 @@ cht='任務', en='Missions', jp='クエスト', + es='Misiones', ) diff --git a/tasks/character/keywords/character_list.py b/tasks/character/keywords/character_list.py index a791ec048..06acf958f 100644 --- a/tasks/character/keywords/character_list.py +++ b/tasks/character/keywords/character_list.py @@ -10,6 +10,7 @@ cht='阿蘭', en='Arlan', jp='アーラン', + es='Arlan', ) Asta = CharacterList( id=2, @@ -18,6 +19,7 @@ cht='艾絲妲', en='Asta', jp='アスター', + es='Asta', ) Bailu = CharacterList( id=3, @@ -26,6 +28,7 @@ cht='白露', en='Bailu', jp='白露', + es='Bailu', ) Blade = CharacterList( id=4, @@ -34,6 +37,7 @@ cht='刃', en='Blade', jp='刃', + es='Blade', ) Bronya = CharacterList( id=5, @@ -42,6 +46,7 @@ cht='布洛妮婭', en='Bronya', jp='ブローニャ', + es='Bronya', ) Clara = CharacterList( id=6, @@ -50,6 +55,7 @@ cht='克拉拉', en='Clara', jp='クラーラ', + es='Clara', ) DanHeng = CharacterList( id=7, @@ -58,6 +64,7 @@ cht='丹恆', en='Dan Heng', jp='丹恒', + es='Dan Heng', ) DanHengImbibitorLunae = CharacterList( id=8, @@ -66,6 +73,7 @@ cht='丹恆•飲月', en='Dan Heng • Imbibitor Lunae', jp='丹恒・飲月', + es='Dan Heng - Imbibitor Lunae', ) FuXuan = CharacterList( id=9, @@ -74,6 +82,7 @@ cht='符玄', en='Fu Xuan', jp='符玄', + es='Fu Xuan', ) Gepard = CharacterList( id=10, @@ -82,6 +91,7 @@ cht='傑帕德', en='Gepard', jp='ジェパード', + es='Gepard', ) Herta = CharacterList( id=11, @@ -90,6 +100,7 @@ cht='黑塔', en='Herta', jp='ヘルタ', + es='Herta', ) Himeko = CharacterList( id=12, @@ -98,6 +109,7 @@ cht='姬子', en='Himeko', jp='姫子', + es='Himeko', ) Hook = CharacterList( id=13, @@ -106,6 +118,7 @@ cht='虎克', en='Hook', jp='フック', + es='Hook', ) JingYuan = CharacterList( id=14, @@ -114,6 +127,7 @@ cht='景元', en='Jing Yuan', jp='景元', + es='Jing Yuan', ) Kafka = CharacterList( id=15, @@ -122,6 +136,7 @@ cht='卡芙卡', en='Kafka', jp='カフカ', + es='Kafka', ) Luka = CharacterList( id=16, @@ -130,6 +145,7 @@ cht='盧卡', en='Luka', jp='ルカ', + es='Luka', ) Luocha = CharacterList( id=17, @@ -138,6 +154,7 @@ cht='羅剎', en='Luocha', jp='羅刹', + es='Luocha', ) Lynx = CharacterList( id=18, @@ -146,6 +163,7 @@ cht='玲可', en='Lynx', jp='リンクス', + es='Lynx', ) March7th = CharacterList( id=19, @@ -154,6 +172,7 @@ cht='三月七', en='March 7th', jp='三月なのか', + es='Siete de Marzo', ) Natasha = CharacterList( id=20, @@ -162,6 +181,7 @@ cht='娜塔莎', en='Natasha', jp='ナターシャ', + es='Natasha', ) Pela = CharacterList( id=21, @@ -170,6 +190,7 @@ cht='佩拉', en='Pela', jp='ペラ', + es='Pela', ) Qingque = CharacterList( id=22, @@ -178,6 +199,7 @@ cht='青雀', en='Qingque', jp='青雀', + es='Qingque', ) Sampo = CharacterList( id=23, @@ -186,6 +208,7 @@ cht='桑博', en='Sampo', jp='サンポ', + es='Sampo', ) Seele = CharacterList( id=24, @@ -194,6 +217,7 @@ cht='希兒', en='Seele', jp='ゼーレ', + es='Seele', ) Serval = CharacterList( id=25, @@ -202,6 +226,7 @@ cht='希露瓦', en='Serval', jp='セーバル', + es='Serval', ) SilverWolf = CharacterList( id=26, @@ -210,6 +235,7 @@ cht='銀狼', en='Silver Wolf', jp='銀狼', + es='Silver Wolf', ) Sushang = CharacterList( id=27, @@ -218,6 +244,7 @@ cht='素裳', en='Sushang', jp='素裳', + es='Sushang', ) Tingyun = CharacterList( id=28, @@ -226,6 +253,7 @@ cht='停雲', en='Tingyun', jp='停雲', + es='Tingyun', ) TrailblazerDestruction = CharacterList( id=29, @@ -234,6 +262,7 @@ cht='Trailblazer•毀滅', en='Trailblazer: Destruction', jp='Trailblazer・壊滅', + es='Trailblazer: Destrucción', ) TrailblazerPreservation = CharacterList( id=30, @@ -242,6 +271,7 @@ cht='Trailblazer•存護', en='Trailblazer: Preservation', jp='Trailblazer・存護', + es='Trailblazer: Conservación', ) Welt = CharacterList( id=31, @@ -250,6 +280,7 @@ cht='瓦爾特', en='Welt', jp='ヴェルト', + es='Welt', ) Yanqing = CharacterList( id=32, @@ -258,6 +289,7 @@ cht='彥卿', en='Yanqing', jp='彦卿', + es='Yanqing', ) Yukong = CharacterList( id=33, @@ -266,4 +298,5 @@ cht='馭空', en='Yukong', jp='御空', + es='Yukong', ) diff --git a/tasks/daily/keywords/daily_quest.py b/tasks/daily/keywords/daily_quest.py index 8c9cb87c9..55d7a753c 100644 --- a/tasks/daily/keywords/daily_quest.py +++ b/tasks/daily/keywords/daily_quest.py @@ -10,6 +10,7 @@ cht='完成1個每日任務', en='Complete 1 Daily Mission', jp='デイリークエストを1回クリアする', + es='Completa 1 misión diaria', ) Clear_Calyx_Golden_1_times = DailyQuest( id=2, @@ -18,6 +19,7 @@ cht='完成1次「擬造花萼(金)」', en='Clear Calyx (Golden) 1 time(s)', jp='「疑似花萼(金)」を1回クリアする', + es='Completa Cáliz (oro) 1 vez', ) Complete_Calyx_Crimson_1_time = DailyQuest( id=3, @@ -26,6 +28,7 @@ cht='完成1次「擬造花萼(赤)」', en='Complete Calyx (Crimson) 1 time', jp='「疑似花萼(赤)」を1回クリアする', + es='Completa Cáliz (carmesí) 1 vez', ) Clear_Stagnant_Shadow_1_times = DailyQuest( id=4, @@ -34,6 +37,7 @@ cht='完成1次「凝滯虛影」', en='Clear Stagnant Shadow 1 time(s)', jp='「凝結虚影」を1回クリアする', + es='Completa Sombra paralizada 1 veces', ) Clear_Cavern_of_Corrosion_1_times = DailyQuest( id=5, @@ -42,6 +46,7 @@ cht='完成1次「侵蝕隧洞」', en='Clear Cavern of Corrosion 1 time(s)', jp='「侵蝕トンネル」を1回クリアする', + es='Completa Caverna de la corrosión 1 veces', ) In_a_single_battle_inflict_3_Weakness_Break_of_different_Types = DailyQuest( id=6, @@ -50,6 +55,7 @@ cht='單場戰鬥中,觸發3種不同屬性的弱點擊破', en='In a single battle, inflict 3 Weakness Break of different Types', jp='一度の戦闘で、異なる3種の属性の弱点撃破を発動する', + es='En una sola batalla, inflige 3 tipos de Ruptura de Debilidad', ) Inflict_Weakness_Break_5_times = DailyQuest( id=7, @@ -58,6 +64,7 @@ cht='累積觸發弱點擊破效果5次', en='Inflict Weakness Break 5 times', jp='累計で弱点撃破効果を5回発動する', + es='Inflige Ruptura de Debilidad 5 veces', ) Defeat_a_total_of_20_enemies = DailyQuest( id=8, @@ -66,6 +73,7 @@ cht='累積消滅20個敵人', en='Defeat a total of 20 enemies', jp='敵を累計で20体倒す', + es='Derrota a 20 enemigos', ) Enter_combat_by_attacking_enemy_Weakness_and_win_3_times = DailyQuest( id=9, @@ -74,6 +82,7 @@ cht='利用弱點進入戰鬥並獲勝3次', en="Enter combat by attacking enemy's Weakness and win 3 times", jp='弱点を攻撃して戦闘に入り、3回勝利する', + es='Entra en combate atacando la debilidad del enemigo y gana 3 veces', ) Use_Technique_2_times = DailyQuest( id=10, @@ -82,6 +91,7 @@ cht='累積施放2次秘技', en='Use Technique 2 times', jp='秘技を累計2回発動する', + es='Usa técnicas 2 veces', ) Go_on_assignment_1_time = DailyQuest( id=11, @@ -90,6 +100,7 @@ cht='派遣1次委託', en='Go on assignment 1 time', jp='依頼に1回派遣する', + es='Asigna un encargo', ) Take_1_photo = DailyQuest( id=12, @@ -98,6 +109,7 @@ cht='拍照1次', en='Take 1 photo', jp='1回撮影する', + es='Haz 1 foto', ) Destroy_3_destructible_objects = DailyQuest( id=13, @@ -106,6 +118,7 @@ cht='累積擊碎3個可破壞物', en='Destroy 3 destructible objects', jp='破壊できるオブジェクトを累計で3つ破壊する', + es='Destruye 3 objetos destruibles', ) Complete_Forgotten_Hall_1_time = DailyQuest( id=14, @@ -114,6 +127,7 @@ cht='完成1次「忘卻之庭」', en='Complete Forgotten Hall 1 time', jp='「忘却の庭」を1回クリアする', + es='Completa el Salón olvidado 1 vez', ) Complete_Echo_of_War_1_times = DailyQuest( id=15, @@ -122,6 +136,7 @@ cht='完成1次「歷戰餘響」', en='Complete Echo of War 1 time(s)', jp='「歴戦余韻」を1回クリアする', + es='Completa Ecos de la guerra 1 vez', ) Complete_1_stage_in_Simulated_Universe_Any_world = DailyQuest( id=16, @@ -130,6 +145,7 @@ cht='完成「模擬宇宙」任意世界的1個區域', en='Complete 1 stage in Simulated Universe (Any world)', jp='「模擬宇宙」のエリアを1つクリアする(任意の世界)', + es='Supera 1 zona del Universo Simulado (cualquier mundo)', ) Obtain_victory_in_combat_with_support_characters_1_time = DailyQuest( id=17, @@ -138,6 +154,7 @@ cht='使用支援角色並獲得戰鬥勝利1次', en='Obtain victory in combat with support characters 1 time', jp='サポートキャラを使い、戦闘に1回勝利する', + es='Gana 1 batalla utilizando personajes de apoyo', ) Use_an_Ultimate_to_deal_the_final_blow_1_time = DailyQuest( id=18, @@ -146,6 +163,7 @@ cht='施放終結技造成制勝一擊1次', en='Use an Ultimate to deal the final blow 1 time', jp='必殺技で最後の一撃を1回与える', + es='Asesta el golpe final con una habilidad definitiva 1 vez', ) Level_up_any_character_1_time = DailyQuest( id=19, @@ -154,6 +172,7 @@ cht='將任意角色等級提升1次', en='Level up any character 1 time', jp='任意のキャラを1回レベルアップする', + es='Mejora el nivel de cualquier personaje 1 vez', ) Level_up_any_Light_Cone_1_time = DailyQuest( id=20, @@ -162,6 +181,7 @@ cht='將任意光錐等級提升1次', en='Level up any Light Cone 1 time', jp='任意の光円錐を1回レベルアップする', + es='Mejora cualquier cono de luz 1 vez', ) Level_up_any_Relic_1_time = DailyQuest( id=21, @@ -170,6 +190,7 @@ cht='將任意遺器等級提升1次', en='Level up any Relic 1 time', jp='任意の遺物を1回レベルアップする', + es='Mejora cualquier artefacto 1 vez', ) Salvage_any_Relic = DailyQuest( id=22, @@ -178,6 +199,7 @@ cht='分解任意1件遺器', en='Salvage any Relic', jp='任意の遺物1つを分解する', + es='Destruye 1 artefacto', ) Synthesize_Consumable_1_time = DailyQuest( id=23, @@ -186,6 +208,7 @@ cht='合成1次消耗品', en='Synthesize Consumable 1 time', jp='消耗品を1回合成する', + es='Sintetiza consumibles 1 vez', ) Synthesize_material_1_time = DailyQuest( id=24, @@ -194,6 +217,7 @@ cht='合成1次素材', en='Synthesize material 1 time', jp='素材を1回合成する', + es='Sintetiza materiales 1 vez', ) Use_Consumables_1_time = DailyQuest( id=25, @@ -202,4 +226,5 @@ cht='使用1件消耗品', en='Use Consumables 1 time', jp='消耗品を1個使う', + es='Usa 1 consumible', ) diff --git a/tasks/daily/keywords/daily_quest_state.py b/tasks/daily/keywords/daily_quest_state.py index 05eac864b..a0ef5e2ce 100644 --- a/tasks/daily/keywords/daily_quest_state.py +++ b/tasks/daily/keywords/daily_quest_state.py @@ -10,6 +10,7 @@ cht='前往', en='Go', jp='進む', + es='Ir', ) Claim = DailyQuestState( id=2, @@ -18,6 +19,7 @@ cht='領取', en='Claim', jp='受取', + es='Recoger', ) In_Progress = DailyQuestState( id=3, @@ -26,6 +28,7 @@ cht='進行中', en='In Progress', jp='進行中', + es='En curso', ) Claimed = DailyQuestState( id=4, @@ -34,6 +37,7 @@ cht='已領取', en='Claimed', jp='受取済', + es='Recogido', ) Today_Activity_completed = DailyQuestState( id=5, @@ -42,4 +46,5 @@ cht='本日活躍度已滿', en="Today's Activity completed", jp='本日のアクティブ度が最大に達しました', + es='Actividad de hoy completa', ) diff --git a/tasks/dungeon/keywords/dungeon.py b/tasks/dungeon/keywords/dungeon.py index 2978991a2..144b77180 100644 --- a/tasks/dungeon/keywords/dungeon.py +++ b/tasks/dungeon/keywords/dungeon.py @@ -10,6 +10,7 @@ cht='回憶之蕾•擬造花萼(金)', en='Bud of Memories', jp='疑似花萼(金)・回憶の蕾', + es='Flor de los recuerdos', ) Calyx_Golden_Aether = DungeonList( id=2, @@ -18,6 +19,7 @@ cht='乙太之蕾•擬造花萼(金)', en='Bud of Aether', jp='疑似花萼(金)・エーテルの蕾', + es='Flor de éter', ) Calyx_Golden_Treasures = DungeonList( id=3, @@ -26,6 +28,7 @@ cht='藏珍之蕾•擬造花萼(金)', en='Bud of Treasures', jp='疑似花萼(金)・秘蔵の蕾', + es='Flor de tesoros', ) Calyx_Crimson_Destruction = DungeonList( id=4, @@ -34,6 +37,7 @@ cht='毀滅之蕾•擬造花萼(赤)', en='Bud of Destruction', jp='疑似花萼(赤)・壊滅の蕾', + es='Flor de la Destrucción', ) Calyx_Crimson_Preservation = DungeonList( id=5, @@ -42,6 +46,7 @@ cht='存護之蕾•擬造花萼(赤)', en='Bud of Preservation', jp='疑似花萼(赤)・存護の蕾', + es='Flor de la Conservación', ) Calyx_Crimson_The_Hunt = DungeonList( id=6, @@ -50,6 +55,7 @@ cht='巡獵之蕾•擬造花萼(赤)', en='Bud of The Hunt', jp='疑似花萼(赤)・巡狩の蕾', + es='Flor de la Cacería', ) Calyx_Crimson_Abundance = DungeonList( id=7, @@ -58,6 +64,7 @@ cht='豐饒之蕾•擬造花萼(赤)', en='Bud of Abundance', jp='疑似花萼(赤)・豊穣の蕾', + es='Flor de la Abundancia', ) Calyx_Crimson_Erudition = DungeonList( id=8, @@ -66,6 +73,7 @@ cht='智識之蕾•擬造花萼(赤)', en='Bud of Erudition', jp='疑似花萼(赤)・知恵の蕾', + es='Flor de la Erudición', ) Calyx_Crimson_Harmony = DungeonList( id=9, @@ -74,6 +82,7 @@ cht='同諧之蕾•擬造花萼(赤)', en='Bud of Harmony', jp='疑似花萼(赤)・調和の蕾', + es='Flor de la Armonía', ) Calyx_Crimson_Nihility = DungeonList( id=10, @@ -82,6 +91,7 @@ cht='虛無之蕾•擬造花萼(赤)', en='Bud of Nihility', jp='疑似花萼(赤)・虚無の蕾', + es='Flor de la Nihilidad', ) Stagnant_Shadow_Quanta = DungeonList( id=11, @@ -90,6 +100,7 @@ cht='空海之形•凝滯虛影', en='Shape of Quanta', jp='凝結虚影・虚海の形', + es='Forma del cuanto', ) Stagnant_Shadow_Gust = DungeonList( id=12, @@ -98,6 +109,7 @@ cht='巽風之形•凝滯虛影', en='Shape of Gust', jp='凝結虚影・薫風の形', + es='Forma del aire', ) Stagnant_Shadow_Fulmination = DungeonList( id=13, @@ -106,6 +118,7 @@ cht='鳴雷之形•凝滯虛影', en='Shape of Fulmination', jp='凝結虚影・鳴雷の形', + es='Forma del trueno', ) Stagnant_Shadow_Blaze = DungeonList( id=14, @@ -114,6 +127,7 @@ cht='炎華之形•凝滯虛影', en='Shape of Blaze', jp='凝結虚影・炎華の形', + es='Forma de las llamas', ) Stagnant_Shadow_Spike = DungeonList( id=15, @@ -122,6 +136,7 @@ cht='鋒芒之形•凝滯虛影', en='Shape of Spike', jp='凝結虚影・切先の形', + es='Forma afilada', ) Stagnant_Shadow_Rime = DungeonList( id=16, @@ -130,6 +145,7 @@ cht='霜晶之形•凝滯虛影', en='Shape of Rime', jp='凝結虚影・霜晶の形', + es='Forma de la escarcha', ) Stagnant_Shadow_Mirage = DungeonList( id=17, @@ -138,6 +154,7 @@ cht='幻光之形•凝滯虛影', en='Shape of Mirage', jp='凝結虚影・幻光の形', + es='Forma del espejismo', ) Stagnant_Shadow_Icicle = DungeonList( id=18, @@ -146,6 +163,7 @@ cht='冰稜之形•凝滯虛影', en='Shape of Icicle', jp='凝結虚影・氷柱の形', + es='Forma del témpano', ) Stagnant_Shadow_Doom = DungeonList( id=19, @@ -154,6 +172,7 @@ cht='震厄之形•凝滯虛影', en='Shape of Doom', jp='凝結虚影・震厄の形', + es='Forma de la perdición', ) Stagnant_Shadow_Puppetry = DungeonList( id=20, @@ -162,6 +181,7 @@ cht='偃偶之形•凝滯虛影', en='Shape of Puppetry', jp='凝結虚影・傀儡の形', + es='Forma de las marionetas', ) Stagnant_Shadow_Abomination = DungeonList( id=21, @@ -170,6 +190,7 @@ cht='孽獸之形•凝滯虛影', en='Shape of Abomination', jp='凝結虚影・厄獣の形', + es='Forma de la abominación', ) Stagnant_Shadow_Celestial = DungeonList( id=22, @@ -178,6 +199,7 @@ cht='天人之形•凝滯虛影', en='Shape of Celestial', jp='凝結虚影・天人の形', + es='Forma de lo celestial', ) Cavern_of_Corrosion_Path_of_Gelid_Wind = DungeonList( id=23, @@ -186,6 +208,7 @@ cht='霜風之徑•侵蝕隧洞', en='Path of Gelid Wind', jp='侵蝕トンネル・霜風の路', + es='Senda del viento gélido', ) Cavern_of_Corrosion_Path_of_Jabbing_Punch = DungeonList( id=24, @@ -194,6 +217,7 @@ cht='迅拳之徑•侵蝕隧洞', en='Path of Jabbing Punch', jp='侵蝕トンネル・迅拳の路', + es='Senda de los puños rápidos', ) Cavern_of_Corrosion_Path_of_Drifting = DungeonList( id=25, @@ -202,6 +226,7 @@ cht='漂泊之徑•侵蝕隧洞', en='Path of Drifting', jp='侵蝕トンネル・漂泊の路', + es='Senda de la deriva', ) Cavern_of_Corrosion_Path_of_Providence = DungeonList( id=26, @@ -210,6 +235,7 @@ cht='睿治之徑•侵蝕隧洞', en='Path of Providence', jp='侵蝕トンネル・睿治の路', + es='Senda de la providencia', ) Cavern_of_Corrosion_Path_of_Holy_Hymn = DungeonList( id=27, @@ -218,6 +244,7 @@ cht='聖頌之徑•侵蝕隧洞', en='Path of Holy Hymn', jp='侵蝕トンネル・聖頌の路', + es='Senda del himno sagrado', ) Cavern_of_Corrosion_Path_of_Conflagration = DungeonList( id=28, @@ -226,6 +253,7 @@ cht='野焰之徑•侵蝕隧洞', en='Path of Conflagration', jp='侵蝕トンネル・野焔の路', + es='Senda de la conflagración', ) Cavern_of_Corrosion_Path_of_Elixir_Seekers = DungeonList( id=29, @@ -234,6 +262,7 @@ cht='藥使之徑•侵蝕隧洞', en='Path of Elixir Seekers', jp='侵蝕トンネル・薬使の路', + es='Senda de los elixires', ) Echo_of_War_Destruction_Beginning = DungeonList( id=30, @@ -242,6 +271,7 @@ cht='毀滅的開端•歷戰餘響', en="Destruction's Beginning", jp='歴戦余韻・壊滅の始まり', + es='El principio de la Destrucción', ) Echo_of_War_End_of_the_Eternal_Freeze = DungeonList( id=31, @@ -250,6 +280,7 @@ cht='寒潮的落幕•歷戰餘響', en='End of the Eternal Freeze', jp='歴戦余韻・寒波の幕切れ', + es='El fin del Hielo Eterno', ) Echo_of_War_Divine_Seed = DungeonList( id=32, @@ -258,6 +289,7 @@ cht='不死的神實•歷戰餘響', en='Divine Seed', jp='歴戦余韻・不死の神実', + es='Semilla divina', ) Simulated_Universe_World_1 = DungeonList( id=33, @@ -266,6 +298,7 @@ cht='第一世界•模擬宇宙', en='Simulated Universe — World 1', jp='第一世界・模擬宇宙', + es='Mundo 1', ) Simulated_Universe_World_3 = DungeonList( id=34, @@ -274,6 +307,7 @@ cht='第三世界•模擬宇宙', en='Simulated Universe — World 3', jp='第三世界・模擬宇宙', + es='Mundo 3', ) Simulated_Universe_World_4 = DungeonList( id=35, @@ -282,6 +316,7 @@ cht='第四世界•模擬宇宙', en='Simulated Universe — World 4', jp='第四世界・模擬宇宙', + es='Mundo 4', ) Simulated_Universe_World_5 = DungeonList( id=36, @@ -290,6 +325,7 @@ cht='第五世界•模擬宇宙', en='Simulated Universe — World 5', jp='第五世界・模擬宇宙', + es='Mundo 5', ) Simulated_Universe_World_6 = DungeonList( id=37, @@ -298,6 +334,7 @@ cht='第六世界•模擬宇宙', en='Simulated Universe — World 6', jp='第六世界・模擬宇宙', + es='Mundo 6', ) Simulated_Universe_World_7 = DungeonList( id=38, @@ -306,6 +343,7 @@ cht='第七世界•模擬宇宙', en='Simulated Universe — World 7', jp='第七世界・模擬宇宙', + es='Mundo 7', ) The_Voyage_of_Navis_Astriger = DungeonList( id=39, @@ -314,6 +352,7 @@ cht='天艟求仙迷航錄', en='The Voyage of Navis Astriger', jp='天艟求仙放浪記', + es='El viaje de las naves astriger', ) The_Last_Vestiges_of_Towering_Citadel = DungeonList( id=40, @@ -322,6 +361,7 @@ cht='永屹之城遺秘', en='The Last Vestiges of Towering Citadel', jp='永屹の城の秘密', + es='Herencia de la Ciudadela Imponente', ) Memory_of_Chaos = DungeonList( id=41, @@ -330,4 +370,5 @@ cht='混沌回憶', en='Memory of Chaos', jp='混沌の記憶', + es='Evocación caótica', ) diff --git a/tasks/dungeon/keywords/dungeon_entrance.py b/tasks/dungeon/keywords/dungeon_entrance.py index df872df87..4a3905cca 100644 --- a/tasks/dungeon/keywords/dungeon_entrance.py +++ b/tasks/dungeon/keywords/dungeon_entrance.py @@ -10,6 +10,7 @@ cht='傳送', en='Teleport', jp='テレポート', + es='Ir', ) Navigate = DungeonEntrance( id=2, @@ -18,4 +19,5 @@ cht='追蹤', en='Navigate', jp='追跡', + es='Seguir', ) diff --git a/tasks/dungeon/keywords/nav.py b/tasks/dungeon/keywords/nav.py index f85e7f053..c779e6c02 100644 --- a/tasks/dungeon/keywords/nav.py +++ b/tasks/dungeon/keywords/nav.py @@ -10,6 +10,7 @@ cht='模擬宇宙', en='Simulated Universe', jp='模擬宇宙', + es='Universo Simulado', ) Calyx_Golden = DungeonNav( id=2, @@ -18,6 +19,7 @@ cht='擬造花萼(金)', en='Calyx (Golden)', jp='疑似花萼(金)', + es='Cáliz (oro)', ) Calyx_Crimson = DungeonNav( id=3, @@ -26,6 +28,7 @@ cht='擬造花萼(赤)', en='Calyx (Crimson)', jp='疑似花萼(赤)', + es='Cáliz (carmesí)', ) Stagnant_Shadow = DungeonNav( id=4, @@ -34,6 +37,7 @@ cht='凝滯虛影', en='Stagnant Shadow', jp='凝結虚影', + es='Sombra paralizada', ) Cavern_of_Corrosion = DungeonNav( id=5, @@ -42,6 +46,7 @@ cht='侵蝕隧洞', en='Cavern of Corrosion', jp='侵蝕トンネル', + es='Caverna de la corrosión', ) Echo_of_War = DungeonNav( id=6, @@ -50,6 +55,7 @@ cht='歷戰餘響', en='Echo of War', jp='歴戦余韻', + es='Ecos de la guerra', ) Forgotten_Hall = DungeonNav( id=7, @@ -58,4 +64,5 @@ cht='忘卻之庭', en='Forgotten Hall', jp='忘却の庭', + es='Salón olvidado', ) diff --git a/tasks/dungeon/keywords/tab.py b/tasks/dungeon/keywords/tab.py index 42a7de82c..85f372e63 100644 --- a/tasks/dungeon/keywords/tab.py +++ b/tasks/dungeon/keywords/tab.py @@ -10,6 +10,7 @@ cht='行動摘要', en='Operation Briefing', jp='行動要旨', + es='Informe de operaciones', ) Survival_Index = DungeonTab( id=2, @@ -18,6 +19,7 @@ cht='生存索引', en='Survival Index', jp='生存手引書', + es='Manual de supervivencia', ) Daily_Training = DungeonTab( id=3, @@ -26,4 +28,5 @@ cht='每日實訓', en='Daily Training', jp='デイリー訓練', + es='Entrenamiento diario', ) diff --git a/tasks/forgotten_hall/keywords/stage.py b/tasks/forgotten_hall/keywords/stage.py index d8ce96d18..4206eaf19 100644 --- a/tasks/forgotten_hall/keywords/stage.py +++ b/tasks/forgotten_hall/keywords/stage.py @@ -10,6 +10,7 @@ cht='01', en='01', jp='01', + es='01', ) Stage_2 = ForgottenHallStage( id=2, @@ -18,6 +19,7 @@ cht='02', en='02', jp='02', + es='02', ) Stage_3 = ForgottenHallStage( id=3, @@ -26,6 +28,7 @@ cht='03', en='03', jp='03', + es='03', ) Stage_4 = ForgottenHallStage( id=4, @@ -34,6 +37,7 @@ cht='04', en='04', jp='04', + es='04', ) Stage_5 = ForgottenHallStage( id=5, @@ -42,6 +46,7 @@ cht='05', en='05', jp='05', + es='05', ) Stage_6 = ForgottenHallStage( id=6, @@ -50,6 +55,7 @@ cht='06', en='06', jp='06', + es='06', ) Stage_7 = ForgottenHallStage( id=7, @@ -58,6 +64,7 @@ cht='07', en='07', jp='07', + es='07', ) Stage_8 = ForgottenHallStage( id=8, @@ -66,6 +73,7 @@ cht='08', en='08', jp='08', + es='08', ) Stage_9 = ForgottenHallStage( id=9, @@ -74,6 +82,7 @@ cht='09', en='09', jp='09', + es='09', ) Stage_10 = ForgottenHallStage( id=10, @@ -82,6 +91,7 @@ cht='10', en='10', jp='10', + es='10', ) Stage_11 = ForgottenHallStage( id=11, @@ -90,6 +100,7 @@ cht='11', en='11', jp='11', + es='11', ) Stage_12 = ForgottenHallStage( id=12, @@ -98,6 +109,7 @@ cht='12', en='12', jp='12', + es='12', ) Stage_13 = ForgottenHallStage( id=13, @@ -106,6 +118,7 @@ cht='13', en='13', jp='13', + es='13', ) Stage_14 = ForgottenHallStage( id=14, @@ -114,6 +127,7 @@ cht='14', en='14', jp='14', + es='14', ) Stage_15 = ForgottenHallStage( id=15, @@ -122,4 +136,5 @@ cht='15', en='15', jp='15', + es='15', ) diff --git a/tasks/item/keywords/tab.py b/tasks/item/keywords/tab.py index 1e832dd62..78145a073 100644 --- a/tasks/item/keywords/tab.py +++ b/tasks/item/keywords/tab.py @@ -10,6 +10,7 @@ cht='養成素材', en='Upgrade Materials', jp='育成素材', + es='Materiales de mejora', ) LightCone = ItemTab( id=2, @@ -18,6 +19,7 @@ cht='光錐', en='Light Cone', jp='光円錐', + es='Cono de luz', ) Relics = ItemTab( id=3, @@ -26,6 +28,7 @@ cht='遺器', en='Relics', jp='遺物', + es='Artefactos', ) OtherMaterials = ItemTab( id=4, @@ -34,6 +37,7 @@ cht='其他素材', en='Other Materials', jp='その他', + es='Otros materiales', ) Consumables = ItemTab( id=5, @@ -42,6 +46,7 @@ cht='消耗品', en='Consumables', jp='消耗品', + es='Consumible', ) Missions = ItemTab( id=6, @@ -50,6 +55,7 @@ cht='任務', en='Missions', jp='クエスト', + es='Misiones', ) Valuables = ItemTab( id=7, @@ -58,4 +64,5 @@ cht='貴重物', en='Valuables', jp='貴重品', + es='Objetos valiosos', ) diff --git a/tasks/map/keywords/plane.py b/tasks/map/keywords/plane.py index 5779223d7..57b3ba6ec 100644 --- a/tasks/map/keywords/plane.py +++ b/tasks/map/keywords/plane.py @@ -10,6 +10,7 @@ cht='黑塔的辦公室', en="Herta's Office", jp='ヘルタのオフィス', + es='Oficina de Herta', ) Special_AptitudeShowcase = MapPlane( id=2, @@ -18,6 +19,7 @@ cht='鋒芒嶄露', en='Aptitude Showcase', jp='躍進する新星', + es='Demostración de aptitudes', ) Rogue_DomainCombat = MapPlane( id=3, @@ -26,6 +28,7 @@ cht='區域-戰鬥', en='Domain — Combat', jp='エリア-戦闘', + es='Batalla', ) Rogue_DomainOccurrence = MapPlane( id=4, @@ -34,6 +37,7 @@ cht='區域-事件', en='Domain — Occurrence', jp='エリア-イベント', + es='Evento', ) Rogue_DomainEncounter = MapPlane( id=5, @@ -42,6 +46,7 @@ cht='區域-遭遇', en='Domain — Encounter', jp='エリア-遭遇', + es='Encuentro', ) Rogue_DomainRespite = MapPlane( id=6, @@ -50,6 +55,7 @@ cht='區域-整備', en='Domain — Respite', jp='エリア-休憩', + es='Reposo', ) Rogue_DomainElite = MapPlane( id=7, @@ -58,6 +64,7 @@ cht='區域-菁英', en='Domain — Elite', jp='エリア-精鋭', + es='Élite', ) Rogue_DomainBoss = MapPlane( id=8, @@ -66,6 +73,7 @@ cht='區域-頭目', en='Domain — Boss', jp='エリア-ボス', + es='Jefe', ) Rogue_DomainTransaction = MapPlane( id=9, @@ -74,6 +82,7 @@ cht='區域-交易', en='Domain — Transaction', jp='エリア-取引', + es='Transacción', ) Herta_ParlorCar = MapPlane( id=10, @@ -82,6 +91,7 @@ cht='觀景車廂', en='Parlor Car', jp='列車のラウンジ', + es='Vagón panorámico', ) Herta_MasterControlZone = MapPlane( id=11, @@ -90,6 +100,7 @@ cht='主控艙段', en='Master Control Zone', jp='主制御部分', + es='Zona de mando principal', ) Herta_BaseZone = MapPlane( id=12, @@ -98,6 +109,7 @@ cht='基座艙段', en='Base Zone', jp='ベース部分', + es='Zona de la base', ) Herta_StorageZone = MapPlane( id=13, @@ -106,6 +118,7 @@ cht='收容艙段', en='Storage Zone', jp='収容部分', + es='Zona de almacenamiento', ) Herta_SupplyZone = MapPlane( id=14, @@ -114,6 +127,7 @@ cht='支援艙段', en='Supply Zone', jp='サポート部分', + es='Zona de suministros', ) Jarilo_AdministrativeDistrict = MapPlane( id=15, @@ -122,6 +136,7 @@ cht='行政區', en='Administrative District', jp='行政区', + es='Distrito administrativo', ) Jarilo_OutlyingSnowPlains = MapPlane( id=16, @@ -130,6 +145,7 @@ cht='城郊雪原', en='Outlying Snow Plains', jp='郊外雪原', + es='Llanuras nevadas de las afueras', ) Jarilo_BackwaterPass = MapPlane( id=17, @@ -138,6 +154,7 @@ cht='邊緣通道', en='Backwater Pass', jp='外縁通路', + es='Paso del Remanso', ) Jarilo_SilvermaneGuardRestrictedZone = MapPlane( id=18, @@ -146,6 +163,7 @@ cht='鐵衛禁區', en='Silvermane Guard Restricted Zone', jp='シルバーメイン禁区', + es='Zona restringida de la Guardia Crinargenta', ) Jarilo_CorridorofFadingEchoes = MapPlane( id=19, @@ -154,6 +172,7 @@ cht='殘響迴廊', en='Corridor of Fading Echoes', jp='残響回廊', + es='Pasadizo de los ecos apagados', ) Jarilo_EverwinterHill = MapPlane( id=20, @@ -162,6 +181,7 @@ cht='永冬嶺', en='Everwinter Hill', jp='常冬峰', + es='Colina del Siempreinvierno', ) Jarilo_BoulderTown = MapPlane( id=21, @@ -170,6 +190,7 @@ cht='磐岩鎮', en='Boulder Town', jp='ボルダータウン', + es='Villarroca', ) Jarilo_GreatMine = MapPlane( id=22, @@ -178,6 +199,7 @@ cht='大礦區', en='Great Mine', jp='大鉱区', + es='Mina principal', ) Jarilo_RivetTown = MapPlane( id=23, @@ -186,6 +208,7 @@ cht='鉚釘鎮', en='Rivet Town', jp='リベットタウン', + es='Villarremache', ) Jarilo_RobotSettlement = MapPlane( id=24, @@ -194,6 +217,7 @@ cht='機械聚落', en='Robot Settlement', jp='機械集落', + es='Asentamiento robot', ) Luofu_CentralStarskiffHaven = MapPlane( id=25, @@ -202,6 +226,7 @@ cht='星槎海中樞', en='Central Starskiff Haven', jp='星槎海中枢', + es='Zona central de la Dársena de astroesquifes', ) Luofu_Cloudford = MapPlane( id=26, @@ -210,6 +235,7 @@ cht='流雲渡', en='Cloudford', jp='流雲渡し', + es='Vado de las Nubes', ) Luofu_StargazerNavalia = MapPlane( id=27, @@ -218,6 +244,7 @@ cht='迴星港', en='Stargazer Navalia', jp='廻星港', + es='Puerto Miraestrellas', ) Luofu_ExaltingSanctum = MapPlane( id=28, @@ -226,6 +253,7 @@ cht='長樂天', en='Exalting Sanctum', jp='長楽天', + es='Sánctum de la Exaltación', ) Luofu_AurumAlley = MapPlane( id=29, @@ -234,6 +262,7 @@ cht='金人巷', en='Aurum Alley', jp='金人巷', + es='Callejón Aurum', ) Luofu_DivinationCommission = MapPlane( id=30, @@ -242,6 +271,7 @@ cht='太卜司', en='Divination Commission', jp='太卜司', + es='Comisión de Adivinación', ) Luofu_ArtisanshipCommission = MapPlane( id=31, @@ -250,6 +280,7 @@ cht='工造司', en='Artisanship Commission', jp='工造司', + es='Comisión de Artesanía', ) Luofu_AlchemyCommission = MapPlane( id=32, @@ -258,6 +289,7 @@ cht='丹鼎司', en='Alchemy Commission', jp='丹鼎司', + es='Comisión de Alquimia', ) Luofu_ScalegorgeWaterscape = MapPlane( id=33, @@ -266,4 +298,5 @@ cht='鱗淵境', en='Scalegorge Waterscape', jp='鱗淵境', + es='Desfiladero de Escamas', ) diff --git a/tasks/rogue/keywords/blessing.py b/tasks/rogue/keywords/blessing.py index 7acb438bf..7de0f6eaa 100644 --- a/tasks/rogue/keywords/blessing.py +++ b/tasks/rogue/keywords/blessing.py @@ -10,6 +10,7 @@ cht='神性構築•諧振傳遞', en='Divine Construct: Resonance Transfer', jp='神性構築・共鳴伝達', + es='Construcción divina: Transferencia de resonancia', path_id=1, rarity=3, enhancement='', @@ -21,6 +22,7 @@ cht='神性構築•超靜定場', en='Divine Construct: Metastatic Field', jp='神性構築・不静定構造', + es='Construcción divina: Campo hiperestático', path_id=1, rarity=3, enhancement='', @@ -32,6 +34,7 @@ cht='神性構築•宏觀偏析', en='Divine Construct: Macrosegregation', jp='神性構築・マクロ偏析', + es='Construcción divina: Macrosegregación', path_id=1, rarity=3, enhancement='', @@ -43,6 +46,7 @@ cht='星間構築•切變結構', en='Interstellar Construct: Shear Structure', jp='星間構築・剪断構造', + es='Construcción interestelar: Estructura tangencial', path_id=1, rarity=2, enhancement='', @@ -54,6 +58,7 @@ cht='星間構築•迸裂晶格', en='Interstellar Construct: Burst Lattice', jp='星間構築・格子欠陥', + es='Construcción interestelar: Celosía rota', path_id=1, rarity=2, enhancement='', @@ -65,6 +70,7 @@ cht='星間構築•固溶強化', en='Interstellar Construct: Solid Solution', jp='星間構築・固溶強化', + es='Construcción interestelar: Solución sólida', path_id=1, rarity=2, enhancement='', @@ -76,6 +82,7 @@ cht='星間構築•安全載荷', en='Interstellar Construct: Safe Load', jp='星間構築・安全荷重', + es='Construcción interestelar: Carga segura', path_id=1, rarity=2, enhancement='', @@ -87,6 +94,7 @@ cht='星間構築•回饋庇護', en='Interstellar Construct: Sanctuary', jp='星間構築・反作用庇護', + es='Construcción interestelar: Santuario', path_id=1, rarity=2, enhancement='', @@ -98,6 +106,7 @@ cht='星間構築•四稜錐體', en='Interstellar Construct: Quadrangular Pyramid', jp='星間構築・四角錐', + es='Construcción interestelar: Pirámide cuadrangular', path_id=1, rarity=2, enhancement='', @@ -109,6 +118,7 @@ cht='星間構築•亞共晶體', en='Interstellar Construct: Hypoeutectoid', jp='星間構築・亜共晶', + es='Construcción interestelar: Hipoeutectoide', path_id=1, rarity=2, enhancement='', @@ -120,6 +130,7 @@ cht='構築•聚塑', en='Construct: Assemble', jp='構築・集塑', + es='Construcción: Ensamblaje', path_id=1, rarity=1, enhancement='', @@ -131,6 +142,7 @@ cht='構築•哨戒', en='Construct: Sentinel', jp='構築・哨戒', + es='Construcción: Centinela', path_id=1, rarity=1, enhancement='', @@ -142,6 +154,7 @@ cht='構築•彌合', en='Construct: Patch', jp='構築・溶着', + es='Construcción: Cicatrización', path_id=1, rarity=1, enhancement='', @@ -153,6 +166,7 @@ cht='構築•補償', en='Construct: Compensation', jp='構築・補填', + es='Construcción: Compensación', path_id=1, rarity=1, enhancement='', @@ -164,6 +178,7 @@ cht='構築•堅定', en='Construct: Firmness', jp='構築・確固', + es='Construcción: Dureza', path_id=1, rarity=1, enhancement='', @@ -175,6 +190,7 @@ cht='構築•迴轉', en='Construct: Rotation', jp='構築・回転', + es='Construcción: Giro', path_id=1, rarity=1, enhancement='', @@ -186,6 +202,7 @@ cht='構築•迸發', en='Construct: Burst', jp='構築・勃発', + es='Construcción: Avance', path_id=1, rarity=1, enhancement='', @@ -197,6 +214,7 @@ cht='構築•專注', en='Construct: Concentration', jp='構築・専念', + es='Construcción: Concentración', path_id=1, rarity=1, enhancement='', @@ -208,6 +226,7 @@ cht='完美體驗:浮黎', en='Perfect Experience: Fuli', jp='完璧体験:浮黎', + es='Experiencia perfecta: Fuli', path_id=2, rarity=3, enhancement='', @@ -219,6 +238,7 @@ cht='完美體驗:純真', en='Perfect Experience: Innocence', jp='完璧体験:純真', + es='Experiencia perfecta: Inocencia', path_id=2, rarity=3, enhancement='', @@ -230,6 +250,7 @@ cht='完美體驗:緘默', en='Perfect Experience: Reticence', jp='完璧体験:沈黙', + es='Experiencia perfecta: Reticencia', path_id=2, rarity=3, enhancement='', @@ -241,6 +262,7 @@ cht='極端體驗:悵然若失', en='Ultimate Experience: Melancholia', jp='極端体験:茫然自失', + es='Experiencia extrema: Melancolía', path_id=2, rarity=2, enhancement='', @@ -252,6 +274,7 @@ cht='極端體驗:頭暈目眩', en='Ultimate Experience: Dizziness', jp='極端体験:眩暈', + es='Experiencia extrema: Mareo', path_id=2, rarity=2, enhancement='', @@ -263,6 +286,7 @@ cht='極端體驗:麻木不仁', en='Ultimate Experience: Insensitivity', jp='極端体験:無感覚', + es='Experiencia extrema: Insensibilidad', path_id=2, rarity=2, enhancement='', @@ -274,6 +298,7 @@ cht='極端體驗:多愁善感', en='Ultimate Experience: Sentimentality', jp='極端体験:多感', + es='Experiencia extrema: Sentimentalismo', path_id=2, rarity=2, enhancement='', @@ -285,6 +310,7 @@ cht='極端體驗:淪浹肌髓', en='Ultimate Experience: Indelibility', jp='極端体験:感銘', + es='Experiencia extrema: Permanencia', path_id=2, rarity=2, enhancement='', @@ -296,6 +322,7 @@ cht='極端體驗:不寒而慄', en='Ultimate Experience: Shudder', jp='極端体験:戦慄', + es='Experiencia extrema: Estremecimiento', path_id=2, rarity=2, enhancement='', @@ -307,6 +334,7 @@ cht='極端體驗:特立獨行', en='Ultimate Experience: Maverick', jp='極端体験:異端児', + es='Experiencia extrema: Independencia', path_id=2, rarity=2, enhancement='', @@ -318,6 +346,7 @@ cht='體驗:難言的羞恥', en='Experience: Unspeakable Shame', jp='体験:言えない恥', + es='Experiencia: Vergüenza innombrable', path_id=2, rarity=1, enhancement='', @@ -329,6 +358,7 @@ cht='體驗:疏離的煎熬', en='Experience: The Torment of Alienation', jp='体験:疎遠の苦しみ', + es='Experiencia: El tormento de la alienación', path_id=2, rarity=1, enhancement='', @@ -340,6 +370,7 @@ cht='體驗:遺失的記憶', en='Experience: Lost Memory', jp='体験:失われた記憶', + es='Experiencia: Recuerdos perdidos', path_id=2, rarity=1, enhancement='', @@ -351,6 +382,7 @@ cht='體驗:決絕的痛恨', en='Experience: Stone Cold Hatred', jp='体験:凄烈な憎悪', + es='Experiencia: Odio gélido', path_id=2, rarity=1, enhancement='', @@ -362,6 +394,7 @@ cht='體驗:病痛的折磨', en='Experience: Pain & Suffering', jp='体験:病の苛み', + es='Experiencia: Dolor y sufrimiento', path_id=2, rarity=1, enhancement='', @@ -373,6 +406,7 @@ cht='體驗:原初的苦衷', en='Experience: Primordial Hardship', jp='体験:原初の苦衷', + es='Experiencia: Dificultad primordial', path_id=2, rarity=1, enhancement='', @@ -384,6 +418,7 @@ cht='體驗:攀升的刺激', en='Experience: Thrill of Escalation', jp='体験:上昇の刺激', + es='Experiencia: La emoción de la ascensión', path_id=2, rarity=1, enhancement='', @@ -395,6 +430,7 @@ cht='體驗:回應的興奮', en='Experience: Responsive Excitement', jp='体験:反響の興奮', + es='Experiencia: Euforia receptiva', path_id=2, rarity=1, enhancement='', @@ -406,6 +442,7 @@ cht='感官追奉者的葬禮', en='Funeral of Sensory Pursuivant', jp='感覚追奉者の葬式', + es='Funeral del buscador de emociones', path_id=3, rarity=3, enhancement='', @@ -417,6 +454,7 @@ cht='被裝在套子裡的人', en='The Man in the Cover', jp='箱に入った人', + es='Una persona enfundada', path_id=3, rarity=3, enhancement='', @@ -428,6 +466,7 @@ cht='為何一切尚未消失', en="Why Hasn't Everything Already Disappeared?", jp='なぜすべては消えぬか', + es='¿Por qué no desapareció todo?', path_id=3, rarity=3, enhancement='', @@ -439,6 +478,7 @@ cht='開端與終結', en='Beginning and End', jp='発端と結末', + es='Principio y final', path_id=3, rarity=2, enhancement='', @@ -450,6 +490,7 @@ cht='自欺咖啡館', en='Café Self-Deceit', jp='自己欺瞞カフェ', + es='Cafetería del autoengaño', path_id=3, rarity=2, enhancement='', @@ -461,6 +502,7 @@ cht='曠野的呼告', en='Call of the Wilderness', jp='広野の呼び声', + es='La llamada de lo salvaje', path_id=3, rarity=2, enhancement='', @@ -472,6 +514,7 @@ cht='火堆外的夜', en='Night Beyond Pyre', jp='焚火の外の夜', + es='La noche más allá del fuego', path_id=3, rarity=2, enhancement='', @@ -483,6 +526,7 @@ cht='他人即地獄', en='Hell is Other People', jp='他人は地獄', + es='El infierno son los otros', path_id=3, rarity=2, enhancement='', @@ -494,6 +538,7 @@ cht='存在的黃昏', en='Twilight of Existence', jp='存在の黄昏', + es='Crepúsculo de la existencia', path_id=3, rarity=2, enhancement='', @@ -505,6 +550,7 @@ cht='無根據頌歌', en='All Things are Possible', jp='根拠なき賛歌', + es='Todo es posible', path_id=3, rarity=2, enhancement='', @@ -516,6 +562,7 @@ cht='漠視主義', en='Ignosticism', jp='漠視主義', + es='Abandonismo', path_id=3, rarity=1, enhancement='', @@ -527,6 +574,7 @@ cht='意義質詢', en='Questioning of Purpose', jp='意義への詰問', + es='Interrogatorio del propósito', path_id=3, rarity=1, enhancement='', @@ -538,6 +586,7 @@ cht='盲目視界', en='Blind Vision', jp='盲目の視界', + es='Visión ciega', path_id=3, rarity=1, enhancement='', @@ -549,6 +598,7 @@ cht='悲劇講座', en='Tragic Lecture', jp='悲劇講座', + es='Lección trágica', path_id=3, rarity=1, enhancement='', @@ -560,6 +610,7 @@ cht='知覺迷牆', en='Sensory Labyrinth', jp='知覚の壁', + es='Laberinto de los sentidos', path_id=3, rarity=1, enhancement='', @@ -571,6 +622,7 @@ cht='情緒捨離', en='Emotional Decluttering', jp='情緒捨離', + es='Limpieza emocional', path_id=3, rarity=1, enhancement='', @@ -582,6 +634,7 @@ cht='虛妄供品', en='Offerings of Deception', jp='虚妄の供物', + es='Ofrendas del engaño', path_id=3, rarity=1, enhancement='', @@ -593,6 +646,7 @@ cht='日出之前', en='Before Sunrise', jp='日の出前', + es='Antes de que salga el sol', path_id=3, rarity=1, enhancement='', @@ -604,6 +658,7 @@ cht='葳蕤繁祉,延彼遐齡', en='Prosperity, Longevity', jp='彼の遐齢を延さん', + es='Prosperidad y longevidad', path_id=4, rarity=3, enhancement='', @@ -615,6 +670,7 @@ cht='若罪若福,施諸願印', en='Mudra of Blessing', jp='若の罪福、皆に施願を', + es='Mudra de la bendición', path_id=4, rarity=3, enhancement='', @@ -626,6 +682,7 @@ cht='豐饒眾生,一法界心', en='Being of Abundance, Becoming One Mind', jp='衆生に豊穣を', + es='Muchas vidas, una sola mente', path_id=4, rarity=3, enhancement='', @@ -637,6 +694,7 @@ cht='滅罪累生善', en='Good Deeds Come After Old Sins', jp='滅罪生善', + es='Buenas obras tras pecados antiguos', path_id=4, rarity=2, enhancement='', @@ -648,6 +706,7 @@ cht='天人不動眾', en='Mortals of the Buddha-Field', jp='天人不動衆', + es='Inmovilidad celestial', path_id=4, rarity=2, enhancement='', @@ -659,6 +718,7 @@ cht='慧海度慈航', en='Salvation From Damnation', jp='慧海を渡る慈航', + es='Salvación de la condena', path_id=4, rarity=2, enhancement='', @@ -670,6 +730,7 @@ cht='寶光燭日月', en='Precious Moon-Like Candlelight', jp='日月を燭らす宝光', + es='Luz de vela como la luna', path_id=4, rarity=2, enhancement='', @@ -681,6 +742,7 @@ cht='厭離邪穢苦', en='Aversion to Suffering', jp='邪穢の苦を厭離す', + es='Aversión al sufrimiento', path_id=4, rarity=2, enhancement='', @@ -692,6 +754,7 @@ cht='明澈琉璃身', en='Clear Lucite Body', jp='明澄琉璃の身', + es='Cuerpo de cristal translúcido', path_id=4, rarity=2, enhancement='', @@ -703,6 +766,7 @@ cht='大願般若船', en='Prajna Boat', jp='大愿、般若の船', + es='Barca prajna', path_id=4, rarity=2, enhancement='', @@ -714,6 +778,7 @@ cht='法雨', en='Rain of Truth', jp='法雨', + es='Lluvia de la verdad', path_id=4, rarity=1, enhancement='', @@ -725,6 +790,7 @@ cht='甘露', en='Sweet Dew', jp='甘露', + es='Dulce rocío', path_id=4, rarity=1, enhancement='', @@ -736,6 +802,7 @@ cht='延壽', en='Extended Life', jp='延寿', + es='Vida prolongada', path_id=4, rarity=1, enhancement='', @@ -747,6 +814,7 @@ cht='願印', en='Seal', jp='願印', + es='Sello', path_id=4, rarity=1, enhancement='', @@ -758,6 +826,7 @@ cht='禳災', en='Dispel Disaster', jp='厄払い', + es='Sacrificio aplacador', path_id=4, rarity=1, enhancement='', @@ -769,6 +838,7 @@ cht='回生', en='Rebirth', jp='回生', + es='Renacer', path_id=4, rarity=1, enhancement='', @@ -780,6 +850,7 @@ cht='勝軍', en='Victorious Force', jp='勝軍', + es='Fuerza victoriosa', path_id=4, rarity=1, enhancement='', @@ -791,6 +862,7 @@ cht='加持', en='Blessing', jp='加持', + es='Anexo', path_id=4, rarity=1, enhancement='', @@ -802,6 +874,7 @@ cht='帝星君臨制穹桑', en='Imperial Reign', jp='帝星臨めば穹桑を制す', + es='Mandato imperial', path_id=5, rarity=3, enhancement='', @@ -813,6 +886,7 @@ cht='帝車超光所向捷', en='Imperishable Victory', jp='光越す制勝の帝車', + es='Victoria inextinguible', path_id=5, rarity=3, enhancement='', @@ -824,6 +898,7 @@ cht='帝弓斷空徹太清', en='Celestial Annihilation', jp='太清を徹す断空の帝弓', + es='Aniquilación celestial', path_id=5, rarity=3, enhancement='', @@ -835,6 +910,7 @@ cht='天舟繳夙敵', en='Battle Against the Old Foe', jp='夙敵繳める天舟', + es='Batalla contra un viejo enemigo', path_id=5, rarity=2, enhancement='', @@ -846,6 +922,7 @@ cht='白矢決射御', en='Archery Duel', jp='射御を決する白矢', + es='Duelo de arqueros', path_id=5, rarity=2, enhancement='', @@ -857,6 +934,7 @@ cht='序師執遲彝', en="Adept's Bow", jp='遅彝弓を執る序師', + es='Arco del adepto', path_id=5, rarity=2, enhancement='', @@ -868,6 +946,7 @@ cht='流嵐追孽物', en='Flowing Mist', jp='忌み物を追う流嵐', + es='Niebla flotante', path_id=5, rarity=2, enhancement='', @@ -879,6 +958,7 @@ cht='景星助狩月', en='Auspicious Star', jp='狩月を助ける景星', + es='Estrella auspiciosa', path_id=5, rarity=2, enhancement='', @@ -890,6 +970,7 @@ cht='雲鏑逐步離', en='Ejecting the Borisin', jp='歩離を駆逐せし雲鏑', + es='Expulsión de los borisin', path_id=5, rarity=2, enhancement='', @@ -901,6 +982,7 @@ cht='飛虹誅鑿齒', en='Monster-Expelling Rainbow', jp='鑿齒を誅つ飛虹', + es='Arcoíris expulsademonios', path_id=5, rarity=2, enhancement='', @@ -912,6 +994,7 @@ cht='彤弓素矰', en='Vermeil Bow and White Arrow', jp='緋弓素矢', + es='Arco bermellón y flecha blanca', path_id=5, rarity=1, enhancement='', @@ -923,6 +1006,7 @@ cht='背生擊死', en='Skirting Life and Death', jp='背生撃死', + es='Entre la vida y la muerte', path_id=5, rarity=1, enhancement='', @@ -934,6 +1018,7 @@ cht='背孤擊虛', en='Shrewd Arrangement', jp='背孤撃虚', + es='Arreglo astuto', path_id=5, rarity=1, enhancement='', @@ -945,6 +1030,7 @@ cht='雷車動地', en='Thundering Chariot', jp='雷車動地', + es='El trueno asola la tierra', path_id=5, rarity=1, enhancement='', @@ -956,6 +1042,7 @@ cht='電射牛斗', en='Constellation Surge', jp='牛斗射る紫電', + es='Marejada de constelaciones', path_id=5, rarity=1, enhancement='', @@ -967,6 +1054,7 @@ cht='天棓步危', en='Catastrophic Constellation', jp='危宮へ歩む天棓', + es='Constelación catastrófica', path_id=5, rarity=1, enhancement='', @@ -978,6 +1066,7 @@ cht='桑弧蓬矢', en='Vaulting Ambition', jp='桑弧蓬矢', + es='Ambición desmedida', path_id=5, rarity=1, enhancement='', @@ -989,6 +1078,7 @@ cht='烏號綦箭', en='Blessed Bow and Arrow', jp='烏号綦箭', + es='Arco y flechas bendecidas', path_id=5, rarity=1, enhancement='', @@ -1000,6 +1090,7 @@ cht='反物質非逆方程式', en='Non-Inverse Antimatter Equation', jp='反物質非可逆方程式', + es='Ecuación antimateria no inversa', path_id=6, rarity=3, enhancement='', @@ -1011,6 +1102,7 @@ cht='寰宇熱寂特徵數', en='Universal Heat Death Characteristic', jp='熱的死の固有値', + es='Características mortales del calor del universo', path_id=6, rarity=3, enhancement='', @@ -1022,6 +1114,7 @@ cht='湮滅回歸不等式', en='Regression Inequality of Annihilation', jp='対消滅回帰不等式', + es='Desigualdad de la regresión destructiva', path_id=6, rarity=3, enhancement='', @@ -1033,6 +1126,7 @@ cht='遞增性末日', en='Incremental Doomsday', jp='逓増的終末', + es='Día del juicio gradual', path_id=6, rarity=2, enhancement='', @@ -1044,6 +1138,7 @@ cht='災難性共振', en='Catastrophic Resonance', jp='災難的共振', + es='Resonancia catastrófica', path_id=6, rarity=2, enhancement='', @@ -1055,6 +1150,7 @@ cht='預兆性景深', en='Indicative Depth of Field', jp='予兆的被写界深度', + es='Profundidad de campo indicativa', path_id=6, rarity=2, enhancement='', @@ -1066,6 +1162,7 @@ cht='毀滅性吸積', en='Devastating Accretion', jp='壊滅的降着', + es='Crecimiento devastador', path_id=6, rarity=2, enhancement='', @@ -1077,6 +1174,7 @@ cht='破壞性耀發', en='Destructive Flare', jp='破壊的フレア', + es='Fulgor destructivo', path_id=6, rarity=2, enhancement='', @@ -1088,6 +1186,7 @@ cht='戒律性閃變', en='Disciplinary Flicker', jp='戒律的フラッシュ', + es='Destello de disciplina', path_id=6, rarity=2, enhancement='', @@ -1099,6 +1198,7 @@ cht='危害性餘光', en='Hazardous Lucent Residue', jp='危害的余光', + es='Luz perjudicial', path_id=6, rarity=2, enhancement='', @@ -1110,6 +1210,7 @@ cht='原生黑洞', en='Primordial Black Hole', jp='原始ブラックホール', + es='Agujero negro primordial', path_id=6, rarity=1, enhancement='', @@ -1121,6 +1222,7 @@ cht='回光效應', en='Reflection', jp='光壊変', + es='Reflejo', path_id=6, rarity=1, enhancement='', @@ -1132,6 +1234,7 @@ cht='軌道紅移', en='Orbital Redshift', jp='軌道赤方偏移', + es='Corrimiento al rojo orbital', path_id=6, rarity=1, enhancement='', @@ -1143,6 +1246,7 @@ cht='不穩定帶', en='Instability Strip', jp='不安定帯', + es='Banda de la inestabilidad', path_id=6, rarity=1, enhancement='', @@ -1154,6 +1258,7 @@ cht='儲備度規', en='Metric Reservation', jp='備蓄計量', + es='Regla de reserva', path_id=6, rarity=1, enhancement='', @@ -1165,6 +1270,7 @@ cht='哨戒衛星', en='Sentinel Satellite', jp='哨戒衛星', + es='Satélite centinela', path_id=6, rarity=1, enhancement='', @@ -1176,6 +1282,7 @@ cht='偏振受體', en='Polarization Receptor', jp='偏光受容体', + es='Receptor polarizado', path_id=6, rarity=1, enhancement='', @@ -1187,6 +1294,7 @@ cht='永坍縮體', en='Eternally Collapsing Object', jp='永久崩壊天体', + es='Colapso permanente', path_id=6, rarity=1, enhancement='', @@ -1198,6 +1306,7 @@ cht='《自動口琴•茫茫白夜》', en='Auto-Harmonica: Whitest Night', jp='『自動ハーモニカ・茫々たる白夜』', + es='Armónica automática: La noche más blanca', path_id=7, rarity=3, enhancement='', @@ -1209,6 +1318,7 @@ cht='《四號屠場•眾生安眠》', en='Slaughterhouse No. 4: Rest in Peace', jp='『四番屠畜場・皆眠りて』', + es='Matadero 4: Descansa en paz', path_id=7, rarity=3, enhancement='', @@ -1220,6 +1330,7 @@ cht='《冠軍晚餐•貓的搖籃》', en="Champion's Dinner: Cat's Cradle", jp='『チャンピオンのディナー・猫のゆりかご』', + es='Cena de los campeones: Cuna del gato', path_id=7, rarity=3, enhancement='', @@ -1231,6 +1342,7 @@ cht='《燃燒男子的肖像》', en='Portrait of A Man On Fire', jp='『燃ゆる男の肖像』', + es='Retrato de un hombre en llamas', path_id=7, rarity=2, enhancement='', @@ -1242,6 +1354,7 @@ cht='《流吧,你的眼淚》', en='Just Keep on Crying!', jp='『流れよ汝が涙』', + es='Que corran tus lágrimas', path_id=7, rarity=2, enhancement='', @@ -1253,6 +1366,7 @@ cht='《砂時鏡下的幼園》', en='The Hourglass Kindergarten', jp='『砂時計の幼稚園』', + es='La guardería de la clepsidra', path_id=7, rarity=2, enhancement='', @@ -1264,6 +1378,7 @@ cht='《被塗汙的信天翁》', en='The Painted Albatross', jp='『汚されたアホウドリ』', + es='El albatros pintado', path_id=7, rarity=2, enhancement='', @@ -1275,6 +1390,7 @@ cht='《十二猴子與怒漢》', en='12 Monkeys and Angry Men', jp='『十二のサルと怒れる男』', + es='12 monos y hombres en pugna', path_id=7, rarity=2, enhancement='', @@ -1286,6 +1402,7 @@ cht='《利爾他引力之虹》', en='Aiden Gravitational Rainbow', jp='『リルタ重力の虹』', + es='Arcoíris gravitacional de Aiden', path_id=7, rarity=2, enhancement='', @@ -1297,6 +1414,7 @@ cht='《第二十一條軍規》', en='Twenty-First Military Rule', jp='『キャッチ=21』', + es='Regla militar n.º 21', path_id=7, rarity=2, enhancement='', @@ -1308,6 +1426,7 @@ cht='《操行滿分》', en='Exemplary Conduct', jp='『素行満点』', + es='Conducta ejemplar', path_id=7, rarity=1, enhancement='', @@ -1319,6 +1438,7 @@ cht='《基本有害》', en='Mostly Harmful', jp='『ほとんど有害』', + es='Básicamente peligroso', path_id=7, rarity=1, enhancement='', @@ -1330,6 +1450,7 @@ cht='《陰風陣陣》', en='Suspiria', jp='『サスペンス』', + es='Suspiria', path_id=7, rarity=1, enhancement='', @@ -1341,6 +1462,7 @@ cht='《灰暗的火》', en='Pale Fire', jp='『仄暗い炎』', + es='Fuego negro', path_id=7, rarity=1, enhancement='', @@ -1352,6 +1474,7 @@ cht='《回燈塔去》', en='Back to the Lighthouse', jp='『灯台へ戻ろう』', + es='Regreso al faro', path_id=7, rarity=1, enhancement='', @@ -1363,6 +1486,7 @@ cht='《奇愛醫生》', en='Doctor of Love', jp='『医者の異常な愛情』', + es='El doctor del amor', path_id=7, rarity=1, enhancement='', @@ -1374,6 +1498,7 @@ cht='《鉑金時代》', en='Platinum Age', jp='『白金時代』', + es='Edad de platino', path_id=7, rarity=1, enhancement='', @@ -1385,6 +1510,7 @@ cht='《發條蘋果》', en='Clockwork Apple', jp='『時計仕掛けのリンゴ』', + es='La manzana mecánica', path_id=7, rarity=1, enhancement='', @@ -1396,6 +1522,7 @@ cht='子囊釋放', en='Spore Discharge', jp='子嚢放出', + es='Descarga de huevas', path_id=8, rarity=3, enhancement='', @@ -1407,6 +1534,7 @@ cht='菌種膿皰', en='Fungal Pustule', jp='膿菌', + es='Pústula fúngica', path_id=8, rarity=3, enhancement='', @@ -1418,6 +1546,7 @@ cht='鐮刀肢足', en='Scythe Limbs', jp='鎌状付属肢', + es='Extremidades de guadaña', path_id=8, rarity=3, enhancement='', @@ -1429,6 +1558,7 @@ cht='腐殖瘡', en='Putrefaction Ulcer', jp='腐植腫', + es='Úlcera de putrefacción', path_id=8, rarity=2, enhancement='', @@ -1440,6 +1570,7 @@ cht='裂解酶', en='Lytic Enzyme', jp='分解酵素', + es='Enzima lítica', path_id=8, rarity=2, enhancement='', @@ -1451,6 +1582,7 @@ cht='代謝腔', en='Metabolic Cavity', jp='代謝腔', + es='Cavidad metabólica', path_id=8, rarity=2, enhancement='', @@ -1462,6 +1594,7 @@ cht='興奮腺', en='Excitatory Gland', jp='興奮腺', + es='Glándula de excitación', path_id=8, rarity=2, enhancement='', @@ -1473,6 +1606,7 @@ cht='裸腦質', en='Exposed Brain Matter', jp='裸脳質', + es='Masa cerebral expuesta', path_id=8, rarity=2, enhancement='', @@ -1484,6 +1618,7 @@ cht='節間膜', en='Intersegmental Membrane', jp='節関膜', + es='Membrana intersegmental', path_id=8, rarity=2, enhancement='', @@ -1495,6 +1630,7 @@ cht='催化劑', en='Catalyst', jp='触媒', + es='Catalizador', path_id=8, rarity=2, enhancement='', @@ -1506,6 +1642,7 @@ cht='骨刃', en='Osseus Blade', jp='骨刃', + es='Cuchilla ósea', path_id=8, rarity=1, enhancement='', @@ -1517,6 +1654,7 @@ cht='脊刺', en='Spinal Spur', jp='脊刺', + es='Espolón espinal', path_id=8, rarity=1, enhancement='', @@ -1528,6 +1666,7 @@ cht='槽針', en='Channeled Needle', jp='口針', + es='Aguja canalizada', path_id=8, rarity=1, enhancement='', @@ -1539,6 +1678,7 @@ cht='結膜', en='Conjunctiva', jp='結膜', + es='Conjuntiva', path_id=8, rarity=1, enhancement='', @@ -1550,6 +1690,7 @@ cht='鱗翅', en='Scaled Wing', jp='鱗翅', + es='Ala escamosa', path_id=8, rarity=1, enhancement='', @@ -1561,6 +1702,7 @@ cht='複眼', en='Compound Eye', jp='複眼', + es='Ojo compuesto', path_id=8, rarity=1, enhancement='', @@ -1572,6 +1714,7 @@ cht='孢夾', en='Sporangium', jp='胞子嚢', + es='Esporangio', path_id=8, rarity=1, enhancement='', @@ -1583,6 +1726,7 @@ cht='液囊', en='Vesicle', jp='液嚢', + es='Vesícula', path_id=8, rarity=1, enhancement='', diff --git a/tasks/rogue/keywords/bonus.py b/tasks/rogue/keywords/bonus.py index b44c4ed26..1e2ad033b 100644 --- a/tasks/rogue/keywords/bonus.py +++ b/tasks/rogue/keywords/bonus.py @@ -10,6 +10,7 @@ cht='破碎宇宙', en='Fragmented Cosmos', jp='破裂した宇宙', + es='Cosmos fragmentado', ) Blessing_Cosmos = RogueBonus( id=2, @@ -18,6 +19,7 @@ cht='祝福宇宙', en='Blessing Cosmos', jp='祝福された宇宙', + es='Cosmos de bendiciones', ) Miracle_Cosmos = RogueBonus( id=3, @@ -26,6 +28,7 @@ cht='神奇宇宙', en='Miracle Cosmos', jp='奇跡的な宇宙', + es='Cosmos milagroso', ) Orderly_Universe = RogueBonus( id=4, @@ -34,6 +37,7 @@ cht='有序宇宙', en='Orderly Universe', jp='秩序ある宇宙', + es='Universo ordenado', ) Hungry_Universe = RogueBonus( id=5, @@ -42,6 +46,7 @@ cht='巨胃宇宙', en='Hungry Universe', jp='大食いな宇宙', + es='Universo barrigudo', ) Bloodthirsty_Universe = RogueBonus( id=6, @@ -50,4 +55,5 @@ cht='嗜血宇宙', en='Bloodthirsty Universe', jp='血を好む宇宙', + es='Universo chupasangre', ) diff --git a/tasks/rogue/keywords/curio.py b/tasks/rogue/keywords/curio.py index a299d458a..320b948af 100644 --- a/tasks/rogue/keywords/curio.py +++ b/tasks/rogue/keywords/curio.py @@ -10,6 +10,7 @@ cht='降維骰子', en='Dimension Reduction Dice', jp='次元削減ダイス', + es='Dado de la reducción dimensional', ) Chaos_Trametes = RogueCurio( id=2, @@ -18,6 +19,7 @@ cht='混沌雲芝', en='Chaos Trametes', jp='混沌の雲芝', + es='Trametes del caos', ) Warping_Compound_Eye = RogueCurio( id=3, @@ -26,6 +28,7 @@ cht='躍遷複眼', en='Warping Compound Eye', jp='跳躍複眼', + es='Ojo compuesto luminoso', ) Fruit_of_the_Alien_Tree = RogueCurio( id=4, @@ -34,6 +37,7 @@ cht='異木果實', en='Fruit of the Alien Tree', jp='異木の果実', + es='Fruto del árbol extraño', ) Casket_of_Inaccuracy = RogueCurio( id=5, @@ -42,6 +46,7 @@ cht='測不準匣', en='Casket of Inaccuracy', jp='不確定の匣', + es='Caja de la imprecisión', ) Ambergris_Cheese = RogueCurio( id=6, @@ -50,6 +55,7 @@ cht='香涎乾酪', en='Ambergris Cheese', jp='香涎チーズ', + es='Queso de ámbar gris', ) Fortune_Glue = RogueCurio( id=7, @@ -58,6 +64,7 @@ cht='福靈膠', en='Fortune Glue', jp='幸福クリーム', + es='Pegamento de la fortuna', ) The_Parchment_That_Always_Eats = RogueCurio( id=8, @@ -66,6 +73,7 @@ cht='永不停嘴的羊皮卷', en='The Parchment That Always Eats', jp='おしゃべり羊皮紙', + es='Pergamino tragón', ) Broken_Cuckoo_Clock = RogueCurio( id=9, @@ -74,6 +82,7 @@ cht='破碎咕咕鐘', en='Broken Cuckoo Clock', jp='壊れた鳩時計', + es='Reloj de cuco roto', ) Mechanical_Cuckoo_Clock = RogueCurio( id=10, @@ -82,6 +91,7 @@ cht='機械咕咕鐘', en='Mechanical Cuckoo Clock', jp='機械式鳩時計', + es='Reloj de cuco mecánico', ) The_Doctor_Robe = RogueCurio( id=11, @@ -90,6 +100,7 @@ cht='博士之袍', en="The Doctor's Robe", jp='博士のローブ', + es='Toga del Doctor', ) Society_Ticket = RogueCurio( id=12, @@ -98,6 +109,7 @@ cht='俱樂部券', en='Society Ticket', jp='クラブチケット', + es='Boleto del Círculo', ) Faith_Bond = RogueCurio( id=13, @@ -106,6 +118,7 @@ cht='信仰債券', en='Faith Bond', jp='信仰債券', + es='Bono de fe', ) Robe_of_The_Beauty = RogueCurio( id=14, @@ -114,6 +127,7 @@ cht='純美之袍', en='Robe of The Beauty', jp='純美のローブ', + es='Túnica de la Belleza', ) Gold_Coin_of_Discord = RogueCurio( id=15, @@ -122,6 +136,7 @@ cht='分裂金幣', en='Gold Coin of Discord', jp='分裂金貨', + es='Moneda de oro del desacuerdo', ) Useless_Typewriter = RogueCurio( id=16, @@ -130,6 +145,7 @@ cht='無效文字印表機', en='Useless Typewriter', jp='無効文字タイプライター', + es='Máquina de escribir inútil', ) Void_Wick_Trimmer = RogueCurio( id=17, @@ -138,6 +154,7 @@ cht='空無燭剪', en='Void Wick Trimmer', jp='空無の芯切り', + es='Despabiladeras del vacío', ) Omniscient_Capsule = RogueCurio( id=18, @@ -146,6 +163,7 @@ cht='萬識囊', en='Omniscient Capsule', jp='全知袋', + es='Cápsula omnisciente', ) Record_from_Beyond_the_Sky = RogueCurio( id=19, @@ -154,6 +172,7 @@ cht='天外合唱專輯', en='Record from Beyond the Sky', jp='天外聖歌隊のレコード', + es='Disco de otro mundo', ) Entropic_Die = RogueCurio( id=20, @@ -162,6 +181,7 @@ cht='萬象無常骰', en='Entropic Die', jp='万象無常のサイコロ', + es='Dado entrópico', ) Shining_Trapezohedron_Die = RogueCurio( id=21, @@ -170,6 +190,7 @@ cht='閃耀的偏方三八面骰', en='Shining Trapezohedron Die', jp='輝くトラペゾヘドロンサイコロ', + es='Dado trapezoedro reluciente', ) Sealing_Wax_of_Preservation = RogueCurio( id=22, @@ -178,6 +199,7 @@ cht='存護火漆', en='Sealing Wax of Preservation', jp='存護の封蝋', + es='Lacre de la Conservación', ) Sealing_Wax_of_Elation = RogueCurio( id=23, @@ -186,6 +208,7 @@ cht='歡愉火漆', en='Sealing Wax of Elation', jp='愉悦の封蝋', + es='Lacre de la Exultación', ) Sealing_Wax_of_The_Hunt = RogueCurio( id=24, @@ -194,6 +217,7 @@ cht='巡獵火漆', en='Sealing Wax of The Hunt', jp='巡狩の封蝋', + es='Lacre de la Cacería', ) Sealing_Wax_of_Destruction = RogueCurio( id=25, @@ -202,6 +226,7 @@ cht='毀滅火漆', en='Sealing Wax of Destruction', jp='壊滅の封蝋', + es='Lacre de la Destrucción', ) Sealing_Wax_of_Remembrance = RogueCurio( id=26, @@ -210,6 +235,7 @@ cht='記憶火漆', en='Sealing Wax of Remembrance', jp='記憶の封蝋', + es='Lacre de la Reminiscencia', ) Sealing_Wax_of_Nihility = RogueCurio( id=27, @@ -218,6 +244,7 @@ cht='虛無火漆', en='Sealing Wax of Nihility', jp='虚無の封蝋', + es='Lacre de la Nihilidad', ) Sealing_Wax_of_Abundance = RogueCurio( id=28, @@ -226,6 +253,7 @@ cht='豐饒火漆', en='Sealing Wax of Abundance', jp='豊穣の封蝋', + es='Lacre de la Abundancia', ) Corrupted_Code = RogueCurio( id=29, @@ -234,6 +262,7 @@ cht='亂七八糟的代碼', en='Corrupted Code', jp='ぐちゃぐちゃなコード', + es='Código corrupto', ) Odd_Code = RogueCurio( id=30, @@ -242,6 +271,7 @@ cht='有點蹊蹺的程式碼', en='Odd Code', jp='少し怪しげなコード', + es='Código extraño', ) Normal_Code = RogueCurio( id=31, @@ -250,6 +280,7 @@ cht='中規中矩的程式碼', en='Normal Code', jp='杓子定規なコード', + es='Código normal', ) Elegant_Code = RogueCurio( id=32, @@ -258,6 +289,7 @@ cht='精確優雅的程式碼', en='Elegant Code', jp='正確で完璧なコード', + es='Código preciso', ) Mysterious_Code = RogueCurio( id=33, @@ -266,6 +298,7 @@ cht='沒有註解的程式碼', en='Mysterious Code', jp='注釈がないコード', + es='Código misterioso', ) Infinitely_Recursive_Code = RogueCurio( id=34, @@ -274,6 +307,7 @@ cht='無限遞迴的程式碼', en='Infinitely Recursive Code', jp='無限再帰するコード', + es='Código infinitamente recursivo', ) Shattered_Star_Bait = RogueCurio( id=35, @@ -282,6 +316,7 @@ cht='碎星芳餌', en='Shattered Star Bait', jp='砕けた星の釣り餌', + es='Cebo de las estrellas despedazadas', ) Obliteration_Wick_Trimmer = RogueCurio( id=36, @@ -290,6 +325,7 @@ cht='湮滅燭剪', en='Obliteration Wick Trimmer', jp='湮滅の芯切り', + es='Despabiladeras de la aniquilación', ) Insect_Web = RogueCurio( id=37, @@ -298,6 +334,7 @@ cht='蟲網', en='Insect Web', jp='虫網', + es='Telaraña de insectos', ) Angel_type_I_O_U_Dispenser = RogueCurio( id=38, @@ -306,6 +343,7 @@ cht='天使型謝債發行機', en='Angel-type I.O.U. Dispenser', jp='天使型謝債発行機', + es='Objeto raro: Dispensador de deuda en forma de ángel', ) Laurel_Crown_of_Planar_Shifts = RogueCurio( id=39, @@ -314,6 +352,7 @@ cht='換境桂冠', en='Laurel Crown of Planar Shifts', jp='換境桂冠', + es='Corona de laurel del cambio de plano', ) Space_Time_Prism = RogueCurio( id=40, @@ -322,6 +361,7 @@ cht='時空稜鏡', en='Space-Time Prism', jp='時空のプリズム', + es='Prisma del espacio-tiempo', ) Cosmic_Big_Lotto = RogueCurio( id=41, @@ -330,6 +370,7 @@ cht='銀河大樂透', en='Cosmic Big Lotto', jp='銀河ビッグロッタリー', + es='Gran Lotería Galáctica', ) Divination_Cuckoo_Clock = RogueCurio( id=42, @@ -338,6 +379,7 @@ cht='卜筮咕咕鐘', en='Divination Cuckoo Clock', jp='占い鳩時計', + es='Reloj de cuco de adivinación', ) Black_Forest_Cuckoo_Clock = RogueCurio( id=43, @@ -346,6 +388,7 @@ cht='黑森林咕咕鐘', en='Black Forest Cuckoo Clock', jp='黒森鳩時計', + es='Reloj de cuco perpetuo del Bosque Oscuro', ) Perpetual_Motion_Cuckoo_Clock = RogueCurio( id=44, @@ -354,6 +397,7 @@ cht='永動咕咕鐘', en='Perpetual Motion Cuckoo Clock', jp='永久鳩時計', + es='Reloj de cuco perpetuo', ) Punklorde_Mentality = RogueCurio( id=45, @@ -362,6 +406,7 @@ cht='龐克洛德精神', en='Punklorde Mentality', jp='パンクロードの精神', + es='Mentalidad de Punklorde', ) Beacon_Coloring_Paste = RogueCurio( id=46, @@ -370,6 +415,7 @@ cht='信標著色劑', en='Beacon Coloring Paste', jp='ビーコン着色剤', + es='Colorante de balizas', ) IPC_Cuckoo_Clock = RogueCurio( id=47, @@ -378,6 +424,7 @@ cht='公司咕咕鐘', en='IPC Cuckoo Clock', jp='カンパニー鳩時計', + es='Reloj de cuco de la Corporación', ) Triangular_Drum_roll_Device = RogueCurio( id=48, @@ -386,6 +433,7 @@ cht='三角滾奏器', en='Triangular Drum-roll Device', jp='トライアングル', + es='Máquina triangular de redoble', ) Silver_Coin_of_Discord = RogueCurio( id=49, @@ -394,6 +442,7 @@ cht='分裂銀幣', en='Silver Coin of Discord', jp='分裂銀貨', + es='Moneda de plata de la discordia', ) Family_Ties = RogueCurio( id=50, @@ -402,6 +451,7 @@ cht='家族緣結', en='Family Ties', jp='ファミリーの絆結び', + es='Lazos de familia', ) Medal_of_the_Gloryblood_Era = RogueCurio( id=51, @@ -410,6 +460,7 @@ cht='血錦之紀徽章', en='Medal of the Gloryblood Era', jp='血錦の徽章', + es='Medalla de la Era Gloriasangrienta', ) Black_Hole_Trap = RogueCurio( id=52, @@ -418,6 +469,7 @@ cht='黑洞之阱', en='Black Hole Trap', jp='ブラックホールの罠', + es='Trampa del agujero negro', ) Interastral_Big_Lotto = RogueCurio( id=53, @@ -426,6 +478,7 @@ cht='星際大樂透', en='Interastral Big Lotto', jp='星間ビッグロッタリー', + es='Gran Lotería Interastral', ) Fissured_Cuckoo_Clock = RogueCurio( id=54, @@ -434,6 +487,7 @@ cht='分裂咕咕鐘', en='Fissured Cuckoo Clock', jp='分裂鳩時計', + es='Reloj de cuco agrietado', ) Typical_Genius_Society_Gossip = RogueCurio( id=55, @@ -442,6 +496,7 @@ cht='天才俱樂部普通八卦', en='Typical Genius Society Gossip', jp='天才クラブの他愛もない噂話', + es='Rumores típicos del Círculo de Genios', ) Tonic_of_Efficacious_Chaos = RogueCurio( id=56, @@ -450,6 +505,7 @@ cht='混沌特效靈藥', en='Tonic of Efficacious Chaos', jp='混沌の特效霊薬', + es='Tónico del caos eficaz', ) Rubert_Empire_Mechanical_Cogwheel = RogueCurio( id=57, @@ -458,6 +514,7 @@ cht='魯珀特帝國機械齒輪', en='Rubert Empire Mechanical Cogwheel', jp='ルパート帝国の機械歯車', + es='Rueda dentada del imperio de Rupert', ) Cavity_System_Model = RogueCurio( id=58, @@ -466,6 +523,7 @@ cht='齲齒星系模型', en='Cavity System Model', jp='虫歯星系模型', + es='Modelo del sistema Caries', ) Tousled_Detective = RogueCurio( id=59, @@ -474,6 +532,7 @@ cht='《雞窩頭偵探》', en='Tousled Detective', jp='『ボサ頭探偵』', + es='«El detective despeinado»', ) Fool_Mask = RogueCurio( id=60, @@ -482,6 +541,7 @@ cht='愚者面具', en="Fool's Mask", jp='愚者の仮面', + es='Máscara del bufón', ) Vile_Mechanical_Satellite_900 = RogueCurio( id=61, @@ -490,6 +550,7 @@ cht='邪惡機械衛星#900', en='Vile Mechanical Satellite #900', jp='邪悪な機械衛星#900', + es='Satélite Mecánico Vil 900', ) Spirit_of_the_Knights_of_Beauty = RogueCurio( id=62, @@ -498,6 +559,7 @@ cht='純美騎士精神', en='Spirit of the Knights of Beauty', jp='純美の騎士道', + es='Espíritu de los Caballeros de la Belleza', ) Illusory_Automaton = RogueCurio( id=63, @@ -506,6 +568,7 @@ cht='虛構機兵', en='Illusory Automaton', jp='虚構機兵', + es='Autómata ilusorio', ) A_Pinch_of_Bearded_Gunpowder = RogueCurio( id=64, @@ -514,6 +577,7 @@ cht='一撮鬍鬚火藥', en='A Pinch of Bearded Gunpowder', jp='ひげの爆薬', + es='Pólvora de barba', ) Man_Made_Meteorite = RogueCurio( id=65, @@ -522,6 +586,7 @@ cht='人造隕石球', en='Man-Made Meteorite', jp='人造隕石', + es='Meteorito artificial', ) Thalan_Toxi_Flame = RogueCurio( id=66, @@ -530,6 +595,7 @@ cht='塔拉毒火焰', en='Thalan Toxi-Flame', jp='ターラの毒火炎', + es='Toxiflama de Thalan', ) The_Pinkest_Collision = RogueCurio( id=67, @@ -538,6 +604,7 @@ cht='粉紅衝撞', en='The Pinkest Collision', jp='ピンクショック', + es='Colisión rosa', ) Sealing_Wax_of_Propagation = RogueCurio( id=68, @@ -546,4 +613,5 @@ cht='繁育火漆', en='Sealing Wax of Propagation', jp='繁殖の封蝋', + es='Lacre de la Propagación', ) diff --git a/tasks/rogue/keywords/enhancement.py b/tasks/rogue/keywords/enhancement.py index 7012fb94e..d78ae5e12 100644 --- a/tasks/rogue/keywords/enhancement.py +++ b/tasks/rogue/keywords/enhancement.py @@ -10,4 +10,5 @@ cht='已強化', en='Already Enhanced', jp='強化済み', + es='Potenciada', ) diff --git a/tasks/rogue/keywords/path.py b/tasks/rogue/keywords/path.py index a18035ba0..4b9ccaced 100644 --- a/tasks/rogue/keywords/path.py +++ b/tasks/rogue/keywords/path.py @@ -10,6 +10,7 @@ cht='存護', en='Preservation', jp='存護', + es='Conservación', ) Remembrance = RoguePath( id=2, @@ -18,6 +19,7 @@ cht='記憶', en='Remembrance', jp='記憶', + es='Reminiscencia', ) Nihility = RoguePath( id=3, @@ -26,6 +28,7 @@ cht='虛無', en='Nihility', jp='虚無', + es='Nihilidad', ) Abundance = RoguePath( id=4, @@ -34,6 +37,7 @@ cht='豐饒', en='Abundance', jp='豊穣', + es='Abundancia', ) The_Hunt = RoguePath( id=5, @@ -42,6 +46,7 @@ cht='巡獵', en='The Hunt', jp='巡狩', + es='Cacería', ) Destruction = RoguePath( id=6, @@ -50,6 +55,7 @@ cht='毀滅', en='Destruction', jp='壊滅', + es='Destrucción', ) Elation = RoguePath( id=7, @@ -58,6 +64,7 @@ cht='歡愉', en='Elation', jp='愉悦', + es='Exultación', ) Propagation = RoguePath( id=8, @@ -66,4 +73,5 @@ cht='繁育', en='Propagation', jp='繁殖', + es='Propagación', ) diff --git a/tasks/rogue/keywords/resonance.py b/tasks/rogue/keywords/resonance.py index 296c4e92c..9d644d29a 100644 --- a/tasks/rogue/keywords/resonance.py +++ b/tasks/rogue/keywords/resonance.py @@ -10,6 +10,7 @@ cht='命途迴響:「存護」', en='Path Resonance: Preservation', jp='運命の反響:「存護」', + es='Resonancia de Vía: Conservación', path_id=1, rarity=3, ) @@ -20,6 +21,7 @@ cht='迴響構音:零維強化', en='Resonance Formation: Zero-Dimensional Reinforcement', jp='反響構音:析出硬化', + es='Formación de Resonancia: Potenciación de dimensión cero', path_id=1, rarity=3, ) @@ -30,6 +32,7 @@ cht='迴響構音:共晶反應', en='Resonance Formation: Eutectic Reaction', jp='反響構音:共晶反応', + es='Formación de Resonancia: Reacción eutéctica', path_id=1, rarity=3, ) @@ -40,6 +43,7 @@ cht='迴響構音:均晶轉變', en='Resonance Formation: Isomorphous Reaction', jp='反響構音:全率固溶体', + es='Formación de Resonancia: Reacción isomorfa', path_id=1, rarity=3, ) @@ -50,6 +54,7 @@ cht='迴響交錯:披鋒效應', en='Resonance Interplay: Spiked Armor', jp='反響交錯:トリミング加工', + es='Interacción de Resonancia: Armadura de púas', path_id=1, rarity=3, ) @@ -60,6 +65,7 @@ cht='迴響交錯:冷脆現象', en='Resonance Interplay: Cold Snap', jp='反響交錯:低温脆性', + es='Interacción de Resonancia: Ola de frío', path_id=1, rarity=3, ) @@ -70,6 +76,7 @@ cht='命途迴響:「記憶」', en='Path Resonance: Remembrance', jp='運命の反響:「記憶」', + es='Resonancia de Vía: Reminiscencia', path_id=2, rarity=3, ) @@ -80,6 +87,7 @@ cht='迴響構音:全面回憶', en='Resonance Formation: Total Recall', jp='反響構音:全面追憶', + es='Formación de Resonancia: Desafío total', path_id=2, rarity=3, ) @@ -90,6 +98,7 @@ cht='迴響構音:體驗的富翁', en='Resonance Formation: Rich Experience', jp='反響構音:体験の富豪', + es='Formación de Resonancia: Experiencia acaudalada', path_id=2, rarity=3, ) @@ -100,6 +109,7 @@ cht='迴響構音:第二次初戀', en='Resonance Formation: First Love Once More', jp='反響構音:二度目の初恋', + es='Formación de Resonancia: Segundo amor', path_id=2, rarity=3, ) @@ -110,6 +120,7 @@ cht='迴響交錯:臉龐,村莊', en='Resonance Interplay: Faces Places', jp='反響交錯:顔、村', + es='Interacción de Resonancia: Lugares y rostros', path_id=2, rarity=3, ) @@ -120,6 +131,7 @@ cht='迴響交錯:霧中風景', en='Resonance Interplay: Landscape in the Mist', jp='反響交錯:霧の中の風景', + es='Interacción de Resonancia: Paisaje en la niebla', path_id=2, rarity=3, ) @@ -130,6 +142,7 @@ cht='命途迴響:「虛無」', en='Path Resonance: Nihility', jp='運命の反響:「虚無」', + es='Resonancia de Vía: Nihilidad', path_id=3, rarity=3, ) @@ -140,6 +153,7 @@ cht='迴響構音:懷疑的四重根', en='Resonance Formation: The Doubtful Fourfold Root', jp='反響構音:疑いの四つの根', + es='Formación de Resonancia: Raíz cuádruple dudosa', path_id=3, rarity=3, ) @@ -150,6 +164,7 @@ cht='迴響構音:苦難與陽光', en='Resonance Formation: Suffering and Sunshine', jp='反響構音:苦難と陽光', + es='Formación de Resonancia: Sufrimiento y sol', path_id=3, rarity=3, ) @@ -160,6 +175,7 @@ cht='迴響構音:局外人', en='Resonance Formation: Outsider', jp='反響構音:異邦人', + es='Formación de Resonancia: Ajeno', path_id=3, rarity=3, ) @@ -170,6 +186,7 @@ cht='迴響交錯:林中路', en='Resonance Interplay: Off the Beaten Track', jp='反響交錯:森の中の道', + es='Interacción de Resonancia: Fuera de los caminos trillados', path_id=3, rarity=3, ) @@ -180,6 +197,7 @@ cht='迴響交錯:白夜', en='Resonance Interplay: White Nights', jp='反響交錯:白夜', + es='Interacción de Resonancia: Noches blancas', path_id=3, rarity=3, ) @@ -190,6 +208,7 @@ cht='命途迴響:「豐饒」', en='Path Resonance: Abundance', jp='運命の反響:「豊穣」', + es='Resonancia de Vía: Abundancia', path_id=4, rarity=3, ) @@ -200,6 +219,7 @@ cht='迴響構音:無餘涅槃', en='Resonance Formation: Terminal Nirvana', jp='反響構音:無余涅槃', + es='Formación de Resonancia: Nirvana terminal', path_id=4, rarity=3, ) @@ -210,6 +230,7 @@ cht='迴響構音:諸行無常', en='Resonance Formation: Anicca', jp='反響構音:諸行無常', + es='Formación de Resonancia: Anicca', path_id=4, rarity=3, ) @@ -220,6 +241,7 @@ cht='迴響構音:諸法無我', en='Resonance Formation: Anatta', jp='反響構音:諸法無我', + es='Formación de Resonancia: Anatta', path_id=4, rarity=3, ) @@ -230,6 +252,7 @@ cht='迴響交錯:先照高山', en='Resonance Interplay: First Illuminate the Mountains', jp='反響交錯:先に山を照らす', + es='Interacción de Resonancia: Primero ilumina las montañas', path_id=4, rarity=3, ) @@ -240,6 +263,7 @@ cht='迴響交錯:旃檀薪盡', en='Resonance Interplay: Nullifying Ardor', jp='反響交錯:センダンの薪尽きる', + es='Interacción de Resonancia: Ardor anulador', path_id=4, rarity=3, ) @@ -250,6 +274,7 @@ cht='命途迴響:「巡獵」', en='Path Resonance: The Hunt', jp='運命の反響:「巡狩」', + es='Resonancia de Vía: Cacería', path_id=5, rarity=3, ) @@ -260,6 +285,7 @@ cht='迴響構音:狩星巡日', en='Resonance Formation: Star Hunter', jp='反響構音:星を狩りて日を巡る', + es='Formación de Resonancia: Caza de estrellas', path_id=5, rarity=3, ) @@ -270,6 +296,7 @@ cht='迴響構音:柘弓危矢', en='Resonance Formation: Bow and Arrow', jp='反響構音:柘弓に疾矢', + es='Formación de Resonancia: Arco y flechas', path_id=5, rarity=3, ) @@ -280,6 +307,7 @@ cht='迴響構音:射不主皮', en='Resonance Formation: Perfect Aim', jp='反響構音:射は皮を主とせず', + es='Formación de Resonancia: Diana perfecta', path_id=5, rarity=3, ) @@ -290,6 +318,7 @@ cht='迴響交錯:足逸驚飆', en='Resonance Interplay: Startling Breeze', jp='反響交錯:足元の突風', + es='Interacción de Resonancia: Brisa sorprendente', path_id=5, rarity=3, ) @@ -300,6 +329,7 @@ cht='迴響交錯:火馳星流', en='Resonance Interplay: Shooting Starfire', jp='反響交錯:恒星ストリーム', + es='Interacción de Resonancia: Fuego estelar', path_id=5, rarity=3, ) @@ -310,6 +340,7 @@ cht='命途迴響:「毀滅」', en='Path Resonance: Destruction', jp='運命の反響:「壊滅」', + es='Resonancia de Vía: Destrucción', path_id=6, rarity=3, ) @@ -320,6 +351,7 @@ cht='迴響構音:激變變星', en='Resonance Formation: Cataclysmic Variable', jp='反響構音:激変星', + es='Formación de Resonancia: Variable cataclísmica', path_id=6, rarity=3, ) @@ -330,6 +362,7 @@ cht='迴響構音:極端氦閃', en='Resonance Formation: Extreme Helium Flash', jp='反響構音:ヘリウムフラッシュ', + es='Formación de Resonancia: Fogonazo de helio', path_id=6, rarity=3, ) @@ -340,6 +373,7 @@ cht='迴響構音:事件視界', en='Resonance Formation: Event Horizon', jp='反響構音:事象の地平線', + es='Formación de Resonancia: Horizonte eventual', path_id=6, rarity=3, ) @@ -350,6 +384,7 @@ cht='迴響交錯:次行星帶', en='Resonance Interplay: Substellar Belt', jp='反響交錯:準惑星帯', + es='Interacción de Resonancia: Cinturón subestelar', path_id=6, rarity=3, ) @@ -360,6 +395,7 @@ cht='迴響交錯:零齡主序', en='Resonance Interplay: Zero Age Main Sequence', jp='反響交錯:零歳主系列', + es='Interacción de Resonancia: Secuencia principal de la Era Cero', path_id=6, rarity=3, ) @@ -370,6 +406,7 @@ cht='命途迴響:「歡愉」', en='Path Resonance: Elation', jp='運命の反響:「愉悦」', + es='Resonancia de Vía: Exultación', path_id=7, rarity=3, ) @@ -380,6 +417,7 @@ cht='迴響構音:末日狂歡', en='Resonance Formation: Doomsday Carnival', jp='反響構音:終末の狂宴', + es='Formación de Resonancia: Fiesta del juicio final', path_id=7, rarity=3, ) @@ -390,6 +428,7 @@ cht='迴響構音:樹苗長高舞', en='Resonance Formation: Dance of Growth', jp='反響構音:苗木が育つ踊り', + es='Formación de Resonancia; Danza de los brotes altos', path_id=7, rarity=3, ) @@ -400,6 +439,7 @@ cht='迴響構音:開蓋有獎', en='Resonance Formation: Instant Win', jp='反響構音:もう1本', + es='Formación de Resonancia: Abre y gana', path_id=7, rarity=3, ) @@ -410,6 +450,7 @@ cht='迴響交錯:鮟鱇魚之味', en='Resonance Interplay: The Taste of Anglerfish', jp='反響交錯:アンコウの味', + es='Interacción de Resonancia: El sabor del rape', path_id=7, rarity=3, ) @@ -420,6 +461,7 @@ cht='迴響交錯:冰棺與豚鼠', en='Resonance Interplay: Guinea Pig in Ice Coffin', jp='反響交錯:氷の棺とモルモット', + es='Interacción de Resonancia: Cobayas en ataúdes de hielo', path_id=7, rarity=3, ) @@ -430,6 +472,7 @@ cht='命途迴響:「繁育」', en='Path Resonance: Propagation', jp='運命の反響:「繁殖」', + es='Resonancia de Vía: Propagación', path_id=8, rarity=3, ) @@ -440,6 +483,7 @@ cht='迴響構音:刺吸口器', en='Resonance Formation: Proboscis', jp='反響構音:吸収口器', + es='Formación de Resonancia: Probóscide', path_id=8, rarity=3, ) @@ -450,6 +494,7 @@ cht='迴響構音:酚類物質', en='Resonance Formation: Phenol Compounds', jp='反響構音:フェノール類', + es='Formación de Resonancia: Compuestos fenólicos', path_id=8, rarity=3, ) @@ -460,6 +505,7 @@ cht='迴響構音:結晶螯刺', en='Resonance Formation: Crystal Pincers', jp='反響構音:結晶毒針', + es='Formación de Resonancia: Tenazas de cristal', path_id=8, rarity=3, ) @@ -470,6 +516,7 @@ cht='迴響交錯:重疊象眼', en='Resonance Interplay: Superposition Eye', jp='反響交錯:重複像眼', + es='Interacción de Resonancia: Ojo de superposición', path_id=8, rarity=3, ) @@ -480,6 +527,7 @@ cht='迴響交錯:附著菌毯', en='Resonance Interplay: Adherent Microbial Mat', jp='反響交錯:菌膜付着', + es='Interacción de Resonancia: Tapiz microbiano adherente', path_id=8, rarity=3, ) From cfc5f9455e208ebcb93f327135a023eadf47555a Mon Sep 17 00:00:00 2001 From: LmeSzinc <37934724+LmeSzinc@users.noreply.github.com> Date: Mon, 25 Sep 2023 23:25:22 +0800 Subject: [PATCH 6/8] Add: Spanish on webui --- module/config/i18n/es-ES.json | 66 ++++++++++++++++++++++------------- module/webui/app.py | 1 + 2 files changed, 43 insertions(+), 24 deletions(-) diff --git a/module/config/i18n/es-ES.json b/module/config/i18n/es-ES.json index e2e7cc301..9e1f8270e 100644 --- a/module/config/i18n/es-ES.json +++ b/module/config/i18n/es-ES.json @@ -38,6 +38,10 @@ "name": "Encargos", "help": "" }, + "DataUpdate": { + "name": "Actualizar panel", + "help": "" + }, "Rogue": { "name": "Universo Simulado", "help": "El Universo Simulado está en desarrollo, y no se ejecutará" @@ -349,7 +353,7 @@ "Bronya": "Bronya", "Clara": "Clara", "DanHeng": "Dan Heng", - "DanHengImbibitorLunae": "Dan Heng • Imbibitor Lunae", + "DanHengImbibitorLunae": "Dan Heng - Imbibitor Lunae", "FuXuan": "Fu Xuan", "Gepard": "Gepard", "Herta": "Herta", @@ -360,7 +364,7 @@ "Luka": "Luka", "Luocha": "Luocha", "Lynx": "Lynx", - "March7th": "March 7th", + "March7th": "Siete de Marzo", "Natasha": "Natasha", "Pela": "Pela", "Qingque": "Qingque", @@ -422,56 +426,56 @@ "not_supported": "No soportado aún" }, "Clear_Stagnant_Shadow_1_times": { - "name": "Completa Sombra paralizada 1 vez", + "name": "Completa Sombra paralizada 1 veces", "help": "Necesitas configurar y activar la tarea \"Mazmorra\"", "achievable": "Completable", "not_set": "No configurado", "not_supported": "No soportado aún" }, "Clear_Cavern_of_Corrosion_1_times": { - "name": "Completa Caverna de la corrosión 1 vez", + "name": "Completa Caverna de la corrosión 1 veces", "help": "Necesitas configurar y activar la tarea \"Mazmorra\"", "achievable": "Completable", "not_set": "No configurado", "not_supported": "No soportado aún" }, "In_a_single_battle_inflict_3_Weakness_Break_of_different_Types": { - "name": "En una sola batalla, inflinge 3 tipos de Ruptura de diferente tipo", + "name": "En una sola batalla, inflige 3 tipos de Ruptura de Debilidad", "help": "Completable por defecto, se hará el desafío de Himeko", "achievable": "Completable", "not_set": "No configurado", "not_supported": "No soportado aún" }, "Inflict_Weakness_Break_5_times": { - "name": "Inflinge ruptura de debilidad 5 veces", + "name": "Inflige Ruptura de Debilidad 5 veces", "help": "Completable por defecto, se hará el desafío de Himeko", "achievable": "Completable", "not_set": "No configurado", "not_supported": "No soportado aún" }, "Defeat_a_total_of_20_enemies": { - "name": "Derrota un total de 20 enemigos", + "name": "Derrota a 20 enemigos", "help": "Completable por defecto, se hará el desafío de Himeko", "achievable": "Completable", "not_set": "No configurado", "not_supported": "No soportado aún" }, "Enter_combat_by_attacking_enemy_Weakness_and_win_3_times": { - "name": "Entra en combate atacando la Debilidad de un enemigo y gana 3 veces", + "name": "Entra en combate atacando la debilidad del enemigo y gana 3 veces", "help": "Completable por defecto, se hará el desafío de Himeko", "achievable": "Completable", "not_set": "No configurado", "not_supported": "No soportado aún" }, "Use_Technique_2_times": { - "name": "Usar la Técnica 2 veces.", + "name": "Usa técnicas 2 veces", "help": "Alcanzable por defecto, irá al abismo y usará la técnica 2 veces.", "achievable": "Completable", "not_set": "No configurado", "not_supported": "No soportado aún" }, "Go_on_assignment_1_time": { - "name": "Asigna un encargo 1 vez", + "name": "Asigna un encargo", "help": "Necesitas configurar y activar la tarea de \"Encargos\"", "achievable": "Completable", "not_set": "No configurado", @@ -485,91 +489,91 @@ "not_supported": "No soportado aún" }, "Destroy_3_destructible_objects": { - "name": "Rompe 3 objetos destructibles", + "name": "Destruye 3 objetos destruibles", "help": "Completable por defecto, se hará el desafío de Himeko", "achievable": "Completable", "not_set": "No configurado", "not_supported": "No soportado aún" }, "Complete_Forgotten_Hall_1_time": { - "name": "Completa Salón Olvidado 1 vez", + "name": "Completa el Salón olvidado 1 vez", "help": "Completable por defecto, se seleccionarán los primeros 4 personajes y se hará el primer nivel. Por favor, asegúrate de que estos pueden hacerlo.", "achievable": "Completable", "not_set": "No configurado", "not_supported": "No soportado aún" }, "Complete_Echo_of_War_1_times": { - "name": "Completa Ecos de la guerra 1 vez.", + "name": "Completa Ecos de la guerra 1 vez", "help": "", "achievable": "Completable", "not_set": "No configurado", "not_supported": "No soportado aún" }, "Complete_1_stage_in_Simulated_Universe_Any_world": { - "name": "Completa 1 nivel de Universo Simulado", + "name": "Supera 1 zona del Universo Simulado (cualquier mundo)", "help": "", "achievable": "Completable", "not_set": "No configurado", "not_supported": "No soportado aún" }, "Obtain_victory_in_combat_with_support_characters_1_time": { - "name": "Gana 1 combate con un personaje de apoyo.", + "name": "Gana 1 batalla utilizando personajes de apoyo", "help": "Necesitas configurar la tarea de \"Mazmorra\", así como configurar a los héroes de apoyo.", "achievable": "Completable", "not_set": "No configurado", "not_supported": "No soportado aún" }, "Use_an_Ultimate_to_deal_the_final_blow_1_time": { - "name": "Usa la habilidad definitiva para asestar un golpe final.", + "name": "Asesta el golpe final con una habilidad definitiva 1 vez", "help": "Completable por defecto, se hará el desafío de Himeko", "achievable": "Completable", "not_set": "No configurado", "not_supported": "No soportado aún" }, "Level_up_any_character_1_time": { - "name": "Sube de nivel cualquier personaje 1 vez.", + "name": "Mejora el nivel de cualquier personaje 1 vez", "help": "", "achievable": "Completable", "not_set": "No configurado", "not_supported": "No soportado aún" }, "Level_up_any_Light_Cone_1_time": { - "name": "Sube de nivel cualquier Cono de luz 1 vez.", + "name": "Mejora cualquier cono de luz 1 vez", "help": "", "achievable": "Completable", "not_set": "No configurado", "not_supported": "No soportado aún" }, "Level_up_any_Relic_1_time": { - "name": "Sube de nivel cualquier Reliquia 1 vez.", + "name": "Mejora cualquier artefacto 1 vez", "help": "", "achievable": "Completable", "not_set": "No configurado", "not_supported": "No soportado aún" }, "Salvage_any_Relic": { - "name": "Destruye cualquier Reliquia", + "name": "Destruye 1 artefacto", "help": "Completable por defecto. Se destruirá la última ordenado ascendentemente por rareza.", "achievable": "Completable", "not_set": "No configurado", "not_supported": "No soportado aún" }, "Synthesize_Consumable_1_time": { - "name": "Sintetiza cualqueir consumible 1 vez.", + "name": "Sintetiza consumibles 1 vez", "help": "Completable por defecto, se sintetizará un snack.", "achievable": "Completable", "not_set": "No configurado", "not_supported": "No soportado aún" }, "Synthesize_material_1_time": { - "name": "Sintetiza cualquier material 1 vez.", + "name": "Sintetiza materiales 1 vez", "help": "Completable por defecto, se sintetizará un material de nivel bajo.", "achievable": "Completable", "not_set": "No configurado", "not_supported": "No soportado aún" }, "Use_Consumables_1_time": { - "name": "Usa consumibles 1 vez", + "name": "Usa 1 consumible", "help": "Completable por defecto. Se sintetizará uno si no tienes ninguno.", "achievable": "Completable", "not_set": "No configurado", @@ -698,6 +702,20 @@ "help": "" } }, + "ItemStorage": { + "_info": { + "name": "", + "help": "" + }, + "Credit": { + "name": "Crédito", + "help": "" + }, + "StallerJade": { + "name": "Jade", + "help": "" + } + }, "RoguePath": { "_info": { "name": "Ajustes de Vía", @@ -887,4 +905,4 @@ "Clear": "Limpiar" } } -} +} \ No newline at end of file diff --git a/module/webui/app.py b/module/webui/app.py index 06683ba64..59bd09858 100644 --- a/module/webui/app.py +++ b/module/webui/app.py @@ -1095,6 +1095,7 @@ def set_theme(t): {"label": "繁體中文", "value": "zh-TW"}, {"label": "English", "value": "en-US"}, {"label": "日本語", "value": "ja-JP"}, + {"label": "Español", "value": "es-ES"}, ], onclick=lambda l: set_language(l), ).style("text-align: center") From 67ea7b3ce83f8d2b88d89ba06ae42582cd7957d8 Mon Sep 17 00:00:00 2001 From: LmeSzinc <37934724+LmeSzinc@users.noreply.github.com> Date: Mon, 25 Sep 2023 23:30:16 +0800 Subject: [PATCH 7/8] Fix: [ALAS] Error interception in the main thread --- webapp/packages/main/src/coreService.ts | 4 +++ webapp/packages/main/src/createMainWindow.ts | 4 +-- .../main/src/serviceLogic/createAlas.ts | 32 ++++++++++++------- .../main/src/serviceLogic/createInstaller.ts | 21 +++++++++--- 4 files changed, 42 insertions(+), 19 deletions(-) diff --git a/webapp/packages/main/src/coreService.ts b/webapp/packages/main/src/coreService.ts index 645a7a19a..c9fb70d02 100644 --- a/webapp/packages/main/src/coreService.ts +++ b/webapp/packages/main/src/coreService.ts @@ -65,6 +65,10 @@ export class CoreService { return this.currentService; } + onError(e: Error | any) { + logger.error(`currentServiceIndex:${this.stepIndex}` + (e as unknown as any).toString()); + } + reset() { this.stepIndex = 0; } diff --git a/webapp/packages/main/src/createMainWindow.ts b/webapp/packages/main/src/createMainWindow.ts index b1f65ddce..a438c5643 100644 --- a/webapp/packages/main/src/createMainWindow.ts +++ b/webapp/packages/main/src/createMainWindow.ts @@ -25,7 +25,6 @@ export const createMainWindow = async () => { browserWindow.webContents.on('preload-error', (event, preloadPath, error) => { logger.error('------------preload-error------------'); - logger.error(`event:${JSON.stringify(event)}`); logger.error(`preloadPath:${preloadPath}`); logger.error(`error:${error}`); }); @@ -37,8 +36,7 @@ export const createMainWindow = async () => { } if (level === 3) { logger.info('------------console-message------------'); - logger.error(`event:${JSON.stringify(event)}`); - logger.error(`console-message:${message} line:${line} sourceId:${sourceId}`); + logger.error(`console-message:${message} \n line:${line} \n sourceId:${sourceId}`); return; } }); diff --git a/webapp/packages/main/src/serviceLogic/createAlas.ts b/webapp/packages/main/src/serviceLogic/createAlas.ts index ecaa3f1b3..a864acb6a 100644 --- a/webapp/packages/main/src/serviceLogic/createAlas.ts +++ b/webapp/packages/main/src/serviceLogic/createAlas.ts @@ -4,26 +4,32 @@ import type {CallbackFun} from '/@/coreService'; import logger from '/@/logger'; export const createAlas: CallbackFun = async ctx => { - const alas = new PyShell(webuiPath, webuiArgs); - alas.on('error', function (err: string) { - if(!err) return; + let alas: PyShell | null = null; + try { + alas = new PyShell(webuiPath, webuiArgs); + } catch (e) { + ctx.onError(e); + } + + alas?.on('error', function (err: string) { + if (!err) return; logger.error('alas.error:' + err); ctx.sendLaunchLog(err); }); - alas.end(function (err: string) { - if(!err) return; + alas?.end(function (err: string) { + if (!err) return; logger.info('alas.end:' + err); ctx.sendLaunchLog(err); throw err; }); - alas.on('stdout', function (message) { + alas?.on('stdout', function (message) { ctx.sendLaunchLog(message); }); - alas.on('message', function (message) { + alas?.on('message', function (message) { ctx.sendLaunchLog(message); }); - alas.on('stderr', function (message: string) { + alas?.on('stderr', function (message: string) { ctx.sendLaunchLog(message); /** * Receive logs, judge if Alas is ready @@ -33,10 +39,14 @@ export const createAlas: CallbackFun = async ctx => { * `[Errno 10048] error while attempting to bind on address ('0.0.0.0', 22267): ` */ if (message.includes('Application startup complete') || message.includes('bind on address')) { - alas.removeAllListeners('stderr'); - alas.removeAllListeners('message'); - alas.removeAllListeners('stdout'); + alas?.removeAllListeners('stderr'); + alas?.removeAllListeners('message'); + alas?.removeAllListeners('stdout'); } }); + + alas?.on('pythonError', err => { + ctx.onError('alas pythonError:' + err); + }); return alas; }; diff --git a/webapp/packages/main/src/serviceLogic/createInstaller.ts b/webapp/packages/main/src/serviceLogic/createInstaller.ts index f43913a00..845242a51 100644 --- a/webapp/packages/main/src/serviceLogic/createInstaller.ts +++ b/webapp/packages/main/src/serviceLogic/createInstaller.ts @@ -7,17 +7,23 @@ export const createInstaller: CallbackFun = async (ctx, next) => { if (process.argv.includes(ALAS_RELAUNCH_ARGV)) { return next(); } - const installer = new PyShell(installerPath, installerArgs); - installer.on('error', function (err: string) { - if(!err) return; + let installer: PyShell | null = null; + try { + installer = new PyShell(installerPath, installerArgs); + } catch (err) { + ctx.onError(err); + } + + installer?.on('error', function (err: string) { + if (!err) return; logger.error('installer.error:' + err); ctx.sendLaunchLog(err); }); installer?.end(function (err: string) { - if(!err) return; + if (!err) return; logger.info('installer.end:' + err); ctx.sendLaunchLog(err); - throw err; + // throw err; }); installer?.on('stdout', function (message) { ctx.sendLaunchLog(message); @@ -28,5 +34,10 @@ export const createInstaller: CallbackFun = async (ctx, next) => { installer?.on('stderr', function (message: string) { ctx.sendLaunchLog(message); }); + + installer?.on('pythonError', err => { + ctx.onError('alas pythonError :' + err); + }); + return installer; }; From 166d4217e43a95af0461698a3aa4d82cec0d8ab0 Mon Sep 17 00:00:00 2001 From: LmeSzinc <37934724+LmeSzinc@users.noreply.github.com> Date: Mon, 25 Sep 2023 23:42:24 +0800 Subject: [PATCH 8/8] Add: Spanish on launcher --- webapp/packages/renderer/src/App.vue | 2 ++ webapp/packages/renderer/src/logics/initAppConfigStore.ts | 2 +- webapp/packages/renderer/src/settings/localSetting.ts | 5 +++++ webapp/packages/renderer/types/config.d.ts | 4 ++-- webapp/packages/renderer/vite.config.js | 1 + webapp/types/index.d.ts | 2 +- 6 files changed, 12 insertions(+), 4 deletions(-) diff --git a/webapp/packages/renderer/src/App.vue b/webapp/packages/renderer/src/App.vue index 80b5ffec0..a73696412 100644 --- a/webapp/packages/renderer/src/App.vue +++ b/webapp/packages/renderer/src/App.vue @@ -33,6 +33,7 @@ import zhCN from '@arco-design/web-vue/es/locale/lang/zh-cn'; import enUS from '@arco-design/web-vue/es/locale/lang/en-us'; import jaJP from '@arco-design/web-vue/es/locale/lang/ja-jp'; import zhTW from '@arco-design/web-vue/es/locale/lang/zh-tw'; +import esES from '@arco-design/web-vue/es/locale/lang/es-es'; import type {ArcoLang} from '@arco-design/web-vue/es/locale/interface'; export default defineComponent({ @@ -47,6 +48,7 @@ export default defineComponent({ 'en-US': enUS, 'ja-JP': jaJP, 'zh-TW': zhTW, + 'es-ES': esES, }; const locale = computed(() => { diff --git a/webapp/packages/renderer/src/logics/initAppConfigStore.ts b/webapp/packages/renderer/src/logics/initAppConfigStore.ts index 11b61c617..61e6083fc 100644 --- a/webapp/packages/renderer/src/logics/initAppConfigStore.ts +++ b/webapp/packages/renderer/src/logics/initAppConfigStore.ts @@ -5,7 +5,7 @@ export async function initAppConfigStore() { const appStore = useAppStore(); const config = await window.__electron_preload__getAlasConfig(); appStore.setTheme(config?.theme ?? 'light'); - appStore.setLanguage(config?.language ?? 'zh-TW'); + appStore.setLanguage(config?.language ?? 'zh-CN'); appStore.setRepository( (repositoryValueMap[config?.repository] as 'global' | 'china') ?? 'global', ); diff --git a/webapp/packages/renderer/src/settings/localSetting.ts b/webapp/packages/renderer/src/settings/localSetting.ts index 288b99dfd..f308b5708 100644 --- a/webapp/packages/renderer/src/settings/localSetting.ts +++ b/webapp/packages/renderer/src/settings/localSetting.ts @@ -5,6 +5,7 @@ export const LOCALE: {[key: string]: LocaleType} = { EN_US: 'en-US', JA_JP: 'ja-JP', ZH_TW: 'zh-TW', + ES_ES: 'es-ES', }; // locale list @@ -25,6 +26,10 @@ export const localeList: {label: string; value: keyof typeof LOCALE}[] = [ label: '繁體中文', value: LOCALE.ZH_TW, }, + { + label: 'Español', + value: LOCALE.ES_ES, + }, ]; export const localeSetting: LocaleSetting = { diff --git a/webapp/packages/renderer/types/config.d.ts b/webapp/packages/renderer/types/config.d.ts index 60a45092b..5197f21eb 100644 --- a/webapp/packages/renderer/types/config.d.ts +++ b/webapp/packages/renderer/types/config.d.ts @@ -1,8 +1,8 @@ z; /** - * 'zh-CN' | 'en-US' | 'ja-JP' | 'zh-TW' + * 'zh-CN' | 'en-US' | 'ja-JP' | 'zh-TW' | 'en-ES' */ -export type LocaleType = 'zh-CN' | 'en-US' | 'ja-JP' | 'zh-TW'; +export type LocaleType = 'zh-CN' | 'en-US' | 'ja-JP' | 'zh-TW' | 'es-ES'; export interface LocaleSetting { showPicker: boolean; diff --git a/webapp/packages/renderer/vite.config.js b/webapp/packages/renderer/vite.config.js index e1a3b7f08..d5c4435e8 100644 --- a/webapp/packages/renderer/vite.config.js +++ b/webapp/packages/renderer/vite.config.js @@ -104,6 +104,7 @@ const config = { '@arco-design/web-vue/es/locale/lang/en-us', '@arco-design/web-vue/es/locale/lang/ja-jp', '@arco-design/web-vue/es/locale/lang/zh-tw', + '@arco-design/web-vue/es/locale/lang/es-es', ], }, }; diff --git a/webapp/types/index.d.ts b/webapp/types/index.d.ts index 94074b52d..f4834f827 100644 --- a/webapp/types/index.d.ts +++ b/webapp/types/index.d.ts @@ -58,7 +58,7 @@ declare interface DefAlasConfig { Webui: { WebuiHost: string; WebuiPort: number; - Language: 'zh-CN' | 'en-US' | 'ja-JP' | 'zh-TW'; + Language: 'zh-CN' | 'en-US' | 'ja-JP' | 'zh-TW' | 'es-ES'; Theme: 'default' | 'dark'; DpiScaling: boolean; Password: null | string;