Merge pull request #154 from LmeSzinc/bug_fix

Bug fix
This commit is contained in:
LmeSzinc 2023-10-09 12:42:00 +08:00 committed by GitHub
commit 4cab808f71
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 550 additions and 145 deletions

View File

@ -0,0 +1,67 @@
name: 上报 Bug
description: 使用中文进行 Bug 报告
labels: ['bug / 缺陷']
body:
- type: checkboxes
id: checks
attributes:
label: 在提问之前...
options:
- label: 我已经搜索了现有的 issues
required: true
- label: 我在提问题之前至少花费了 5 分钟来思考和准备
required: true
- label: 我正在使用最新版的 SRC
required: true
- type: textarea
id: describe
attributes:
label: 描述你的问题
description: 简要描述你的问题
validations:
required: true
- type: textarea
id: reproduce
attributes:
label: 如何复现
description: 重现该行为的步骤
value: |
1. 前往 '...'
2. 点击 '....'
3. 滑动到 '....'
4. 出现问题
validations:
required: false
- type: textarea
id: expected
attributes:
label: 预期行为
description: 简要描述你期望发生的事情
validations:
required: false
- type: textarea
id: logs
attributes:
label: 相关 Logs
description: 请复制并粘贴任何相关的日志输出。
render: Text
validations:
required: false
- type: textarea
id: screenshots
attributes:
label: 截图
description: |
如果有,添加屏幕截图以帮助解释你的问题。
提示: 可以通过点击这个区域,然后把文件拖进来添加图片或日志文件。
validations:
required: false
- type: textarea
id: others
attributes:
label: 还有别的吗?
description: |
相关的配置?链接?参考资料?
任何能让我们对你所遇到的问题有更多了解的东西。
validations:
required: false

View File

@ -0,0 +1,67 @@
name: Bug Report
description: Create a report to help us improve
labels: ['bug / 缺陷']
body:
- type: checkboxes
id: checks
attributes:
label: Before you asking
options:
- label: I have searched the existing issues
required: true
- label: I spend at least 5 minutes for thinking and preparing
required: true
- label: I am using the latest version of SRC
required: true
- type: textarea
id: describe
attributes:
label: Describe the bug
description: A clear and concise description of what the bug is.
validations:
required: true
- type: textarea
id: reproduce
attributes:
label: To Reproduce
description: Steps to reproduce the behavior
value: |
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
validations:
required: false
- type: textarea
id: expected
attributes:
label: Expected behavior
description: A clear and concise description of what you expected to happen.
validations:
required: false
- type: textarea
id: logs
attributes:
label: Relevant log output
description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
render: Text
validations:
required: false
- type: textarea
id: screenshots
attributes:
label: Screenshots
description: |
If applicable, add screenshots to help explain your problem.
Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in.
validations:
required: false
- type: textarea
id: others
attributes:
label: Anything else?
description: |
Related configs? Links? References?
Anything that will give us more context about the issue you are encountering!
validations:
required: false

View File

@ -0,0 +1,25 @@
name: 功能请求
description: 使用中文进行功能请求
labels: ['feature request / 功能请求']
body:
- type: textarea
id: describe
attributes:
label: 你的功能请求是否与问题有关?
description: 简要描述相关的问题
validations:
required: false
- type: textarea
id: solution
attributes:
label: 解决方案
description: 描述你想要的解决方案
validations:
required: false
- type: textarea
id: additional
attributes:
label: 其他内容
description: 关于该功能请求的任何其他背景或屏幕截图。
validations:
required: false

View File

@ -0,0 +1,26 @@
name: Feature request
description: Suggest an idea for this project
labels: ['feature request / 功能请求']
body:
- type: textarea
id: describe
attributes:
label: Is your feature request related to a problem?
description: A clear and concise description of what the problem is
placeholder: Ex. I'm always frustrated when ...
validations:
required: false
- type: textarea
id: solution
attributes:
label: Describe the solution you'd like
description: A clear and concise description of what you want to happen
validations:
required: false
- type: textarea
id: additional
attributes:
label: Additional context
description: Add any other context or screenshots about the feature request here.
validations:
required: false

View File

@ -1,6 +1,7 @@
import os import os
import re import re
import typing as t import typing as t
from collections import defaultdict
from functools import cached_property from functools import cached_property
from module.base.code_generator import CodeGenerator from module.base.code_generator import CodeGenerator
@ -232,6 +233,80 @@ class KeywordExtract:
) )
self.load_keywords(keywords_id, lang) self.load_keywords(keywords_id, lang)
def generate_shadow_with_characters(self):
# Damage type -> damage hash
damage_info = dict()
for type_name, data in read_file(os.path.join(
TextMap.DATA_FOLDER, 'ExcelOutput',
'DamageType.json'
)).items():
damage_info[type_name] = deep_get(data, 'DamageTypeName.Hash')
# Character id -> character hash & damage type
character_info = dict()
for data in read_file(os.path.join(
TextMap.DATA_FOLDER, 'ExcelOutput',
'AvatarConfig.json'
)).values():
name_hash = deep_get(data, 'AvatarName.Hash')
damage_type = deep_get(data, 'DamageType')
character_info[data['AvatarID']] = (
name_hash, damage_info[damage_type])
# Item id -> character id
promotion_info = defaultdict(list)
for data in read_file(os.path.join(
TextMap.DATA_FOLDER, 'ExcelOutput',
'AvatarPromotionConfig.json'
)).values():
character_id = deep_get(data, '0.AvatarID')
item_id = deep_get(data, '2.PromotionCostList')[-1]['ItemID']
promotion_info[item_id].append(character_info[character_id])
# Shadow hash -> item id
shadow_info = dict()
for data in read_file(os.path.join(
TextMap.DATA_FOLDER, 'ExcelOutput',
'MappingInfo.json'
)).values():
farm_type = deep_get(data, '0.FarmType')
if farm_type != 'ELEMENT':
continue
shadow_hash = deep_get(data, '0.Name.Hash')
item_id = deep_get(data, '5.DisplayItemList')[-1]['ItemID']
shadow_info[shadow_hash] = promotion_info[item_id]
prefix_dict = {
'cn': '角色晋阶材料:',
'cht': '角色晉階材料:',
'jp': 'キャラクター昇格素材:',
'en': 'Ascension: ',
'es': 'Ascension: '
}
keyword_class = 'DungeonDetailed'
output_file = './tasks/dungeon/keywords/dungeon_detailed.py'
gen = CodeGenerator()
gen.Import(f"""
from .classes import {keyword_class}
""")
gen.CommentAutoGenerage('dev_tools.keyword_extract')
for index, (keyword, characters) in enumerate(shadow_info.items()):
_, name = self.find_keyword(keyword, lang='en')
name = text_to_variable(name).replace('Shape_of_', '')
with gen.Object(key=name, object_class=keyword_class):
gen.ObjectAttr(key='id', value=index + 1)
gen.ObjectAttr(key='name', value=name)
for lang in UI_LANGUAGES:
character_names = ' / '.join([
self.find_keyword(c[0], lang)[1]
for c in characters
])
damage_type = self.find_keyword(characters[0][1], lang)[1]
if lang in {'en', 'es'}:
value = f'{prefix_dict[lang]}{damage_type} ({character_names})'
else:
value = f'{prefix_dict[lang]}{damage_type}{character_names}'
gen.ObjectAttr(key=lang, value=value)
print(f'Write {output_file}')
gen.write(output_file)
self.clear_keywords()
def generate_forgotten_hall_stages(self): def generate_forgotten_hall_stages(self):
keyword_class = "ForgottenHallStage" keyword_class = "ForgottenHallStage"
output_file = './tasks/forgotten_hall/keywords/stage.py' output_file = './tasks/forgotten_hall/keywords/stage.py'
@ -372,6 +447,7 @@ class KeywordExtract:
text_convert=dungeon_name) text_convert=dungeon_name)
self.load_keywords(['传送', '追踪']) self.load_keywords(['传送', '追踪'])
self.write_keywords(keyword_class='DungeonEntrance', output_file='./tasks/dungeon/keywords/dungeon_entrance.py') self.write_keywords(keyword_class='DungeonEntrance', output_file='./tasks/dungeon/keywords/dungeon_entrance.py')
self.generate_shadow_with_characters()
self.load_keywords(['奖励', '任务', ]) self.load_keywords(['奖励', '任务', ])
self.write_keywords(keyword_class='BattlePassTab', output_file='./tasks/battle_pass/keywords/tab.py') self.write_keywords(keyword_class='BattlePassTab', output_file='./tasks/battle_pass/keywords/tab.py')
self.load_keywords(['本日任务', '本周任务', '本期任务']) self.load_keywords(['本日任务', '本周任务', '本期任务'])

