mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2025-12-15 06:12:53 +08:00
110 lines
5.2 KiB
Python
110 lines
5.2 KiB
Python
from typing import Any
|
||
from .config import DATA_PATH
|
||
from utils.utils import is_number
|
||
from pathlib import Path
|
||
try:
|
||
import ujson as json
|
||
except ModuleNotFoundError:
|
||
import json
|
||
|
||
|
||
def init_game_pool(game: str, data: dict, Operator: Any):
|
||
tmp_lst = []
|
||
if game == 'prts':
|
||
for key in data.keys():
|
||
limited = False
|
||
recruit_only = False
|
||
event_only = False
|
||
if '限定寻访' in data[key]['获取途径']:
|
||
limited = True
|
||
if '干员寻访' not in data[key]['获取途径'] and '公开招募' in data[key]['获取途径']:
|
||
recruit_only = True
|
||
if '活动获取' in data[key]['获取途径']:
|
||
event_only = True
|
||
if '干员寻访' not in data[key]['获取途径'] and '凭证交易所' == data[key]['获取途径'][0]:
|
||
limited = True
|
||
if '干员寻访' not in data[key]['获取途径'] and '信用累计奖励' == data[key]['获取途径'][0]:
|
||
limited = True
|
||
if key.find('阿米娅') != -1:
|
||
continue
|
||
tmp_lst.append(Operator(name=key, star=int(data[key]['星级']),
|
||
limited=limited, recruit_only=recruit_only, event_only=event_only))
|
||
if game == 'genshin':
|
||
for key in data.keys():
|
||
if key.find('旅行者') != -1:
|
||
continue
|
||
limited = False
|
||
if data[key]['常驻/限定'] == '限定UP':
|
||
limited = True
|
||
tmp_lst.append(Operator(name=key, star=int(data[key]['稀有度'][:1]), limited=limited))
|
||
if game == 'genshin_arms':
|
||
for key in data.keys():
|
||
if data[key]['获取途径'].find('祈愿') != -1:
|
||
limited = False
|
||
if data[key]['获取途径'].find('限定祈愿') != -1:
|
||
limited = True
|
||
tmp_lst.append(Operator(name=key, star=int(data[key]['稀有度'][:1]), limited=limited))
|
||
if game == 'pretty':
|
||
for key in data.keys():
|
||
tmp_lst.append(Operator(name=key, star=data[key]['初始星级'], limited=False))
|
||
if game == 'pretty_card':
|
||
for key in data.keys():
|
||
limited = False
|
||
if '卡池' not in data[key]['获取方式']:
|
||
limited = True
|
||
if not data[key]['获取方式']:
|
||
limited = False
|
||
tmp_lst.append(Operator(name=data[key]['中文名'], star=len(data[key]['稀有度']), limited=limited))
|
||
if game in ['guardian', 'guardian_arms']:
|
||
for key in data.keys():
|
||
tmp_lst.append(Operator(name=data[key]['名称'], star=int(data[key]['星级']), limited=False))
|
||
if game == 'pcr':
|
||
for key in data.keys():
|
||
limited = False
|
||
if key.find('(') != -1:
|
||
limited = True
|
||
tmp_lst.append(Operator(name=data[key]['名称'], star=int(data[key]['星级']), limited=limited))
|
||
if game == 'azur':
|
||
for key in data.keys():
|
||
if is_number(data[key]['星级']):
|
||
limited = False
|
||
if '可以建造' not in data[key]['获取途径']:
|
||
limited = True
|
||
tmp_lst.append(Operator(name=data[key]['名称'], star=int(data[key]['星级']),
|
||
limited=limited, itype=data[key]['类型']))
|
||
if game in ['fgo', 'fgo_card']:
|
||
for key in data.keys():
|
||
limited = False
|
||
try:
|
||
if "圣晶石召唤" not in data[key]['入手方式'] and "圣晶石召唤(Story卡池)" not in data[key]['入手方式']:
|
||
limited = True
|
||
except KeyError:
|
||
pass
|
||
tmp_lst.append(Operator(name=data[key]['名称'], star=int(data[key]['星级']), limited=limited))
|
||
if game == 'onmyoji':
|
||
for key in data.keys():
|
||
limited = False
|
||
if key in ['奴良陆生', '卖药郎', '鬼灯', '阿香', '蜜桃&芥子', '犬夜叉', '杀生丸', '桔梗', '朽木露琪亚', '黑崎一护',
|
||
'灶门祢豆子', '灶门炭治郎']:
|
||
limited = True
|
||
tmp_lst.append(Operator(name=data[key]['名称'], star=data[key]['星级'], limited=limited))
|
||
# print(tmp_lst)
|
||
char_name_lst = [x.name for x in tmp_lst]
|
||
up_char_file = Path(f'{DATA_PATH}/draw_card/draw_card_up/{game.split("_")[0]}_up_char.json')
|
||
if up_char_file.exists():
|
||
data = json.load(open(up_char_file, 'r', encoding='utf8'))
|
||
if len(game.split('_')) == 1:
|
||
key = 'char'
|
||
else:
|
||
key = list(data.keys())[1]
|
||
for x in data[key]['up_char']:
|
||
for char in data[key]['up_char'][x]:
|
||
if char not in char_name_lst:
|
||
if game.find('prts') != -1:
|
||
tmp_lst.append(Operator(name=char, star=int(x),
|
||
recruit_only=False, event_only=False, limited=False))
|
||
else:
|
||
tmp_lst.append(Operator(name=char, star=int(x), limited=False))
|
||
return tmp_lst
|
||
|