zhenxun_bot/plugins/draw_card/init_card_pool.py

205 lines
7.9 KiB
Python
Raw Normal View History

2021-05-20 19:23:32 +08:00
from typing import Any
2022-02-19 18:20:19 +08:00
from .config import DRAW_DATA_PATH
from .util import is_number
from nonebot.log import logger
2021-07-02 17:24:23 +08:00
try:
import ujson as json
except ModuleNotFoundError:
import json
2021-05-20 19:23:32 +08:00
2022-02-19 18:20:19 +08:00
def init_game_pool(game: str, data: dict, operator: Any):
2021-05-20 19:23:32 +08:00
tmp_lst = []
2022-02-19 18:20:19 +08:00
if game == "prts":
2021-05-20 19:23:32 +08:00
for key in data.keys():
limited = False
recruit_only = False
event_only = False
2022-02-19 18:20:19 +08:00
if "限定寻访" in data[key]["获取途径"]:
2021-05-20 19:23:32 +08:00
limited = True
2022-02-19 18:20:19 +08:00
if "干员寻访" not in data[key]["获取途径"] and "公开招募" in data[key]["获取途径"]:
2021-05-20 19:23:32 +08:00
recruit_only = True
2022-02-19 18:20:19 +08:00
if "活动获取" in data[key]["获取途径"]:
2021-05-20 19:23:32 +08:00
event_only = True
2022-02-19 18:20:19 +08:00
if "干员寻访" not in data[key]["获取途径"] and "凭证交易所" == data[key]["获取途径"][0]:
2021-06-15 10:57:08 +08:00
limited = True
2022-02-19 18:20:19 +08:00
if "干员寻访" not in data[key]["获取途径"] and "信用累计奖励" == data[key]["获取途径"][0]:
2021-05-26 20:08:13 +08:00
limited = True
2022-02-19 18:20:19 +08:00
if key.find("阿米娅") != -1:
2021-05-20 19:23:32 +08:00
continue
2021-11-23 21:44:59 +08:00
try:
2022-02-19 18:20:19 +08:00
tmp_lst.append(
operator(
name=key,
star=int(data[key]["星级"]),
limited=limited,
recruit_only=recruit_only,
event_only=event_only,
)
)
2021-11-23 21:44:59 +08:00
except Exception as e:
logger.warning(f"明日方舟导入角色 {key} 数据错误:{type(e)}{e}")
2022-02-19 18:20:19 +08:00
if game == "genshin":
2021-05-20 19:23:32 +08:00
for key in data.keys():
2022-02-19 18:20:19 +08:00
if key.find("旅行者") != -1:
2021-05-20 19:23:32 +08:00
continue
2021-06-04 18:01:33 +08:00
limited = False
2022-02-19 18:20:19 +08:00
if data[key]["常驻/限定"] == "限定UP":
2021-06-04 18:01:33 +08:00
limited = True
2021-11-23 21:44:59 +08:00
try:
2022-02-19 18:20:19 +08:00
tmp_lst.append(
operator(name=key, star=int(data[key]["稀有度"][:1]), limited=limited)
)
2021-11-23 21:44:59 +08:00
except Exception as e:
logger.warning(f"原神导入角色 {key} 数据错误:{type(e)}{e}")
2022-02-19 18:20:19 +08:00
if game == "genshin_arms":
2021-06-04 18:01:33 +08:00
for key in data.keys():
2022-02-19 18:20:19 +08:00
if data[key]["获取途径"].find("祈愿") != -1:
2021-06-04 18:01:33 +08:00
limited = False
2022-02-19 18:20:19 +08:00
if data[key]["获取途径"].find("限定祈愿") != -1:
2021-06-04 18:01:33 +08:00
limited = True
2021-11-23 21:44:59 +08:00
try:
2022-02-19 18:20:19 +08:00
tmp_lst.append(
operator(
name=key, star=int(data[key]["稀有度"][:1]), limited=limited
)
)
2021-11-23 21:44:59 +08:00
except Exception as e:
logger.warning(f"原神导入武器 {key} 数据错误:{type(e)}{e}")
2022-02-19 18:20:19 +08:00
if game == "pretty":
2021-05-20 19:23:32 +08:00
for key in data.keys():
2021-11-23 21:44:59 +08:00
try:
2022-02-19 18:20:19 +08:00
tmp_lst.append(
operator(name=key, star=data[key]["初始星级"], limited=False)
)
2021-11-23 21:44:59 +08:00
except Exception as e:
logger.warning(f"赛马娘导入角色 {key} 数据错误:{type(e)}{e}")
2022-02-19 18:20:19 +08:00
if game == "pretty_card":
2021-05-20 19:23:32 +08:00
for key in data.keys():
2021-06-23 15:57:03 +08:00
limited = False
2022-02-19 18:20:19 +08:00
if "卡池" not in data[key]["获取方式"]:
2021-06-23 15:57:03 +08:00
limited = True
2022-02-19 18:20:19 +08:00
if not data[key]["获取方式"]:
2021-06-23 15:57:03 +08:00
limited = False
2021-11-23 21:44:59 +08:00
try:
2022-02-19 18:20:19 +08:00
tmp_lst.append(
operator(
name=data[key]["中文名"],
star=len(data[key]["稀有度"]),
limited=limited,
)
)
2021-11-23 21:44:59 +08:00
except Exception as e:
logger.warning(f"赛马娘导入卡片 {key} 数据错误:{type(e)}{e}")
2022-02-19 18:20:19 +08:00
if game in ["guardian", "guardian_arms"]:
2021-05-26 20:08:13 +08:00
for key in data.keys():
2022-02-19 18:20:19 +08:00
tmp_lst.append(
operator(name=data[key]["名称"], star=int(data[key]["星级"]), limited=False)
)
if game == "pcr":
2021-05-26 20:08:13 +08:00
for key in data.keys():
limited = False
2022-02-19 18:20:19 +08:00
if key.find("") != -1:
2021-05-26 20:08:13 +08:00
limited = True
2021-11-23 21:44:59 +08:00
try:
2022-02-19 18:20:19 +08:00
tmp_lst.append(
operator(
name=data[key]["名称"], star=int(data[key]["星级"]), limited=limited
)
)
2021-11-23 21:44:59 +08:00
except Exception as e:
logger.warning(f"公主连接导入角色 {key} 数据错误:{type(e)}{e}")
2022-02-19 18:20:19 +08:00
if game == "azur":
2021-06-04 18:01:33 +08:00
for key in data.keys():
2022-02-19 18:20:19 +08:00
if is_number(data[key]["星级"]):
2021-10-03 14:24:07 +08:00
limited = False
2022-02-19 18:20:19 +08:00
if "可以建造" not in data[key]["获取途径"]:
2021-10-03 14:24:07 +08:00
limited = True
2021-11-23 21:44:59 +08:00
try:
2022-02-19 18:20:19 +08:00
tmp_lst.append(
operator(
name=data[key]["名称"],
star=int(data[key]["星级"]),
limited=limited,
type_=data[key]["类型"],
)
)
2021-11-23 21:44:59 +08:00
except Exception as e:
logger.warning(f"碧蓝航线导入角色 {key} 数据错误:{type(e)}{e}")
2022-02-19 18:20:19 +08:00
if game in ["fgo", "fgo_card"]:
2021-06-04 18:01:33 +08:00
for key in data.keys():
limited = False
try:
2022-02-19 18:20:19 +08:00
if (
"圣晶石召唤" not in data[key]["入手方式"]
and "圣晶石召唤Story卡池" not in data[key]["入手方式"]
):
2021-06-04 18:01:33 +08:00
limited = True
except KeyError:
pass
2021-11-23 21:44:59 +08:00
try:
2022-02-19 18:20:19 +08:00
tmp_lst.append(
operator(
name=data[key]["名称"], star=int(data[key]["星级"]), limited=limited
)
)
2021-11-23 21:44:59 +08:00
except Exception as e:
logger.warning(f"FGO导入角色 {key} 数据错误:{type(e)}{e}")
2022-02-19 18:20:19 +08:00
if game == "onmyoji":
2021-06-04 18:01:33 +08:00
for key in data.keys():
limited = False
2022-02-19 18:20:19 +08:00
if key in [
"奴良陆生",
"卖药郎",
"鬼灯",
"阿香",
"蜜桃&芥子",
"犬夜叉",
"杀生丸",
"桔梗",
"朽木露琪亚",
"黑崎一护",
"灶门祢豆子",
"灶门炭治郎",
]:
2021-06-04 18:01:33 +08:00
limited = True
2021-11-23 21:44:59 +08:00
try:
2022-02-19 18:20:19 +08:00
tmp_lst.append(
operator(
name=data[key]["名称"], star=data[key]["星级"], limited=limited
)
)
2021-11-23 21:44:59 +08:00
except Exception as e:
logger.warning(f"阴阳师导入角色 {key} 数据错误:{type(e)}{e}")
2021-06-23 15:57:03 +08:00
# print(tmp_lst)
2021-07-02 17:24:23 +08:00
char_name_lst = [x.name for x in tmp_lst]
2022-02-19 18:20:19 +08:00
up_char_file = (
DRAW_DATA_PATH
/ f"draw_card"
/ "draw_card_up"
/ f"{game.split('_')[0]}_up_char.json"
)
2021-07-02 17:24:23 +08:00
if up_char_file.exists():
2022-02-19 18:20:19 +08:00
data = json.load(open(up_char_file, "r", encoding="utf8"))
if len(game.split("_")) == 1:
key = "char"
2021-07-02 17:24:23 +08:00
else:
key = list(data.keys())[1]
2022-02-19 18:20:19 +08:00
for x in data[key]["up_char"]:
for char in data[key]["up_char"][x]:
2021-07-02 17:24:23 +08:00
if char not in char_name_lst:
2022-02-19 18:20:19 +08:00
if game.find("prts") != -1:
tmp_lst.append(
operator(
name=char,
star=int(x),
recruit_only=False,
event_only=False,
limited=False,
)
)
2021-07-02 17:24:23 +08:00
else:
2022-02-19 18:20:19 +08:00
tmp_lst.append(operator(name=char, star=int(x), limited=False))
2021-05-20 19:23:32 +08:00
return tmp_lst