Upd: Add filter preset extract (#224)

* Upd: add filter_preset_extract

* Upd: add check_sheet

* Fix: general blessing not extract

* Upd: Add more indentation
This commit is contained in:
Yinhr 2023-12-21 00:19:10 +08:00 committed by GitHub
parent 556f9a090b
commit 0f11911e5c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 298 additions and 24 deletions

View File

@ -0,0 +1,122 @@
import os
import pandas as pd
import textwrap
from tasks.rogue.keywords.classes import RoguePath
from module.logger import logger
INDENTATION = ' '
class PresetFilterGenerator:
def __init__(self, file_name: str = None):
if file_name is None:
file_name = './filter.xlsx'
if not os.path.exists(file_name):
logger.warning(f'File {file_name} not found')
exit()
self.file = pd.read_excel(file_name, sheet_name=None)
self.paths = []
self.path_name = {}
self.get_paths()
self.general = ['强力', '输出', '生存', '功能']
self.replace = {'黄色(强力通用)': '强力', '蓝色(通用输出)': '输出', '绿色(通用生存)': '生存',
'红色(通用功能)': '功能'}
self.content = {}
self.length = 76
def get_paths(self):
for path in RoguePath.instances.values():
self.paths.append(path.name)
self.path_name[path.name] = path.cn
def check_sheet(self, sheet_name: str) -> bool:
if sheet_name not in self.file:
logger.warning(f'sheet {sheet_name} not found')
return False
else:
return True
def to_list(self, sheet: pd.DataFrame, title: str, sort_name: str = '排序') -> list:
name = '祝福' if title != '奇物' else '奇物'
sheet_ = sheet[sheet[sort_name] > 0].sort_values(by=sort_name)
sheet_ = sheet_[name].tolist()
for key in self.replace.keys():
if key in sheet_ and self.replace[key] in self.content:
index = sheet_.index(key)
sheet_ = sheet_[:index] + self.content[self.replace[key]] + sheet_[index + 1:]
sheet_ = list(dict.fromkeys(sheet_))
remove_list = sheet[sheet[sort_name] == -1][name].tolist()
for item in remove_list:
if item in sheet_:
sheet_.remove(item)
if title == '奇物' and 'XX火漆' in sheet_:
sheet_[sheet_.index('XX火漆')] = sort_name + '火漆'
if 'random' in sheet_:
sheet_.remove('random')
return sheet_
def to_str(self, blessing: list, name: str, one_line=False) -> str:
if one_line:
ret = ' > '.join(blessing + ['random'])
return f'{INDENTATION}"{name}": "{ret}",\n'
ret = f'{INDENTATION}"{name}": \"\"\"\n'
def list_to_str(l_, ind):
return textwrap.indent(textwrap.fill(' > '.join(l_), self.length), ind)
if 'reset' in blessing:
re_index = blessing.index('reset')
ret += list_to_str(blessing[: re_index], INDENTATION * 2)
ret += f'\n{INDENTATION * 2}> reset >\n'
ret += list_to_str(blessing[re_index + 1:], INDENTATION * 2)
else:
ret += list_to_str(blessing, INDENTATION * 2)
ret = ret.replace(f' >\n{INDENTATION * 2}', f'\n{INDENTATION * 2}> ')
ret += f'\n{INDENTATION * 2}> random\n{INDENTATION * 2}\"\"\",\n\n'
return ret
def generate(self):
for _ in self.general:
self.content[_] = self.to_list(self.file[_], _) if self.check_sheet(_) else []
resonance = {}
curio = {}
has_resonance = self.check_sheet('回响')
has_curio = self.check_sheet('奇物')
for path in self.paths:
path_name = self.path_name[path]
self.content[path] = self.to_list(self.file[path_name], path_name) if self.check_sheet(path_name) else []
resonance[path] = self.to_list(self.file['回响'][self.file['回响']['命途'] == path_name],
'回响') if has_resonance else []
curio[path] = self.to_list(self.file['奇物'], '奇物', sort_name=path_name) if has_curio else []
self.content['回响'] = resonance
self.content['奇物'] = curio
preset = 'BLESSING_PRESET = {\n'
for path in self.paths:
preset += self.to_str(self.content[path], path)
preset += '}\nRESONANCE_PRESET = {\n'
for path in self.paths:
preset += self.to_str(self.content['回响'][path], path, one_line=True)
preset += '}\nCURIO_PRESET = {\n'
for path in self.paths:
preset += self.to_str(self.content['奇物'][path], path)
preset += '}'
with open('./tasks/rogue/blessing/preset.py', 'w', encoding='utf-8') as f:
f.write(preset)
if __name__ == '__main__':
PresetFilterGenerator().generate()

View File

@ -10,7 +10,7 @@ from module.ocr.ocr import Digit, DigitCounter, Ocr, OcrResultButton
from module.ocr.utils import split_and_pair_buttons
from tasks.rogue.assets.assets_rogue_blessing import *
from tasks.rogue.assets.assets_rogue_ui import BLESSING_CONFIRM
from tasks.rogue.blessing.preset import *
from tasks.rogue.blessing.preset import BLESSING_PRESET, RESONANCE_PRESET
from tasks.rogue.blessing.selector import RogueSelector
from tasks.rogue.blessing.utils import get_regex_from_keyword_name, is_card_selected, parse_name
from tasks.rogue.keywords import *
@ -295,7 +295,7 @@ class RogueBlessingSelector(RogueSelector):
"preset_config": self.main.config.RogueBlessing_PresetBlessingFilter,
"strategy_config": self.main.config.RogueBlessing_SelectionStrategy,
"preset_values": {
'preset': BLESSING_PRESET_1,
'preset': BLESSING_PRESET[self.main.config.RogueWorld_Path],
'custom': self.main.config.RogueBlessing_CustomBlessingFilter
},
},
@ -304,7 +304,7 @@ class RogueBlessingSelector(RogueSelector):
"preset_config": self.main.config.RogueBlessing_PresetResonanceFilter,
"strategy_config": self.main.config.RogueBlessing_SelectionStrategy,
"preset_values": {
'preset': RESONANCE_PRESET_1,
'preset': RESONANCE_PRESET[self.main.config.RogueWorld_Path],
'custom': self.main.config.RogueBlessing_PresetResonanceFilter,
},
}

