BIN
assets/character/Jade.png
Normal file
After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
BIN
assets/character/Yunli.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
assets/share/combat/support/COMBAT_SUPPORT_LIST.SEARCH.png
Normal file
After Width: | Height: | Size: 8.3 KiB |
Before Width: | Height: | Size: 92 KiB After Width: | Height: | Size: 106 KiB |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 7.1 KiB |
Before Width: | Height: | Size: 7.2 KiB After Width: | Height: | Size: 11 KiB |
@ -124,6 +124,10 @@ class KeywordExtract:
|
||||
|
||||
"""
|
||||
quest_data = read_file(os.path.join(TextMap.DATA_FOLDER, 'ExcelOutput', 'QuestData.json'))
|
||||
quest_data = {
|
||||
str(deep_get(data, 'QuestID')): data
|
||||
for data in quest_data
|
||||
}
|
||||
quests_hash = [quest_data[str(quest_id)]["QuestTitle"]["Hash"] for quest_id in quests]
|
||||
quest_keywords = list(dict.fromkeys([self.text_map[lang].find(quest_hash)[1] for quest_hash in quests_hash]))
|
||||
self.load_keywords(quest_keywords, lang)
|
||||
@ -140,12 +144,15 @@ class KeywordExtract:
|
||||
old_quest = [
|
||||
"Go_on_assignment_1_time", # -> Dispatch_1_assignments
|
||||
"Complete_Simulated_Universe_1_times", # same
|
||||
"Complete_1_stage_in_Simulated_Universe_Any_world", # -> Complete_Divergent_Universe_or_Simulated_Universe_1_times
|
||||
"Complete_1_stage_in_Simulated_Universe_Any_world",
|
||||
# -> Complete_Divergent_Universe_or_Simulated_Universe_1_times
|
||||
"Complete_Calyx_Crimson_1_time", # -> Clear_Calyx_Crimson_1_times
|
||||
"Enter_combat_by_attacking_enemy_Weakness_and_win_3_times", # -> Enter_combat_by_attacking_enemie_Weakness_and_win_1_times
|
||||
"Enter_combat_by_attacking_enemy_Weakness_and_win_3_times",
|
||||
# -> Enter_combat_by_attacking_enemie_Weakness_and_win_1_times
|
||||
"Use_Technique_2_times", # -> Use_Technique_1_times
|
||||
"Destroy_3_destructible_objects", # -> Destroy_1_destructible_objects
|
||||
"Obtain_victory_in_combat_with_Support_Characters_1_time", # -> Obtain_victory_in_combat_with_Support_Characters_1_times
|
||||
"Obtain_victory_in_combat_with_Support_Characters_1_time",
|
||||
# -> Obtain_victory_in_combat_with_Support_Characters_1_times
|
||||
"Level_up_any_character_1_time", # -> Level_up_any_character_1_times
|
||||
"Level_up_any_Light_Cone_1_time", # -> Level_up_any_Light_Cone_1_times
|
||||
"Synthesize_Consumable_1_time", # -> Use_the_Omni_Synthesizer_1_times
|
||||
@ -170,7 +177,8 @@ class KeywordExtract:
|
||||
"Consume_1_Trailblaze_Power": 120
|
||||
|
||||
}
|
||||
def replace_templates_quest(text: str, correct_time = 1) -> str:
|
||||
|
||||
def replace_templates_quest(text: str, correct_time=1) -> str:
|
||||
text = replace_templates(text)
|
||||
text = text.replace('1', f'{correct_time}')
|
||||
return text
|
||||
@ -187,7 +195,8 @@ class KeywordExtract:
|
||||
gen.ObjectAttr(key='id', value=index + last_id + 1)
|
||||
gen.ObjectAttr(key='name', value=name)
|
||||
for lang in UI_LANGUAGES:
|
||||
gen.ObjectAttr(key=lang, value=replace_templates_quest(self.find_keyword(keyword, lang=lang)[1], correct_times.setdefault(old_name, 1)))
|
||||
gen.ObjectAttr(key=lang, value=replace_templates_quest(self.find_keyword(keyword, lang=lang)[1],
|
||||
correct_times.setdefault(old_name, 1)))
|
||||
gen.last_id = index + last_id + 1
|
||||
|
||||
output_file = './tasks/daily/keywords/daily_quest.py'
|
||||
@ -198,14 +207,14 @@ class KeywordExtract:
|
||||
|
||||
def generate_daily_quests(self):
|
||||
daily_quest = read_file(os.path.join(TextMap.DATA_FOLDER, 'ExcelOutput', 'DailyQuest.json'))
|
||||
self.load_quests(daily_quest.keys())
|
||||
self.load_quests([str(deep_get(data, 'DailyID')) for data in daily_quest])
|
||||
self.write_daily_quest_keywords()
|
||||
|
||||
def load_character_name_keywords(self, lang='en'):
|
||||
file_name = 'ItemConfigAvatarPlayerIcon.json'
|
||||
path = os.path.join(TextMap.DATA_FOLDER, 'ExcelOutput', file_name)
|
||||
character_data = read_file(path)
|
||||
characters_hash = [character_data[key]["ItemName"]["Hash"] for key in character_data]
|
||||
characters_hash = [data["ItemName"]["Hash"] for data in character_data]
|
||||
|
||||
text_map = self.text_map[lang]
|
||||
keywords_id = sorted(
|
||||
@ -216,36 +225,45 @@ class KeywordExtract:
|
||||
def generate_shadow_with_characters(self):
|
||||
# Damage type -> damage hash
|
||||
damage_info = dict()
|
||||
for type_name, data in read_file(os.path.join(
|
||||
for data in read_file(os.path.join(
|
||||
TextMap.DATA_FOLDER, 'ExcelOutput',
|
||||
'DamageType.json'
|
||||
)).items():
|
||||
)):
|
||||
type_name = deep_get(data, 'ID', 0)
|
||||
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(
|
||||
|
||||
def merge_same(data: list[dict], keyword) -> list:
|
||||
mp = defaultdict(dict)
|
||||
for d in data:
|
||||
length = len(mp[d[keyword]])
|
||||
mp[d[keyword]][str(length)] = d
|
||||
return mp.values()
|
||||
|
||||
for data in merge_same(read_file(os.path.join(
|
||||
TextMap.DATA_FOLDER, 'ExcelOutput',
|
||||
'AvatarPromotionConfig.json'
|
||||
)).values():
|
||||
)), keyword='AvatarID'):
|
||||
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(
|
||||
for data in merge_same(read_file(os.path.join(
|
||||
TextMap.DATA_FOLDER, 'ExcelOutput',
|
||||
'MappingInfo.json'
|
||||
)).values():
|
||||
)), keyword='ID'):
|
||||
farm_type = deep_get(data, '0.FarmType')
|
||||
if farm_type != 'ELEMENT':
|
||||
continue
|
||||
@ -273,10 +291,12 @@ class KeywordExtract:
|
||||
gen.ObjectAttr(key='id', value=index + 1)
|
||||
gen.ObjectAttr(key='name', value=name)
|
||||
for lang in UI_LANGUAGES:
|
||||
character_names = ' / '.join([
|
||||
character_names = [
|
||||
replace_templates(self.find_keyword(c[0], lang)[1])
|
||||
for c in characters
|
||||
])
|
||||
]
|
||||
character_names = list(dict.fromkeys(character_names))
|
||||
character_names = ' / '.join(character_names)
|
||||
damage_type = self.find_keyword(characters[0][1], lang)[1]
|
||||
if lang in {'en', 'es'}:
|
||||
value = f'{prefix_dict[lang]}{damage_type} ({character_names})'
|
||||
@ -351,7 +371,7 @@ class KeywordExtract:
|
||||
|
||||
def generate_battle_pass_quests(self):
|
||||
battle_pass_quests = read_file(os.path.join(TextMap.DATA_FOLDER, 'ExcelOutput', 'BattlePassConfig.json'))
|
||||
latest_quests = list(battle_pass_quests.values())[-1]
|
||||
latest_quests = list(battle_pass_quests)[-1]
|
||||
week_quest_list = deep_get(latest_quests, "WeekQuestList")
|
||||
week_order1 = deep_get(latest_quests, "WeekOrder1")
|
||||
week_chain_quest_list = deep_get(latest_quests, "WeekChainQuestList")
|
||||
@ -362,30 +382,38 @@ class KeywordExtract:
|
||||
def generate_rogue_buff(self):
|
||||
# paths
|
||||
aeons = read_file(os.path.join(TextMap.DATA_FOLDER, 'ExcelOutput', 'RogueAeonDisplay.json'))
|
||||
aeons_hash = [deep_get(aeon, 'RogueAeonPathName2.Hash') for aeon in aeons.values()]
|
||||
aeons_hash = [deep_get(aeon, 'RogueAeonPathName2.Hash') for aeon in aeons]
|
||||
self.keywords_id = aeons_hash
|
||||
self.write_keywords(keyword_class='RoguePath', output_file='./tasks/rogue/keywords/path.py')
|
||||
|
||||
# blessings
|
||||
blessings_info = read_file(os.path.join(TextMap.DATA_FOLDER, 'ExcelOutput', 'RogueBuff.json'))
|
||||
blessings_name_map = read_file(os.path.join(TextMap.DATA_FOLDER, 'ExcelOutput', 'RogueMazeBuff.json'))
|
||||
blessings_id = [deep_get(blessing, '1.MazeBuffID') for blessing in blessings_info.values()
|
||||
if not deep_get(blessing, '1.AeonID')][1:]
|
||||
resonances_id = [deep_get(blessing, '1.MazeBuffID') for blessing in blessings_info.values()
|
||||
if deep_get(blessing, '1.AeonID')]
|
||||
blessings_name_map = {
|
||||
deep_get(data, 'ID'): data
|
||||
for data in blessings_name_map
|
||||
}
|
||||
blessings_id = [deep_get(blessing, 'MazeBuffID') for blessing in blessings_info
|
||||
if not deep_get(blessing, 'AeonID')][1:]
|
||||
resonances_id = [deep_get(blessing, 'MazeBuffID') for blessing in blessings_info
|
||||
if deep_get(blessing, 'AeonID')]
|
||||
blessings_info = {
|
||||
str(deep_get(data, 'MazeBuffID')): data
|
||||
for data in blessings_info if deep_get(data, 'MazeBuffLevel') == 1
|
||||
}
|
||||
|
||||
# ignore endless buffs
|
||||
endless_buffs = read_file(os.path.join(TextMap.DATA_FOLDER, 'ExcelOutput', 'RogueEndlessMegaBuffDesc.json'))
|
||||
endless_buff_ids = [int(id_) for id_ in endless_buffs]
|
||||
endless_buff_ids = [int(deep_get(data, 'MazeBuffID')) for data in endless_buffs]
|
||||
blessings_id = [id_ for id_ in blessings_id if id_ not in endless_buff_ids]
|
||||
|
||||
def get_blessing_infos(id_list, with_enhancement: bool):
|
||||
blessings_hash = [deep_get(blessings_name_map, f"{blessing_id}.1.BuffName.Hash")
|
||||
blessings_hash = [deep_get(blessings_name_map, f"{blessing_id}.BuffName.Hash")
|
||||
for blessing_id in id_list]
|
||||
blessings_path_id = {blessing_hash: int(deep_get(blessings_info, f'{blessing_id}.1.RogueBuffType')) - 119
|
||||
blessings_path_id = {blessing_hash: int(deep_get(blessings_info, f'{blessing_id}.RogueBuffType')) - 119
|
||||
# 119 is the magic number make type match with path in keyword above
|
||||
for blessing_hash, blessing_id in zip(blessings_hash, id_list)}
|
||||
blessings_category = {blessing_hash: deep_get(blessings_info, f'{blessing_id}.1.RogueBuffCategory')
|
||||
blessings_category = {blessing_hash: deep_get(blessings_info, f'{blessing_id}.RogueBuffCategory')
|
||||
for blessing_hash, blessing_id in zip(blessings_hash, id_list)}
|
||||
category_map = {
|
||||
"Common": 1,
|
||||
@ -418,8 +446,8 @@ class KeywordExtract:
|
||||
'RogueTalkNameConfig.json'
|
||||
)
|
||||
event_title_ids = {
|
||||
id_: deep_get(data, 'Name.Hash')
|
||||
for id_, data in read_file(event_title_file).items()
|
||||
str(deep_get(data, 'TalkNameID')): deep_get(data, 'Name.Hash')
|
||||
for data in read_file(event_title_file)
|
||||
}
|
||||
event_title_texts = defaultdict(list)
|
||||
for title_id, title_hash in event_title_ids.items():
|
||||
@ -432,8 +460,8 @@ class KeywordExtract:
|
||||
'RogueDialogueOptionDisplay.json'
|
||||
)
|
||||
option_ids = {
|
||||
id_: deep_get(data, 'OptionTitle.Hash')
|
||||
for id_, data in read_file(option_file).items()
|
||||
str(deep_get(data, 'OptionDisplayID')): deep_get(data, 'OptionTitle.Hash')
|
||||
for data in read_file(option_file)
|
||||
}
|
||||
# Key: event name hash, value: list of option id/hash
|
||||
options_grouped = dict()
|
||||
@ -503,7 +531,9 @@ class KeywordExtract:
|
||||
if option_dup_count[option_var] > 1:
|
||||
option_var = f'{option_var}_{option_md5[:md5_prefix_len]}'
|
||||
return option_var
|
||||
|
||||
return wrapper
|
||||
|
||||
option_gen = None
|
||||
option_hash_to_keyword_id = dict() # option hash -> option keyword id
|
||||
for i, (option_md5, option_hash) in enumerate(option_md5s.items(), start=1):
|
||||
@ -543,9 +573,9 @@ class KeywordExtract:
|
||||
logger.critical(
|
||||
f'Importing preset strategies fails, probably due to changes in {output_file}')
|
||||
|
||||
def iter_without_duplication(self, file: dict, keys):
|
||||
def iter_without_duplication(self, file: list, keys):
|
||||
visited = set()
|
||||
for data in file.values():
|
||||
for data in file:
|
||||
hash_ = deep_get(data, keys=keys)
|
||||
_, name = self.find_keyword(hash_, lang='cn')
|
||||
if name in visited:
|
||||
|
@ -30,25 +30,26 @@ def get_assignment_entry_data():
|
||||
"""
|
||||
expedition_namehash_to_id = {
|
||||
deep_get(expedition, 'Name.Hash'): deep_get(expedition, 'ExpeditionID')
|
||||
for expedition in GenerateKeyword.read_file('./ExcelOutput/ExpeditionData.json').values()
|
||||
for expedition in GenerateKeyword.read_file('./ExcelOutput/ExpeditionData.json')
|
||||
}
|
||||
rev = {v: k for k, v in expedition_namehash_to_id.items()}
|
||||
rev = resort(rev)
|
||||
expedition_namehash_to_id = {v: k for k, v in rev.items()}
|
||||
expedition_id_to_reward_id = {
|
||||
deep_get(expedition, '4.2.ExpeditionID'): deep_get(expedition, '4.2.RewardID')
|
||||
for expedition in GenerateKeyword.read_file('./ExcelOutput/ExpeditionReward.json').values()
|
||||
deep_get(expedition, 'ExpeditionID'): deep_get(expedition, 'RewardID')
|
||||
for expedition in GenerateKeyword.read_file('./ExcelOutput/ExpeditionReward.json')
|
||||
if deep_get(expedition, 'Duration') == 4 and deep_get(expedition, 'AvatarNum') == 2
|
||||
}
|
||||
reward_id_to_item_ids = {
|
||||
deep_get(reward, 'RewardID'): [
|
||||
v for k, v in reward.items()
|
||||
if k.startswith('ItemID')
|
||||
]
|
||||
for reward in GenerateKeyword.read_file('./ExcelOutput/RewardData.json').values()
|
||||
for reward in GenerateKeyword.read_file('./ExcelOutput/RewardData.json')
|
||||
}
|
||||
item_id_to_namehash = {
|
||||
deep_get(item, 'ID'): deep_get(item, 'ItemName.Hash')
|
||||
for item in GenerateKeyword.read_file('./ExcelOutput/ItemConfig.json').values()
|
||||
for item in GenerateKeyword.read_file('./ExcelOutput/ItemConfig.json')
|
||||
}
|
||||
item_name_remap = {
|
||||
'旅情见闻': '角色经验材料',
|
||||
@ -81,7 +82,7 @@ class GenerateAssignmentGroup(GenerateKeyword):
|
||||
output_file = './tasks/assignment/keywords/group.py'
|
||||
|
||||
def iter_keywords(self) -> Iterable[dict]:
|
||||
for group in self.read_file('./ExcelOutput/ExpeditionGroup.json').values():
|
||||
for group in self.read_file('./ExcelOutput/ExpeditionGroup.json'):
|
||||
yield dict(text_id=deep_get(group, 'Name.Hash'))
|
||||
|
||||
|
||||
@ -133,7 +134,7 @@ class GenerateAssignmentEventEntry(GenerateKeyword):
|
||||
output_file = './tasks/assignment/keywords/event_entry.py'
|
||||
|
||||
def iter_keywords(self) -> Iterable[dict]:
|
||||
for expedition in self.read_file('./ExcelOutput/ActivityExpedition.json').values():
|
||||
for expedition in self.read_file('./ExcelOutput/ActivityExpedition.json'):
|
||||
yield dict(text_id=deep_get(expedition, 'Name.Hash'))
|
||||
|
||||
|
||||
|
@ -92,13 +92,13 @@ class GenerateKeyword:
|
||||
text_map['cn'] = TextMap('chs')
|
||||
|
||||
@staticmethod
|
||||
def read_file(file: str) -> dict:
|
||||
def read_file(file: str) -> list:
|
||||
"""
|
||||
Args:
|
||||
file: ./ExcelOutput/GameplayGuideData.json
|
||||
|
||||
Returns:
|
||||
dict:
|
||||
list
|
||||
"""
|
||||
file = os.path.join(TextMap.DATA_FOLDER, file)
|
||||
return read_file(file)
|
||||
|
@ -41,7 +41,7 @@ class GenerateDungeonList(GenerateKeyword):
|
||||
|
||||
def iter_dungeon(self):
|
||||
temp_save = ""
|
||||
for data in self.data.values():
|
||||
for data in self.data:
|
||||
dungeon_id = data.get('ID', 0)
|
||||
text_id = deep_get(data, keys='Name.Hash')
|
||||
plane_id = deep_get(data, 'MapEntranceID', 0)
|
||||
|
@ -10,7 +10,7 @@ class GenerateItemBase(GenerateKeyword):
|
||||
blacklist = []
|
||||
|
||||
def iter_items(self) -> t.Iterable[dict]:
|
||||
for data in SHARE_DATA.ItemConfig.values():
|
||||
for data in SHARE_DATA.ItemConfig:
|
||||
item_id = data.get('ID', 0)
|
||||
text_id = deep_get(data, keys='ItemName.Hash')
|
||||
subtype = data.get('ItemSubType', 0)
|
||||
@ -50,12 +50,11 @@ class GenerateItemBase(GenerateKeyword):
|
||||
data
|
||||
"""
|
||||
dic = {}
|
||||
for level_data in SHARE_DATA.MappingInfo.values():
|
||||
for dungeon_data in SHARE_DATA.MappingInfo:
|
||||
# Use the highest level
|
||||
# And must contain:
|
||||
# "Type": "FARM_ENTRANCE",
|
||||
# "FarmType": "COCOON",
|
||||
for dungeon_data in level_data.values():
|
||||
if dungeon_data.get('Type') != 'FARM_ENTRANCE':
|
||||
continue
|
||||
# parse
|
||||
|
@ -13,8 +13,8 @@ class GenerateMapPlane(GenerateKeyword):
|
||||
return self.read_file('./ExcelOutput/AreaMapConfig.json')
|
||||
|
||||
def iter_planes(self) -> t.Iterable[dict]:
|
||||
for plane_id, data in self.data.items():
|
||||
plane_id = int(plane_id)
|
||||
for data in self.data:
|
||||
plane_id = int(deep_get(data, 'ID', 0))
|
||||
world_id = int(str(plane_id)[-5])
|
||||
sort_id = int(deep_get(data, 'MenuSortID', 0))
|
||||
text_id = deep_get(data, 'Name.Hash')
|
||||
|
@ -672,13 +672,15 @@
|
||||
"Himeko",
|
||||
"Hook",
|
||||
"Huohuo",
|
||||
"Jade",
|
||||
"JingYuan",
|
||||
"Jingliu",
|
||||
"Kafka",
|
||||
"Luka",
|
||||
"Luocha",
|
||||
"Lynx",
|
||||
"March7th",
|
||||
"March7thPreservation",
|
||||
"March7thTheHunt",
|
||||
"Misha",
|
||||
"Natasha",
|
||||
"Pela",
|
||||
@ -699,7 +701,8 @@
|
||||
"Welt",
|
||||
"Xueyi",
|
||||
"Yanqing",
|
||||
"Yukong"
|
||||
"Yukong",
|
||||
"Yunli"
|
||||
]
|
||||
}
|
||||
},
|
||||
@ -1238,13 +1241,15 @@
|
||||
"Himeko",
|
||||
"Hook",
|
||||
"Huohuo",
|
||||
"Jade",
|
||||
"JingYuan",
|
||||
"Jingliu",
|
||||
"Kafka",
|
||||
"Luka",
|
||||
"Luocha",
|
||||
"Lynx",
|
||||
"March7th",
|
||||
"March7thPreservation",
|
||||
"March7thTheHunt",
|
||||
"Misha",
|
||||
"Natasha",
|
||||
"Pela",
|
||||
@ -1265,7 +1270,8 @@
|
||||
"Welt",
|
||||
"Xueyi",
|
||||
"Yanqing",
|
||||
"Yukong"
|
||||
"Yukong",
|
||||
"Yunli"
|
||||
]
|
||||
}
|
||||
}
|
||||
@ -1522,13 +1528,15 @@
|
||||
"Himeko",
|
||||
"Hook",
|
||||
"Huohuo",
|
||||
"Jade",
|
||||
"JingYuan",
|
||||
"Jingliu",
|
||||
"Kafka",
|
||||
"Luka",
|
||||
"Luocha",
|
||||
"Lynx",
|
||||
"March7th",
|
||||
"March7thPreservation",
|
||||
"March7thTheHunt",
|
||||
"Misha",
|
||||
"Natasha",
|
||||
"Pela",
|
||||
@ -1549,7 +1557,8 @@
|
||||
"Welt",
|
||||
"Xueyi",
|
||||
"Yanqing",
|
||||
"Yukong"
|
||||
"Yukong",
|
||||
"Yunli"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
@ -53,7 +53,7 @@ class GeneratedConfig:
|
||||
|
||||
# Group `DungeonSupport`
|
||||
DungeonSupport_Use = 'when_daily' # always_use, when_daily, do_not_use
|
||||
DungeonSupport_Character = 'FirstCharacter' # FirstCharacter, Acheron, Argenti, Arlan, Asta, Aventurine, Bailu, BlackSwan, Blade, Boothill, Bronya, Clara, DanHeng, DanHengImbibitorLunae, DrRatio, Firefly, FuXuan, Gallagher, Gepard, Guinaifen, Hanya, Herta, Himeko, Hook, Huohuo, JingYuan, Jingliu, Kafka, Luka, Luocha, Lynx, March7th, Misha, Natasha, Pela, Qingque, Robin, RuanMei, Sampo, Seele, Serval, SilverWolf, Sparkle, Sushang, Tingyun, TopazNumby, TrailblazerDestruction, TrailblazerHarmony, TrailblazerPreservation, Welt, Xueyi, Yanqing, Yukong
|
||||
DungeonSupport_Character = 'FirstCharacter' # FirstCharacter, Acheron, Argenti, Arlan, Asta, Aventurine, Bailu, BlackSwan, Blade, Boothill, Bronya, Clara, DanHeng, DanHengImbibitorLunae, DrRatio, Firefly, FuXuan, Gallagher, Gepard, Guinaifen, Hanya, Herta, Himeko, Hook, Huohuo, Jade, JingYuan, Jingliu, Kafka, Luka, Luocha, Lynx, March7thPreservation, March7thTheHunt, Misha, Natasha, Pela, Qingque, Robin, RuanMei, Sampo, Seele, Serval, SilverWolf, Sparkle, Sushang, Tingyun, TopazNumby, TrailblazerDestruction, TrailblazerHarmony, TrailblazerPreservation, Welt, Xueyi, Yanqing, Yukong, Yunli
|
||||
|
||||
# Group `DungeonStorage`
|
||||
DungeonStorage_TrailblazePower = {}
|
||||
|
@ -100,7 +100,7 @@ class ConfigGenerator:
|
||||
option_add(keys='Ornament.Dungeon.option', options=ornament)
|
||||
# Insert characters
|
||||
from tasks.character.keywords import CharacterList
|
||||
unsupported_characters = ["Jade"]
|
||||
unsupported_characters = ["Jiaoqiu"]
|
||||
characters = [character.name for character in CharacterList.instances.values()
|
||||
if character.name not in unsupported_characters]
|
||||
option_add(keys='DungeonSupport.Character.option', options=characters)
|
||||
|
@ -263,10 +263,10 @@
|
||||
"Calyx_Crimson_Nihility_Luofu_AlchemyCommission": "Trace: Nihility (Alchemy Commission)",
|
||||
"Stagnant_Shadow_Spike": "Ascension: Physical (Natasha / Clara / Luka / Sushang)",
|
||||
"Stagnant_Shadow_Perdition": "Ascension: Physical (Hanya / Argenti)",
|
||||
"Stagnant_Shadow_Duty": "Ascension: Physical (Boothill / Robin)",
|
||||
"Stagnant_Shadow_Duty": "Ascension: Physical (Boothill / Robin / Yunli)",
|
||||
"Stagnant_Shadow_Blaze": "Ascension: Fire (Himeko / Asta / Hook)",
|
||||
"Stagnant_Shadow_Scorch": "Ascension: Fire (Guinaifen / Topaz & Numby)",
|
||||
"Stagnant_Shadow_Ire": "Ascension: Fire (Firefly / Gallagher)",
|
||||
"Stagnant_Shadow_Ire": "Ascension: Fire (Firefly / Gallagher / Jiaoqiu)",
|
||||
"Stagnant_Shadow_Rime": "Ascension: Ice (March 7th / Herta / Gepard / Pela)",
|
||||
"Stagnant_Shadow_Icicle": "Ascension: Ice (Yanqing / Jingliu / Ruan Mei)",
|
||||
"Stagnant_Shadow_Nectar": "Ascension: Ice (Misha)",
|
||||
@ -403,13 +403,15 @@
|
||||
"Himeko": "Himeko",
|
||||
"Hook": "Hook",
|
||||
"Huohuo": "Huohuo",
|
||||
"Jade": "Jade",
|
||||
"JingYuan": "Jing Yuan",
|
||||
"Jingliu": "Jingliu",
|
||||
"Kafka": "Kafka",
|
||||
"Luka": "Luka",
|
||||
"Luocha": "Luocha",
|
||||
"Lynx": "Lynx",
|
||||
"March7th": "March 7th",
|
||||
"March7thPreservation": "March 7th: Preservation",
|
||||
"March7thTheHunt": "March 7th: The Hunt",
|
||||
"Misha": "Misha",
|
||||
"Natasha": "Natasha",
|
||||
"Pela": "Pela",
|
||||
@ -430,7 +432,8 @@
|
||||
"Welt": "Welt",
|
||||
"Xueyi": "Xueyi",
|
||||
"Yanqing": "Yanqing",
|
||||
"Yukong": "Yukong"
|
||||
"Yukong": "Yukong",
|
||||
"Yunli": "Yunli"
|
||||
}
|
||||
},
|
||||
"DungeonStorage": {
|
||||
@ -555,11 +558,11 @@
|
||||
"help": ""
|
||||
},
|
||||
"Item_IPC_Work_Permit": {
|
||||
"name": "Ascension: Physical (Boothill / Robin)",
|
||||
"name": "Ascension: Physical (Boothill / Robin / Yunli)",
|
||||
"help": ""
|
||||
},
|
||||
"Item_Raging_Heart": {
|
||||
"name": "Ascension: Fire (Firefly / Gallagher)",
|
||||
"name": "Ascension: Fire (Firefly / Gallagher / Jiaoqiu)",
|
||||
"help": ""
|
||||
},
|
||||
"Item_Dream_Fridge": {
|
||||
|
@ -263,10 +263,10 @@
|
||||
"Calyx_Crimson_Nihility_Luofu_AlchemyCommission": "Rastros: Nihilidad (Comisión de Alquimia)",
|
||||
"Stagnant_Shadow_Spike": "Ascension: Físico (Natasha / Clara / Luka / Sushang)",
|
||||
"Stagnant_Shadow_Perdition": "Ascension: Físico (Hanya / Argenti)",
|
||||
"Stagnant_Shadow_Duty": "Ascension: Físico (Boothill / Robin)",
|
||||
"Stagnant_Shadow_Duty": "Ascension: Físico (Boothill / Robin / Yunli)",
|
||||
"Stagnant_Shadow_Blaze": "Ascension: Fuego (Himeko / Asta / Hook)",
|
||||
"Stagnant_Shadow_Scorch": "Ascension: Fuego (Guinaifen / Topaz y Conti)",
|
||||
"Stagnant_Shadow_Ire": "Ascension: Fuego (Luciérnaga / Gallagher)",
|
||||
"Stagnant_Shadow_Ire": "Ascension: Fuego (Luciérnaga / Gallagher / Jiaoqiu)",
|
||||
"Stagnant_Shadow_Rime": "Ascension: Hielo (Siete de Marzo / Herta / Gepard / Pela)",
|
||||
"Stagnant_Shadow_Icicle": "Ascension: Hielo (Yanqing / Jingliu / Ruan Mei)",
|
||||
"Stagnant_Shadow_Nectar": "Ascension: Hielo (Misha)",
|
||||
@ -288,7 +288,7 @@
|
||||
"Cavern_of_Corrosion_Path_of_Elixir_Seekers": "Artefactos: HP y SPD (Senda de los elixires)",
|
||||
"Cavern_of_Corrosion_Path_of_Darkness": "Artefactos: Persecución y Dot (Senda de la oscuridad)",
|
||||
"Cavern_of_Corrosion_Path_of_Dreamdive": "Artefactos: Debuff y Efecto de Ruptura (Senda de los sueños)",
|
||||
"Cavern_of_Corrosion_Path_of_Cavalier": "Artefactos: Ultrarruptura y Adicional de Definitiva (Caverna de la corrosión: Senda del caballero)"
|
||||
"Cavern_of_Corrosion_Path_of_Cavalier": "Artefactos: Ultrarruptura y Adicional de Definitiva (Caverna de la corrosión: Senda del caballero) (Senda del caballero)"
|
||||
},
|
||||
"NameAtDoubleCalyx": {
|
||||
"name": "En los eventos de x2 de Cáliz",
|
||||
@ -329,7 +329,7 @@
|
||||
"Cavern_of_Corrosion_Path_of_Elixir_Seekers": "Artefactos: HP y SPD (Senda de los elixires)",
|
||||
"Cavern_of_Corrosion_Path_of_Darkness": "Artefactos: Persecución y Dot (Senda de la oscuridad)",
|
||||
"Cavern_of_Corrosion_Path_of_Dreamdive": "Artefactos: Debuff y Efecto de Ruptura (Senda de los sueños)",
|
||||
"Cavern_of_Corrosion_Path_of_Cavalier": "Artefactos: Ultrarruptura y Adicional de Definitiva (Caverna de la corrosión: Senda del caballero)"
|
||||
"Cavern_of_Corrosion_Path_of_Cavalier": "Artefactos: Ultrarruptura y Adicional de Definitiva (Caverna de la corrosión: Senda del caballero) (Senda del caballero)"
|
||||
},
|
||||
"Team": {
|
||||
"name": "Equipo de mazmorra",
|
||||
@ -403,13 +403,15 @@
|
||||
"Himeko": "Himeko",
|
||||
"Hook": "Hook",
|
||||
"Huohuo": "Huohuo",
|
||||
"Jade": "Jade",
|
||||
"JingYuan": "Jing Yuan",
|
||||
"Jingliu": "Jingliu",
|
||||
"Kafka": "Kafka",
|
||||
"Luka": "Luka",
|
||||
"Luocha": "Luocha",
|
||||
"Lynx": "Lynx",
|
||||
"March7th": "Siete de Marzo",
|
||||
"March7thPreservation": "Siete de Marzo: Conservación",
|
||||
"March7thTheHunt": "Siete de Marzo: Cacería",
|
||||
"Misha": "Misha",
|
||||
"Natasha": "Natasha",
|
||||
"Pela": "Pela",
|
||||
@ -430,7 +432,8 @@
|
||||
"Welt": "Welt",
|
||||
"Xueyi": "Xueyi",
|
||||
"Yanqing": "Yanqing",
|
||||
"Yukong": "Yukong"
|
||||
"Yukong": "Yukong",
|
||||
"Yunli": "Yunli"
|
||||
}
|
||||
},
|
||||
"DungeonStorage": {
|
||||
@ -555,11 +558,11 @@
|
||||
"help": ""
|
||||
},
|
||||
"Item_IPC_Work_Permit": {
|
||||
"name": "Ascension: Físico (Boothill / Robin)",
|
||||
"name": "Ascension: Físico (Boothill / Robin / Yunli)",
|
||||
"help": ""
|
||||
},
|
||||
"Item_Raging_Heart": {
|
||||
"name": "Ascension: Fuego (Luciérnaga / Gallagher)",
|
||||
"name": "Ascension: Fuego (Luciérnaga / Gallagher / Jiaoqiu)",
|
||||
"help": ""
|
||||
},
|
||||
"Item_Dream_Fridge": {
|
||||
@ -647,7 +650,7 @@
|
||||
"help": ""
|
||||
},
|
||||
"Item_Lost_Echo_of_the_Shared_Wish": {
|
||||
"name": "Ecos de la guerra: Tributo del sueño ceniciento (Colonipenal)",
|
||||
"name": "Tributo del sueño ceniciento (Colonipenal)",
|
||||
"help": ""
|
||||
},
|
||||
"Item_Squirming_Core": {
|
||||
@ -695,7 +698,7 @@
|
||||
"Echo_of_War_End_of_the_Eternal_Freeze": "El fin del Hielo Eterno (Jarilo-VI)",
|
||||
"Echo_of_War_Divine_Seed": "Semilla divina (El Luofu de Xianzhou)",
|
||||
"Echo_of_War_Borehole_Planet_Old_Crater": "Cráter del planeta devorado (Estación Espacial Herta)",
|
||||
"Echo_of_War_Salutations_of_Ashen_Dreams": "Ecos de la guerra: Tributo del sueño ceniciento (Colonipenal)"
|
||||
"Echo_of_War_Salutations_of_Ashen_Dreams": "Tributo del sueño ceniciento (Colonipenal)"
|
||||
},
|
||||
"Team": {
|
||||
"name": "Equipo de mazmorra",
|
||||
|
@ -263,10 +263,10 @@
|
||||
"Calyx_Crimson_Nihility_Luofu_AlchemyCommission": "軌跡素材:虚無(丹鼎司)",
|
||||
"Stagnant_Shadow_Spike": "キャラクター昇格素材:物理(ナターシャ / クラーラ / ルカ / 素裳)",
|
||||
"Stagnant_Shadow_Perdition": "キャラクター昇格素材:物理(寒鴉 / アルジェンティ)",
|
||||
"Stagnant_Shadow_Duty": "キャラクター昇格素材:物理(ブートヒル / ロビン)",
|
||||
"Stagnant_Shadow_Duty": "キャラクター昇格素材:物理(ブートヒル / ロビン / 雲璃)",
|
||||
"Stagnant_Shadow_Blaze": "キャラクター昇格素材:炎(姫子 / アスター / フック)",
|
||||
"Stagnant_Shadow_Scorch": "キャラクター昇格素材:炎(桂乃芬 / トパーズ&カブ)",
|
||||
"Stagnant_Shadow_Ire": "キャラクター昇格素材:炎(ホタル / ギャラガー)",
|
||||
"Stagnant_Shadow_Ire": "キャラクター昇格素材:炎(ホタル / ギャラガー / 椒丘)",
|
||||
"Stagnant_Shadow_Rime": "キャラクター昇格素材:氷(三月なのか / ヘルタ / ジェパード / ペラ)",
|
||||
"Stagnant_Shadow_Icicle": "キャラクター昇格素材:氷(彦卿 / 鏡流 / ルアン・メェイ)",
|
||||
"Stagnant_Shadow_Nectar": "キャラクター昇格素材:氷(ミーシャ)",
|
||||
@ -403,13 +403,15 @@
|
||||
"Himeko": "姫子",
|
||||
"Hook": "フック",
|
||||
"Huohuo": "フォフォ",
|
||||
"Jade": "ジェイド",
|
||||
"JingYuan": "景元",
|
||||
"Jingliu": "鏡流",
|
||||
"Kafka": "カフカ",
|
||||
"Luka": "ルカ",
|
||||
"Luocha": "羅刹",
|
||||
"Lynx": "リンクス",
|
||||
"March7th": "三月なのか",
|
||||
"March7thPreservation": "三月なのか・存護",
|
||||
"March7thTheHunt": "三月なのか・巡狩",
|
||||
"Misha": "ミーシャ",
|
||||
"Natasha": "ナターシャ",
|
||||
"Pela": "ペラ",
|
||||
@ -430,7 +432,8 @@
|
||||
"Welt": "ヴェルト",
|
||||
"Xueyi": "雪衣",
|
||||
"Yanqing": "彦卿",
|
||||
"Yukong": "御空"
|
||||
"Yukong": "御空",
|
||||
"Yunli": "雲璃"
|
||||
}
|
||||
},
|
||||
"DungeonStorage": {
|
||||
@ -555,11 +558,11 @@
|
||||
"help": ""
|
||||
},
|
||||
"Item_IPC_Work_Permit": {
|
||||
"name": "キャラクター昇格素材:物理(ブートヒル / ロビン)",
|
||||
"name": "キャラクター昇格素材:物理(ブートヒル / ロビン / 雲璃)",
|
||||
"help": ""
|
||||
},
|
||||
"Item_Raging_Heart": {
|
||||
"name": "キャラクター昇格素材:炎(ホタル / ギャラガー)",
|
||||
"name": "キャラクター昇格素材:炎(ホタル / ギャラガー / 椒丘)",
|
||||
"help": ""
|
||||
},
|
||||
"Item_Dream_Fridge": {
|
||||
|
@ -263,10 +263,10 @@
|
||||
"Calyx_Crimson_Nihility_Luofu_AlchemyCommission": "行迹材料:虚无(丹鼎司)",
|
||||
"Stagnant_Shadow_Spike": "角色晋阶材料:物理(娜塔莎 / 克拉拉 / 卢卡 / 素裳)",
|
||||
"Stagnant_Shadow_Perdition": "角色晋阶材料:物理(寒鸦 / 银枝)",
|
||||
"Stagnant_Shadow_Duty": "角色晋阶材料:物理(波提欧 / 知更鸟)",
|
||||
"Stagnant_Shadow_Duty": "角色晋阶材料:物理(波提欧 / 知更鸟 / 云璃)",
|
||||
"Stagnant_Shadow_Blaze": "角色晋阶材料:火(姬子 / 艾丝妲 / 虎克)",
|
||||
"Stagnant_Shadow_Scorch": "角色晋阶材料:火(桂乃芬 / 托帕&账账)",
|
||||
"Stagnant_Shadow_Ire": "角色晋阶材料:火(流萤 / 加拉赫)",
|
||||
"Stagnant_Shadow_Ire": "角色晋阶材料:火(流萤 / 加拉赫 / 椒丘)",
|
||||
"Stagnant_Shadow_Rime": "角色晋阶材料:冰(三月七 / 黑塔 / 杰帕德 / 佩拉)",
|
||||
"Stagnant_Shadow_Icicle": "角色晋阶材料:冰(彦卿 / 镜流 / 阮•梅)",
|
||||
"Stagnant_Shadow_Nectar": "角色晋阶材料:冰(米沙)",
|
||||
@ -403,13 +403,15 @@
|
||||
"Himeko": "姬子",
|
||||
"Hook": "虎克",
|
||||
"Huohuo": "藿藿",
|
||||
"Jade": "翡翠",
|
||||
"JingYuan": "景元",
|
||||
"Jingliu": "镜流",
|
||||
"Kafka": "卡芙卡",
|
||||
"Luka": "卢卡",
|
||||
"Luocha": "罗刹",
|
||||
"Lynx": "玲可",
|
||||
"March7th": "三月七",
|
||||
"March7thPreservation": "三月七•存护",
|
||||
"March7thTheHunt": "三月七•巡猎",
|
||||
"Misha": "米沙",
|
||||
"Natasha": "娜塔莎",
|
||||
"Pela": "佩拉",
|
||||
@ -430,7 +432,8 @@
|
||||
"Welt": "瓦尔特",
|
||||
"Xueyi": "雪衣",
|
||||
"Yanqing": "彦卿",
|
||||
"Yukong": "驭空"
|
||||
"Yukong": "驭空",
|
||||
"Yunli": "云璃"
|
||||
}
|
||||
},
|
||||
"DungeonStorage": {
|
||||
@ -555,11 +558,11 @@
|
||||
"help": ""
|
||||
},
|
||||
"Item_IPC_Work_Permit": {
|
||||
"name": "角色晋阶材料:物理(波提欧 / 知更鸟)",
|
||||
"name": "角色晋阶材料:物理(波提欧 / 知更鸟 / 云璃)",
|
||||
"help": ""
|
||||
},
|
||||
"Item_Raging_Heart": {
|
||||
"name": "角色晋阶材料:火(流萤 / 加拉赫)",
|
||||
"name": "角色晋阶材料:火(流萤 / 加拉赫 / 椒丘)",
|
||||
"help": ""
|
||||
},
|
||||
"Item_Dream_Fridge": {
|
||||
|
@ -263,10 +263,10 @@
|
||||
"Calyx_Crimson_Nihility_Luofu_AlchemyCommission": "行跡材料:虛無(丹鼎司)",
|
||||
"Stagnant_Shadow_Spike": "角色晉階材料:物理(娜塔莎 / 克拉拉 / 盧卡 / 素裳)",
|
||||
"Stagnant_Shadow_Perdition": "角色晉階材料:物理(寒鴉 / 銀枝)",
|
||||
"Stagnant_Shadow_Duty": "角色晉階材料:物理(波提歐 / 知更鳥)",
|
||||
"Stagnant_Shadow_Duty": "角色晉階材料:物理(波提歐 / 知更鳥 / 雲璃)",
|
||||
"Stagnant_Shadow_Blaze": "角色晉階材料:火(姬子 / 艾絲妲 / 虎克)",
|
||||
"Stagnant_Shadow_Scorch": "角色晉階材料:火(桂乃芬 / 托帕&帳帳)",
|
||||
"Stagnant_Shadow_Ire": "角色晉階材料:火(流螢 / 加拉赫)",
|
||||
"Stagnant_Shadow_Ire": "角色晉階材料:火(流螢 / 加拉赫 / 椒丘)",
|
||||
"Stagnant_Shadow_Rime": "角色晉階材料:冰(三月七 / 黑塔 / 傑帕德 / 佩拉)",
|
||||
"Stagnant_Shadow_Icicle": "角色晉階材料:冰(彥卿 / 鏡流 / 阮•梅)",
|
||||
"Stagnant_Shadow_Nectar": "角色晉階材料:冰(米沙)",
|
||||
@ -403,13 +403,15 @@
|
||||
"Himeko": "姬子",
|
||||
"Hook": "虎克",
|
||||
"Huohuo": "藿藿",
|
||||
"Jade": "翡翠",
|
||||
"JingYuan": "景元",
|
||||
"Jingliu": "鏡流",
|
||||
"Kafka": "卡芙卡",
|
||||
"Luka": "盧卡",
|
||||
"Luocha": "羅剎",
|
||||
"Lynx": "玲可",
|
||||
"March7th": "三月七",
|
||||
"March7thPreservation": "三月七•存護",
|
||||
"March7thTheHunt": "三月七•巡獵",
|
||||
"Misha": "米沙",
|
||||
"Natasha": "娜塔莎",
|
||||
"Pela": "佩拉",
|
||||
@ -430,7 +432,8 @@
|
||||
"Welt": "瓦爾特",
|
||||
"Xueyi": "雪衣",
|
||||
"Yanqing": "彥卿",
|
||||
"Yukong": "馭空"
|
||||
"Yukong": "馭空",
|
||||
"Yunli": "雲璃"
|
||||
}
|
||||
},
|
||||
"DungeonStorage": {
|
||||
@ -555,11 +558,11 @@
|
||||
"help": ""
|
||||
},
|
||||
"Item_IPC_Work_Permit": {
|
||||
"name": "角色晉階材料:物理(波提歐 / 知更鳥)",
|
||||
"name": "角色晉階材料:物理(波提歐 / 知更鳥 / 雲璃)",
|
||||
"help": ""
|
||||
},
|
||||
"Item_Raging_Heart": {
|
||||
"name": "角色晉階材料:火(流螢 / 加拉赫)",
|
||||
"name": "角色晉階材料:火(流螢 / 加拉赫 / 椒丘)",
|
||||
"help": ""
|
||||
},
|
||||
"Item_Dream_Fridge": {
|
||||
|
@ -23,7 +23,7 @@ DICT_SORTED_RANGES = {
|
||||
Boothill,
|
||||
Yukong,
|
||||
TopazNumby,
|
||||
March7th,
|
||||
March7thPreservation,
|
||||
Bronya,
|
||||
Asta,
|
||||
Pela,
|
||||
|
@ -228,8 +228,17 @@ Jade = CharacterList(
|
||||
jp='ジェイド',
|
||||
es='Jade',
|
||||
)
|
||||
JingYuan = CharacterList(
|
||||
Jiaoqiu = CharacterList(
|
||||
id=26,
|
||||
name='Jiaoqiu',
|
||||
cn='椒丘',
|
||||
cht='椒丘',
|
||||
en='Jiaoqiu',
|
||||
jp='椒丘',
|
||||
es='Jiaoqiu',
|
||||
)
|
||||
JingYuan = CharacterList(
|
||||
id=27,
|
||||
name='JingYuan',
|
||||
cn='景元',
|
||||
cht='景元',
|
||||
@ -238,7 +247,7 @@ JingYuan = CharacterList(
|
||||
es='Jing Yuan',
|
||||
)
|
||||
Jingliu = CharacterList(
|
||||
id=27,
|
||||
id=28,
|
||||
name='Jingliu',
|
||||
cn='镜流',
|
||||
cht='鏡流',
|
||||
@ -247,7 +256,7 @@ Jingliu = CharacterList(
|
||||
es='Jingliu',
|
||||
)
|
||||
Kafka = CharacterList(
|
||||
id=28,
|
||||
id=29,
|
||||
name='Kafka',
|
||||
cn='卡芙卡',
|
||||
cht='卡芙卡',
|
||||
@ -256,7 +265,7 @@ Kafka = CharacterList(
|
||||
es='Kafka',
|
||||
)
|
||||
Luka = CharacterList(
|
||||
id=29,
|
||||
id=30,
|
||||
name='Luka',
|
||||
cn='卢卡',
|
||||
cht='盧卡',
|
||||
@ -265,7 +274,7 @@ Luka = CharacterList(
|
||||
es='Luka',
|
||||
)
|
||||
Luocha = CharacterList(
|
||||
id=30,
|
||||
id=31,
|
||||
name='Luocha',
|
||||
cn='罗刹',
|
||||
cht='羅剎',
|
||||
@ -274,7 +283,7 @@ Luocha = CharacterList(
|
||||
es='Luocha',
|
||||
)
|
||||
Lynx = CharacterList(
|
||||
id=31,
|
||||
id=32,
|
||||
name='Lynx',
|
||||
cn='玲可',
|
||||
cht='玲可',
|
||||
@ -282,17 +291,26 @@ Lynx = CharacterList(
|
||||
jp='リンクス',
|
||||
es='Lynx',
|
||||
)
|
||||
March7th = CharacterList(
|
||||
id=32,
|
||||
name='March7th',
|
||||
cn='三月七',
|
||||
cht='三月七',
|
||||
en='March 7th',
|
||||
jp='三月なのか',
|
||||
es='Siete de Marzo',
|
||||
March7thPreservation = CharacterList(
|
||||
id=33,
|
||||
name='March7thPreservation',
|
||||
cn='三月七•存护',
|
||||
cht='三月七•存護',
|
||||
en='March 7th: Preservation',
|
||||
jp='三月なのか・存護',
|
||||
es='Siete de Marzo: Conservación',
|
||||
)
|
||||
March7thTheHunt = CharacterList(
|
||||
id=34,
|
||||
name='March7thTheHunt',
|
||||
cn='三月七•巡猎',
|
||||
cht='三月七•巡獵',
|
||||
en='March 7th: The Hunt',
|
||||
jp='三月なのか・巡狩',
|
||||
es='Siete de Marzo: Cacería',
|
||||
)
|
||||
Misha = CharacterList(
|
||||
id=33,
|
||||
id=35,
|
||||
name='Misha',
|
||||
cn='米沙',
|
||||
cht='米沙',
|
||||
@ -301,7 +319,7 @@ Misha = CharacterList(
|
||||
es='Misha',
|
||||
)
|
||||
Natasha = CharacterList(
|
||||
id=34,
|
||||
id=36,
|
||||
name='Natasha',
|
||||
cn='娜塔莎',
|
||||
cht='娜塔莎',
|
||||
@ -310,7 +328,7 @@ Natasha = CharacterList(
|
||||
es='Natasha',
|
||||
)
|
||||
Pela = CharacterList(
|
||||
id=35,
|
||||
id=37,
|
||||
name='Pela',
|
||||
cn='佩拉',
|
||||
cht='佩拉',
|
||||
@ -319,7 +337,7 @@ Pela = CharacterList(
|
||||
es='Pela',
|
||||
)
|
||||
Qingque = CharacterList(
|
||||
id=36,
|
||||
id=38,
|
||||
name='Qingque',
|
||||
cn='青雀',
|
||||
cht='青雀',
|
||||
@ -328,7 +346,7 @@ Qingque = CharacterList(
|
||||
es='Qingque',
|
||||
)
|
||||
Robin = CharacterList(
|
||||
id=37,
|
||||
id=39,
|
||||
name='Robin',
|
||||
cn='知更鸟',
|
||||
cht='知更鳥',
|
||||
@ -337,7 +355,7 @@ Robin = CharacterList(
|
||||
es='Robin',
|
||||
)
|
||||
RuanMei = CharacterList(
|
||||
id=38,
|
||||
id=40,
|
||||
name='RuanMei',
|
||||
cn='阮•梅',
|
||||
cht='阮•梅',
|
||||
@ -346,7 +364,7 @@ RuanMei = CharacterList(
|
||||
es='Ruan Mei',
|
||||
)
|
||||
Sampo = CharacterList(
|
||||
id=39,
|
||||
id=41,
|
||||
name='Sampo',
|
||||
cn='桑博',
|
||||
cht='桑博',
|
||||
@ -355,7 +373,7 @@ Sampo = CharacterList(
|
||||
es='Sampo',
|
||||
)
|
||||
Seele = CharacterList(
|
||||
id=40,
|
||||
id=42,
|
||||
name='Seele',
|
||||
cn='希儿',
|
||||
cht='希兒',
|
||||
@ -364,7 +382,7 @@ Seele = CharacterList(
|
||||
es='Seele',
|
||||
)
|
||||
Serval = CharacterList(
|
||||
id=41,
|
||||
id=43,
|
||||
name='Serval',
|
||||
cn='希露瓦',
|
||||
cht='希露瓦',
|
||||
@ -373,7 +391,7 @@ Serval = CharacterList(
|
||||
es='Serval',
|
||||
)
|
||||
SilverWolf = CharacterList(
|
||||
id=42,
|
||||
id=44,
|
||||
name='SilverWolf',
|
||||
cn='银狼',
|
||||
cht='銀狼',
|
||||
@ -382,7 +400,7 @@ SilverWolf = CharacterList(
|
||||
es='Silver Wolf',
|
||||
)
|
||||
Sparkle = CharacterList(
|
||||
id=43,
|
||||
id=45,
|
||||
name='Sparkle',
|
||||
cn='花火',
|
||||
cht='花火',
|
||||
@ -391,7 +409,7 @@ Sparkle = CharacterList(
|
||||
es='Sparkle',
|
||||
)
|
||||
Sushang = CharacterList(
|
||||
id=44,
|
||||
id=46,
|
||||
name='Sushang',
|
||||
cn='素裳',
|
||||
cht='素裳',
|
||||
@ -400,7 +418,7 @@ Sushang = CharacterList(
|
||||
es='Sushang',
|
||||
)
|
||||
Tingyun = CharacterList(
|
||||
id=45,
|
||||
id=47,
|
||||
name='Tingyun',
|
||||
cn='停云',
|
||||
cht='停雲',
|
||||
@ -409,7 +427,7 @@ Tingyun = CharacterList(
|
||||
es='Tingyun',
|
||||
)
|
||||
TopazNumby = CharacterList(
|
||||
id=46,
|
||||
id=48,
|
||||
name='TopazNumby',
|
||||
cn='托帕&账账',
|
||||
cht='托帕&帳帳',
|
||||
@ -418,7 +436,7 @@ TopazNumby = CharacterList(
|
||||
es='Topaz y Conti',
|
||||
)
|
||||
TrailblazerDestruction = CharacterList(
|
||||
id=47,
|
||||
id=49,
|
||||
name='TrailblazerDestruction',
|
||||
cn='Trailblazer•毁灭',
|
||||
cht='Trailblazer•毀滅',
|
||||
@ -427,7 +445,7 @@ TrailblazerDestruction = CharacterList(
|
||||
es='Trailblazer: Destrucción',
|
||||
)
|
||||
TrailblazerHarmony = CharacterList(
|
||||
id=48,
|
||||
id=50,
|
||||
name='TrailblazerHarmony',
|
||||
cn='Trailblazer•同谐',
|
||||
cht='Trailblazer•同諧',
|
||||
@ -436,7 +454,7 @@ TrailblazerHarmony = CharacterList(
|
||||
es='Trailblazer: Armonía',
|
||||
)
|
||||
TrailblazerPreservation = CharacterList(
|
||||
id=49,
|
||||
id=51,
|
||||
name='TrailblazerPreservation',
|
||||
cn='Trailblazer•存护',
|
||||
cht='Trailblazer•存護',
|
||||
@ -445,7 +463,7 @@ TrailblazerPreservation = CharacterList(
|
||||
es='Trailblazer: Conservación',
|
||||
)
|
||||
Welt = CharacterList(
|
||||
id=50,
|
||||
id=52,
|
||||
name='Welt',
|
||||
cn='瓦尔特',
|
||||
cht='瓦爾特',
|
||||
@ -454,7 +472,7 @@ Welt = CharacterList(
|
||||
es='Welt',
|
||||
)
|
||||
Xueyi = CharacterList(
|
||||
id=51,
|
||||
id=53,
|
||||
name='Xueyi',
|
||||
cn='雪衣',
|
||||
cht='雪衣',
|
||||
@ -463,7 +481,7 @@ Xueyi = CharacterList(
|
||||
es='Xueyi',
|
||||
)
|
||||
Yanqing = CharacterList(
|
||||
id=52,
|
||||
id=54,
|
||||
name='Yanqing',
|
||||
cn='彦卿',
|
||||
cht='彥卿',
|
||||
@ -472,7 +490,7 @@ Yanqing = CharacterList(
|
||||
es='Yanqing',
|
||||
)
|
||||
Yukong = CharacterList(
|
||||
id=53,
|
||||
id=55,
|
||||
name='Yukong',
|
||||
cn='驭空',
|
||||
cht='馭空',
|
||||
@ -480,3 +498,12 @@ Yukong = CharacterList(
|
||||
jp='御空',
|
||||
es='Yukong',
|
||||
)
|
||||
Yunli = CharacterList(
|
||||
id=56,
|
||||
name='Yunli',
|
||||
cn='云璃',
|
||||
cht='雲璃',
|
||||
en='Yunli',
|
||||
jp='雲璃',
|
||||
es='Yunli',
|
||||
)
|
||||
|
@ -13,7 +13,6 @@ CHARACTER_HEIGHT = {
|
||||
'Tingyun': 'Maid',
|
||||
'Sushang': 'Maid',
|
||||
'Seele': 'Maid',
|
||||
'March7th': 'Maid',
|
||||
'Jingliu': 'Maid',
|
||||
'Bronya': 'Maid',
|
||||
'Asta': 'Maid',
|
||||
|
@ -18,7 +18,7 @@ COMBAT_SUPPORT_LIST = ButtonWrapper(
|
||||
share=Button(
|
||||
file='./assets/share/combat/support/COMBAT_SUPPORT_LIST.png',
|
||||
area=(39, 645, 65, 669),
|
||||
search=(19, 625, 85, 689),
|
||||
search=(32, 643, 72, 683),
|
||||
color=(204, 206, 206),
|
||||
button=(39, 645, 65, 669),
|
||||
),
|
||||
@ -27,10 +27,10 @@ COMBAT_SUPPORT_LIST_GRID = ButtonWrapper(
|
||||
name='COMBAT_SUPPORT_LIST_GRID',
|
||||
share=Button(
|
||||
file='./assets/share/combat/support/COMBAT_SUPPORT_LIST_GRID.png',
|
||||
area=(36, 148, 128, 629),
|
||||
search=(16, 128, 148, 649),
|
||||
color=(135, 124, 133),
|
||||
button=(36, 148, 128, 629),
|
||||
area=(26, 109, 131, 634),
|
||||
search=(6, 89, 151, 654),
|
||||
color=(101, 87, 99),
|
||||
button=(26, 109, 131, 634),
|
||||
),
|
||||
)
|
||||
COMBAT_SUPPORT_LIST_SCROLL = ButtonWrapper(
|
||||
|
@ -17,10 +17,10 @@ DIVERGENT_UNIVERSE_SAVE_UNAVAILABLE = ButtonWrapper(
|
||||
name='DIVERGENT_UNIVERSE_SAVE_UNAVAILABLE',
|
||||
share=Button(
|
||||
file='./assets/share/dungeon/ui_rogue/DIVERGENT_UNIVERSE_SAVE_UNAVAILABLE.png',
|
||||
area=(437, 316, 1169, 378),
|
||||
search=(417, 296, 1189, 398),
|
||||
color=(197, 105, 95),
|
||||
button=(437, 316, 1169, 378),
|
||||
area=(592, 174, 636, 331),
|
||||
search=(572, 154, 656, 351),
|
||||
color=(140, 82, 83),
|
||||
button=(592, 174, 636, 331),
|
||||
),
|
||||
)
|
||||
LAST_TELEPORT = ButtonWrapper(
|
||||
@ -47,10 +47,10 @@ SURVIVAL_INDEX_OE_LOADED = ButtonWrapper(
|
||||
name='SURVIVAL_INDEX_OE_LOADED',
|
||||
share=Button(
|
||||
file='./assets/share/dungeon/ui_rogue/SURVIVAL_INDEX_OE_LOADED.png',
|
||||
area=(473, 207, 498, 232),
|
||||
search=(468, 193, 503, 283),
|
||||
color=(185, 135, 74),
|
||||
button=(473, 207, 498, 232),
|
||||
area=(455, 208, 485, 338),
|
||||
search=(460, 238, 480, 268),
|
||||
color=(130, 116, 91),
|
||||
button=(455, 208, 485, 338),
|
||||
),
|
||||
)
|
||||
SURVIVAL_INDEX_SU_LOADED = ButtonWrapper(
|
||||
|
@ -164,7 +164,7 @@ Calyx_Crimson_The_Hunt_Penacony_SoulGladScorchsandAuditionVenue = DungeonList(
|
||||
cht='巡獵之蕾•擬造花萼(赤)',
|
||||
en='Calyx (Crimson): Bud of The Hunt',
|
||||
jp='疑似花萼(赤)・巡狩の蕾',
|
||||
es='Cáliz (carmesí): Flor de la Cacería',
|
||||
es='Flor de la Cacería',
|
||||
dungeon_id=1022,
|
||||
plane_id=2033101,
|
||||
)
|
||||
@ -208,7 +208,7 @@ Calyx_Crimson_Erudition_Penacony_PenaconyGrandTheater = DungeonList(
|
||||
cht='智識之蕾•擬造花萼(赤)',
|
||||
en='Calyx (Crimson): Bud of Erudition',
|
||||
jp='疑似花萼(赤)・知恵の蕾',
|
||||
es='Cáliz (carmesí): Flor de la Erudición',
|
||||
es='Flor de la Erudición',
|
||||
dungeon_id=1023,
|
||||
plane_id=2033201,
|
||||
)
|
||||
@ -450,7 +450,7 @@ Stagnant_Shadow_Duty = DungeonList(
|
||||
cht='職司之形•凝滯虛影',
|
||||
en='Stagnant Shadow: Shape of Duty',
|
||||
jp='凝結虚影・職掌の形',
|
||||
es='Sombra paralizada: Forma del deber',
|
||||
es='Forma del deber',
|
||||
dungeon_id=1118,
|
||||
plane_id=2032101,
|
||||
)
|
||||
@ -560,7 +560,7 @@ Cavern_of_Corrosion_Path_of_Cavalier = DungeonList(
|
||||
cht='勇騎之徑•侵蝕隧洞',
|
||||
en='Cavern of Corrosion: Path of Cavalier',
|
||||
jp='侵蝕トンネル・勇騎の路',
|
||||
es='Caverna de la corrosión: Senda del caballero',
|
||||
es='Senda del caballero',
|
||||
dungeon_id=1210,
|
||||
plane_id=2033201,
|
||||
)
|
||||
@ -615,7 +615,7 @@ Echo_of_War_Salutations_of_Ashen_Dreams = DungeonList(
|
||||
cht='塵夢的讚禮•歷戰餘響',
|
||||
en='Echo of War: Salutations of Ashen Dreams',
|
||||
jp='歴戦余韻・現世の夢の礼賛',
|
||||
es='Ecos de la guerra: Tributo del sueño ceniciento',
|
||||
es='Tributo del sueño ceniciento',
|
||||
dungeon_id=1305,
|
||||
plane_id=2033201,
|
||||
)
|
||||
@ -714,7 +714,7 @@ Divergent_Universe_Eternal_Comedy = DungeonList(
|
||||
cht='永恆笑劇•差分宇宙',
|
||||
en='Divergent Universe: Eternal Comedy',
|
||||
jp='階差宇宙・永遠の喜劇',
|
||||
es='Universo Diferenciado: Comedia eterna',
|
||||
es='Comedia eterna',
|
||||
dungeon_id=300,
|
||||
plane_id=0,
|
||||
)
|
||||
@ -725,7 +725,7 @@ Divergent_Universe_To_Sweet_Dreams = DungeonList(
|
||||
cht='伴你入眠•差分宇宙',
|
||||
en='Divergent Universe: To Sweet Dreams',
|
||||
jp='階差宇宙・寄り添い眠る',
|
||||
es='Hasta los dulces sueños: Universo Diferenciado',
|
||||
es='Hasta los dulces sueños',
|
||||
dungeon_id=290,
|
||||
plane_id=0,
|
||||
)
|
||||
@ -736,7 +736,7 @@ Divergent_Universe_Pouring_Blades = DungeonList(
|
||||
cht='天劍如雨•差分宇宙',
|
||||
en='Divergent Universe: Pouring Blades',
|
||||
jp='階差宇宙・剣の雨',
|
||||
es='Lluvia de espadas: Universo Diferenciado',
|
||||
es='Lluvia de espadas',
|
||||
dungeon_id=280,
|
||||
plane_id=0,
|
||||
)
|
||||
@ -747,7 +747,7 @@ Divergent_Universe_Fruit_of_Evil = DungeonList(
|
||||
cht='孽果盤生•差分宇宙',
|
||||
en='Divergent Universe: Fruit of Evil',
|
||||
jp='階差宇宙・渦巻く罪',
|
||||
es='Fruta del desastre: Universo Diferenciado',
|
||||
es='Fruta del desastre',
|
||||
dungeon_id=270,
|
||||
plane_id=0,
|
||||
)
|
||||
@ -758,7 +758,7 @@ Divergent_Universe_Permafrost = DungeonList(
|
||||
cht='百年凍土•差分宇宙',
|
||||
en='Divergent Universe: Permafrost',
|
||||
jp='階差宇宙・永久凍土',
|
||||
es='Permafrost: Universo Diferenciado',
|
||||
es='Permafrost',
|
||||
dungeon_id=260,
|
||||
plane_id=0,
|
||||
)
|
||||
@ -769,7 +769,7 @@ Divergent_Universe_Gentle_Words = DungeonList(
|
||||
cht='溫柔話語•差分宇宙',
|
||||
en='Divergent Universe: Gentle Words',
|
||||
jp='階差宇宙・優しい言葉',
|
||||
es='Palabras amables: Universo Diferenciado',
|
||||
es='Palabras amables',
|
||||
dungeon_id=250,
|
||||
plane_id=0,
|
||||
)
|
||||
@ -780,7 +780,7 @@ Divergent_Universe_Smelted_Heart = DungeonList(
|
||||
cht='浴火鋼心•差分宇宙',
|
||||
en='Divergent Universe: Smelted Heart',
|
||||
jp='階差宇宙・鋼の意志',
|
||||
es='Corazón de fundición: Universo Diferenciado',
|
||||
es='Corazón de fundición',
|
||||
dungeon_id=240,
|
||||
plane_id=0,
|
||||
)
|
||||
@ -791,7 +791,7 @@ Divergent_Universe_Untoppled_Walls = DungeonList(
|
||||
cht='堅城不倒•差分宇宙',
|
||||
en='Divergent Universe: Untoppled Walls',
|
||||
jp='階差宇宙・不動の砦',
|
||||
es='Muros inquebrantables: Universo Diferenciado',
|
||||
es='Muros inquebrantables',
|
||||
dungeon_id=230,
|
||||
plane_id=0,
|
||||
)
|
||||
|
@ -150,18 +150,18 @@ Stagnant_Shadow_Roast = DungeonDetailed(
|
||||
Stagnant_Shadow_Ire = DungeonDetailed(
|
||||
id=17,
|
||||
name='Stagnant_Shadow_Ire',
|
||||
cn='角色晋阶材料:火(流萤 / 加拉赫)',
|
||||
cht='角色晉階材料:火(流螢 / 加拉赫)',
|
||||
en='Ascension: Fire (Firefly / Gallagher)',
|
||||
jp='キャラクター昇格素材:炎(ホタル / ギャラガー)',
|
||||
es='Ascension: Fuego (Luciérnaga / Gallagher)',
|
||||
cn='角色晋阶材料:火(流萤 / 加拉赫 / 椒丘)',
|
||||
cht='角色晉階材料:火(流螢 / 加拉赫 / 椒丘)',
|
||||
en='Ascension: Fire (Firefly / Gallagher / Jiaoqiu)',
|
||||
jp='キャラクター昇格素材:炎(ホタル / ギャラガー / 椒丘)',
|
||||
es='Ascension: Fuego (Luciérnaga / Gallagher / Jiaoqiu)',
|
||||
)
|
||||
Stagnant_Shadow_Duty = DungeonDetailed(
|
||||
id=18,
|
||||
name='Stagnant_Shadow_Duty',
|
||||
cn='角色晋阶材料:物理(波提欧 / 知更鸟)',
|
||||
cht='角色晉階材料:物理(波提歐 / 知更鳥)',
|
||||
en='Ascension: Physical (Boothill / Robin)',
|
||||
jp='キャラクター昇格素材:物理(ブートヒル / ロビン)',
|
||||
es='Ascension: Físico (Boothill / Robin)',
|
||||
cn='角色晋阶材料:物理(波提欧 / 知更鸟 / 云璃)',
|
||||
cht='角色晉階材料:物理(波提歐 / 知更鳥 / 雲璃)',
|
||||
en='Ascension: Physical (Boothill / Robin / Yunli)',
|
||||
jp='キャラクター昇格素材:物理(ブートヒル / ロビン / 雲璃)',
|
||||
es='Ascension: Físico (Boothill / Robin / Yunli)',
|
||||
)
|
||||
|
@ -72,7 +72,7 @@ class XPath:
|
||||
悬浮窗及侧边栏元素
|
||||
"""
|
||||
# 悬浮窗
|
||||
FLOAT_WINDOW = '//*[@package="com.miHoYo.cloudgames.hkrpg" and @class="android.widget.ImageView"]'
|
||||
FLOAT_WINDOW = '//*[@package="com.miHoYo.cloudgames.hkrpg" and @class="android.widget.LinearLayout"]'
|
||||
# 退出按钮,返回登录页面
|
||||
FLOAT_EXIT = '//*[@resource-id="com.miHoYo.cloudgames.hkrpg:id/iv_exit"]'
|
||||
# 弹出侧边栏的 节点信息
|
||||
@ -159,6 +159,16 @@ class LoginAndroidCloud(ModuleBase):
|
||||
season_pass = int(res.group(1))
|
||||
else:
|
||||
season_pass = 0
|
||||
# 42 天
|
||||
# 5 小时
|
||||
if '天' in text:
|
||||
pass
|
||||
elif '小时' in text:
|
||||
season_pass = round(season_pass / 24, 2)
|
||||
elif '分钟' in text:
|
||||
season_pass = round(season_pass / 24 / 60, 3)
|
||||
else:
|
||||
logger.error(f'Unexpected season pass text: {text}')
|
||||
|
||||
text = self.xpath(XPath.REMAIN_PAID).text
|
||||
logger.info(f'Remain paid: {text}')
|
||||
|
@ -102,12 +102,12 @@ Rogue_DomainTransaction = MapPlane(
|
||||
world_id=-2,
|
||||
plane_id=7,
|
||||
)
|
||||
Penacony_RadiantFeldspar = MapPlane(
|
||||
Penacony_TheRadiantFeldspar = MapPlane(
|
||||
id=10,
|
||||
name='Penacony_RadiantFeldspar',
|
||||
name='Penacony_TheRadiantFeldspar',
|
||||
cn='晖长石号',
|
||||
cht='暉長石號',
|
||||
en='Radiant Feldspar',
|
||||
en='The Radiant Feldspar',
|
||||
jp='暉長石号',
|
||||
es='Feldespato Radiante',
|
||||
world_id=3,
|
||||
@ -454,8 +454,19 @@ Luofu_ScalegorgeWaterscape = MapPlane(
|
||||
world_id=2,
|
||||
plane_id=2023201,
|
||||
)
|
||||
Penacony_TheReverieReality = MapPlane(
|
||||
Luofu_TheShacklingPrison = MapPlane(
|
||||
id=42,
|
||||
name='Luofu_TheShacklingPrison',
|
||||
cn='幽囚狱',
|
||||
cht='幽囚獄',
|
||||
en='The Shackling Prison',
|
||||
jp='幽囚獄',
|
||||
es='Prisión de los encadenados',
|
||||
world_id=2,
|
||||
plane_id=2024101,
|
||||
)
|
||||
Penacony_TheReverieReality = MapPlane(
|
||||
id=43,
|
||||
name='Penacony_TheReverieReality',
|
||||
cn='「白日梦」酒店-现实',
|
||||
cht='「白日夢」飯店-現實',
|
||||
@ -466,7 +477,7 @@ Penacony_TheReverieReality = MapPlane(
|
||||
plane_id=1030501,
|
||||
)
|
||||
Penacony_GoldenHour = MapPlane(
|
||||
id=43,
|
||||
id=44,
|
||||
name='Penacony_GoldenHour',
|
||||
cn='黄金的时刻',
|
||||
cht='黃金的時刻',
|
||||
@ -477,7 +488,7 @@ Penacony_GoldenHour = MapPlane(
|
||||
plane_id=1030101,
|
||||
)
|
||||
Penacony_DreamEdge = MapPlane(
|
||||
id=44,
|
||||
id=45,
|
||||
name='Penacony_DreamEdge',
|
||||
cn='筑梦边境',
|
||||
cht='築夢邊境',
|
||||
@ -488,7 +499,7 @@ Penacony_DreamEdge = MapPlane(
|
||||
plane_id=2031301,
|
||||
)
|
||||
Penacony_AChildDream = MapPlane(
|
||||
id=45,
|
||||
id=46,
|
||||
name='Penacony_AChildDream',
|
||||
cn='稚子的梦',
|
||||
cht='稚子的夢',
|
||||
@ -499,7 +510,7 @@ Penacony_AChildDream = MapPlane(
|
||||
plane_id=2031201,
|
||||
)
|
||||
Penacony_TheReverieDreamscape = MapPlane(
|
||||
id=46,
|
||||
id=47,
|
||||
name='Penacony_TheReverieDreamscape',
|
||||
cn='「白日梦」酒店-梦境',
|
||||
cht='「白日夢」飯店-夢境',
|
||||
@ -510,7 +521,7 @@ Penacony_TheReverieDreamscape = MapPlane(
|
||||
plane_id=2031101,
|
||||
)
|
||||
Penacony_DewlightPavilion = MapPlane(
|
||||
id=47,
|
||||
id=48,
|
||||
name='Penacony_DewlightPavilion',
|
||||
cn='朝露公馆',
|
||||
cht='朝露公館',
|
||||
@ -521,7 +532,7 @@ Penacony_DewlightPavilion = MapPlane(
|
||||
plane_id=2032201,
|
||||
)
|
||||
Penacony_ClockStudiosThemePark = MapPlane(
|
||||
id=48,
|
||||
id=49,
|
||||
name='Penacony_ClockStudiosThemePark',
|
||||
cn='克劳克影视乐园',
|
||||
cht='克勞克影視樂園',
|
||||
@ -532,7 +543,7 @@ Penacony_ClockStudiosThemePark = MapPlane(
|
||||
plane_id=2032101,
|
||||
)
|
||||
Penacony_DreamfluxReef = MapPlane(
|
||||
id=49,
|
||||
id=50,
|
||||
name='Penacony_DreamfluxReef',
|
||||
cn='流梦礁',
|
||||
cht='流夢礁',
|
||||
@ -543,7 +554,7 @@ Penacony_DreamfluxReef = MapPlane(
|
||||
plane_id=1030401,
|
||||
)
|
||||
Penacony_SoulGladScorchsandAuditionVenue = MapPlane(
|
||||
id=50,
|
||||
id=51,
|
||||
name='Penacony_SoulGladScorchsandAuditionVenue',
|
||||
cn='苏乐达热砂海选会场',
|
||||
cht='蘇樂達熱砂海選會場',
|
||||
@ -554,7 +565,7 @@ Penacony_SoulGladScorchsandAuditionVenue = MapPlane(
|
||||
plane_id=2033101,
|
||||
)
|
||||
Penacony_PenaconyGrandTheater = MapPlane(
|
||||
id=51,
|
||||
id=52,
|
||||
name='Penacony_PenaconyGrandTheater',
|
||||
cn='匹诺康尼大剧院',
|
||||
cht='匹諾康尼大劇院',
|
||||
|
@ -20,7 +20,7 @@ class Ornament(OrnamentCombat):
|
||||
# Check save file before entering
|
||||
if self.image_color_count(
|
||||
DIVERGENT_UNIVERSE_SAVE_UNAVAILABLE,
|
||||
color=(195, 89, 79), threshold=221, count=1000,
|
||||
color=(140, 19, 26), threshold=221, count=1000,
|
||||
):
|
||||
logger.error(
|
||||
'Divergent Universe save unavailable, '
|
||||
|
@ -210,3 +210,39 @@ Fountain_of_Youth = RogueBonus(
|
||||
jp='不老の泉',
|
||||
es='Fuente de la juventud',
|
||||
)
|
||||
Reimbursement_Form = RogueBonus(
|
||||
id=24,
|
||||
name='Reimbursement_Form',
|
||||
cn='报销单',
|
||||
cht='報銷單',
|
||||
en='Reimbursement Form',
|
||||
jp='清算書',
|
||||
es='Formulario de reembolso',
|
||||
)
|
||||
Sea_of_Forgetfulness = RogueBonus(
|
||||
id=25,
|
||||
name='Sea_of_Forgetfulness',
|
||||
cn='遗忘海',
|
||||
cht='遺忘海',
|
||||
en='Sea of Forgetfulness',
|
||||
jp='忘却の海',
|
||||
es='Mar del olvido',
|
||||
)
|
||||
Phenomenal_Field = RogueBonus(
|
||||
id=26,
|
||||
name='Phenomenal_Field',
|
||||
cn='现象场',
|
||||
cht='現象場',
|
||||
en='Phenomenal Field',
|
||||
jp='現象の場',
|
||||
es='Campo fenomenal',
|
||||
)
|
||||
Lying_Cap = RogueBonus(
|
||||
id=27,
|
||||
name='Lying_Cap',
|
||||
cn='说谎帽',
|
||||
cht='說謊帽',
|
||||
en='Lying Cap',
|
||||
jp='ペテンハット',
|
||||
es='Sombrero mentiroso',
|
||||
)
|
||||
|
@ -835,7 +835,7 @@ Pick_Sal = RogueEventOption(
|
||||
id=93,
|
||||
name='Pick_Sal',
|
||||
cn='选择萨里。',
|
||||
cht='選擇薩里。',
|
||||
cht='選擇薩李。',
|
||||
en='Pick Sal.',
|
||||
jp='サリを選ぶ',
|
||||
es='Elige a Sal.',
|
||||
@ -862,7 +862,7 @@ Let_Sal_out = RogueEventOption(
|
||||
id=96,
|
||||
name='Let_Sal_out',
|
||||
cn='让萨里出来吧。',
|
||||
cht='讓薩里出來吧。',
|
||||
cht='讓薩李出來吧。',
|
||||
en='Let Sal out.',
|
||||
jp='サリに出てきてもらう',
|
||||
es='Deja salir a Sal.',
|
||||
@ -2319,8 +2319,8 @@ You_can_also_smash_the_cup = RogueEventOption(
|
||||
I_m_voting_for_Oswaldo_Schneider = RogueEventOption(
|
||||
id=258,
|
||||
name='I_m_voting_for_Oswaldo_Schneider',
|
||||
cn='我要为「奥施瓦尔多·施耐德」的竞选投票!',
|
||||
cht='我要為「奧施瓦爾多•施耐德」的競選投票!',
|
||||
cn='我要为「奥斯瓦尔多·施耐德」的竞选投票!',
|
||||
cht='我要為「奧斯瓦爾多•施耐德」的競選投票!',
|
||||
en='I\'m voting for "Oswaldo Schneider"!',
|
||||
jp='「オスワルド・シュナイダー」に投票する!',
|
||||
es='¡Voto por Oswaldo Schneider!',
|
||||
|
@ -217,7 +217,7 @@ Saleo_I = RogueEventTitle(
|
||||
id=22,
|
||||
name='Saleo_I',
|
||||
cn='萨里奥(其一)',
|
||||
cht='薩里奧(其一)',
|
||||
cht='薩李奧(其一)',
|
||||
en='Saleo (I)',
|
||||
jp='サリオ(その1)',
|
||||
es='Saleo (I)',
|
||||
@ -227,7 +227,7 @@ Sal_II = RogueEventTitle(
|
||||
id=23,
|
||||
name='Sal_II',
|
||||
cn='萨里(其二)',
|
||||
cht='薩里(其二)',
|
||||
cht='薩李(其二)',
|
||||
en='Sal (II)',
|
||||
jp='サリ(その2)',
|
||||
es='Sal (II)',
|
||||
@ -237,7 +237,7 @@ Leo_III = RogueEventTitle(
|
||||
id=24,
|
||||
name='Leo_III',
|
||||
cn='里奥(其三)',
|
||||
cht='里奧(其三)',
|
||||
cht='李奧(其三)',
|
||||
en='Leo (III)',
|
||||
jp='リオ(その3)',
|
||||
es='Leo (III)',
|
||||
@ -1119,7 +1119,7 @@ Insights_from_the_Universal_Dancer = RogueEventTitle(
|
||||
cn='寰宇舞者的启示',
|
||||
cht='寰宇舞者的啟示',
|
||||
en='Insights from the Universal Dancer',
|
||||
jp='世界の踊り手の啓示',
|
||||
jp='宇宙の踊り手の啓示',
|
||||
es='Reflexiones de la bailarina universal',
|
||||
option_ids=[323, 324],
|
||||
)
|
||||
|