View File

@ -354,16 +354,20 @@ class ConfigGenerator:
# prefix = '国服' if prefix == 'CN' else prefix # prefix = '国服' if prefix == 'CN' else prefix
# deep_set(new, keys=path, value=f'[{prefix}] {_list[index]}') # deep_set(new, keys=path, value=f'[{prefix}] {_list[index]}')
# Dungeon names
from tasks.dungeon.keywords import DungeonList
if lang not in ['zh-CN', 'zh-TW', 'en-US', 'es-ES']:
ingame_lang = gui_lang_to_ingame_lang(lang) ingame_lang = gui_lang_to_ingame_lang(lang)
dailies = deep_get(self.argument, keys='Dungeon.Name.option') dailies = deep_get(self.argument, keys='Dungeon.Name.option')
# Dungeon names
from tasks.dungeon.keywords import DungeonList, DungeonDetailed
if lang not in ['zh-CN', 'zh-TW', 'en-US', 'es-ES']:
for dungeon in DungeonList.instances.values(): for dungeon in DungeonList.instances.values():
if dungeon.name in dailies: if dungeon.name in dailies:
value = dungeon.__getattribute__(ingame_lang) value = dungeon.__getattribute__(ingame_lang)
deep_set(new, keys=['Dungeon', 'Name', dungeon.name], value=value) deep_set(new, keys=['Dungeon', 'Name', dungeon.name], value=value)
# Stagnant shadows with character names
for dungeon in DungeonDetailed.instances.values():
if dungeon.name in dailies:
value = dungeon.__getattribute__(ingame_lang)
deep_set(new, keys=['Dungeon', 'Name', dungeon.name], value=value)
# Copy dungeon i18n to double events # Copy dungeon i18n to double events
def update_dungeon_names(keys): def update_dungeon_names(keys):
for dungeon in deep_get(self.argument, keys=f'{keys}.option', default=[]): for dungeon in deep_get(self.argument, keys=f'{keys}.option', default=[]):
@ -380,7 +384,6 @@ class ConfigGenerator:
# Character names # Character names
from tasks.character.keywords import CharacterList from tasks.character.keywords import CharacterList
ingame_lang = gui_lang_to_ingame_lang(lang)
characters = deep_get(self.argument, keys='DungeonSupport.Character.option') characters = deep_get(self.argument, keys='DungeonSupport.Character.option')
for character in CharacterList.instances.values(): for character in CharacterList.instances.values():
if character.name in characters: if character.name in characters:

View File