View File

@ -9,7 +9,7 @@ from module.logger import logger
from module.ocr.ocr import Ocr, OcrResultButton
from tasks.rogue.assets.assets_rogue_curio import CURIO_ENFORCE, OCR_ROGUE_CURIO
from tasks.rogue.assets.assets_rogue_ui import BLESSING_CONFIRM, BLESSING_ENHANCED, BLESSING_LOST, BLESSING_OBTAINED
from tasks.rogue.blessing.preset import CURIO_PRESET_1
from tasks.rogue.blessing.preset import CURIO_PRESET
from tasks.rogue.blessing.selector import RogueSelector
from tasks.rogue.blessing.utils import get_regex_from_keyword_name, parse_name
from tasks.rogue.keywords import RogueCurio
@ -148,7 +148,7 @@ class RogueCurioSelector(RogueSelector):
string = ""
match self.main.config.RogueBlessing_PresetCurioFilter:
case 'preset':
string = CURIO_PRESET_1
string = CURIO_PRESET[self.main.config.RogueWorld_Path]
case 'custom':
string = self.main.config.RogueBlessing_CustomCurioFilter
string = parse_name(string)

View File

@ -1,19 +1,171 @@
BLESSING_PRESET_1 = """
巡猎-3 > 冠军晚餐猫的摇篮 > 丰饶众生一法界心 > 毁灭-3
> 火堆外的夜 > 巡猎-2 > 戒律性闪变 > 巡猎 > 存护-2
> reset > random
"""
RESONANCE_PRESET_1 = """
回响构音均晶转变 > 回响构音零维强化
> 回响构音第二次初恋 > 回响构音体验的富翁
> 回响构音局外人 > 回响构音怀疑的四重根
> 回响构音诸法无我 > 回响构音诸行无常
> 回响构音射不主皮 > 回响构音柘弓危矢
> 回响构音激变变星 > 回响构音极端氦闪
> 回响构音末日狂欢 > 回响构音树苗长高舞
> random
"""
CURIO_PRESET_1 = """
博士之袍 > 福灵胶 > 分裂金币 > 信仰债券 > 换境桂冠 > 俱乐部券 > 碎星芳饵
> random
"""
BLESSING_PRESET = {
"Preservation": """
神性构筑宏观偏析 > 神性构筑超静定场 > 神性构筑谐振传递 > 景星助狩月 > 湮灭回归不等式 > 星间构筑回馈庇护 > 星间构筑切变结构
> 星间构筑亚共晶体 > 构筑聚塑 > 星间构筑固溶强化 > 星间构筑迸裂晶格 > 星间构筑四棱锥体 > 星间构筑安全载荷 > 构筑回转
> 构筑坚定 > 构筑补偿 > 构筑迸发 > 构筑专注 > 构筑弥合 > 构筑哨戒
> reset
> 胜军 > 天棓步危 > 桑弧蓬矢 > 加持 > 不稳定带 > 孢夹 > 火堆外的夜 > 冠军晚餐猫的摇篮 > 帝弓断空彻太清 > 云镝逐步离
> 帝车超光所向捷 > 背生击死 > 背孤击虚 > 宝光烛日月 > 他人即地狱 > 毁灭性吸积 > 乌号綦箭 > 意义质询 > 丰饶众生一法界心
> 戒律性闪变 > 大愿般若船 > 飞虹诛凿齿 > 轨道红移 > 甘露 > 完美体验缄默 > 禳灾 > 液囊 > 永坍缩体 > 偏振受体
> random
""",
"Remembrance": """
完美体验缄默 > 完美体验浮黎 > 完美体验纯真 > 景星助狩月 > 湮灭回归不等式 > 火堆外的夜 > 极端体验麻木不仁
> 极端体验不寒而栗 > 极端体验头晕目眩 > 体验难言的羞耻 > 极端体验多愁善感 > 极端体验沦浃肌髓 > 极端体验特立独行
> 体验攀升的刺激 > 体验疏离的煎熬 > 体验决绝的痛恨 > 体验原初的苦衷 > 体验病痛的折磨 > 体验回应的兴奋 > 体验丢失的记忆
> reset
> 胜军 > 天棓步危 > 桑弧蓬矢 > 加持 > 不稳定带 > 孢夹 > 丰饶众生一法界心 > 戒律性闪变 > 大愿般若船 > 飞虹诛凿齿 > 轨道红移
> 甘露 > 星间构筑回馈庇护 > 禳灾 > 液囊 > 永坍缩体 > 偏振受体 > 冠军晚餐猫的摇篮 > 帝弓断空彻太清 > 云镝逐步离
> 帝车超光所向捷 > 背生击死 > 背孤击虚 > 宝光烛日月 > 他人即地狱 > 毁灭性吸积 > 乌号綦箭 > 意义质询
> random
""",
"Nihility": """
被装在套子里的人 > 感官追奉者的葬礼 > 为何一切尚未消失 > 景星助狩月 > 湮灭回归不等式 > 自欺咖啡馆 > 开端与终结 > 漠视主义
> 旷野的呼告 > 火堆外的夜 > 情绪舍离 > 存在的黄昏 > 无根据颂歌 > 他人即地狱 > 悲剧讲座 > 知觉迷墙 > 虚妄供品 > 日出之前
> 意义质询 > 盲目视界
> reset
> 胜军 > 天棓步危 > 桑弧蓬矢 > 加持 > 不稳定带 > 孢夹 > 丰饶众生一法界心 > 戒律性闪变 > 大愿般若船 > 飞虹诛凿齿 > 轨道红移
> 甘露 > 星间构筑回馈庇护 > 完美体验缄默 > 禳灾 > 液囊 > 永坍缩体 > 偏振受体 > 冠军晚餐猫的摇篮 > 帝弓断空彻太清
> 云镝逐步离 > 帝车超光所向捷 > 宝光烛日月 > 毁灭性吸积 > 乌号綦箭
> random
""",
"Abundance": """
葳蕤繁祉延彼遐龄 > 若罪若福施诸愿印 > 丰饶众生一法界心 > 景星助狩月 > 湮灭回归不等式 > 天人不动众 > 灭罪累生善 > 法雨
> 慧海度慈航 > 大愿般若船 > 甘露 > 轨道红移 > 宝光烛日月 > 明澈琉璃身 > 愿印 > 胜军 > 加持 > 厌离邪秽苦 > 回生 > 禳灾
> 延寿
> reset
> 天棓步危 > 桑弧蓬矢 > 不稳定带 > 孢夹 > 火堆外的夜 > 冠军晚餐猫的摇篮 > 帝弓断空彻太清 > 云镝逐步离 > 帝车超光所向捷
> 背生击死 > 背孤击虚 > 他人即地狱 > 毁灭性吸积 > 乌号綦箭 > 意义质询 > 戒律性闪变 > 飞虹诛凿齿 > 星间构筑回馈庇护
> 完美体验缄默 > 液囊 > 永坍缩体 > 偏振受体
> random
""",
"The_Hunt": """
帝车超光所向捷 > 帝弓断空彻太清 > 景星助狩月 > 帝星君临制穹桑 > 湮灭回归不等式 > 天舟缴夙敌 > 序师执迟彝 > 流岚追孽物 > 彤弓素矰
> 白矢决射御 > 云镝逐步离 > 乌号綦箭 > 电射牛斗 > 天棓步危 > 背生击死 > 背孤击虚 > 桑弧蓬矢 > 雷车动地 > 飞虹诛凿齿
> reset
> 胜军 > 加持 > 不稳定带 > 孢夹 > 丰饶众生一法界心 > 戒律性闪变 > 大愿般若船 > 轨道红移 > 甘露 > 星间构筑回馈庇护
> 完美体验缄默 > 禳灾 > 液囊 > 永坍缩体 > 偏振受体 > 火堆外的夜 > 冠军晚餐猫的摇篮 > 宝光烛日月 > 他人即地狱
> 毁灭性吸积 > 意义质询
> random
""",
"Destruction": """
寰宇热寂特征数 > 反物质非逆方程 > 湮灭回归不等式 > 景星助狩月 > 灾难性共振 > 戒律性闪变 > 递增性末日 > 毁灭性吸积 > 破坏性耀发
> 预兆性景深 > 危害性余光 > 原生黑洞 > 轨道红移 > 不稳定带 > 偏振受体 > 永坍缩体 > 回光效应 > 哨戒卫星 > 储备度规
> reset
> 胜军 > 天棓步危 > 桑弧蓬矢 > 加持 > 孢夹 > 丰饶众生一法界心 > 大愿般若船 > 飞虹诛凿齿 > 甘露 > 星间构筑回馈庇护
> 完美体验缄默 > 禳灾 > 液囊 > 火堆外的夜 > 冠军晚餐猫的摇篮 > 帝弓断空彻太清 > 云镝逐步离 > 帝车超光所向捷 > 背生击死
> 背孤击虚 > 宝光烛日月 > 他人即地狱 > 乌号綦箭 > 意义质询
> random
""",
"Elation": """
自动口琴茫茫白夜 > 四号屠场众生安眠 > 冠军晚餐猫的摇篮 > 景星助狩月 > 湮灭回归不等式 > 流吧你的眼泪
> 燃烧男子的肖像 > 被涂污的信天翁 > 十二猴子与怒汉 > 第二十一条军规 > 利尔他引力之虹 > 砂时镜下的幼园
> 操行满分 > 阴风阵阵 > 灰暗的火 > 基本有害 > 回灯塔去 > 发条苹果 > 奇爱医生 > 铂金时代
> reset
> 胜军 > 天棓步危 > 桑弧蓬矢 > 加持 > 不稳定带 > 孢夹 > 丰饶众生一法界心 > 戒律性闪变 > 大愿般若船 > 飞虹诛凿齿 > 轨道红移
> 甘露 > 星间构筑回馈庇护 > 完美体验缄默 > 禳灾 > 液囊 > 永坍缩体 > 偏振受体 > 火堆外的夜 > 帝弓断空彻太清 > 云镝逐步离
> 帝车超光所向捷 > 背生击死 > 背孤击虚 > 宝光烛日月 > 他人即地狱 > 毁灭性吸积 > 乌号綦箭 > 意义质询
> random
""",
"Propagation": """
子囊释放 > 镰刀肢足 > 菌种脓疱 > 景星助狩月 > 湮灭回归不等式 > 腐殖疮 > 裂解酶 > 代谢腔 > 裸脑质 > 骨刃 > 节间膜
> 催化剂 > 槽针 > 脊刺 > 兴奋腺 > 鳞翅 > 孢夹 > 液囊 > 结膜 > 复眼
> reset
> 胜军 > 天棓步危 > 桑弧蓬矢 > 加持 > 不稳定带 > 丰饶众生一法界心 > 戒律性闪变 > 大愿般若船 > 飞虹诛凿齿 > 轨道红移 > 甘露
> 星间构筑回馈庇护 > 完美体验缄默 > 禳灾 > 永坍缩体 > 偏振受体 > 火堆外的夜 > 冠军晚餐猫的摇篮 > 帝弓断空彻太清
> 云镝逐步离 > 帝车超光所向捷 > 背生击死 > 背孤击虚 > 宝光烛日月 > 他人即地狱 > 毁灭性吸积 > 乌号綦箭 > 意义质询
> random
""",
}
RESONANCE_PRESET = {
"Preservation": "回响构音:均晶转变 > 回响构音:零维强化 > 回响构音:共晶反应 > random",
"Remembrance": "回响构音:第二次初恋 > 回响构音:体验的富翁 > 回响构音:全面回忆 > random",
"Nihility": "回响构音:局外人 > 回响构音:怀疑的四重根 > 回响构音:苦难与阳光 > random",
"Abundance": "回响构音:诸法无我 > 回响构音:诸行无常 > 回响构音:无余涅槃 > random",
"The_Hunt": "回响构音:射不主皮 > 回响构音:柘弓危矢 > 回响构音:狩星巡日 > random",
"Destruction": "回响构音:激变变星 > 回响构音:极端氦闪 > 回响构音:事件视界 > random",
"Elation": "回响构音:末日狂欢 > 回响构音:树苗长高舞 > 回响构音:开盖有奖 > random",
"Propagation": "回响构音:结晶螯刺 > 回响构音:酚类物质 > 回响构音:刺吸口器 > random",
}
CURIO_PRESET = {
"Preservation": """
存护火漆 > 人造陨石球 > 空无烛剪 > 降维骰子 > 福灵胶 > 时空棱镜 > 测不准匣 > 万象无常骰 > 信标着色剂 > 星际大乐透
> 跃迁复眼 > 博士之袍 > 纯美之袍 > 俱乐部券 > 分裂金币 > 龋齿星系模型 > 分裂银币 > 混沌云芝 > 黑洞之阱 > 万识囊
> 混沌特效灵药 > 家族缘结 > 虚构机兵 > 异木果实 > 香涎干酪 > 永不停嘴的羊皮卷 > 信仰债券 > 湮灭烛剪 > 天外重声大碟 > 碎星芳饵
> 换境桂冠 > 朋克洛德精神 > 鲁珀特帝国机械齿轮 > 闪耀的偏方三八面骰 > 分裂咕咕钟 > 机械咕咕钟 > 卜筮咕咕钟 > 黑森林咕咕钟
> 永动咕咕钟 > 公司咕咕钟 > 银河大乐透 > 天才俱乐部普通八卦 > 愚者面具
> random
""",
"Remembrance": """
记忆火漆 > 人造陨石球 > 空无烛剪 > 降维骰子 > 福灵胶 > 时空棱镜 > 测不准匣 > 万象无常骰 > 信标着色剂 > 星际大乐透
> 跃迁复眼 > 博士之袍 > 纯美之袍 > 俱乐部券 > 分裂金币 > 龋齿星系模型 > 分裂银币 > 混沌云芝 > 黑洞之阱 > 万识囊
> 混沌特效灵药 > 家族缘结 > 虚构机兵 > 异木果实 > 香涎干酪 > 永不停嘴的羊皮卷 > 信仰债券 > 湮灭烛剪 > 天外重声大碟 > 碎星芳饵
> 换境桂冠 > 朋克洛德精神 > 鲁珀特帝国机械齿轮 > 闪耀的偏方三八面骰 > 分裂咕咕钟 > 机械咕咕钟 > 卜筮咕咕钟 > 黑森林咕咕钟
> 永动咕咕钟 > 公司咕咕钟 > 银河大乐透 > 天才俱乐部普通八卦 > 愚者面具
> random
""",
"Nihility": """
虚无火漆 > 人造陨石球 > 空无烛剪 > 降维骰子 > 福灵胶 > 时空棱镜 > 测不准匣 > 万象无常骰 > 信标着色剂 > 星际大乐透
> 跃迁复眼 > 纯美之袍 > 俱乐部券 > 分裂金币 > 龋齿星系模型 > 分裂银币 > 混沌云芝 > 黑洞之阱 > 万识囊 > 博士之袍
> 混沌特效灵药 > 家族缘结 > 虚构机兵 > 异木果实 > 香涎干酪 > 永不停嘴的羊皮卷 > 信仰债券 > 湮灭烛剪 > 天外重声大碟 > 碎星芳饵
> 换境桂冠 > 朋克洛德精神 > 鲁珀特帝国机械齿轮 > 闪耀的偏方三八面骰 > 分裂咕咕钟 > 机械咕咕钟 > 卜筮咕咕钟 > 黑森林咕咕钟
> 永动咕咕钟 > 公司咕咕钟 > 银河大乐透 > 天才俱乐部普通八卦 > 愚者面具
> random
""",
"Abundance": """
丰饶火漆 > 人造陨石球 > 空无烛剪 > 降维骰子 > 福灵胶 > 时空棱镜 > 测不准匣 > 万象无常骰 > 信标着色剂 > 星际大乐透
> 跃迁复眼 > 纯美之袍 > 俱乐部券 > 分裂金币 > 龋齿星系模型 > 分裂银币 > 混沌云芝 > 黑洞之阱 > 万识囊 > 博士之袍
> 混沌特效灵药 > 家族缘结 > 虚构机兵 > 异木果实 > 香涎干酪 > 永不停嘴的羊皮卷 > 信仰债券 > 湮灭烛剪 > 天外重声大碟 > 碎星芳饵
> 换境桂冠 > 朋克洛德精神 > 鲁珀特帝国机械齿轮 > 闪耀的偏方三八面骰 > 分裂咕咕钟 > 机械咕咕钟 > 卜筮咕咕钟 > 黑森林咕咕钟
> 永动咕咕钟 > 公司咕咕钟 > 银河大乐透 > 天才俱乐部普通八卦 > 愚者面具
> random
""",
"The_Hunt": """
巡猎火漆 > 人造陨石球 > 空无烛剪 > 降维骰子 > 福灵胶 > 时空棱镜 > 测不准匣 > 万象无常骰 > 信标着色剂 > 星际大乐透
> 跃迁复眼 > 博士之袍 > 纯美之袍 > 俱乐部券 > 分裂金币 > 龋齿星系模型 > 分裂银币 > 混沌云芝 > 黑洞之阱 > 万识囊
> 混沌特效灵药 > 家族缘结 > 虚构机兵 > 异木果实 > 香涎干酪 > 永不停嘴的羊皮卷 > 信仰债券 > 湮灭烛剪 > 天外重声大碟 > 碎星芳饵
> 换境桂冠 > 朋克洛德精神 > 鲁珀特帝国机械齿轮 > 闪耀的偏方三八面骰 > 分裂咕咕钟 > 机械咕咕钟 > 卜筮咕咕钟 > 黑森林咕咕钟
> 永动咕咕钟 > 公司咕咕钟 > 银河大乐透 > 天才俱乐部普通八卦 > 愚者面具
> random
""",
"Destruction": """
毁灭火漆 > 人造陨石球 > 空无烛剪 > 降维骰子 > 福灵胶 > 时空棱镜 > 测不准匣 > 万象无常骰 > 信标着色剂 > 星际大乐透
> 跃迁复眼 > 博士之袍 > 纯美之袍 > 俱乐部券 > 分裂金币 > 龋齿星系模型 > 分裂银币 > 混沌云芝 > 黑洞之阱 > 万识囊
> 混沌特效灵药 > 家族缘结 > 虚构机兵 > 异木果实 > 香涎干酪 > 永不停嘴的羊皮卷 > 信仰债券 > 湮灭烛剪 > 天外重声大碟 > 碎星芳饵
> 换境桂冠 > 朋克洛德精神 > 鲁珀特帝国机械齿轮 > 闪耀的偏方三八面骰 > 分裂咕咕钟 > 机械咕咕钟 > 卜筮咕咕钟 > 黑森林咕咕钟
> 永动咕咕钟 > 公司咕咕钟 > 银河大乐透 > 天才俱乐部普通八卦 > 愚者面具
> random
""",
"Elation": """
欢愉火漆 > 人造陨石球 > 空无烛剪 > 降维骰子 > 福灵胶 > 时空棱镜 > 测不准匣 > 万象无常骰 > 信标着色剂 > 星际大乐透
> 跃迁复眼 > 博士之袍 > 纯美之袍 > 俱乐部券 > 分裂金币 > 龋齿星系模型 > 分裂银币 > 混沌云芝 > 黑洞之阱 > 万识囊
> 混沌特效灵药 > 家族缘结 > 虚构机兵 > 异木果实 > 香涎干酪 > 永不停嘴的羊皮卷 > 信仰债券 > 湮灭烛剪 > 天外重声大碟 > 碎星芳饵
> 换境桂冠 > 朋克洛德精神 > 鲁珀特帝国机械齿轮 > 闪耀的偏方三八面骰 > 分裂咕咕钟 > 机械咕咕钟 > 卜筮咕咕钟 > 黑森林咕咕钟
> 永动咕咕钟 > 公司咕咕钟 > 银河大乐透 > 天才俱乐部普通八卦 > 愚者面具
> random
""",
"Propagation": """
繁育火漆 > 人造陨石球 > 空无烛剪 > 降维骰子 > 福灵胶 > 时空棱镜 > 测不准匣 > 万象无常骰 > 信标着色剂 > 星际大乐透
> 跃迁复眼 > 纯美之袍 > 俱乐部券 > 分裂金币 > 龋齿星系模型 > 分裂银币 > 混沌云芝 > 黑洞之阱 > 万识囊 > 博士之袍
> 混沌特效灵药 > 家族缘结 > 虚构机兵 > 异木果实 > 香涎干酪 > 永不停嘴的羊皮卷 > 信仰债券 > 湮灭烛剪 > 天外重声大碟 > 碎星芳饵
> 换境桂冠 > 朋克洛德精神 > 鲁珀特帝国机械齿轮 > 闪耀的偏方三八面骰 > 分裂咕咕钟 > 机械咕咕钟 > 卜筮咕咕钟 > 黑森林咕咕钟
> 永动咕咕钟 > 公司咕咕钟 > 银河大乐透 > 天才俱乐部普通八卦 > 愚者面具
> random
""",
}