zhenxun_bot/plugins/draw_card/init_card_pool.py
2022-02-19 18:20:19 +08:00

205 lines
7.9 KiB
Python
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from typing import Any
from .config import DRAW_DATA_PATH
from .util import is_number
from nonebot.log import logger
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
try:
tmp_lst.append(
operator(
name=key,
star=int(data[key]["星级"]),
limited=limited,
recruit_only=recruit_only,
event_only=event_only,
)
)
except Exception as e:
logger.warning(f"明日方舟导入角色 {key} 数据错误:{type(e)}{e}")
if game == "genshin":
for key in data.keys():
if key.find("旅行者") != -1:
continue
limited = False
if data[key]["常驻/限定"] == "限定UP":
limited = True
try:
tmp_lst.append(
operator(name=key, star=int(data[key]["稀有度"][:1]), limited=limited)
)
except Exception as e:
logger.warning(f"原神导入角色 {key} 数据错误:{type(e)}{e}")
if game == "genshin_arms":
for key in data.keys():
if data[key]["获取途径"].find("祈愿") != -1:
limited = False
if data[key]["获取途径"].find("限定祈愿") != -1:
limited = True
try:
tmp_lst.append(
operator(
name=key, star=int(data[key]["稀有度"][:1]), limited=limited
)
)
except Exception as e:
logger.warning(f"原神导入武器 {key} 数据错误:{type(e)}{e}")
if game == "pretty":
for key in data.keys():
try:
tmp_lst.append(
operator(name=key, star=data[key]["初始星级"], limited=False)
)
except Exception as e:
logger.warning(f"赛马娘导入角色 {key} 数据错误:{type(e)}{e}")
if game == "pretty_card":
for key in data.keys():
limited = False
if "卡池" not in data[key]["获取方式"]:
limited = True
if not data[key]["获取方式"]:
limited = False
try:
tmp_lst.append(
operator(
name=data[key]["中文名"],
star=len(data[key]["稀有度"]),
limited=limited,
)
)
except Exception as e:
logger.warning(f"赛马娘导入卡片 {key} 数据错误:{type(e)}{e}")
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
try:
tmp_lst.append(
operator(
name=data[key]["名称"], star=int(data[key]["星级"]), limited=limited
)
)
except Exception as e:
logger.warning(f"公主连接导入角色 {key} 数据错误:{type(e)}{e}")
if game == "azur":
for key in data.keys():
if is_number(data[key]["星级"]):
limited = False
if "可以建造" not in data[key]["获取途径"]:
limited = True
try:
tmp_lst.append(
operator(
name=data[key]["名称"],
star=int(data[key]["星级"]),
limited=limited,
type_=data[key]["类型"],
)
)
except Exception as e:
logger.warning(f"碧蓝航线导入角色 {key} 数据错误:{type(e)}{e}")
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
try:
tmp_lst.append(
operator(
name=data[key]["名称"], star=int(data[key]["星级"]), limited=limited
)
)
except Exception as e:
logger.warning(f"FGO导入角色 {key} 数据错误:{type(e)}{e}")
if game == "onmyoji":
for key in data.keys():
limited = False
if key in [
"奴良陆生",
"卖药郎",
"鬼灯",
"阿香",
"蜜桃&芥子",
"犬夜叉",
"杀生丸",
"桔梗",
"朽木露琪亚",
"黑崎一护",
"灶门祢豆子",
"灶门炭治郎",
]:
limited = True
try:
tmp_lst.append(
operator(
name=data[key]["名称"], star=data[key]["星级"], limited=limited
)
)
except Exception as e:
logger.warning(f"阴阳师导入角色 {key} 数据错误:{type(e)}{e}")
# print(tmp_lst)
char_name_lst = [x.name for x in tmp_lst]
up_char_file = (
DRAW_DATA_PATH
/ f"draw_card"
/ "draw_card_up"
/ f"{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