@ -221,18 +221,18 @@
"Calyx_Crimson_Erudition": "Trace: Erudition (Bud of Erudition)", "Calyx_Crimson_Erudition": "Trace: Erudition (Bud of Erudition)",
"Calyx_Crimson_Harmony": "Trace: Harmony (Bud of Harmony)", "Calyx_Crimson_Harmony": "Trace: Harmony (Bud of Harmony)",
"Calyx_Crimson_Nihility": "Trace: Nihility (Bud of Nihility)", "Calyx_Crimson_Nihility": "Trace: Nihility (Bud of Nihility)",
"Stagnant_Shadow_Quanta": "Ascension: Quantum (Shape of Quanta)", "Stagnant_Shadow_Quanta": "Ascension: Quantum (Silver Wolf / Seele / Qingque)",
"Stagnant_Shadow_Gust": "Ascension: Wind (Shape of Gust)", "Stagnant_Shadow_Gust": "Ascension: Wind (Dan Heng / Bronya / Sampo)",
"Stagnant_Shadow_Fulmination": "Ascension: Lighting (Shape of Fulmination)", "Stagnant_Shadow_Fulmination": "Ascension: Lightning (Arlan / Serval / Tingyun / Bailu)",
"Stagnant_Shadow_Blaze": "Ascension: Fire (Shape of Blaze)", "Stagnant_Shadow_Blaze": "Ascension: Fire (Himeko / Asta / Hook)",
"Stagnant_Shadow_Spike": "Ascension: Physical (Shape of Spike)", "Stagnant_Shadow_Spike": "Ascension: Physical (Natasha / Clara / Luka / Sushang)",
"Stagnant_Shadow_Rime": "Ascension: Ice (Shape of Rime)", "Stagnant_Shadow_Rime": "Ascension: Ice (March 7th / Herta / Gepard / Pela)",
"Stagnant_Shadow_Mirage": "Ascension: Imaginary (Shape of Mirage)", "Stagnant_Shadow_Mirage": "Ascension: Imaginary (Welt / Luocha / Yukong)",
"Stagnant_Shadow_Icicle": "Ascension: Ice (Shape of Icicle)", "Stagnant_Shadow_Icicle": "Ascension: Ice (Yanqing)",
"Stagnant_Shadow_Doom": "Ascension: Lighting (Shape of Doom)", "Stagnant_Shadow_Doom": "Ascension: Lightning (Kafka / Jing Yuan)",
"Stagnant_Shadow_Puppetry": "Ascension: Imaginary (Shape of Puppetry)", "Stagnant_Shadow_Puppetry": "Ascension: Imaginary (Dan Heng • Imbibitor Lunae)",
"Stagnant_Shadow_Abomination": "Ascension: Quantum (Shape of Abomination)", "Stagnant_Shadow_Abomination": "Ascension: Quantum (Lynx / Fu Xuan)",
"Stagnant_Shadow_Celestial": "Ascension: Wind (Shape of Celestial)", "Stagnant_Shadow_Celestial": "Ascension: Wind (Blade)",
"Cavern_of_Corrosion_Path_of_Gelid_Wind": "Relics: Ice Set & Wind Set (Path of Gelid Wind)", "Cavern_of_Corrosion_Path_of_Gelid_Wind": "Relics: Ice Set & Wind Set (Path of Gelid Wind)",
"Cavern_of_Corrosion_Path_of_Jabbing_Punch": "Relics: Physical Set & Break Effect Set (Path of Jabbing Punch)", "Cavern_of_Corrosion_Path_of_Jabbing_Punch": "Relics: Physical Set & Break Effect Set (Path of Jabbing Punch)",
"Cavern_of_Corrosion_Path_of_Drifting": "Relics: Healing Set & Musketeer Set (Path of Drifting)", "Cavern_of_Corrosion_Path_of_Drifting": "Relics: Healing Set & Musketeer Set (Path of Drifting)",
@ -308,18 +308,18 @@
"name": "Clear Stagnant Shadow 1 times", "name": "Clear Stagnant Shadow 1 times",
"help": "", "help": "",
"do_not_achieve": "Don't Do This Quest", "do_not_achieve": "Don't Do This Quest",
"Stagnant_Shadow_Quanta": "Ascension: Quantum (Shape of Quanta)", "Stagnant_Shadow_Quanta": "Ascension: Quantum (Silver Wolf / Seele / Qingque)",
"Stagnant_Shadow_Gust": "Ascension: Wind (Shape of Gust)", "Stagnant_Shadow_Gust": "Ascension: Wind (Dan Heng / Bronya / Sampo)",
"Stagnant_Shadow_Fulmination": "Ascension: Lighting (Shape of Fulmination)", "Stagnant_Shadow_Fulmination": "Ascension: Lightning (Arlan / Serval / Tingyun / Bailu)",
"Stagnant_Shadow_Blaze": "Ascension: Fire (Shape of Blaze)", "Stagnant_Shadow_Blaze": "Ascension: Fire (Himeko / Asta / Hook)",
"Stagnant_Shadow_Spike": "Ascension: Physical (Shape of Spike)", "Stagnant_Shadow_Spike": "Ascension: Physical (Natasha / Clara / Luka / Sushang)",
"Stagnant_Shadow_Rime": "Ascension: Ice (Shape of Rime)", "Stagnant_Shadow_Rime": "Ascension: Ice (March 7th / Herta / Gepard / Pela)",
"Stagnant_Shadow_Mirage": "Ascension: Imaginary (Shape of Mirage)", "Stagnant_Shadow_Mirage": "Ascension: Imaginary (Welt / Luocha / Yukong)",
"Stagnant_Shadow_Icicle": "Ascension: Ice (Shape of Icicle)", "Stagnant_Shadow_Icicle": "Ascension: Ice (Yanqing)",
"Stagnant_Shadow_Doom": "Ascension: Lighting (Shape of Doom)", "Stagnant_Shadow_Doom": "Ascension: Lightning (Kafka / Jing Yuan)",
"Stagnant_Shadow_Puppetry": "Ascension: Imaginary (Shape of Puppetry)", "Stagnant_Shadow_Puppetry": "Ascension: Imaginary (Dan Heng • Imbibitor Lunae)",
"Stagnant_Shadow_Abomination": "Ascension: Quantum (Shape of Abomination)", "Stagnant_Shadow_Abomination": "Ascension: Quantum (Lynx / Fu Xuan)",
"Stagnant_Shadow_Celestial": "Ascension: Wind (Shape of Celestial)" "Stagnant_Shadow_Celestial": "Ascension: Wind (Blade)"
}, },
"CavernOfCorrosion": { "CavernOfCorrosion": {
"name": "Clear Cavern of Corrosion 1 times", "name": "Clear Cavern of Corrosion 1 times",

View File

@ -221,18 +221,18 @@
"Calyx_Crimson_Erudition": "Rastros: Erudición (Flor de la Erudición)", "Calyx_Crimson_Erudition": "Rastros: Erudición (Flor de la Erudición)",
"Calyx_Crimson_Harmony": "Rastros: Armonía (Flor de la Armonía)", "Calyx_Crimson_Harmony": "Rastros: Armonía (Flor de la Armonía)",
"Calyx_Crimson_Nihility": "Rastros: Nihilidad (Flor de la Nihilidad)", "Calyx_Crimson_Nihility": "Rastros: Nihilidad (Flor de la Nihilidad)",
"Stagnant_Shadow_Quanta": "Ascension: Cuántico (Forma del cuanto)", "Stagnant_Shadow_Quanta": "Ascension: Cuántico (Silver Wolf / Seele / Qingque)",
"Stagnant_Shadow_Gust": "Ascension: Viento (Forma del aire)", "Stagnant_Shadow_Gust": "Ascension: Viento (Dan Heng / Bronya / Sampo)",
"Stagnant_Shadow_Fulmination": "Ascension: Trueno (Forma del trueno)", "Stagnant_Shadow_Fulmination": "Ascension: Rayo (Arlan / Serval / Tingyun / Bailu)",
"Stagnant_Shadow_Blaze": "Ascension: Fuego (Forma de las llamas)", "Stagnant_Shadow_Blaze": "Ascension: Fuego (Himeko / Asta / Hook)",
"Stagnant_Shadow_Spike": "Ascension: Físico (Forma afilada)", "Stagnant_Shadow_Spike": "Ascension: Físico (Natasha / Clara / Luka / Sushang)",
"Stagnant_Shadow_Rime": "Ascension: Hielo (Forma de la escarcha)", "Stagnant_Shadow_Rime": "Ascension: Hielo (Siete de Marzo / Herta / Gepard / Pela)",
"Stagnant_Shadow_Mirage": "Ascension: Imaginario (Forma del espejismo)", "Stagnant_Shadow_Mirage": "Ascension: Imaginario (Welt / Luocha / Yukong)",
"Stagnant_Shadow_Icicle": "Ascension: Hielo (Forma del témpano)", "Stagnant_Shadow_Icicle": "Ascension: Hielo (Yanqing)",
"Stagnant_Shadow_Doom": "Ascension: Trueno (Forma de la perdición)", "Stagnant_Shadow_Doom": "Ascension: Rayo (Kafka / Jing Yuan)",
"Stagnant_Shadow_Puppetry": "Ascension: Imaginario (Forma de las marionetas)", "Stagnant_Shadow_Puppetry": "Ascension: Imaginario (Dan Heng - Imbibitor Lunae)",
"Stagnant_Shadow_Abomination": "Ascension: Cuántico (Forma de la abominación)", "Stagnant_Shadow_Abomination": "Ascension: Cuántico (Lynx / Fu Xuan)",
"Stagnant_Shadow_Celestial": "Ascension: Viento (Forma de lo celestial)", "Stagnant_Shadow_Celestial": "Ascension: Viento (Blade)",
"Cavern_of_Corrosion_Path_of_Gelid_Wind": "Artefactos: Hielo y Viento (Senda del viento gélido)", "Cavern_of_Corrosion_Path_of_Gelid_Wind": "Artefactos: Hielo y Viento (Senda del viento gélido)",
"Cavern_of_Corrosion_Path_of_Jabbing_Punch": "Artefactos: Físico y Efecto de Ruptura (Senda de los puños rápidos)", "Cavern_of_Corrosion_Path_of_Jabbing_Punch": "Artefactos: Físico y Efecto de Ruptura (Senda de los puños rápidos)",
"Cavern_of_Corrosion_Path_of_Drifting": "Artefactos: Curación y Pistolera de la espiga silvestre (Senda de la deriva)", "Cavern_of_Corrosion_Path_of_Drifting": "Artefactos: Curación y Pistolera de la espiga silvestre (Senda de la deriva)",
@ -308,18 +308,18 @@
"name": "Completar Sombra paralizada 1 vez", "name": "Completar Sombra paralizada 1 vez",
"help": "", "help": "",
"do_not_achieve": "No hacer esta misión", "do_not_achieve": "No hacer esta misión",
"Stagnant_Shadow_Quanta": "Ascension: Cuántico (Forma del cuanto)", "Stagnant_Shadow_Quanta": "Ascension: Cuántico (Silver Wolf / Seele / Qingque)",
"Stagnant_Shadow_Gust": "Ascension: Viento (Forma del aire)", "Stagnant_Shadow_Gust": "Ascension: Viento (Dan Heng / Bronya / Sampo)",
"Stagnant_Shadow_Fulmination": "Ascension: Trueno (Forma del trueno)", "Stagnant_Shadow_Fulmination": "Ascension: Rayo (Arlan / Serval / Tingyun / Bailu)",
"Stagnant_Shadow_Blaze": "Ascension: Fuego (Forma de las llamas)", "Stagnant_Shadow_Blaze": "Ascension: Fuego (Himeko / Asta / Hook)",
"Stagnant_Shadow_Spike": "Ascension: Físico (Forma afilada)", "Stagnant_Shadow_Spike": "Ascension: Físico (Natasha / Clara / Luka / Sushang)",
"Stagnant_Shadow_Rime": "Ascension: Hielo (Forma de la escarcha)", "Stagnant_Shadow_Rime": "Ascension: Hielo (Siete de Marzo / Herta / Gepard / Pela)",
"Stagnant_Shadow_Mirage": "Ascension: Imaginario (Forma del espejismo)", "Stagnant_Shadow_Mirage": "Ascension: Imaginario (Welt / Luocha / Yukong)",
"Stagnant_Shadow_Icicle": "Ascension: Hielo (Forma del témpano)", "Stagnant_Shadow_Icicle": "Ascension: Hielo (Yanqing)",
"Stagnant_Shadow_Doom": "Ascension: Trueno (Forma de la perdición)", "Stagnant_Shadow_Doom": "Ascension: Rayo (Kafka / Jing Yuan)",
"Stagnant_Shadow_Puppetry": "Ascension: Imaginario (Forma de las marionetas)", "Stagnant_Shadow_Puppetry": "Ascension: Imaginario (Dan Heng - Imbibitor Lunae)",
"Stagnant_Shadow_Abomination": "Ascension: Cuántico (Forma de la abominación)", "Stagnant_Shadow_Abomination": "Ascension: Cuántico (Lynx / Fu Xuan)",
"Stagnant_Shadow_Celestial": "Ascension: Viento (Forma de lo celestial)" "Stagnant_Shadow_Celestial": "Ascension: Viento (Blade)"
}, },
"CavernOfCorrosion": { "CavernOfCorrosion": {
"name": "Completar Caverna de la corrosión 1 vez", "name": "Completar Caverna de la corrosión 1 vez",

View File

@ -221,18 +221,18 @@
"Calyx_Crimson_Erudition": "疑似花萼(赤)・知恵の蕾", "Calyx_Crimson_Erudition": "疑似花萼(赤)・知恵の蕾",
"Calyx_Crimson_Harmony": "疑似花萼(赤)・調和の蕾", "Calyx_Crimson_Harmony": "疑似花萼(赤)・調和の蕾",
"Calyx_Crimson_Nihility": "疑似花萼(赤)・虚無の蕾", "Calyx_Crimson_Nihility": "疑似花萼(赤)・虚無の蕾",
"Stagnant_Shadow_Quanta": "凝結虚影・虚海の形", "Stagnant_Shadow_Quanta": "キャラクター昇格素材:量子(銀狼 / ゼーレ / 青雀)",
"Stagnant_Shadow_Gust": "凝結虚影・薫風の形", "Stagnant_Shadow_Gust": "キャラクター昇格素材:風(丹恒 / ブローニャ / サンポ)",
"Stagnant_Shadow_Fulmination": "凝結虚影・鳴雷の形", "Stagnant_Shadow_Fulmination": "キャラクター昇格素材:雷(アーラン / セーバル / 停雲 / 白露)",
"Stagnant_Shadow_Blaze": "凝結虚影・炎華の形", "Stagnant_Shadow_Blaze": "キャラクター昇格素材:炎(姫子 / アスター / フック)",
"Stagnant_Shadow_Spike": "凝結虚影・切先の形", "Stagnant_Shadow_Spike": "キャラクター昇格素材:物理(ナターシャ / クラーラ / ルカ / 素裳)",
"Stagnant_Shadow_Rime": "凝結虚影・霜晶の形", "Stagnant_Shadow_Rime": "キャラクター昇格素材:氷(三月なのか / ヘルタ / ジェパード / ペラ)",
"Stagnant_Shadow_Mirage": "凝結虚影・幻光の形", "Stagnant_Shadow_Mirage": "キャラクター昇格素材:虚数(ヴェルト / 羅刹 / 御空)",
"Stagnant_Shadow_Icicle": "凝結虚影・氷柱の形", "Stagnant_Shadow_Icicle": "キャラクター昇格素材:氷(彦卿)",
"Stagnant_Shadow_Doom": "凝結虚影・震厄の形", "Stagnant_Shadow_Doom": "キャラクター昇格素材:雷(カフカ / 景元)",
"Stagnant_Shadow_Puppetry": "凝結虚影・傀儡の形", "Stagnant_Shadow_Puppetry": "キャラクター昇格素材:虚数(丹恒・飲月)",
"Stagnant_Shadow_Abomination": "凝結虚影・厄獣の形", "Stagnant_Shadow_Abomination": "キャラクター昇格素材:量子(リンクス / 符玄)",
"Stagnant_Shadow_Celestial": "凝結虚影・天人の形", "Stagnant_Shadow_Celestial": "キャラクター昇格素材:風(刃)",
"Cavern_of_Corrosion_Path_of_Gelid_Wind": "侵蝕トンネル・霜風の路", "Cavern_of_Corrosion_Path_of_Gelid_Wind": "侵蝕トンネル・霜風の路",
"Cavern_of_Corrosion_Path_of_Jabbing_Punch": "侵蝕トンネル・迅拳の路", "Cavern_of_Corrosion_Path_of_Jabbing_Punch": "侵蝕トンネル・迅拳の路",
"Cavern_of_Corrosion_Path_of_Drifting": "侵蝕トンネル・漂泊の路", "Cavern_of_Corrosion_Path_of_Drifting": "侵蝕トンネル・漂泊の路",
@ -308,18 +308,18 @@
"name": "DungeonDaily.StagnantShadow.name", "name": "DungeonDaily.StagnantShadow.name",
"help": "DungeonDaily.StagnantShadow.help", "help": "DungeonDaily.StagnantShadow.help",
"do_not_achieve": "do_not_achieve", "do_not_achieve": "do_not_achieve",
"Stagnant_Shadow_Quanta": "凝結虚影・虚海の形", "Stagnant_Shadow_Quanta": "キャラクター昇格素材:量子(銀狼 / ゼーレ / 青雀)",
"Stagnant_Shadow_Gust": "凝結虚影・薫風の形", "Stagnant_Shadow_Gust": "キャラクター昇格素材:風(丹恒 / ブローニャ / サンポ)",
"Stagnant_Shadow_Fulmination": "凝結虚影・鳴雷の形", "Stagnant_Shadow_Fulmination": "キャラクター昇格素材:雷(アーラン / セーバル / 停雲 / 白露)",
"Stagnant_Shadow_Blaze": "凝結虚影・炎華の形", "Stagnant_Shadow_Blaze": "キャラクター昇格素材:炎(姫子 / アスター / フック)",
"Stagnant_Shadow_Spike": "凝結虚影・切先の形", "Stagnant_Shadow_Spike": "キャラクター昇格素材:物理(ナターシャ / クラーラ / ルカ / 素裳)",
"Stagnant_Shadow_Rime": "凝結虚影・霜晶の形", "Stagnant_Shadow_Rime": "キャラクター昇格素材:氷(三月なのか / ヘルタ / ジェパード / ペラ)",
"Stagnant_Shadow_Mirage": "凝結虚影・幻光の形", "Stagnant_Shadow_Mirage": "キャラクター昇格素材:虚数(ヴェルト / 羅刹 / 御空)",
"Stagnant_Shadow_Icicle": "凝結虚影・氷柱の形", "Stagnant_Shadow_Icicle": "キャラクター昇格素材:氷(彦卿)",
"Stagnant_Shadow_Doom": "凝結虚影・震厄の形", "Stagnant_Shadow_Doom": "キャラクター昇格素材:雷(カフカ / 景元)",
"Stagnant_Shadow_Puppetry": "凝結虚影・傀儡の形", "Stagnant_Shadow_Puppetry": "キャラクター昇格素材:虚数(丹恒・飲月)",
"Stagnant_Shadow_Abomination": "凝結虚影・厄獣の形", "Stagnant_Shadow_Abomination": "キャラクター昇格素材:量子(リンクス / 符玄)",
"Stagnant_Shadow_Celestial": "凝結虚影・天人の形" "Stagnant_Shadow_Celestial": "キャラクター昇格素材:風(刃)"
}, },
"CavernOfCorrosion": { "CavernOfCorrosion": {
"name": "DungeonDaily.CavernOfCorrosion.name", "name": "DungeonDaily.CavernOfCorrosion.name",

View File

@ -221,18 +221,18 @@
"Calyx_Crimson_Erudition": "行迹材料:智识(智识之蕾•拟造花萼赤)", "Calyx_Crimson_Erudition": "行迹材料:智识(智识之蕾•拟造花萼赤)",
"Calyx_Crimson_Harmony": "行迹材料:同谐(同谐之蕾•拟造花萼赤)", "Calyx_Crimson_Harmony": "行迹材料:同谐(同谐之蕾•拟造花萼赤)",
"Calyx_Crimson_Nihility": "行迹材料:虚无(虚无之蕾•拟造花萼赤)", "Calyx_Crimson_Nihility": "行迹材料:虚无(虚无之蕾•拟造花萼赤)",
"Stagnant_Shadow_Quanta": "角色晋阶材料:量子(空海之形•凝滞虚影", "Stagnant_Shadow_Quanta": "角色晋阶材料:量子(银狼 / 希儿 / 青雀",
"Stagnant_Shadow_Gust": "角色晋阶材料:风(巽风之形•凝滞虚影", "Stagnant_Shadow_Gust": "角色晋阶材料:风(丹恒 / 布洛妮娅 / 桑博",
"Stagnant_Shadow_Fulmination": "角色晋阶材料:雷(鸣雷之形•凝滞虚影", "Stagnant_Shadow_Fulmination": "角色晋阶材料:雷(阿兰 / 希露瓦 / 停云 / 白露",
"Stagnant_Shadow_Blaze": "角色晋阶材料:火(炎华之形•凝滞虚影", "Stagnant_Shadow_Blaze": "角色晋阶材料:火(姬子 / 艾丝妲 / 虎克",
"Stagnant_Shadow_Spike": "角色晋阶材料:物理(锋芒之形•凝滞虚影", "Stagnant_Shadow_Spike": "角色晋阶材料:物理(娜塔莎 / 克拉拉 / 卢卡 / 素裳",
"Stagnant_Shadow_Rime": "角色晋阶材料:冰(霜晶之形•凝滞虚影", "Stagnant_Shadow_Rime": "角色晋阶材料:冰(三月七 / 黑塔 / 杰帕德 / 佩拉",
"Stagnant_Shadow_Mirage": "角色晋阶材料:虚数(幻光之形•凝滞虚影", "Stagnant_Shadow_Mirage": "角色晋阶材料:虚数(瓦尔特 / 罗刹 / 驭空",
"Stagnant_Shadow_Icicle": "角色晋阶材料:冰(冰棱之形•凝滞虚影", "Stagnant_Shadow_Icicle": "角色晋阶材料:冰(彦卿",
"Stagnant_Shadow_Doom": "角色晋阶材料:雷(震厄之形•凝滞虚影", "Stagnant_Shadow_Doom": "角色晋阶材料:雷(卡芙卡 / 景元",
"Stagnant_Shadow_Puppetry": "角色晋阶材料:虚数(偃偶之形•凝滞虚影", "Stagnant_Shadow_Puppetry": "角色晋阶材料:虚数(丹恒•饮月",
"Stagnant_Shadow_Abomination": "角色晋阶材料:量子(孽兽之形•凝滞虚影", "Stagnant_Shadow_Abomination": "角色晋阶材料:量子(玲可 / 符玄",
"Stagnant_Shadow_Celestial": "角色晋阶材料:风(天人之形•凝滞虚影", "Stagnant_Shadow_Celestial": "角色晋阶材料:风(",
"Cavern_of_Corrosion_Path_of_Gelid_Wind": "遗器:冰套+风套(霜风之径•侵蚀隧洞)", "Cavern_of_Corrosion_Path_of_Gelid_Wind": "遗器:冰套+风套(霜风之径•侵蚀隧洞)",
"Cavern_of_Corrosion_Path_of_Jabbing_Punch": "遗器:物理套+击破套(迅拳之径•侵蚀隧洞)", "Cavern_of_Corrosion_Path_of_Jabbing_Punch": "遗器:物理套+击破套(迅拳之径•侵蚀隧洞)",
"Cavern_of_Corrosion_Path_of_Drifting": "遗器:治疗套+快枪手(漂泊之径•侵蚀隧洞)", "Cavern_of_Corrosion_Path_of_Drifting": "遗器:治疗套+快枪手(漂泊之径•侵蚀隧洞)",
@ -308,18 +308,18 @@
"name": "完成1次凝滞虚影", "name": "完成1次凝滞虚影",
"help": "", "help": "",
"do_not_achieve": "不完成这个任务", "do_not_achieve": "不完成这个任务",
"Stagnant_Shadow_Quanta": "角色晋阶材料:量子(空海之形•凝滞虚影", "Stagnant_Shadow_Quanta": "角色晋阶材料:量子(银狼 / 希儿 / 青雀",
"Stagnant_Shadow_Gust": "角色晋阶材料:风(巽风之形•凝滞虚影", "Stagnant_Shadow_Gust": "角色晋阶材料:风(丹恒 / 布洛妮娅 / 桑博",
"Stagnant_Shadow_Fulmination": "角色晋阶材料:雷(鸣雷之形•凝滞虚影", "Stagnant_Shadow_Fulmination": "角色晋阶材料:雷(阿兰 / 希露瓦 / 停云 / 白露",
"Stagnant_Shadow_Blaze": "角色晋阶材料:火(炎华之形•凝滞虚影", "Stagnant_Shadow_Blaze": "角色晋阶材料:火(姬子 / 艾丝妲 / 虎克",
"Stagnant_Shadow_Spike": "角色晋阶材料:物理(锋芒之形•凝滞虚影", "Stagnant_Shadow_Spike": "角色晋阶材料:物理(娜塔莎 / 克拉拉 / 卢卡 / 素裳",
"Stagnant_Shadow_Rime": "角色晋阶材料:冰(霜晶之形•凝滞虚影", "Stagnant_Shadow_Rime": "角色晋阶材料:冰(三月七 / 黑塔 / 杰帕德 / 佩拉",
"Stagnant_Shadow_Mirage": "角色晋阶材料:虚数(幻光之形•凝滞虚影", "Stagnant_Shadow_Mirage": "角色晋阶材料:虚数(瓦尔特 / 罗刹 / 驭空",
"Stagnant_Shadow_Icicle": "角色晋阶材料:冰(冰棱之形•凝滞虚影", "Stagnant_Shadow_Icicle": "角色晋阶材料:冰(彦卿",
"Stagnant_Shadow_Doom": "角色晋阶材料:雷(震厄之形•凝滞虚影", "Stagnant_Shadow_Doom": "角色晋阶材料:雷(卡芙卡 / 景元",
"Stagnant_Shadow_Puppetry": "角色晋阶材料:虚数(偃偶之形•凝滞虚影", "Stagnant_Shadow_Puppetry": "角色晋阶材料:虚数(丹恒•饮月",
"Stagnant_Shadow_Abomination": "角色晋阶材料:量子(孽兽之形•凝滞虚影", "Stagnant_Shadow_Abomination": "角色晋阶材料:量子(玲可 / 符玄",
"Stagnant_Shadow_Celestial": "角色晋阶材料:风(天人之形•凝滞虚影" "Stagnant_Shadow_Celestial": "角色晋阶材料:风("
}, },
"CavernOfCorrosion": { "CavernOfCorrosion": {
"name": "完成1次侵蚀隧洞", "name": "完成1次侵蚀隧洞",

View File

@ -221,18 +221,18 @@
"Calyx_Crimson_Erudition": "行跡材料:智識(智識之蕾•擬造花萼赤)", "Calyx_Crimson_Erudition": "行跡材料:智識(智識之蕾•擬造花萼赤)",
"Calyx_Crimson_Harmony": "行跡材料:同諧(同諧之蕾•擬造花萼赤)", "Calyx_Crimson_Harmony": "行跡材料:同諧(同諧之蕾•擬造花萼赤)",
"Calyx_Crimson_Nihility": "行跡材料:虛無(虛無之蕾•擬造花萼赤)", "Calyx_Crimson_Nihility": "行跡材料:虛無(虛無之蕾•擬造花萼赤)",
"Stagnant_Shadow_Quanta": "角色晉階材料:量子(空海之形•凝滯虛影", "Stagnant_Shadow_Quanta": "角色晉階材料:量子(銀狼 / 希兒 / 青雀",
"Stagnant_Shadow_Gust": "角色晉階材料:風(巽風之形•凝滯虛影", "Stagnant_Shadow_Gust": "角色晉階材料:風(丹恆 / 布洛妮婭 / 桑博",
"Stagnant_Shadow_Fulmination": "角色晉階材料:雷(鳴雷之形•凝滯虛影", "Stagnant_Shadow_Fulmination": "角色晉階材料:雷(阿蘭 / 希露瓦 / 停雲 / 白露",
"Stagnant_Shadow_Blaze": "角色晉階材料:火(炎華之形•凝滯虛影", "Stagnant_Shadow_Blaze": "角色晉階材料:火(姬子 / 艾絲妲 / 虎克",
"Stagnant_Shadow_Spike": "角色晉階材料:物理(鋒芒之形•凝滯虛影", "Stagnant_Shadow_Spike": "角色晉階材料:物理(娜塔莎 / 克拉拉 / 盧卡 / 素裳",
"Stagnant_Shadow_Rime": "角色晉階材料:冰(霜晶之形•凝滯虛影", "Stagnant_Shadow_Rime": "角色晉階材料:冰(三月七 / 黑塔 / 傑帕德 / 佩拉",
"Stagnant_Shadow_Mirage": "角色晉階材料:虛數(幻光之形•凝滯虛影", "Stagnant_Shadow_Mirage": "角色晉階材料:虛數(瓦爾特 / 羅剎 / 馭空",
"Stagnant_Shadow_Icicle": "角色晉階材料:冰(冰稜之形•凝滯虛影", "Stagnant_Shadow_Icicle": "角色晉階材料:冰(彥卿",
"Stagnant_Shadow_Doom": "角色晉階材料:雷(震厄之形•凝滯虛影", "Stagnant_Shadow_Doom": "角色晉階材料:雷(卡芙卡 / 景元",
"Stagnant_Shadow_Puppetry": "角色晉階材料:虛數(偃偶之形•凝滯虛影", "Stagnant_Shadow_Puppetry": "角色晉階材料:虛數(丹恆•飲月",
"Stagnant_Shadow_Abomination": "角色晉階材料:量子(孽獸之形•凝滯虛影", "Stagnant_Shadow_Abomination": "角色晉階材料:量子(玲可 / 符玄",
"Stagnant_Shadow_Celestial": "角色晉階材料:風(天人之形•凝滯虛影", "Stagnant_Shadow_Celestial": "角色晉階材料:風(",
"Cavern_of_Corrosion_Path_of_Gelid_Wind": "遺器:冰套+風套(霜風之徑•侵蝕隧洞)", "Cavern_of_Corrosion_Path_of_Gelid_Wind": "遺器:冰套+風套(霜風之徑•侵蝕隧洞)",
"Cavern_of_Corrosion_Path_of_Jabbing_Punch": "遺器:物理套+擊破套(迅拳之徑•侵蝕隧洞)", "Cavern_of_Corrosion_Path_of_Jabbing_Punch": "遺器:物理套+擊破套(迅拳之徑•侵蝕隧洞)",
"Cavern_of_Corrosion_Path_of_Drifting": "遺器:治療套+快槍手(漂泊之徑•侵蝕隧洞)", "Cavern_of_Corrosion_Path_of_Drifting": "遺器:治療套+快槍手(漂泊之徑•侵蝕隧洞)",
@ -308,18 +308,18 @@
"name": "完成1次凝滯虛影", "name": "完成1次凝滯虛影",
"help": "", "help": "",
"do_not_achieve": "不完成這個任務", "do_not_achieve": "不完成這個任務",
"Stagnant_Shadow_Quanta": "角色晉階材料:量子(空海之形•凝滯虛影", "Stagnant_Shadow_Quanta": "角色晉階材料:量子(銀狼 / 希兒 / 青雀",
"Stagnant_Shadow_Gust": "角色晉階材料:風(巽風之形•凝滯虛影", "Stagnant_Shadow_Gust": "角色晉階材料:風(丹恆 / 布洛妮婭 / 桑博",
"Stagnant_Shadow_Fulmination": "角色晉階材料:雷(鳴雷之形•凝滯虛影", "Stagnant_Shadow_Fulmination": "角色晉階材料:雷(阿蘭 / 希露瓦 / 停雲 / 白露",
"Stagnant_Shadow_Blaze": "角色晉階材料:火(炎華之形•凝滯虛影", "Stagnant_Shadow_Blaze": "角色晉階材料:火(姬子 / 艾絲妲 / 虎克",
"Stagnant_Shadow_Spike": "角色晉階材料:物理(鋒芒之形•凝滯虛影", "Stagnant_Shadow_Spike": "角色晉階材料:物理(娜塔莎 / 克拉拉 / 盧卡 / 素裳",
"Stagnant_Shadow_Rime": "角色晉階材料:冰(霜晶之形•凝滯虛影", "Stagnant_Shadow_Rime": "角色晉階材料:冰(三月七 / 黑塔 / 傑帕德 / 佩拉",
"Stagnant_Shadow_Mirage": "角色晉階材料:虛數(幻光之形•凝滯虛影", "Stagnant_Shadow_Mirage": "角色晉階材料:虛數(瓦爾特 / 羅剎 / 馭空",
"Stagnant_Shadow_Icicle": "角色晉階材料:冰(冰稜之形•凝滯虛影", "Stagnant_Shadow_Icicle": "角色晉階材料:冰(彥卿",
"Stagnant_Shadow_Doom": "角色晉階材料:雷(震厄之形•凝滯虛影", "Stagnant_Shadow_Doom": "角色晉階材料:雷(卡芙卡 / 景元",
"Stagnant_Shadow_Puppetry": "角色晉階材料:虛數(偃偶之形•凝滯虛影", "Stagnant_Shadow_Puppetry": "角色晉階材料:虛數(丹恆•飲月",
"Stagnant_Shadow_Abomination": "角色晉階材料:量子(孽獸之形•凝滯虛影", "Stagnant_Shadow_Abomination": "角色晉階材料:量子(玲可 / 符玄",
"Stagnant_Shadow_Celestial": "角色晉階材料:風(天人之形•凝滯虛影" "Stagnant_Shadow_Celestial": "角色晉階材料:風("
}, },
"CavernOfCorrosion": { "CavernOfCorrosion": {
"name": "完成1次侵蝕隧洞", "name": "完成1次侵蝕隧洞",

View File

@ -312,14 +312,15 @@ class BattlePassUI(UI):
if self.appear(MAIN_GOTO_BATTLE_PASS, similarity=0.75): if self.appear(MAIN_GOTO_BATTLE_PASS, similarity=0.75):
return True return True
else: else:
logger.info('No battle pass entrance, probably a gap between two periods')
continue continue
logger.info('No battle pass entrance, probably a gap between two periods')
return False return False
def run(self): def run(self):
self.ui_ensure(page_main) self.ui_ensure(page_main)
if not self.has_battle_pass_entrance(): if not self.has_battle_pass_entrance():
self.config.stored.BattlePassTodayQuest.set(0)
self.config.task_delay(server_update=True) self.config.task_delay(server_update=True)
self.config.task_stop() self.config.task_stop()

View File

@ -1,5 +1,7 @@
import tasks.dungeon.keywords.dungeon as KEYWORDS_DUNGEON_LIST import tasks.dungeon.keywords.dungeon as KEYWORDS_DUNGEON_LIST
import tasks.dungeon.keywords.dungeon_detailed as KEYWORDS_DUNGEON_DETAILED
import tasks.dungeon.keywords.dungeon_entrance as KEYWORDS_DUNGEON_ENTRANCE import tasks.dungeon.keywords.dungeon_entrance as KEYWORDS_DUNGEON_ENTRANCE
import tasks.dungeon.keywords.nav as KEYWORDS_DUNGEON_NAV import tasks.dungeon.keywords.nav as KEYWORDS_DUNGEON_NAV
import tasks.dungeon.keywords.tab as KEYWORDS_DUNGEON_TAB import tasks.dungeon.keywords.tab as KEYWORDS_DUNGEON_TAB
from tasks.dungeon.keywords.classes import DungeonList, DungeonNav, DungeonTab from tasks.dungeon.keywords.classes import (DungeonDetailed, DungeonList,
DungeonNav, DungeonTab)

View File

@ -92,3 +92,8 @@ class DungeonList(Keyword):
@dataclass(repr=False) @dataclass(repr=False)
class DungeonEntrance(Keyword): class DungeonEntrance(Keyword):
instances: ClassVar = {} instances: ClassVar = {}
@dataclass(repr=False)
class DungeonDetailed(Keyword):
instances: ClassVar = {}

View File

@ -0,0 +1,113 @@
from .classes import DungeonDetailed
# This file was auto-generated, do not modify it manually. To generate:
# ``` python -m dev_tools.keyword_extract ```
Stagnant_Shadow_Quanta = DungeonDetailed(
id=1,
name='Stagnant_Shadow_Quanta',
cn='角色晋阶材料:量子(银狼 / 希儿 / 青雀)',
cht='角色晉階材料:量子(銀狼 / 希兒 / 青雀)',
en='Ascension: Quantum (Silver Wolf / Seele / Qingque)',
jp='キャラクター昇格素材:量子(銀狼 / ゼーレ / 青雀)',
es='Ascension: Cuántico (Silver Wolf / Seele / Qingque)',
)
Stagnant_Shadow_Gust = DungeonDetailed(
id=2,
name='Stagnant_Shadow_Gust',
cn='角色晋阶材料:风(丹恒 / 布洛妮娅 / 桑博)',
cht='角色晉階材料:風(丹恆 / 布洛妮婭 / 桑博)',
en='Ascension: Wind (Dan Heng / Bronya / Sampo)',
jp='キャラクター昇格素材:風(丹恒 / ブローニャ / サンポ)',
es='Ascension: Viento (Dan Heng / Bronya / Sampo)',
)
Stagnant_Shadow_Fulmination = DungeonDetailed(
id=3,
name='Stagnant_Shadow_Fulmination',
cn='角色晋阶材料:雷(阿兰 / 希露瓦 / 停云 / 白露)',
cht='角色晉階材料:雷(阿蘭 / 希露瓦 / 停雲 / 白露)',
en='Ascension: Lightning (Arlan / Serval / Tingyun / Bailu)',
jp='キャラクター昇格素材:雷(アーラン / セーバル / 停雲 / 白露)',
es='Ascension: Rayo (Arlan / Serval / Tingyun / Bailu)',
)
Stagnant_Shadow_Blaze = DungeonDetailed(
id=4,
name='Stagnant_Shadow_Blaze',
cn='角色晋阶材料:火(姬子 / 艾丝妲 / 虎克)',
cht='角色晉階材料:火(姬子 / 艾絲妲 / 虎克)',
en='Ascension: Fire (Himeko / Asta / Hook)',
jp='キャラクター昇格素材:炎(姫子 / アスター / フック)',
es='Ascension: Fuego (Himeko / Asta / Hook)',
)
Stagnant_Shadow_Spike = DungeonDetailed(
id=5,
name='Stagnant_Shadow_Spike',
cn='角色晋阶材料:物理(娜塔莎 / 克拉拉 / 卢卡 / 素裳)',
cht='角色晉階材料:物理(娜塔莎 / 克拉拉 / 盧卡 / 素裳)',
en='Ascension: Physical (Natasha / Clara / Luka / Sushang)',
jp='キャラクター昇格素材:物理(ナターシャ / クラーラ / ルカ / 素裳)',
es='Ascension: Físico (Natasha / Clara / Luka / Sushang)',
)
Stagnant_Shadow_Rime = DungeonDetailed(
id=6,
name='Stagnant_Shadow_Rime',
cn='角色晋阶材料:冰(三月七 / 黑塔 / 杰帕德 / 佩拉)',
cht='角色晉階材料:冰(三月七 / 黑塔 / 傑帕德 / 佩拉)',
en='Ascension: Ice (March 7th / Herta / Gepard / Pela)',
jp='キャラクター昇格素材:氷(三月なのか / ヘルタ / ジェパード / ペラ)',
es='Ascension: Hielo (Siete de Marzo / Herta / Gepard / Pela)',
)
Stagnant_Shadow_Mirage = DungeonDetailed(
id=7,
name='Stagnant_Shadow_Mirage',
cn='角色晋阶材料:虚数(瓦尔特 / 罗刹 / 驭空)',
cht='角色晉階材料:虛數(瓦爾特 / 羅剎 / 馭空)',
en='Ascension: Imaginary (Welt / Luocha / Yukong)',
jp='キャラクター昇格素材:虚数(ヴェルト / 羅刹 / 御空)',
es='Ascension: Imaginario (Welt / Luocha / Yukong)',
)
Stagnant_Shadow_Icicle = DungeonDetailed(
id=8,
name='Stagnant_Shadow_Icicle',
cn='角色晋阶材料:冰(彦卿)',
cht='角色晉階材料:冰(彥卿)',
en='Ascension: Ice (Yanqing)',
jp='キャラクター昇格素材:氷(彦卿)',
es='Ascension: Hielo (Yanqing)',
)
Stagnant_Shadow_Doom = DungeonDetailed(
id=9,
name='Stagnant_Shadow_Doom',
cn='角色晋阶材料:雷(卡芙卡 / 景元)',
cht='角色晉階材料:雷(卡芙卡 / 景元)',
en='Ascension: Lightning (Kafka / Jing Yuan)',
jp='キャラクター昇格素材:雷(カフカ / 景元)',
es='Ascension: Rayo (Kafka / Jing Yuan)',
)
Stagnant_Shadow_Puppetry = DungeonDetailed(
id=10,
name='Stagnant_Shadow_Puppetry',
cn='角色晋阶材料:虚数(丹恒•饮月)',
cht='角色晉階材料:虛數(丹恆•飲月)',
en='Ascension: Imaginary (Dan Heng • Imbibitor Lunae)',
jp='キャラクター昇格素材:虚数(丹恒・飲月)',
es='Ascension: Imaginario (Dan Heng - Imbibitor Lunae)',
)
Stagnant_Shadow_Abomination = DungeonDetailed(
id=11,
name='Stagnant_Shadow_Abomination',
cn='角色晋阶材料:量子(玲可 / 符玄)',
cht='角色晉階材料:量子(玲可 / 符玄)',
en='Ascension: Quantum (Lynx / Fu Xuan)',
jp='キャラクター昇格素材:量子(リンクス / 符玄)',
es='Ascension: Cuántico (Lynx / Fu Xuan)',
)
Stagnant_Shadow_Celestial = DungeonDetailed(
id=12,
name='Stagnant_Shadow_Celestial',
cn='角色晋阶材料:风(刃)',
cht='角色晉階材料:風(刃)',
en='Ascension: Wind (Blade)',
jp='キャラクター昇格素材:風(刃)',
es='Ascension: Viento (Blade)',
)

View File

@ -11,7 +11,43 @@ class RelicsUI(ItemUI):
def _is_in_salvage(self) -> bool: def _is_in_salvage(self) -> bool:
return self.appear(ORDER_ASCENDING) or self.appear(ORDER_DESCENDING) return self.appear(ORDER_ASCENDING) or self.appear(ORDER_DESCENDING)
def salvage_exit(self, skip_first_screenshot=True):
"""
Pages:
in: rewards claimed
or _is_in_salvage()
out: GOTO_SALVAGE
"""
interval = Timer(1)
while 1:
if skip_first_screenshot:
skip_first_screenshot = False
else:
self.device.screenshot()
if self.appear(GOTO_SALVAGE):
logger.info("Salvage page exited")
break
if self.handle_reward(interval=2):
continue
if interval.reached() and self._is_in_salvage():
logger.info(f'_is_in_salvage -> {CLOSE}')
self.device.click(CLOSE)
interval.reset()
continue
def salvage_relic(self, skip_first_screenshot=True) -> bool: def salvage_relic(self, skip_first_screenshot=True) -> bool:
"""
Args:
skip_first_screenshot:
Returns:
bool: If success
Pages:
in: Any
out: page_item, GOTO_SALVAGE
"""
logger.hr('Salvage Relic', level=2) logger.hr('Salvage Relic', level=2)
self.item_goto(KEYWORD_ITEM_TAB.Relics, wait_until_stable=False) self.item_goto(KEYWORD_ITEM_TAB.Relics, wait_until_stable=False)
while 1: # relic tab -> salvage while 1: # relic tab -> salvage
@ -37,6 +73,7 @@ class RelicsUI(ItemUI):
if timeout.reached(): if timeout.reached():
logger.warning('Timeout when selecting first relic') logger.warning('Timeout when selecting first relic')
self.salvage_exit()
return False return False
# The first frame entering relic page, SALVAGE is a white button as it's the default state. # The first frame entering relic page, SALVAGE is a white button as it's the default state.
# At the second frame, SALVAGE is disabled since no items are selected. # At the second frame, SALVAGE is disabled since no items are selected.
@ -67,22 +104,5 @@ class RelicsUI(ItemUI):
if self.handle_popup_confirm(): if self.handle_popup_confirm():
continue continue
skip_first_screenshot = True self.salvage_exit()
interval = Timer(1)
while 1: # rewards claimed -> relic tab page
if skip_first_screenshot:
skip_first_screenshot = False
else:
self.device.screenshot()
if self.appear(GOTO_SALVAGE):
logger.info("Salvage page exited")
break
if self.handle_reward(interval=2):
continue
if interval.reached() and self._is_in_salvage():
logger.info(f'_is_in_salvage -> {CLOSE}')
self.device.click(CLOSE)
interval.reset()
continue
return True return True