Dev: Extract dungeons with plane_id

This commit is contained in:
LmeSzinc 2024-02-07 03:05:46 +08:00
parent 1e79353294
commit 39ac8831df
6 changed files with 361 additions and 124 deletions

View File

@ -1,7 +1,6 @@
import itertools
import os
import re
import typing as t
from collections import defaultdict
from functools import cache
from hashlib import md5
@ -13,19 +12,6 @@ from module.exception import ScriptError
from module.logger import logger
def dungeon_name(name: str) -> str:
name = text_to_variable(name)
name = re.sub('Bud_of_(Memories|Aether|Treasures)', r'Calyx_Golden_\1', name)
name = re.sub('Bud_of_(.*)', r'Calyx_Crimson_\1', name).replace('Calyx_Crimson_Calyx_Crimson_', 'Calyx_Crimson_')
name = re.sub('Shape_of_(.*)', r'Stagnant_Shadow_\1', name)
name = re.sub('Path_of_(.*)', r'Cavern_of_Corrosion_Path_of_\1', name)
if name in ['Destruction_Beginning', 'End_of_the_Eternal_Freeze', 'Divine_Seed', 'Borehole_Planet_Old_Crater']:
name = f'Echo_of_War_{name}'
if name in ['The_Swarm_Disaster', 'Gold_and_Gears']:
name = f'Simulated_Universe_{name}'
return name
def blessing_name(name: str) -> str:
name = text_to_variable(name)
name = re.sub(r'^\d', lambda match: f"_{match.group(0)}", name)
@ -56,31 +42,6 @@ class KeywordExtract:
self.text_map['cn'] = TextMap('chs')
self.keywords_id: list[int] = []
def iter_guide(self) -> t.Iterable[int]:
file = os.path.join(TextMap.DATA_FOLDER, './ExcelOutput/GameplayGuideData.json')
# visited = set()
temp_save = ""
for data in read_file(file).values():
hash_ = deep_get(data, keys='Name.Hash')
_, name = self.find_keyword(hash_, lang='cn')
if '永屹之城遗秘' in name: # load after all forgotten hall to make sure the same order in Game UI
temp_save = hash_
continue
if '忘却之庭' in name:
continue
# if name in visited:
# continue
# visited.add(name)
yield hash_
yield temp_save
# Consider rogue DLC as a dungeon
yield '寰宇蝗灾'
yield '黄金与机械'
# 'Memory of Chaos' is not a real dungeon, but represents a group
yield '混沌回忆'
yield '天艟求仙迷航录'
yield '永屹之城遗秘'
def find_keyword(self, keyword, lang) -> tuple[int, str]:
"""
Args:
@ -602,9 +563,8 @@ class KeywordExtract:
self.load_keywords(['领取', '追踪'])
self.write_keywords(keyword_class='BattlePassQuestState',
output_file='./tasks/battle_pass/keywords/quest_state.py')
self.load_keywords(list(self.iter_guide()))
self.write_keywords(keyword_class='DungeonList', output_file='./tasks/dungeon/keywords/dungeon.py',
text_convert=dungeon_name)
from dev_tools.keywords.dungeon_list import GenerateDungeonList
GenerateDungeonList()()
self.load_keywords(['进入', '传送', '追踪'])
self.write_keywords(keyword_class='DungeonEntrance', output_file='./tasks/dungeon/keywords/dungeon_entrance.py')
self.generate_shadow_with_characters()

View File

@ -0,0 +1,74 @@
import re
import typing as t
from dev_tools.keywords.base import GenerateKeyword, text_to_variable
from module.base.decorator import cached_property
from module.config.utils import deep_get
def dungeon_name(name: str) -> str:
name = text_to_variable(name)
name = re.sub('Bud_of_(Memories|Aether|Treasures)', r'Calyx_Golden_\1', name)
name = re.sub('Bud_of_(.*)', r'Calyx_Crimson_\1', name).replace('Calyx_Crimson_Calyx_Crimson_', 'Calyx_Crimson_')
name = re.sub('Shape_of_(.*)', r'Stagnant_Shadow_\1', name)
name = re.sub('Path_of_(.*)', r'Cavern_of_Corrosion_Path_of_\1', name)
if name in ['Destruction_Beginning', 'End_of_the_Eternal_Freeze', 'Divine_Seed', 'Borehole_Planet_Old_Crater']:
name = f'Echo_of_War_{name}'
if name in ['The_Swarm_Disaster', 'Gold_and_Gears']:
name = f'Simulated_Universe_{name}'
return name
class GenerateDungeonList(GenerateKeyword):
output_file = './tasks/dungeon/keywords/dungeon.py'
@cached_property
def data(self):
return self.read_file('./ExcelOutput/GameplayGuideData.json')
def iter_keywords(self) -> t.Iterable[dict]:
for keyword in self.iter_dungeon():
if isinstance(keyword, str):
yield dict(
text_id=self.find_keyword(keyword, lang='cn')[0],
plane_id=-1,
)
else:
yield keyword
def iter_dungeon(self):
temp_save = ""
for data in self.data.values():
text_id = deep_get(data, keys='Name.Hash')
plane_id = deep_get(data, 'MapEntranceID', 0)
_, name = self.find_keyword(text_id, lang='cn')
if '永屹之城遗秘' in name: # load after all forgotten hall to make sure the same order in Game UI
temp_save = text_id
continue
if '忘却之庭' in name:
continue
yield dict(
text_id=text_id,
plane_id=plane_id,
)
if temp_save:
yield temp_save
# Consider rogue DLC as a dungeon
yield '寰宇蝗灾'
yield '黄金与机械'
# 'Memory of Chaos' is not a real dungeon, but represents a group
yield '混沌回忆'
yield '天艟求仙迷航录'
yield '永屹之城遗秘'
def convert_name(self, text: str, keyword: dict) -> str:
text = super().convert_name(text, keyword=keyword)
text = dungeon_name(text)
# Add plane suffix
from tasks.map.keywords import MapPlane
if text.startswith('Calyx_Crimson'):
plane = MapPlane.find_plane_id(keyword['plane_id'])
text = f'{text}_{plane.name}'
return text

View File

@ -66,11 +66,17 @@ class ConfigGenerator:
from tasks.dungeon.keywords import DungeonList
option_add(
keys='Dungeon.Name.option',
options=[dungeon.name for dungeon in DungeonList.instances.values() if dungeon.is_daily_dungeon])
options=[dungeon.name for dungeon in DungeonList.instances.values() if dungeon.is_Calyx_Golden] \
+ [dungeon.name for dungeon in DungeonList.instances.values() if dungeon.is_Calyx_Crimson] \
+ [dungeon.name for dungeon in DungeonList.instances.values() if dungeon.is_Stagnant_Shadow] \
+ [dungeon.name for dungeon in DungeonList.instances.values() if dungeon.is_Cavern_of_Corrosion]
)
# Double events
option_add(
keys='Dungeon.NameAtDoubleCalyx.option',
options=[dungeon.name for dungeon in DungeonList.instances.values() if dungeon.is_Calyx])
options=[dungeon.name for dungeon in DungeonList.instances.values() if dungeon.is_Calyx_Golden] \
+ [dungeon.name for dungeon in DungeonList.instances.values() if dungeon.is_Calyx_Crimson]
)
option_add(
keys='Dungeon.NameAtDoubleRelic.option',
options=[dungeon.name for dungeon in DungeonList.instances.values() if dungeon.is_Cavern_of_Corrosion])
@ -407,9 +413,9 @@ class ConfigGenerator:
deep_set(new, keys=['AchievableQuest', quest.name, option], value=value)
# Echo of War
from tasks.map.keywords import MapWorld
dungeons = [d for d in DungeonList.instances.values() if d.is_Echo_of_War]
for world, dungeon in zip(MapWorld.instances.values(), dungeons):
for dungeon in dungeons:
world = dungeon.plane.world
world_name = world.__getattribute__(ingame_lang)
dungeon_name = dungeon.__getattribute__(ingame_lang)
value = f'{dungeon_name} ({world_name})'

View File

@ -20,6 +20,17 @@ class DungeonTab(Keyword):
class DungeonList(Keyword):
instances: ClassVar = {}
plane_id: int
@cached_property
def plane(self):
"""
Returns:
MapPlane: MapPlane object or None
"""
from tasks.map.keywords import MapPlane
return MapPlane.find_plane_id(self.plane_id)
@cached_property
def is_Calyx_Golden(self):
return 'Calyx_Golden' in self.name

View File

@ -3,435 +3,603 @@ from .classes import DungeonList
# This file was auto-generated, do not modify it manually. To generate:
# ``` python -m dev_tools.keyword_extract ```
Calyx_Golden_Memories = DungeonList(
Calyx_Golden_Memories_Jarilo_VI = DungeonList(
id=1,
name='Calyx_Golden_Memories',
cn='回忆之蕾•拟造花萼(金)',
cht='回憶之蕾•擬造花萼(金)',
en='Bud of Memories',
jp='疑似花萼(金)・回憶の蕾',
es='Flor de los recuerdos',
name='Calyx_Golden_Memories_Jarilo_VI',
cn='回忆之蕾•雅利洛-Ⅵ',
cht='回憶之蕾•雅利洛-Ⅵ',
en='Bud of Memories (Jarilo-VI)',
jp='回憶の蕾・ヤリーロ-VI',
es='Flor de los recuerdos (Jarilo-VI)',
plane_id=2010101,
)
Calyx_Golden_Aether = DungeonList(
Calyx_Golden_Aether_Jarilo_VI = DungeonList(
id=2,
name='Calyx_Golden_Aether',
cn='以太之蕾•拟造花萼(金)',
cht='乙太之蕾•擬造花萼(金)',
en='Bud of Aether',
jp='疑似花萼(金)・エーテルの蕾',
es='Flor de éter',
name='Calyx_Golden_Aether_Jarilo_VI',
cn='以太之蕾•雅利洛-Ⅵ',
cht='乙太之蕾•雅利洛-Ⅵ',
en='Bud of Aether (Jarilo-VI)',
jp='エーテルの蕾・ヤリーロ-VI',
es='Flor de éter (Jarilo-VI)',
plane_id=2011101,
)
Calyx_Golden_Treasures = DungeonList(
Calyx_Golden_Treasures_Jarilo_VI = DungeonList(
id=3,
name='Calyx_Golden_Treasures',
cn='藏珍之蕾•拟造花萼(金)',
cht='藏珍之蕾•擬造花萼(金)',
en='Bud of Treasures',
jp='疑似花萼(金)・秘蔵の蕾',
es='Flor de tesoros',
name='Calyx_Golden_Treasures_Jarilo_VI',
cn='藏珍之蕾•雅利洛-Ⅵ',
cht='藏珍之蕾•雅利洛-Ⅵ',
en='Bud of Treasures (Jarilo-VI)',
jp='秘蔵の蕾・ヤリーロ-VI',
es='Flor de tesoros (Jarilo-VI)',
plane_id=2012101,
)
Calyx_Crimson_Destruction = DungeonList(
Calyx_Crimson_Destruction_Herta_StorageZone = DungeonList(
id=4,
name='Calyx_Crimson_Destruction',
name='Calyx_Crimson_Destruction_Herta_StorageZone',
cn='毁灭之蕾•拟造花萼(赤)',
cht='毀滅之蕾•擬造花萼(赤)',
en='Bud of Destruction',
jp='疑似花萼(赤)・壊滅の蕾',
es='Flor de la Destrucción',
plane_id=2000201,
)
Calyx_Crimson_Preservation = DungeonList(
Calyx_Crimson_Preservation_Herta_SupplyZone = DungeonList(
id=5,
name='Calyx_Crimson_Preservation',
name='Calyx_Crimson_Preservation_Herta_SupplyZone',
cn='存护之蕾•拟造花萼(赤)',
cht='存護之蕾•擬造花萼(赤)',
en='Bud of Preservation',
jp='疑似花萼(赤)・存護の蕾',
es='Flor de la Conservación',
plane_id=2000301,
)
Calyx_Crimson_The_Hunt = DungeonList(
Calyx_Crimson_The_Hunt_Jarilo_OutlyingSnowPlains = DungeonList(
id=6,
name='Calyx_Crimson_The_Hunt',
name='Calyx_Crimson_The_Hunt_Jarilo_OutlyingSnowPlains',
cn='巡猎之蕾•拟造花萼(赤)',
cht='巡獵之蕾•擬造花萼(赤)',
en='Bud of The Hunt',
jp='疑似花萼(赤)・巡狩の蕾',
es='Flor de la Cacería',
plane_id=2010101,
)
Calyx_Crimson_Abundance = DungeonList(
Calyx_Crimson_Abundance_Jarilo_BackwaterPass = DungeonList(
id=7,
name='Calyx_Crimson_Abundance',
name='Calyx_Crimson_Abundance_Jarilo_BackwaterPass',
cn='丰饶之蕾•拟造花萼(赤)',
cht='豐饒之蕾•擬造花萼(赤)',
en='Bud of Abundance',
jp='疑似花萼(赤)・豊穣の蕾',
es='Flor de la Abundancia',
plane_id=2011101,
)
Calyx_Crimson_Erudition = DungeonList(
Calyx_Crimson_Erudition_Jarilo_RivetTown = DungeonList(
id=8,
name='Calyx_Crimson_Erudition',
name='Calyx_Crimson_Erudition_Jarilo_RivetTown',
cn='智识之蕾•拟造花萼(赤)',
cht='智識之蕾•擬造花萼(赤)',
en='Bud of Erudition',
jp='疑似花萼(赤)・知恵の蕾',
es='Flor de la Erudición',
plane_id=2012201,
)
Calyx_Crimson_Harmony = DungeonList(
Calyx_Crimson_Harmony_Jarilo_RobotSettlement = DungeonList(
id=9,
name='Calyx_Crimson_Harmony',
name='Calyx_Crimson_Harmony_Jarilo_RobotSettlement',
cn='同谐之蕾•拟造花萼(赤)',
cht='同諧之蕾•擬造花萼(赤)',
en='Bud of Harmony',
jp='疑似花萼(赤)・調和の蕾',
es='Flor de la Armonía',
plane_id=2012301,
)
Calyx_Crimson_Nihility = DungeonList(
Calyx_Crimson_Nihility_Jarilo_GreatMine = DungeonList(
id=10,
name='Calyx_Crimson_Nihility',
name='Calyx_Crimson_Nihility_Jarilo_GreatMine',
cn='虚无之蕾•拟造花萼(赤)',
cht='虛無之蕾•擬造花萼(赤)',
en='Bud of Nihility',
jp='疑似花萼(赤)・虚無の蕾',
es='Flor de la Nihilidad',
plane_id=2012101,
)
Calyx_Golden_Memories_The_Xianzhou_Luofu = DungeonList(
id=11,
name='Calyx_Golden_Memories_The_Xianzhou_Luofu',
cn='回忆之蕾•仙舟「罗浮」',
cht='回憶之蕾•仙舟「羅浮」',
en='Bud of Memories (The Xianzhou Luofu)',
jp='回憶の蕾・仙舟「羅浮」',
es='Flor de los recuerdos (El Luofu de Xianzhou)',
plane_id=2021101,
)
Calyx_Golden_Aether_The_Xianzhou_Luofu = DungeonList(
id=12,
name='Calyx_Golden_Aether_The_Xianzhou_Luofu',
cn='以太之蕾•仙舟「罗浮」',
cht='乙太之蕾•仙舟「羅浮」',
en='Bud of Aether (The Xianzhou Luofu)',
jp='エーテルの蕾・仙舟「羅浮」',
es='Flor de éter (El Luofu de Xianzhou)',
plane_id=2022101,
)
Calyx_Golden_Treasures_The_Xianzhou_Luofu = DungeonList(
id=13,
name='Calyx_Golden_Treasures_The_Xianzhou_Luofu',
cn='藏珍之蕾•仙舟「罗浮」',
cht='藏珍之蕾•仙舟「羅浮」',
en='Bud of Treasures (The Xianzhou Luofu)',
jp='秘蔵の蕾・仙舟「羅浮」',
es='Flor de tesoros (El Luofu de Xianzhou)',
plane_id=2022201,
)
Calyx_Golden_Memories_Penacony = DungeonList(
id=14,
name='Calyx_Golden_Memories_Penacony',
cn='回忆之蕾•匹诺康尼',
cht='回憶之蕾•匹諾康尼',
en='Bud of Memories (Penacony)',
jp='回憶の蕾・ピノコニー',
es='Flor de los recuerdos (Colonipenal)',
plane_id=2031301,
)
Calyx_Golden_Aether_Penacony = DungeonList(
id=15,
name='Calyx_Golden_Aether_Penacony',
cn='以太之蕾•匹诺康尼',
cht='乙太之蕾•匹諾康尼',
en='Bud of Aether (Penacony)',
jp='エーテルの蕾・ピノコニー',
es='Flor de éter (Colonipenal)',
plane_id=2031201,
)
Calyx_Golden_Treasures_Penacony = DungeonList(
id=16,
name='Calyx_Golden_Treasures_Penacony',
cn='藏珍之蕾•匹诺康尼',
cht='藏珍之蕾•匹諾康尼',
en='Bud of Treasures (Penacony)',
jp='秘蔵の蕾・ピノコニー',
es='Flor de tesoros (Colonipenal)',
plane_id=2031101,
)
Calyx_Crimson_Nihility_Luofu_AlchemyCommission = DungeonList(
id=17,
name='Calyx_Crimson_Nihility_Luofu_AlchemyCommission',
cn='虚无之蕾•拟造花萼(赤)',
cht='虛無之蕾•擬造花萼(赤)',
en='Bud of Nihility',
jp='疑似花萼(赤)・虚無の蕾',
es='Flor de la Nihilidad',
plane_id=2023101,
)
Calyx_Crimson_Destruction_Luofu_ScalegorgeWaterscape = DungeonList(
id=18,
name='Calyx_Crimson_Destruction_Luofu_ScalegorgeWaterscape',
cn='毁灭之蕾•拟造花萼(赤)',
cht='毀滅之蕾•擬造花萼(赤)',
en='Bud of Destruction',
jp='疑似花萼(赤)・壊滅の蕾',
es='Flor de la Destrucción',
plane_id=2023201,
)
Calyx_Crimson_Harmony_Penacony_TheReverieDreamscape = DungeonList(
id=19,
name='Calyx_Crimson_Harmony_Penacony_TheReverieDreamscape',
cn='同谐之蕾•拟造花萼(赤)',
cht='同諧之蕾•擬造花萼(赤)',
en='Bud of Harmony',
jp='疑似花萼(赤)・調和の蕾',
es='Flor de la Armonía',
plane_id=2031101,
)
Stagnant_Shadow_Quanta = DungeonList(
id=11,
id=20,
name='Stagnant_Shadow_Quanta',
cn='空海之形•凝滞虚影',
cht='空海之形•凝滯虛影',
en='Shape of Quanta',
jp='凝結虚影・虚海の形',
es='Forma del cuanto',
plane_id=2000101,
)
Stagnant_Shadow_Gust = DungeonList(
id=12,
id=21,
name='Stagnant_Shadow_Gust',
cn='巽风之形•凝滞虚影',
cht='巽風之形•凝滯虛影',
en='Shape of Gust',
jp='凝結虚影・薫風の形',
es='Forma del aire',
plane_id=2012201,
)
Stagnant_Shadow_Fulmination = DungeonList(
id=13,
id=22,
name='Stagnant_Shadow_Fulmination',
cn='鸣雷之形•凝滞虚影',
cht='鳴雷之形•凝滯虛影',
en='Shape of Fulmination',
jp='凝結虚影・鳴雷の形',
es='Forma del trueno',
plane_id=2013201,
)
Stagnant_Shadow_Blaze = DungeonList(
id=14,
id=23,
name='Stagnant_Shadow_Blaze',
cn='炎华之形•凝滞虚影',
cht='炎華之形•凝滯虛影',
en='Shape of Blaze',
jp='凝結虚影・炎華の形',
es='Forma de las llamas',
plane_id=2013101,
)
Stagnant_Shadow_Spike = DungeonList(
id=15,
id=24,
name='Stagnant_Shadow_Spike',
cn='锋芒之形•凝滞虚影',
cht='鋒芒之形•凝滯虛影',
en='Shape of Spike',
jp='凝結虚影・切先の形',
es='Forma afilada',
plane_id=2012101,
)
Stagnant_Shadow_Rime = DungeonList(
id=16,
id=25,
name='Stagnant_Shadow_Rime',
cn='霜晶之形•凝滞虚影',
cht='霜晶之形•凝滯虛影',
en='Shape of Rime',
jp='凝結虚影・霜晶の形',
es='Forma de la escarcha',
plane_id=2013201,
)
Stagnant_Shadow_Mirage = DungeonList(
id=17,
id=26,
name='Stagnant_Shadow_Mirage',
cn='幻光之形•凝滞虚影',
cht='幻光之形•凝滯虛影',
en='Shape of Mirage',
jp='凝結虚影・幻光の形',
es='Forma del espejismo',
plane_id=2011101,
)
Stagnant_Shadow_Icicle = DungeonList(
id=18,
id=27,
name='Stagnant_Shadow_Icicle',
cn='冰棱之形•凝滞虚影',
cht='冰稜之形•凝滯虛影',
en='Shape of Icicle',
jp='凝結虚影・氷柱の形',
es='Forma del témpano',
plane_id=2021101,
)
Stagnant_Shadow_Doom = DungeonList(
id=19,
id=28,
name='Stagnant_Shadow_Doom',
cn='震厄之形•凝滞虚影',
cht='震厄之形•凝滯虛影',
en='Shape of Doom',
jp='凝結虚影・震厄の形',
es='Forma de la perdición',
plane_id=2021201,
)
Stagnant_Shadow_Puppetry = DungeonList(
id=20,
id=29,
name='Stagnant_Shadow_Puppetry',
cn='偃偶之形•凝滞虚影',
cht='偃偶之形•凝滯虛影',
en='Shape of Puppetry',
jp='凝結虚影・傀儡の形',
es='Forma de las marionetas',
plane_id=2022201,
)
Stagnant_Shadow_Abomination = DungeonList(
id=21,
id=30,
name='Stagnant_Shadow_Abomination',
cn='孽兽之形•凝滞虚影',
cht='孽獸之形•凝滯虛影',
en='Shape of Abomination',
jp='凝結虚影・厄獣の形',
es='Forma de la abominación',
plane_id=2023201,
)
Stagnant_Shadow_Scorch = DungeonList(
id=22,
id=31,
name='Stagnant_Shadow_Scorch',
cn='燔灼之形•凝滞虚影',
cht='燔灼之形•凝滯虛影',
en='Shape of Scorch',
jp='凝結虚影・燔灼の形',
es='Forma abrasada',
plane_id=2012101,
)
Stagnant_Shadow_Celestial = DungeonList(
id=23,
id=32,
name='Stagnant_Shadow_Celestial',
cn='天人之形•凝滞虚影',
cht='天人之形•凝滯虛影',
en='Shape of Celestial',
jp='凝結虚影・天人の形',
es='Forma de lo celestial',
plane_id=2023101,
)
Stagnant_Shadow_Perdition = DungeonList(
id=24,
id=33,
name='Stagnant_Shadow_Perdition',
cn='幽府之形•凝滞虚影',
cht='幽府之形•凝滯虛影',
en='Shape of Perdition',
jp='凝結虚影・幽府の形',
es='Forma del aislamiento',
plane_id=2022301,
)
Stagnant_Shadow_Nectar = DungeonList(
id=34,
name='Stagnant_Shadow_Nectar',
cn='冰酿之形•凝滞虚影',
cht='冰釀之形•凝滯虛影',
en='Shape of Nectar',
jp='凝結虚影・氷醸の形',
es='Forma del néctar',
plane_id=2031101,
)
Stagnant_Shadow_Roast = DungeonList(
id=35,
name='Stagnant_Shadow_Roast',
cn='焦炙之形•凝滞虚影',
cht='焦炙之形•凝滯虛影',
en='Shape of Roast',
jp='凝結虚影・焦灼の形',
es='Forma del agostamiento',
plane_id=2031301,
)
Cavern_of_Corrosion_Path_of_Gelid_Wind = DungeonList(
id=25,
id=36,
name='Cavern_of_Corrosion_Path_of_Gelid_Wind',
cn='霜风之径•侵蚀隧洞',
cht='霜風之徑•侵蝕隧洞',
en='Path of Gelid Wind',
jp='侵蝕トンネル・霜風の路',
es='Senda del viento gélido',
plane_id=2000201,
)
Cavern_of_Corrosion_Path_of_Jabbing_Punch = DungeonList(
id=26,
id=37,
name='Cavern_of_Corrosion_Path_of_Jabbing_Punch',
cn='迅拳之径•侵蚀隧洞',
cht='迅拳之徑•侵蝕隧洞',
en='Path of Jabbing Punch',
jp='侵蝕トンネル・迅拳の路',
es='Senda de los puños rápidos',
plane_id=2013101,
)
Cavern_of_Corrosion_Path_of_Drifting = DungeonList(
id=27,
id=38,
name='Cavern_of_Corrosion_Path_of_Drifting',
cn='漂泊之径•侵蚀隧洞',
cht='漂泊之徑•侵蝕隧洞',
en='Path of Drifting',
jp='侵蝕トンネル・漂泊の路',
es='Senda de la deriva',
plane_id=2013201,
)
Cavern_of_Corrosion_Path_of_Providence = DungeonList(
id=28,
id=39,
name='Cavern_of_Corrosion_Path_of_Providence',
cn='睿治之径•侵蚀隧洞',
cht='睿治之徑•侵蝕隧洞',
en='Path of Providence',
jp='侵蝕トンネル・睿治の路',
es='Senda de la providencia',
plane_id=2013401,
)
Cavern_of_Corrosion_Path_of_Holy_Hymn = DungeonList(
id=29,
id=40,
name='Cavern_of_Corrosion_Path_of_Holy_Hymn',
cn='圣颂之径•侵蚀隧洞',
cht='聖頌之徑•侵蝕隧洞',
en='Path of Holy Hymn',
jp='侵蝕トンネル・聖頌の路',
es='Senda del himno sagrado',
plane_id=2021101,
)
Cavern_of_Corrosion_Path_of_Conflagration = DungeonList(
id=30,
id=41,
name='Cavern_of_Corrosion_Path_of_Conflagration',
cn='野焰之径•侵蚀隧洞',
cht='野焰之徑•侵蝕隧洞',
en='Path of Conflagration',
jp='侵蝕トンネル・野焔の路',
es='Senda de la conflagración',
plane_id=2021201,
)
Cavern_of_Corrosion_Path_of_Elixir_Seekers = DungeonList(
id=31,
id=42,
name='Cavern_of_Corrosion_Path_of_Elixir_Seekers',
cn='药使之径•侵蚀隧洞',
cht='藥使之徑•侵蝕隧洞',
en='Path of Elixir Seekers',
jp='侵蝕トンネル・薬使の路',
es='Senda de los elixires',
plane_id=2023101,
)
Cavern_of_Corrosion_Path_of_Darkness = DungeonList(
id=32,
id=43,
name='Cavern_of_Corrosion_Path_of_Darkness',
cn='幽冥之径•侵蚀隧洞',
cht='幽冥之徑•侵蝕隧洞',
en='Path of Darkness',
jp='侵蝕トンネル・幽冥の路',
es='Senda de la oscuridad',
plane_id=2022301,
)
Cavern_of_Corrosion_Path_of_Dreamdive = DungeonList(
id=44,
name='Cavern_of_Corrosion_Path_of_Dreamdive',
cn='梦潜之径•侵蚀隧洞',
cht='夢潛之徑•侵蝕隧洞',
en='Path of Dreamdive',
jp='侵蝕トンネル・夢潜の路',
es='Senda de los sueños',
plane_id=2031101,
)
Echo_of_War_Destruction_Beginning = DungeonList(
id=33,
id=45,
name='Echo_of_War_Destruction_Beginning',
cn='毁灭的开端•历战余响',
cht='毀滅的開端•歷戰餘響',
en="Destruction's Beginning",
jp='歴戦余韻・壊滅の始まり',
es='El principio de la Destrucción',
plane_id=2000301,
)
Echo_of_War_End_of_the_Eternal_Freeze = DungeonList(
id=34,
id=46,
name='Echo_of_War_End_of_the_Eternal_Freeze',
cn='寒潮的落幕•历战余响',
cht='寒潮的落幕•歷戰餘響',
en='End of the Eternal Freeze',
jp='歴戦余韻・寒波の幕切れ',
es='El fin del Hielo Eterno',
plane_id=2013401,
)
Echo_of_War_Divine_Seed = DungeonList(
id=35,
id=47,
name='Echo_of_War_Divine_Seed',
cn='不死的神实•历战余响',
cht='不死的神實•歷戰餘響',
en='Divine Seed',
jp='歴戦余韻・不死の神実',
es='Semilla divina',
plane_id=2023201,
)
Echo_of_War_Borehole_Planet_Old_Crater = DungeonList(
id=36,
id=48,
name='Echo_of_War_Borehole_Planet_Old_Crater',
cn='蛀星的旧靥•历战余响',
cht='蛀星的舊靨•歷戰餘響',
en="Borehole Planet's Old Crater",
jp='歴戦余韻・星を蝕む往日の面影',
es='Cráter del planeta devorado',
plane_id=2000401,
)
Simulated_Universe_World_1 = DungeonList(
id=37,
id=49,
name='Simulated_Universe_World_1',
cn='第一世界•模拟宇宙',
cht='第一世界•模擬宇宙',
en='Simulated Universe: World 1',
jp='第一世界・模擬宇宙',
es='Mundo 1',
plane_id=100000104,
)
Simulated_Universe_World_3 = DungeonList(
id=38,
id=50,
name='Simulated_Universe_World_3',
cn='第三世界•模拟宇宙',
cht='第三世界•模擬宇宙',
en='Simulated Universe: World 3',
jp='第三世界・模擬宇宙',
es='Mundo 3',
plane_id=100000104,
)
Simulated_Universe_World_4 = DungeonList(
id=39,
id=51,
name='Simulated_Universe_World_4',
cn='第四世界•模拟宇宙',
cht='第四世界•模擬宇宙',
en='Simulated Universe: World 4',
jp='第四世界・模擬宇宙',
es='Mundo 4',
plane_id=100000104,
)
Simulated_Universe_World_5 = DungeonList(
id=40,
id=52,
name='Simulated_Universe_World_5',
cn='第五世界•模拟宇宙',
cht='第五世界•模擬宇宙',
en='Simulated Universe: World 5',
jp='第五世界・模擬宇宙',
es='Mundo 5',
plane_id=100000104,
)
Simulated_Universe_World_6 = DungeonList(
id=41,
id=53,
name='Simulated_Universe_World_6',
cn='第六世界•模拟宇宙',
cht='第六世界•模擬宇宙',
en='Simulated Universe: World 6',
jp='第六世界・模擬宇宙',
es='Mundo 6',
plane_id=100000104,
)
Simulated_Universe_World_7 = DungeonList(
id=42,
id=54,
name='Simulated_Universe_World_7',
cn='第七世界•模拟宇宙',
cht='第七世界•模擬宇宙',
en='Simulated Universe: World 7',
jp='第七世界・模擬宇宙',
es='Mundo 7',
plane_id=100000104,
)
Simulated_Universe_World_8 = DungeonList(
id=43,
id=55,
name='Simulated_Universe_World_8',
cn='第八世界•模拟宇宙',
cht='第八世界•模擬宇宙',
en='Simulated Universe: World 8',
jp='第八世界・模擬宇宙',
es='Mundo 8',
plane_id=100000104,
)
Simulated_Universe_The_Swarm_Disaster = DungeonList(
id=44,
id=56,
name='Simulated_Universe_The_Swarm_Disaster',
cn='寰宇蝗灾',
cht='寰宇蝗災',
en='The Swarm Disaster',
jp='宇宙の蝗害',
es='La Plaga',
plane_id=-1,
)
Simulated_Universe_Gold_and_Gears = DungeonList(
id=45,
id=57,
name='Simulated_Universe_Gold_and_Gears',
cn='黄金与机械',
cht='黃金與機械',
en='Gold and Gears',
jp='黄金と機械',
es='Oro y maquinaria',
plane_id=-1,
)
Memory_of_Chaos = DungeonList(
id=46,
id=58,
name='Memory_of_Chaos',
cn='混沌回忆',
cht='混沌回憶',
en='Memory of Chaos',
jp='混沌の記憶',
es='Evocación caótica',
plane_id=-1,
)
The_Voyage_of_Navis_Astriger = DungeonList(
id=47,
id=59,
name='The_Voyage_of_Navis_Astriger',
cn='天艟求仙迷航录',
cht='天艟求仙迷航錄',
en='The Voyage of Navis Astriger',
jp='天艟求仙放浪記',
es='El viaje de las naves astriger',
plane_id=-1,
)
The_Last_Vestiges_of_Towering_Citadel = DungeonList(
id=48,
id=60,
name='The_Last_Vestiges_of_Towering_Citadel',
cn='永屹之城遗秘',
cht='永屹之城遺秘',
en='The Last Vestiges of Towering Citadel',
jp='永屹の城の秘密',
es='Herencia de la Ciudadela Imponente',
plane_id=-1,
)

View File

@ -114,11 +114,11 @@ Stagnant_Shadow_Scorch = DungeonDetailed(
Stagnant_Shadow_Celestial = DungeonDetailed(
id=13,
name='Stagnant_Shadow_Celestial',
cn='角色晋阶材料:风(刃 / 藿藿',
cht='角色晉階材料:風(刃 / 藿藿',
en='Ascension: Wind (Blade / Huohuo)',
jp='キャラクター昇格素材:風(刃 / フォフォ',
es='Ascension: Viento (Blade / Huohuo)',
cn='角色晋阶材料:风(刃 / 藿藿 / 黑天鹅',
cht='角色晉階材料:風(刃 / 藿藿 / 黑天鵝',
en='Ascension: Wind (Blade / Huohuo / Black Swan)',
jp='キャラクター昇格素材:風(刃 / フォフォ / ブラックスワン',
es='Ascension: Viento (Blade / Huohuo / Cisne Negro)',
)
Stagnant_Shadow_Perdition = DungeonDetailed(
id=14,
@ -129,3 +129,21 @@ Stagnant_Shadow_Perdition = DungeonDetailed(
jp='キャラクター昇格素材:物理(寒鴉 / アルジェンティ)',
es='Ascension: Físico (Hanya / Argenti)',
)
Stagnant_Shadow_Nectar = DungeonDetailed(
id=15,
name='Stagnant_Shadow_Nectar',
cn='角色晋阶材料:冰(米沙)',
cht='角色晉階材料:冰(米沙)',
en='Ascension: Ice (Misha)',
jp='キャラクター昇格素材:氷(ミーシャ)',
es='Ascension: Hielo (Misha)',
)
Stagnant_Shadow_Roast = DungeonDetailed(
id=16,
name='Stagnant_Shadow_Roast',
cn='角色晋阶材料:量子(花火)',
cht='角色晉階材料:量子(花火)',
en='Ascension: Quantum (Sparkle)',
jp='キャラクター昇格素材:量子(花火)',
es='Ascension: Cuántico (Sparkle)',
)